X3T9.2/90-119 H e w l e t t - P a c k a r d Computer Peripherals Bristol *** *** *** *** *** ******** ******** ******** ******** * *** *** *** *** * *** *** *** *** *** **** **** *** *** ******** * * * * * *** *** ******** *** **** **** *** * *** * *** *** *** DC Control Proposal for Sequential Access devices with special regard to DDS DAT drives. Document : SCSI-DC-01, Revision A Prelim 4th July 1990 Revision B 2nd Draft 10th July 1990 Revision C 3rd Draft 16th July 1990 Date : 16th July 1990 Author : Steve Krupa, HP CPB Hewlett Packard, Computer Peripherals Bristol, Filton Rd, Stoke Gifford, Bristol, BS12 6QZ Tel : + 272 799910 Fax : + 272 236091 Introduction ============ This is the first submitted draft of the proposal for a SCSI Mode Sense/Select page to control and report on the operation of a DC DDS drive, with specific regard to Data Compression components. It is intended for, but not necessarily limited to, support of DDS-DC drives which make use of lossless compression algorithms which are based on substitution; e.g. those of the Lempel-Ziv family. DC support in X3T9.2 SCSI-2 Rev 10 ==================================== The only support currently available in the SCSI set is a one-byte field, byte 14, in the Device Configuration Page (page 10h). This page is specific to Sequential Access devices. Its use is in many ways vendor specific - the QIC manufacturers have reached a separate agreement on its meaning. It is outlined below : X3T9.2 definition ------------------ Byte value Description ------------------------------------------------------------- 00h Disable Compression 01h Select targets default compression algorithm 02h - 7Fh Select compression algorithm # 80H - FFh Vendor Specific QIC definition -------------- ------------------------------------------------- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ------------------------------------------------- | DC | On | QIC Approved | | on |Drive| DC Algorithm | ------------------------------------------------- Byte Value Description ------------------------------------------------------------ 00h Disable Compression 01h - 7Fh Invalid 10xxxxxb DC on - host performs algorithm # xxxxxb 11xxxxxb DC on - drive performs algorithm # xxxxxb As can be seen from the QIC definition, QIC chooses to ignore the X3T9.2 definition of byte values 01h - 7Fh. DDS-DC drives may implement the QIC scheme for byte 14 to allow cross-product compatibility. However due to the limited support for DC given in the Device Configuration page, DDS-DC drives can optionally implement and support the DC page defined below, as well as (or instead of) byte 14 of the Device Configuration page. Possible Information Requirements for DC page ============================================= Below is a list of possible DC information requirements of a host. Some of this information will be specified in the DC Mode Page. Some MAY be more suitable for a DC Log Page, whilst some info may be omitted altogether for being of limited or no use to the host. All items which are of POTENTIAL interest to a host are included here. This list is finally distilled into a Mode Page. a) For compatibility with byte 14 Device Configuration page DC algorithm # (RW) This field defines the Data Compression algorithm to use when writing data to the tape. Each target will normally only support 1 algorithm, so this will generally not change. A value of 01h indicates default algorithm selection, and a value of N indicates specific algorithm selection. A read of this field indicates N (never 00h or 01h). DC write on/off control (RW) This field turns on/off compression. A value of 0 turns compression off, whilst a value of 1 turns it on. Reading this field indicates the current status of compression (ie on or off). Boundary read algorithm # (RW) A write to this field allows the drive to return entities of the specified type to the host without issuing any warnings about entity type. A read of this field allows the host to determine which entity types will be returned undecompressed without host intervention. This is explained in more detail in the section on DC page definition. Decompress on drive/on host (RW) This field defines whether undecompressed entities will be returned to the host or whether the entity should be decompressed by the drive. A value of 1 indicates that the drive will decompress the data, whilst a 0 indicates that the host will decompress it. b) Auto-reset control Adaptive algorithm on/off (RW) This field defines whether or not the device will adaptively monitor the compression ratio during writing in order to attempt to optimise it. Writing a 01h to this field will enable compression ratio monitoring and allow the device to react accordingly if the compression ratio falls below the host-specified threshold. A 00h will disable this feature. Enable Dynamic adaptive algorithm (RW) This field defines whether or not the device will attempt to dynamically modify the adaptive algorithm parameters to tune compression ratio over time. The adaptive algorithm takes a snapshot of compression ratio and takes no account of the general trend of compression ratio values over time. By dynamically modifying the algorithm parameters, it should be possible to tune the algorithm to maximise compression ratio for the data being pushed through the engine. If this field is set to 1 then the device will dynamically adjust the parameters. Note that if this field is set then the Adaptive algorithm on/off field described above must also be set. Adaptive algorithm sample period (RW) This field defines when the compression ratio will be sampled by the adaptive algorithm. The section on DC page definition describes this in more detail. Adaptive algorithm threshold ratio (RW) This field defines the threshold level for the compression ratio below which the device will take action to improve the compression ratio. The section on DC page definition describes this in more detail. c) Byte/Record/entity relationships Max # of records in entity (RW) This field defines the maximum number of records to be bundled together in one entity. Min # of records in entity (RW) This field defines the minimum number of records to be bundled together in one entity. Max # of compressed bytes in entity (RW) This field defines the maximum number of compressed bytes which can share an entity. Min # of compressed bytes in entity (RW) This field defines the minimum number of compressed bytes which can share an entity - this applies to multi-record entities only. Single record entities must contain the whole record so this field has no effect in this case. Max # of uncompressed bytes in entity (RW) This field defines the maximum number of uncompressed bytes which can share an entity. Min # of uncompressed bytes in entity (RW) This field defines the minimum number of uncompressed bytes which can share an entity. Max # of records in object (RW) This field determines the maximum number of records which will share the same dictionary. This field is used to force physical access points in the compressed data stream after the specified number of records. If the adaptive algoritm is enabled, then these access points will be in addition to any automatically inserted by the adaptive algorithm. Note that these access points not necessarily LOGICALLY accessible by the device unless they occur at the beginning of an entity. Min # of records in object (RW) This field defines the minimum number of records to be bundled together in one object. Max # of compressed bytes in object (RW) This field defines the maximum number of compressed bytes which can share an object. Max # of uncompressed bytes in object (RW) This field defines the maximum number of uncompressed bytes which can share an object. Min # of compressed bytes in object (RW) This field defines the minimum number of compressed bytes which can share an object. Min # of uncompressed bytes in object (RW) This field defines the minimum number of uncompressed bytes which can share an object. Force new entity ( W) This field is write-only. On Read it will always be returned as 0. If the host needs to force the drive to close the current entity and start a new one, then it can set this field to 1. This allows the host maximum flexibility when it comes to handling entities. At any time, the host may set this field and so force a new entity. (See also Force Dictionary Reset below). Note : If multiple maximum (or minimum) values are specified for the fields above then the first boundary reached will be the limiting condition. d) Compression ratio Cumulative compression ratio (R ) This field is a read-only field and it returns the cumulative compression ratio achieved by the drive since the last power-on or SCSI device reset. Number of entities written (R ) This field contains a count of the total number of entities written to tape since power-on/SCSI device reset. This field is read-only. It is ignored on writes. A power-on or SCSI device reset will clear this field. Number of entities decompressed (R ) This field contains a count of the total number of entities read from tape and decompressed by the device since power-on/SCSI device reset. This field is read-only. It is ignored on writes. This field is cleared by a power-on or SCSI device reset. Number of entities sent for host decompression (R ) This field contains a count of the total number of entities read from tape and sent to the host for decompression since power-on/SCSI device reset. This field is read-only. It is ignored on writes. This field is cleared by a power-on or SCSI device reset. e) Dictionary and Buffer/FIFO SRAM size (RAM type) (R ) This read-only field defines the SRAM size (in 1K blocks) used by the DC engine. Buffer/FIFO size (R ) This read-only field describes the buffer/FIFO size (in 1K blocks) used by the DC engine. DC Engine status (R ) This read-only field describes the status of the internal buffering within the DC engine. A value of 01h means that the the DC engines internal buffers have been flushed, whilst a value of 00h means that there is data held within the DC engine. Dictionary size (R ) This read-only field describes the size of dictionary (in 1K blocks) used by the DC engine. Mini-Buffer/Input FIFO size This read-only field defines the size of the mini-buffer/input FIFO used by the compression engine. Dictionary status (R ) This flags field indicates the dictionary/engine status. Dictionary Full Dictionary Half-full Dictionary Frozen Force Dictionary Reset ( W) This field is write-only. On Read it will always be returned as 0. If the host needs to force the drive to reset the dictionary to its empty state, then it can set this field to 1. This allows the host a degree of control over dictionary use. Along with the dictionary status information and the compression ratio this field allows the host to have additional influence over the drives performance. Using this field along with the Force New Entity field allows the host to create access points at the beginning of entities. f) Misc Expansion minimisation on/off (RW) Expansion minimisation is similar to compression ratio monitoring in that it checks to see if the compression ratio has fallen below the threshold of 1:1, and turns off DC if it has. Setting this field to 1 will allow the drive to disable DC if the compression ratio falls below 1, and to re-enable it if it rises above 1. Clearing this field disables this function. Parity checking/generation on/off (RW) This field defines the status of parity checking/generation on each of up to 2 DMA ports used to drive data through the DC engine. Port A is defined as the SCSI-side DMA port and port B is defined as the Buffer-side DMA port. PROPOSAL FOR SCSI DC CHARACTERISTICS MODE PAGE ************************************************ DC Page Definition ================== The Data Compression Characteristics Mode Page is defined as : ================================================================ | | | | | | | | | | | Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |Byte | | | | | | | | | |-------========================================================= | 0 |Reserved (0) | Page Code (0Fh) | -------+------------------------------------------------------- | 1 | Page Length (16h) | -------+------------------------------------------------------- | 2 | DCE |Res(0)| DC Algorithm | -------+------------------------------------------------------- | 3 |Res(0)|Res(0)| Boundary Read Algorithm | -------+------------------------------------------------------- | 4 | Reserved (0) | EME | AAE | DME | -------+------------------------------------------------------- | 5 | Adaptive Algorithm Threshold | -------+------------------------------------------------------- | 6 | Adaptive Algorithm Sample Period | -------+------------------------------------------------------- | 7 | Maximum Records in Entity | -------+------------------------------------------------------- | 8 | Reserved (0) | DSE | FNE | -------+------------------------------------------------------- | 9 | (MSB) | -------+- Cumulative Compression Ratio - | 10 | (LSB) | -------+------------------------------------------------------- | 11 | Dictionary Size | -------+------------------------------------------------------- | 12 | Buffer/FIFO Size | -------+------------------------------------------------------- | |Dict. |Dict. |Dict. | DC | |Dict. | | 13 |Full |Half |Frozen|Engine| Reserved (0) |Reset | | | |Full | |Flushd| | | -------+------------------------------------------------------- | | |Port A|Port A|Port B|Port B| | 14 | Reserved (0) |GenPar|Check |GenPar|Check | | | | |Parity| |Parity| -------+------------------------------------------------------- | 15 | Reserved (0) | -------+------------------------------------------------------- | 16 | Reserved (0) | -------+------------------------------------------------------- | 17 | Reserved (0) | -------+------------------------------------------------------- | 18 | Reserved (0) | -------+------------------------------------------------------- | 19 | Reserved (0) | -------+------------------------------------------------------- | 20 | Reserved (0) | -------+------------------------------------------------------- | 21 | Reserved (0) | --------------------------------------------------------------- DCE : Data Compression Enable This field is used to turn Data Compression on and off. On MODE SELECT, setting this field to 1 will turn DC on for both reading and writing. On MODE SENSE, by reading this field the host will be able to determine whether DC is enabled or disabled. DC Algorithm : This field is used to change/read the data compression algorithm used by the drive when it is writing/reading data to the tape. If the DCE field is 1, then when writing data to the tape, the drive will automatically compress it using this algorithm. If it encounters compressed data on the tape in an entity which has been compressed using this algorithm, then it will automatically decompress it (regardless of the state of the DCE field) and ship the decompressed data back to the host. On MODE SELECT, setting this field to 01h will select the drives default DC algorithm. Setting this field to any other number will cause the drive to return a CHECK CONDITION status with ILLEGAL REQUEST sense key, unless the drive supports the specified algorithm, in which case the drive will use the new algorithm until otherwise directed, or until a device reset. In most cases it is presumed that only one algorithm will be supported by the drive. On MODE SENSE, the drive will return the selected DC algorithm. This will always be a specific algorithm number, never 0 or 1. Note that algorithm numbers are defined by X3T9.2. Boundary Read Algorithm : This field is used to change/read the way the drive will respond to different record/entity boundaries on a tape which has mixed compressed/uncompressed data on it.If the next data item encountered on tape is of a different type to that specified by this field then a CHECK CONDITION will be generated. If this field is 00h then uncompressed records and decompressed entities of the type specified in the DC Algorithm field above will be shipped back to the host without a CHECK CONDITION being generated. If any other entity type is found, then a CHECK CONDITION will be generated (see section on SCSI Protocol below). On MODE SELECT, this field is used to determine what entities on tape will be shipped back to the host, undecompressed with no CHECK CONDITION. If the next data item encountered on tape is of a different type to that specified by this field then a CHECK CONDITION will be generated (unless this field is 00h, then see above). On MODE SENSE, this field allows the host to determine what type of undecompressed entity the drive will transfer to the host without generating a CHECK CONDITION. A value of 00h indicates that anything other than an uncompressed record or an entity of the type specified in the DC Algorithm field will generate a CHECK CONDITION. If the value of this field is the same as the DC Algorithm field, then only entities of the type specified by the DC Algorithm field will be decompressed and transferred to the drive. Anything else, including uncompressed records will generate a CHECK CONDITION. Implementors Note : A value of 01h will never be returned here. On MODE SELECT however, the host can set this field to 01h in which case, the device will use its default algorithm as the one specified and will return a CHECK CONDITION if it encounters anything else, including uncompressed records. Implementors Note : If the DCE field is 0, then even if the drive encounters an entity of its default or selected type (as specified in the DC Algorithm field) it shall generate a CHECK CONDITION on the first boundary. EME : Expansion Minimisation Enable This field is used to ensure that the drive limits the actual expansion of data which it is trying to compress. If the data written by the host is random, then algorithms designed to compress the data will in fact expand it. In order to minimise this, some drives will be able to monitor the compression ratio independent of the adaptive algorithm and be able to disable DC if it detects expansion. It will continue to monitor CR, and if it rises above 1 : 1 (ie real compression occurs) then DC will be re-enabled. On MODE SELECT, setting this field to 1 will enable expansion minimisation, whilst setting it to 0 will disable expansion minimisation. Drives which do not support this feature will return CHECK CONDITION with ILLEGAL REQUEST sense key when this field is set to 1. On MODE SENSE, this field allows the host to determine whether expansion minimisation is enabled or disabled. AAE : Adaptive Algorithm Enable This field is used to enable/disable the use of a device-specific Adaptive Algorithm for monitoring compression ratio. The drive can use this algorithm to optimise CR for the data currently being written. On MODE SELECT, setting this field to 1 will enable the Adaptive Algorithm using the parameters specified in the Adaptive Algorithm Threshold and Adaptive Algorithm Sample Period fields described below. If the drive does not support this feature then it will return CHECK CONDITION with ILLEGAL REQUEST sense key. On MODE SENSE, this field allows the host to determine whether the Adaptive Algorithm is enabled or disabled. DME : Dynamic Modification Enable This field is used to allow/disallow the drive to dynamically modify the parameters used by the Adaptive Algorithm in order to make it more responsive to the nature of the data being written. This introduces a higher level of optimisation control than is possible using a static Adaptive Algorithm. On MODE SELECT, setting this field to 1 will enable Dynamic modification. If this field is set to 1, then the AAE field must also be set to 1. If the drive does not support this feature then it will return CHECK CONDITION with ILLEGAL REQUEST sense key. On MODE SENSE, this field allows the host to determine whether Dynamic Modification is enabled or disabled. Adaptive Algorithm Threshold : This field sets the threshold level of CR, below which the Adaptive Algorithm will react accordingly in order to maximise the compression ratio. This field is defined as : CR threshold = 256/(256 - Adaptive Algorithm Threshold) This gives values of Adaptive Algorithm Threshold CR Threshold ------------------------------------------------ 0 -> 128 1 -> 2 129 -> 170 2 -> 3 171 -> 192 3 -> 4 193 -> 224 4 -> 8 225 -> 240 8 -> 16 241 -> 255 16 -> 256 For this field to be valid the AAE field must be set to 1. On MODE SELECT, the host shall set the field as required to one of the above values. If the drive does not support this feature then it will return CHECK CONDITION with ILLEGAL REQUEST sense key. On MODE SENSE, the this field allows the host to determine what the Adaptive Algorithm Threshold is. If the DME field is set to 1 then this field will be dynamically modified by the drive. Adaptive Algorithm Sample Period : This field sets the sample period, in terms of uncompressed bytes, at which the Adaptive Algorithm takes a snapshot of the CR, in order to determine whether or not to take action to maximise the compression ratio. This field is in 128 byte increments. For this field to be valid the AAE field must be set to 1. On MODE SELECT, the host shall set the field as required to one of the above values. If the drive does not support this feature then it will return CHECK CONDITION with ILLEGAL REQUEST sense key. On MODE SENSE, the this field allows the host to determine what the Adaptive Algorithm Sample Period is. If the DME field is set to 1 then this field will be dynamically modified by the drive. Maximum Records in Entity : This field allows the host a degree of control over how many records are compressed into each entity. If the host is writing small records then this field can be used to tune performance to record size. This field is defined as : Max Recs in Entity Actual max recs ------------------------------------------- 0 No Maximum n 2*n This gives a maxiumum maximum of 510 records per entity. On MODE SELECT, the host shall set the field as required to one of the above values. If the drive does not support this feature then it will return CHECK CONDITION with ILLEGAL REQUEST sense key. On MODE SENSE, the this field allows the host to determine what the maximum number of records allowed in each entity is. DSE : Data Sink Enable This field allows the host to determine what the actual compression ratio of an input data stream is without actually writing data onto the media. The data will be sinked through the DC engine giving the host access to all the information it would have if the data was actually written to the media. On MODE SELECT, setting this field to 1 enables Data Sink mode, whilst setting it to 0 disables it. On MODE SENSE, the state of Data Sink mode will be reported to the host. FNE : Force New Entity This field allows the host to force a new entity to be started when writing data with compression enabled. This gives the host additional flexibility to bundle records into entities as it requires. See Dict. Reset field description for definition of Access Points. On MODE SELECT, setting this field to 1 forces the drive to start a new entity. If the drive does not support this feature then it will return CHECK CONDITION with ILLEGAL REQUEST sense key. On MODE SENSE, this field has no meaning and is always set to 0. Cumulative Compression Ratio : This field allows the host to monitor the cumulative CR since device reset. This field is in binary-coded decimal and is 100x the compression ratio quoted to 2 decimal places. For example, if this field contains 00374, then the CR is 3.74:1. On MODE SELECT, setting this field to 0 will restart the Cumulative Compression Ratio calculation. Any other value will result in a CHECK CONDITION status with ILLEGAL REQUEST sense key. ON MODE SENSE, the cumulative compression ratio will be returned to the host. If the drive does not support this feature, then this field will be set to 0. Dictionary Size : This field allows the host to determine the size of dictionary used by the compression engine. This field is defines the number of 1K blocks allocated to dictionary size/compression RAM. So a value of 16 represents 16K. On MODE SELECT, this field has no meaning and is ignored. On MODE SENSE, this field takes one of the values as specified above. Buffer/FIFO Size : This field allows the host to determine the size of mini-buffer used by the compression engine. This field is defines the number of 1K blocks allocated to mini-buffer/input FIFO. On MODE SELECT, this field has no meaning and is ignored. On MODE SENSE, this field takes one of the values as specified above. Dict. Full : Dictionary Full This field allows the host to determine whether the dictionary is full or not. On MODE SELECT this field has no meaning and is ignored. On MODE SENSE, this field is set to 1 if the dictionary is full, and is set to 0 if the dictionary is not full. Dict. Half Full : Dictionary Half Full This field allows the host to determine whether the dictionary is half full or not. On MODE SELECT this field has no meaning and is ignored. On MODE SENSE, this field is set to 1 if the dictionary is half full, and is set to 0 if the dictionary is not half full. Dict. Frozen : Dictionary Frozen This field allows the host to determine whether the dictionary is frozen or not. On MODE SELECT this field has no meaning and is ignored. On MODE SENSE, this field is set to 1 if the dictionary is frozen, and is set to 0 if the dictionary is not frozen. DC Engine Flushd : DC Engine Flushed This field allows the host to determine whether the DC Engine is flushed or not. Data may be buffered within the engine during the process of compression/decompression.This field allows access to the status of the internal buffering. On MODE SELECT this field has no meaning and is ignored. On MODE SENSE, this field is set to 1 if the DC engine is flushed, and is set to 0 if the DC engine is not flushed. Dict. Reset : Dictionary Reset This field allows the host to force a dictionary reset when writing data with compression enabled. This gives the host additional flexibility to bundle records into objects as it requires. The host can use this field along with Cumulative Compression Ratio field to do its own adaptive monitoring of CR. On MODE SELECT, setting this field to 1 forces the drive to reset the dictionary. If the drive does not support this feature then it will return CHECK CONDITION with ILLEGAL REQUEST sense key. On MODE SENSE, this field has no meaning and is always set to 0. Port A GenPar : Port A Generate Parity This field allows the host to direct the drive to generate parity on the port A channel of the DC engine, when data is being read from the drive. On MODE SELECT, setting this field to 1 will direct the drive to enable parity generation on data read by the host. Setting this field to 0 disables parity generation on port A. If this feature is not supported by the drive, then it will return CHECK CONDITION with ILLEGAL REQUEST sense key if the host attempts to set this field to 1. On MODE SENSE, this field allows the host to determine whether or not parity generation is enabled on port A. Port A Check Parity : This field allows the host to direct the drive to check parity on the port A channel of the DC engine, when data is being written to the drive. On MODE SELECT, setting this field to 1 will direct the drive to enable parity checking on data written by the host. Setting this field to 0 disables parity checking on port A.If this feature is not supported by the drive, then it will return CHECK CONDITION with ILLEGAL REQUEST sense key if the host attempts to set this field to 1. On MODE SENSE, this field allows the host to determine whether or not parity checking is enabled on port A. Port B GenPar : Port B Generate Parity This field allows the host to direct the drive to generate parity on the port B channel of the DC engine, when data is being written to the drive. On MODE SELECT, setting this field to 1 will direct the drive to enable parity generation on data written by the host. Setting this field to 0 disables parity generation on port B.If this feature is not supported by the drive, then it will return CHECK CONDITION with ILLEGAL REQUEST sense key if the host attempts to set this field to 1. On MODE SENSE, this field allows the host to determine whether or not parity generation is enabled on port B. Port B Check Parity : This field allows the host to direct the drive to check parity on the port B channel of the DC engine, when data is being read from the drive. On MODE SELECT, setting this field to 1 will direct the drive to enable parity checking on data read by the host. Setting this field to 0 disables parity checking on port B.If this feature is not supported by the drive, then it will return CHECK CONDITION with ILLEGAL REQUEST sense key if the host attempts to set this field to 1. On MODE SENSE, this field allows the host to determine whether or not parity checking is enabled on port B. APPLICATION NOTE ****************** SCSI Protocol Issues - Boundary changes between Records and Entities ==================== When a DDS-DC drive is reading a tape, it may encounter a number of data boundaries on the tape which need dealing with by the host. If a DC drive supports a DC algorithm N then it may encounter any of 3 data items on tape : 1. An uncompressed record 2. An entity compressed using algorithm = N 3. An entity compressed using algorithm not = N By default it will return uncompressed records as normal to the host. If DC is enabled (ie DCE field is set to 1 in DC Characteristics Mode page) then if it encounters an entity of type N, it will simply decompress it and return the data as normal to the host. If it encounters an entity of type other than N, then it must inform the host in some way that the data on tape is in a compressed format that the drive is not able to decompress. Implementors Note : This is done by returning a CHECK CONDITION status with NO SENSE sense key, Additional Sense Code of 60h, and Additional Sense Qualifier of 00h. This sense information is defined as CHANGE OF DATA ITEM TYPE ENCOUNTERED. A data item refers to an uncompressed record or an entity. The host (if it supports on-board software decompression) will issue a MODE SENSE command, and read the DC Characteristics page (or the Device Configuration page if it does not support the DC page) to determine the type of data item encountered. If it reads the DC page, then the Boundary Read Algorithm field will contain the type of the data item found on tape. This will be represented as the algorithm number used to compress the encountered entity. If the host supports software decompression for that particular algorithm, then it will issue a MODE SELECT command and write the DC Characteristics page (or Device Configuration page if it does not support the DC page) with the Boundary Read Algorithm field set to the algorithm identifier as reported by the drive. This will switch the drive into a mode where it can then read any entity compressed by the specified algorithm, and return it undecompressed to the host with no further CHECK CONDITIONs being generated. If whilst it is reading this type of entity, the drive encounters a different type of entity, or an uncompressed record, it will repeat the above process. If an uncompressed record is found then the Boundary Read Algorithm field in the DC Characteristics page will be set to 0 on the MODE SENSE command issued by the host, and the host will then return this value in the MODE SELECT command. This will return the drive to its default operating mode. If the host sets the Boundary Read Algorithm field to 0FFh, then if the drive encounters ANY entity on the tape it will go through the above sequence to determine whether the host wishes to read the undecompressed entity. The drive will not decompress any entities found on the media, regardless of whether the entity is of a type which the drive would normally decompress. Glossary ======== Access Point : A point in the compressed data stream at which a DC engine can start decompression without having any prior knowledge of the nature of the compressed data stream. Adaptive Algorithm : An algorithm which is self-modifying in response to a defined set of external stimulii. In the case of data compression the external stimulus is the nature of the input data stream. Compression Ratio (CR) : The ratio of input byte count to output byte count for a DC engine which is performing data compression. This term specifies the amount of redundancy removed from the input data stream. Cumulative Compression Ratio (CCR) : For a number of instances of input data to a DC engine, the cumulative compression ratio is the running average of the individual compression ratios for each input stream. Dictionary : A dynamically built data structure which describes repeating patterns in a input stream of data with the aim of allowing the substitution of a referencing codeword in place of the pattern in the output data stream in order to remove redundancy. Dictionary Reset : An object boundary - the point at which one object finishes and another begins. Entity : A data set including 0 or more object boundaries, 0 or more record boundaries and beginning with a format-specific header. This is the smallest logical compressed data item accesible to a DC device. Expansion Minimisation : The minimisation of the amount of time at which the compression ratio is less than 1 : 1. Port A : SCSI-side i/o port of DC engine. Port B : Device-side i/o port of DC engine. Object : A data set sharing a compression/decompression dictionary and delimited either logically within a media format, or physically by a specific data pattern within the data stream. Record : A data set delimited by EOR markers either represented logically within a media format, or physically by a specific data pattern within the data stream. -- Steve Krupa Hewlett Packard Computer Peripherals Bristol Address: Email: Filton Road stevek@hpcpbla Stoke Gifford Bristol BS12 6QZ UK Phone: Fax: (44) 272 799910 x22237 (44) 272 236091