Search Images Maps Play YouTube News Gmail Drive More »
Sign in
Screen reader users: click this link for accessible mode. Accessible mode has the same essential features but works better with your reader.

Patents

  1. Advanced Patent Search
Publication numberUS3680054 A
Publication typeGrant
Publication dateJul 25, 1972
Filing dateJul 6, 1970
Priority dateJul 6, 1970
Also published asCA945684A1
Publication numberUS 3680054 A, US 3680054A, US-A-3680054, US3680054 A, US3680054A
InventorsBunker William H, Kerr John W, Mitrofanoff Nicholas S, Swearingen Kent W
Original AssigneeIbm
Export CitationBiBTeX, EndNote, RefMan
External Links: USPTO, USPTO Assignment, Espacenet
Input/output channel
US 3680054 A
Abstract
The invention relates to a unique input/output channel used in a data processing system. The channel couples a plurality of external devices and their control units to a central processing unit. The configuration of the channel is such that it allows each of the control units direct control over many of the central processing unit functions during an input/output cycle. It allows each of the control units to share the system's main storage and central processing unit during these cycles. The design further allows for local store registers located in the central processing unit to be used as address registers for the external devices.
Images(6)
Previous page
Next page
Description  (OCR text may contain errors)

United States Patent Bunker et al. 14 July 25, 1972 [54] INPUT/OUTPUT CHANNEL 3,297,994 1/1967 Klein ..340/ 172.5

,3 8 [72] inventors: William H. Bunker, Rochester; John W. 2 3; 5833: et a1 Kerr, Byron; Nicholas S. Milrohnofl; Kent w swarms both of Rochester a" of 3,314,051 4/1967 Wtllcox et al.... .....340/I72.5 Mi'nn. 3,333,252 7/1967 Shimabukuro......................340/172.5

[73] Assignee: International Business Machines Corpon- P i E i -Pa l]. Henon li AfmOnk. Assistant Examiner-Mark Edward Nusbaum [22] Filed: July 6, 1970 signify-Keith T. Bleuer, Carl W. Laumann, Jr. and J. Jan- 211 App]. No.: 52,488

[57] ABSTRACT U.S. The invention relates to a unique input/output channel used in [51] Int. Cl. ..G06I 9/18 a dam processing gy3tm Th channel couples a plurality of [58] Field 01 Search ..340/l 72.5; 235/157 enema] devices and their comrd units to a central processing unit. The configuration of the channel is such that it allows [56] Referenm cued each of the control units direct control over many of the cen- UNITED STATES PATENTS tral processing unit functions during an input/output cycle. it allows each of the control units to share the system's main 3,399,384 8/1968 Crockett et al. ..340/ 172.5 torage and central processing unit during these cycles. The 3,311,055 7/1967 ll e l m-m design further allows for local store registers located in the 5 1/1970 Adams 9! central processing unit to be used as address registers for the 3,408,632 10/1968 Havck.............. .....340/172.s enema] devices. 3,559,184 1/1971 Rawlings et al.. .....340/172.5 3,566,365 2/1971 Rawson et al ..340/l 72.5 10 Claims, I] Drawing Flgures I T BANK C 2::

BANK 8 CPU cmmn 2 s I 7 V BANK A 1/0 1/0 1}!) 1/0 ATTACHMENT Amour/[m ATTACHHENT3 ATTACHIIENT4 ATTACHMENT I [/0 1/0 1/0 1/0 1/0 ozwct, DEVICEZ utvlct DEVICE DEVICE" PATENTEDJ L I 3.680.054

mm 1 0F 6 I BEvIcE IIEvIcE BEIIIcE BEvIcE BEvNJE CHANNEL our ur I BANK A 1] 08072 :CHANNEL OUTPUT I BANK B FIG. 20 lCHANNEL OUTPUT I BANK 0 TI I I To AIIAcBNENIs f3 5 cIIANNEL INPUT BANK A oBI CHANNEL WI IINPUT BANK B 0R 2 L 5 (:IIANNELII I INPUT BANK 0 REQUEST BUS IN-74 j INvENIoBs WILLIAM H BUNKER JOCHN IIS E III ROFANOFF A NI HOL T SELECT BUS IN 76 (BANK AI KENT w SWEARINGEN L I SELECT BUS IN 76 (BANK B) II I SELECT BUS IN 76 (BANK c v I 4 4 M p24 2C a ATTORNEYS PATENTED JUL 25 I972 3.680.054 SHEU 3 OF 6 1601160 160r160 160 150 i "S "S "S I "S i "S "S 5 "5 M, A m? CLOCK {2 X X Xfl X fX k /x 1 PHASE y'iliJHrrfJiHIHMHHl ABCDEABCDEABCOABCDABCDABCDABCDABCDABCD FIG. 3

2o? CHAN J% -DBI m OR UB1 70 J: CPU LOAD DB1 A OBI TRANSLATOR A J REG. 71

REG. 210 206 212 V cm TRANSLATE m 216 22s mom CPU c K 72 TRANSLATUR P A OR TO ATTACHMENTS N CHAN TRANSLATE OUT 223 F N F 2281 CLOCK 70 T0 0c 229 A Q, F|G.5 PmoRnY BUS 22? PATENTEU L 3.680.054

saw u [If 6 23 256 1 N TPH CLOCK 7- A LAT I 000 CLOCK W N F 2 0 1 OR B 255 m 1 1' 1 BLOCK 5 A W L I283 3 so? L ..M. OR CLOCK 00 260 M34 1 CLOCK a A m 284 L R 262 w 27s 2 Z CLOCK 1 A m 1 09 T ii /264 71 f- OR A 290 L cm STEAL 3 REG 3 Y 1 FF L mo I l T CYCLE STEAL l 1 4 REG 4 FF 1 294 OR CYCLE STEAL l 5 REQ 5 1 T FF 314 l OR 296 CYCLE STEAL Y s REG. 5

N FF 316 L OR w CYCLE STEAL 1 RED. 7

F N F /298 FIG 6 r PATENTEDJULZS I972 3.680.054

SHEET 5 BF 6 FIG.9

PRIORITY REQUEST FIG. 7

REQUEST BUS IN LINE DEFINITION 6 3 W R K b O H C 8 4 /1 5 \T K 2 2 9 N F. W H .l w O C C C k A T 5 5 C... v U [I 0 0 .LI 0 E Du E w 7.. B 5 O 0 k m KW R A m e m K H ll Y N 0 F A T D B I... rr. S 6 w 0 0 2 a B c w w. 4 K0 K0 K 4 r0 IL NT... N Du T ACL Art A 8 1J 3 R w A A 0 2 0 A H 582 N 13 4 2 5 4 6 6 T O 0 5 5 5 6 RJ 13 3 3 13 3 v F i N N F 4 7 F F F. F T F 7 C. F F F F TI 0 R T s T T 7 s V 7.. 4 6 3 3 3 3 4 M 0 O r W k T K l. 11 T T m 1 R L T a 4 s s 1 m S F SE SE L I25 ws LS IL U On PAIENTEDJNL25 I972 3.680.054 SHEEI 5 BF 6 PRIORITY CATA BUS ouT REQUEST 1/0 ATTACHMENT P 0 1 2 3 CYCLE STEAL ASSIGNMENT CODES ON DATA BUSY OUT 410 FIG. 10 N A CHAN D81 LINE 4 412 |NTHPT 4 PH 414 PH /44o OR j 400 41% N A fm CHAN 0m LINE 3 A 420 L- INTRPT,3

PH PH OR 0 402 422 T0 CPU 44 CHAN DBI LINE 2 H INTRPT. 2

; PH L 426 PH 444 OR 1 42C 430 {405 F N A CHAN DB1 LINE 1 TNTPPT 1 1 OR OR L -& ANYINTRPT. F

454 450 H CNN T0 ATTACHMENTS r A A M A RESET 5 U CHAN TNTHPT POLL 53 ---+|NTEHHNPT POLL INPUT/OUTPUT CHANNEL BACKGROUND OF THE INVENTION Field of the Invention The invention is in the field of computers, and more specifically in the field of providing communication links between a central processing unit and external control units.

The invention is concerned with a unique input/output (I/O) channel. An IIO channel is broadly defined as a path including devices and logic along which signals are sent for bringing data into and out of a computer. Such devices are generally connected to and provide communication links between external devices and the computers central processing unit (hereinafter referred to as CPU). Normally, numerous of these external devices are associated with the single CPU. Control of each of the devices is effected by a separate input/output attachment, also known as a control unit, coupled between the I/O channel and the device. One example of such an input/output device is a printer. As is known in the art, lines of print may be stored in the main storage of the computer. During an input/output cycle, under the control of an input/output attachment coupled to the printer, the lines of print may be read out and printed. An input/output cycle which is also called a cycle steal is a CPU cycle granted an input/output attachment.

SUMMARY OF THE INVENTION The relationship between the I/O channel of this invention, the CPU and main storage of the computer and the attachments and their respective I/O devices is shown in FIG. I. The U0 channel accepts three banks oflines, each bank consisting of a plurality of channel input and output lines. Although three banks of lines are described, the number of banks may be fewer or greater. The channel input lines include a plurality of buses carrying data, cycle steal requests, and address codes for addressing portions of the CPU as well as a plurality of control lines carrying information from the attachments to the CPU. The channel output lines include a bus for carrying data from the CPU to the attachments as well as control lines for transferring timing information from the CPU to the attachments. Three banks are used in lieu of a single bank because oftiming problems which would occur ifa single bank was extended indefinitely, coupling all the attachments thereto. Because, as will be explained, the channel is time dependent, the time it takes for a signal to travel between the channel and an attachment is critical. Thus, the maximum distance at which an attachment may be placed from the channel is limited. Additionally, the dc resistance of the lines will have an adverse effect on the operation of the system if the line is too long. Therefore, in order to accommodate more attachments, the channel is designed to accept three banks of input and output lines. Each of these banks is identical and therefore only one is described in detail.

The U0 channel input lines and output lines of bank A are connected to the I/O attachments l n in a configuration known in the art as a daisy chain. Each of these attachments control a corresponding I/O device 1 n. A feature of the invention, as will be explained allows for such a connection of the I/O attachments. A daisy chain arrangement has the advantage that a minimum number of cable lines can be used in connecting the I/O attachments to the CPU through the channel. In brief, the channel allows for such a connection by a unique means which receives the I/O cycle or cycle steal requests and on the basis of a preassigned priority grants an I/O cycle to the highest priority attachment while notifying it of the granting by placing a code on a common bus which is sampled several times during a machine cycle. The apparatus for accomplishing this aspect of the invention and the operation thereof is fully disclosed below.

A further unique aspect of the I/O channel of this invention is its ability to provide means for the I/O attachments to share the computers main storage and CPU during [/0 cycles. This allows the U0 attachments to use the arithmetic and logic unit of the CPU for numerous functions. For example, under the control of a particular I/O attachment, the arithmetic and logic unit (ALU) may be used to update l/O address registers located in the CPU during an I/O cycle. The 1/0 address registers, as is known, are used to address particular storage locations in the main storage containing the instructions or data necessary to accomplish an I/O cycle. More generally, the ALU, through the channel, is capable of any ALU operation, such as add, subtract, AND, OR, all under the control of an I/O attachment, with the ALU output being available on the channel s output data bus. The sharing capability provided by the U0 channel further allows CPU timing to be used by both the I/O channel and I/O attachments. Thus, the same clock signals that control the CPU may also be used to control the 1/0 attachments. The advantage of this of course is that only one clock is needed for the entire system which eliminates the need for maintaining synchronism of separate clocks.

This sharing capability is accomplished, in part, by selection logic circuits contained in the channel. These circuits select the address register in the CPU specified by the [/0 attachments. In addition, to assure that only one address register is selected at a time, unique checking circuits are provided as part of the selection logic which signals the CPU to block the selection if more than one register is indicated by the attachments.

These and other advantages of the [/0 channel and the means by which these advantages are realized will become more apparent with the detailed description of the preferred embodiment of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS FIG. I is a diagram showing the relationship between the I/O channel of this invention, three banks of channel input and output lines, a CPU and a main storage.

FIG. 2 is a block diagram of the structure of the I/O channel of this invention and its relationship to a CPU which may be used with the channel.

FIG. 2a shows that portion of the channel between interfaces 3 and 4 shown in FIG. 2.

FIG. 3 is a diagram of the machine cycle of the CPU which may be used with the invention.

FIG. 4 is a representation of the I/O channel's data bus in and its associated logic.

FIG. 5 is a representation of the I/O channel's data bus out and its associated logic.

FIG. 6 is a diagram of the I/O attachment priority selection logic contained in the channel. FIG. 7 is a chart showing the conditions of the logic of FIG. 6 for a hierarchy of priorities in requesting I/O cycles.

FIG. 8 shows the conditions on the data bus out for indicating the priorities listed in FIG. 7.

FIG. 9 is a diagram of the local store register selection logic contained in the channel.

FIG. 10 shows the logic for accomplishing interrupt requests in accordance with a preassigned priority.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT FIG. 2 includes functional block diagrams of the CPU which may be used with the channel of this invention, showing its relationship thereto. Dotted line 1 shows the interface between the CPU and the channel.

Although the CPU is known in the art and its particular construction is not the inventive feature described herein, a brief description of the CPU will be given to provide a better understanding of its association with the invention described herein.

The registers in the CPU are grouped generally into two categories, local store registers (LSR) and general registers. The general registers consist of storage address register 10, storage data register 12, B register l6, A register 14, and re gister 22. Register 22 stores instruction codes obtained from the main storage through registers l2 and I6 and the arithmetic and logic unit 20. These instructions are decoded in decoder 24 to determine which instruction the machine should execute. When an I/O instruction is decoded, the I/O attachments receive the information through signal lines traveling through the channel from the control logic 30.

In addition to the lines which carry the decoded instructions, additional lines are needed to carry other control information between the CPU and the attachments. These lines are represented by lines 12-17 in FIG. 2 and as shown pass uninterrupted through the channel. The showing of six lines is not to be interpreted as limiting the number of lines and as understood by those skilled in the art any number of such lines may be used.

The storage address register 10 stores the address of the data in main storage which will be read out through the storage data register l2 to the B register 16. Register 16 serves as a buffer for data bytes which are passed through the ALU 20. Where a data byte in the B register is to be modified, modifying data is contained in the A register l4. The contents of the A and B registers can then be gated into the ALU 20 and there modified. During input/output cycles, the A register I which accepts data from the I/O channel is under the control of the I/O attachments through the channel. This will be described in detail below.

The local store registers 26 include address registers to be used by the I/O attachments. Each of the I/O attachments, having a cycle steal capability, i.e., the capability of requesting an I/O cycle, is assigned at least one of the registers in LSR 26 to retain the address in the main storage which will store or receive data for the attachment. The selection of the particular local store register by the attachment is performed through the channel of this invention.

A control unit 30 contains the CPU controls operable in a manner well known to those skilled in the art. These controls control the CPU timing.

Included in FIG. 2 is a block diagram of the elements which comprise the U0 channel.

The portion of the channel shown left of interface 3, the details of which are shown in FIG. 20, contains that section of the channel which accepts the three banks of channel input and output lines. The channel input lines from banks A, B and C, except the SELECT BUS IN 76, form inputs to OR gate 57 Gate represents a plurality of OR gates, each receiving corresponding lines from the three banks. The bus 76 from each bank passes directly through the portion of the channel shown in FIG. 2a to three corresponding selection logic circuits, only one of which, SELECT logic 110, is shown in FIG. 2.

The channel output lines, one set for each bank, flare out from a single set of output lines derived from the DATA BUS OUT 72, and lines l4, l6 and 17. Any known means may be used for coupling the signals on the single set of output lines to the three sets of output lines. Additionally, where necessary, line drivers (not shown), as known in the art, may be used on the three sets of output lines to compensate for power loss caused by the division of the signals from one to three lines.

Looking to the right ofinterface 3, in FIG. 2, the channel includes three buses corresponding to buses of the channel input lines as shown in FIG. 20, carrying information into the channel from the various l/O attachments. The first of these is the DATA BUS IN (DBI) 70 which carries the data to the main storage unit 32. This data flows through a DBI logic circuit I00 which includes a translator to the A register 14 of the CPU. As previously disclosed, the data then passes through the ALU and the storage data register 12 to the main storage 32.

An interrupt logic network 104 is coupled between the DBI 70 and the LSR selection logic 28 in the CPU. This interrupt logic, operating in a manner to be described, stores interrupt requests for interrupting the CPU operation. As is known, some of the attachments perform functions such that when program service is required, it is required within a very short period of time. For the purpose of alerting the program of these needs, the channel must provide means for interrupting the CPU. This is precisely the function of the interrupt logic 104.

The SELECT BUS IN 76, three of which are contained in the channel, brings in instructions for addressing LSR 26 and stores them in SELECT LOGIC I10. SELECT LOGIC I10 provides a unique scheme for selecting particular local store registers and permits checking to determine that only one register has been selected at any point in time.

The REQUEST BUS IN 74 and the REQUEST LOGIC I08 provide means by which the attachments request cycle steals from the CPU. The request logic I08 provides a means for updating these requests on the basis of a preassigned priority in a time dependent mode. In this manner, all l/O attachments can operate simultaneously, requesting an I/O cycle, a particular attachment being assigned an [/0 cycle in the order of its preassigned priority. The manner in which the cycle steal requests are granted and the manner in which the priority assignments are made, will be described below with the description of the circuitry of the request logic 108.

The DATA BUS OUT (DBO) 72 is coupled through DBO logic I03, which includes a translator, to the CPU. In addition, the output of the request logic I08 is coupled to both the control unit 30 and DBO logic 103. When a cycle steal request has been granted for a particular input/output device, that device is notified that it has been granted a cycle steal by means of the D 72.

With the I/O channel described above, the following advantages are obtained:

The channel, operating in a time dependent mode, permits I/O devices to be connected in a daisy chain array with all devices operating simultaneously.

Counters and other arithmetic units, ordinarily needed in H0 devices, may be eliminated because the novel I/O channel permits the I/O devices to share the CPU and main storage during I/O cycles.

Also, since the local store registers can be shared, the I/O attachments need not be equipped with address registers. This eliminates the need for address buses normally necessary to connect the attachments address registers through the channel to the CPU.

The inclusion of the translators in the channel itself allows for multiple usage of the translator by several of the H0 attachments, thus saving translator cost.

For the purposes of illustration only, operation of the input/output channel will be described in relation to a CPU operating with a machine cycle as shown in FIG. 3. This cycle is comprised of nine clock pulses, 0 through 8. Each clock is further divided into phases, each phase lasting for forty nanoseconds. Thus, clocks 0 and l, which last 200 nanoseconds each, can be broken up into five phases each, A through E, while clocks 2 through 8, each I60 nanoseconds long, can be broken up into four phases each, A through D. The fact that clocks 0 and l are longer than the remaining clocks is dictated by the speed of the main storage. The machine cycle times will be described using clock and phase designations. For example, an operation may be described as beginning at a machine cycle time corresponding to time 78 and ending at time 0C. It is understood by those skilled in the art that the machine cycle timing illustrated in FIG. 3 is only representative and it is not intended that the invention be limited to operation in a system having identical cycle timing.

For a full understanding of the channel and its operation, a detailed description of each element which comprises the channel and its function and operation will now be described.

DATA BUS IN (DBI) The channel DATA BUS IN (DBI) 70 and its associated logic I00 are shown in FIG. 4. DB] 70 consists of nine lines which are used to transmit information, such as data interrupt requests and address modifications from the input/output attachments to the CPU. Eight of the lines carry information bits to form an eight bit information byte with the ninth bit used as a parity bit. AND gate 207 represents nine AND gates, one for each line of the bus 70. These gates are enabled by raising the LOAD DBI REG line 71. This line is terminated at its other end in the CPU. When an I/O cycle has been granted to an attachment and data is to be transferred into the CPU, the CPU raises line 71, enabling gate 207. In the operation of the preferred embodiment of the invention with the CPU previously described, this is done on the even numbered clock pulses. The outputs of the AND gates 207 are connected to the inputs of a data register 206 which retains the data information on bus 70. The output of the register 206 is fed through logic circuitry to the A register 14 of the CPU.

As is known in the art, it is often the case that input data must be translated into a code usable by the CPU. For this reason, translator 208 is included in the channel. The inclusion of the translator 208 in the channel, rather than in the I/O attachments, allows for one translator to be used by all of the I/O attachments thereby decreasing the cost of the system.

However, in some cases, no translation is required and the data from the register 206 must be transferred directly to the CPU without passing through the translator. For this reason, logic circuitry comprising AND gates 209 and 210, inverter 212, and OR gate 211 is included in the DBI. As with the representation of AND gate 207, AND gates 209 and 210 each represent a series of nine AND gates, one associated with each of the nine lines of DBI 70. Similarly, OR gate 211 represents nine OR gates associated with the nine lines of DBI 70. When the data in register 206 need not be translated, the CHAN TRANSLATE IN line 216 is held at a logic 0, thereby enabling AND gates 209 through inverter 212. This allows for the passage of the data stored in register 206 through OR gates 211 to the CPU. However, due to the logic 0 condition ofline 2I6, AND gates 210 are disabled, thereby blocking the flow of data through the translator 208.

When a translation operation is required, line 216 is raised to a logic I which enables AND gates 2l0 while disabling AND gates 209. In this manner, the data stored in register 206 is transferred to the CPU through the translator 208, AND gates 210 and OR gates 21].

The state of the line 216 is controlled by the attachments. Translator 208 may be any known translator and specifically may be a translator which converts a 96-column card code to an extended binary coded decimal interchange code (EBC- DIC).

DATA BUS OUT (DBO) The DATA BUS OUT (DBO) 72 and its associated logic I03 are shown in FIG. 5. As with DBI 70, the bus 72 consists of nine lines carrying eight information bits and a parity bit. Translator 220 in any given system corresponds to translator 208. Again, means are provided for the passage of data, either directly through the channel or, alternatively, through the translator 220. The logic necessary for such selective passage of data comprises AND gates 222 and 224 and inverter 230. AND gates 222 and 224 each represent a series of nine AND gates, one associated with each of the DB0 72 lines. A CHAN TRANSLATE OUT line 223 is provided to selectively pass the data from the CPU through the translator 220. Line 223 is terminated at its other end in the attachments. With CHAN TRANSLATE OUT line 223 in a logic 0 condition, AND gates 222 are enabled through inverter 230, thereby providing a path for the data to OR gate 226. OR gate 226 represents a series of nine OR gates, one associated with each of the lines of bus 72. With line 223 in a logic 0 state, AND gates 224 are disabled, thereby blocking the passage of data through the translator 220. The raising of line 223 to a logic I disables gates 222, while enabling gates 224, thereby allowing for the passage of data through the translator 220. The outputs of OR gates 226 are fed to the HO attachments by means of DB0 72.

The DBO of this invention accomplishes the additional function of notifying the I/O attachments of the assignment of 110 cycles. As has been previously disclosed, the assignment is done on a priority basis, incorporating a time dependent technique. This technique and the circuitry for effecting it is disclosed below. However, for the understanding of DB0 72, its logic 103 and its relationship to the I/O cycle request circuitry 108, it is sufficient to note that the information carried by PRIORITY BUS 227 identifies the IIO attachment awarded the next l/O cycle. The U0 attachments determine which one will receive the next l/O cycle by interrogating DBO 72 during specified times. During the time that the attachments interrogate D 72 other data must not flow through the bus 72. Thus, a third input is provided to AND gates 222 and 224 for disabling these gates during selected times. As an example, in the case ofa channel operating in accordance with a machine cycle disclosed above, (FIG. 3) these gates may be disabled, during clocks 7D through 0C of a machine cycle, by raising line 229 to a logic 1. Simultaneously, AND gate 228 is enabled to pass the I/O cycle information to the attachments. Gate 228 represents nine gates, one coupled to each of the nine lines which comprise priority bus 227.

REQUEST BUS IN The REQUEST BUS IN 74 and its associated logic I08 is used by the I/O attachments to request an [/0 cycle from the CPU for the purpose of accessing the main storage 32. The bus 74 and logic 108 are shown in FIG. 6. The bus consists of five lines labeled CYCLE STEAL REG 3 through 7. However, the indication of five lines and the corresponding logic is not intended to be limiting. Additional lines may be used and logic coupled thereto in the manner described thereby accommodating additional priority requests. Each line, together with a clock time, defines a unique request. Each request is as signed a priority, establishing a ZO-position hierarchy of priority requests. In a preferred embodiment of the invention, four sample times are used corresponding to the leading edges of clocks l, 3, 5 and 7 of FIG. 3. A ZO-position hierarchy of priority requests is shown in FIG. 7 along with the corresponding status of the cycle steal request lines and the clock times. The listing of a line in FIG. 7 indicates that a request appears on that line. Thus, priority one is indicated by having a request on CYCLE STEAL REQ. line 3 at the leading edge of clock 7.

Attachments which have cycle steal capabilities are assigned to one of the priority request positions. Thus, with reference to FIG. 7, I/O attachment A will have top priority while I/O attachment T has the lowest priority. In order for an I/O attachment to request a cycle steal, the attachment must have its designated cycle steal request line raised during the designated sample time. In a manner to be described, the CPU then stores the cycle steal request.

Using the cycle of FIG. 3 at clock 7D a priority assignment code indicating which I/O attachment is to receive the next cycle is placed on the DB0 72 by raising line 229. This code remains on DB0 72 until line 229 is disabled. In the specific example previously cited this occurs at clock 0C.

Circuitry for accomplishing the priority request function is shown in detail at FIG. 6. Operation of this circuitry will now be described. As is evident from FIG. 7 the priority of an [/0 attachment is dependent upon the CYCLE STEAL REQ line to which it is attached and on the clock times. The CYCLE STEAL REQ lines are sampled four times during a cycle. This occurs at the leading edge of clocks I, 3, 5 and 7. At each of the four times the I/O attachments may request an I/O cycle. Time priority recognition is accomplished through the latches 270-276 and their associated gating circuitry. Line priority recognition is accomplished through the use of flip-flops 290-296 and their associated circuitry.

The logic for the priority request includes an OR gate 252 having the CYCLE STEAL REQ lines 3-7 as inputs. The output of OR gate 252 is applied to a polarity hold circuit 254, which in turn is coupled to latches 270 through 276. The state of the outputs of latches 270 through 276 represents the first 1 four bits of the code indicating the attachment to be granted the next cycle steal. The outputs of these latches are fed to the bus 227 (FIG. 5) which, in a manner previously described, alerts the I/O attachments.

The cycle steal request lines are also coupled respectively to the flip-flops 290-296. The outputs of the flip-flops are transferred to bus 227 and represent the remaining five bits of the code.

In order to more fully understand the operation of the request logic, the following examples are given.

Assume that CYCLE STEAL REQ line 7 is at a logic 1, while the remaining lines are at logic 0. The state of the line 7 is fed through OR gate 252 to one input of the polarity hold 254. On the appearance of the first odd clock, polarity hold 254 is set, thereby enabling AND gates 256 through 264. The AND gates 256 through 262 condition latches 270 through 276, respectively, to remember the time at which one or more bits appeared on the CYCLE STEAL REQ lines 3-7, causing polarity hold 254 to be set. For example, if polarity hold 254 is set at the leading edge of clock 1, latch 276 will be set through its AND gate 262. Similarly, if the polarity hold was set at the leading edge of clock 3, then latch 274 will be set through its AND gate 260. On the occurrence of each even clock, polarity hold 254 will be reset in a manner well known in the art. Ifa different cycle steal request line is activated at the leading edge of another odd clock, e.g., clock 3, then polarity hold 254 is set and the latch 274 corresponding to the clock time 3 set.

Assume that during clock time 1 latch 276 has been set, and that at clock time 3 latch 274 is set. The setting of latch 274 causes the previously set latch 276 to be reset. The means for accomplishing this comprises OR gate 284 which is coupled to the output of the set side of latch 274. The output of gate 284 being coupled to the reset terminal of latch 276 causes latch 276 to be reset upon the setting of latch 274. In a similar manner, the setting of latch 272 or 270 will reset any lower latch. Thus, during a machine cycle, only the highest clock time during which a cycle steal request appeared on one of the request lines will be stored. After an attachment has been selected and it has been so informed the latches and flip-flops of the selection logic must be reset. This is accomplished by a reset pulse on line 307. In FIG. 6 the pulse is indicated as occurring at clock 0D. This corresponds to the next phase time after line 229 has been disabled. Since in the previous example this occurred at time 0C, line 307 would be activated at time 0D.

Flip-flops 290 through 298 act as a means to remember which of the cycle steal request lines is raised to a logic 1 at the leading edge of each of the odd clock times. During each odd clock, if any ofthe cycle steal request lines is at a logic I, AND gate 264 is enabled by polarity hold 254, and acts to allow a triggering pulse in the form of clock pulse to load the flip-flops 290 through 298 which are presented with a cycle steal request on their corresponding cycle steal request line. As is obvious, if no requests appear on any of the request lines, the state of the flip-flops remain unchanged.

Operation of these flipflops in relation to the cycle steal requests is as follows. If it is assumed that at the rise of clock 1, CYCLE STEAL REQ line 3 is at a logic l, the set side of flipflop 290 is triggered to a logic 1. The output of the flip-flop 290, besides being coupled to PRIORITY BUS 227, is also coupled to OR gate 310. The output of OR gate 310 is coupled to the reset terminal of flip-flop 292 and also to one input of OR gate 312. The output 312 is coupled to the reset terminal of flip-flop 294 and to one input of OR gate 314. Similarly, the output of gate 316 is coupled to the reset terminal offlip-flop 298. Thus, the raising of the set side of flip-flop 290 to a logic 1 enables OR gate 310 which will reset flip-flop 292 and through OR gates 312, 314 and 316 will reset flip-flops 294 through 298, respectively. Therefore, if at the rise of clock 1, CYCLE STEAL REQ lines 3, 4, 5, 6, and 7 are all at a logic 1, only flip-flop 290 will remain set at the end of clock time 1.

Similarly, if cycle steal request lines 4 and 7 were at a logic 1 at the leading edge of clock time 1, at the end of that clock time, only flip-flop 292 would remain in its set condition.

The manner of developing the hierarchy of priority requests now becomes clear. By scanning bus 227 after clock 7, the highest priority input/output attachment which, during that machine cycle, requested an input/output cycle, is so notified by the condition of the lines of bus 227. The conditions of these lines is fed through the AND gate 228 of FIG. 5 to the DB0 72 and then to the I/O attachments.

FIG. 8 shows the states of the DB0 72 for each of the 201/0 attachment assignments.

It should be noted that the output of the set side of latch 270 is coupled through an inverter 279 to the bus 227. By reason of this inverter, each time the set side oflatch 270 is at a logic 1, its corresponding line on bus 227 appears as a logic 0. The reason for this is so that odd parity will be presented on DB0 72.

If any I/O attachment has made a request for a cycle steal during a machine cycle, then at clock 7 the output of OR gate 320 would be conditioned, which, in turn, activates line 321 which is terminated in the CPU. Activation of this line indicates to the CPU that a cycle steal has been requested. The CPU will then grant its next cycle to the I/O attachment. Such operation of the CPU is not part of this invention and indeed well known in the art and further a description thereof is not necessary for an understanding ofthis invention.

LSR SELECTION LOGIC As previously explained, the address registers for accessing the main storage 32 wherein there is stored the data and instructions for carrying out an [/0 cycle may be contained in the CPU in a group of local store registers (LSR) 26. In such a case, on the granting of an l/O cycle to an [/0 attachment it becomes necessary for the attachment to select the proper register or registers during this cycle. Such selection is accomplished through a unique local store register select logic network contained within the HO channel.

The operation of this circuitry in response to an I/O attachrnent signals will now be given with reference to FIG. 9.

Each SELECT BUS IN 76 corresponds to the five lines designated LSR SEL 3 through 7. Three sets of these lines pass through the channel, one for each bank. However, since each set is identical, only one is shown. The logic circuitry coupled to lines LSR SEL 3-7 represent SELECT logic circuitry 110 for one bank only, namely bank A. Similar logic circuitry is necessary for the l/O attachments coupled to banks 8 and C.

Broadly, the SELECT logic 110 provides a 2 out of 5 code for selecting the proper register in the LSR 26 and in addition provides check means to disable the selection of a register in the CPU if other than a 2 out of 5 code encountered. Thus, only two combinations are permitted, no lines being raised to a logic 1 or two lines in one bank being raised. If any other combination is present, line 401 which terminates in the CPU raises to a logic I. The CPU contains means, not a part of this invention which, responsive to the raising of line 40], stops the selection of an LSR register.

Each of the LSR SEL lines 3 through 7 is connected to one of the flip-flops 350 through 360, respectively. These flipflops, acting as triggers are set by an l/O LSR select clock, thereby transferring the information on the LSR select lines to the flip-flops. The NO LSR select clock is simply the master clock contained in the CPU gated into the LSR select logic at selected times. In the preferred embodiment of the invention, these times appear at clocks 0A, 1, 3, 5 and 7 of the machine cycle shown in FIG. 3. In a manner well known, the outputs of the set side of each of the flip-flops 350 through 360 are transferred via bus 372 to the decoder 374. The output of the decoder indicates the one register in the LSR 26 selected at a particular clock time. Inverters 362 through 370 are used to give opposite polarity to the reset side of the flip-flops 350- 360 to cause them to reset on a trigger pulse when its cor responding LSR SEL line is at a logic 0.

The decoder 374, which is well known in the art, uses a 2 out of code to select one of registers in the LSR 26.

To check that only a 2 out of 5 code is on bus 372, unique checking circuits are included in the channel. The operation of these checking circuits are as follows:

The 2 out of 5 check is performed by logic blocks 378, 380, 382 and 384. Logic block 378 receives its inputs from the outputs of the set sides of flipflops 350 through 360 and determines, whether an odd number of them has been set. Such a circuit is well known in the art and a further description thereof unnecessary. The input to AND gate 380 is coupled to flip-flops 350, 352 and 354. Thus, a logic 1 at the outputs of gate 380 indicates that all three of these flip-flops are in a set condition. Similarly, AND gate 382 indicates when flip-flops 354, 356, and 360 are all in a set condition while AND gate 384 indicates when the flip-flops 352, 356 and 360 are all in their set conditions. The outputs of each of these checking cir cuits is coupled through OR gate 386 to OR gate 400. It now becomes apparent that if any of the 2 out of 5 check circuits 378 through 384 indicates a logic I at its output, a 2 out of 5 code is not being stored in flip-flops 350 through 360 and the selection of a local store register must be terminated. This is accomplished by raising line 401 which is terminated in the CPU. The 2 out of 5 check logic just described is identical for the LSR selection logic circuitry used with the other two banks.

During any clock time, it is essential that only one local store register be selected to address the main storage. It is possible that even with a 2 out of 5 code in bank I checked, more than one register will be chosen if two banks are sending out a 2 out of5 code at the same time. To check this condition, additional logic circuitry is contained within the LSR selection logic of the 1/0 channel of the invention.

OR circuit 376 is used to indicate that at least one of the LSR SEL lines in bank A has been raised to a logic 1. Each of the other two banks contain an OR gate 376. The output of OR gate 376 of bank A is connected to the inputs of OR gate 392 and exclusive OR 390. The output of the corresponding OR gate 376 in bank 8 (not shown) is coupled through BANK B SELD line to a second input of OR gate 392 and the exclusive OR 390. Assuming that both the BANK A SELD line and the BANK B SELD line are raised, the output of OR gate 392 is raised while the output of the exclusive OR 390 remains at a logic 0. The output of the exclusive OR 390 is coupled to one input of OR gate 396 through inverter 394. Therefore, the logic 0 output from gate 390 conditions gate 396, thereby enabling AND gate 398. This raises the output of AND gate 398, which conditions OR gate 400, thereby stopping the selection ofa register in the LSRs 26.

In a manner which is now evident to those skilled in the art, if banks B and C have an LSR SEL line raised, AND gate 398 will be conditioned raising line 401. Similarly, should banks A and C have an LSR SEL line raised, AND gate 398 will be conditioned, raising to a logic 1 line 401, causing the selection ofa register in the LSR 26 to be terminated.

It should be pointed out that while the majority of the logic circuitry contained in the SELECT logic 110 is duplicated for each bank, the logic circuitry comprising OR gates 392, 396, and 400 as well as the exclusive OR gate 390 and AND gate 398, are common to banks A, B, and CY Selection of a local store register upon the occurrence of a proper 2 out of 5 code decoded in decoder 374 occurs in the CPU in a manner well known in the art through the use of selection circuitry 28 of PK]. 2.

CHANNEL INTERRUPT LOGlC Some attachments perform functions such that when a program service is required, it is required within milliseconds. For alerting the program of these needs, the channel provides an interrupt capability. This interrupt logic is shown generally at 104 in FIG. 2 and specifically in FIG. 10. With reference to FIGv 2, when an interrupt request occurs on B8] 70, the IN- TERRUPT logic 104 sends a signal to the LSR selection circuitry 28 in the CPU which in turn selects registers in the local store registers 26 specifically assigned for the interrupting operation. These registers serve as the address registers for the instructions in the program's interrupt routine.

Each attachment which requires an interrupt capability is assigned one of the DBI 70 lines as well as a position in a priority of interrupts. Selection of an attachment requiring an interrupt on the basis of its priority is accomplished through the use of the INTERRUPT logic 104 of the 1/0 channel.

An interrupt request is received when the channel INTER- RUPT POLL line 452 is raised. The raising of line 452 is under control of the CPU and not a part of this invention. When used with the CPU previously described, acting under the machine cycle of FIG. 3, line 452 is active during clocks 5 through 7 of the last machine cycle of every program instruction. It is used to alert the attachments that the CPU is ready to accept interrupt requests. The start of the request for an interrupt is determined by the attachment and is a result of being enabled by a program. The purpose of the INTERRUPT logic is to assign an interrupt to only one attachment if more than one requires an interrupt during any one cycle.

Operation of the INTERRUPT logic will now be described. Four lines of DB1 70 are shown and they are labeled as Channel DB1 l, 2, 3, and 4. It is understood that the actual number oflines may equal the number oflines which comprise DBI 70. Each of these serves as one input to polarity holds 400, 402, 404 and 406, respectively. The second input to each of the polarity holds 400-406 is from the channel INTERRUPT POLL line previously described or a system reset line 454 terminated at its other end in the CPU. This line is activated on a system reset instruction in a manner well known. The output of each of the polarity holds is fed to logic circuitry consisting of an AND gate, an OR gate, and an inverter. Specifically, the output of the set side of polarity hold 400 appears as one input to AND gate 410. The second input to gate 410 is from the system reset line 454 through inverter 412. This line is normally at a logic 0. A similar circuit is coupled to the outputs of the other polarity holds 402, 404 and 406 respectively and operate in an identical manner. The output of the AND gates 410, 418, 424, and 430 appear as one input to polarity holds 440, 442, 444 and 446 respectively. The output at the set side of these polarity holds appear as the inputs to the LSR selection logic 28 in the CPU during an interrupt. The manner in which they operate in the CPU is not a portion of this invention.

Assume that polarity hold 440 is set by the setting of the polarity hold 400 and a clock pulse on line 450. Simultaneously, the output of OR gate 414 is raised to a logic 1 which blocks AND gate 418. The output of OR gate 414 is also coupled to one input of OR gate 420 whose output, when raised to a logic 1, blocks AND gate 424. ln a similar manner, AND gate 430 is blocked when the output of OR gate 426 is raised to a logic 1. Thus, the setting of polarity hold 400 enables AND gate 410 and disables AND gates 418, 424, and 430. Therefore, if CHAN D81 14 were all activated during the enabling of line 452 only polarity hold 440 would remain set. It now becomes clear that should CHAN DBl line 3 be raised while 2 and 1 are also raised and 4 is not raised, only INTER- RUPT line 3 would be raised to its logic 1 state.

Polarity holds 440, 442, 444 and 446 store the interrupt priority request received at the polling time until the next poll time. At this time, the polarity holds 440-446 are reset by a signal from the CPU on line 450.

The outputs of polarity holds 440, 442, 444 and 446 as well as the ANY interrupt line 451 go to the CPUs selection circuit 28 and there select the particular registers associated with the particular interrupt request. In this way the main storage 32 is addressed at the correct location to get the instruction for the particular interrupt level required.

While the invention has been particularly shown and described with reference to a preferred embodiment thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention.

What is claimed is:

it An input/output channel for providing a path for the transfer of information directly between a plurality of input/output attachments and a central processing unit and through the central processing unit to a main storage, said central processing unit being capable of operating on data from said attachments, said channel comprising,

a first means for transmitting data from said attachments to said central processing unit,

a second means for transmitting data from said central processing unit to said attachments,

said first means including a first translator, for altering the data from said attachments to a form recognizable by said central processing unit,

said second means including a second translator for altering the data from said central processing unit to a form recognizable by said attachments, and

first and second logic means associated respectively with said first and second transmitting means for selectively causing data passing through the channel to either pass through said translators or bypass said translators if the data does not need to be translated.

2. A channel as claimed in claim 1 further including;

means for receiving time-dependent requests from said attachments for use of said central processing unit,

means for determining which ofsaid attachments requesting the use of said central processing unit has the highest priority among a preassigned set of time-dependent priorities, and

means, for granting use of said central processing unit to the one of said plurality of attachments requesting said use which has the highest priority of the requesting at tachments.

3. An input/output channel for providing a path for the transfer of information between a plurality of input/output attachments, and a central processing unit and a main storage, wherein said central processing unit includes a plurality of registers, a portion of said registers being address registers for said attachments, comprising;

selection means under the control of said attachments for selecting in response to a selection signal from an attachment granted a cycle steal the one of said address registers corresponding to the attachment granted a cycle steal by the central processing unit, there being preassigned to each attachment one of said address registers, said selection signal being used to identify one of said address registers,

said selection means including checking means for checking that only one address register is selected and for disabling said selection means if more than one register is selected.

4. A channel as claimed in claim 3 further including interrupt means, for requesting an interrupt cycle from said central processing unit on command of an attachment, said interrupt means including interrupt priority logic means for passing to said address registers only the one interrupt request which is the highest among a preassigned hierarchy of priorities.

5. An input/output channel providing a path for the transfer of information directly between a plurality of input/output attachments and a central processing unit and through the central processing unit to a main storage, said central processing unit including at least one group of registers, said channel comprising;

means for carrying information from said attachments to said central processing unit,

means for carrying information from said central processing unit to said attachments,

a plurality of cycle steal request lines, each line being assignable to a plurality of attachments,

time dependent priority means for controlling the order, ac-

cording to a preassigned hierarchy, in which said attachments are granted central processing unit produced cycle steals, a single request thereby being assignable to a plurality of attachments, and

means including said means for carrying information from said central processing unit for indicating to said at tachments the one attachment granted a cycle steal.

6. A channel as claimed in claim 5 further including;

selection means under the control of said attachment for selecting a preassigned one of said group of registers in said unit, said preassigned register having been preassigned to the attachment granted a cycle steal, in response to a selection signal from the attachment granted a cycle steal, said selection means including a means for checking that only one of said groupof re gisters is selected at a time.

7. A channel as claimed in claim 6 wherein;

said means for transmitting information from said attachments includes first translator means for making the information transferred from said attachments compatible with said central processing unit, and

said means for transmitting information from said central processing unit includes second translator means for making the information transferred from said central processing unit compatible with said attachments.

8. A channel as claimed in claim 7 further including interrupt means for controlling the selection of one of said group of registers in response to a plurality of interrupt requests from said attachments, said selection being based upon a preassigned hierarchy of priorities.

9. An input/output channel providing a path for the transfer of information between a plurality of input/output attachments and a central processing unit and through the central processing unit to a main storage, wherein said unit includes a group of local store registers and has the capability of granting a cycle steal comprising;

a first means for transferring information from said attachments to said unit,

said first means including, first translator means for translating data into a code recognizable by said central processing unit, and

first logic means for selectively causing data to bypass said first translator means,

second means for providing a path for the transfer of data from said unit to said attachments, said second means including second translator means for translating data into a code recognizable by said attachments, and

second logic means for selectively causing data to bypass said second translator means,

request means for selectively granting a cycle steal to one of a plurality of attachments simultaneously requesting a cycle steal, said selective granting being on the basis of a time dependent preassigned priority, means, coupled between said request means and said second means, for transferring to said second means a signal identifying the attachment granted a cycle steal,

selection means, under the control of the attachments, for selecting one of said local store registers in said central processing unit, said register containing an address in said storage wherein is stored an instruction or data required by one of said attachments,

said selection means further including checking means for checking that a single register is selected at any point in time and for indicating when more than one register is selected, and

interrupt means, responsive to interrupt requests from said attachments for granting an interrupt cycle to only one of said attachments in accordance with a preassigned priority.

10. The input/output channel as claimed in claim It wherein said attachments are arranged in a plurality of groups each attachment in a group being coupled to said channel through a common bank of lines, said channel further including a plurality of SELECI buses each associated with a different bank of lines, said selection means being comprised of a plurality of SELECT logic circuits one associated with each SELECT bus and means responsive to the output of said SELECT logic circuits for disabling the selection means when more than one of said SELECT logic circuits designates a local store register.

Patent Citations
Cited PatentFiling datePublication dateApplicantTitle
US3297994 *Jun 10, 1963Jan 10, 1967Beckman Instruments IncData processing system having programmable, multiple buffers and signalling and data selection capabilities
US3311055 *Apr 23, 1965Mar 28, 1967Jr Richard H StresauToroidal booster with cylindrically symmetrical output
US3314051 *May 12, 1964Apr 11, 1967WillcoxSelective-call data system
US3333252 *Jan 18, 1965Jul 25, 1967Burroughs CorpTime-dependent priority system
US3395394 *Oct 20, 1965Jul 30, 1968Gen ElectricPriority selector
US3399384 *Sep 10, 1965Aug 27, 1968IbmVariable priority access system
US3407387 *Mar 1, 1965Oct 22, 1968Burroughs CorpOn-line banking system
US3408632 *Jun 3, 1966Oct 29, 1968Burroughs CorpInput/output control for a digital computing system
US3543242 *Jul 7, 1967Nov 24, 1970IbmMultiple level priority system
US3559184 *Aug 30, 1968Jan 26, 1971Burroughs CorpLine adapter for data communication system
US3566365 *Sep 12, 1968Feb 23, 1971Searle Medidata IncMultiphasic medical screening system
Referenced by
Citing PatentFiling datePublication dateApplicantTitle
US3740728 *Jan 19, 1972Jun 19, 1973Hughes Aircraft CoInput/output controller
US3872444 *Feb 23, 1973Mar 18, 1975IbmTerminal control unit
US3889236 *Oct 9, 1973Jun 10, 1975Philips CorpInterface system with two connecting lines
US3909790 *Aug 25, 1972Sep 30, 1975Omnus Computer CorpMinicomputer with selector channel input-output system and interrupt system
US3961312 *Jul 15, 1974Jun 1, 1976International Business Machines CorporationCycle interleaving during burst mode operation
US4038641 *Apr 30, 1976Jul 26, 1977International Business Machines CorporationOutput interrupt or cycle steal data transfer requests
US4059851 *Jul 12, 1976Nov 22, 1977Ncr CorporationPriority network for devices coupled by a common bus
US4181934 *Dec 27, 1976Jan 1, 1980International Business Machines CorporationMicroprocessor architecture with integrated interrupts and cycle steals prioritized channel
US4339793 *Aug 20, 1979Jul 13, 1982International Business Machines CorporationFunction integrated, shared ALU processor apparatus and method
US4495564 *Aug 10, 1981Jan 22, 1985International Business Machines CorporationMulti sub-channel adapter with single status/address register
US4942516 *Jun 17, 1988Jul 17, 1990Hyatt Gilbert PSingle chip integrated circuit computer architecture
US5369777 *Jun 3, 1993Nov 29, 1994Advanced Micro Devices, Inc.Integrated digital processing apparatus having a single biodirectional data bus for accommodating a plurality of peripheral devices connected to a plurality of external buses
US5506968 *Dec 28, 1992Apr 9, 1996At&T Global Information Solutions CompanyTerminating access of an agent to a shared resource when a timer, started after a low latency agent requests access, reaches a predetermined value
US6650317Jan 5, 1995Nov 18, 2003Texas Instruments IncorporatedVariable function programmed calculator
US6901460Apr 30, 2003May 31, 2005Nec CorporationCompetitive management system and method for external input/output devices and recording medium recording program
Classifications
U.S. Classification710/28
International ClassificationG06F13/20, G06F13/12, G06F13/34
Cooperative ClassificationG06F13/122, G06F13/34
European ClassificationG06F13/12L, G06F13/34