X3T9.2/90-021-Rev 1 OKLAHOMA CITY OPERATIONS _________________________________________________________________ Date: 3/6/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. This revision eliminates Alternative 1 and incorporates the following additions discussed in the working group. Since the January working group I received some additional feedback. Requests have been made for additional control which I had intended to include as well as for some functions which are presently controlled in vendor unique pages but have a relationship to the caching function. Among the requested additional control functions are an enable/disable for adaptive caching. enable/disable for read look ahead, and enable/disable for modify data pointer operation. (The discussion at the March working group added a need to control the sequence of logical block writes even when modify data pointers are not used.) There has also been some discussion of caching control on a disk area basis. This might be accomplished in conjunction with partition controls or by providing additional logical block limits with the segment designators. However, the working group opposed consideration of that additional complication. In my original submittal it was not explicitly pointed out that the description was in addition to that already included in SCSI-2 Rev 10B. None of the SCSI-2 caching controls have been changed or eliminated. G.E. Milligan Manager of Product Planning Alternative 2 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 | FSR | 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, contiguous, sequential order. With FSW set to one, Modify Data Pointer messages are disabled. 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. With the FSW bit equal to zero, the target may use Modify Data Pointer messages to facilitate the reduction of the command's elapsed time. The Force Sequential Read (FSR) bit (Bit 6 Byte 12) has the analogous definition for Read operations as the FSW for Write operations. 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.