Jump to content

User:Tom94022/Sandbox/CKD History

From Wikipedia, the free encyclopedia

This is the current revision of this page, as edited by Tom94022 (talk | contribs) at 17:48, 28 August 2015 (Caching). The present address (URL) is a permanent link to this version.

(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

I'm building below a major update to History Section of the Count key data Article. Please feel free to contribute. Tom94022 (talk) 20:14, 17 August 2015 (UTC)

History

[edit]

IBM DASD I/O

[edit]
IBM S/360 & S/370 Input/Output operations for CKD DASD showing channel, storage control unit and DASD device

Beginning with its 1964 System/360 announcement IBM's mainframes have accessed input/output (I/O) devices, such as DASD, thru channel and associated control unit[1][2][3] (SCU or Storage Control Unit). Initially there was a high degree of correspondence between the logical view of such accesses and the actual hardware, as shown in the illustration to the right. Systems generally addressed devices as three hexadecimal digits, one each for Channel, Control Unit and Device, with three digit labels typically affixed[a] to identify the specific device.

On low end systems the Channel and the Control Unit were frequently physically integrated but remained logically separate. IBM's New Attachment Strategy[4] beginning with the 3380 Model 2 in 1972 physically separated the SCU into two physical entities, a Director and a Controller while keeping them logically the same. The Controller handles the CKD track formatting and is packaged with the first drive(s) in a string of drives and having a model number with the letter "A" as a prefix, an "A Box" as in 3350 Model A2 containing a controller and two drives. The combination of an SCU and a DASD or a Director and an A Box is called a subsystem.

Modern IBM mainframes allow two hexadecimal digits for channels and are physically highly virtualized.

Access to specific classes of I/O devices by an IBM mainframe is under the control of Channel Command Words ("CCW")s, some of which are generic (e.g. No Operation) but many of which are specific to the type of I/O device (e.g. Read Backwards for a tape drive). The group of CCWs defined by IBM for DASD fall into five broad categories:

  1. Control - control of the DASD including the path thereto
  2. Sense - sense status of the DASD including the path thereto
  3. Write - write information to the DASD (which may be buffered or cached in the path)
  4. Read - read information from the DASD (which may be buffered or cached in the path)
  5. Search - compare information from the CPU with information stored in the DASD.

CKD CCWs are the specific set of CCWs used to access CKD DASD subsystems. This is in contrast to fixed block architecture (FBA) CCWs which are used to access FBA DASD subsystems.

CKD Track Format is the track format for DASD as initially announced in 1964 and offered by IBM and plug compatible competitors in DASD products thru at least 1996 (2301 thru 3390 Model 9);[5] in total 22 unique[b] DASD offered by IBM and 3 unique CKD subsystms offered by plug-compatible manufacturers.[c]

Initial CKD Impementation

[edit]

In its 1964 implementation of CKD track format on IBM's System/360 IBM offered five DASDs attached via two SCUs to the system's high speed Selector Channel. The 2820 SCU[6] controlled the 2301 Drum while the 2841 SCU[7] controlled combinations of the 2302 Disk Storage, 2303 Drum Storage, 2311 Disk Drive and/or 2321 Data Cell. The 2314 DASD[d] and 2314 SCU[8] were added in 1965. Forty one CCWs were implemented to control these DASD as follows:

IBM S/360 DASD Channel Commands[9]
Command Class Command‡ 2301[6] 2302[7] 2303[7] 2311 2321 2314
2319
MT
Off
MT
On †
Count Length
Control No Op S S S S S S 03
Seek S S S S S S 07 6
Seek Cylinder S S S S S S 0B 6
Seek Head S S S S S S 1B 6
Set File Mask S S S S S S 1F 1
Space Count S S S S S S 0F 3
Recalibrate S S 13 Not zero
Restore S 17 Not zero
Sense Sense I/O S S S S S S 04 6
Release Device O O O O O O 94 6
Reserve Device O O O O O O B4 6
Search Home Address EQ S S S S S S 39 B9 4 (usually)
Identifier EQ S S S S S S 31 B1 5 (usually)
Identifier HI S S S S S S 51 D1 5 (usually)
Identifier EQ or HI S S S S S S 71 FI 5 (usually)
Key EQ S S S S S S 29 A9 1 to 255
Key HI S S S S S S 49 C9 1 to 255
Key EQ or HI S S S S S S 69 E9 1 to 255
Scan Feature Key & Data EQ O O O S 2D AD See Note 1
(see Note 1) Key & Data HI O O O S 4D CD See Note 1
"     Key & Data EQ or HI O O O S 6D ED See Note 1
"     Search EQ O O O S 25 A5 See Note 1
"     Search HI O O O S 45 C5 See Note 1
"     Search HI or EQ O O O S 65 E5 See Note 1
"     Set Status Modifier* O O O S 35 B5 See Note 1
"     Set Status Modifier* O O O S 75 F5 See Note 1
"     No Status Modifier O O O S 55 D5 See Note 1
Read Home Address S S S S S S 1A 9A 5
Count S S S S S S 12 92 8
Record 0 S S S S S S 16 96 Number of bytes transferred
Data S S S S S S 06 86
Key & Data S S S S S S 0E 8E
Count. Key & Data S S S S S S 1E 9E
IPL S S S S S S 02
Write Home Address S S S S S S 19 5 (usually)
Record 0 S S S S S S 15 8*KL*DL of RO
Count, Key & Data S S S S S S 1D 8+KL+DL
Special Count, Key & Data S S S S S S 01 8+KL+DL
Data S S S S S S 05 DL
Key & Data S S S S S S 0D KL*DL
Erase S S S S S S 11 8*KL*DL
Total CCWs 41 30 39 30 40 40 40
Notes:
O = Optional feature
S = Standard feature
MT = Multitrack: When supported CCW will continue to operate on next heads in sequence to end of cylinder
‡ = TIC (Transfer In Channel) and other standard commands not shown.
† = Code same as MT Off except as listed
1. File Scan Feature (9 CCWs) only available on 2841 for 2302, 2311 & 2321 and 2314 SCU for its DASD. Count is number of bytes in search argument, including mask bytes

This initial implementation included the following capabilities which were continued in subsequent embodiments.

Record overflow - Records can exceed the maximum track length of a DASD[7]
Multitrack operations - Specific CCWs can continue onto the next sequential head[7]
Command chaining - CCWs could be chained together to construct complex channel programs. The gaps in a CKD track format provided sufficient time between the commands so that all channel and SCU activity necessary to complete a command can be performed in the a gap between appropriate fields.[10] Such programs can search a large amount of information stored on a DASD, upon successful completion returning only the desired data and thereby freeing CPU resources for other activity.[11]
Channel switching - An SCU can be shared between channels - initially two channel switching was provided and it was expanded to up to eight channels in later SCUs. The channels can be on the same or different CPUS.

Rotational Position Sensing

[edit]

Rotational position sensing (RPS) was introduced in storage control units beginning in 1971 with the 2835 Control Unit and associated 2305 DASD[12], It required a block multiplexor channel. Two new CCWs, SET SECTOR and READ SECTOR enabled the channel to issue a seek to an angular track position. RPS permits channel disconnection during most of the rotational delay period and thus contributes to increased channel utilization. The control unit implements RPS by dividing each track into equal angular segments.[12]

The block multiplexor channel also provides disconnection for Seek commands in all subsequent DASD control units.

Dynamic paths

[edit]

First introduced with the 3380 DASD on the 3880 Director[13] in 1981 the feature was included with the later CKD DASD subsystems. The dynamic path selection function controls operation of the two controllers, including simultaneous data transfer over the two paths. When supported by the operating system, each controller can serve as an alternate path in the event the other controller is unavailable.[14]

Three additional commands, Set Path Group ID, Sense Path Group ID, and Suspend Multipath Reconnection, are used to support attachment of the 3380 Models havaing two controllers at the head of a string. [13]

The Set Path Group ID command, with the dynamic path selection (DPS) function, provides greater flexibility in operations on reserved devices. Once a path group for a device has been established, it may be accessed over any path which is a member of the group to which it is reserved. In addition, on 370-XA systems which set the multipath mode bit in the function control byte (byte 0) to a 1, block multiplex reconnections will occur on the first available path which is a member of the group over which the channel program was initiated (regardless of the reservation state of the device).[13]

If the controller designated in the I/O address is busy or disabled, the dynamic path selection allows an alternate path to the device to be established via another storage director and the other controller in the model AA.[14]

Extended CKD

[edit]

Prior to Extended CKD (ECKD), CKD records were synchronously accessed, all activities required to end one CCW and initiate the next occured in the gaps between the CKD fields.[10] This placed limitations on gap size and cable length (speed of light issues) but did provide for very high performance since complex chains of CCWs could be performed by the subsystem without use of CPU memory or cycles.

With the 1981 introduction of nonsynchronous operation on the 3880 Director the gap timing constraint was removed.[10] Five additional CCWs, Locate Record, Define Extent, Write Update Data, Write Update Key and Data, and Write CKD Next Track are used. [15]

In nonsynchronous operation, the transfer of data between the channel and the storage control is not synchronized with the transfer of data between the storage control and the device. Channel programs can be executed such that channel and storage control activities required to end execution of one command and advance to the next do not have to occur during the inter-record gap between two adjacent fields. An intermediate buffer in the storage control allows independent operations between the channel and the device. A major advantage of ECKS is far longer cables; depending upon application it may improve performance.[10]

ECKD CCWs are support on all subsequent CKD subsystems.

Caching

[edit]

Caching first introduced in DASD CKD subsystems by Memorex[16] (1978) and StorageTek[e] (1981) was subsequently introduced in late 1981 by IBM on the 3880 Model 13 for models of the 3380 with dynamic pathing.[f]

The cache is dynamically managed by an algorithm; high activity data is accessed from the high-performance cache and low activity data is accessed from less-expensive DASD storage. A large memory in the Director, the cache, is divided into track slots that store data from the 3380 tracks. A smaller area is a directory that contains entries that allow data to be located in the cache.[17]

Caches were also provided on subsequently introduced storage controls.

Other extensions

[edit]

Over time a number of path control, diagnostic and/or error recovery CCWs were implemented on one or more storage controls. For example, Unconditional Reserve was introduced as a way of releasing a device reserved to another channel and reserving the device to the channel issuing the command.

Beyond System/370

[edit]

Reduced CPU and memory prices and higher device and interface speeds have somewhat nullified the advantages of CKD, and support continues by IBM to this date because it's flagship operating system z/OS continues to use CKD CCWs for many funtions.

Originally CKD records had a one-to-one correspondence to a physical track of a DASD device; however over time the records have become more and more virtualized such that in a modern IBM mainframe there is no longer a direct correspondence between the a CKD record ID and a physical layout of a track. An IBM mainframe constructs CKD track images in memory and executes the ECKD and CKD channel programs against the image. To bridge between the native fixed block sized disks and the variable length ECKD/CKD record format, the CKD track images in memory are mapped onto a series of fixed blocks suitable for transfer to and from an FBA disk subsystem.[18]

Of the 83 CKD CCWs implemented for System/360 and System/370 channels 56 are emulated on System/390 and later systems.[18]

Note and Reference List

[edit]
  1. ^ In some early DASD the label was on a plug which allowed the address to be moved between DASD
  2. ^ A unique combination of number of tracks and maximum track length. With this definition a double density DASD counts as a unique DASD.
  3. ^ double density 2314, triple density 3330 and double density 3350
  4. ^ Initially in a bundle of nine drives the drive model numbers became 2312 (1 drive), 2313 (4 drives), 2318 (2 drives) and 2319 (3 drives)
  5. ^ STK 8890 CyberCache for STK 3350 compatibles
  6. ^ Simultaneously announced was the 3880-11 using its cache in a paging mode 3350s as paging devices
  1. ^ IBM System/360 Principles of Operation, GA22-6821, Input/Output Operations
  2. ^ IBM System/370 Principles of Operation, GA22-7000, Input/Output Operations
  3. ^ IBM Enterprise Systems Architecture/370 Principles of Operation, SA22-7000, Chapter 13. I/O Overview
  4. ^ Historical Narrative of the 1970s, US v IBM, Exhibit 14971, p.1051
  5. ^ 3390 withdrawn from marketing in 1996
  6. ^ a b 2820 SCU controlling the 2301 Drum
  7. ^ a b c d e 2841 and Associated DASD Component Description Manual
  8. ^ 2314 and 2844 Component Description Manual
  9. ^ Derived from IBM System/360 Reference Data (Green) Card
  10. ^ a b c d Introduction to Nonsynchronous Direct Access Storage Subsystems, IBM. GC26-4519-0, January 1990
  11. ^ I/O Subsystem Architecture, J. Buzen, Proc IEEE, June 1975, p. 871
  12. ^ a b Reference Manual for IBM 2835 Storage Control and IBM 2305 Fixed Head Storage Module, GA26-1589-2, August 1971
  13. ^ a b c IBM 3880 Storage Control ,Models 1, 2, 3, and 4 Description Manual, GA26-1661-9,September 1987, Section 4
  14. ^ a b IBM 3380 Direct Access Storage Description and User's Guide, GA26-1664-1, December 1981
  15. ^ Cite error: The named reference 3880m1SRL" was invoked but never defined (see the help page).
  16. ^ "Now Memorex fills the gap in your system's performance." Datamation Advertisement, August 1978, p. 85-6
  17. ^ Introduction to IBM 3880 Storage Control Model 13, GA32-00622-0, September 1981
  18. ^ a b IBM S/390 Multiprise 3000 Enterprise Server, Internal Disk Subsystem: Reference Guide. IBM. November 1999.