GB2222283A - Data transfer between modules in a processing system - Google Patents

Data transfer between modules in a processing system Download PDF

Info

Publication number
GB2222283A
GB2222283A GB8916585A GB8916585A GB2222283A GB 2222283 A GB2222283 A GB 2222283A GB 8916585 A GB8916585 A GB 8916585A GB 8916585 A GB8916585 A GB 8916585A GB 2222283 A GB2222283 A GB 2222283A
Authority
GB
United Kingdom
Prior art keywords
module
modules
controller
command
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
GB8916585A
Other versions
GB2222283B (en
GB8916585D0 (en
Inventor
David Paul Crane
Geoffrey Poskitt
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Services Ltd
Original Assignee
Fujitsu Services Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Services Ltd filed Critical Fujitsu Services Ltd
Publication of GB8916585D0 publication Critical patent/GB8916585D0/en
Publication of GB2222283A publication Critical patent/GB2222283A/en
Application granted granted Critical
Publication of GB2222283B publication Critical patent/GB2222283B/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Abstract

A data processing system has a number of input/output controller modules connected to an I/O bus 14. Each module contains a dual-port memory 25, accessible either from the bus or from a processor 20 in that module. Each dual-port memory contains a number of controller registers, one for each other module. When module X wishes to send a command to module Y it writes the command into controller register X of module Y and then interrupts module Y. This permits fully symmetric message passing between the modules, for messages of arbitrary length, and allows any module to have messages outstanding simultaneously from more than one of the other modules. <IMAGE>

Description

DATA PROCESSING SYSTEM.
Background of the invention This invention relates to data processing systems of the kind having a plurality of modules connected together by means of a bus. The invention is particularly, although not exclusively, concerned with a system in which a plurality of input/output (I/O) controller modules are connected together by means of an I/O bus.
One problem in such a system is that of organising the transfer of messages between the modules.
This problem is complicated by the requirements that the messages may be of arbitrary length, that the message passing scheme should be symmetrical between the modules, and that it should be possible for any module to have messages outstanding simultaneously from more than one of the other modules.
The object of the present invention is to provide a data processing system which meets these requirements.
Summary of the invention According to the invention there is proxZided a data processing system comprising: (a) a plurality of modules, and (b) a bus interconnecting the modules, wherein each module comprises (i) a processing unit, and (ii) a dual-port memory accessible both from the bus and from the processing unit, the memory containing a plurality of controller registers, one for each other module in the system, and wherein, in operation, when any one module (X) requires to send a command to another module (Y), it places the command in controller register X of module Y and then interrupts module Y, and when module Y receives this interrupt, it reads the command from the controller register.
Brief description of the drawings.
One embodiment of the invention will now be described by way of example with reference to the accompanying drawings.
Figure 1 is an overall block diagram of a data processing system.
Figure 2 is a block diagram showing an I/O controller module in nore detail.
Description of an embodiemtn of the invention.
Referring to Figure 1, the data processing system comprises a plurality c data processing modules 10. The processing modules are connected to a plurality of memory modules 11, by way of a memory bus 12. The memory modules 11 form the main memory of the system.
The processing modules 10 are also connected to a plurality of input/output (I/O) controller modules 13, by way of an I/O bus 14. The I/O bus 14 includes data and address lines, for transferring data between the processing modules and the I/O controller modules. The system also includes a central services module (CSM) 15, connected between the memory bus 12 and the I/O bus 14.
Referring now to Figure 2, this shows one of the I/O controller modules 13 in more detail.
The I/O controller module includes a data processor 20, which may be a known microprocessor chip.
The module also includes a random-access memory 21 which acts as a local memory for the processor 20.
The processor 20 communicates with this memory by way of an internal bus 22, consisting of data lines 23 and address lines 24.
The module also includes a further random-access memory 25, referred to herein as the controller interface table (CIT). This has a data input/output port 26, which is connected to the data lines 23 of the internal bus 22 by way of a two-way buffer 27, and is connected to the data lines of the I/O bus 14 by way of a two-way buffer 28. The CIT also has an address input 29 which can receive an address either from the internal bus 22 by way of the buffer 27, or from the I/O bus 14 by way of the buffer 28. Thus, it can be seen that the CIT is operable as a dual-port memory, being accessible either from the I/O bus or the internal bus.
Each I/O controller module also includes a decoder 30, connected to the address lines of the I/O bus 14. This decoder 30 produces a signal ENABLE CIT 1 when it recognises a system-unique base address allocated to this module. Similarly, the decoder 30 produces a signal INTERRUPT when it recognises a system-unique interrupt address allocated to this module.
A further decoder 31 is connected to the address lines of the internal bus 22. This produces a signal ENABLE CIT 2 when it recognises the unique base address on the internal bus.
The INTERRUPT signal is fed to the interrupt input of the processor 20, so as to cause it to interrupt its current operation.
The signal ENABLE CIT 1 and ENABLE CIT 2 are fed to an arbitration circuit 32. If either of these two signals is true, the circuit 32 produces a signal CIT ENABLE, which enables the CIT 25 for reading or writing.
If ENABLE CIT 1 is true, and ENABLE CIT 2 is false, then the arbitration circuit produces a signal SYSTEM SEL, which enables the buffer 28, allowing the CIT to be accessed from the I/O bus. If ENABLE CIT 2 is true, and ENABLE CIT 1 is false, then the arbitration circuit produces a signal BOARD SEL, which enables the buffer 27, allowing the CIT to be accessed from the internal bus 22. If both the enable signals are true, then ENABLE CIT 1 takes precedence.
The CIT 25 in each I/O controller module holds a data structure comprising a plurality of controller registers, one for each I/O controller module in the system. Each controller is allocated exclusive use of the correspondingly numbered controller register in every other controller module in the system. Thus, module N has exclusive use of control register N in every other module. (Register N in module N is unused).
Each controller register holds eight bytes of information. The first byte represents a command, defining an operation to be performed. The most significant bit of this byte is used as a BUSY flag. The meaning of the other seven bytes depends on the particular command.
It can be seen that the above arrangement allows any I/O controller module X to send a command to another I/O controller module Y, as follows.
(1) Module X writes a command into controller register X of module Y, setting its BUSY flag.
(2) Module X writes to the interrupt address of module Y, so as to interrupt the processor in that module.
(3) In response to the interrupt, the processor in module Y examines the BUSY flag in the CIT, and copies those controller registers for which the BUSY flags are set. The BUSY flags are cleared.
In the present example, the following commands are defined.
(1). Initiate.
This is sent from module X to module Y to indicate that module X has placed a block of control information in the main memory 11, to be accessed by module Y. The last seven bytes of the controller register are used to hold a pointer to this bloc.
(2). I/O terminate.
This is sent from module X to module Y to inform it that module X has terminated some I/O operation initiated by module Y. The last seven bytes of the controller register are used to identify which I/O operation this command refers to.
(3). Service request.
This command is sent from one module to another to signal some event, such as for example, that data has been received from an attached peripheral device.
In this case, the last seven bytes of the controller register are used to specify the nature of the service request, and could comprise a pointer to a control block as in the case of the Initiate command.
(4). Acknowledge.
This is sent from the module X to module Y to indicate that module Y has removed data placed in its CIT by module X.
Operation.
As an example of the operation of the system, a data output operation from I/O controller module X to module Y will now be described.
(1). Module X composes a control block, and writes it into the main memory 11 (by way of the CSM 15). This control block defines an I/O data buffer area within the main memory, the length of the data, and a pointer to an area to which status information is to be returned.
(2). Module X writes the data to be transferred into the defined buffer area.
(3) Module X writes an Initiate command into the controller register X in the CIT of module Y.
This command includes a pointer to the control block in the main memory.
(4) Module X writes to the interrupt location of module Y, so as to interrupt the processor in that module.
(5) Module Y reads the controller registers in its CIT.
(6) Module Y returns an Acknowledge command to controller register Y in the CIT of module X.
(7) Module Y interrupts the processor in module X.
(8) When it receives the interrupt module X reads the Acknowledge command, informing it that the message has been received.
(9) Module Y now accesses the main memory 11, so as to read the control block specified in the Initiate command. The control block is then decoded.
(10) Module Y then fetches the data from the buffer and outputs it to the attached peripheral device.
(11) Module Y determines the status of the attached peripheral, and writes it into the status area defined by the control block.
(12) Module Y writes an I/O Terminate command into the controller register Y of module X.
(13) Module Y interrupts module X.
(14) When interrupted, module X reads the controller register, so as to receive the Terminate command.
(15) Finally, module X interrupts the processor in module Y, so as to acknowledge that it has received the Terminate command.
The above description assumed that each module has a separate interrupt location which, when written to, causes an interrupt to the processor in that module, The interrupted processor must then scan all the command bytes in its CIT to determine which are busy.
In an alternative form of the invention, the processor in each module is interupted whenever any of the command registers is written to. The identity of each command byte written to is stored in a first-in-first-out buffer, to allow a plurality of commands to be queued.
It should be noted that the CIT in each module effectively occupies part of the same address space as the local memory 21 within that module, although it is a physically separate memory. In an alternative form of the invention, both the CIT and local memory 21 could be implemented by means of the same dual-port RAM.
In the embodiment described above, communication between the I/O controllers takes place by way of the main memory 11. However, this is not an essential feature of the invention, and in other embodiments of the invention the control block and the data buffer area may reside, for example, in a memory on the I/O bus 14.

Claims (5)

CLAIMS.
1. A data processing system comprising: (a) a plurality of modules, and (b) a bus interconnecting the modules, wherein each module comprises (i) a processing unit, and (ii) a dual-port memory accessible both from the bus and from the processing unit, the memory containig a plurality of controller registers, one for each other module in the system, and wherein, in operation, when any one module (X) requires to send a command to another module (y), it places the command in controller register X of module Y and then interrupts module Y, and when module Y receives this interrupt, it reads the command from the controller register.
2. A system according to claim 1, further including a main memory connected to the bus, wherein at least some of the commands include pointers to blocks of control information in the main memory.
3. A system according to claim 1 or 2 wherein when any one module (X) requires to interrupt another module (Y), it writes to an interrupt location unique to that other module.
4. A system according to any preceding claim, wherein said modules are input/output controller modules.
5. A data processing system substantially as hereinbefore described with reference to the accompanying drawings.
GB8916585A 1988-08-26 1989-07-20 Data processing system. Expired - Fee Related GB2222283B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB888820369A GB8820369D0 (en) 1988-08-26 1988-08-26 Data processing system

Publications (3)

Publication Number Publication Date
GB8916585D0 GB8916585D0 (en) 1989-09-06
GB2222283A true GB2222283A (en) 1990-02-28
GB2222283B GB2222283B (en) 1992-02-05

Family

ID=10642815

Family Applications (2)

Application Number Title Priority Date Filing Date
GB888820369A Pending GB8820369D0 (en) 1988-08-26 1988-08-26 Data processing system
GB8916585A Expired - Fee Related GB2222283B (en) 1988-08-26 1989-07-20 Data processing system.

Family Applications Before (1)

Application Number Title Priority Date Filing Date
GB888820369A Pending GB8820369D0 (en) 1988-08-26 1988-08-26 Data processing system

Country Status (1)

Country Link
GB (2) GB8820369D0 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4440789A1 (en) * 1994-11-17 1996-05-23 Siemens Ag Master and slave unit arrangement
WO2012056439A1 (en) * 2010-10-25 2012-05-03 Dsp Group Ltd. Semaphore exchange center

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2011680A (en) * 1977-12-28 1979-07-11 Atex Interconnection unit for multiple data processing systems
GB2184270A (en) * 1985-12-16 1987-06-17 American Telephone & Telegraph Processor access control arrangement in a multiprocessor system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2011680A (en) * 1977-12-28 1979-07-11 Atex Interconnection unit for multiple data processing systems
GB2184270A (en) * 1985-12-16 1987-06-17 American Telephone & Telegraph Processor access control arrangement in a multiprocessor system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4440789A1 (en) * 1994-11-17 1996-05-23 Siemens Ag Master and slave unit arrangement
DE4440789B4 (en) * 1994-11-17 2004-04-08 Siemens Ag Slave unit
WO2012056439A1 (en) * 2010-10-25 2012-05-03 Dsp Group Ltd. Semaphore exchange center

Also Published As

Publication number Publication date
GB2222283B (en) 1992-02-05
GB8916585D0 (en) 1989-09-06
GB8820369D0 (en) 1988-09-28

Similar Documents

Publication Publication Date Title
CA1171931A (en) Channel interface circuit
US5918028A (en) Apparatus and method for smart host bus adapter for personal computer cards
US5594882A (en) PCI split transactions utilizing dual address cycle
US4674033A (en) Multiprocessor system having a shared memory for enhanced interprocessor communication
US6173349B1 (en) Shared bus system with transaction and destination ID
KR100263277B1 (en) Architecture for an i/o processor that integrates a pci to pci bridge
EP0207876B1 (en) Modular multiport data hub
US5214759A (en) Multiprocessors including means for communicating with each other through shared memory
US5093780A (en) Inter-processor transmission system having data link which automatically and periodically reads and writes the transfer data
US4604500A (en) Multiprocessing interrupt arrangement
US5404548A (en) Data transfer control system transferring command data and status with identifying code for the type of information
US4744023A (en) Processor access control arrangement in a multiprocessor system
WO1999056217A1 (en) Interrupt controller
EP1288785B1 (en) Method and interface for improved efficiency in performing bus-to-bus read data transfers
EP0400794A2 (en) Data processing apparatus adapted to connect to high speed links
US4719563A (en) Data transmission control device for controlling transfer of large amounts of data between two memory units
EP0525736B1 (en) Data storing system for a communication control circuit
US5014194A (en) System for reducing I/O controller overhead by using a peripheral controller for producing read, write, and address translation request signals
EP0821311B1 (en) Data processing and communicating system with high throughput peripheral component interconnect bus
GB2222283A (en) Data transfer between modules in a processing system
JPS6242306B2 (en)
GB2112186A (en) Improved distributed processing system
US5446847A (en) Programmable system bus priority network
JPH08314854A (en) Data transfer system and device relating to the same
EP0191939A1 (en) Data processing bus system

Legal Events

Date Code Title Description
PCNP Patent ceased through non-payment of renewal fee

Effective date: 20050720