Streaming: What and Why Is It?
Processing digital video in real time is different from working in an ordinary computer so far as the data storage device is concerned. Particularly, maintaining a constant data-transfer rate becomes most important. A lower speed is not permitted, but a higher speed is simply unnecessary; this mode is called isochronous. Also, more than one data stream may be required. Ordinary hard drives are not suited to function like that: the read/write speed depends on the address of the initial sector, while the data seek time as well as the time of the overall reaction of the device are not strictly regulated. That’s why the X3T13 committee that develops ATA standards came up with the Streaming Feature Command Set. The Hitachi Deskstar 7K400 is the first drive to support it.
Using the new commands, the application can get information about the speed of the drive and define the required parameters of the streams. Besides that, it is possible to prevent speed loss due to read (and write) errors since digital video playback doesn’t need 100% integrity of the data: a few incorrect bytes will only bring about barely visible distortions in a single frame, while the attempts to re-read the bad spot of the disk may lead to entire frames being lost altogether.
The first command of the new set is called Read Streaming Performance Log. It returns a series of tables with data about the number of density zones and the time it takes to read a sector in each of those zones as well as to move from one position on the disk to another one (it’s kind of the seek time parameter). This information helps the application to calculate the stream-processing strategy correctly.
The second command defines the parameters of one of eight streams, setting it for reading or writing, choosing the number of sectors per transfer and the time limit for each transfer.
The read stream command besides such traditional parameters as address and the number of sectors has the following parameters: stream ID, continuous bit (the device doesn’t process an error longer than the defined limit), not sequential bit (do not perform unnecessary look-ahead reading), urgent bit (the command should be completed in the minimum possible time regardless of errors), handle streaming error bit (process the other streams and then “reanimate” the current one).
The write stream command also has some unusual parameters: stream ID, urgent bit (perform the command in the minimum time possible), continuous bit (don’t stop on write errors), not sequential bit, and the flag of returning to the previous error in the given stream.
The last of the new commands reads the list of errors that have occurred during the processing of streams with the continuous flag set. In this mode the drive doesn’t complete the command with an error message but just signals about it with a special flag, storing the error status in a special table that can be read by this command.
Thus, the new commands offer more control over the read/write process and help to adjust flexibly for the capabilities of the given drive.