DATA TRANSMISSION BUS SYSTEM FOR A PLURALITY OF PROCESSORS

Abstract: A data transmission system for transferring data be­ tween a plurality of processors (200A - 200G, 200Z, 2000) and between the processors and an input/output unit (303) through a common bus (301) has linkage units (300A - 300G, 300Z, 300L) between the processors and the bus and an address controller (302) to manage the bus. Each of the linkage units has a two-port random access memory (42A - 42G) for storing data necessary for the processor. The processor processes the data stored in the memory and writes a result of the processing in an output area of the memory. The processing of the processors and the data transfer through the bus are essentially separated and carried out independently.

Description: DATA TRANSMISSION SYSTEM The present invention relates to a data transmission system having a plurality of processing units, and more particularly to a data transmission system for transmitting data among a plurality of processing unit through a bus. It has been known to conduct distributive processing by a plurality of processing units connected to a bus. For example, in a field of plant control, computers are connected to a data way which is a common bus, through stations and results of processing by those computers are supplied to a process input/ output unit to control a plant. In a field of a computation control, a plurality of processing units are connected to a bus and data are transmitted thereamong to effect distributive processing by those processing units. In each of those cases, an occupation control through operating systems (OS) of the respective units is necessary to avoid bus collision. The bus occupation control is carried out by a processor which controls the data transmission. However, as the introduction of a computer to the process control more and more increases and becomes versatile, various processings are required to be done in a very short period. As a result, a prior art system in which the processors must check the occupation of bus before transmitting required data cannot cope with the requirement. It is an object of the present invention to provide a data transmission system suitable for high speed processing. It is another object of the present invention to provide a data transmission system of a high reliability. It is a further object of the present invention to provide a data transmission system which readily allows a modification of the system. In accordance with one aspect of the present invention, a data transmission system having a bus connected to a plurality of processors to transmit data thereamong includes linkage units provided between the processors and the bus, one for each of the processors, and each containing a memory for storing common data, and an address controller for generating addresses for the data transfer. One processor to transmit the data and another processor to receive the data are selected by the addresses and the data for transferring data therebetween. Other objects and features of the present invention will be apparent from the following description of the invention with reference to the accomapnying drawings in which: Fig. 1 shows a block diagram of a schematic configuration of the present invention, Fig. 2 shows a block diagram for explaining the present invention, Fig. 3 shows a detailed block diagram of an address controller, Figs. 4a and 4b show charts for explaining the operation, Fig. 5 shows a detailed block diagram of a linkage unit, Fig. 6 shows a time chart for explaining the operation of Fig. 5, Fig. 7 shows a flow chart of the operation, and Figs. 8 to 11 show other embodiments of the present invention. Referring to Fig. 1, there is shown a block diagram of one embodiment of the present invention. Numerals 200A - 200G denote processors each having a function to independently carry out computation processing. The processors 200A - 200G are usually computers. Numeral 301 denotes a bus. Numerals 300A - 300G denote linkage units arranged between the processors 200A 200G and the bus 301. The linkage units 300A - 300G will be explained in detail later. Numeral 303 denotes an input/output unit which controls data exchange with the processors 200A - 200G. Numeral 302 denotes an address controller which generates an address signal to transfer data between the linkage units 300A - 300G and the input/output unit 303. In the present configuration, the processors 200A - 200G each receives data necessary for the processing through the memory in the linkage unit. from the input/output unit or other processor. Accordingly, each linkage unit must store the data necessary for the processing by the processor. The storage of the data will be discussed later. The processors 200A - 200G are conventional computers which output results of processing. Those outputs are not directly supplied to the input/output unit or other processor but supplied to the linkage units 300A - 300G. A manner of transmission of the results of the processing by the processors to other processors or the input/output unit requiring the results will be described later. Thus, the processors 200A - 200G directly exchange the data with the linkage units 300A - 300G without effecting occupation control for the bus 301. Accordingly, the processors can carry out the necessary processing without affecting other processors and output the results of the processing independently from other processors. Accordingly, the processing speed of each processor is enhanced because the bus occupation control is not necessary. The linkage units 300A - 300G preferably have abilities to independently exchange the data with the corresponding processors 200A - 200G and exchange the data with other processors and the input/output unit. For this purpose, the memories contained therein are preferably two-port memories which are bilaterally accessable for reading and writing. On the other hand, the data transfer from one linkage unit to other linkage unit or the input/output unit and the data transfer from the input/output unit to all linkage units are carried out through the bus 301. The bus occupation depends on the address generated by the address controller. One of the linkage units or the input/output unit having the address generated by the address controller 302 in a data output area (that is, as a data sending source) occupies the bus 301. The unit which has occupied the bus 301 sends out the data stored at the specified address, and all of the other units having that address in data input (write) areas receive the data sent out to the bus. To this end, address ranges of the memories, which store the data, of the linkage units and the input/output unit are identical and the addresses in the output areas are allotted to prevent collision among the units. Let us assume that the address controller 302 sends out an address to select the linkage unit 300A to the address bus of the bus 301. As a result, the linkage units 300A - 300G check if it is the address to select themselves. Since the address in the present example is to select the linkage unit A, the linkage unit 300A sends out the data stored in the output area of the internal memory to the data bus of the bus 301. On the other hand, other linkage units and the input/output unit receive the address and determine that the address is not to select themselves, and receive the data sent out to the bus. Thus, all other units connected to the bus store the data which the selected unit has sent out to the bus in their internal memories. The address controller 302 sequentially generates addresses in a sequence of, for example, 300A, 300B, 300C, ..... 300G and 303. For each case, the selected unit sends out the data stored in the output area to the bus and the other units store the data in the corresponding areas of the internal memories. In this manner, a multi-destination communication is attained in which one of the units is a data sending source and the other units are data receiving units. The operation of the system of Fig. 1 is now explained in further detail with reference to Fig. 2. Fig. 2 shows a system conceptual view for explaining the operation. The address controller 302 has an address table 401 and sends out one of addresses contained in the table 401 to the bus 301. The send-out of the addresses is cyclically carried out in a predetermined order. On the other hand, the linkage unit 300A stores an address which allots itself to the data sending source in source registers 41A and 41B and checks if the contents "A" and "B" with the address from the address controller 302. When the corresponding address is generated by the address controller 302, for example, when the address "An is generate#, the linkage unit 300A determines that its own unit is selected and sends out the data stored in the output area to the bus 301. Thus, the linkage unit 300A as the data sending source sends out the content (data) of an area A defined as the output area of the internal memory 42A to the data bus of the bus 301. The other units readily determine that the address nA" is not to the access to themselves. Accordingly, the other units, after the generation of the address "A", write the data sent out to the data bus of the bus 301 (the data stored in the output area of the internal memory of the linkage unit 300A) to the input areas A of their internal memories. Since the address is cyclically and sequentially updated, the data stored in all of the linkage units and the input/ output unit are sequentially renewed. The data stored in the memories include the results of processing of all of the processing units and the input data from the input/output unit so that each processor can receive any necessary data to carry out a necessary processing. A specific configuration of the address controller -302 is now explained with reference to Fig. 3. Numeral 500 denotes a clock pulse generator which generates a reference clock pulse and numeral 501 denotes a counter which counts up the clock pulses. It is called here an address counter. An output from the counter 501 is an address signal for the data transmission. It is called a first address signal. Numeral 504 denotes a comparator which produces a counter reset signal 5-A when the count of the address counter reaches to a predetermined value. It is provided to allow cyclic counting. Numeral 502 denotes an address memory which stores an address signal to transfer the data to an area of the address corresponding to the count of the counter 501. The address signal read from the counter is called a second address signal. Numeral 5-B denotes a signal line for setting the second address signal. The second address signal is set to the address memory 502 by a console (not shown) through the signal line 5-B. Numeral 503 denotes a selector which selectively supplies one of the count of the address counter 501 (first address signal) and the output of the address memory 502 accessed by that count (second address signal) to an address register 505 as the address signal for the data transmission. The selector 503 passes one of the above signals by a selection signal supplied (from the console) through a signal line 5-C. Numeral 505 denotes the address register which receives the address signal for the data transmission and sends it out to the address bus 301A of the bus 301. The address controller 302 is not necessarily constructed in the above manner, but the above construction is preferred in that the output of the address counter can be used as the address signal or the content of the address memory read out in accordance with the counter output can be used as the address signal. Depending on a manner in which the address signal stored in the address memory 502 (second address signal) is set, a freedom of the data transfer of the linkage units and the input/output unit is attained. When data transfer frequencies required by the respective units are different, it is possible to allot high transfer frequency to the units which require the high transfer frequency, and low transfer frequency to other units. The function which allows setting of any number of times of access to the units while taking the frequency of the data sending source unit into consideration is called a multi-polling function. A manner to achieve the multi-polling function is now explained. As shown in Fig. 4a, the second address signal is set to the address memory 502. This is effected by externally storing the address signals a, b, c, d, e and f to the addresses (1 - 12 in the illustrated example) of the address memory through the signal line 502. Turning back to Fig. 3, when the output of the address counter 501 which has counted the clock pulse is "1", the address memory 502 supplies the address signal "a". Let us assume that the selector 503 now selects the address memory. The address signal "a" is registered in the address register 505 and sent out to the address bus 301A. As a result, the linkage units or the input/output unit having the address "a" in the output area is selected and a multi-destination communication is effected using that unit as the data sending source. When the output of the address counter 501 reaches "2", the address memory 502 produces the address signal "b" (see Fig. 4a). As a result, the unit having the address "b" in the output area is selected to carry out the data transmission. Then, when the output of the address counter 501 reaches "3", the signal "a" is again produced because the address signal "a" has been set at the address "3" of the address memory 502. As a result, the unit having the address "a" in the output area is again selected and the data transfer is carried out in a similar manner. In this manner, by allotting the address signal to be set in the address memory in accordance with the frequency of the data sending source unit for the data transmission, the multi-polling is attained. If all of the units have the same transfer frequency, the address signals may be allotted to the addresses of the address memory at an equal frequency, or the output of the counter 501 may be directly used as the address signal. Fig. 4b shows access frequencies for the addresses "a" - "f" when the address signals are allotted as shown in Fig. 4a. In Fig. 4b, a smaller diameter has a higher frequency. Now, explanation will be made of, referring to Fig. 5, a specific configuration of the linkage unit which receives the address signal generated by the address controller and determines whether its own unit is the data sending source (SOUR¯) or the data receiving unit (SINK) to carry out the data transmission. In Fig. 5 showing the linkage unit 300, numeral 41 denotes a register which registers a data (source data) to determine if the linkage unit has been selected by the address signal (that is, as the data sending source). It is called a source register. The source data is registered for each unit when the system is powered up. It is necessary that the registered content corresponds to the setting content of the adddress signal of the address controller. Numeral 42 denotes an internal memory which is a 2-port rewritable memory. The memory 42 comprises a random access memory (RAM) 700 and a collision controller 710 which controls the data access from the bus and the data access from the computer (processor) to prevent the collision thereof. Numeral 704 denotes a coincidence detector (comparator) which compares an input address signal with the source data and produces a compare equal signal when they are equal. An output gate is controlled by the compare equal signal, and an input gate is controlled by a compare unequal signal. It also decodes the input address signal to select the corresponding address of the internal memory. Numeral 705 denotes a linkage controller which receives the compare equal signal and exchanges signals of data transfer acknowledgement and end of data transfer between the sending source and the receiving unit to define timing of the data transfer. Numeral 703 denotes a data bus monitor which monitors any abnormal state of the data bus. Numeral 706 denotes an address monitor which monitors the address. Numeral 702 denotes a gate which is controlled by a gate control signal from the linkage controller 705. When the coincidence detector 704 produces the compare equal signal, the controller 705 produces a signal (for example, "H" level) to open the data output gate, and otherwise produces a signal (for example, "L" level) to open the data input gate. The operation of the linkage unit 300 shown in Fig. 7 is now explained. When the address signal is sent out to the address bus 301A, the coincidence detector 704 receives the address signal and compares it with the source data stored in the source register 41. Either the compare equal or compare unequal signal is supplied to the linkage controller 705. The result of decoding of the address signal, that is, the memory selection signal corresponding to the address signal is supplied to the internal memory 42. The address monitor 706 checks the address signal for a parity check and a timeout check to determine if the signal was transmitted within a predetermined time. If an error is detected by the check, a signal is supplied to the coincidence detector 704 to stop the operation thereof. This signal is also utilized as an error signal to be externally reported. The internal memory 42 responds to the input memory selection signal to supply the data at the corresponding address of the RAM 700 to the gate 702. The collision controller 701 imparts a higher priority to the output of the coincidence detector 704 than to the access from the computer. Normally, the computer (processor) reads and writes necessary data from and to the internal memory asynchronously and independently from the bus. The data transfer timing is discussed here. The linkage controller 705 controls the timing. A signal line 7A for carrying a signal DV (data valid) indicating the validity of the data on the data bus and a signal line 7B which carries data acceptance signals DA supplied from N-l receiving units to one data sending source unit are used as the timing signal lines. When one of the linkage units is the data sending source, it supplies the signal DV to the other N-l units. On the other hand, the signals DA are supplied from the N-l units to the one unit and they indicate the completion of the data acceptance. A detail of the timing is shown in Fig. 6, in which @ - 0 show sequence of establishing the timing. The internal operation of the linkage controller 705 is shown in Fig. 7. By utilizing the above function, it is possible to exactly check if only one unit is the data sending source. If more than one sources are selected, the parity check by the data bus monitor 703 would normally detect an error, but if it does not detect the error by some reason the more than one sources can be detected by checking if more than one signals DA are "L" (low) after predetermined time has elapsed. In Fig. 7, G indicate that the processing is carried out in timed relation with Fig. 6. Next, explanation will be made of an error processing. When an error in the address bus 301A or 301B is detected by the address monitor 706 and the data bus monitor 703 and an error in the processor is detected (by a conventional error detection method), the source data registered in the source register 41 is cleared by the processing in the linkage unit 300. The linkage unit is selected by the address signal so that it looses a chance of data sending source. As a result, the corresponding linkage unit and processor are equivalently disconnected from the bus 301. By disconnecting the error function, a system-down of the entire system can be avoided although the function performance is partially lowered. Since the linkage units store the data required by the processors in their internal memories, even if one of the processors is down by the error, the overall function can be readily backed up by the other N-l processors. In the above embodiment, since the linkage units transfer data independently from the processors, the processors do not need the bus occupation control and hence the processing performance is improved. Since the data transfer through the bus can also be carried out independently of the processors, a high data transmission rate and a high data throughput are attained. Since the linkage units store not only the data required by the associated processors but also the data necessary for all other processings, they can readily back up the system. Since the error is independently monitored, only the error portion can be disconnected to avoid the system-down of the entire system. The address can be freely set and the system can be readily modified or expanded. For example, the system expansion may be attained by connecting an additional linkage unit to the bus and connecting an additional processor to the added linkage unit, It is necessary, as a matter of course, to register the address of the added linkage unit in the bus controller. In adjusting the system, the inputs are free so long as the outputs are cut. Therefore, the other processors are not affected and debugging is facilitated. Figs. 8 and 9 show other embodiments of the present invention. In the embodiment shown in Fig. 8, the address controller 302 has no address memory (502 in Fig. 3) but the linkage controller has it. In the embodiment shown in Fig. 9, the address controller is replaced by the clock pulse generator 500 and other functions are carried out by the linkage unit. With those configurations, the address controller may be of simple construction. Fig. 10 shows another embodiment of the present invention, in which an additional linkage unit and a higher order computer are added to the system shown in Fig. 1. In the figure, numeral 200Z denotes a back-up processor which backs up one of processors 200A - 200G when it is down. In the present embodiment, the back-up is carried out by a back-up instruction from a host computer 2000 although it is not always necessary. Numeral 300Z denotes a linkage unit for the back-up processor 200Z, which stores the data on the data bus in its internal memory irrespective of the operation condition of the processor 200Z so that a rapid back-up operation is attained. Numeral 300L denotes a linkage unit arranged to effect the data transmission between the computer 2000 and the processors. The computer 2000 and the linkage unit 300L are coupled via a transmitter M-l, which is a serial transmitter in the present embodiment. Similarly, the computer 2000 and the processor 200Z are coupled via a transmitter M-2. The present embodiment has the following advantages in addition to the features attained by the embodiment of Fig. 3. The back-up processing is carried out very rapidly so that an affect to the overall system is minimized. In addition, since the computer 2000 also serves as one of the processors in the system to carry out the data transmission, a special processing is not necessary and the data transmission efficiency is improved. Fig. 11 shows other embodiment of the present invention. The address controller 302 comprises an address counter 501 for generating a transfer address signal, a memory 502 which contains a sending source management table and a decoder 506 for decoding sending source information 510 read out from the memory 502. The decoder 506 supplies gate signals to the address bus 301A to control gates 3100 and 431 - 43G which send out the data of the input unit 301 and the linkage units 300A - 300G which can be the sending source on the data bus 301B and gates 3110 - 31NN and 421 - 42N which send out the data on the data bus 301B to two port memories 700A - 700G of the output units 311 - 31G and the linkage units 300A - 300G. The above embodiment operates in the following manner. 1) When the data is to be transmitted from the input unit 310 to the processors, the content of the address counter 501 is "a" to indicate such a transmission and the memory 502 supplies the data to indicate that the sending source is the input unit 310. This data is decoded by the decoder 506, which produces a signal 130 to open the gate 3100. Signals to open the gates 431 - 43G of the linkage units 300A - 300G are not supplied to the address bus 301A. Accordingly, the input gates 421 - 42G which operate complementarily to those signals are opened so that the data is written at predetermined addresses of the memories 700A - 700G. 2) When the data is to be transmitted from the processor to the output unit, for example, from the linkage unit 300A to the output unit 311, the content of the address counter 501 is "b" to indicate such a transmission and the memory 502 supplies a data to indicate that the sending source is the processor 200A. This data is decoded by the decoder 506, which produces a signal to open the gates 431 and 3110. Since no other gate control signal is produced, the gates other than the gate 3110 of the input/output unit 303 and the output gates 432 - 43G other than the gate of the linkage unit 300A are closed. The input gate 421 of the linkage unit 300A is closed and the input gates 422 - 42G of other linkage units are opened. As a result, the data of the linkage unit 300A is transferred to the output unit 311 and the linkage units 300B - 300G.

Claims: WHAT IS CLAIMED IS: 1. A data transmission system having a plurality of processors (200A - 200G, 200Z, 2000) and a bus (301) connected to said processors for transmitting data, comprising: linkage units (300A - 300G, 300Z, 300L) having memories for storing data, arranged between said processors and said bus; an address controller (302) for generating an address for the data transfer arranged between said processors and said bus; and means for selecting one of said linkage units as a data sending source and other linkage as receiving units by said address to effect the data transfer. 2. A data transmission system according to Claim 1 wherein said address controller includes a clock pulse generator (500) for generating clock pulses and a counter (501) for cyclically counting said clock pulses, the count of said counter being supplied as said address. 3. A data transmission system according to Claim 1 wherein said address controller includes a clock pulse generator (500) for generating clock pulses, a counter (501) for cyclically counting said clock pulses and an address memory (502) for supplying said address stored therein in accordance with the count of said counter. 4. A data transmission system according to Claim 1 wherein said memories of said linkage units are two port random access memories. 5. A data transmission system according to Claim 1 wherein each of said linkage units includes a memory (42A - 42G) for storing data from said processors and other linkage units and a transfer controller for decoding said address to send out the data stored in an output area of said memory only when its own unit is selected. 6. A data transmission system according to Claim 1 wherein one of said processors is a back-up processor (200Z) for backing up one of other processors when it is down. 7. A data transmission system according to Claim 1 wherein one of said processor is a host computer (2000) which issues an instruction to back up one of the down processors. 8. A data transmission system having a plurality of processors (200A - 200G, 200Z, 2000), a common data input/output unit (303) and a common bus (301) for transmitting data between said processors and between said processors and said data input/output unit, said system further comprising: linkage units (300A- 300G, 300Z, 300L) arranged between said bus and said processors; and an address controller (302) for generating an address for data transfer through the bus between said linkage units; each of said linkage units including a memory (42A - 42G) for storing data supplied from the associated processor, other processors and said input/output unit and a transfer controller for decoding said address to send out the data stored in an output area of said memory only when its own unit is selected. 9. A data transmission system according to Claim 8 wherein said memories of said linkage units are twoport random access memories. 10. A data transmission system according to Claim 8 wherein said address controller includes an address counter (501) for counting clock pulses, an address memory (502) for supplying an address in accordance with the count of said counter and a decoder for decoding said address to supply a gate control signal to said transfer controllers of said linkage units. 11. A data transmission system having a bus (301) for transmitting data, a plurality of computers (200A 200G, 200Z, 2000) for transmitting the data through said bus and an input/output unit (303) connected to said bus, said system further comprising: linkage units (300A - 300G, 300Z, 300L) arranged between said computers and said bus, each of said linkage units including a memory (42A - 42B) for storing the data and input/output gates for supplying the content of said memory to said bus and the data sent out to said bus to said memory in response to a data transfer command; an address controller (302) for issuing the data transfer command to manage the data transfer between said linkage units and between said linkage units and said input/output units; and means for transferring the data between said input/output unit and said computers and between said computers according to the data transfer command.

Inventors: AZUSAWA, NOBORU, KAMIGANE, YOSHIHIRO, KIKUCHI, YUJI, KITANI, SUSUMU, OKAMOTO, TADASHI, SAITO, YUTAKA, SAKURAI, TAKAKAZU, SHIMOYAMA, KAZUHIKO, TAKAKURA, MITSURO, YOSHIDA, TAKENARI
Applicants: HITACHI, LTD.
Application year: 1982
Main classification: G06F13
IPC codes: G06F15, G06F13