Note: Descriptions are shown in the official language in which they were submitted.
S.S. BR0l~ 2-1
MUL~IPROC~SSING INTERRUPT A~RANGEMENT
This lnv~nt~on relates to a multiprocessing
interrupt arrangement,
Multlprocessing has become a standard technique
in telephon~ and computing sy9tem9 for allowing a large
number of independent processes to occur simultaneously~
each having minimal need to communicate with the other,
In such multiprocessing systems problem~ exist in that
0 it i8 often necessary to have one independent processor
interrupt another o~e o~ the processors in ~he nctwork.
Such interrupts are used, for example9 to change the
task o~ the other procesæor.
~ Three ba~ic approaches are prs~ently being usedl
: ~ 15 These are (13 iully interconneoted network o~ interrupts D
:~ (2~ unique system bus cycles~ and (3) polling of flags
in local memory~
In the first arrangement, thera is a unique
interrupt signal from each processor in the network
to the other processor~. For large syste~s the number
o~ interrupt eonnections becomes un~ieldy~ The second
: approach require~ additional ~ignal paths bctween
processors to distinguish interrupt cycles from no~mal
~emory transfer cyclesq 5'he third approach requir~s
: 25 each processor to regularly poll specific memory
location~ to ascertain whether or not it has been
interruptcd.
2~ According to one aspect of the present invention
there is provided an inter~upt arrangement ~or use with
each processor of a multiprocessor system, sald
arrangement oomprising means~ including a fir2t-in
fir~t-out ~FIF0) memory, adapted to queue interrupt
vectors recei~ed via said system and for sequentially
providing to an associated proces~or ~n int~rrupt ~ignal
~or each said queued vectorO
According to another aspect o~ the present
invention there is provided a multiprocessor system
whe~e in~ormation iB communicated between processors via
a communication medium9 each said processor comprising
an interrupt arrangement as a~oresaidc
According to yet another aspect of the present
invention there is provided a method of controlling
interrupts between processors o~ a multiprocessor system
where in~ormation is communic~ted between processors via
a communication medlum, said method oomprlsing the steps
oi commu~icating from a sending proces~or to a target
processor over said communication medium an ln-ter~upt
vector o~ said sending proce~sor, storing said interrupt
vector in a fir~t in ~irst out memory at said target
processor, and sequentially providing to said target
prooessor an interrupt signal for each said queued
interrupt vector.
In accordance with the invention there i~ proposed
an interrupt scheme which treats the lnterrupt signals
between processors as data thereby allowing the interrupt
in~ormatlon to be con~eyed during the standard system
bus data read ~n~ write cycles. Using thi~ approach~
it i~ possible to send interrupt messages to selected
other procesRors with the mes3age containing, ~or example,
the source identity o~ the sending processor9 as well
as the interrupt type.
Servicing sequential interrupts from multiple
sources is made possible by a hardware FIF0 register
located at each processor location, the ~unction of ~hich
is to queue the reeeived interrupt messages and to provîde
~8 An actu~l interrupt signal to the locally associated
(3~
processor.
A sending processor uses the system communic~-tion
bus and addresses the interrupt FIF0 a~sociated with a
particular target processor~ An interrupt message ls
then passed to the FIF0 over the regular system data
communication path. When the message arrives at the
output register o-~ the FIF09 a signal is sent to the
processor~ The processor then retrieves the data stored
in the FIF0 outpRt register The data could contain all
of the information needed by the processor, or the data
could poi.nt to a location within a local memory, which
location is set aside on a systemwide basis. Using this
arrangement the memory location would contain the data
to be used by the processor ~or inter~pt processing.
The solution to the foregoing problems, together
with the operation and utiliza~ion of the present
invention, will be more fully apparent from the following
description which makes re~erence to the accompanying
drawings, in which:
FIGo 1 shows an overall system diagram of a
multiprocessor system in accordance with the present
invention 9
FIG~ 2 shows an expanded diagram of one of the
processor modules depicted in the syste~ of FIGc l; and
FI~ 3 shows an arrangement of the memory space
o~ the multlprocessor system o~ FIG~ 1.
In FIG. I 9 there ls shown a multiprocessor system
which includes a number of individual processors 10, 20
309 40, each capable of independently functioning to
30 perform processe~ based on information data provided over
system bus 105.
Before entering upon a discussion of ~he
operation of the interrupt scheme a reYiew of the operation
and building blosks of each processor will be given. In
this regard, FIG. 2 shows bus interface 11 ~hich operates
to mo~e data to and from system bus 105. This interface
is adapted to solve contention problems 50 that more than
38 one processor is not sending data to the bu5 at the same
3~
"
, time. Such an interface may be of -the type shown in
Intel Mu1tibus In-terfacin~ Intel publication No 9800587A
Other arrangements, of course, may be used -to insure that
contentions are resolved between multiprocessors vying
for the common bus. Bus interface 11 also provides
address decoding so that data destined ~or the associated
processor may be removed from the bus and properly
stored.
CPU 15 may be any type o~ processor designed to
do any -type of process function. One e~ample would be the
INTEL 8086 microprocessor. Shared memory 13 may be any
type of random access memory, such as Mostek MK 4802.
Programmable interrupt controller 14 may be an INTEL
8259A which serves to receive an -interrupt signal and to
process tl~at signal in a particular manner to cause
CPU 15 to cease, as soon as is reasonable, from the task
it was pr~cessing and to process the interrupt. FIFO
interrupt queue 12 may he a ~airchild 9~iO3 which is a
First-In-First-Out (FIFO) memory. Processor ~0~ shown
in FIG. 2, can also be, ~or example, an INTEL iSBC ~6/12A
Single Board Computer w~th the addition of the FIFO
interrupt queue with appropriate address decoding.
In the multiprocessor system of FIG. 1, i-t can
clearly be seen that there is no provision made for
hardwiring the various processors for interrupt signaling
as is th~ situation in the prior art9 as for example9 the
arrangement shown in the Intel Multibus Specification
Thus, because of this arrangement, any number o~
processors may be added or removed from the bus with only
3o an assignment of memory spaceO
As shown in FIG. 33 the system has memory space
ass~gned on a system~ide basis and set aside for
processing -the interrupts. Each processor has an
identifiable FIFO address location within its local
memory and this space is accessible by all of the
processors. One advantage o~ such an arrangemen-t is that
the local memory may be addressed hy any other processor
38 and inforTnation may be retrieved from -the 1OCQ1 me!nOrY
* trade mark
I
-- 5
pertaining7 for example7 uniquely to the sendlng prncessor~
Thus, the sendlng processor need not l'know" anything
about the target processor other than the sy~tem memory
map in order to send interrupt mess~ges~ 'rhis operation
wlll be detailed more -~ully hereina~ter.
In ~I&. 3 the interrupt information is shown
represented by location C+l to D :in the shared memory
space, Thus, the memory mapped addressing scheme used by
the system bus allows any processor to share part or all
0~ itB local resources with other system bus masters~
Th~s approach provides uniform resource addressing across
the networlc, since processors address remote resources
just as they would their local memory.
As ~hown in FIGS. 1 and 3, the FIF0 interrupt
queue 12 a~sociated with each procesæor is part o~ that
processor's shared resources, accessible by all other
processors~ Asynchronous hardware and so~-tware interrupts
are transmltted over system bus 105 through the use of
these FIFOs. For interrupt operation, the source
processor writes an interrupt vector (which des¢ribes the
type o~ interrupt~ into the, FIF0 interrupt queue o~ the
desired target processor. This vector is queued behind
other interrupt vectors priorly sent to the target
processor~ Thesc vactor~ fall through the FIF0 intarrupt
~ueue and, one by onef interrupt the target processor in
a manner determined ~irst by the Program Interrupt
Controller and second by the controlling vector at the
output of the FIF0 interrupt queuer
The system bus arbitration mechanism, bus
interfaces 11, 21, 319 41, serlalizes interrupt requests
from the multiple sources and the FIF0 interrupt queues
12~ 229 32, 42, provide the buf~ering required to hold the
pending vectors until the processor can service -them. The
depth and width o~ eaoh FIF0 interrupt queue is a design
choice with the depth being governed by the number o~
outstanding interrupts each proces~or in the system may
have and the width governed either by the number o~
38 distinet lnterrupt types to be serviced by a processor
-- 6
or by the number of information bits on the system
bus.
This approach to handling interrupts utilizes
a~ailable system bus resources without special bus
~nterrupt signals or bus cyclesO If the target processor's
interrupt que1le is full 9 a bus error will occur in~orming
the source that the interrup-t was not deliveredO Re-tri0s
are admlnistered by so~tware in the source processor.
Since hardwiring is not necessary, processors may be
added or removed without di~iculty.
For illus-tra-tion purposes 7 a speci~ic e~ample
will be detailed where processor 30 (FIG. l~ interrup~s
processor 200 This lllustration is keyed to the broken
lines in FIG. l where-
(l) processo~ 30 acquires bus 105,
(2) source processor 30 delivers n bits o~ data
[representing the interrupt vector) to the
interrupt queue o~ targe-t processor 20, The
actual transfer o~ data is done with a memory
~o write cycle under control of processor 30.
(3) the interrupt vector ls stored in FIFO 22
interrupt queue o~ target proces 5 or 20;
(4) The stored interrupt vector ~alls through
1nterrupt queue 22 and a sign~l repre~enting
that fact is delivered via the output register
not empty (ORE) signal, to progr~mmable
interrupt co~troller (PIC) 21i.
(5) The PIC, using its preprogram~ed masks and
priorities, delivers an interrupt signal to
central proces~r unit ~CPU~ 25.
(6) CPU 25~ under control of the interrupt signal 9
read~ the interrupt vector from inter~upt
queue 22 and services that interrupt.
One alternative to step ~6) aboYe is that the
~ector contained in -the FIFO interrupt queue, instead o~
containing the actual intcrrupt control inio:rmation7 may
point to a specific location within the shared me~ory~
38 In such a sltuation, sending processor 30 would provide
~ 7
an address location in the target shared memory pertaining
to information uniquely ~ssociated ~ith -the sending
processor~ This location then would contain the
in~ormation pertaining to the actual interrupt.
The shared memories o~ all proces~sors could also
be arranged with a common set o~ interrupt control
~essages. In such a sl-tuation9 the sending processor need
only send the address location o~ the desired interrupt
type. The target processor would then, under control of
the in~ormation provided in the FIF0 interrupt queue~
address the local memory and perform the interrupt in
accordance with the in~ormation priorly stored therein
at the designated addressO As discuss0d priorly, the
reason that this can be achieved is that the syste~ as a
whole shares address space and thus 9 with respect to a
given interruptl the same vector (interrupt message) can
be delivered to any processor.
Using the ~bo~e-described interrupt arrangement 9
the CPU need not continually use process time to
interrogate a flag bit to determine if an interrupt signal
i9 awaiting processlng, since the actual interrupt signal
i9 a~firmatively applied to the CPU via the FIF0 interrupt
queue only when an interrupt ~ector is present. Since the
memory i5 shared in common~ it is possible to send
messages which are longer than would otherwise be sent
during a single cycle, since the sent message may contain
the address o~ locally stored data, which data9 if
transmitted from the sending processor would require more
than one such cycle.
The FIF0 interrupt queue serves as a queue to
receive ~nd store many interrupt messages ~rom many
processors. Typically~ the system would be arranged to
handle only o~e such interrupt ~rom each sending prooessor
at a time, allowing the sending processor to then deal
35 with subsequent interrupts to be sent to the sa~e target
processor, In such a system, the FIF0 interrupt queue
then need only contain enough length to handle one
38 interrupt from each other processor. However, it
-- 8
oertainly is possiblc to allow multiple interrupts
~rom the sa~e processor, simply by making the FIFO
interrupt queue longer. Also~ it is possible -to
prioritize thc interruptst dependin~ upon a number of
~actors, such as the inter~upt type ? the s~nding
proce~sor, etc. This can be accomplished by arranging
a number of FIFO regi~ters with the interrupt message
either directly addressed to a particular one o~ the
registers or by using stored progra~. control to sort out
the interrupts as they arrive. Once the input vector is
stored in a particular FIFO register, ths outputs ~rom
the FIFO registers would be provided to the CPU on
some type of priorlty arrangemen-t, the simplest such
arrangement being to empty one FIFO register before
looking for vectors in another FIFO regis-ter. Ano-ther
arrangement would be to use the shared memory and the
processor together to determine which inter~upt must be
serviced next
It is al~o obvious that~ while the described
20 multiprocessor interrupt system i9 shown in a hardwired
local bus arrangement, there is no practical limitation
on how the processors may be interconnected, and this
interconnection could span large geographical areas,
with the only requirement being that the ~ource processor
25 must be able to direct interrupt in~ormation to the
target processor~s interrupt queue.
3o
38