Language selection

Search

Patent 1148265 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent: (11) CA 1148265
(21) Application Number: 1148265
(54) English Title: HIGH PERFORMANCE I/O CONTROLLER FOR TRANSFERRING DATA BETWEEN A HOST PROCESSOR AND MULTIPLE I/O UNITS
(54) French Title: CONTROLEUR D'ENTREE/SORTIE A HAUTE PERFORMANCE POUR LE TRANSFERT DE DONNEES ENTRE UN PROCESSEUR CENTRAL ET DES UNITES D'ENTREE/SORTIE
Status: Term Expired - Post Grant
Bibliographic Data
(51) International Patent Classification (IPC):
  • G06F 9/46 (2006.01)
  • G06F 3/00 (2006.01)
  • G06F 3/06 (2006.01)
  • G06F 9/22 (2006.01)
  • G06F 9/26 (2006.01)
  • G06F 11/34 (2006.01)
  • G06F 13/00 (2006.01)
(72) Inventors :
  • DINWIDDIE, JOHN M., JR. (United States of America)
  • FREEMAN, BOBBY J. (United States of America)
  • JACKSON, TIMOTHY (United States of America)
  • ZIPOY, WILLIAM L. (United States of America)
(73) Owners :
  • INTERNATIONAL BUSINESS MACHINES CORPORATION
(71) Applicants :
  • INTERNATIONAL BUSINESS MACHINES CORPORATION (United States of America)
(74) Agent:
(74) Associate agent:
(45) Issued: 1983-06-14
(22) Filed Date: 1980-05-21
Availability of licence: N/A
Dedicated to the Public: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): No

(30) Application Priority Data:
Application No. Country/Territory Date
062,263 (United States of America) 1979-07-30

Abstracts

English Abstract


HIGH PERFORMANCE I/O CONTROLLER FOR
TRANSFERRING DATA BETWEEN A HOST PROCESSOR AND
MULTIPLE I/O UNITS
Abstract
An I/O controller for transferring data between a host
processor and an I/O unit is disclosed comprising:
a random access storage unit located in the I/O
controller for storing data;
first selectively operable data transfer circuitry for
providing a data transfer path between the host processor
and the controller storage unit;
second selectively operable data transfer circuitry for
providing a data transfer path between the controller
storage unit and the I/O unit;
first storage accessing circuitry for supplying
addresses to the controller storage unit and selection
signals to the second data transfer circuitry for enabling
the transfer of data between the controller storage unit and
the I/O unit;
second storage accessing circuitry for supplying host
processor main storage addresses to the host processor,
controller storage addresses to the controller storage unit
and selection signals to the first data transfer circuitry
for enabling the transfer of data between the host processor
main storage unit and the controller storage unit in a first
data transfer mode;
third storage accessing circuitry responsive to
addresses received from the host processor for supplying
addresses to the controller storage unit and selection
signals to the first data transfer circuitry for enabling
the transfer of data between the host processor and the
controller storage unit in a second data transfer mode;
and interleaving control circuitry for enabling the
second mode data transfers to be interleaved with the first
mode data transfers.


Claims

Note: Claims are shown in the official language in which they were submitted.


The embodiments of the invention in which an exclusive
property or privilege is claimed are defined as follows:
1. An I/O controller for transferring data
between a host processor and an I/O unit and
comprising:
a random access storage unit located in
the I/O controller for storing data;
first selectively operable data transfer
circuitry for providing a data transfer path between
the host processor and the controller storage unit;
second selectively operable data transfer
circuitry for providing a data transfer path between
the controller storage unit and the I/O unit;
first storage accessing circuitry for
supplying addresses to the controller storage unit
and selection signals to the second data transfer
circuitry for enabling the transfer of data between
the controller storage unit and the I/O unit;
second storage accessing circuitry for
supplying host processor main storage addresses to
the host processor, controller storage addresses to
the controller storage unit and selection signals to
the first data transfer circuitry for enabling the
transfer of data between the host processor main
storage unit and the controller storage unit in a
first data transfer mode;
82
BC9-79-006

third storage accessing circuitry responsive to
addresses received from the host processor for supplying
addresses to the controller storage unit and selection
signals to the first data transfer circuitry for enabling
the transfer of data between the host processor and the
controller storage unit in a second data transfer mode;
and interleaving control circuitry for enabling the
second mode data transfers to be interleaved with the first
mode data transfers.
2. An I/O controller in accordance with Claim 1 wherein:
the first data transfer mode is a cycle steal data
transfer mode whereby the I/O controller controls the cycle
stealing of data into or out of the host processor main
storage unit.
3. An I/O controller in accordance with Claim 2 wherein
the second data transfer mode is an I/O command type of data
transfer mode wherein for each word of data transferred the
host processor supplies an I/O command and an I/O address to
the I/O controller.
4. An I/O controller in accordance with Claim 3 wherein
the I/O command supplied by the host processor is a direct
program control type of I/O command.
83

5. An I/O controller in accordance with Claim 1 wherein:
The controller storage addresses provided by the second
storage accessing circuitry cause the transfer of data to or
from a first data storage area in the controller storage
unit;
and the controller storage addresses provided by the
third storage accessing circuitry cause the transfer of data
to or from a second and different data storage area in the
controller storage unit.
6. An I/O controller in accordance with Claim 1 wherein
the first storage accessing circuitry includes a
microprocessor for transferring data between the controller
storage unit and the I/O unit via an internal register in
the microprocessor, one microprocessor instruction cycle
serving to transfer data between the controller storage unit
and the internal register and another microprocessor
instruction cycle serving to transfer data between the
internal register and the I/O unit.
7. An I/O controller in accordance with Claim 1 wherein:
the host processor includes a main storage unit;
the second storage accessing circuitry includes a
plural channel direct memory access controller having a
first address counter for supplying host processor main
storage addresses to the host processor and a second address
counter for supplying controller storage addresses to the
controller storage unit;
84

and the I/O controller includes circuitry
for supplying cycle steal request signals to the host
processor for causing the host processor to use the
main storage addresses provided by the first direct
memory access controller address counter for cycle
stealing data into or out of the host processor
main storage unit.
8. An I/O controller in accordance with Claim
1 wherein the third storage accessing circuitry
includes:
address decoder circuitry responsive to the
occurrence of predetermined addresses from the host
processor for producing address capture signals;
address selector circuitry responsive to
the address capture signals for supplying host
processor address bus bits to the address terminals
of the controller storage unit;
and data transfer control circuitry
responsive to the address capture signals for
supplying selection signals to the first data transfer
circuitry for enabling the transfer of data between
the host processor and the controller storage unit
locations addressed by the host processor address
bus bits.
9. An I/O controller in accordance with Claim
6 wherein:
the host processor includes a main storage
unit;
BC9-79-006

the second storage accessing circuitry
includes a plural channel direct memory access
controller having a first address counter for
supplying host processor main storage addresses to
the host processor and a second address counter for
supplying controller storage addresses to the
controller storage unit;
the I/O controller includes circuitry for
supplying cycle steal request signals to the host
processor for causing the host processor to use the
main storage addresses provided by the first direct
memory access controller address counter for cycle
stealing data into or out of the host processor
main storage unit;
the third storage accessing circuitry
includes address decoder circuitry responsive to the
occurrence of predetermined addresses from the host
processor for producing address capture signals;
the third storage accessing circuitry also
includes address selector circuitry responsive to
the address capture signals for supplying host
processor address bus bits to the address terminals
of the controller storage unit;
and data transfer control circuitry
responsive to the address capture signals for
supplying selection signals to the first data
transfer circuitry for enable the transfer of data
between the host processor and the controller
storage unit locations addressed by the host
processor address bus bits.
86
BC9-79-006

10. An I/O controller in accordance with Claim
7 wherein the third storage accessing circuitry
includes:
address decoder circuitry responsive to the
occurrence of predetermined addresses from the host
processor for producing address capture signals;
address selector circuitry responsive to
the address capture signals for supplying host
processor address bus bits to the address terminals
of the controller storage unit;
and data transfer control circuitry
responsive to the address capture signals for
supplying selection signals to the first data transfer
circuitry for enabling the transfer of data between
the host processor and the controller storage unit
locations addressed by the host processor address
bus bits.
87

Description

Note: Descriptions are shown in the official language in which they were submitted.


2~
--1--
1 The construction of the improved I/O controller is
such that, in addition to performing I/O data transfer
functions, it can also offload some of the normal pro-
gramming functions from the host processor. It can,
for example, do some of the number crunching for the
host processor. It can also offload some of the I/O
control program functions previously performed in the
host processor. Furthermore, the improved I/O controller
can be used to couple later model I/O devices to a host
processor having operating system software which was
designed for use with earlier model I/O devices. For
example, the I/O controller can couple a page mode type
keyboard display unit to a host processor having keyboard
display software which was written for a character mode
type of keyboard display. In this case, the data pro-
cessing capability of the I/O controller is used to pro-
cess the character mode I/O commands and control blocks
to provide the proper control action for page mode type
operations. Thus, obsolescence of host processor pro-
gramming support is largely eliminated.
HIGH PERFORMANCE I/O CONTROLLER FOR TRANSFERRING
DATA BETWEEN A HOST PROCESSOR AND
MULTIPLE I/O UNITS
Background of the Invention
This invention relates to input/output (I/O) controllers
for use in digital data processing systems for transferring
data between a host processor and one or more peripheral
units or I/O units. More particularly, this invention
relates to I/O controllers which employ microprocessors
for supervising the data transfer activities.
~'
,, . ~
BC9-79-006
,,
",

-2-
1 A primary purpose of the present invention is to pro-
vide a high performance I/O controller which is very flex-
ible and versatile in terms of the kinds and nlmbers of
tasks it can perform and in terms of the kinds and numbers
of I/O units which it can handle. Other objectives are
to provide: (1) an I/O controller to which various kinds
and combinations of present and future I/O units can be
attached in a relatively simple and straightforward
manner; (2) an I/O controller which can handle a goodly
number of different data transfer tasks in a very ~fficient
and highly concurrent manner; (3) an I/O controller, which
is capable of offloading various programming and data pro-
ceS~lng functions from the host processor;
BC9-79-006

and (4) an I/O controller which never returns a
"controller busy" signal to the host processor.
These objectives are realized to a major extent
by providing a microprocessor based I/O controller
configuration wherein the microprocessor is allowed
to function as a general purpose processor and not
as a limited purpose I/O controller. Among other
; things, I/O units (or their associated device
controllers) are connected to the I/O controller by
simply attaching them to the microprocessor I/O bus.
Thus, the microprocessor can transfer data to and
from the I/O units in its normal manner.
,
These objectives are further realized by
employing a dual port random access storage mechanism
~ 15 to provide the data transfer interface between the
; microprocessor I/O bus and the I/O channel bus of the
host processor to which the I/O controller is
connected. One port of this storage mechanism is
connected to the host processor channel bus and the
other port is connected to the microprocessor I/O
bus. The construction of the I/O controller is such
that the microprocessor thinks that this dual port
storage is its own private random access storage
unit. Nevertheless, this dual port storage mechanism
can be accessed directly by the host processor and
the host processor can thereby transfer data to or
from the dual port storage mechanism. Thus, the dual
port storage is a shared storage unit which is shared
by both the microprocessor and the host processor but
with the host processor storage accesses being
transparent to the microprocessor.
A further ~eature is the inclusion in the I/O
controller of a direct memory access (DM~1 controller
$
~ BC9-79-006
" ~,, ~ .

2~S
1 which is in addi-tion to the microprocessor and v7hich is
used to provide a high speed cycle steal mode of data
transfer between the dual port controller storage uni.
and the ~ain storage unit of the host processo~ In
particular, the D~ controller includes a first
channel for supplying host processor main s-orace
addresses to the host processor and a second channel
for supplying controller storage addresses to the
dual port storage mechanism. These D~A channels are
operated in unison to bring a word of data out of the
host processor main storase unit and to write it _nto
the addressed location in the dual port storage unit
or, conversely, to bring it out of the dual port
storage unit and to write it into the addressed
location in the host processor main storage unit.
Circuitry is provided for interleaving the previously
considered host processor direct storage access data
transfers with these D~ controller controlled cycle
steal data transfers. Thus, two different modes of
data transfer are provided between the host processor
and the I/O controller, with these modes being inter-
leaved to provide a minimum of delay and interference
with one another. Among other things, this enables
new I/O commands to be received from the host
processor at the same time that the I/O controller is
engaged in the cycle stealing transfer of a block of
data to or from the host processor main storase unit.
For a better understanding or the present
invention, together with other and further advantages
and features thereof, reference is made to the
j following description taken in connection with the
accompanying drawings, the scope of the invention
being pointed out in the appended claims.
':
, nrr~_7t~_nnt;

Brief Descri?tion Of The Drawings
Referring to the drawinss:
Fig. 1 is a schematic block diagram of a digi~al
; data processing system showing the incor?oration
therein of an I/O controller constructed in accorc-
ance with the present invention:
Figs. 2A, 2B, 2C and 2D, when placed as indicated
in Fig. 2, form a single figure which shows in greater
detail the construction of the novel I/O controller
of Fig. 1;
Figs. 3-7 show various command, control blocX
and status word formats and the like used in the
~` Fig. l data processing system;
Fig. 3 shows in greater detail the internal
construction of a typical microprocessor which may
be used in the Fig. 2 I/O controller;
Fig. 9 is a ti~ing diagram showing what happens
for a more or less typical instruction cycle for the
microprocessor of Fig. 8;
Fig. 10 shows in greater detail the internal
construction of a typical plural channel direct
memory access (D~) controller which can be used in
the Fig. 2 I/O controller;
Fig. 11 is a timing diagram showing the various
signal waveforms for two typical successive D.
cycles of the D~ controller of Fig. lO
B BC9-79-006
_ _

Figs. 1 2A and 1 2B, when placed side-by-side inthe
manner indicated in Fig. 12, form a single figure which
shows in greater detail the internal construction of the
interrupt and cycle steal handshaking unit of Fig. 2C;
Figs. 13A and 13B, when placed side-by-side in the
manner indicated in Fig. 13, form a single figure which
shows in greater detail the internal construction of the
storage control logic of Fig. 2A and also shows the logic
for developing the direction (D) and output enable (OE)
signals for the two-way drivers which are used to transfer
data between the host processor channel bus and the I/O
controller storage units;
Fig. 14 is a storage address range map of the lower
portion of the total address range capable of being
addressed by the microprocessor of Fig. 2B;
:,-
Fig. 15 is an enlargement of a portion of the Fig. 14address range map, the part shown in Fig. 15 being
applicable to the two IDCB address range segments shown in
Fig. 14;
Fig. 16 shows in greater detail the internal
construction of the host DMA request logic of Fig. 2B and
also the logic for developing the strobe and output enable
control signals for the data register of Fig. 2A;
,:
- Fig. 17 shows a modification for the Fig. 2 I/O
controller whereby the data transfers between one of the I/O
units and the controller storage unit are also handled by
the plural channel D~`lA controller of Fig. 2B;
' ~:
Fig. 18 shows a further modification of the Fig. 2
controller wherein a pair of DMA controllers are used to
~- control the data transfers between three different I/O-units
and the controller storage unit;
"
,,
,,
: .,~
, ~
/

2~5
and Fig. 19 shows in greater detail the construe-
tion of the DMA contention logic of Fig. 18.
Description Of Overall System
Unless otherwise indieated by the context, the
term "data" is used herein in its broadest sense as
including any kind of information such as alpha-
numeric data, status information, control information,
address values and the like.
Referriny to Fig. 1, there is shown a block
diagram of a digital data proeessing system whieh
includes an input/output (I/O) controller constructed
in accordance with the present invention. The
system includes a host processor 1, an I/O controller
2 and a plurality of I/O units 3-6. Coupled to the
host processor 1 is a host processor main storage
unit 7. The host processor 1 is construeted to
eommunieate with various I/O controllers and I/O
units by means of a host proeessor I/O channel bus 8.
This channel bus 8 is connected to and driven by a
ehannel portion 9 of the host proeessor 1. Channel
portion 9 is also directly connected to the main
storage unit 7 by way of a storage bus 10. This
channel storage bus 10 enables the cycle stealing of
data between the channel bus 8 and the main storage
unit 7 without interrupting the program being
executed in the host processor 1.
BC9-79-005
.,

~82~5
For sake of example herein, the host processor
l is assumed to be an IBM Series/l processor,
several models of which are currently being manu-
factured and sold by the International Business
Machines Corporation of Armonk, New York. Thus, the
channel bus 8 is assumed to be a Series/l channel bus
and, as such, the construction and operation thereof is
described in considerable detail in United States
Patent 4,038,642, entitled "Input/Output Interface
Logic For Concurrent Operations" and issued on July
26, 1977, to Messrs. Bouknecht et al. This Bouknecht
et al patent also describes an existing Series/l type
: of I/O controller and its manner of use in connecting
I/O units to the host processor channel bus 8.
:
~ 15 The I/O controller 2 is a representative embodi-
:~ ment of a new and improved I/O controller constructed
~ in accordance with the teachings of the present
- invention. It provides various advantages and
improvements over and above those which are provided
by the existing and currently marketed Series/l I/O
~; controllers. Furthermore, these new and improved
features are of general applicability and should not
be considered as being limited to usage in a Series/l
type of I/O controller.
The new and improved I/O controller 2 is a
microprocessor based I/O controller and includes a
microprocessor 11, a control program storage unit 12,
a direct memory access (DMA) controller unit 13, a
programmable interrupt controller (PIC) unit 14 and/
optionally, a user storage unit 15. Typically, each
BC9-79-006

of these units 11-15 i5 comprisea of one or rore
integrated circuit chips and each Gf thcse ~-nits
11-lS is coupled to a microprocessor I/O DUS 16
which is of the proper construction as required b~
the microprocessor 11. The I/O units 3-6 are also
coupled to the microprocessor I/O DUS 16 by way o'
their respective ones of device control units 17-20.
For sake of example herein, the micro?rocessor
11 is assumed to be an Intel*8085A microprocessor.
This is a single chip 8-bit microprocessor ~hich is
currently manufactured and marketed by the Intel
Corporation of Santa Clara, California. The control
program storage unit 12 is assumed to be a read only
storage unit and is constructed to contain the
various operating instructions and operating
routines which are used by the microprocessor 11 in
supervising and controlling the data transfer
activities in the I/O c~ntroller 2. The micro?ro-
cessor bus 16 is assumed to be the customary 8085A
microprocessor bus. For sake of example, the direct
memory access controller 13 is assumed to be an
Intel*8257 programmable DMA controller. This is a
single chip four-channel Dri~ controller and is
currently manufactured and marketed by the Intel
Corporation of Santa Clara, California. For sake
of example, the programmable interrupt controller
(PIC) unit 14 is assumed to be an Intel 8259
programmable interrupt controller. It is a single
chip eight-request interrupt controller and is
currently manufactured and marketed by Intel
Corporation of Santa Clara, California.
7Trade Mark
s
. ~
,~ F3C9-7~-nn5
_ _

;5
A primary feature of the new and improved I/O
controller 2 is the use of a dual port random aceess
storage mechanism 22 to provide the data transfer
interface between the microprocessor bus 16 and the
host proeessor ehannel bus 8. One port of this
storage meehanism 22 is eoupled to the host processor
channel bus 8 and the other port is eoupled to the
microprocessor bus 16. Data passing from the channel
bus 8 to the microprocessor bus 16 or viee versa is
at least temporarily stored in this storage mechanism
22.
The construction of the I/~ controller 2 is
such that the microprocessor 11 thinks that this dual
port storage unit 22 is its own private random access
storage unit. In particular, the storage unit 22 is
coupled to the mieroproeessor 11 in generally the
same manner as any other random aecess storage unit
is normally coupled to a mieroprocessor. Thus,
microprocessor 11 can transfer data into or out of the
storage unit 22 in its normal manner. Nevertheless,
the dual port storage unit 22 can be accessed
directly by the host processor 1 and the host pro-
cessor 1 can transfer data to or from the storage
unit 22 during such aecess. The construction is,
however, such that this direct accessing by the host
- processor 1 is transparent to the microprocessor 11.
Thus, the dual port storage mechanism 22 is operated
in the manner of a shared storage unit whieh ls
shared by both the mieroprocessor 11 and the host
proeessor 1, with the host proeessor aecesses being
transparen-t to the microprocessor 11.
BC9-79-006

~8'~5
11
The host processor 1 can cause the initiation
or termination of I/O operations in the I/O controller
2 by sending thereto via channel bus 8 immediate
device control blocks (IDCB's) which include a one-
byte I/O command and a one-byte device address. In
the present embodiment, these two items, the I/O
command and the device address, are sent out over
the address bus portion of the channel bus 8. Each
of the I/O units 3-6 is assigned its own unique
device address. An address decoder 23 monitors the
channel bus 8. When it detects the occurrence of
the unique device address for one of the I/O units
3-6, it generates an address gate capture signal on
its output line 24. This signal is supplied to a
four-byte command register file 25 to cause the
storage therein of the one-byte I/O command then
appearing on the channel bus 8. The address decoder
23 also activates the appropriate one of the device
select lines in a four-bit device select bus 26,
these four device select lines running to four
different interrupt request inputs of the programm-
able interrupt controller 14. In due course, the
interrupt controller 14 sends an interrupt request
for the selected I/O unit to the microprocessor 11
via the microprocessor bus 16. In due course, the
microprocessor ll recognizes this interrupt request
and fetches the corresponding I/O command from the
register file 25. In due course, the microprocessor
11 initiates whatever action is called for by this
I/O command.
.
BC9-79-006

- 12
This host processor I/O command mode is also used
~ for transferring data between the host processor l and
- the dual port storage unit 22. More particularly,
during the occurrence of the I/O command and device
address on the channel bus 8, a word (two-bytes) of
data can also be placed on the data bus portion of
the channel bus 8 by either the host processor l or
the dual port storage unit 22. For the case of a
write type I/O command, the host processor l places
~ 10 the data word on the channel bus, after which such
-; data word can be written into the dual port storage
22. Conversely, for the case of a read type I/O
command, the dual port storage 22 places a data
word on the channel bus 8 and such data word is
read into the host processor 1. In either case, the
~: addressing of the dual port storage 22 is accomplished
: by some of the I/O command and device address bits
~: appearing on the address bus portion of the channel
bus 8. In other words, the host processor l supplies
the address bit values which are used to address the
dual port storage 22. The construction of the I/O
controller 2 is such that this accessing of -the dual
- port storage 22 does not interrupt the program being
executed by the microprocessor ll and, hence, this
25 host processor accessing is transparent to the
microprocessor ll.
A second and different mode of data transfer
;: between the host processor l and the I/O controller
- 2, or, more particularly, the controller dual port
30 storage unit 22, is also provided. This second mode
is a so-called cycle steal data transfer mode with
the individual data word transfers being initiated
~ and controlled by the I/O controller 2 and with the
data words being cycle stole into or out of the host
35 processor main storage unit 7. Normally, this
cycle steal mode is used for transferring a
multi-word block of data between the host processor
., .
',~
,,
,.,
BC9-79-00~
,, I , . .. .

32~5i
13
1 and the controller storage unit 22. In the present
embodiment, these cycle steal data transfers are
supervised and controlled by the direct memory
access controller 13. AS such, for each data word
transfer, the DMA controller 13 supplies a first
address to the host processor 1 by way of a cycle
steal address register 27 and a second address to
the dual port storage unit 22 by way of the micro-
processor bus 16. The address supplied to the host
processor 1 selects the location in main storage 7
to (or from) which the data is to be transferred and
the address supplied to the dual port storage 22
selects the location in the storage 22 from (or to)
which the data is to be transferred. The data word
- 15 is moved into or out of the host processor main
storage unit 7 in a cycle steal mode (via storage
bus 10), which means that such data transfer does not
cause an interruption of the program being executed
; by the host processor 1. This cycle steal data
transfer mode requires the use of two channels in
- the DMA controller 13, one for supplying the host
processor main storage addresses to the cycle steal
address register 27 and the other for supplying the
controller storage addresses to the s-torage unit 22.
The DMA controller 13 also includes a word counter
for keeping track of how many words in a multi-word
block of data remain to be transferred.
Operation of the DMA controller 13 is controlled
by host D~A request logic 28. For any given multi-
word cycle steal transfer operation, the addresscounters and the word counter in the DMA controller
13 are initially loaded to the proper starting values
by the microprocessor 11. Then the microprocessor
11 issues appropriate "start" signals to the request
BC9-79-006
, .,, ~....

14
logic 28 via lines 29. Thereafter, the Dl'~A controller
13 and the request logic 28 take over to handle the
cycle stealing of the multi-word block of data. For
each word transfer, the request logic 28 sends to a
handshake, interrupt and miscellaneous controls unit
30 a cycle steal request signal via line 31. In
response thereto, the controls unit 30 sends a cycle
steal reques-t signal to the host processor 1. When
the host processor channel portion 9 is ready to do
the data word transfer, it sends back a service gate
signal to the control unit 30 which, in response
thereto, produces a service gate capture signal which
is supplied via line 32 to the request logic 28.
This signal is used to coordinate the operation of
the DMA controller 13 with the operation of the host
processor channel portion 9. The handshake, interrupt
and miscellaneous controls 30 are generally similar
to those described in the above-cited U. S. Patent
4,038,642 to souknecht et al and, hence, will not be
described in detail herein.
As will be seen, the I/O controller 2 includes
circuitry for interleaving the host processor I/O
command type data transfers with the individual
data word cycle steal transfers provided by the DMA
controller 13. Thus, two different modes of data
transfer are provided between the host processor 1
and the I/O controller 2, with the individual transfers
for the two modes being interleaved to provide a
minimum of delay and a minimum of interference with
one another
~C~-79-006

32~S
A third mode of data transfer remains to be
considered, namely, the mode or manner of transferring
data between the dual port storage unit 22 and the
I/O units or I/O devices 3-6. In the present embodi-
ment, the microprocessor 11 is used to handle andcontrol this transfer of data between the storage unit
22 and the I/O devices 3-6. For the case of a storage
unit to device transfer, a first microprocessor
instruction cycle is used to address the storage unit
22 and to transfer a byte of data from the storage
unit 22 to an internal register in the microprocessor
11. A second microprocessor instruction cycle is
then used to address the desired I/O device and to
move the data byte from the microprocessor internal
register to the selected I/O device. When trans-
ferring data in the opposite direction, this sequence
is performed in reverse, namely, the microprocessor
ll fetches a byte of data from a particular I/O
device and then, during its next instruction cycle,
writes such byte of data into the storage unit 22.
The device control units 17-20 for the respective
I/O devices 3-6 inform the microprocessor 11 as to
when they are ready to send to or receive from the
storage unit 22 a byte of data. This informing
action is accomplished by way of interrupt request
signals which are sent to the programmable interrupt
controller 14. For each such interrupt request, the
programmable interrupt controller, in turn, sends an
interrupt request to the microprocessor 11 by way of
the microprocessor bus 16. The programmable interrupt
~; controller 14 includes a priority resolver which
operates when plural requests are received to determine
the order in which these requests are passed on to
the microprocessor 11.
'
, ''
BC9-79-006

16
In addition to performing its I/O data trans'r-r
activities, the microprocessGr 11 can also be used ~o
offload some of the programming functions normally
performed in the host processor 1. The micro?rocessor
5 11 can, for example, do some of the routine and re-occurrins
nurnerical calculations normally done in the host Frocessor 1. There
are several ways of doing this. A typical way would be to
have the host processor 1 transfer the appropriate
number crunching program routine into the dual port
10 storage unit 22. The routine transferred to the
dual port storage 22 would include all of the
instructions needed by the microprocessor 11 for
subsequently receiving from the host processor 1 the
numbers to be crunched, doing-the number cruncning
15 and thereafter transferring the results back to the ~
host processor 1. After the program routine has been Ç
; transferred, then whenever tne host processor 1 has a
set of the numbers to be crunched, it advises the
microprocessor 11 of this fact (via a particular I/O
20 command) and sends the numbers over to the dual port --
storage unit 22. Thereafter, as time permits, the
- microprocessor 11 does the number crunching under the
control of the numbe~ crunching program instructions
previously stored in the dual port storage unit 22.
25 After completion of the number crunching, microprocessor
11 causes the results to be sent back to the host
processor 1. Typically, the number crunching program,
the numbers to be crunched and the results, will be
transferred between the host processor 1 and the dual
30 port storage unit 22 by means of the host processor
cycle stealing mode which is controlled by the D`-~
control1er 13.
,, .
BC9-79-006
~ . . _

An interesting aspect of the host processor offloading
capability of the I/O controller 2 is that the particular
host processor functions offloaded to the I/O controller 2
can be changed from time to time, if desired. Thus, for
example, during a first interval of time a first type of
number crunching operation could be offloaded to the I/O
controller 2 and later, during a second interval of time, â
second and different type of number crunching function could
be offloaded to the I/O controller 2 to replace the first
number crunching function. Thus, where desired, the mission
of the I/O controller 2 can be changed from -time to time by
the host processor 1.
Description Of The I/O Controller Embodiment Of Fig. 2
Referring now to Figs. 2A, 2B, 2C and 2D, there is
shown in greater detail the construction of the I/O
controller 2 of Fig. 1. Fig. 2A should be placed on the
left side of Fig. 2B, Fig. 2C should be placed below Fig. 2A
and Fig. 2D should be placed below Fig. 2B to form a single
figure which will be referred to herein as Fig. 2. A minor
drawing difference to be noted is that a unit 33 shown in
Fig. 2C is intended to include some, but not all, of the
functions covered by the handshake, interrupt and
miscellaneous controls unit 30 of Fig. 1. More
particularly, the unit 33 of Fig. 2C includes only the
interrupt and cycle steal handshaking functions of the
controls unit 30 of Fig. 1.
For the present embodiment, â "word" is assumed to be
composed of two bytes and a "byte" is assumed to be composed
of eight bits.
With reference to Figs. 2A-2D, the host processor
channel bus 8 is comprised of a two-byte data bus 34, a
two-byte address bus 35 and a multi-line control bus 36.
11.'~

18
The two-byte (or one word) data bus 34 includes 16
parallel data bit lines which are subgrouped into a
first 8-bit data bus 34a for the high order byte of
the 2-byte host processor data word and a second
8-bit data bus 34b for the low order byte of the
2-byte data word. In a similar manner, the address
bus 35 is composed of 16 parallel address bit lines
which are subgrouped into an 8-bit address bus 35a
for the higher order address bits and an 8-bit address
bus 35b for the lower order address bits. The control
bus 36 is comprised of approximately 45 parallel
control lines and these control lines and their func-
tions are discussed in greater detail in the above-
cited U. S. Patent 4,038,642 to souknecht et al.
The microprocessor I/O bus 16, on the other
hand, is comprised of a l-byte data bus 37, a 2-byte
address bus 38 and a multi-line control bus 39.
The data bus 37 has 8 parallel data bit lines. The
address bus 38 has 16 parallel address bit lines and
these are subgrouped into a first 8-bit address bus
38a for the higher order address bits and a second
8-bit address bus 38b for the lower order address
bits. The control bus 39 includes somewhere on the
order of 25 parallel control signal lines, correspond-
ing approximately to the number of control terminalsof the microprocessor 11 plus a few additional lines
for the control terminals for some of the other units
which do not match up with or complement the micro- -
processor control terminals. These control lines
j 30 are described in greater detail in the various Users'
Manuals and other technical literature published by
the Intel Corporation and relating to the Intel 8085A
microprocessor.
BC9-79-006

As shown in Fig.2A , the dual port s.Grace
unit 22 is actually comprised of a nur~er of separ?te
random access storage units, the number of such
storage units being equal to the ratio of :1 to ;;,
where M denotes the width of the host processo~ data
bus 34, and N denotes the width of the microprocesso~
- data bus 37, with M being a multi~le of ~. In tne
; present embodiment, M is equal to two bytes and :J
is equal to one byte, giving a ratio of M to ~ of
2. Thus, in the present embodiment, the dual port
storage mecnanism 22 iâ composed of two separate
random access storage units 22a and 22b, each having
a width of one byte. The storage unit 22a is used
for storing the high order bytes of the various two-
byte data words and thus is coupled to the high bytedata bus 34a of the host processor channel bus 8.
Storage unit 22b is used for storing the low orcer
bytes of the various two-byte data words and, as
such, is coupled to the low byte data bus 34b of the
host processor channel bus ~.
~:
The high byte and low byte storage units 22a
and 22b are part of~a novel data interface mechanism
for interfacing an M-byte data bus with an N-byte
data bus for the particular case where M is equal to
two and N is equal to one. Thus, for the more
general case, the number of such separate storaae
units is made equal to the ratio of M to N. Thus,
for example, for the case of a host processor havins
a 4-byte channel data bus and a microprocessor having
a 1-byte data bus, four such separate storage units
would be used. Also, in the more general case, the
width of each such storage unit should be equal to
N, the width of the narrower of the two data buses.
. .
. .
~ BC9-79-006
. ..

As indicated in Fig.2A , the I/O controller 2
also includes a separate and differcnt selectivel;
operable N-byte data transfer mechanism for each of
the different storase units 22a and 22b. In the
present embodiment, these data transfer mechanisms
take the form of one-byte two-way drivers 40 anc 41.
For sake of example, each of these drivers 40 and '1
is assumed to be an Intel 8286 8-bit parallel bi-
directional bus driver. One side of the 8-bit
drivers 40 is coupled by way of an 8-bit storage bus
42 to the data terminals of the high byte storase
unit 22a and the other side or set of I/O terminals
of the drivers 40 are coupled to the 8-bit micro-
processor data bus 37. In a corresponding manner,
one side of the 8-bit drivers 41 is coupled by way
of an 8-bit storage bus 43 to the data terminals o
the low byte storage unit 22b and the other side of
drivers 41 is coupled to the 8-bit microprocessor
data bus 37.
Each of the drivers 40 and 41 has two control
terminals, namelyi, a direction control terminal D and
an output enable co~trol terminal OE. Iihen the
, direction control terminal D is at the zero level,
data can flow from right to left and, when D is at
,~ 25 the one level, data can flow in the o??osite
direction, namely, from left to right. When the
output enable terminal OE is at the zero level, all
output lines of the drivers are set to a high
impedance output state and the drivers are disabled
- 30 so that no data can pass therethrough. When the OE
terminal is set to the one level, the drivers are
enabled and are in a condition to pass data in the
direction determined by the binary level at the
direction control terminal D.

S
~1
As will be seen, these drivers 40 and 41 are
rendered operative, that is, enabled, only when data
is being transferred between the storage units 22a
and 22b and the microprocessor data bus 37. ~lso,
they are enabled in an alternating manner for trans-
ferring successive data bytes between the microprocessor
data bus 37 and alternate ones of the storage units
22a and 22b. II1 other words, for a first data byte,
drivers 40 are turned on and drivers 41 are turned
off to enable this data byte to be -transferred to or
from the high byte storage unit 22a~ Then, for the
next data byte, drivers 41 are turned on and drivers
40 are turned off to enable the data byte to be
transferred to or from the low byte storage unit 22b.
In this manner, only one byte at a time is transferred
to or from the one-byte microprocessor data bus 37.
The I/O controller 2 further includes a
selectively operable M-byte data transfer mechanism
for coupling the data terminals of the different
storage units 22a and 22b to different N-byte sub-
groups of the M-byte host processor channel data bus.
In the present embodiment, M is two and N is one so
that the data terminals of the different storage
units 22a and 22b are coupled to the respective ones
of the one-byte subgroups 34a and 34b of the 2-byte
channel data bus 34. This data transfer mechanism
includes 16-bit two-way drivers 44, 16-bit two-way
drivers 45, a 16-bit or 2-byte data register 46 and
a register control unit 47. For sake of example, each
of the drivers 44 and 45 is assumed to be comprised
of two Intel 8286 8-bit parallel bidirectional
drivers. For simplicity of illustration, each set of
two 8-bit driver units is represented by a single
block in Fig. 2a. The connections are such that the
high byte storage unit 22a is connected to the high
~C9-79-006

22
byte data bus 34a and the low byte storage unit 22b
is connected to the low byte data bus 34b.
These drivers 44 and 45 also have direction
control terminals D and output enable control terminals
OE. In this case, however, the orientation of the
drivers 44 and 45 is such that when the direction
control terminal D is at the zero level, the data
flow direction is from left to right, that is, from
the channel data bus 34 to the storage units 22a and
22b. For the moment, it is assumed that these
direction and output enable control signals are
obtained from a storage control logic unit 48 and,
in fact, their manner of generation will be explained
hereinafter in connection with the details of the
storage control logic 48.
:
For sake of example, the data register 46 is
assumed to be a pair of Intel 8282 8-bit input/output
port units. Each such unit includes eight bipolar -
latches, each having a three~state output buffer. A
strobe signal STB is used to load the latches and an
output enable signal OE is used to enable the output
buffers. When not enabled, these latch output
buffers present a high output impedance to the register
. output terminals. In the present embodiment, the
- 25 input terminals of the data register 46 are coupled
to the same data lines as are the output terminals of
the data register 46. Thus, each individual bit input
terminal is, in effect, connected to its corresponding
individual bit output terminal. As will be seen,
there may be occasions when both the strobe and output
enable control signals are at the one level at the
same time. This means that the latch output buffers
will be enabled at the same time that the latches are
being loaded. This is a permissible condition and
will not cause injury to either the latches or the
output buffers.
~C9-79-006
,,

82~
23
As will be seen, the two-way drivers 45 are
never enabled at the same time that one or the other
of the one-byte drivers 40 and 41 are enabled. Thus,
the data terminals of the storage units 22a and 22b
can be connected to one or the other of the channel
data bus 34 and the microprocessor data bus 37, but
never to both at the same time. As is apparent, the
two-way drivers 45 serve to transfer data to or from
both of the storage units 22a and 22b in a simultaneous
manner. This is in contrast to -the alternate byte-
by-byte transfers provided by the one-byte drivers 40
and 41.
The purpose of the data register 46 is to
temporarily store a 2-byte data word for those cases
where the host processor 1 is not ready to accept
the data word at the same moment that the I/O
; controller is wanting to transmit the data word and
vice versa. For example, the I/O controller 2 can
read a data word out of the storage units 22a and 22b
and, if the host processor 1 is not quite ready to
receive it, then such data word is temporarily held
in the data register 46. Thereafter, when the host
processor 1 becomes ready, the two-way drivers 44 are
enabled to place the data word being held in the
data register 46 onto the host processor data bus 34.
If, on the other hand, the host processor 1 were
ready at the same time as the I/O controller 2, then
both the two-way drivers 44 and the two way drivers 45
would be enabled at the same time so that the data
word could be passed straight through to the host
processor data bus 34. In this case, the presence
of the data register 46 is of no conseguence.
',-
,
,s
,i BC9-79-006
,,
,,

24
Similar considerations apply when the data word
is being transferred in the opposite direction, namiely,
from the host processor data bus 34 to the storage
units 22a and 22b. If the storase units 22a and 22b
are not ready in time, then the data word is tem?orarily
held in the data register 46 and the drivers 45 are
not enabled until the storage units 22a and 22b
become ready. Thus, the use of the data resister ~o
helps take into account differences in timing between
the host processor 1 and the I/O controller 2.
Before discussing the various addressins ~ -
related mechanisms, it is helpful to consider the
various items that may appear at different times O.
the host processor channel bus 8. These items are
shown and explained in Figs. 3-7. rlore particularly,
these figures explain the usage of the host ?rocessor
channel bus 8 as set forth by the architectural
requirements for the IBl~l*Series/l I/O channel bus.
- Fig. 3 shows the layout of the immediate device
control block (IDCB) which the host processor 1
places on the channel bus 8 when it wants to send
an I/O command to a peripheral unit such as the I/O
controller 2. This is a 4-byte control block wherein
the first byte (Byte 0) is an 8-bit I/O co~mand, the
second byte (Byte 1) is an 8-bit device address and
-~ the third and fourth bytes (Bytes 2 and 3) contain
either a 16-bit direct program control (DPC) data
word or a 16-bit device control block (DCB) starting
address. The I/O command (Byte 0) is sent out on
the high order address byte bus 35a and the device
address is sent out on the low order address b~te
bus 35b. The high order and low order bytes of the
2-byte data word or 2-byte DCB address are sent out
on the respective ones of the high order data byte
bus 34a and the low order data byte bus 34b, the
*Registered Trade Mark

3Z~5
high order byte being IDCB Byte 2 ~bits 16-23) and
the low order byte being IDCB Byte 3 (bits 24-31).
All four of these IDCs bytes are sent out si~,ultane-
ous ly .
The chart of Fig. 7 explains the significance
of the different classes or categories of I/O
operations for the different I/O commands. As is
apparent, bit 1 of the I/O command is used to
distinguish between read type and write type
operations. Read operations are those where data
or other information is to be transferred from an I/O
unit to the host processor and, conversely, write
operations are those where data or other information
`~ is transferred from the host processor to an I/O unit.
Another way of classifying the I/O operations
is as to whether they are direct program control
(DPC) operations or cycle steal operations. Con-
: ~ .
sidering first the case of DPC operations, each DPC
read type command enables a 2-byte word of data or
status information to be transferred from the I/O
controller 2 to the host processor 1. Each DPC write
type operation enables a 2-byte word of data or
control information to be transferred from the host
processor 1 to the I/O controller 2. The DPC data
word (IDCB bits 16-31) is transferred by way of the
channel data bus 34 and is stored into or transferred
out of the dual port storage unit 22a, 22b, with the
higher order byte (Byte 2 or bits 16-23) being stored
into or read from the high byte storage unit 22a and
the lower order byte (syte 3 or bits 24-31) being
stored in or read from the low byte storage unit 22b.
This type of data transfer is called "DPC" because the
'' transfer of each data word is undeF the direct control
;
/
BC9-79-006
,,

26
of the host processor proyram and the host processor
must issue a separate I/O command for each word
transferred.
:` :
As previously mentioned, the actual cycle
stealing of data into or out of the host processor
main storage unit 7 is controlled by the I/O
controller 2. Before such cycle steal operations
can be commenced, however, it is necessary for the
host processor 1 to send a start cycle steal command
10 to the I/O controller 2. Bytes 2 and 3 (bits 16-31) -
of the IDCB for such a start cycle steal command
contain the address in main storage 7 at which is
stored the first word (Word 0) of an eight-word
device control block (DCB). A typical format for
~ 15 this eight-word device con-trol block is shown in Fig.
; 4. The main storage starting address (Word 0
address) of this device control block is transferred
by way of the channel data bus 34 and stored into the
dual port storage units 22a and 22b. This main
storage starting address is thereafter used by the I/O
controller 2 to cycle steal the eight words of the
Fig. 4 device control block out of the main storage
unit 7, such DCB words being transferred to and
stored into the dual port storage units 22a and 22b.
The microprocessor 11 thereafter uses the informa-
tion contained in some of these DCB words to initiali~e
the DMA controller 13 to the proper starting
conditions for the desired data transfer cycle
stealing operations. Thereafter the cycle stealing
of the individual data words into or out of the main
storage unit 7 is controlled by the DMA controller
13. For each of these individual data word transfers,
.
BC9-79-006

;5
27
the usage of the host processor channel bus 8 is as
indicated in Fig. 5. The main storage data a~dress
is sent from the I/O controller 2 to the host ~rocessor
1 via the channel address bus 35 and the data word
to be transferred is transferred via the channel data
bus 34. The main storage address is the address in
the main storage unit 7 to which or from ~hich the
~; data word is to be transferred.
A further type of data word that is at tim,es
transferred by way of the channel data bus 34 is the
interrupt identification (ID) word sho-.m in Fig. 6.
This interrupt ID word is sent from the I/O controller
2 to the host processor 1 for purposes of notifying
the host processor 1 of some condition or event that
has occurred out in the I/O controller 2 or to notify
the host processor 1 that the I/O controller 2 needs
service or, more accurately, that the I/O unit
identified by the dévice address needs service. The '
interrupt information byte (IIB) identifies the type
of service that is needed. As will be seen, the proper
interrupt ID word is set into the stcrage units 22a
and 22b b~f the microprocessor-ll and is thereafter
transferred from such storage units 22a and 22b to
the host processor 1 by way of the channel data bus
34.
As indicated in Fig. 2A, the address decoder 23
includes an 8-bit address comparator circuit 50. One
set of input terminals for this comparator 50 is
coupled by way of two-way drivers 51 to the low order
aadress byte bus 35b for receiving the device acdress
byte portion of an IDCB. The other set of in?ut
terminals for the comparator 50 is coupled to
.
B

;:~
~ 8
address jumpers 52 which are jumpered to re?resent
the predetermined or preassigned device addresses
which are assigned to the I/O units which are attached
to the I/O controller 2. ~Yhen the device address
appearing on the low byte address bus 35b matches one
of the device addresses provided by jum?ers 52, ~he
~' address comparator 50 produces a "controller selec-"
signal on an output line 53. If, at this time, the
i host processor 1 is sending out an address gate
signal on the address gate line of the channel control
-~ bus 36 (which will be the case if a valid IDCB is
present on the channel bus 8), then an AND circuit 5
will produce an address gate capture signal on its
output line 24. Among other things, this address sate
~ 15 capture signal is supplied by way of a driver circuit
.~ 55 to produce an address gate return signal on the
~ address gate return line of the channel control bus
,` 36: This tells the host processor 1 that the device
,~ address has been properly detected and that the I/O
controller 2 is ready to proceed with the IDCB data
transfer.
For sake of example, it is assumed that the
~ ~ two-way drivers 51 are comprised of two Intel 8286
s 8-bit parallel bidirectional driver units. For
simplicity, they are shown as a single block in Fig.
2A. One of these 8-bit drivers connects the high byte
' channel address bus 35a to an internal high byte ~
; address bus 56, while the other of these 8-bit drivers
connects the low byte channel address bus 35b to an
,, 30 internal low byte address bus 57. The orientation of
the drivers 51 is such that, when the direction
control signal D is at the zero level, the drivers
Sl are set to transfer data from left to right or, in
other words, from the channel address bus 35 to the
ç~
,, ~ .......
, "

29
internal buses 56 and 57. The output enable control
terminal OE (not shown) of drivers 51 is permanentl
connected to a voltage source so that the outpu-s o~
such drivers 51 are always enabled. Because of this
and because the direction control signal is normall~
at the zero level to provide a left to riaht data
transfer direction, the address comparator 50 is able
to monitor the low byte address bus 35b on an alr,ost
continuous basis. The only time it cannot is ~hen a
main storage address is being sent to the host ?ro-
cessor 1 by the cycle steal address register 27. ?
- During such a main storage address transfer, a cycle
- steal servlce gate (CS/SG) capture signal is present
to place the direction control terminal D at the o-.e
level to cause the direction of data transfer to be
from right to left for the duration of sucn signal.
The cycle steal address reyister 27 is a 16-bit
register and, for ex'ample, may be comprised of a
pair of Intel 8282 8-bit input/output port units.
The main storage address to be sent to the host F
processor 1 is obtained from the D~ controller 13
via microprocessor address buses 38a and 38b and is
strobed into the address register 27 by the output
signal from an AND circuit 58. This strobe signal is
produced when the AND circuit 58 receives both a
MEMW (memory write) signal from the MEil~ line of the
microprocessor control bus 39 and a DAC~ 0 signal
from the D~IA controller 13. These signals will be
discussed in greater detail hereinafter. The output
enable signal for the address register 27 is provided
b~ the same service gate capture signal as was dis-
cussed for the drivers 51.
.~ , -.
.
; ~;
i.

3Z6~5
hen needed, the device address value ~rovided
by the address jumpers 52 can be supplied by ~"ay of
8-bit drivers 59 to the micro?rocessor data bus 37.
~lore particularly, the microprocessor 11 can transfer
this address jumper address value to the low byte
storage unit 22b for purposes of providing the device
address portion of the interrupt ID word shown in
Fig. 6.
:`
The appearance of an address gate capture
signal on line 24 causes several things to happen.
For one thing, it enables a device select decoder 60
to decode the device address appearing on the
internal low byte address bus 57 and to activate the
particular one of its device select output lines 26
which corresponds to that device address. ~hus, for
example, if the device address on the internal bus
- 57 is for I/O device A, then the device A device
select line is energ'ized. As previously indicatedj
these device select lines 26 run to the programmable
interr~pt controller 14 as is better shown in Fig.2D.
These device select lines A-D are connected to four
different interrupt request inputs of the interrupt
controller 14.
~ .
When one of these device select lines is
activated, it causes the interrupt controller 14
to send an interrupt request signal to the micro-
processor 11 by way of the microprocessor control bus
39. After acknowledgment of the interrupt request by
the microprocessor 11 (via an interrupt acknowleds.lent
signal on another line of the control bus 39), the
interrupt controller 14 will send to the micro?rocessor
11 a CALL instruction which causes the microprocessor
, 11 to branch to the appropriate service routine for
processing the I/O command for the I/O device to
' 35 which such command is directed. A separate command
,.. .

processing service routine is provided in the con-roi
prosram storage 12 for each OL the different I~O
units or l/O devices attached to the I/O con~roller
2.
At this point it should be noted that the I/O
controller of Fig. 2 uses a ?air of prograr~m2ble
interrupt controllers, as opposed to the sinsle
interrupt controller 14 shown in Fig. 1. Tne second
interrupt controller is identified by reference
numeral 61 and is connected in cascade with the first
interrupt controller 14 to provide, in effect, a
single interru?t controller capable of handling twice
as many interrupt requests. The second in-erru
controller 61 is also assumed to be an Intel 8259
programmable interrupt controller. The operation o_
two such controllers in a cascade fashion is adequately
covered in the Intel technical literature and will
not be repeated heréin.
A second result which is produced by the
appearance of an address gate capture signal on line
24 is that thè I/O command appearing on internal
address bus j6 is stored into the command resister
file 25. For sake of example, it is assumed the
command register file 25 is comprised of two Te:;as
Instruments type SN74LS670 4-by-4 register files.
These register files are manufactured and marketed
by Te~as Instruments, Inc., of Dallas, Texas. These
two 4-bit wide register files are operated in unison
to provide, in effect, a single register file having
a width of 8 bits or 1 byte, with the four one-byte
locations being separately addressable. In other
, .
}
,. ~
"
.. , __, .. . .
,,

32
words, register file 25 is just like a stack of ~our
addressable l-byte registers. The construction of
the register file 25 is such as to permit simultaneous
writing into one of the byte locations and reading
from another of the byte locations.
The address gate capture signal on line 24 is
supplied to the write enable terminal of the register
file 25 and the lowest order two address bits on the
low order internal address bus 57 are supplied to the
write select or write addressing terminals of the
register file 25. In the present embodiment, the
four I/O devices attached to the I/O controller 2 are
assigned four consecutive device addresses. In this
case, the two lowest order device address bits
appearing on bus 57 are sufficient to distinguish
between the four I/O device addresses. Thus~ a
different one of the l-byte locations in the register
file 25 is assigned to each of the different I/O
devices attached to the I/O controller 2. For
purposes of explanation, it is assumed herein that
the two lowest order address bits on the bus 57 have
the following relationship to the I/O units: 00 is
for device A, 01 is for device B, 10 is for device
C and 11 is for device D. The I/O commands appearing
on the bus 56 are stored at the locations in the
register file 25 according to the device addresses
and, hence, the I/O devices for which they are
intended. Thus, any I/O command for device A is
stored at the 00 location, any command for device B
is stored at the 01 location, etc.
BC9-79-006
.. ..

33
The microprocessor 11 controls the readout of
the I/O commands from the register file 25. In
particular, the microprocessor 11 executes a memory
read or move from memory instruction wherein the
address it places on the microprocessor address bus
38 is such as to produce a chip select 5 (CS5)
signal and the two lowest order address bits on the
` microprocessor address bus 38 are of the appropriate
value to select the desired byte in the register
file 25. The CS5 signal is supplied to the read
enable terminal of the register file 25 and -the two
lowest order address bits are supplied to the read
select terminals of the register file 25. This
~; causes a readout of the desired I/O command which is
then transferred to the microprocessor 11 via a bus
~ 62 and the microprocessor data bus 37.
:
The I/O controller 2 further includes address
selector circuitry 63 for selectively transferring
address bits from either the microprocessor address
bus 38 or the host processor channel address bus 35
to the address circuitry of the random access
storage mechanism 22a, 22b. Thus, the storage units
22a and 22b can be addressed by either the host
prosessor 1 or one of the address producing units
connected to the microprocessor bus 16. In the
present embodiment, each of the microprocessor 11 and
the DMA controller 13 can supply addresses to the
microprocessor bus 16 for purposes of addressing the
storage units 22a and 22b.
This microprocessor bus addressing is indicated
by the buses 64 and 65 which, respectively, connect
the microprocessor address buses 38a and 38b to one
:,
/
,,
~ BC9-79-0~6
,~,

~ ~8Z~S
34
set of input terminals of the address selecto~ 63.
The other set of input terminals of the address
selector 63 is connected to the internal address buses
56 and 57 which are, in turn, connected to the host
processor address buses 35a and 35b, respectiveli-.
Under the control of a control signal from the storage
control logic 48, the address selector 63 selec.s
which of these two address inputs is to be su~?lied
to the address terminals of the storage units 22a,
22b. As indicated by the common address bus 66, the
address value appearing at the output terminals of
the address selector 63 is always supplied to both o'
the storage units 22a and 22b. Further details of
the address selection process will be discussed
hereinafter in connection with Fig. 13.
For sake of example, it is assumed that the
address selector 63 is comprised of four Texas
Instruments type SN7~4LS257A 2-line-to-1-line data
selector units. These units are marketed by Texas
Instruments, Inc., of Dallas, Texas, and each such
unit is capable of handling the two-to-one selection
for four output lines. Thus, four such units can
handle the two-to-one selection for 16 output lines.
~s will be seen, some of these 16 possible ou~put
lines are not used for addressing the storage units
22a and 22b and, hence, are left disconnected.
For the present moment, it can be assumed that
the allo~ host connect signal produced by the stora~e
control logic 48 and supplied to the address selector
63 by way of line 67 is produced in response to the
address gate capture signal and corresponds to such
address gate capture signal. This is approximately

~82~
correct and will suffice for purposes of the e~plana-
tion being given at this point. The binary one level
of this allow host connect signal on line 67 causes
the address selector 63 to switch to the left hand
input terminals to supply the host processor address
bus bits to the storage units 22a and 22b. Conversely,
when the allow hos-t connect signal is not present on
the line 67, this line goes to a binary zero value
- and the address selector 63 is switched to select the
right hand input terminals to connect the microprocessor
address bus bits to the storage units 22a and 22b.
;As can be seen from the foregoing, the appearance
of the address gate capture signal on line 24 causes
three primary things to happen. First, it enables
; 15 the device select decoder 60 to supply a unique device
indicative signal to the programmable interrupt
controller 14. Secondly, it causes the I/O command
to be stored into the register file 25. Thirdly, it
causes a host processor derived address value to be
supplied to the storage units 22a and 22b. This,
together with related control signals supplied to the
drivers 44 and 45 and the data register 46, enables
the data word portion of the IDCB to be transferred
from the host processor channel data bus 34 to the
storage units 22a and 22b, or vice versa.
Thus, all four bytes of the immediate device
control block (IDCB) are digested by the I/O controller
2 during one and the same interval of time, this being
the interval of time at which they are placed on the
host processor channel bus 8 by the host processor 1.
Also, this digesting of the IDCB bytes is transparent
to the microprocessor 11. The microprocessor ll does
BC9-79-006
., ~

~821~;5
36
not know that it has happened, except at such later
time as it receives and accepts an interrupt request
from the programmable interrupt controller 14. The
fact that the I/O controller 2 is always capable of
accepting the immediate device control block when it
is presented by the host processor means that the I/O
controller 2 never has to return a "controller busy"
signal to the host processor 1. This, of course,
prevents lost time on -the part of the host processor
10 1.
The I/O controller 2 also includes a chip select
decoder 68 which is responsive to the higher order
address bits on the microprocessor address bus 38a
for decoding same to produce various chip select
signals CS0, CSl, CS2, ... CSn. These chip select
signals are used to select or enable different ones
of-the other units in the I/O controller 2. Thus, for
example, the chip select signal CS0 is used to
select the control program storage 12, the chip
select signal CSl is used by way of an AND circuit
69 to enable the two-way drivers 41 and the chip
select signal CS2 is used by way of an AND circuit
70 to enable the two-way drivers 40. The CSl and
CS2 signals are also used to select between the two
different ones of the storage units 22a and 22b,
this being accomplished by way of the storage control
logic 48. In this regard, the CS3 chip select signal
is used via the logic 48 to simultaneously select
both of the storage units 22a and 22b. This
simultaneous selection is done for purposes o~ trans-
ferring data words between the host processor data
bus 34 and the storage units 22a and 22b during the
cycle stealing operations controlled by the DMA
controller 13. ~hus, lt is the DMA controller 13
.
"
~3C9-76-006

'Z65
which supplies the address to the chip select decoder
68 to produce the CS3 chip select signal.
Referring to Fig. 2D there is shown examples
of four specific I/O units that can be attached to
~ 5 the microprocessor bus 16. The first I/O unit is
1~ comprised of a keyboard and cathode ray tube (CRT)
display device 71 and its associated serial co~munica-
tion interface 72. The second I/O unit is com?risec
of a keyboard and CRT display device 73 and its
associated serial communication interface 74. The
third I/O unit is comprised of a wire matrix printer
75 and its associated printer controller 76. The
fourth I/O unit is comprised of a floppy disk storase
unit 77 and its associated floppy disk controller 78.
Each of the serial communication interfaces 72 and
74 can be, for example, an Intel 8251A programmable
communication interface unit. This is a universal
synchronous/asynchrqnous receiver/transmitter (~S~RT)
- and is currently manufactured and marketed by the
Intel Corporation of Santa Clara, California. The
~ printer controller 76 can be, for example, either an
-~ Intel 8048 or an Intel 8049 microprocessor. The
floppy disk controller 78 can be, for example, an
Intel 8271 programmable floppy disk controller.
The foregoing particular types of I/O devices
and device control units are intended as exam~les
only. A wide variety of different makes and types
of I/O units are available and can be attached to
- the microprocessor bus 16 in place of one or more of
30 those described above.
B
,

;5
38
Operation Of The Fig. 2 Controller Embodiment
Considering briefly a typical data transfer
operation for the I/O controller 2 of ~ig. 2, it is
initially noted that successive data bytes received
from an I/O device are alternately stored in the high
byte storage unit 22a and the low byte storage unit
22b. Considering the case where data is being
transferred from an I/O device to the host processor
l and assuming, for example, the I/O device is the
keyboard/display unit 71, the data bits are trans-
mitted serially from the keyboard display unit 71 to
the serial communication interface (serializer/
deserializer) 72. After the first byte of data is
assembled in the interface 72, it is transferred by
way of the microprocessor data bus 37 to the micro-
processor 11 and then from the microprocessor ll via
the data bus 37 and the two-way drivers 40 to the
high byte storage unit 22a. After the second byte
of data is assembled by the interface 72, it is
transferred by way of the microprocessor data bus 37
to the microprocessor 11 and then by way of the
microprocessor data bus 37 and the two-way drivers
41 to the low byte storage unit 22b. Subsequent
successive bytes are alternately stored in this same
manner in the high byte storage unit 22a and the low
byte storage unit 22b, the third, fifth, seventh,
etc., bytes being stored in the high byte storage 22a
and the fourth, sixth, eighth, etc., bytes being
store~ in the low byte storage 22~.
,
,
"
/
BC9-79-00~
. .

~8~
39
After the desired amount of data for the I/O
`-device in question has been accumulated in the dual
port storage ~nits 22a and 22b, such data is there-
after transferred to the host processor 1. When data
is transferred to the host processor 1, it is
transferred to such host processor two bytes or one
word at a time. In other words, a high order byte is
read out of the storage unit 22a simultaneously with
the readout of a low order byte from the storage unit
22b and both such bytes are simultaneously transferred
to the host processor 1 by way of the two-way drivers
45 and 44 and the host processor channel data bus 34.
~s an intermediate step, the two-byte data word may
be temporarily stored in the 16-bit data register 46.
This intermediate step (which won't be performed if
the host processor responds fast enough) enables
adjustment of the controller timing to the host
interface handshake timing.
~-When data is being transferred in the opposite
direction, namely, from the host processor to the
I/O device, then the opposite kind of thing happens.
; Each 2-byte data word is sent to the I/O controller
2 via the host processor data bus 34 and the high
order byte is stored in storage unit 22a and the
low order byte is stored in storage unit 22b.
The data bytes subsequently transferred to the I/O
device are alternately taken from the high byte
storage unit 22a and the low byte storage unit 22b.
~cs-7s-~06
~ ",,.~,, .

~82~
The use of the separate high byte and low byte
storage units 22a and 22b provides an automatic byte-
to-word 50r word-to-byte) formatting which is one of
the novel inventive Eeatures which is incorporated in
the I/0 controller 2.
In the Fig. 2 embodiment, the transfer of data
between the I/0 device and the dual port storage units
22a and 22b is controlled by the microprocessor 11.
When the I/0 device is ready for the transfer of a
data byte, it supplies an interrupt request (IR) to
the programmable interrupt controller (PIC) 61. PIC
61 then sends an interrupt request to the micropro-
cessor 11 which thereafter causes the microprocessor
11 to perform the necessary instruction routine for
transferring a byte of data from the dual por~
storage 22 to the I/0 device or vice versa. The
interrupt line running to the microprocessor 11 is
one of the control lines in the microprocessor control
bus 39.
In the Fig. 2 embodiment, data is normally
transferred between the host processor 1 and the dual
port storage units 22a and 22b in a cycle steal mode.
These cycle stealing operations are controlled by the
DMA controller 13 and host DMA request logic 28. The
internal construction of the DMA controller 13 will
be hereinafter described in connection with Fig. 10.
As will be seen, such DMA controller 13 includes four
separate address counters which are normally used to
perform D~A operations for four different I/0 devices.
In the present I/0 controller 2, however, this DMA
BC9-79-006

s
41
controller 13 is not used in the normal manner,
Instead, one of the DM~ address counters is used to
keep track of the host processor main storage acdress
and another of the DMA address counters is used to
keep track of the addresses for the dual port storage
units 22a and 22b. ~henever a particular D~5A request
(DRQ) line is activated, the DMA controller 13 puts
the corresponding address counter address onto the
16-bit microprocessor address bus 38. If two o_ more
D~ request (DRQ) lines are active at the same time,
then a priority resolver inside the D,~ controller 13
selects and processes the requests one at a time in
the appropriate order.
,:
~`~ For any given data word transfer, the Dl~
request logic 28 first activates the DRQ 0 line.
This causes the DMA controller 13 to put the host
processor main storage address to be used for this
data word transfer o,nto the microprocessor address
bus 38. This address is then strobed into the c,cle
steal address register 27, whereafter it is placed
on the 16-bit host processor address bus 35 by way
of the two-way drivers 51. At the appropriate point
after the main storage address is strobed into the
cycle steal address register 27, the DRQ 1 request
, 25 line is activated and/or recognized by the D~
controller 13 to cause the DI~A controller 13 to put
' the storage address for the dual port storage units
f 22a and 22b onto the microprocessor address bus 38.
This address is then transferred to the storage units
30 Z2a and 22b by way ot the address selector 63. Tnls
,
~ ~ h~
J
/'~ .,7_

~826~
42
address is the dual port storage aadress to or from
which the data word is transferred.
The foregoing DRQ 0/DRQ l sequence is repeated
for each data word transferred. The two Dl~ address
counters which are being used for these transfers
are incremented after each data word transfer. The
host D~ request logic 28 also initiates the genera-
tion of the cycle steal requests which are sent to the
host processor l, each such request being com~enced
immediately after the leading edse of the DRQ 0
signal is sent to the D~lA controller 13.
: '
Description Of The Fig. 8 Microprocessor
Fig. 8 shows in greater detail one possible
form of internal construction for the microprocessor
15 ll of Fig. 2. The microprocessor shown in Fig. 8 is . -
the Intel 8085A single chip 8-bit microprocessor.
With respect to the abhreviations used in Fig. 8,
CLK means "clock", RD means "read", WR means "write",
ALE means "address latch enable" and HLDA means
20 "hold acknowledge". The S0 and 51 lines are data
bus status lines and the IO/M line indicates whether
the read/write is a memory read/write or an I/O read/
write. The abbreviation INTR star.ds for "interrupt
request" and the abhreviation I~TA stands for
25 "interrupt acknowledge". The three RST inputs are
restart interrupt inputs. t
Fig. 9 is a timing diagram showing what happens
for a more or less typical instruction cycle for the
microprocessor 11. The particular instruction cycle

~8~
43 ~,
which is shown in Fig. 9 is for the O~T instruction
which causes the content of the microprocessor
accumulator register to be placed on the micro?ro-
cessor data bus 37 for transmission to the I/O ?ort
specified by the address placed on the microprocessor ~
address bus 38. Actually, the term "I/O port" in 4
the previous sentence is inaccurate in the sense that
the content of the accumulator register wil' be
transmitted to any element or device which is
connected to the microprocessor bus and ~hich is
responsive to or selected by the particular "?ort"
address appearing on the microprocessor address bus
38.
~,
An interesting peculiarity of the 8085A micro-
; 15 processor is that the low order address bits (bits
0-7~ are time multiplexed on the data bus output of
the 8085A. As indicated in both Fig. 8 and Fig. 2B 'g
these low order addr,ess bits are immediately latched
into an 8-bit latch 80 by the address latcn enable
(ALE) output pulse of the microprocessor. Latch
circuits 80 in turn drive the low order 8-bit micro-
processor address bus 38b.
The Io/rl decoder 81 shown in Fig. 2B is used
to convert the microprocessor RD, WR and IO/M ou.pu~
signals into the following four more conventional
signals: MEr~R~ MEM~, IOR and IO~, which res?ectivel~
stand for memory read, memory write, I/O read and
I/O write. These four signals produced by the IO/M
decoder 81 are supplied to and appear on four
separate control lines of the micro-
processor control bus 39. These signals are useà by
~.
~, , . ._

~8~5
44
various other of the units in the I/O controller 2.
As will be seen, the D~ controller 13 is also
connected to these four additional control lines and
can also produce these MEMR, MEMW, IOR and IO~7
signals.
The READY control terminal of the microprocessor
11 is of particular interest. It provides a means
for enabling external circuitry to place the micro-
processor 11 in a "wait" state. More particularly,
the microprocessor 11 includes internal circuitry
which is responsive to the absence of the external
READY signal for placing the microprocessor 11 in a
"wait" state. When the READY signal reappears, the
microprocessor 11 resumes its operations just as if
nothing had happened.
; BC9-79-006
, , ~, .. . .

~4~ 5
Description Of The Fig. 10 DMA Controller
Fig. 10 shows in greater detail one possible
form of internal construction for the direct memory
access (DMA) controller 13 of Fig. 2. The DMA
` 5 controller shown in Fig. 10 is the Intel 8257 single
chip four-channel programmable DMA controller. The
abbreviations used in Fig. 10 are as follows:
Term Meaning
IOR I/O Read
IOW I/O Write
CS Chip Select
HRQ Hold Request
HLDA Hold Acknowledge
~; MEMR Memory Read
MEMW Memory Write
AEN Address Enable
ADSTB Address Strobe
TC Terminal Count
DRQ DMA Request
DACK DMA Acknowledge
' BC9-79-006
i,'

46
The DMA controller 13 includes four separate
channels, namely, channels 0-3, which are normally
used to perform DMA operations for four different
I/O devices. Each channel includes its own address
counter and byte counter. Thus, channel 0 includes
address counter 82 and byte counter 83, channel 1
includes address counter 84 and byte counter 85,
channel 2 includes address counter 86 and byte
counter 87 and channel 3 includes address counter 88
and byte counter 89. The purpose of each address
counter is to provide for a particular I/O device
the addresses needed for addressing a storage unit,
these addresses being the addresses of the storage
locations which are to receive data from or supply
data to the particular I/O device in question. The
purpose of each byte counter is to provide for its
particular I/O unit a count showing the number of
bytes remaining to be trans~erred for the usual case
where a multi-byte block of data is to be transferred.
With respect to a particular I/O device, its DMA
address counter is incremented and its byte counter
is decremented after each byte is transferred for
such I/O device.
The DMA controller 13 also includes a priority
resolver 90 for handling the case where two or more
of the Dl~A request (DRQ) input lines are active at
the same time. In such case, the priority resolver
90 selects and processes the requests one at a time
in the appropriate order. As will be discussed in
greater detail hereinafter, the DMA controller 13 is
BC9-79-006
'

~ 7
operated in its rotating priority mode when used in
the I/O controller enlbodiment of Fig. 2. In tnis
rotating priority mode, the priority of the char.nels
has a circular sequence. After each D.~ channel is
serviced, the priority of each channel chanses. The
cilannel which has just been serviced will be given
the lowest priority.
; Fig. 11 is a timing diagram showins the variGus
D~IA signal waveforms for the case of two typical
10 successive D.~ cycles. When not active, the D~ ~
controller 13 sits in an idle state (SI). The D~ P
controller 13 time multiplexes some of the address
bits out of its data bus output in a manner simila-
to that which was done by the microprocessor 11. In
15 the case of the D~lA controller 13, however, it is the
higher order address bits (8-15) which are multiplexeG.
As-indicated in Fig.2B , these high order address bits -r
are immediately latc~hed into a set of 8 latch circuits
91 by the address strobe (ADSTB) which is generated
20 by the D~ controller 13.
A further point to note is that, when the D~
controller 13 is active, the operation of the micro-
processor 11 is suspended by placing it in a "hold"
state. ~ore particularly, shortl~ after the D.~
25 controller 13 receives a D~IA request (DRQ), it sends
a hold request (HRQ) to the HOLD terminal o. the
microprocessor ll via the HOLD line of the micropro-
cessor control bus 39. ~hen the micro~rocessor 11
enters the "hold" state and so long as it remains in
that state, it supplies a hold acknowledgment (HLDA)
signal to the D.lA controller 13. During this HLDA
";
,

~ 8
interval, the data and address outputs of the micro-
processor 11 are placed in a three-state or high
impedance condition so as not to affect the micropro-
cessor data and address buses 37 and 38. Also, the
output of the micropxocessor address latch 80 and
the IO/M decoder 81 are placed in the high impedance
condition by the address enable (AEN) signal. Thus,
during the HLDA interval, the DMA controller 13 can
place addresses on the microprocessor address bus 38
and the devices or elements which respond to these
addresses can place data on the microprocessor data
bus 37 without interference from the microprocessor
11. The placement of data on and the reading of data
from the microprocessor data bus 37 is controlled by
the read and write pulses produced by the DMA control-
ler 13.
The READY input control line for the DMA
controller 13 provides the same function for the DMA
controller 13 as was provided for the microprocessor
11 by its READY input control line. More particularly,
when the READY signal is present (READY line a-t the
binary one level), the DMA controller 13 operates in
its normal manner. When, on the other hand, the
READY signal is absent (READY line at a binary zero
level), the DMA controller 13 will go into a "wait"
state and will wait for the READY signal to reappear
before completing the current DMA cycle. In the
typical application, this "Not Ready" function is used
to elongate the storage read and storage write cycles
with Wait states for the case of relatively slow
storage units.
BC9-79-006

s
49
Description Of Fig. 12 Interrupt And Cycle Steal
Handshaking Unit
Referring now -to Figs 12A and 12B, there is shown in
greater detail the internal construction of the
S interrupt and cycle steal handshaking unit 33 of Fig.
2C. This unit handles the handsha~ing sisnaling
sequences with -the host processor 1 for two different
cases. The first case is where the I/O controller 2
presents a cycle steal request to the host processor
1 for purposes of cycle stealins a data word into or
out of the host processor main storage uni~ 7. The
: other case is where the I/O controller wants to
present an interrupt request to the host processor 1.
Considering first the case of a cycle steal
request, a cycle steal request signal is received
from the host D;~ request logic 28 by way of line 31
and is used to set a cycle steal request latch 92.
This produces a cycle steal request signal at the
output of latch 92, which signal is transferred by
way of an AND circuit 93 to a cycle steal request in
line in the host processor control bus 36. In due
course, the host processor 1 recognizes this cycle
steal request by sending out a 5-bit poll ID on the
poll ID bus portion 94 of the channel control bus 36
and a poll signal on the control bus poll line 95.
~ unique poll ID is used for responding to cycle
: steal requests and this unique ?oll ID is decoded by
. a cycle steal poll decoder 96. Decoder 96 then
produces an output signal which sets a cycle steal
compare latch 97. This produces a one level out?ut
at the output of latch 97 which is su?plied b~ way of
an OR circuit 98 to a first input of an AND circuit
, . ~ . .

8Z~5
so
99. The second input of AND circuit 99 receives the
poll signal via OR circuit 100. These two siqna's
being present at the two inputs of the A~D circuit 99
cause a poll return latch 101 to be set. This
supplies by way of an AND circuit 102 a poll return
signal to the host processor 1 which tells the host
processor 1 that the I/O controller is reay to
proceed.
The set condition of the'poll return Iatch 101
~ 10 plus the presence of the poll signal at the output of
; OR circuit 100 plus the set condition of the cycle
steal compare latch 97 cause a cycle steal poll
capture latch 103 to be set via A~ND circuit 103a.
~,~ After receipt of the poll return signal and ~.~hen it
is ready to do the data word transfer, the host pro-
cessor 1 sends out a service gate signal on the
service gate control line 104 of the channel control
bus 36. This service gate signal, together with a
set condition of latch 103, causes a cycle steal
service gate capture latch 105 to be set via AND
~ circuit 106. This starts the cycle steal service gate
;~ capture signal on the latch output line 32, which
signal is used to control the operation of various
other units in the I/O controller 2. This service
gate capture signal on line 32 is ter~inated ~v the -
trailing edge of the service gate signal via NOT
' circuit 107.
The output of the service gate capture latch, 105
is also supplied to a first input of an ~LND circuit
, ~ 30 108. The second input of ~ND circuit 108 is control-
, led by latch 109. Latch circuit 109 is set via A~'D
circuit 110 by the DACK O and ~IE~ signals which
occur when the main storage address is strobed into
!,
~,
'''
!l ~

s
51
the cycle steal address register 27. In other words,
they occur when the host processor main storage
address is ready and available to be sent to the host
processor l. The set condition of latch 109, plus
the presence of the cycle steal service gate capture
signal at the first input of AND circuit 108, produces
a service gate return signal which is supplied by way
of OR circuit 111 to the service gate return line in
the channel control bus 36. This service gate return
signal tells the host processor 1 that everything is
proceeding according to schedule.
Subsequent to receipt of this service gate
return signal, the host processor l sends out a data
strobe signal on the host data strobe line 112 in the
channel control bus 36. This data strobe signal is
transferred by way of a driver circuit 113 to a line
114 which makes it available to the other units in
the I/O controller 2. This data strobe signal is
used, for example, to control the strobing of the
data into the 2-byte data register 46 shown in Fig. 2a.
Considering now the interrupt portion of Fig. 12,
the microprocessor 11 initiates an interrupt request
by doing an I/O port type OUT instruction with the
appropriate address and data bus values to cause
activation of an AND circuit 115, which in turn causes
an interrupt request latch 116 to be set. In other
words, the address produced by the microprocessor 11
produces a CS8 chip select signal and the data value
on the microprocessor data bus is such that data bit
2 has a one value. Before proceeding further, it is
necessary to briefly consider -the manner in which the
IBM Series/l type processors handle interrupt
operations. In particular, they use a priority type
interrupt system wherein each of the various I/O units
- 35 attached to it are assiyned one of several possible
BC9-79-006
, ", . ...

~l~B~5
52
priority levels. In this scheme of things, the I/O
unit presenting the in-terrupt must present its
interrupt on a certain priority level interrupt line.
This is accomplished by loading in advance into the
I/O unit the priority level value to be used by such
I/O unit.
In Fig. 12, this priority level value is loaded
into the priority level register 117. This is
accomplished by issuing a so-called "Prepare" command
to the I/O controller 2, this command being detected
by a decoder 118 to activate an AND gate 119, which
is at that time receiving an address gate capture
signal at its other input, with the output of the AND
gate 119 being used to strobe into the priority level
register 117 the desired priority level value then
appearing on the channel data bus 34. The priority
level value in register 117 drives a decoder 120
having multiple output lines, only one of which is
activated in accordance with the priority level value
supplied by the register 117. The multiple output
lines of the decoder 120 are supplied by way of AND
. gates 121 to the multiple interrupt request in lines
in the channel control bus 36. Only the particular
interrupt request in line corresponding to the
priority level value in the register 117 is activated
by the decoder 120. The actual moment of presentation
.~ of the interrupt request to the.host processor 1 is
controlled by the interrupt request latch 116. When
this latch 116 is in its set condition, it supplies a
one level signal by way of AND circuit 122 to the AND
~` gates 121. This supplies the interrupt request to the
host processor 1.
.
/
BC9-79-006

~8~
In due course, the host processor 1 recoynizes
the interrupt request and responds thereto by sending
out a poll ID on the channel control bus portion 9~
and a poll signal on the channel control bus line 95.
The value sent out on the poll ID bus 94 is the value
of the interrupt level being used by this I/O
controller. This value is compared in the interrupt
poll compare unit 123 with the priority level value in
the priority level register 117. If the priority
level values match, then the interrupt poll compare
circuit 123 produces a one level output which is
supplied by way of AND circuit 124 to set an interrupt
compare latch 125, provided a valid interrupt request
is pending as indicated by the one level output of
the interrupt request la-tch 116. Assuming the
interrupt compare latch 125 is set, then this enables
the poll return latch 101 to be set by the poll
signal on channel control line 95. The setting of
latch 101, as before, generates the poll return signal
which is supplied back to the host processor 1.
;-
The set condition of the interrupt compare latch
125 is supplied by way of an AND circuit 126 to set
an interrupt poll capture latch 127, the other inputs
to the AND circuit 126 at this time being at the
binary one level.
In response to the poll return signal, the host
processor 1 in due course sends out a service gate
signal on the channel control line 104. This activates
the second input to an AND circuit 128 which, together
with the set condition of the interrupt latch 127,
causes a setting of an interrupt service gate capture
latch 129. This produces an interrupt service gate
,
~C9-79-006
,, ~, . . .

~82~;S
54
capture signal on line 130, this signal being used
by other units in the I/O controller 2. The interrupt
service gate capture latch 129 is reset by the
trailing edge of the service gate signal on line 104
via NOT circuit 131.
The output of the interrupt service gate capture
latch 129 is also supplied to an AND circuit 132,
the other input of which is assumed to be activated
at this moment by an allow host connect signal (to
be discussed hereinafter). The resulting one level
at the output of AND circuit 132 is supplied by way
of the OR circuit 111 to provide the service gate
return signal on the service gate return line in the
channel control bus 36. This service gate return
signal tells the host processor 1 that everything is
proceeding according to schedule.
~- The foregoing interrupt and cycle steal hand-
shaking mechanisms are particularly constructed for
the case where the host processor 1 is an IBM
Series/l processor. It is to be clearly understood,
however, that the invention is not limited to use with
an IBM Series/l type processor and can be used with
other types of processors. Where another type of
processor is used, the interrupt and cycle steal
handshaking mechanisms would be modified where
necessary to satisfy the peculiarities of such other
type of processor.
A point to note from the foregoing is that two
different types of service gate capture signals are
produced, one being produced for the cycle steal of a
'"~
;,-
~C9~79-006
.

:
s
data word to or from the host processor 1 and the
other being produced when the I/O controller 2
desires to interrupt the host processor 1.
Description Of Fig. 13 Storage Control ~r,d .`.c-resa
Selection Logic
. .
Referring now to Fig. 13A and Fiq. 13B, there is
shown in greater detail the internal construction of the
storage control logic 48 of Fig. 2A~ this beins the
control logic for the dual port storage 22a, 22b.
A first part of the Fig. 13 logic can be thought of
as being the "address selection logic". This portion
is represented by circuit elements 135-142.of Fig. 13A. This
135-142 logic controls the address selector 63.
When the output of flip-flop 138 is at the zero level,
the address selector 63 connects the microprocessor
address bus 38 to the address lines 66 running to the
high byte and low byte storage units 22a and 22b.
The same address, namely, the address appearing at
- the output of address selector 63 is always supplied
to each of these storage units 22a and 22b.
:
The purpose of the address selection logic
135-142 is to enable alternative addressing of tne
dual port storage 22a, 22b for host processor DPC
- (Direct Prosram Control) and other IDCB transfer
operations and for controller ini-tiated interrupt
request operations.
., .
.,
~,, ,,,~,
, _ .

56
A second ~ortion of tne Fis. 13 logic is .ep-e-
sented by circuit elernents 143-147 of Fig. 13A. These
elements control the "select" and "write" lines xunning to
the storage units 22a and 22b. Its "select" line
must be active in order for a storage unit to read
in or write out any data.
At this point, it is helpful to consider t.~e
memory address range map shown in Fig. 14. Tnis is
a map or tne lower half (0-32~;) of the total address
~-~ 10 range capable of being addressed by the 16-bit
~ microprocessor-address bus 38. As seen from Fig. 14,
- the second 8K (2000-3FFF in hexadecimal) of the
addressing range is used for the low byte storage 22b
-~ and the third 8K (4000-5FFF he~adecimal) is used Cor
the high byte storage 22a. As indicated on the lef~
side of Fig. 14, the three highest order bits of the ~,
,~ 16-bit microprocessor address bus 38 are used for
chip select purposes~.- These three highest order
microprocessor (~IP) address bits are not supplied to
- 20 the address selector 63. They are instead supplied
to the chip select decoder 68 which is shown in Fig.
2B and which generates chip select signals CSl, CS2
- and CS3, which signals are supplied to the dual port
storage unit select logic represented by circuit
elements 143-145 in Fig. 13A. Thus, if the adaress on
the microprocessox address bus 38 is in the 2000-3-FB
range/ the chip select signal CSl is active via OR
gate 143 to select the low byte storage 22b. If the
- microprocessor bus address is in the 4000-5FFF ra,nge,
then chip select signal CS2 is active via OR gate 14Y to
I ~

32~5
select the high byte storage 22a. If the '~P bus
address is in the 6000-7F~F ranse, then the chip
select signal CS3 is active via OR gate 145 and bo~h
of OR gates 143 and 144 to select both the hi~h by.e
storage 22a and the low byte storage 22b. This
enables the reading or ~7riting of a complete
2-byte data word. Note with respect to Fia. 14 thzt
~IP bus addresses in the 6000-7FFF ranse are used on~i
for chip selection purposes and that there is r.o
separate physical storage provided for this part of
the address range. ~ -
: ; '
For cycle steal operations, the storage "write"
line is controlled by the ~1E~ (memory write) sisnal
via OR gate 146. This signal is obtained from the
D~ controller 13 via the ~IP control bus 39. If tne
storage "write" line is not active, then the occur-ence
of a storage select signal will enable the storase
unit to do a read-ou't operation. (If "write" is off, ~,
the contents of the addressed storage location are
placed on the storage data bus by the occurrence of
the select signal).
A further thing to note from Fig. 14 is that the
32 lowest byte locations in each of storage 22a and
22b are reserved for and used only for host ?rocessor
I/O command (IDCB) transfer operations. Fig. 15 is
a blow-up or enlargement of the storage maps for
these 32 lowes-t b~te locations. The map of Fig. 15
applies to each of the byte wide storage units 22a
and 22b.

~8'~
The significance of what is meant by D~C (Direct
Program Control) operations is indicated in Figs. 3
and 7. Each DPC read command enables a 2-byte wora
of data or status information to be transferred from
the I/O controller 2 to the host processor 1. Each
DPC write operation enables a word of data or con.rol
information to be transferred from the host processor
1 to the I/O controller 2. As indicated in rig. 3,
the DPC data word (IDCB bits 16-31) is transferrnd
by way of the channel data bus 34. This DPC data
word is stored into (or transferred out of) the dual
port storage 22a, 22b, with the hisher order byte
(Byte 2 or bits 16~23) being stored in or read from
the high byte storage 22a and the lower order b;te
(Byte 3 or bits 24-31) being stored in or read from
the low byte storage 22b. This type of data trans'er
is called "DPC" because the transfer of each data
word is under the direct control of the host pro-
cessor program and the host processor must issue a
separate I/O command for each word transferred.
When a host processor I/O command is received
~ by and accepted by the I/O controller 2, the output
,; of the flip-flop 138 of Fig. 13A is turned on to
activate the "select host" output of the A~D gate 1~1.
This switches the address selector 63 so as to
connect the indicated host address bus bits to the 5
lowest order output lines of the address selector 63,
the remainder of the address selector inputs being
grounded as indicated at 148. This causes the da~a
word accompanying the I/O comlmand to be stored into
the dual port storage 22a, 22b in the manner indicated
,; .
~ ' .
:,
:~,
,
, _ _
,,

s
59 3
in ~ig. 15. Thus, if the I/O com~and is a tj?e 1
write command for device A, the two bytes o' tne
accompanying data word will be stored at the address
= 5 storage locations in storage units 22a and 22D.
Host address bits 14 and 15 define which device i- is
and, as indicated in Fig. 7, host address bits 1-3
define the operation type.
. , .
With reference to Fig. 2A, the acceptance o. 2
;~ host processor I/O command by the I/O controller 2
is signified by the occurrence of an address gate
capture signal at the output of the A~D sate 54
associated with the address compare circuit 50.
With reference to Fig. 13A,this address gate capture
signal is supplied via line 24 and OR gate 135 to the
AND gate 137. This enables the next occurring ALE
pulse from microprocessor 11 or the next occurring
address strobe (ADSTB) pulse from the D~A controller
13, whichever is thé first to occur, to set the
flip-flop 138. This produces the "Allow Host Connect"
: 20 signal on line 150 which is connected to the output
of flip-flop 138. This signal, via AND gate 141,
sets the address selector 63 to the "select host"
posi-tion. The "Allow Host Connect" signal is also
supplied to OR gate 145 to cause, via OR gates 143
and 144, the "select" activation of both storage
units 22a and 22b. The "Allow Host Connect" sis..al
is also su?plied to AND gate 1~7 to activate, via
OR gate 146, the storage "writc" line, provided the
I/O command is a "write" type co~mand (host address
bit 1 = 1).

6~
The use of the ALE and ~BSTB pulses at OR gate
136 enables the host processor 1, in effect, to cycle
steal the I/O command (IDCB) data word into the dual
port storaye 22a, 22b. In this regard, the dual
port storage 22a, 22b is, in actuality, the "main"
storage unit for the microprocessor 11 (and the Dl~A
controller 13) and this mechanism enables the I/O
command data word to be cycle stole into such "main"
storage without interrupting the program which is
being executed by the microprocessor 11 (or DMA
controller 13). This happens because the output of
the flip-flop circuit 138 is also connected by way
of a timer 151 and a NOT circuit 152 to the "Ready"
inputs of both the microprocessor 11 and the DMA
controller 13 via line 153 of the microprocessor
control bus 39. In particular, when the "Allow Host
Connect" signal goes to one, the output of NOT
circuit 152 goes to zero, thus removing the Ready
signal from the microprocessor and DMA controller.
This causes each of the microprocessor 11 and DMA
controller 13 to go into a "Wait" state. (Actually,
either one or the other but not both of the micro-
processor and DMA controller will be active at any
given moment and the Ready signal will affect only
the active one of these two units.)
This "not ready" condition will prevail for the
length of time the flip-flop 138 is in the "set"
state plus an additional length of time determined by
the timer 151, timer 151 being in the nature of a
one shot multivibrator. The flip-flop 138 is reset
cy the t ailing edge of the address gate capture
/
, 13C 9 - 7 g - 0 0 6
.,

~8'~:;5
61
signal via OR ga-te 139 and NOT circuit 140. The
additional time added by the timer 151 is dependent
on the particular type of circuit technology that is
used for the address selector 63 and the storage units
22a and 22b and in a typical application is selected
to be equal to the time duration of approximately two
microprocessor clock cycles. This additional time
interval is added in order to enable the address
selector 63 and its output lines 66 to settle down
after the address selector 63 is switched back to
the microprocessor address bus 38. When the "Ready"
signal reappears at the output of the NOT circuit
~- 10 152, then the previously operating one of the
microprocessor and DMA controller resumes operation
from the point at which its operation was suspended.
` There is a third kind of sharing or multiplexing
of the dual port storage addressing which now needs
to be considered. This has to do with I/O controller
to host processor interrupt request operations.
After the interrupt request from the I/O controller
2 has been recognized by the host processor 1 and
after the host processor 1 has established a connec-
tion with the I/O controller 2, the host processor 1sends a service gate signal to the I/O controller 2.
During this service gate interval, the host processor
1 takes in the data word appearing on the channel
data bus 34 and this data word should be the interrupt
ID word shown in Fig. 6. This particular kind of
service gate signal is called an interrupt service
gate siynal because it is sent out in response to an
interrupt request (as opposed to a cycle steal
request).
"
, BC9-79-006

~8~
62
Receipt of the interrupt service gate sign~l b~
the I/O controller 2 is indicated by the occurrence
of the interrupt service gate capture signal on lin~
130 which comes from the handshaking logic '3 of
Fig. 2C. This interrupt service gate (SG) captu~e
signal also enables a setting of the flip-flop
circuit 138 by the next occurring one Oc the ~ and
ADSTB pulses. In this case, however, the output of
flip-flop circuit 138 operates by way of A~D gate 1~2
` 10 to activate the "high impedance output" control line
of the address selector 63. This causes the address
selector 63 to set each of its outputs to a .nree
state or high impedance condition. This enables the
+V voltage source to place all of the address lines 66
running to the storage units 22a and 22b at the binary
one levelO In other words, this effectively s~itches
, the storage address to a value of "1111.... 11". This
addresses the top byte location in each of the
` storage units 22a and 22b. Referring to Fig. 1~, it
- 20 is seen that the top byte locations contain the data
that is needed for the interrupt ID word of Fig. 6.
Thus, the proper ID word appears at the output of
storage units 22a and 22b for transmission to the
~ host processor 1 during the interrupt service gate
`~ 25 interval.
..
This data (the IIB byte and the device address)
were previously loaded into these storage locations
by the microprocessor li prior to issuance of the
interrupt request to the host processor 1.
BBC9-79-006
,r -

32~;~
63
From the foregoiny, it is seen that the~e are
three different ways of addressing the dual por~
storage 22a, 22b. Furthermore, these three different
ways are automatically multiplexed so as not to
interfere with one another.
Fig.13A also shows the logic for operatins tne
two-way drivers 44 and 45. This logic is re?resente~
by circuit elements 154-160. Each of two-way drivers
44 and 45 has two control inputs, namely, an OU.plt
enable (OE) control terminal and a direction (D~
control terminal. Activation of the OE in?u_ enables
the output of the driver so that whatever signal is
being supplied to the driver input appears at its
output. ~hen OE is inactive or off, the driver out-
puts are set to a three state or high impedancecondition. When the direction control line D is
active, it reverses the normal direction for movement
of data through the driver. In the present e.~.bodi-
ment, the normal direction for drivers 44 and 45 is
from left to right. When the direction in~ut D is
active, data can pass in the reverse direction,
namely, from right to-left.
For the two-way driver 45, the output enable
line OE3 is activated whenever both of storage units
22a and 22b are simultaneously "selected". This is
accomplished by the output of OR gate 145. The
- direction line D3 is activated to allow data movement
from right to left when AND gate 160 supplies a
- "storage (22a, 22b) to register (data register 46)"
signal or when AND gate 157 provides an IDCB read
signal, the former being for cycle steal operations
and the latter being for I/O command transfer
operations.
., ,
~,BC~-79-006
, .

-
- 6~l
The out~ut enable line OEl for the t,;o-.:ay
drivers 44 is activated during the occurrence of a
cycle steal service gate capture signal on line 32 o.
the occurrence of an allow host connect signal at
the out?ut of flip-flop 138. The direction control
line Dl is activated to enable movement of data from
right to left through the drivers 44 when ei.her a
"register to host" signal is generated by A~'D circ~it
155 or an IDCB read signal is generated b~ A~'D gate
157.
.~
Description Of Fig. 16 Host D~L~ Request Lo~ic t-r.d
Data Register Control
'~ Referring now to Fig. 16, there is shown the
' details for both the host D~ request logic 28 of Fig. 2B and
` 15 the data register control logic 47 of Fig. 2A. The
data register control logic 47 appears in the lower
~' portion of Fig. 16 and is enclosed b~ the dash lir.ed
~; box. The upper portion of Fîg. 16 is the host D`~
request logic 28.
s
The host DMA ré~uest logic 28 controls the Di~
controller 13 which in turn controls the transfer of '
data between the host processor 1 and the dual port
storage 22a, 22b in the cycle steal mode. ~ith
reference to the DMA controller details sho;~n in Fig.
10, these cycle steal transfer operations are
' controlled by use of the channel 0 and channel 1
cixcuits in the Di~ controller 13. For the present
embodiment, the channel 2 and channel 3 circuits are
- not used. The channel 0 address counter 82 supplies
3~ the host processor main storage addresses which are ,
.
.,.,..:
,,. i,
~,,
BC9-79-006

~82~;5
sent out over the host channel address bus 35 and the
channel 1 address counter 84 is used to provide the
addresses which are supplied to the dual port storaye
22a, 22b for moving the data from the dual port
storage to the host processor data bus 34, or vice
versa. The associated D~A byte counters 83 and 85
are used to keep track of the number of words
remaining to be transferred. When the count in
either counter goes to zero, it terminates the
operation of the corresponding DMA channel.
Cycle steal operations are initiated by the host
processor 1 sending out a start cycle steal command.
In response thereto, the microprocessor 11 fetches
from the host processor 1 the 8-word device control
block (DCB) shown in Fig. 4. These DCB words are
fetched in a cycle steal mode and are stored into the
appropriate device section of the dual port storage
22a, 22b. Following completion of the DCB transfer,
the microprocessor 11 uses the DCB information to
initialize the DMA controller 13 for the main data
transfer operation. In particular, it loads the D~A
address counter 82 with the main storage starting
address contained in DCB word 7. The desired
starting address for the dual port storage 22a, 22b
is loaded into the second DMA address counter 84.
This parameter is obtained from one of the instruc-
tions in the subroutine contained in control program
storage 12 for setting up the DMA controller for
cycle steal purposes for the particular device in
question. The first two DMA byte counters 83 and 85
are loaded with the same value, namely, a value equal
BC9 79-006
/

66
to one-half of the byte count value contained in word
6 of the DCs. A factor of one-half is used because
the byte counters are decremented by a value of one
after each data word transfer, whereas the data word
transfer constitutes the transfer of two bytes. If
the DCB is set up to contain the word count instead
of the byte count, then the factor of one-half need
not be applied to the value loaded into the DMA byte
counters.
A similar word versus byte factor enters into
the operation of the DMA address counter 82. The
addresses contained in this counter are main storage
byte addresses and they are incremented by a value of
one after each data transfer. At the same time, the
address loaded into the cycle steal address register
27 for each new cycle steal transfer should be two
counts higher than the address previously loaded into
such register 27 because each cycle steal transfer
transfers a two-byte data word. This difference is
taken into account by skewing the input lines to the
cycle steal address register 27 one bit position to
the left so as to effectively produce a left shift
of one for the address bits as they are loaded into
this register 27.
, 25 A pair of control bits contained in each of the
DMA byte counters 83 and 85 are also initially loaded
so as to tell the DMA controller whether it is to
perform a read or a write operation. If it is a read
operation (controller to host transfer), the control
' 30 bits in the channel one counter 85 are set so that
.:
., .
.,;
,
;,
f
!
,, .
i'
~ BC9-79-006
",

67
the D~IA controller will produce a M~MR (memory read)
pulse followed by an IOW (I/O write) pulse during
the channel one DMA cycle. Conversely, if it is a
write operation (host to controller transfer), then
the control bits are loaded so that an IOR pulse
followed by a MEMW pulse are generated during the
channel one DMA cycle.
One further consideration. The appropriate
control bit in the DMA mode register is initially
loaded so that the priority resolver 90 will provide
a rotating priority mode of operation. In this
rotating priority mode, the priority of the different
DRQ input lines has a circular sequence. After each
DMA cycle, the priority of each DRQ line changes.
The DRQ line which has just been serviced will be
set to the lowest priority. As a consequence, if,
for example, both DRQ 0 and DRQ l are turned on and
left on, then the rotating priority mechanism will
cause DRQ 0 and DRQ l to be serviced in an alternate
manner, first one, then the other, then the first,
etc.
After the initial set-up of the DMA controller
13, the commencement of the primary cycle steal data
transfer operations is initiated by the microprocessor
11 and the host DMA request logic 28. In particular,
the microprocessor 11 executes an I/O port OUT
instruction which gives the data bits on the MP data
bus 37 special values and which places an address on
the MP address bus 38 such that a chip select CS7
signal is produced by the chip select decoder 68.
BC~3-79-006

.J~ 5
~Jith reference to Fig. 16, the ;IP data bit 7 is gi,~
the desired value needcd to set an I/O por~ latc.. 162
to provide the 2roper input/output indicator ~alue.
This data bit value is strobed into latch 162 by the
chip select CS7 signal. Latch 162 is set to a one
value when input (controller to host) cycle steal
operations are to be performed. If, on tne o.her
hand, output (host to controller) cycle steal o?era-
tions are to be performed, then latch 162 is loaded
with a zero value.
This same microprocessor I/O port O~'T instru~tion
also puts the ~P data bit 6 line at a value of or,e.
This bit together with the CS7 signal is ap21ied to
the AND gate 163 to cause a flip-flop 16~ to be
placed in the "set" condition. This causes the
commencement of the cycle stealing operations. rIore
particularly, the setting of flip-flop 16~ turns on
the start request line which, in turn, via OR circui~
165 turns on the DRQ O request line of the D`L~
controller 13.
Considering first the case of output or host
processor to I/O controller cycle steal operations
(IN Latch 162 equal zero), the turning on of the DRQ
0 request line causes the D~L~ controller 13 to put
the host processor main storage address on the rIP
address bus 38. This address is strobed into the
cycle steal address register 27 (Fig. 2A) by the D.~CX
0 and ~IE~IW pulses produced by the D;L~ controller 13
for the DRQ O Dr'~ cycle. (Note: D~.CX = D~LA
Acknowledge.) The one level of the DRQ O line also
operates via AND gate 166 and OR gate 167 to supply
,, .
s
, BC9-79-006
.

2~5
6~
the cycle steal rec3uest signal on line ,l ~ .ich s t_
the cycle steal request latch 92 (~ig~ 12A) ~,Jhich, in
turn, sends the cycle steal request in signal to the
host processor l. At this point i-t should be noted
that the start request flip-flop 16~ is reset t~ia ..'.D
gate 168 by the DACK 0 and ADSTB pulses produced
during the DRQ 0 cycle. This occurs late eno~gh in
the cycle so that the consequent turning off of the
DRQ 0 line has no effect on the completion of the
DRQ 0 cycle.
The D~L~ controller 13 and request losic 2~ no~.J
sit and wait for the host processor l to recognize
the cycle steal request and to send out its cycle
steal service gate signal, the data word to be trans-
ferred also being placed on th~ host channel databus 34 by the host processor 1 during this service
gate interval. This occurrence is recognized by the
D~IA request logic 28 by means of the AND gate 169
located in the data register control logic ~7. In
particular, the occurrence of both the cycle steal
service gate (CS/SG) capture signal and the host data
strobe signal causes1the AND gate 169 to produce a
one-level output signal which is called a "host to
data register" transfer signal. This signal is
supplied by way of OR circuit 170 and the STB 2 line
to strobe the host data bus data into the data
register 46, (Fig. 13A). The host to data register transfer
signal at the output of A~D gate 169 is also su?plied
by way of OR circuit 171 to set a fli?-flo? circuit
172. This turns on the DRQ l output line o' flip-flop
172 to commence the DRQ l request to the D:L~
controll r 13.
. ' i
,j .
~ ,
, i ~C9-79-006

If the D.IA controller 13 has finished the U.'~ 0
cycle, then the DRQ 1 request is recoynized ar.c 'he
DRQ 1 cycle commenced. Otherwise, the DR~ 1 request
is held in abeyance until co~,pletion of the D?~Q 0
cycle, at which point the DRQ 1 cycle is cor~enced.
During the DRQ 1 cycle, the Di~ controller 13
puts the address for dual port storage 22a, 22b on tne
MP address bus 38, the 13 lower order bits o~ this
address being passed by the address selector 63 to
the dual port storage 22a, 22b. Snortly thereafter,
the DACK 1 and ~IEMI~ signals ~rom the D;~ controller
13 are effective to produce a binary one level a,
the output of AND gate 173. This binary one level is
ca~led a "data register to dual port store" transrer
signal and is supplied by way of OR circuit 174 to the
OE 2 input of the data register 46 to "enable" the
output of the data register 46. This su?plies the
data word in the register 46 to the two-way drivers
45 (Fig.13A) and hence to the data bus inputs of the
high byte and low byte storage units 22a and 22b.
The storage address put out by the D~ controller 13 -'
during this DRQ 1 cycle is of such a value as to
cause the production of a CS3 chip select signal by
the chip select decoder 68 (Fig. 2B). As indicated in Fig. 13A,
this causes the "select" lines for both of storage
22a and 22b to be activated. ~lsoj the occurrence
of the ~iE~ signal during this DRQ 1 cycle activates
the "write" control inputs of both storage units 22a
and 22b. Thus, the data word supplied by the d~ta
register 46 and passed by the two-way drivers 45 is
written into the high byte and low byte storage units
22a and 22b.
.
BC9-79-006
r~

2~S
71
The occurrence of tne DACK 1 sic;nal auri.~g tne
DRQ 1 cycle is also supplied by way of an ,~;D gate
175 to set a flip-flop 176. The setting o flip-flop
176 turns the DRQ 0 request line back on again. T..us,
5 after completion of the DRQ 1 cycle, another DR~ 0
cycle is com~enced and the foregoing DRQ 0/DRQ 1
operations are repeated to cause a cycle steal
transfer of the next data word. ~s mentioned, the
Di~ address counters 82 and 84 (Fig. 10) are incremented by
10 one and the Dl~ byte counters 83 and 85 are decre-
mented by one near the énds of their respecti~Je
DRQ 0 and DRQ 1 cycles. Thus, new host processor
and dual port storage addresses are pro~ided for each
new DRQ 0/DRQ l cycle repetition. These DRQ 0 ana
15 DRQ l cycles continue to be alternately repeated
until the counts in byte counters 83 and 85 (Fig. 10) go to
zero. When the count in counter 83 goes to zero, the
D~ controller automatically shuts off the channel
- 0 o?erations and no more DRQ 0 cycles are performed.
20 Similarly, when the channel one counter 85 goes to
zero, channel one operations are terminated and no 3
more DRQ l cycles are produced.
,
The cycle stealing of data in the opposite
direction, namely, from the I/O controller 2 to the
~, 25 host processor l will now be considered. In this
case, the IN latch 162 is set to one. ~fter the
; set-up of the D~ controller 13, the cycle steal "I~"
operations are commenced by the setting of flip-flop
, 164. This turns on DRQ 0. The binary one le~el of
30 the DRQ 0 line immediately operates by way of ~?;D
gate 177 and OR circuit 171 to set flip-flop 172.
I;
"
.,
,, .
,i,
;,~
,
~ ,~ BC9-79-006
,~ ,
",
" ~

f~5
72
This turns on the DRQ 1 request line. The binary one
level of the DRQ 1 line is immediately effective by
way of AND gate 178 and OR circuit 167 to turn on the
cycle steal request line 31 to initiate the cycle
steal request to the host processor 1.
Since both the DRQ 0 and DRQ 1 DMA request lines
are active, the DMA controller 13 will first perform
a DRQ 0 cycle and will immediately follow it with a
DRQ 1 cycle. The DRQ 0 cycle is effective to trans-
fer the host processor main storage address from the
- DMA address counter 82 to the cycle steal address
register 27. The DRQ 1 cycle is effective to transfer
the next data word from the high byte and low byte
storage units 22a and 22b via the two-way drivers 45
to the data register 46. In particular, the occurr-
ence of the DACK 1 and MEMR signals during the DRQ 1
cycle causes an AND gate 179 to produce a one level
output. This one level output is called a "dual
port store to data register" transfer signal and is
supplied by way of OR circuit 170 to the data strobe
input sTs 2 of the data register 46. This strobes the
data word into the data register 46.
The DMA controller 13 and the DMA request logic
28 now sit and wait for the host processor 1 to
respond to the cycle steal request. (Actually, the
host processor response may already be present at
this point in time, in which case no waiting is
required.) The response and ready for data transfer
condition of the host processor is indicated by the
occurrence of the cycle steal service gate (CS/SG)
capture signal. This capture signal produces a
BC9-79-006

~B~
73
one-level output at the output of AND gate 180. This
one-level output is called a "data register to host
processor" transfer signal and is supplied by way of
OR circuit 174 to the output enable line OE 2 of the
data register 46. This, together with the enabled and
right to left transfer condition of the two-way
drivers 44, places the data word on the host processor
data bus 34 for transmission to the host processor 1.
: The occurrence of the cycle steal service gate
capture signal, together with the host data strobe
from the host processor, cause an AND gate 181 to
produce a one level output which in turn causes AND
gate 182 to produce a one level output which in
: turn sets a flip-flop circuit 183. This turns the
DRQ 0 request line back on again, such line having
been turned off by the resetting of flip-flop 164 by
AND gate 168 during the first DRQ 0 cycle. This
-: turning back on of the DRQ 0 line causes a repeating
of the above described DRQ 0 and DRQ 1 cycles and,
hence, a transfer of the next data word to the host
processor 1. These DRQ 0/DRQ 1 cycles continue to
be repeated until the counts in DMA byte counters 83
and ~5 go to zero, after which DMA operations are
terminated and remain terminated until the issuance
of a new start cycle steal command and a new device
control block (DCB) by the host processor 1.
In the embodiment described up to this point,
the DMA controller 13 was only involved in the cycle
steal transfer of data words between the host pro-
cessor 1 and the dual port storage 22a, 22b. In
such embodiment, the transfer of data bytes between
BC9-79-006
-

~8~2~5
74
the I/O device and the dual port storage 22a, 22b is
handled by the microprocessor 11. A typical mode of
operation would be for the microprocessor ll to
transfer a block or page of data, one byte at a time,
from a given I/O device into the corresponding device
section of the dual port storage 22a, 22b. After
completion of this task, the microprocessor 11 would
cause the issuance of an "attention" interrupt
request to the host processor 1 to tell it that there
was a block of data ready to be transferred to it.
Thereafter, the host processor 1 would issue a start
cycle steal command to the I/O controller 2. After
performing the DCB fetch and the D~A controller set
up, the DMA controller 13 would cause the cycle
stealing transfer of the block or page of data from
the dual port storage 22a, 22b to the host processor
1.
', '
For the case of a typical data transfer in the
opposite direction, namely, from the host processor
1 to an I/O device, a similar type of procedure
would be applied in reverse, in this case the cycle
stealing transfers from the host processor l to the
dual port storage 22a, 22b occurring before the byte
` by byte transfer of the data from the dual port
storage 22a, 22b to the I/O device.
. ~
j~,,`
~ ~C9-79-006
,. . ..

DescriDtion Of Fig 17 Device D~ bodi~e.
. .
Referring now to Fig. 17, there is shown a
modified embodirnent whereby the data transfers
between the I/O device and the dual port storage 22 are
5 also handled by the D~ controller 13. This e~Dodi-
ment can be used to overlap some of the device to
dual port transfers with some of the dual port to
host processor transfers or, conversely, to overla?
some of the host processor to dual port trar.s ers
lO with some of the dual port to I/O device transfers.
In Fig. 17, the device to dual port transfers
(or vice versa) are handled by the DRQ 2 and D~Q 3
channels of the D~ controller 13. The DRQ 2 J
channel will be used to handle the transfers to or
15 from the high byte storage 22a and the DRQ 3 channel
wiIl be used to handle the transfers to or fro.~ the
low byte storage 22b. The purpose of the de~iice D~L'.
request logic 185 is to cause successive device D`Li
requests to be alternately applied to the DRQ 2 and
20 DRQ 3 channels. This is necessary in order to cause
successive data bytés to be alternately stored in the
high byte storage 22a and the low byte storage 22b.
~Jith reference to the D.~ controller details in
Fig. lO, the channel two address counter 86 is
25 initially loaded with the desired starting address
in the high byte storage 22a, this address being in
the appropriate address range to produce a CS2 chi~
select signal. The channel 3 address counter 88, on
the other hand, is initially loaded with the
30 appropriate starting address in the low byte storage
22b, this address being in the address range needçd
-~ BC9-79-006
.

~8Z~5
76
to produce a CSl chip select signal. In order to
subsequently get the proper word type transfers, the
starting addresses loaded into each of the counters
86 and 88 must be the same, except for the three
highest order address bits which are used to do the
chip selecting. The channel 2 and channel 3 byte
counters are initially loaded with the appropriate
values corresponding to the number of bytes to be
transferred to the corresponding ones of the high
byte storage 22a and the low byte storage 22b. As
before, the DMA mode register is set so that the
priority resolver 90 will operate in the rotating
priority mode. As a result, after each DMA cycle,
the priority of each channel will be changed with
the channel which has just been serviced being set to
the lowest priority.
With reference to Fig. 17, when the peripheral
device or I/O device 186 is ready for a data byte
transfer, the device control unit 187 will raise its
DMA request output line. This DMA request line runs
to the device DMA request logic 185. The device
request logic 185 is initially activated by means of
an I/O port latch 188 which is loaded with a binary
one value by the microprocessor 11 if it is desired
for the data transfers for the peripheral device 186
to be performed in the DMA mode. Alternatively,
latch 188 can be loaded with a zero value and the
' data transfers performed in the manner previously
; described. The loading of the latch 188 with a one
value causes a flip-flop circuit 189 to be reset.
This turns on the Q output which runs to the AND gate
190 and turns off the Q output which runs to the AND
gate 191. This completes ~he initial set-up of the
device request logic 185.
,~
;
~.'
,
,
, ~C9-79-006
~,

77
After initialization of the request logic 185,
the first DMA request to be issued by the device
control unit 187 will be passed by the AND yate 190
to the DRQ 2 input of the DMA controller 13. When
the DRQ 2 channel gets its turn, this will cause a
byte of data to be transferred from the device
control 187 to the high byte storage 22a (or vice
versa) via the microprocessor data bus 37. ~ore
particularly, the DACK 2 signal produced during the
DRQ 2 cycle is supplied by way of OR circuits 192
and 193 to the chip select input of the device
control 187 to cause or enable such device control
187 to put its data onto the microprocessor data
bus 37. At the same time, the DACK 2 signal appear-
ing at the output of OR circuit 192 is used to togglethe flip-flop 189 to its opposite state, in this case,
its "set" state. This turns on the Q output and
turns off the Q output. As a consequence, the next
DMA request issued by the device control 187 is
supplied by way of AND circuit 191 to the DRQ 3
input of the DMA controller 13. When this DRQ 3
request gets its turn, the DMA controller 13 will
cause the next byte of data to be transferred from
the device control 187 to the low byte storage 22b
(or vice versa) via the microprocessor data bus 37.
The DACK 3 signal produced during the DRQ 3 cycle
flips the flip-flop 189 to the opposite state and
also enables the chip select input line of the device
control 187.
,
BC9-79-006
/

B~Z65
78
Because of the flipping back and forth of flip-
flop 189, successive DMA requests and data byte
transfers are alternately handled by the DRQ 2 and
; DRQ 3 channels of the DMA controller 13.
A typical manner of operation for the Fig. 17
embodiment will now be considered. For sake of
example, this will be for the case where data is to
be transferred from the I/O device ~o the host
processor. In this example, the microprocessor 11
will initially activate the device request logic
185 but not the host request logic 28. This will
cause a DMA transfer of a block or page of data from
the I/O device 186 to the dual port storage 22a,
22b. After completion of this block transfer, the
microprocessor 11 will activate both the host request
logic 28 and the device request logic 185. This
will cause a cycle stealing of the first block of
data from the dual port storage 22a, 22b to the host
processor 1 at the same time as a second block of
data is being transferred from the I/O device 186 to
the dual port storage 22a, 22b. Because of the
rotating priority mode used by the DMA controller 13/
the cycle steal transfers to the host processor will,
in general, be interleaved with the DMA transfers
~ 25 from the I/O device to the dual port storage.
'~:
An advantage of this system is that one set of
transfers need not wait on the other set. If, for
example, the host processor 1 is busy with other
tasks, then the DRQ 0 and DRQ 1 lines will be
inactive. Nevertheless, the DRQ 2 and DRQ 3 linos
,,
BC9-79-006

32~
79
can continue to transfer data from the I/O device 186
to the dual port storage 22a, 22b. Conversely, if for
- any given interval the I/O device 186 is not ready,
then the DRQ 0 and DRQ 1 channels can nevertheless
continue to cycle steal data to the host processor 1.
It is not necessary that the DRQ 0/DRQ 1 data
transfers be for the same I/O device as are the DRQ
2/DRQ 3 data transfers. If desired, these two sets
of transfers can be for two different I/O devices
during the same time interval.
.~
Description Of Fig. 18 Multiple DeVice DMA Embodiment
~; Referring to Fig. 18, there is shown an embodi-
ment wherein the data ~ransfers to the dual port
storage 22a, 22b for three different I/O units are
- ~ 15 handled by DMA controllers. The I/O device 186 is
handled by the DMA controller 13 in the manner
previously described in Eig. 17. In addition, two
additional I/O devices 195 and 196 and their
,~; respective device controls 197 and 198 are handled
` 20 by a second DMA controller 200. This second DlYA
controller 200 is of the same construction as the
~ ~ first DMA controller 13 and, as such, is also a
s 4-channel DMA controller. A second device D~A
request logic unit 201 handles the DMA request for
~- 25 the second I/O device 195 and a third device DMA
~ request logic unit 202 handles the DMA requests for
,~ the third I/O device 196. Each of these device DMA
request logic units 201 and 202 is of the same
- ~ construction as the device DMA request logic 185 and
f~ 30 both operate in the same manner as described above
~ for the device DMA request logic 185.
~ ~ .
~. ~
~ -
f
:~,
~ BC9-79-006

The operation of the Fiy. 18 embodiment is
relatively straightforward in view of the previous
explanations except for the contention situation
which arises when both the DMA controller 13 and the
DMA controller 200 present "Hold" request signals
(HRQ 1 and HRQ 2, respectively) to the microprocessor
11 at about the same time. This contention situation
is resolved by the use of DMA contention logic 203.
One possible form of construction for this contention
logic 203 is shown in Fig. 19.
Referring to Fig. 19, the HRQ 1 and HRQ 2 signals
- from the controllers 13 and 200, respectively, are
supplied to the correspondingly designated input
terminals in Fig. 19. At this point it is noted
that, as shown in Fig. 18, these two signals are
also connected to the HOLD request line which is
part of the microprocessor control bus 39 and which
runs to the microprocessor 11, this connection to
the HOLD request line being by way of an OR circuit
204. As indicated in Fig. 19, the contention logic
203 receives back from the microprocessor 11 the
Hold Acknowledge signal HL~A. The contention logic
203 then decides which of the two DMA controllers 13
and 200 is to get this HLDA signal. The one that
gets it is allowed to proceed with its DMA operations,
while the one that does not get it must sit and wait
for its turn to come up.
The contention logic 203 includes AND circuits
205-207 and NOT eircuits 208-210. The logic performed
by these cireuits is such that if HRQ 1 is at the 1
level and HRQ 2 is at the 0 level when the HLDA signal
BC9-79-006

8~
81
appears, then the HLDA signal goes to the first DMA
controller 13 by way of the HLDA 1 output terminal.
Conversely, if HRQ 2 is at the 1 level and HRQ 1 is
at the 0 level when the HLDA signal appears, then such
signal is sent to the second DMA controller 200 by
way of the HLDA 2 output terminal. If, on the other
hand, both HRQ 1 and HRQ 2 are at the l level when
the HLDA signal appears, then this signal is sent to
the first DMA controller 13 by way of the HLDA 1
output terminal.
While there have been described what are present
considered to be preferred embodiments of this
invention, it will be obvious to those skilled in the
art that various changes and modifications may be
made therein without departing from the invention,
and it is, therefore, intended to cover all such
changes and modifications as fall within the true
spirit and scope of the invention.
'
BC9-79-006
I

Representative Drawing

Sorry, the representative drawing for patent document number 1148265 was not found.

Administrative Status

2024-08-01:As part of the Next Generation Patents (NGP) transition, the Canadian Patents Database (CPD) now contains a more detailed Event History, which replicates the Event Log of our new back-office solution.

Please note that "Inactive:" events refers to events no longer in use in our new back-office solution.

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Event History , Maintenance Fee  and Payment History  should be consulted.

Event History

Description Date
Inactive: IPC from MCD 2006-03-11
Inactive: IPC from MCD 2006-03-11
Inactive: IPC from MCD 2006-03-11
Inactive: IPC from MCD 2006-03-11
Inactive: IPC from MCD 2006-03-11
Inactive: IPC from MCD 2006-03-11
Inactive: Expired (old Act Patent) latest possible expiry date 2000-06-14
Grant by Issuance 1983-06-14

Abandonment History

There is no abandonment history.

Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
INTERNATIONAL BUSINESS MACHINES CORPORATION
Past Owners on Record
BOBBY J. FREEMAN
JOHN M., JR. DINWIDDIE
TIMOTHY JACKSON
WILLIAM L. ZIPOY
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Drawings 1994-01-11 21 611
Claims 1994-01-11 6 167
Cover Page 1994-01-11 1 17
Abstract 1994-01-11 1 39
Descriptions 1994-01-11 81 2,800