X3T9.2/90-021-Rev 2 OKLAHOMA CITY OPERATIONS _________________________________________________________________ Date: 5/8/90 John Lohmeyer Chairman X3T9.2 Subject: Additional SCSI Caching Control - Revision 1 Two alternative expanded caching pages were proposed, in X3T9.2/90-021, at the January working group meeting. The working group participants indicated that they wanted to proceed with Alternative 2 of that document. Additional alternatives were discussed at the March working group meeting. At the May working group meeting, it was agreed to separate the Force Sequential Write control and to eliminate Force Sequential Read control along with providing a separate control of Modify Data Pointers. It was also agreed, over my objection, to move the control of Modify Data Pointers to another page. This revision eliminates the control of Modify Data Pointers and the Force Sequential Reads control from the Caching Control Page. Once again there was some discussion of caching control on a disk area basis or by operating system. This might be accomplished in conjunction with partition controls, or by providing additional logical block limits with the segment designators, or by an algorithm selection. There was also some discussion of increasing caching control on a per command, or per command type basis. However, the working group did not agree to adding any such control. I accepted an action item to propose a Command/Message Allowed Page including the Modify Data Pointer Control. This proposal will be dealt with in a separate document. This revised Caching Page still only provides functionality in addition to that already included in SCSI-2 Rev 10C. None of the SCSI-2 caching controls have been changed or eliminated. G.E. Milligan Manager of Product Planning Caching Page: Caching Page ============================================================================== Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ============================================================================== 0 | PS |Reserved| Page Code (08h) | -----|-----------------------------------------------------------------------| 1 | Page Length (12h) | -----|-----------------------------------------------------------------------| 2 | IC | ABPF | SLOG | DISC | SIZE | WCE | MF | RCD | -----|-----------------------------------------------------------------------| 3 | Demand Read Retention Priority | Write Retention Priority | -----|-----------------------------------------------------------------------| 4 | (MSB) | -----|--- Disable Pre-fetch Transfer Length ---| 5 | (LSB) | -----|-----------------------------------------------------------------------| 6 | (MSB) | -----|--- Minimum Pre-fetch ---| 7 | (LSB) | -----|-----------------------------------------------------------------------| 8 | (MSB) | -----|--- Maximum Pre-fetch ---| 9 | (LSB) | -----|-----------------------------------------------------------------------| 10 | (MSB) | -----|--- Maximum Pre-fetch Ceiling ---| 11 | (LSB) | -----|-----------------------------------------------------------------------| 12 | FSW |RESERVED| DRA | RESERVED | -----|-----------------------------------------------------------------------| 13 | NUMBER OF CACHE SEGMENTS | -----|-----------------------------------------------------------------------| 14 | (MSB) | -----|--- Cache Segment Size ---| 15 | (LSB) | -----|-----------------------------------------------------------------------| 16 | RESERVED | -----|-----------------------------------------------------------------------| 17 | (MSB) | -----|--- NON CACHE SEGMENT SIZE ---| 18 | | -----|--- ---| 19 | (LSB) | ============================================================================== The Initiator Control (IC) enable bit (Bit 7 Byte 2), when set to one, requests that the SCSI device use the Number of Cache Segments or Cache Segment Size fields, dependent upon the Size bit, to control the caching algorithm rather than the target's own adaptive algorithm. The Abort Pre-Fetch (ABPF) bit (Bit 6 Byte 2), when set to one, with the DRA bit equal to zero, requests that the SCSI device abort the pre-fetch upon selection. When set to zero, with the DRA bit equal to zero, the termination of any active pre-fetch is operation and/or vendor specific. The Statistical Logging (SLOG) enable bit (Bit 5 Byte 2), when set to one, requests that the SCSI device perform caching performance logging during subsequent operations. The logging may be used for internal device optimization or reported by the Log Sense command for optimization by the host. When set to zero, SLOG requests that caching performance logging be disabled to reduce overhead time or to prevent non pertinent operations from impacting tuning values. The Discontinuity (DISC) bit (Bit 4 Byte 2), when set to one, requests that the SCSI device continue the pre-fetch across time discontinuities, such as across cylinders (or tracks in an embedded servo drive), up to the limits of the buffer, or segment, space available for pre-fetch. When set to zero, the DISC requests that pre-fetches be truncated (or wrapped) at time discontinuities. The Size Enable (SIZE) bit (Bit 3 Byte 2), when set to one, indicates that the Cache Segment Size is to be used to control caching segmentation. When SIZE equals zero, the Initiator requests that the Number of Cache Segments is to be used to control caching segmentation. Simultaneous use of both number of segments and segment size is vendor specific. The Force Sequential Write (FSW) bit (Bit 7 Byte 12). when set to one, indicates that multiple block writes are to be transferred over the SCSI bus and written to the media in an ascending, sequential, logical block order. When the FSW bit equals zero, the target is allowed to reorder the sequence of writing addressed logical blocks in order to achieve a faster command completion. The Disable Read-Ahead (DRA) bit (Bit 5 Byte 12), when set to one, requests that the target not incur any overhead time by reading into the buffer any logical blocks beyond the addressed logical block(s). When the DRA bit equals zero, the target may continue to read logical blocks into the buffer beyond the addressed logical block(s). The Number of Cache Segments (Byte 13) advises the target how many segments the host requests that the cache be divided into. The Cache Segment Size field (Bytes 14 and 15) indicates the requested segment size in Bytes. This standard assumes that the Cache Segment Size field is valid only when the SIZE bit is one. If the Non Cache Buffer Size field (Bytes 17-19) is greater than zero, this field advises the target how many bytes the initiator requests that the target allocate for a buffer function when all other cache segments are occupied by data to be retained. If the number is at least one, caching functions in the other segments need not be impacted by cache misses to perform the SCSI buffer function. The impact of the Non Cache Buffer Size equal 0 or the sum of this field plus the Cache Segment Size greater than the buffer size is vendor specific.