Home
Patent Search
IMT Blog
REGISTER
|
SIGN IN
United States Patent
4825403
Gershenson , ; et al.
April 25, 1989
Title
Apparatus guaranteeing that a controller in a disk drive system receives at least some data from an invalid track sector
Abstract
An apparatus provides a sequence detected signal indicating that a synchronization sequence occurring at regular intervals in a stream of data has occurred or should have occurred. The apparatus includes logic for detecting the synchronization sequence, logic responsive to the detection logic for producing the sequence detected signal when the detection logic detects the sequence, and logic for producing the sequence detected signal at a fixed time after the synchronization sequence should have occurred. If the synchronization sequence did occur, the apparatus thus produces two sequence detected signals; however, the device receiving the sequence detected signal responds to the first sequence detected signal and ignores the second. If the synchronization sequence did not occur, the device receiving the sequence detected signal responds to the sequence detected signal produced by the logic responsive to the timing apparatus. The apparatus thus guarantees that the device receiving the sequence detected signal will always receive such a signal.
Inventors:
Gershenson; Edward
(Worcester,
MA
)
, Lemone; Louis A.
(Stow,
MA
)
, Lippitt; Mark C.
(Ashland,
MA
)
Assignee:
Data General Corporation
(Westboro,
MA
)
Appl. No.:
858540
Filed:
April 29, 1986
Current U.S. Class:
360/52
360/51
Field of Search:
360/51,37.1,38.1 369/59 371/10 364/2MSFile,9MSFile
U.S. Patent Documents
4040022
August 1977
Takii
4064489
December 1977
Babb
4086659
April 1978
Cizmic et al.
4101969
July 1978
Lawson et al.
4275466
June 1981
Yamamoto
4297737
October 1981
Andreson et al.
4325117
April 1982
Parmet et al.
4409627
October 1983
Eto et al.
4525840
June 1985
Heinz et al.
4618898
October 1986
Young et al.
4625321
November 1986
Pechar
4626933
December 1986
Bucska et al.
4663752
May 1987
Kakuse et al.
Other References
"Missing Address Mark Detector for Disk Files", IBM Technical Disclosure Bulletin, vol. 14, No. 8, Jan. 1972, King, R. W. et al., p. 2263..~
Primary Examiner:
Williams, Jr.; Archie E.
Assistant Examiner:
Coleman; Eric
Parent Case Text
CROSS-REFERENCES TO RELATED APPLICATIONS
This is a division of co-pending application Ser. No. 495,214 filed May 16, 1986, now abandoned.
Claims
What is claimed is:
1. In a disk drive including
(1) a disk for storing information, said information being stored on said disk in track sectors, each of said track sectors including data, header information and a synchronization mark preceding said header information,
(2) means for reading said header information, synchronization marks and data from said disk, and
(3) a read-write processor for receiving said header information, synchronization marks and data from said disk,
apparatus for ensuring that said read-write processor processes some said data from track sectors which do not contain a valid synchronization signal, said apparatus comprising:
(1) synchronization mark detected signal providing means for receiving said synchronization marks, providing a synchronization mark detected signal in response to said synchronization mark, and providing said synchronization mark detected signal after said synchronization mark should have been received; and
(2) control means in said read-write processor means responsive to said synchronization mark detected signal for causing said read-write processor means to commence processing said data currently being read from said track sector in response to said synchronization mark detected signal and ignoring any further synchronization mark detected signal until said read-write processor means has finished processing said data currently being read.
2. In the apparatus of claim 1, and said wherein: said synchronization mark detected signal providing means includes:
(a) detection means for receiving said synchronization marks from said reading means and outputting a detected signal in response to each one of said synchronization marks;
(b) first synchronization mark detected signal producing means connected to said detection means for receiving said detected signal and outputting said synchronization mark detected signal in response to said detected signal; and
(c) second synchronization mark detected signal producing means for producing said synchronization mark detected signal after said detection means should have received said synchronization mark.
3. In the apparatus of claim 2, and wherein:
said disk drive produces a sector pulse signal at the beginning of each said track sector; and
said second synchronization mark detected signal producing means includes first timing means responsive to said sector pulse signal for determining the time at which said detection means should receive said synchronization mark and said second synchronization mark detected signal producing means outputs said synchronization mark detected signal in response to said timer means.
4. In the apparatus of claim 3, and wherein:
said read-write processor further includes second timing means responsive to said sector pulse signal for determining a first time period in which said detection means should receive said synchronization mark; and
said synchronization mark detected signal providing means includes enabling and disabling means responsive to said second timing means and to said synchronization mark detected signal for enabling said detection means during said first time period in which said detection means should receive said synchronization mark and disabling said detection means in response to said synchronization mark detected signal.
5. In the apparatus of claim 4, and wherein:
each said track sector includes a second synchronization mark following said header information;
said disk drive further includes means for writing said data to said track sectors;
said read-write processor processes said data being read from or written to said track sectors;
said disk drive is connected to controller means for receiving said data from said disk drive and providing said data to said disk drive and providing control signals including header/data control signals specifying alternatively the provision of said header to said controller or the transfer of said data red from or to be written to said data section between said controller and said disk drive, said controller means including header compare means for determining whether said header received from said disk drive is valid and changing said header/data control signal to indicate that said data is being transferred when said header received from said disk drive is valid;
said second timing means is further responsive to said header/data control signal and further indicates a second said period when said header compare means changes said header/data control signal to indicate that said data is being transferred between said controller and said disk drive;
said enabling and disabling means enables said detection means during said second time period; and
said second synchronization mark detected signal producing means produces said synchronization mark detected signal after said detection means should have received said first synchronization mark.
6. In a storage system for storing data including
(1) a disk drive including
(a) a disk for storing said data, said data being stored on said disk in track sectors including valid and invalid track sectors, each one of said valid track sectors including
(i) a first synchronization mark,
(ii) a header following said first synchronization mark;
(iii) a second synchronization mark following said header identical to said first synchronization mark, and
a data section following said second synchronization mark,
(b) read-write means for reading said synchronization marks and said data from said disk and writing said data to said disk, and
(c) a read-write processor for receiving said synchronization marks and performing operations including a header read operation and data transfer operations on said data, and
(2) a controller connected to said disk drive for receiving said data from and providing said data to said disk drive, said controller including
(a) header compare means for performing a header compare operation on said data received from said disk drive as a result of said header read operation and providing a header valid signal if said data is a valid header and
(b) means responsive to said header valid signal for providing a header/data control signal specifying alternatively the provision of said header to said controller and the transfer of said data between said controller and said disk drive to said disk drive, said means responsive to said header valid signal responding to said header valid signal by providing said header/data control signal specifying the transfer of said data between said controller and said disk drive,
apparatus for ensuring that said header compare operation is performed once for each said track sector to which said data is written or from which said data is read, said apparatus comprising:
(1) synchronization mark detected signal providing means responsive to said header/data control signals for receiving said data and said synchronization marks, providing a synchronization mark detected signal in response to said first synchronization mark when said header/data control signal specifies provision of said header to said controller, providing said synchronization mark detected signal after said first synchronization mark should have been received, and providing said synchronization mark detected signal in response to said second synchronization mark when said header/data control signal specifies transfer of said data between said controller and said disk drive; and
(2) control means in said read-write processor means responsive to said synchronization mark detected signal for causing said read-write processor means to perform said header read operation in response to the first said synchronization mark detected signal received after said read-write processor means begins processing each said track sector and one of said data transfer operations in response to the first said synchronization mark detected signal received after completion of said header read operation.
Description
BACKGROUND OF THE INVENTION
1. Field of the Invention
The invention relates generally to data-processing systems and more specifically to disk drives utilized by such systems to store data on magnetic media, controllers utilized to control such disk drives, and buses connecting controllers
2. Description of Prior Art
A set of controllers, a set of disk drives, and the buses connecting them make up a complex system which must function rapidly and reliably and which must be easily diagnosed in case of failure. Problems in such systems in the prior art have involved allocation of functions between the disk drive and the controller, the design of the system so that one part can be modified without changing the rest, the provision of immediate access for one controller to a disk drive after another controller has finished using the disk drive, the provision of information about the status of a disk drive which a controller is currently not using to the controller, the diagnosis of failures in the system, the design of efficient and inexpensive apparatus for encoding data codes to produce disk codes and decoding disk codes to produce data codes, and the reduction of the effect of minor errors which occur while data is being read to or written from the disk.
Allocation of functions between the disk drive and the controller is difficult because each has information that the other requires to operate correctly. For example, the controller may maintain a map of the disk indicating what disk track sectors are available for use. Each disk track sector is specified in the map by means of a set of coordinates. The track sector itself contains a header which includes the coordinates. A transfer of data to or from a track sector should not take place unless the coordinates in the header are the same as those of the track sector to or from which the controller intended to transfer data. While the controller has the information required to check the header, it is the disk which needs to know whether the header is valid before it begins reading or writing data.
The design of disk drives so that one part can be changed without affecting the others is difficult because the disk drive is required to operate very rapidly. Hence, the parts of the disk drive must cooperate closely and each part is dependent on the others. Unless great care is taken in the design, a change to any part requires changes in all of the others. For example, a change in the disk codes used on the disk may require a complete redesign of the portion of the disk drive which encodes or decodes the disk codes and transfers data between the controller and the disk.
Where more than one controller may use a disk drive, it is important that a controller which is waiting for another controller to finish using the disk drive begin using the disk drive immediately when the other controller ceases using it. If there is any interval between the time the first controller stops using the disk and the second controller starts using it, there will be a reduction of system efficiency, and more important, a possibility that the first controller will again gain use of the disk drive before the second controller determines that it is free and reserves it.
It is further important where a controller is sharing a set of disk drives with a group of controllers that the controller can determine the status of each disk drive in the set without currently having access to the disk drive. In the absence of such a capability, the controller cannot efficiently use the disk drives available to it.
In complicated apparatus such as disk drive and controller systems, diagnostics are difficult. There are many possible sources of error, and diagnosis must be able to distinguish among the possible sources. For example, when data is encoded and written to the disk, the presence of bad data on the disk may be the result of an error in the encoding operation or of an error in the system which writes the data to the disk. Further, the addition of diagnostic components adds to the overall complexity of the system, and if improperly done, may provide an additional source of error.
Encoding data to obtain disk codes and decoding disk codes to obtain data is one of the most important operations performed in a disk drive. Design of apparatus for performing these operations which is fast and low in cost is a matter of perennial difficulty. The difficulty of design is increased by the requirement that faults in the operation of the encoding and decoding apparatus be easily diagnosable.
A final problem of disk drives is the fact that the presence of electrical noise in the system can result in disk codes which are obviously illegal. The encoding and decoding apparatus must deal with these illegal codes which neither decreases the quality of data made available to the rest of the computer system nor reduces overall system efficiency.
Some of these problems in the design of controllers and disk drives of the prior art and others as well are remedied by the present invention.
SUMMARY OF THE INVENTION
The present invention is employed in a disk drive which stores data on the disk in track sectors which include a first synchronization mark, a header, a second synchronization mark, and a data section. The disk drive is used with a controller which receives the header from the track sector being read from or written to, compares the header with an expected header value, and if the header is valid, signals the disk drive to begin the transfer of data.
When the disk drive begins reading a track sector, it enables a synchronization mark detector to detect the first synchronization mark. On detecting the first synchronization mark, the disk drive begins transferring the header to the controller and stops transferring data after it has transferred the header. When the disk drive receives a signal from the controller indicating that the header is valid, it enables the synchronization mark detector to detect the second synchronization mark. On detection of that mark, transfer of data begins.
In order for such a system to function, the controller must receive data from the disk drive upon which it can perform the header compare operation. However, if the first synchronization mark is damaged and therefore not detectable by the synchronization mark detector, the disk drive cannot begin the transfer of the header to the controller. The present invention solves this problem by means of a synchronization mark detector which always provides a synchronization mark detected signal at a point in time after the time at which the detector should have detected the first synchronization mark in a track sector. Thus, if the synchronization mark on the disk is valid, the synchronization mark detector produces a first synchronization mark detected signal when it detects the synchronization mark and a second one at the later point in time. In this case, the disk drive commences tranferring the header upon receipt of the first synchronization mark detected signal and therefore ignores the second synchronization mark detected signal. However, if the first synchronization mark is invalid, only one synchronization mark detected signal is received, and the disk drive commences transferring data at the later time. Since the signal is late, the data transferred is not the expected header. The header compare operation consequently fails and no data is transferred to or from the track sector containing the invalid synchronization mark.
The apparatus of the present invention may have applications not only in disk drives, but also in other apparatus where sequences occurring at regular intervals are used to synchronize operation of the apparatus.
It is thus an object of the invention to provide an improved digital data processing system incorporating disk drives.
It is a further object of the invention to provide improved control apparatus for use in disk drives.
It is another object of the invention to provide disk drive control apparatus which operates under control of a microprocessor.
It is an additional object of the invention to provide disk drive control apparatus which provides data to the controller even when synchronization marks in the disk sector are damaged.
Other objects, advantages, and features of the present invention will be understood by those of ordinary skill in the art after referring to the following detailed description of the preferred embodiment and drawings, wherein:
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 depicts a digital data processing system including a disk drive containing the present invention.
FIG. 2 depicts data codes used in the digital data processing system including the present invention.
FIG. 3 represents disk codes used in the disk drive containing the present invention.
FIG. 4 represents the encoding of data codes into RLL disk codes.
FIG. 5 depicts the structure of disks and a disk set used in the disk drive containing the present invention.
FIG. 6 is a block diagram of the disk drive control apparatus of the present invention.
FIG. 7 is a detailed representation of the controller-disk bus connecting the disk drive control apparatus to the controller.
FIG. 8 represents a track sector on a disk of the disk drive containing the present invention.
FIG. 9 is a diagram of the control hierarchy in the disk drive control apparatus of FIG. 6.
FIG. 10 is a block diagram of the components of the read/write processor in the disk drive control apparatus of FIG. 6.
FIG. 11 is a schematic representation of the read/write sequencer in the read-write processor of FIG. 10.
FIG. 12 is a schematic representation of the DPU timing generator in the read-write processor of FIG. 10.
FIG. 12A is a schematic representation of the sync mark detection logic in the read-write processor of FIG. 10.
FIG. 13 is a group of tables showing encoding and decoding operations performed by the read-write processor of FIG. 10.
FIG. 14 is a schematic representation of encoding and decoding logic in the read-write processor of FIG. 10.
FIG. 15 is a block diagram of apparatus control in the disk drive control apparatus of FIG. 6, controller of FIG. 19.
FIG. 16 is a schematic representation of suspended reserve logic in the controller interface of the disk drive control apparatus of FIG. 6.
FIG. 17 is a schematic representation of data transfer apparatus 605 of the disk drive control apparatus of FIG. 6.
FIG. 18 is a schematic representation of the logic controlling outputs from the disk drive control apparatus of FIG. 6.
FIG. 19 is a block diagram of a present embodiment of a controller connected to the disk drive control apparatus of FIG. 6.
FIG. 19A is a detailed block diagram of the data processor in the controller of FIG. 19.
FIG. 19B is a detailed block diagram of the disk interface in the controller of FIG. 19.
Reference numbers in the following Description of the Preferred Embodiments have 3 or 4 digits; the leftmost one or two digits specify the figure number; the remaining digits specify the item in the figure specified by the first two digits
DESCRIPTION OF THE PREFERRED EMBODIMENTS
The Description of the Preferred Embodiments begins with introductory discussions of digital data processing systems with disk drives and of the structure and operation of disk drives, then presents an overview of the structure and function of the present invention, and finally presents detailed discussions of certain components of a presently-preferred embodiment of the present invention.
1 Introduction
1.1 Digital Data Processing Systems with Disk Drives
All but the smallest modern digital data processing systems include a disk drive. The disk drive provides the digital data processing system with reasonably rapid access to a large amount of data stored in a non-volatile form. Components of the disk drive include one or more rotating disks coated with magnetic media, movable heads for writing data to or reading data from the magnetic media, and means for controlling the position of the heads on the disk. Since the magnetic media may be changed only by action of a magnetic field, the data on the disk is not lost when the digital data processing system loses power or is otherwise shut down. Because the heads are movable, data located anywhere on the disk may be accessed relatively rapidly.
1.1.1 Components of a Digital Data Processing System utilizing Disk Drives--FIG. 1: The principle components of a digital data processing system utilizing disk drives are one or more disk drives, one or more central processing units, and one or more controllers for controlling the disk drives. FIG. 1 provides an overview of a Digital Data Processing System 100 with a single central processor, a single controller, and one or more disk drives. System 100 includes as its central processor Host Processor 101, Controller 107, and Disk Drives 119(0) . . . 119(n). Processor-Controller Bus 111 connects Host Processor 101 with Controller 107, and Controller-Disk Bus 127 connects Controller 107 with Disk Drives 119(0) . . . 119(n). Host Processor
101 includes CPU 105, for processing data encoded in Data Codes 109 in response to programs consisting of instructions, and Memory 103, for storing Data Codes 109 being processed by CPU 105. In response to certain instructions, Host Processor 101
provides Controller Instructions 113 and Data Codes 109 to Controller 107 via Processor-Controller Bus 111 and receives Data Codes 109 and Controller Status 114 via the same bus.
Controller 107 includes Controller Memory 115, for storing Data Codes 109 in transit between Disk Drives 119(0) . . . 119(n), and Controller Processor 117. In response to Controller Instructions 113 from Host Processor 101, Controller Processor
117 provides Disk Drive Instructions 129 and Data Codes 109 from Controller Memory 115 to a selected Disk Drive 119(a) of Disk Drives 119(0) . . . 119(n) via Controller-Disk Bus 127 and receives Disk Drive Status 131 and Data Codes 109 from Disk Drive
119(a) via the same bus.
Each Disk Drive 119 includes Disk Drive Control Apparatus (DDCA) 121, which controls operation of Disk Drive 119 in response to Disk Drive Instructions 129, Disk 123, upon which data is stored in the form of Disk Codes 128, movable Head 125, which writes Disk Codes 128 to and reads them from Disk 123, and Servo Mechanism 124, which moves Head 125 under control of DDCA 121. DDCA 121 further includes Converter 133, which converts Data Codes 109 received from Controller 107 to Disk Codes 128
and Disk Codes 128 received from Disk 123 to Data Codes 109.
More complex configurations of System 100 than that shown in FIG. 1 are possible. For example, Several Host Processors 101 and Controllers 107 may share a set of Disk Drives 119(0 . . . n). In such a system, each Host Processor 101 is connected to a single Controller 107, but Disk Drives 119 may be connected to more than one Controller 107, and may thus be able to receive Data Codes 109 from or provide them to a set of Host Processors 101.
Further, Disk Drive 119 may contain more than one Disk 123 and Head 125. In such a Disk Drive 119, Disk Drive Control Apparatus 121 must select Head 125 required for Disk 123 containing the desired Disk Codes 128 and move that head to the proper location on Disk 123.
1.1.2 Operation of System 100: When Host Processor 101 executes instructions which store data on a Disk Drive 119(a) or requiring data stored on a Disk Drive 119(a) System 100 operates as follows: Host Processor 101 provides Controller 107 with Controller Instructions 113. Controller Instructions 113 specify the following:
(1) the kind of operation to be performed.
(2) a Disk Drive 119(a) of Disk Drives 119(0) . . . 119(n).
(3) the locations at which Data Codes 109 which are to be written to Disk Drive 119(a) may be obtained or the locations to which Data Codes 109 obtained from Disk Drive 119(a) are to be returned.
(4) the location on Disk 123 of Disk Drive 119(a) to which Data Codes 109 are to be written or from which they are to be read.
In some read and write instructions, the locations at which Data Codes 109 are obtained or to which they are to be returned are registers in Host Processor 101; in others; they are locations in Memory 103.
Controller 107 then executes Controller Instructions 113. If Controller Instructions 113 specify Data Codes 109 in registers in Host Processor 101, Host Processor 101 outputs these Data Codes 109 to Controller 107 which places them in Controller Memory 115; if they specify locations in Memory 103, Controller 107 may itself fetch Data Codes 109 from Memory 103 to Controller Memory 115. Once Data Codes 109 are in Controller Memory 115, Controller 107 provides Data Codes 109 and Disk Drive Instructions 129 specifying a write operation to Disk Drive 119(a) specified in Controller Instructions 113. The Disk Drive Instructions 129 further specify the location on Disk 123 at which the write operation is to be performed. DDCA 121 of Disk Drive 119(a) responds to Disk Drive Instructions 129 by converting Data Codes 109 to corresponding Disk Codes 128 in Converter 133, causing Servo Mechanism 124 to move Head 125 to the proper location on Disk 123, and writing Disk Codes 128 at the proper time to place them in the physical location on Disk 123 specified by Disk Drive Instructions 129.
If Controller Instruction 113 specifies a read operation, Controller 107 provides Disk Drive Instructions 129 specifying the location of Disk Codes 128 on Disk 123 and a read operation. Disk Drive 119(a) responds to Disk Drive Instructions 129
by causing Servo Mechanism 124 to move Head 125 to the proper location on Disk 123, reading Disk Codes 128 at the proper time, converting Disk Codes 128 to Data Codes 109, and providing Data Codes 109 to Controller 107. Controller 107 stores Data Codes
109 received from Disk Drive 119(a) in Controller Memory 115 and then outputs them to Host Processor 101. Depending on how the location in which Data Codes 109 were to be stored was specified in Controller Instruction 113, Output may be to registers in CPU 105 or directly to locations in Memory 103.
In addition to performing the read and write operations described above, Controller 107 and Disk Drive 119 must coordinate the use of Disk Drives 119 by Host Processor 101 and detect and diagnose malfunctions. Coordination is achieved by means of Controller Status Signals 114 returned to Host Processor 101 and Disk Status Signals 131 returned to Controller 107. For example, if a Disk Drive 119(a) is currently engaged in an operation, it may provide a "Busy" Disk Status Signal 131 to Controller 107. Controller 107 may then return a "Busy" Controller Status Signal 114 to Host Processor 101 and issue a "Reserve" Disk Instruction 129 to Disk Drive 119(a) When Disk Drive 119(a) is finished with the current operation, it will then provide an "Interrupt" Status Signal 131 to Controller 107 which issued the "Reserve" Disk Instruction 129. On receipt of the "Interrupt" Status Signal 131, Controller 107 may issue a Disk Instruction 129 specifying a read or write operation. On completion of the operation, Controller 107 may provide an "Interrupt" Controller Status Signal 114 to Host Processor 101 indicating that the job is complete.
The degree of error detection and diagnosis accomplished by Controller 107 and Disk Drive 119 depends on the amount of independent processing capability available to them. At a minimum, Disk Drive 119(a) returns Disk Status 131 indicating a malfunction to Controller 107. If Controller 107 cannot deal with the malfunction or is itself malfunctioning, Controller 107 returns Controller Status 114 indicating a malfunction to Host Processor 101. Disk Status 131 and Controller Status 114 ma indicate malfunctions with varying degrees of precision. If Controller 107 and Disk Drive 119 have sufficient independent processing capability, they may perform diagnostic operations to detect the precise location and nature of the malfunction and may report the results of the diagnostics operations to Host Processor 101.
1.2 Representing Data on a Disk Drive--FIGS. 2, 3, and 4
One of the primary operations performed by Disk Drive 119 is the conversion of Data Codes 109 into Disk Codes 128. The conversion is necessary because of differences between the computer memories used to store Data Codes 109 and the magnetic media used to store Disk Codes 128.
In a computer memory, Data Codes 109 are stored in memory words consisting of a fixed number of bits. All of the bits in a memory word may be set or read in parallel and the buses connecting memory with the processing units carry the data provided to or received from memory in parallel. In System 100, such buses include Processor-Controller Bus 111 and Controller-Disk Bus 126. FIG. 2 shows how a Data Code 109 appears on such a bus. The Data Code 109 in question is ASCII Code for `M`
201, which consists of the sequence of 0's and 1's shown in FIG. 2. On the bus, each bit of Data Code 109 is carried on a separate line and voltage levels on the line indicate whether the value of the bit carried by the line is 1 or 0. In Data Code Representation 207, it is assumed that a high voltage corresponds to 1 and a low voltage to 0. Since each bit of Data Code 109 is carried on a separate line, individual bits can always be distinguished and sequences containing only 1 bits or only 0 bits pose no problem. In addition to the bits of Data Code 109, the bus may carry codes for detecting or correcting changes to Data Code 109 which may occur while Data Code 109 is on the bus. FIG. 2 includes as an example of such a code a one-bit Parity Code 205. Parity Code 205 is set when Data Code 109 is placed on the bus. Its value depends on whether Data Code 109 has an even or odd number of 1 bits. If a single bit of Data Code 109 changes its value while Data Code 109 is on the bus, Parity Code
205 has the wrong value for the changed Data Code 109, and consequently, the fact that Data Code 109 has changed its value can be detected from the value of Parity Code 205. Other, more elaborate error codes may be employed which allow correction as well as detection of errors.
Disk Codes 128 also consist of sequences of 1's and 0's As shown in FIG. 3, a 1 is represented by a magnetic flux change and a 0 by a lack of a magnetic flux change. As shown in Representation of 1 301, the direction of the flux change is immaterial for the representation of 1, and as shown by Representation of 0 303, the polarity of the magnetic media is immaterial for the representation of 0. Disk Codes 128 are written and read serially: on a write operation, as Disk 123 rotates beneath Head 125, Head 125 changes flux in response to a 1 in Disk Code 128 being written to Disk 123 and thereby causes a flux change in the magnetic media of Disk 123; on a read operation, Head 125 detects flux changes in the magnetic media as Disk 123
rotates and thus detects 1's in Disk Code 128 on the disk. On the write operation, Converter 133 converts the parallel Data Codes 109 received from Controller 107 to serial Disk Codes 128, and on the read operation, Converter 133 performs the reverse conversion.
Since 1's are represented by flux changes, and 0's by lack of flux changes, a sequence consisting solely of 1's consists solely of flux changes and one consisting solely of 0's consists of a region having no flux changes. Such sequences present serious problems for the designers of Disk Drives 119. Most Disk Drives 119 use the periodic appearance of flux changes on Disk 123 to synchronize operations; if a long sequence consisting solely of 0's is encountered, synchronization is no longer possible. Further, sequences consisting solely of 1's determine the maximum density of data on Disk Drive 119. If the individual 1's in such a sequence are to be distinguished from one another on writing or reading, each one must occupy an amount of space in the magnetic media corresponding to the distance which passes under Head 125 while Head 125 is undergoing or detecting a complete flux change.
The above problems have been solved by the use of Disk Codes 128 in which the length of a sequence of 0's is limited and adjacent 1's never appear. Thus, flux changes always appear often enough to permit synchronization and part of the distance required by Head 125 to undergo a complete flux change may be occupied by the 0's adjacent to the 1's. In Systems 100 using such Disk Codes 128, Converter 133 must also convert Data Codes 109 which allow adjacent 1's and unlimited numbers of 0's to Disk Codes 128 such as those just described. One set of such Disk Codes 128 is termed an RLL (2-8) Code. This code will be explained in detail later; here, it is used only to illustrate how Data Codes 109 are converted to Disk Codes 128. FIG. 4 gives an overview of the conversion of ASCII Code for `M` 201 to its representation in 2-8 RLL Code. In 2-8 RLL Code each two-bit Data Code Group 403 of Data Code 109 is represented as a three-bit RLL Code Group 405. The value of a given RLL Code Group 405
depends on the values of Data Code Groups 403 preceding the one being converted and Data Code Group 403 following the one being converted. RLL 2-8 Code for `M` 401 shows one possible RLL 2-8 code encoding for ASCII Code for `M` 201. As may be seen there, 1's no longer occur in sequence, and the maximum sequence of 0's is 6. The flux change representation of the RLL 2-8 Code for `M` is presented at 407.
1.3 Locating Data on Disk 123--FIG. 5
Each Disk 123 is structured in such a fashion that it is possible to locate data on Disk 123; if there is more than one Disk 123 in a Disk Drive 119, the set of Disks 123 is structured so that it is possible to locate data on a single Disk 123 of the set. FIG. 5 shows this structure for both a single Disk 123 and a Disk Set 507. Disk 123 contains a large number of concentric Tracks 501; the disk is further divided radially into a large number of Sectors 503; the portion of a Track 501 in a given Sector 503 is Track Sector 504. A Track Sector 504 containing a given sequence of Disk Codes 128 making up Data Item 502 may thus be located by specifying a Track 501(a) and a Sector 503(f). That Track Sector 504 may be termed Track Sector
504(a,f).
DDCA 121 performs a read or write operation on Track Sector 504(a,f) in two steps. DDCA 121 first performs a seek operation, in which it positions Head 125 over the Track 501(a). When the seek operation is complete, DDCA 125 locates Sector
503(f) by counting Sectors 503. When Head 125 passes over the beginning of Sector(0) 503, Disk Drive 119 generates an index pulse; as Head 125 passes over the beginning of each succeeding Sector 503, Disk Drive 119 generates a sector pulse. By counting sector pulses after receiving an index pulse, DDCA 121 can locate Sector 503(f). When Sector 503(f) has been located, Head 125 performs a read or write operation in that Sector 503. Since Head 125 is over Track 501(a), it is Track Sectore 504(a,f) which is read or written. In the read operation, the entire contents of Track Sector 504(a,f) are read; in the write operation, the entire contents of Track Sector 504(a,f) are written. In the case of the read operation, the data in Track Sector
504(a,f) is transferred to Controller 107 and from there to Host Processor 101. The program which caused Host Processor 101 to fetch Data Item 502 from Disk Drive 119 knows the relative location of Data Item 502 in the data fetched from Track Sector
504(a,f), and can therefore locate Data Item 502 in that data.
In Disk Set 507, corresponding Tracks 501 on surfaces of Disks 123 in Disk Set 507 make up a Cylinder 509. Thus, Track 501(a) on each of Disks 123 belongs to Cylinder 509(a). Each surface of each Disk 123 has a separate Head 125, and thus, the location of a given Track Sector 504 in Disk Set 507 may be specified by means of a sector number, a cylinder number, and a head number. For example, Track Sector 504(a,f) might be on the top surface of the third disk in Disk Set 507. In that case, it would be on Cylinder 509(a) and Disk Sector 503(f) and would be read or written by Head 125(4). Its location could therefore be specified as Track Sector 504(a,f,4) In Disk Set 507, the seek operation consists of moving all of Heads 125 in Disk Set 507
to the specified Cylinder 509. In the read and write operations, Sectors 503 are counted as described above until the specified Sector 503 is reached, and then Head 125 for Disk 123 containing the required Track Sector 504 is activated as required for the read or write operation. Certain Tracks 501 on Disk Set 507 are diagnostic tracks. These tracks are not available for the storage of data, but are used solely by DDCA 121 for diagnostic operations.
2 Overview of Structure and Operation of Disk Drive Control Apparatus 121 of the Present Invention
Having thus provided an overview of the structure and operation of Digital Data Processing System with Disk Drives 100, the discussion proceeds to an overview of the structure and operation of Disk Drive Control Apparatus 121 of the Present Invention.
2.1 Structure of Disk Drive Control Apparatus 121--FIG. 6
FIG. 6 provides an overview of the structure of Disk Drive Control Apparatus (DDCA) 121 of the present invention. DDCA 121's components may be divided into four major functional groups: Controller Interface 603, Apparatus Control 609, R/W Processor 611, and Data Transfer Apparatus 605. Controller Interface 603 receives Data Codes 109 and Disk Drive Instructions 129 from Controller 107 via via Controller-Disk Bus 127 and provides Data Codes 109 and Status Codes 131 via Controller-Disk Bus
127 to Controller 107. Data Transfer Apparatus 605 transfers Data Codes 109 and part of Disk Drive Instructions 129 between components of DDCA 121. R/W Processor 611 performs the read and write operations. Converter 133 converts Disk Codes 128 to Data Codes 109 and vice-versa under control of R/W Processor 611.
Apparatus Control 609 controls operation of the other components of DDCA 121 in response to parts of Disk Drive Instructions 129. Control is provided in two different fashions: First, Apparatus Control 609 provides Flow Control Instructions 615
to Data Transfer Apparatus 605 and to R/W Processor 611. Second, Apparatus Control 609 provides status signals via DDCA Status Signals (DDCAS) 620 to all components of DDCA 121.
Data Transfer Apparatus 605 responds to two different kinds of Flow Control Instructions 615: Data Transfer Flow Control Instructions 615, which are responded to only by Data Transfer Apparatus 605, and Read-Write Flow Control Instructions 615, which are responded to by both Data Transfer apparatus 605 and Read-Write Processor 611. The effect of both kinds of Flow Control Instructions 615 on Data Transfer Apparatus 605 is to determine the direction in which Data Transfer Apparatus 605
transfers data. Transfer may be between Controller Interface 603 and Apparatus Control 609, between Controller Interface 603 and R/W Processor 611, and between Apparatus Control 609 and R/W Processor 611.
R/W Processor 611 responds to Read-Write Flow Control Instructions 615 by reading Disk Codes 128 from Disk 123 and converting them to Data Codes 109, performing the reverse operation, and by performing certain diagnostic operations. Data Transfer Apparatus 605 responds to Read-Write Flow Control Instructions 615 by transferring Data Codes 109 in the direction required for the operation being performed by Read-Write Processor 611. Controller Interface 603 responds to certain signals of DDCAS 620 by providing Status 131 to Controller 107.
Operation of DDCA 121 may in general be described as follows: when DDCA 121 is idling, Data Transfer Apparatus 605 is set to transfer data between Controller Interface 603 and Apparatus Control 609. On receipt of a Disk Drive Instruction 129 in Controller Interface 603, Data Transfer Apparatus 605 receives a part of that Disk Drive Instruction 129 and provides a signal in DDCAS 620 to Apparatus Control 609. Apparatus Control 609 responds to the signal by receiving the portion of Disk Drive Instruction 129 from Data Transfer Apparatus 605. Apparatus Control 609 then responds to the portion of the instruction by providing Flow Control Instructions 615 to Data Transfer Apparatus 605 and R/W Processor 611 and DDCAS 620 to Controller Interface
603 as required to carry out the operation.
2.1.1 Controller Interface 603: Turning now to the components of DDCA 121, Controller Interface 603 receives inputs from and provides outputs to Controller-Disk Bus 127. In a present embodiment of DDCA 121, Controller Interface 603 may be connected to two different Controller-Disk Buses 127, designated here by 127(1) and 127(2), and may thus provide outputs to two different Controllers 107. In other embodiments of DDCA 121, Controller Interface 603 may provide connections for larger or smaller number of Controller-Disk Buses 127. As will be explained in more detail hereinafter, Controller Interface 603 further contains logic for determining the order in which the Controllers 107 connected to Controller Interface 603 shall use Disk Drive 119.
Inputs from Controller-Disk Bus 127 include the following:
(1) Data Codes 109 to be stored on Disk Drive 119 containing DDCA 121.
(2) Disk Instructions 123, which in the present invention include
(a) Control Instructions 641 to DDCA 121.
(b) Operational Instructions 643 to DDCA 121.
(c) Disk Control Signals 645 to DDCA 121.
Each Control Instruction 641 places DDCA 121 in one of a set of states. As will be explained in more detail below, DDCA 121 responds to certain Control Instructions 641 at any time and to others only when Controller 107 has the use of Disk Drive
119. I these latter states, DDCA 121 performs operations in response to Operational Instructions 643; during these operations, Disk Control Signals 645 coordinate the activity of DDCA 121 and Controller 107. In a present embodiment, Control Instructions 641 contain 3 bits and Operational Instructions 643 contain one or more 8-bit syllables.
Outputs include:
(1) Data Codes 109 from Disk Drive 119 containing DDCA 121 or from DDCA 121.
(2) Status 133, which in the present invention includes
(a) Immediate Status Codes 647 from which Controller 107 may determine the current status of Disk Drive 121;
(b) Bus Diagnostic Codes 650, from which Controller 107 may determine whether Controller-Disk Bus 127 is functioning properly.
(c) Interrupt Signals 649 to Controller 107.
(d) Controller Control signals 648.
Data Codes 109 may represent either data stored on Disk Set 507 or diagnostic data produced by DDCA 121 in response to certain Operational Instructions 643; Immediate Status Codes 647 are are produced from DDCAS 620 received from Apparatus Control 609 and are output in response to an Immediate Status Control Instruction 641. Bus Diagnostic Codes 650 are output only when Controller-Disk Bus 127 is in diagnostic mode. Interrupt Signals 649 are produced by Controller Interface 603 in response to signals which Apparatus Control 609 provides via DDCAS 620 when DDCA 121 requires intervention by Controller 107 to continue an operation. Controller Control Signals 648 serve to coordinate operation of DDCA 121 and Controller 107 when Controller 107 is receiving data from DDCA 121.
2.1.2 Data Transfer Apparatus 605: Data Transfer Apparatus 605 transfers Data Codes 109 and Operational Instructions 643 between the components of DDCA 121. During execution of an Operational Instruction 643, direction of data transfer by Data Transfer Apparatus 605 is determined by Flow Control Instructions 615 provided by Apparatus Control 615.
Data transferred by Data Transfer Apparatus 605 is input to and output from FIFO 607. FIFO 607 is a first-in, first-out buffer which may be simultaneously written to and read from. Data written to FIFO 607 is written to the tail of the queue contained in the buffer; data read from FIFO 607 is read from the head of the queue. FIFO 607 provides signals to Apparatus Control 609 via DDCAS 620 when the queue is empty, contains data, or is full. Data Transfer Apparatus 605 transfers items of data between components of DDCA 121 by placing items received from the source of the data being transferred in the tail of the queue and providing items to the destination of the data being transferred from the head of the queue. For example, during a read operation, Data Transfer Apparatus 605 adds Data Codes 109 received from R/W Processor 611 to the tail of the queue in FIFO 607 and provides Data Codes 109 to Controller Interface 603 from the head of the queue in FIFO 607.
What data is transferred by Data Transfer Apparatus 605 and the sources and destinations of that data depend on Operational Instruction 643 being executed by Apparatus Control 609. As will be explained in more detail hereinafter, Operational Instructions 643 are divided into two broad categories: instructions for normal operations and instructions for diagnostic operations. Execution of both categories of instructions begins with the transfer of syllables of Operational Instruction 643 from Controller Interface 603 to Apparatus Control 609; during execution of a normal read instruction, Data Transfer Apparatus 605 transfers Data Codes 109 from Read-Write Processor 611 to Controller Interface 603; during execution of a normal write instruction, the reverse transfer occurs. During diagnostic operations, Data Transfer Apparatus 605 may transfer Data Codes 109 between Controller Interface 603 and Apparatus Control 609 or between R/W Processor 611 and Apparatus Control 609. Numbers attached to branches of Data Transfer Apparatus 605 indicate which items go to and from which components.
2.1.3 R/W Processor 611: R/W Processor 611 operates in response to Read-Write Flow Control Instructions 615 from Apparatus Control 609. In normal operation and most diagnostic operations, R/W Processor 611 reads data from Disk 123 and provides it to Data Transfer Apparatus 605 or receives data from Data Transfer Apparatus 605 and writes it to Disk 123. In certain diagnostic operations, R/W Processor 611 receives data from Data Transfer Apparatus 605, processes it, and returns it to Data Transfer Apparatus 605 without writing to or reading from Disk 123. Status of R/W Processor 611 is part of DDCAS 620.
All operations of R/W Processor 611 involve conversion of of Data Codes 109 to Disk Codes 128 or vice-versa. These conversions are performed by Converter 133, which operates under control of R/W Processor 611. Operation of R/W Processor 611 is synchronized with rotation of Disk Set 507 by means of RWCK 629, which provides a clock signal responsive to speed of rotation of Disk 123, Sector Pulse Signal (SPS) 631, which is received from Disk 123 at the beginning of a sector, and RWCTL 630, which causes Head 125 selected by Apparatus Control 609 to perform either a read or a write operation. Apparatus Control 609. In the write operation, R/W Processor 611 detects the beginning of Track Sector 504 which is to receive the data, obtains Data Codes
109 representing the data from the head of the queue in FIFO 607, converts the Data Codes 109 to Disk Codes 128 in Converter 133, and provides Disk Codes 128 to Head 125. In the read operation, the reverse occurs. The data, converted from Disk Codes
128 to Data Codes 109 by Converter 133, is placed at the tail of the queue in FIFO 607.
2.1.4 Apparatus Control 609: In response to Operational Instructions 643 from Controller 107. Apparatus Control 609 directly controls Servo Mechanism 124 and provides Flow Control Instructions 615 to Data Transfer Apparatus 605 and R/W Processor
611 via FCI Bus 616. Direct control of Servo Mechanism 124 is achieved by means of HPS Signals 639. In response to these signals, Servo Mechanism 124 moves Heads 125 to move to Cylinder 509 and select Head 125 as specified in the Operational Instruction 643 being executed. Apparatus Control 609 further detects the index pulse from Sector 503(0) and counts Sector Pulse Signals (SPS) 631 generated each time Head 125 passes over the beginning of a Track Sector 504. Before Track Sector 504
specified in Operational Instruction 643 is reached, Apparatus Control 609 provides Flow Control Instructions 615 to Data Transfer Apparatus 605 and R/W Processor 611 at the proper time to perform the operations specified by Operational Instruction 643.
Apparatus Control 609 further receives DDCAS 620 from components of DDCA 121 and provides DDCAS 620 to components of DDCA 121. By means of DDCAS 620, Apparatus Control 609 may monitor the condition of DDCA 112, provide Status Codes 647 to Controller Interface 603 for output to Controller 107, and reset state in components of DDCA 112. Apparatus Control 609 in a present embodiment also provides SET SYNC Signal 651 to R/W Processor 611. As will be explained in detail later, that signal ensures that Read/Write Processor 611 will always return some data from Track Sector 504 being read from or written to to Controller 107. Finally, Apparatus Control 609 executes diagnostic Operational Instructions 643 using components of DDCA 121.
2.1.5 Coordination of Operation of Components of DDCA 121: While Apparatus Control 609 provides overall control of DDCA 121, Apparatus Control 609 cannot respond rapidly enough to provide coordination of components of DDCA 121 during data tansfer operations on Disk Drive 119. Hence, the type of operation performed by the components and the direction of data transfer are determined by Apparatus Control 609, but the actual transfer is regulated by means of signals passing directly between the components. Interface-FIFO Control (INTFCTL) 623 regulates transfer of data between Controller Interface 603 and FIFO 607; R/W-FIFO Control (R/WFCTL) 625 performs the analogous function for FIFO 607 and R/W Processor 611; INT/RWCTL 627, permits direct coordination between R/W Processor 611 and Controller Interface 603; AFCTL 621, finally, allows Apparatus Control 609 to directly control direction of data transfer by Data Transfer Apparatus 605 during operation of Apparatus Control 609.
2.2 Overview of Operation of DDCA 121
Operation of DDCA 121 is determined by Control Instructions 641, Operational Instructions 643, and signals from Controller 107 and by signals produced by Track Sector 504 on Disk 123. Controller 107 further issues Control Instructions 641 and Operational Instructions 643 in response to Immediate Status Codes 647; thus, before discussing operation of DDCA 121, it is necessary to explain the structure of Controller-Disk Bus 127 and Track Sector 504 and the meaning of Immediate Status Codes 647
in a present embodiment of DDCA 121. These explanations are however of a purely exemplary nature; other embodiments of DDCA 121 may employ Controller-Disk Buses 127 having different structures, may respond to differently-structured Track Sectors 504, and may return different Immediate Status Codes 647.
2.2.1 Structure of Controller-Disk Bus 127--FIG. 7: FIG. 7 shows the structure of Controller-Disk Bus 127. Unless otherwise specified, each line in FIG. 8 carries 1 bit. The direction of flow is specified by the words Controller 107 at the left of the drawing and Disk Drive 119 at the right and the letters D and R, indicating driving and receiving. Thus, Dev Selectl 707 is always driven by Controller 107 and received by Disk Drive 119, while while C/D Parity 703 may be driven or received by either Controller 107 or Disk Drive 119.
Beginning with C/D Bus 701, C/D Bus 701 is 8 bits wide. It carries four kinds of data:
(1) syllables of Operational Instructions 643 to DDCA 121;
(2) Data Codes 109 to and from DDCA 121;
(3) Immediate Status Codes 647 from DDCA 121;
(4) Bus Diagnostic Codes 650 from DDCA 121.
Whether DDCA 121 is to treat data received on C/D Bus 701 as a syllable of an Operational Instruction 643 is determined by a signal on C/D MD SEL 723 from Control 107. C/D Parity 703 carries Parity Code 205 for Data Codes 109 and Operational Instructions 643 transferred via C/D Bus 701.
CONTG Bus 705 is three bits wide. It carries Control Instructions 641 from Controller 107 to DDCA 121. DDCA 121 responds to these Control Instructions 641 only when C/D MD SEL 723 indicates a command. For the present discussion, only the following Control Instructions 641 are of interest:
(1) Reserve, which reserves Disk Drive 119 for Controller 107 connected to Controller-Disk Bus 127; Controller 107 may provide a Reserve Control Instruction 641 to Disk Drive 119 whenever it is not using Disk Drive 119.
(2) Initiate Sequence In, which initiates an operation in which Disk Drive 119 provides data from Apparatus Control 609 to Controller 107. Controller 107 can only provide an Initiate Sequence In Control Instruction 641 after it has reserved Disk Drive 119.
(3) Initiate Sequence Out, which initiates an operation in Controller 107 provides data including Operational Instructions 643 to Apparatus Control 609. Controller 107 can only provide an Initiate Sequence Out Control Instruction 641 after it has reserved Disk Drive 119.
(4) Immediate Status, to which Disk Drive 119 responds by outputting an Immediate Status Code 647 on C/D Bus 701 mation to Controller 107 connected to Controller-Disk Bus 127; Controller 107 may provide an Immediate Status instruction at any time to Disk Drive 119.
(5) Release, which releases Disk Drive 119 for use by another Controller 107 connected to Controller-Disk Bus 127. Release has an effect only if Controller 107 had previously reserved Disk Drive 119. DEV SELECT1 707 and DEV SELECT2 709 together carry a two-bit code which selects one of the four Disk Drives 119 which may be connected to Controller 107 in a present embodiment of System 100. A given Disk Drive 119 does not respond to Controller-Disk Bus 127 unless the two-bit code specifes that Disk Drive 119.
CON STB/ACK-RET BYT STB 711 carries a signal from Controller 107 to DDCA 121 indicating that data from Controller 107 is present on C/D Bus 701. DISK STB/ACK-BYT STB carries a signal from DDCA 121 to Controller 107 indicating that data from Disk Drive 119 is present on C/D Bus 701. DEV0 INT REQ through DEV3 INT REQ are interrupt lines for each of the four Disk Drives 119 attached to Controller-Disk Bus 127. DDCA 121 in a given Disk Drive 119 provides interrupts to Controller 107 only on DEV INT REQ corresponding to DDCA 121's Disk Drive 119. C/D MD SEL 723 was explained in connection with C/D Bus 701 above; HDER/Data 725 is a signal from Controller 107 to DDCA 121 indicating whether DDCA 121 may read from or write to Sector Data 811.
Relating the above lines to FIG. 6, Disk Control Signals 645 include DEV SELECT1 707, DEV SELECT2 709, CON STB/ACK 711, C/D MD SEL 723, and HDER/DATA 725. Controller Control Signals 648 include DISK STB/ACK 713, DEV0 INT REQ 716, DEV1 INT REQ
719, DEV2 INT REQ 719, and DEV3 INT REQ 721.
2.2.2 Detailed Structure of Track Sector 504--FIG. 8: FIG. 8 shows the structure of a single Track Sector 504. Track Sector 504 is preceded by Sector Data 811 from the preceding Track Sector 504. Then comes Sector Splice 813, which separates Track Sector 504 from the preceding Track Sector 504. SPS 631 is produced as Heads 125 pass over Sector Splice 813. Sector Preamble 818 contains Disk Codes 128 which specify the beginning of a Track Sector 504. Header Preamble 817 contains Disk Codes
12 which specify that the following item is Header 821, containing information used to determine whether Track Sector 504 is defective. In a present embodiment, the information contained in Header 821 includes the numbers of Head 105, Disk Cylinder 509, and Disk Sector 503 which define the location of Track Sector 504 and a checksum code. Header 821 further contains Sync Mark 819, which contains a synchronization code used by DDCA 121 to synchronize its operations. Data Preamble 818 contains Disk Codes 128 which specify that the following items are data, and Sector Data 811 contains Disk Codes 128 representing data stored in Sector Data 811. Sector Data 811, like Header 821, begins with a Sync Mark 819.
2.2.3 Immediate Status Codes 647 for DDCA 121: In a present embodiment of DDCA 121, DDCA 121 returns an Immediate Status Code 647 to Controller 107 via C/D Bus 701 in response to an Immediate Status Control Instruction 641 on CONTG Bus 705 and a code on DEV SELECT1 707 and DEV SELECT2 specifying Disk Drive 119 containing DDCA 121. The Immediate Status Control Instruction 641 may be issued at any time by Controller 107, and Controller 107 may thus determine the status of Disk Drive 119 even when another controller 107 is using it.
Immediate Status Code 647 contains 8 bits, which specify the following:
Bits 0 and 1: Device code, a 2-bit code specifying which Disk Drive 119 is returning the status code.
Bits 2 and 3: Reserve code, a 2-bit code specifying which Controller 107, if any, has reserved Disk Drive 119.
Bit 4: Busy, specifying whether Disk Drive 119 is busy, i.e., presently carrying out an operation.
Bit 5: Ready, specifying that Disk Drive 119 has successfully powered up or been reset and is again ready to perform operations.
Bit 6: Error: Disk Drive 119 is presently not in a condition to perform operations.
Bit 7: Transfer failed: the last tranfer of data between Disk Drive 119 and Controller 107 failed.
The current values of the bits in Immediate Status Codes 647 are derived from signals in DDCAS 620.
2.2.4 Operation of DDCA 121: The following discussion of the operation of DDCA 121 will first describe how Controller 107 gains access to Disk Drive 119 containing DDCA 121, will then describe the New Block Operation, in which DDCA 121 transfers Data Codes 109 to and from Disk Set 507, and will finally describe diagnostic operations performed by DDCA 121.
2.2.4.1 Using Disk Drive 119: As previously described, in a present embodiment of System 100, Controller 107 may be connected to as many as 4 Disk Drives 119. When Controller 107 wishes to use one of the four, it places C/D MD SEL 723 in the state specifying a command, specifies the desired Disk Drive 119 on DEV SELECT1 707 and DEV SELECT2 709, and places an an Immediate Status Control Instruction 641 on CONTG Bus 705. If the specified Disk Drive 119 is in an operational condition, as indicated by bits 6 and 7 of Immediate Status 647, Controller 107 places a Reserve Control Instruction 641 on CONTG Bus 705. Controller Interface 603 of DDCA 121 for Disk Drive 119(a) responds to the Reserve Control Instruction 641 with an interrupt on the device interrupt line of DEVO INT REQ 715 through DEV3 INT REQ 721 corresponding to Disk Drive 119(a). In the following discussion, the device interrupt line corresponding to Disk Drive 119(a) will be termed DEV(a) INT REQ. On receipt of the interrupt signal on DEV(a) INT REQ, Controller 107 issues an Immediate Status Control Instruction 641 to determine why the interrupt from Disk Drive 119(a) occurred. If examination of the reserve code in the first two bits of Status Code 647 returned to Controller 107 in response to Immediate Status Control Instruction 641 reveals that Disk Drive 119(a) is now reserved for Controller 107, Controller 107 may initiate an operation involving an Operational Instruction 643.
Some delay may ensue between the time Reserve Control Instruction 641 is issued to Disk Drive 119(a) and the time that an interrupt occurs on DEV(a) INT REQ. This is a consequence of the fact that Disk Drive 119(a) may be shared by two Controllers 107. If Disk Drive 119(a) is serving neither Controller 107 when Reserve Control Instruction 641 is issued, the interrupt signal will occur immediately; if Disk Drive 119(a) is serving the other Controller 107, the effect of the reserve operation is suspended until the other Controller 107 is finished and the interrupt signal will not occur until then.
2.2.4.2 Execution of Operational Instructions 643 by DDCA 121: After receiving the interrupt, Controller 107 specifies Disk Drive 119(a) on DEV SELECT1 707 and DEV SELECT2 709, places C/D MD SEL 723 in command mode, places an Initiate Sequence Out Control Instruction 641 on CONTG Bus 705, depending on the direction of data transfer, and places the first syllable of Operational Instruction 643 specifying the desired operation of DDCA 121 on C/D Bus 701.
In response to the above signals, Controller Interface 603 provides the first syllable of Operational Instruction 643 to Data Transfer Apparatus 605. When Apparatus Control 609 is not executing an Operational Instruction 643, it executes an idle loop and Data Transfer Apparatus 605 is set to transfer the data it receives from Controller 107 to Apparatus Control 609. On each iteration of the idle loop, Apparatus Control 609 checks DDCAS 620 to see whether FIFO 607 has received data. When FIFO
607 receives the first syllable of Operational Instruction 643, FIFO 607 provides a signal indicating that it has data to DDCAS 620 and Apparatus Control 609 by providing signals via ACFCTL 621 which cause FIFO 607 to output the data to Apparatus Control
609. Controller 107 continues transferring syllables of Operational Instruction 643 to DDCA 121 until it has transferred all of the syllables. Apparatus Control 609 receives Operational Instruction 643 and begins to execute it. When DDCA 121 is ready to perform the operation specified in Operational Instruction 643, it provides a signal on DEV(a) INT REQ to Controller 107. If the operation involves the transfer of Data Codes 109 between Disk 123 and Controller 107, Controller 107 changes C/D MD SEL
723 from command to data mode when Controller 107 is ready to transfer or receive data and the data transfer begins. At the end of the transfer, Controller 107 changes C/D MD SEL from data to command mode, signalling thereby to DDCA 121 that the operation is over. If the operation involves transfer of data between Controller 107 and DDCA 121 instead of Disk 123, C/D MD SEL remains in command mode and Controller 107 provides an Initiate Sequence Out Control Instruction 641 during transfers from Controller 107 to DDCA 121 and an Initiate Sequence In Control Instruction 641 during transfers from DDCA 121 to Controller 107. If Controller 107 has further operations to perform, it issues other Operational Instructions 643 as described above; when it has finished all of the operations, it provides a Release Control Instruction 641 to DDCA 121.
The Operational Instruction 643 used to transfer Data Codes 109 to or from Disk Drive 119 is the New Block Instruction; other Operational Instructions 643 are solely diagnostic. In the following, first the New Block Operational Instruction 643
and then the Diagnostic Operational Instructions 643 will be described.
2.2.4.2.1 Operation of DDCA 121 under Control of New Block Operational Instruction 643: Controller 107 issues a New Block Operational Instruction 643 (henceforth termed New Block) when Data Codes 109 are to be transferred to or from Disk 119(a). An Initiate Sequence Out Control Instruction 641 must be issued with New Block, C/D MD SEL 723 must specify a command, and HDER/DATA line 725 must specify a header.
New Block consists of four eight-bit syllables:
(1) The first syllable contains a four-bit opcode and the four most significant bits of the cylinder address specifying Cylinder 509 from which or to which data is to be written. The opcode specifies one of four operations:
A seek only operation which locates only Cylinder 609;
A read operation
A write opeation
A format operation which writes only Headers 817.
(2) The second syllable contains the 8 least significant bits of the cylinder address.
(3) The third syllable is the number of Track Sector 504 at which the read or write operation is to begin.
(4) In the fourth operand the first four bits control current in Head 125; the second four bits selects Head 125 which is to perform the read or write operation.
In the following, only the read operation will be discussed in detail; the same general principles apply to all operations performed by NEW BLOCK and the other operations will be understood by those of ordinary skill in the art from the discussion of the read operation.
2.2.4.2.1.1 NEW BLOCK Specifying a Read Operation: Apparatus Control 609 responds to NEW BLOCK specifying a read operation as follows: first, it generates signals via HPS 639 which cause Heads 125 to seek Cylinder 509 specified by the cylinder address in New Block; then it activates Head 125 specified by the last 4 bits of the instruction's last syllable. When the seek operation is finished, Apparatus Control 609 provides signals in DDCAS 620 to Controller Interface 603 to which Controller Interface 603 reaponsd by setting Status Code 647 to indicated that the seek is complete and generating an interrupt signal on the line of DEV INT REQ lines 715-721 corresponding to Disk Drive 119 and waits for Controller 107 to indicate that it is ready to send or receive Data Codes 109 by changing the state of C/D MD SEL 723 to indicate data.
In response to the change of state of C/D MD SEL 723, Apparatus Control 609 waits until a sector counter internal to Apparatus Control 609 indicates that indicates that the next Track Sector 504 will be the one specified in New Block. At that point, Apparatus Control 609 outputs a Read-Write Flow Control Instruction 615 specifying that R/W Processor 611 perform a read operation and that Data Transfer Apparatus 605 transfer data from R/W Processor 611 to Controller Interface 603. Thus, when R/W Processor 611 begins performing the read operation, FIFO 607 will receive Data Codes 109 from R/W Processor 611 in response to signals on R/W FCTL 625 and output them to Controller Interface 603 in response to signals on INTFCTL 623.
On the next SPS 631, specifying the beginning of the desired Track Sector 504, R/W Processor 611 begins reading Disk Codes 128. When it detects Disk Code 128 specifying Sync Mark 819, it outputs an instruction to Converter 133 to begin converting Disk Codes 128 to Data Codes 109. These codes are then output to FIFO 607, which receives them from R/W Processor 611 and outputs them to Controller Interface 603 in response to signals on R/W FCTL 625. Controller Interface 603 in turn outputs them to Controller 107 together with signals on DISK STB/ACK-BYT STB 713. The first Disk Codes 128 read by R/W Processor 611 belong to Header 821. When Controller 107 receives these Disk Codes 128, Controller Processor 117 performs a header compare operation to check the validity of the header. In the header compare operation, Controller 107 compares the values specifying Head 105, Cylinder 509, and Sector 503 received from Header 821 with the expected values for Track Sector 504 being read. If the values are the same and the checksum code is correct, Header 821 sets HDER/DATA Line 725 to indicate that Disk Drive 119 may begin reading Sector Data 811. If HDER/DATA Line 725 is not so set, R/W Processor 611 suspends the read operation, i.e, it does not respond to Sync Mark 819 preceding Sector Data 811. If a sequence of more than one Track Sector 504 is being read, R/W Processor 611 does respond to Sync Mark 819 preceding Header 821 in the next Track Sector 504 as described above. If that Header 821 is valid, data in that Track Sector 504 is read as described below.
There exists, of course, the possibility that Sync Mark 819 preceding Header 821 has been destroyed. Since R/W Processor 611 only begins transferring Header 821 in response to Sync Mark 819, the result of such a situation would be that Controller 107 would never receive data from Disk Drive 119 and could never perform the header compare operation. To prevent such an eventuality, Apparatus Control 609 provides SET SYNC 651 to R/W Processor 611 after R/W Processor 611 normally has responded to Sync Mark 819. If Sync Mark 819 was present, SET SYNC 651 has no effect; if it was not, R/W Processor 611 responds to SET SYNC 651 as described for Sync Mark 819; however, since SET SYNC 651 is provided after Sync Mark 819 would have been detected, Controller 107 receives data from Data Preamble 825 and Sector Data 811 instead of Header 821. Since the data received was not from Header 821, the header compare operation fails, with the result described above.
If Controller 107 changes the state of HDER/DATA 725, R/W Processor 611 responds to Sync Mark 819 preceding Sector Data 111 and the data in Sector Data 811 is converted and output to Controller 107 in the manner just described. As Converter 611
outputs Data Codes 109, R/W Processor 611 counts bytes. When all of the bytes in Track Sector 504 have been output, the read operation ceases and R/W Processor 611 waits for Controller 107 to change the state of HDER/DATA 725 to indicate header. After it does so, R/W Processor 611 begins the read operation on the next Track Sector 504 as just described. If Controller 107 wishes to terminate the read operation, it sets C/D MD SEL 723 to indicate a command and provides the next Operational Instruction
643.
2.2.4.2.1.2 NEW BLOCK Specifying a Write Operation: In the write operation, Header 821 of the desired Track Sector 504 is read and checked by Controller 107, and then if it is valid, Controller 107 provides Data Codes 107 to be written to Sector Data 811. NEW BLOCK specifying a write operation is accompanied by an Initiate Sequence Out Control Instruction 641 specifying that Data Codes 109 will be output to Controller 107. After receiving the NEW BLOCK instruction, Apparatus Control 609 at first proceeds as described above, locating the specified Cylinder 509, activating the proper Head 125, outputting a signal in DDCAS 620 specifying an interrupt to Controller Interface 603, and waiting for C/D MD SEL 723 to indicate data.
However, the Read-Write Flow Control Instruction 615 output by Apparatus Control 609 specifies that Data Transfer Apparatus 605 is to transfer Data Codes 109 from R/W Processor 611 to Controller Interface 603 until HDR/DATA 725 indicates that data may be transferred and then transfer Data Codes 109 from Controller Interface 603 to R/W Processor 611 and that R/W Processor is to respond to Sync Mark 819 preceding Header 821 by converting Disk Codes 128 in Header 821 to Data Codes 109 and outputting them to Data Transfer Apparatus 605, and then, if HDR/DATA 725 indicates that data may be transferred, to respond to Sync Mark 819 preceding Sector Data 811 by receiving Data Codes 109 from Data Transfer Apparatus 605, converting them to Disk Codes 128, and writing the Disk Codes 128 in Sector Data 811.
Thus, Header 821 is transferred to Controller 107, and if the Header Compare operation succeeds and Controller 107 provides Data Codes 109, Data Transfer Apparatus 605 transfers Data Codes 109 to R/W Processor 611, and R/W Processor 611 converts them and writes the resulting Disk Codes 128 to Sector Data 811. If Controller 107 finds that Header 821 is invalid, the write operation is suspended as previously described. During the write operation, R/W Processor 611 counts bytes, and ceases writing when it has written all of the data which Sector 811 may contain. If the next sequential Track Sector 504 is to be written, the operation continues as described for the read operation. The operation ends when Controller 107 again places C/D MD SEL 723 in command mode.
2.2.4.2.1.3 Other NEW BLOCK Operations: When the first byte of the NEW BLOCK instruction specifies seek only, Apparatus Control 609 merely locates Track 509 specified in the instruction, and does not emit a Flow Control Instruction 615 to R/W Processor 611 and Data Transfer Apparatus 605.
When NEW BLOCK specifies a format operation, Apparatus Control 609 emits a Read-Write Flow Control Instruction 615 causing Data Transfer Apparatus 605 to transfer Data Codes 109 for Headers 821 from Controller Interface 603 to FIFO 607 and from there to R/W Processor 611 and R/W Processor 611 to cause Converter 133 to convert Data Codes 109 to Headers 821 and output them at the proper time for writing Header 821 in Track Sector 504 to Heads 125.
2.2.4.3 Diagnostic Operations Performed by DDCA 121: DDCA 121 executes diagnostic Operational Instructions 643; in addition, DDCA 121 performs internal diagnostic operations in response to diagnostic Flow Control Instructions 615 provided by Apparatus Control 609. The following discussion provides overviews of these operations.
The first diagnostic Operational Instructions 643 are SET DIAGNOSTIC MODE and RESET DIAGNOSTIC Mode. These Operational Instructions 643 are used to prevent accidental execution of NEW BLOCK specifying a format operation. Apparatus Control 609
responds to NEW BLOCK specifying a format operation only when it has received a SET DIAGNOSTIC MODE instruction and not yet received a RESET DIAGNOSTIC MODE instruction.
The diagnostic Operational Instructions 643 other than SET and RESET DIAGNOSTIC MOD fall into two groups: those which allow Apparatus Control 609 to "exercise" DDCA 121 and those which allow Apparatus Control 609 to set and report back the state of DDCA 121.
The first group includes a pair of Operational Instructions 643 which allow data to be loaded into or retrieved from Apparatus Control 609. The data is transferred via C/D Bus 701 between Controller 107 and Disk Drive 119 and between Controller Interface 603 and Apparatus Control 609 via Data Transfer Apparatus 605. During these transfers, C/D MD SEL 723 specifies a command. If the transfer is from Controller 107 to Apparatus Control 609, an Initiate Sequence Out Control Instruction 641 must be on CONTG Bus 703 during the transfer; if the transfer is in the other direction, an Initiate Sequence In Control Instruction 641 must be on CONTG Bus 703. The first group further includes an Operational Instruction 643 which allows Apparatus Control
609 to execute a specified diagnostic program. Using this first group of instructions, special diagnostic programs may be provided to Apparatus Control 609 from Controller 107 and the results of operation of these programs may be returned to Controller
107.
The second group includes instructions to which Apparatus Control 609 responds by providing a Data Flow Instruction 615 causing Data Transfer Apparatus 605 to transfer data from Apparatus Control 609 via FIFO 607 to Controller Interface 603 and then outputting the contents of status registers in Apparatus Control 609 to Data Transfer Apparatus 605. Another such instruction specifies that Apparatus Control 609 is to read an error report stored in Apparatus Control 609 or on Disk 123 to Controller 107. Finally, Apparatus Control 609 responds to the SOFT RESET Operational Instruction 643 by providing DDCAS 620 to components of DDCA 121 which reset component state in preparation for a new attempt to operate Disk Drive 119 after an error.
Under control of Diagnostic Data Transfer Flow Control Instructions 615, Data Transfer Apparatus 605 transfers data between Apparatus Control 609 and R/W Processor 611 and R/W Processor 611 performs special diagnostic operations including read and write operations involving only Headers 821 and a write-read operation using data paths internal to R/W Processor 611.
As may be seen from the above, diagnostic functions are as much a part of DDCA 121 as the read function and the write function. Diagnostics in DDCA 121 further use the same components as the read and write operations. Data Transfer Apparatus
605 provides paths and storage for diagnostic data and instructions in the same way that it provides paths for ordinary data and instructions, and Converter 133 processes Data Codes 109 and Disk Codes 128 in diagnostic operations in the same fashion as it does in ordinary operations.
2.2.5 Hierarchical Organization of DDCA 121--FIG. 8: As shown by the preceding description of the operation of DDCA 121, control of components of DDCA 121 is hierarchical. FIG. 9 represents the control hierarchy in DDCA 121. In a present embodiment of DDCA 121, there are five levels of control. Control at Level 1 901 is provided by Controller 107 and is exercised by means of Control Signals 645, Control Instructions 641, and Operational Instructions 643 which Controller Interface 603
receives from Controller 107 via Controller-Disk Bus 127. As described above, Controller 107 provides Signals 911 derived from Control Signals 645 and Control Instructions 641 to Data Transfer Apparatus 605 and R/W Processor 611 and passes Operational Instructions 643 to Apparatus Control 609. Control at Level 2 903 is provided by Apparatus Control 609 as it interprets Operational Instructions 631, controls Servo Mechanism 624, and provides Data Flow Instructions 615 to Data Transfer Apparatus 605
and R/W Processor 611. As described above, Apparatus Control 609 outputs Read-Write Flow Control Instructions 615 to R/W Processor 611 and Data Transfer Apparatus 605 in response to SPS 631.
Control at Level 3 905 is provided by Data Transfer Apparatus 605 and R/W Processor 611, operating under control of Data Flow Instructions 615 and Signals 911. Data Transmfer Apparatus 605 responds to Data Flow Instructions 615 and Signals 911
by producing signals directly controlling FIFO 607 and buses in Data Transfer Apparatus 605. R/W Processor 611 responds to Data Flow Instructions 61 and Signals 911 by providing Converter Instructions 913 to Converter 133. Converter 133 thus provides control at Level 4 907. As will be explained in more detail below, upon detecting Sync Mark 819, Converter 133 provides Encode/Decode Instructions 915 to Encoder/Decoder 919 in Converter 133. Converter 133 performs the specified encoding and decoding operations in response to Byte Clock 917. Encoder/Decoder 919 is thus at Level 5 905 of control.
The hierarchical organization just described offers a number of advantages. First, changes within a level of the hierarchy need not affect other levels. For example, Converter Instructions 913 specify only that an encode operation or a decode operation is to be performed, not how it is to be performed. How the operation is to be performed depends on the type of Disk Codes 128 being used in Disk Drive 119, and the implementation of Converter 133 and Enc/Dec 919 is determined by the type of Disk Codes 128 being used. If different Disk Codes 128 are used, Converter 133 and Enc/Dec 919 must be reimplemented, but everything in the control hierarchy above Converter 133 may remain unchanged.
Second, as shown in FIG. 9, the speed with which components of DDCA 121 must respond depends on their level in the hierarchy. Apparatus Control 609 responds only to SPS 631, and therefore need only operate once in the time required for a Track Sector 504 to pass under Head 125. Converter 133 responds to Sync Mark 819, and must therefore employ faster components, and Enc/Dec 919 responds to Byte Clock 917, and must employ the fastest components. In a present embodiment of DDCA 121, all components of DDCA 121 but Converter 133 and Enc/Dec 919 are implemented using relatively slow and inexpensive TTL logic. Converter 133 and Enc/Dec 919 are implemented using fast and expensive ECL logic.
Third, DDCA 121's control hierarchy simplifies diagnostics. As mentioned in the discussion of the operation of DDCA 121, Operational Instructions 643 include diagnostic instructions, Apparatus Control 609 may be programmed to perform further diagnostic operations, and R/W Processor 611 and Data Transfer Apparatus 605 respond to diagnostic Data Flow Instructions 615. If Disk Drive 119 malfunctions, Controller 107 may commence diagnostic operations by providing diagnostic Operational Instructions 643 to Apparatus Control 609 to which Apparatus Control 609 responds by providing state of Disk Drive 119. Depending on what is revealed by that state, Controller 107 may specify execution of diagnostic programs by Apparatus Control 609
which independently exercise Servo Mechanism 624, Data Transfer Apparatus 605, R/W Processor 611, and R/W Processor 611 together with Heads 105 and Disk Set 507. Analysis of the results of these operations allows Controller 107 to determine which components of Disk Drive 119 are malfunctioning.
3 Detailed Implementation of Components of a Preferred Embodiment of DDCA 121
Certain components of a Preferred Embodiment of DDCA 121 which are of particular interest are now discussed in detail. Discussion begins with R/W Processor 611 and then proceeds to Apparatus Control 609, Controller Interface 603, and Data Transfer Apparatus 605.
3.1 Implementation of R/W Processor 611--FIGS. 10-12
FIG. 10 is a detailed block diagram of R/W Processor 11. The major components of R/W Processor 611 are R/W Operational Sequencer 1001 and Converter 723.
3.1.1 R/W Operational Sequencer--FIG. 11: Beginning with R/W Operational Sequencer 1001, this component receives Read-Write Data Flow Instructions 615 from Apparatus Control 609, Signals in INT/RWCTL 627 from Controller Interface 603, Byte Clock Signals 1033 from Converter 133, and SPS 631 from Servo Mechanism 124. R/W Operational Sequencer outputs Converter Instructions 913 to Converter 133, Read Gate Signal 1019 and Write Gate Signal 1021 of RWCTL 630 to Heads 125, and signals via R/W FCTL
625 to Data Transfer Apparatus 605, and thereby controls operations of reading data from Disk 123 and writing data to Disk 123. R/W Operational Sequencer 1001 provides information on status of R/W Processor 611 via RWS 1020 of DDCAS 620 to Apparatus Control 609. Included within R/W Operational Sequencer 1001 is Byte Counter 1002, which is incremented each time a byte is written to or read from Disk 123 and thereby indicates how much of Track Sector 504 being read or written remains to be read or written.
INT/RWCTL 627 include signals derived from C/D MD SEL 723 and HDER/DATA 725 of Controller Disk Bus 127. As previously described, these signals indicate whether DDCA 121 is receiving commands or data, and whether it is transferring Header 821 to Controller 107 or transferring Data Codes 109 to or receiving them from Controller 109. Read-Write Data Flow Instructions 615 responded to by R/W Sequencer 1001 and Data Transfer Apparatus 605 include the following:
(1) a read instruction, to which Data Transfer Apparatus 605 responds by transferring Data Codes 109 from R/W Processor 611 to Controller Interface 603 and R/W Processor 611 responds by first reading Header 821 and then, if HDER/DATA 725
indicates data, Sector Data 811;
(2) a write instruction, to which Data Transfer Apparatus 605 responds by transferring Data Codes 109 from R/W Processor 611 to Controller Interface 603 until HDER/DATA 725 indicates data, and then transferring Data Codes 109 from Controller Interface 603 to R/W Processor 611 and to which R/W Processor 611 responds by first reading Header 821 and then, if HDER/DATA 725 indicates data, writing Sector Data 811;
(3) A format instruction, to which Data Transfer apparatus 605 responds by transferring Data Codes 109 from Controller Interface 603 to R/W Processer 611 and to which R/W Processor 611 responds by writing only Header 821.
(4) a read header operation, to which Data Transfer Apparatus 605 responds by transferring Data Codes 109 from R/W Processor 611 to FIFO 607 and to which R/W Processor 611 responds by reading Header 821 and outputting it to Data Transfer Apparatus 605.
(5) a write header operation, to which Data Transfer Apparatus 605 responds by transferring Data Codes 109 from FIFO 607 to R/W Processor 611 and to which R/W Processor 611 responds by writing Header 821 received from Data Transfer Apparatus 605.
(6) a diagnostic write-read instruction, to which Data Transfer 605 first responds by transferring Data Codes 109 from FIFO 607 to R/W Processor 611 and then from R/W Processor 611 to FIFO 607 and to which R/W Processor 611 responds by converting Data Codes 109 to Disk Codes 128 and then converting these Disk Codes 128 to Data Codes 109 and outputting them to Data Transfer Apparatus 605 without writing them to or reading them from Disk 123,
The first three of these instructions are used in the execution of NEW BLOCK instructions specifying read, write, and format operations; the remaining instructions are used only to perform diagnostic operations.
Turning to outputs of R/W Operational Sequencer 1001, Heads 125 respond to Read Gate Signal 1019 by reading Disk Codes 128; they respond to Write Gate Signal 1021 by writing Disk Codes 128. RWS 1020 signals abnormal conditions in R/W Processor
611 to Apparatus Control 609. Converter Instructions 913 include the following:
(1) Initialize, which initializes ENC/DEC 919 and thereby puts Converter, 133 into the proper state to begin operation.
(2) Search for Sync, to which Converter 133 responds by looking for Sync Mark 819 and commencing operation when it is detected.
(3) Encode Data Codes 109 to Disk Codes 128
(4) Decode Data Codes 109 from Disk Codes 128.
Byte Counter 1002 is implemented in a present embodiment by counters which are reset when R/W Processor 611 begins reading or writing Sector Data 811 and are incremented in response to each Byte Clock Signal 1033 provided by Converter 133. The remaining components of R/W Sequencer 1001 are shown in FIG. 11. They consist of Register 1107, Register 1103, and sequencer logic implemented by means of a first Programmable Logic Array (PLA) 1101 and a second Programmable Logic Array 1105. In a present embodiment, Programmable Logic Arrays 1105 may be field-programmable logic arrays of type 82S100D, manufactured by Signetics Corporation.
Register 1107 receives Flow Control Instructions 615 from Apparatus Control 609 and outputs its contents in response to SPS 631. As previously mentioned, Apparatus Control 609 outputs Flow Control Instructions 615 to which R/W Processor 611
responds at a time such that the next signal on SPS 631 marks the beginning of Track Sector 504 to be read or written. Thus, R/W Sequencer 1001 responds to the output of Register 1107 only at the beginning of Track Sector 504.
PLA 1101 receives bits of the output of Register 1107 which specify whether a read or a write operation is going on and further receives the current byte count from Byte Counter 1002 and its own previous output from Register 1103. In response to these inputs, it provides an output to Register 1103, which provides the output to both PLA 1101 and PLA 1105 in response to Byte Clock Signal 1103. In addition to the inputs from Register 1103, PLA 1105 further receives the entire output of Register
1107 and signals from INT/RWCTL 627. PLA 1105 outputs Converter Instructions 913, Read Gate 1019, Write Gate 1023, R/WFCTL Signals 625 to Data Transfer Apparatus 605, and RWS 1020 in DDCAS 620 to Apparatus Control 609. As may be understood from the arrangement shown in FIG. 10, the values of the outputs depend on which Flow Control Instruction 615 is being executed, whether SPS 631 indicating the beginning of the desired Track Sector 504 has been received, whether C/D MD SEL 723 specifies an Operational Instruction 643 or data, whether HDER/DATA 725 specifies a Header 821 or data, and how many bytes of Data Codes 109 have been read or written. If the combination of inputs to PLA 1105 indicates abnormal operation of R/W Processor 611, PLA
1105 outputs a status signal on RWS 1020.
3.1.2 Converter 723: Turning again to FIG. 10, Converter 133 has two main components: Timing Generator 1003 and Encoder/Decoder 919. Timing Generator 1003 provides Enc/Dec Instructions 915 to Enc/Dec 919, which encodes or decodes Data Codes 109
and Disk Codes 128 as required by the operation being performed by R/W Processor 611. Timing Generator 1003 receives Converter Instructions 913 from R/W Operational Sequencer 1001, a Sync Detected Signal 1035 ween Sync Mark 819 is detected, and R/W Clock Signals from Heads 105, and outputs Byte Clock 1033 to R/W Sequencer 1001 and Enc/Dec Instructions 915 at the proper times to cause Enc/Dec 919 to perform the proper actions.
In a preferred embodiment, Enc/Dec Instructions 915 are combinations of the following signals:
(1) Byte Clk 1033, output at the start of an encoding operation on a byte of Data Codes 109;
(2) Group Clk 1209, output at the start of a decoding operation on a group of Disk Codes 128;
(3) Load Reg 1211, controlling loading of registers in Enc/Dec 919.
(4) Reset 1207, which resets Counter 201 and Enc/Dec 919.
3.1.2.1 Implementation of Timing Generator 1003--FIG. 12: An implementation of Timing Generator 1003 used in a preferred embodiment of R/W Processor 611 is shown in FIG. 12. The components include:
(1) Converter Instruction Decoder 1207, which receives Converter Instructions 913 from R/W Processor 611 and outputs signals decoded from Converter Instructions 913 in response to Sync Det 1035;
(2) Counter 1201, which increments in response to R/WCLK Signal 1023;
(3) PROM 1203, which receives inputs from Converter Instruction Decoder 1207 and Counter 1201;
(4) Register 1205, which receives inputs from PROM 1203 and outputs them in response to R/W CLK 1023.
The outputs from Register 1205 include Byte Clock Signal 1033, Enc/Dec Instructions 915, and Reset Signal 1207, which is returned to Counter 1201. Timing Generator 1003 is made up of ECL components in order to achieve rapid operation. Converter Instruction Decoder 913 consequently not only decodes Converter Instructions 913, but also produces output signals having the proper electrical properties for ECL logic.
DPU Timing Generator 1003 operates as follows: When R/W Processor 611 begins to execute a Read-Write Flow Control Instruction 615, R/W Sequencer 1001 provides an Initialize Converter Instruction to Converter Instruction Decoder 1207. Decoder
1207 responds thereto by activating INIT input 1209 to PROM 1203. In response to INIT, PROM 1203 outputs Reset 1207 which resets internal state of Enc/Dec 919 and Counter 1201. When R/W Sequencer 1001 receives SPS 631 from Heads 125, indicating that the desired Track Sector 504 has been reached, it outputs a Search for Sync Converter Instruction 915. Converter Instruction Decoder 1207 responds to that instruction by outputting a read signal on Read 1211 to PROM 1203. In response to the read signal, PROM 1203 outputs Group Clk 1209 Signals, enabling Enc/Dec 919 to receive Disk Codes 128.
When Enc/Dec 919 outputs Sync Detected Signal 1035, Decoder 1207 activates Sync Det 1213, to which PROM 1203 responds by outputting a code which activates Reset 1207, again resetting Counter 1201 and Enc/Dec 919. PROM 1203 then outputs Byte Clk Signals 1033, Group Clk Signals 1209 and Load Reg Signals 1211 in response to Counter 1201 in the proper order to cause Enc/Dec 919 to read Header 821. Further Sync Detected Signals 1035 output by Enc/Dec 919 are ignored while Header 821 is being read. If Header 821 is valid, R/W Processor 611 outputs either an Encode or Decode Converter Instruction 915 to Converter Instruction Decoder 1207. In response to Decode, Converter Instruction Decoder 1207 activates Read 1211, and when the next Sync Detected Signal 1035 is received, PROM 1203 begins outputting Group Clk Signals 1209, Byte Clk Signals 1033, and Load Reg Signals 1211 as described above. In response to Encode, Converter Instruction Decoder 1207 proceeds in the same fashion, except that Read
1211 is not activated and PROM 1203 outputs Byte Clk Signals 1033, Group Clk Signals 1209, and Load Reg Signals 1211 as required for the encoding operation.
3.1.2.2 Enc/Dec 919: Turning again to FIG. 10, Encoder/Decoder 919 both encodes and decodes data. When encoding, Enc/Dec 919 receives Data Codes 109 in parallel from Data Transfer Apparatus 605 and outputs Disk Codes 128 serially to Head 105 via Serial Write Data Out 1027; when decoding, Enc/Dec 919 receives Disk Codes 128 serially from Serial Read Data In 1025 and outputs Data Codes 109 in parallel to Data Transfer Apparatus 605; operation of Enc/Dec 919 is controlled by Enc/Dec Instructions
915 received from Timing Generator 1003.
Components of Enc/Dec 919 include Data Input Register 1005, Sync Detect 1007, Data/State Latch 1008, Encoder/Decoder PROM 1011, Data Output Register 1013, Read Data Latch 1015, and Data Trap 1017, which is used only in diagnostic operation of R/W Processor 611.
Data Input Register 1005 is a shift register which receives Data Codes 109 in parallel from Data Transfer Apparatus 605 when Enc/Dec 919 is encoding and Disk Codes 128 serially from Serial Read Data In 1005 when Enc/Dec 919 is decoding. In either case, output of Data Input Register 1005 to other components of Enc/Dec 919 is in parallel. Sync Detect 1007 is logic which produces Sync Det Signal 1035 when R/W Processor 611 reads Sync Mark 819 from Track Sector 504. Sync Detect 1007 is connected to the output of Data Input Register 1005 and produces Sync Det Signal 1035 when Data Input Register 1005 is receiving Disk Codes 128 and contains Sync Mark 819.
Data/State Latch 1008 and Encoder/Decoder PROM 1011 cooperate to perform encoding and decoding of Data Codes 109 and Disk Codes 128. Data/State Latch 1008 is a register which receives the contents of Data Input Register 1005 and State Codes 1010
from Encoder/Decoder Prom 1011. It retains the last State Code 1010 produced by Encoder/Decoder Prom 1011 and outputs retained State Code 1010 and the data it received from Data Input Register 1005 to Encoder/Decoder Prom 1011. Encoder/Decoder Prom
1011 encodes or decodes the data it receives from Data State Latch 1008. Which operation it performs is determined by a signal derived from Read Gate 1019. If Read Gate 1019 is active, indicating a read operation, Encoder/Decoder Prom 1011 converts Disk Codes 128 to Data Codes 109; otherwise, it performs the reverse conversion. In the encoding operation, it converts two-bit sequences of Data Codes 109 to three-bit sequences of Disk Codes 128, and in the decoding operation, it does the reverse. As will be explained in more detail later, the Data Code 109 or the Disk Code 128 produced depends on the data and retained State Code 1010 received from Data/State Latch 1008.
Data Output Register 1013 is a shift register which receives the parallel output of Encoder/Decoder PROM 1011 and outputs it serially to Write Data Out 1017 if Write Gate 1021 is active and otherwise to Read Data Latch 1015. Generally, data output to Read Data Latch 1015 is Data Codes 109; however, in the case of one diagnostic operation performed by R/W Processor 611, Disk Codes 128 are output to Read Data Latch 1015. Read Data Latch 1015 is another shift register. In all cases but that of the diagnostic operation just mentioned, Read Data Latch 1015 outputs Data Codes 109 in parallel to Data Transfer Apparatus 605; in the diagnostic operation, it outputs Disk Codes 128 serially via Diag Data In 1029 to Data Trap 1017. Data Trap 1017, finally, is used during the above-mentioned diagnostic operation only. It is a shift register which receives Disk Codes 128 serially from Read Data Latch 1015 and outputs them via Diag Data Out 1031 to Data Input Register 1005. Diag. Data In, Data Trap 1017, and Diag. Data Out 1013 thus together provide a path by which Disk Codes 128 converted from Data Codes 109 may be reconverted to Data Codes 109 without being written to Disk 123.
Operation of Enc/Dec 919 proceeds as follows: at the beginning of a read or write operation, Read Gate 1019 is active and Data Input Register 1005 is receiving Disk Codes 128 into Data Input Register 1005. Disk Codes 128 are shifted through Data Input Register 1005 in response to Group Clk 1209. When Data Input Register 1005 receives a Sync Mark 819, it is detected by Sync Detect 1007, which provides Sync Detected Signal 1035 to Timing Generator 1003. In response to Sync Detected 1003, Timing Generator 1003 begins producing Load Reg Signals 1209, and the contents of Data Input Register 1005 are loaded into Data/State Latch 1008. They are then output to Encoder/Decoder Prom 111, along with an inital State Code 1010.
If Read Gate 1019 is active, Encoder/Decoder Prom 1011 produces Data Codes 109 from the contents of Data/State Latch 1008. The Data Codes 109 are output to Data Output Register 1013. Since Write Gate 1021 is not active, Data Output Register
1013 outputs Data Codes 109 serially to Read Data Latch 1015, which outputs them in parallel to Data Transfer Apparatus 1015.
If Read Gate 1019 is not active, Data Input Register 1005 receives Data Codes 109 in parallel from Data Transfer Apparatus 605. As described above, the Data Codes 109 are output to Data/State Latch 1008 and then, together with State Codes 1010
to Encoder/Decoder Prom 1011, which in this case, converts the Data Codes 109 into Disk Codes 128. Since Write Gate 1021 is active, Data Output Register 1013 outputs the resulting Disk Codes 128 to Disk 123.
When R/W Processor 611 is executing Read, Write, Read Header, and Write Header Read-Write Data Flow Instructions 615, Enc/Dec 919 operates as described above; however, when R/W Processor 611 is executing a diagnostic write-read Data Flow Instruction 615, R/W Operational Sequencer 1001 first enables Data Input Register to receive Data Codes 109 from Data Transfer Apparatus 605, Encoder/Decoder PROM 1011 to encode Data Codes 109, and Read Data Latch 1015 to output the resulting Disk Codes
128 to Data Trap Shift Register 1017 instead of to Write Data Out 1027. After enough Data Codes 109 have been encoded to fill Data Output Register 1013 and Data Trap 1017, R/W Operational Sequencer 1001 enables Data Input Register 1005 to receive Disk Codes 128 from Data Trap 1017, Encoder/Decoder Prom 1011 to decode those Disk Codes 128, and Read Data Latch 1015 to output them to Data Transfer Apparatus 605. If Enc/Dec 919 is operating properly, Data Codes 109 produced by this operation will be exactly the same as the Data Codes 109 which Enc/Dec 919 received as input.
3.1.2.3 Sync Detector 1007--FIG. 12: As explained in the overview of the operation of DDCA 121, Sync Detector 1007 provides Sync Detected Signal 1035 to Timing Generator 1003 in response to Sync Mark 819, and if Sync Mark 819 preceding Header 821
was not detected, in response to SET SYNC 651 from Apparatus Control 609. FIG. 12A shows a present embodiment of Sync Detector 1007. The main components are Flip flop 1215, Detection Logic 1223, and Flip-flop 1237. Sync Detected Signal 1035 is produced by either Flip-flop 1215 and Inverter 1221 or Flip-flop 1237; the ORing of the outputs of Inverter 1221 and Flip-flop 1215 is accomplished by Wire Or 1239.
Flip-flop 1215 has an S input which sets Flip-flop 1215 to 1 when the line connected to it is inactive, an R input which sets Flip-Flop 1215 to 0 when the line connected to the R input is inactive, a D input which sets Flip-flop 1215 to the value at that input when a clock pulse is received at the CK input, and a Q output for outputting the current value contained in Flip flop 1215. Conductor 1217, connected to the S input, is inactivated by a signal of Converter Instructions 913. R/W Sequencer
1001 provides the signal when Byte Counter 1002 indicates that R/W Processor 611 should be receiving data from Header Preamble 821. In response to the inactivation of Line 1217, SYNCW 1219 becomes active. The R input is connected to SYNCW 1219, and thus, Flip-flop 1215 is not reset as long as SYNCW 1219 is active. The D input is connected to SET SINCE 651, which, as previously explained, is provided by Apparatus Control 609. Apparatus Control 609 inactivates SET SINCE 651 after Sync Detector 1007
should have received Sync Mark 819 preceding Header 121. In response to the change of state of SET SYNC 651, the Q output of Flip-flop 1215 becomes inactive and Flip-flop 1215 is reset, so that SYNCW remains inactive until Flip-Flop 1215 is again set by R/W Sequencer 1001. The output of Flip-flop 1215, SYNCW is inverted by Inverter 1221 to produce Sync Detected 1035. Thus, Sync Detector 1007 always produces Sync Detected 1035 in response to the inactivation of SET SYNC 651.
Sync Detected 1035 is also produced by Detection Logic 1223 and Flip-flop 1237 in response to Sync Mark 819. Detection Logic 1223 consists in a present embodiment of 6 OR gates and two NOR gates. The exact arrangement of gates depends on the contents of Sync Mark 819. One input of each of the gates is connected to one output of Data Input Register 1005; the other input of each of the gates is connected to Sync Detected 1035. The outputs of all of the gates are connected by Wire OR 1227, whose output is SYNC DET 1225. SINCE DET 1225 is thus active unless all outputs of the OR and NOR gates are inactive. In a present embodiment, that condition occurs only when Sync Detected 1035 is inactive and the pattern 10100000 appears on the inputs from Data Register 1005. In a present embodiment, that pattern indicates Sync Mark 819. Thus, Detection Logic 1223 is enabled to detect Sync Mark 819 only when Sync Detected 1035 is inactive. When that is the case and 10100000 appears on the inputs from Data Register 1005, SYNC DET 1225 becomes inactive.
Flip-flop 1237 is similar to Flip-flop 1215 except that the R input is not negated Flip-flop 1237 receive SYNC DET 1225 at its D input, Line 1235 at its S input and Sync Detected 1035 at its R input. Sync Detected 1035 is produced by wire OR
1239 from the Q output of Flip-flop 1237 and the output of Inverter 1221. Sync Detected 1035 is thus active if either the Q output of Flip-flop 1237 is active or the Q output of Flip-flop 1215 is inactive. Line 1235 is the output of NOR gate 1233, and is thus inactive when either input 1231 or 1229 is active. One of these inputs is activated by Converter Instructions 913 output by R/W Sequencer 1001 when Byte Counter 1002 indicates that R/W Processor 611 should be receiving data from Header Preamble
817; the other is activated when Byte Counter 1002 indicates that R/W Processor 611 should be receiving data from Data Preamble 825. When either Line 1231 or 1229 is activated, Line 1235 sets Flip-flop 1237, and in consequence, the Q output becomes inactive, enabling Sync Detection Logic 1223. It remains inactive until SYNC DET 1225 becomes inactive. When either Q of Flip-flop 1237 becomes active or Q of Flip-flop 1215 becomes inactive, Sync Detected 1035 becomes active, Flip-flop 1237 is reset, and Detection Logic 1223 is disabled.
Operation of Sync Detector 1007 is as follows: When Byte Counter 1002 indicates that R/W Processor 611 is receiving data from Header Preamble 817, Read-Write Sequencer 1001 activates Line 1217 and one of Lines 1231 and 1229. In consequence, both Flip-flop 1237 and 1215 are set, Sync Detected 1035 is inactive, and Detection Logic 1223 is enabled. If Detection Logic 1223 receives Sync Mark 819 from Data Input Register 1005, SYNC DET 1225 becomes inactive and Sync Detected 1035 becomes active, indicating that Sync Mark 819 has been detected and resetting Flip-flop 1237, which in turn activates Sync Detected 1035 and disables Detection Logic 1223. In response to the activation of Sync Detected 1035, Converter 133 begins reading Header 821. During the read, further activations of Sync Detected 1035 are ignored. After Detection Logic 1223 should have received Sync Mark 819, Apparatus Control 609 inactivates SET SYNC 651. In response thereto, Flip-flop 1215 is reset, Sync Detected 1035
becomes active, and Flip-flop 1237 is reset. If Converter 133 is already reading Header 821, the second signal on Sync Detected 1035 is ignored; if not. Converter 133 begins reading data from Track Sector 504. Since the read operation begins late, Header 821 is not read correctly, the header compare operation fails, and no read or write operation is performed on Sector Data 811. If Header 821 has been properly read and the header compare operation has succeeded, Read-Write Sequencer 1001
activates one of lines 1231 and 1229, thereby setting Flip-flop 1237 and enabling Detection Logic 1223. When Detection Logic 1223 detects Sync Mark 819 preceding Sector Data 811, Sync Detected 1035 becomes active and Flip-flop 1237 is reset, again disabling Detection Logic 1223. At the end of the read or write operation on Sector Data 811, line 1217 and one of lines 1231 or 1229 are activated and the operation just described is repeated.
3.2 Encoding and Decoding in R/W Processor 611
In a preferred embodiment of Enc/Dec 919, Encoder/Decoder Prom 1011 converts Data Codes 109 to Run-length-limited (RLL) Disk Codes 128. RLL Disk Codes 128 are well-known in the art. See, for example, P. A. Franaszek, Sequence-state Methods for Run-length-limited Coding, IBM Journal of Research and Development, July, 1970. As explained briefly in the Introduction to the specification, RLL Disk Codes 128 allow greater density of information storage on Disk 123.
The type of RLL Disk Code 128 used in a preferred embodiment is a RLL(2,8) Disk Code 128; however, the apparatus and methods described may be used with other types of RLL Disk Codes 128. In an RLL(2,8) Disk Code 128, three bits of RLL(2,8) Disk Code 128 correspond to two bits of Data Code 109. The precise encoding of two bits of Data Code 109 depends on the values of previously-encoded Data Codes 109, the value of the two bits of Data Code 109 being encoded, and the value of the next two bits of Data Code 109. These relationships are shown in FIG. 13. Using that Figure, both the encoding and decoding operations will be explained.
3.2.1 Encoding Data Codes 109--FIG. 13: FIG. 13 contains Encoding Table 1303 for encoding Data Codes 109, Decoding Table 1305, for decoding RLL(2,8) Disk Codes 128, and other information required to understand the encoding and decoding operations. Beginning with Encoding Table 1303, the table has 8 rows, one for each of the possible three-bit groups in RLL (2,8) Disk Codes 128. The possible RLL (2,8) Disk Codes 128 appear in the column labelled CODE.
The leftmost three columns correspond to three states, A, B, and C. Each entry in the leftmost three columns thus specifies a state and one of the RLL (2,8) Disk Codes 128. If a combination of the specified state and a value of two bits of Data Codes 109 may correspond to the specified RLL (2,8) Disk Code 128, the value of the two bits appears in that entry. Thus, the RLL Code 100 in the first row may correspond to the bits 11 of Data Code 109 when the state is A.
As already mentioned, the value of the three bits of RLL (2,8) Disk Code 128 is further influenced by the value of the next two bits of Data Code 109. These values are shown in the column labelled N+1. Thus, the two bits 11 will be encoded to
100 only if N+1 is either 00 or 01; otherwise, it will be encoded to 010, as specified by the next column. If a dash appears in the column labelled N+1, the next two bits of Data Code 109 make no difference. Thus, as specified by the third row of Encoding Table 1303, when the state is A and the two bits have the value 10, the three bits are always 100, regardless of the value of N+1.
As previously mentioned, each encoding operation produces one of states A, B, and C as well as a three bits of RLL (2,8) Disk Code 128. The state produced by each encoding operation specified in Encoding Table 1303 is specified in the column ST of the table. Thus, if 11 is encoded when the previous state is A and the next two bits are 01, the state becomes B. Since there are three states, two bits are needed to represent them. Consequently, separate representations of three bits of RLL (2,8) Disk Code 128 and the states would require five bits. In order to reduce the number of bit required to four, a preferred embodiment of Enc/Dec 919 combines three bits of RLL (2,8) Disk Code 128 with two bits of State Code 1010 to produce a four-bit Code-status word (CSWORD). The leftmost three bits of CSWORD contain the RLL (2,8) Disk Code 128 produced by the encoding operation and the rightmost 2 bits contain State Code 1010. The third bit functions simultaneously as a bit of RLL Disk Code 128
and a bit of State Code 1010. Only the leftmost three bits of CSWORD are written to Disk 123. Table 1307 shows the CSWORDs produced from various combinations of state and three bits of RLL (2,8) Disk Code 128, and the CSWORD column in Encoding Table
1303 shows the CSWORDs corresponding to the combination of three-bit code and state produced by each encoding operation.
3.2.2 Decoding RLL (2,8) Disk Codes 128: Decoding Table 1305 is similar to Encoding Table 1303, except that the decoding operation involves four states, A,B,C, and D, instead of three. Together, the previous state, the current three bits of RLL (2,8) Disk Code 128, and the next three bits yield the two bits of Data Code 109 corresponding to the current three bits of RLL(2,8) Disk Code 128 and a new state. The previous state appears in the first column, the current three bits of RLL (2,8) Disk Code 128 in the column labelled N, the next three bits in the column labelled N+1, the new state in the column with that label, the integer from Table 1301 representing the two bits of Data Code 109 in the column labelled GR DATA, and the two bits themselves in the last column. Bits specified by X in the columns labelled N and N+1 are "don't care" bits and do not affect the decoding operation; bits represented as 00 may have any value other than 00. Thus, reading the first row of Decoding Table
1305, if the previous state is A, the three bits of N are either 100 or 000, and N+1 is 000, then N is decoded to 11 and the new state is B.
3.2.3 Implementation of Encoding and Decoding in a Preferred Embodiment of DDCA 121--FIG. 14: The implementation of encoding and decoding in a preferred embodiment of DDCA 121 is shown in FIG. 14. The components of FIG. 14 are Shift Registers
1401 and 1403, which together make up Data/State Latch 1008, and Encoder/Decoder PROM 1011. In a present embodiment, Encoder/Decoder PROM 1011 may be a 256.times.4 ECL PROM of type MCM10149L, manufactured by Motorola, Incorporated. Inputs 1407 and 1411
to PROM 1011 specify the address of one of 256 4-bit registers in PROM 1011; Outputs 1413 carry the contents of the addressed register.
Shift Registers 1401 and 1403 receive parallel inputs 1405 and 1409. Inputs 1405 are from Data Input Register 1005. When Enc/Dec 919 is encoding Data Codes 109, Inputs 1405 carry five bits of Data Codes 109. The first two bits are the two bits being currently encoded and the next two bits are the next two bits to be encoded. In the encoding operation, the fifth bit is disregarded. When Enc/Dec 919 is decoding Disk Codes 128, Inputs 1405 carry the two most-significant bits of the three bits of Disk Code 128 currently being decoded and all three bits of the next Disk Code 128 to be decoded. As may be seen from t