US20070220296A1 - Data processing apparatus - Google Patents
Data processing apparatus Download PDFInfo
- Publication number
- US20070220296A1 US20070220296A1 US11/684,911 US68491107A US2007220296A1 US 20070220296 A1 US20070220296 A1 US 20070220296A1 US 68491107 A US68491107 A US 68491107A US 2007220296 A1 US2007220296 A1 US 2007220296A1
- Authority
- US
- United States
- Prior art keywords
- cpu
- packet
- value
- module
- processing apparatus
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/14—Time supervision arrangements, e.g. real time clock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
- H04J3/0667—Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays
Definitions
- the present invention relates to a data processing apparatus including a plurality of CPU (Central Processing Unit) modules which are operated synchronously with each other.
- CPU Central Processing Unit
- a data processing apparatus including a plurality of CPU modules which are operated synchronously with each other is known.
- the synchronization between the CPU modules is conventionally performed by inputting a clock from a clock source that is common to all of the CPU modules.
- a data processing apparatus has a problem in that the operations of all the CPU modules are stopped when a fault occurs in the common clock source.
- each of the CPU modules recognizes the values of the mutual clock counters, and the CPU modules which are respectively operated based on the clocks from the individual clock sources are made synchronous with each other.
- each CPU module transmits and receives the value of the mutual clock counter as a packet to and from the other CPU modules. In that case, each CPU module cannot execute the exact synchronizing process, unless the arrival time of its counter packet is constant.
- the counter packet When the counter packet is transmitted and received through a general signal line, the counter packet receives the influence of a general packet, and an arrival time thereof is not constant.
- the data processing apparatus when the counter packet is transmitted and received through the general signal line, the data processing apparatus must include a dedicated configuration, for example, a configuration in which the counter packet is preferentially processed without any influence of the general packet.
- the data processing apparatus must include the signal line dedicated to the clock counter information, which is different from the general signal line, to transmit and receive the general packet and the like. In any case, the configuration of the data processing apparatus becomes large in scale and complex.
- An exemplary feature of the present invention is to provide a data processing apparatus capable of synchronizing a plurality of CPU modules each being operated at an independent clock, with a simple configuration.
- a data processing apparatus includes a plurality of CPU modules each including a CPU.
- the plurality of CPU modules are connected to each other through a cross link.
- Each of the plurality of CPU module includes a clock source which supplies a clock to the CPU of its own, a clock counter which counts the clocks from the clock source, an I/O module which transmits and receives a predetermined packet to and from the CPU, a first data adder which, when a packet designated to the CPU is received from the I/O module, reads a value of the clock counter, adds a predetermined offset value to the read value to generate a timing value, and adds the generated timing value to the packet designated to the CPU, and a timing adjuster which adjusts timing of transmitting the packet to the CPU, based on the timing value of the packet received from the first data adder and the value of the clock counter.
- the CPU module constituting the data processing apparatus of the present invention adds the timing value for defining its processing timing of to the packet to be transmitted to the CPU from the I/O module, and processes the packet based on the value of the clock counter of its own and the timing value.
- the data processing apparatus makes it possible to synchronize the plurality of CPU modules each being operated at the independent clock.
- the data processing apparatus of the present invention is operated based on the timing value added to the packet and the value of the clock counter of each CPU module.
- the counter value of the synchronous partner is not required to be known. Consequently, according to the data processing apparatus of the present invention, there is no need for the general signal line to be provided with the special configuration to prevent a counter packet from receiving the influence of the general packet. Also, there is no need for the data processing apparatus to be provided with the signal line dedicated to the counter packet between the CPU modules.
- FIG. 1 shows an example of a control block diagram of a data processing apparatus according to a first embodiment of the present invention
- FIG. 2 shows an example of a sequence diagram for illustrating an operation of resetting a CPU and a clock counter of each CPU module in the data processing apparatus shown in FIG. 1 ;
- FIG. 3 shows an example of a sequence diagram for illustrating an operation performed in the data processing apparatus shown in FIG. 1 , in which the CPU transmits a request packet to an I/O module and receives a response packet for the request packet from the I/O module;
- FIG. 4 shows an example of a sequence diagram illustrating an operation performed in the data processing apparatus shown in FIG. 1 , in which the I/O module transmits a request packet to the CPU and receives a response packet for the request packet from the CPU;
- FIG. 5 shows an example of a sequence diagram illustrating an operation performed in the data processing apparatus shown in FIG. 1 , the CPU receives an interruption packet periodically transmitted from the I/O module and resets the clock counter in response to the interruption packet;
- FIG. 6 is a graph explicitly showing a fact that a clock counter deviation amount between the CPU modules fall in a certain range by the periodical resetting process explained with reference to FIG. 5 ;
- FIG. 7 shows an example of a control block diagram of a data processing apparatus according to a second embodiment of the present invention.
- FIG. 1 shows an example of a control block diagram of a data processing apparatus according to a first embodiment of the present invention.
- the data processing apparatus includes a CPU module 1000 and a CPU module 2000 .
- the CPU module 1000 and the CPU module 2000 are connected through a cross link 3000 .
- the CPU module 1000 includes a clock source 1100 , a CPU 1201 , a clock counter 1202 , an offset value register 1203 , a comparator 1204 , a first data adder 1205 , a timing adjuster 1206 , a cross link controller 1207 and an I/O module 1300 .
- the CPU 1201 executes a series of command rows, and is composed of, for example, CPU (central processing unit) and its peripheral circuit.
- the clock counter 1202 counts the clocks from the clock source 1100 .
- the clock counter 1202 resets the counter value when receiving a reset instruction of a counter value from the timing adjuster 1206 .
- the clock counter 1202 and a clock counter 2202 in the CPU module 2000 are reset when the CPU 1201 and a CPU 2201 in the CPU module 2000 start a synchronizing operation.
- the offset value register 1203 stores a preset offset value.
- the offset value is a value equal to or greater than the necessary minimum number of the clocks, for example, until the packet transmitted from the first data adder 1205 in the CPU module 1000 is received by a timing adjuster 2206 in the CPU module 2000 through the cross link 3000 .
- the comparator 1204 checks whether or not the packet received from the CPU 1201 and the packet received from the CPU 2201 in the CPU module 2000 through the cross link 300 are coincident. If the packets are coincident with each other, the comparator 1204 chooses one of the packets and transmits it to the I/O module 1300 . In this case, the comparator 1204 can also buffer the packet transmitted from the CPU 1201 and the packet transmitted from the CPU 2201 .
- the first data adder 1205 reads the value of the clock counter 1202 when receiving the packet designated to the CPU from the I/O module 1300 , adds the value of the offset value register 1203 to that value to generate a timing value, and then adds the generated timing value to the packet.
- the first data adder 1205 transmits the packet with the timing value to the timing adjuster 1206 and the cross link controller 1207 .
- the timing adjuster 1206 receives the packet added with the timing value from the first data adder 1205 in the CPU module 1000 or a first data adder 2205 in the CPU module 2000 . Then, the timing adjuster 1206 waits until the value of the clock counter 1202 becomes coincident with the timing value added to the received packet, and transmits the packet to the CPU 1201 when they are coincident with each other. It should be noted that the timing adjuster 1206 executes a control so that the processing order of the packets is not different between the CPU modules 1000 and 2000 when the timing values of the packet received from the first data adder 1205 in the CPU module 1000 and the packet received from the first data adder 2205 in the CPU module 2000 are coincident with each other. For example, the timing adjuster 1206 can buffer the packet received from the first data adder 1205 and the packet received from the first data adder 2205 .
- the cross link controller 1207 transmits the packet transmitted from the CPU 1201 to a comparator 2204 in the CPU module 2000 through the cross link 3000 and a cross link controller 2207 in the CPU module 2000 . Also, the cross link controller 1207 transmits the packet transmitted from the first data adder 1205 to the timing adjuster 2206 through the cross link 3000 and the cross link controller 2207 . Moreover, the cross link controller 1207 receives the packet transmitted from the CPU 2201 in the CPU module 2000 through the cross link controller 2207 and the cross link 3000 , and transmits to the comparator 1204 . Further, the cross link controller 1207 receives the packet transmitted from the first data adder 2205 in the CPU module 2000 through the cross link controller 2207 and the cross link 3000 , and transmits to the timing adjuster 1206 .
- the I/O module 1300 includes an I/O bridge 1301 , a reset packet generator 1302 , a timer 1303 and an I/O device 1304 .
- the I/O bridge 1301 receives the packet from the comparator 1204 and transmits the packet to at least one of the reset packet generator 1302 , the timer 1303 and the I/O device 1304 . Further, the I/O bridge 1301 receives the packets transmitted from the reset packet generator 1302 , the timer 1303 and the I/O device 1304 , and transmits the packet to the first data adder 1205 .
- the reset packet generator 1302 generates the reset packet when the generation of a reset packet is required by the CPUs 1201 and 2201 , and transmits the packet to the first data adder 1205 through the I/O bridge 1301 .
- the timer 1303 generates a timer interruption packet for each elapse of a predetermined time, and transmits the packet to the first data adder 1205 through the I/O bridge 1301 .
- the I/O device 1304 is composed of an SCSI controller, a LAN adapter and the like.
- the CPU module 2000 includes a clock source 2100 , the CPU 2201 , the clock counter 2202 , an offset value register 2203 , the comparator 2204 , the first data adder 2205 , the timing adjuster 2206 , the cross link controller 2207 , and an I/O module 2300 . Since those members are equal to those of the CPU module 1000 , the explanations thereof are omitted.
- the respective CPUs 1201 , 2201 can discriminate the I/O modules 1300 , 2300 , respectively. However, since the CPU 1201 and the CPU 2201 are synchronously operated, they are recognized as one CPU from the respective I/O modules 1300 and 2300 , and both of them cannot be discriminated.
- the cross link 3000 establishes the connection between the CPU module 1000 and the CPU module 2000 .
- the cross link 3000 is composed of a parallel interface such as a PCI bus, and a serial interface such as PCI-Express, and the like.
- the cross link 3000 is essential for the data processing apparatus having the plurality of CPU modules, and is not a special signal line.
- FIG. 2 shows an example of a sequence diagram illustrating the operation of resetting the CPU 1201 and clock counter 1202 in the CPU module 1000 , and the CPU 2201 and clock counter 2202 in the CPU module 2000 in the data processing apparatus of the first embodiment of the present invention.
- the resets of the clock counter 1202 and CPU 1201 in the CPU module 1000 and the clock counter 2202 and CPU 2201 in the CPU module 2000 are executed based on the reset packet transmitted from the reset packet generator 1302 in the CPU module 1000 or a reset packet generator 2302 in the CPU module 2000 .
- the reset packet generator 1302 or the reset packet generator 2302 generates the reset packet when receiving a reset request packet from the CPU 1201 or the CPU 2201 .
- the reset packet generator 1302 in the CPU module 1000 is used to reset the clock counter 1202 and CPU 1201 in the CPU module 1000 and the clock counter 2202 and CPU 2201 in the CPU module 2000 .
- the CPU 1201 transmits the reset request packet to the comparator 1204 (Step S 201 ).
- the comparator 1204 transmits the reset request packet to the reset packet generator 1302 in the I/O module 1300 without waiting for the transmission of the same packet from the CPU 2201 (Step S 202 ).
- the reset packet generator 1302 generates the reset packet when receiving the reset request packet, and transmits the reset packet to the first data adder 1205 (Step S 203 ).
- the first data adder 1205 transmits the reset request packet to the timing adjuster 1206 and the cross link controller 1207 when receiving the reset packet from the reset packet generator 1302 (Step S 204 ).
- the timing adjuster 1206 refers to a transmission source of the received reset packet, and judges whether or not the reset packet is passed through the cross link 3000 .
- the transmission source of the reset packet is the reset packet generator 1302 , and the reset packet is not passed through the cross link 3000 . Accordingly, the timing adjuster 1206 , after waiting for the elapse of a preset clock cycle (Step S 205 ), resets the clock counter 1202 (Step S 206 ). After that, the timing adjuster 1206 resets the CPU 1201 (Step S 207 ).
- the cross link controller 1207 transmits the reset packet received from the first data adder 1205 to the cross link controller 2207 through the cross link 3000 (Step S 208 ).
- the cross link controller 2207 transmits the received reset packet to the timing adjuster 2206 (Step S 209 ).
- the timing adjuster 2206 refers to a transmission source ID of the received reset packet, and judges whether or not the reset packet is passed through the cross link 3000 .
- the transmission source is the reset packet generator 1302 in the CPU module 1000 , and the reset packet is passed through the cross link 3000 .
- the timing adjuster 2206 does not enter into a waiting state and immediately resets the clock counter 2202 (Step S 210 ).
- the timing adjuster 2206 resets the CPU 2201 (Step S 211 ).
- the clock deviation between the clock counter 1202 and the clock counter 2202 is removed. After that, the synchronous operation between the CPUs 1201 and 2201 is started.
- FIG. 3 shows an example of a sequence diagram illustrating the operation in which the CPU 1201 and the CPU 2201 transmit a request packet to the I/O module 1300 and receive a response packet for the request from the I/O module 1300 .
- the CPU 1201 transmits the request packet designated to the I/O module 1300 to the comparator 1204 (Step S 301 ).
- the value of the clock counter 1202 in this case is, for example, 10 .
- the CPU 1201 and the CPU 2201 synchronously execute the same command row.
- the CPU 2201 also transmits the request packet designated to the I/O module 1300 to the cross link controller 2207 when the value of the clock counter 2202 becomes 10 (Step S 302 ).
- the cross link controller 2207 transmits the received request packet to the cross link controller 1207 through the cross link 3000 (Step S 303 ).
- the cross link controller 1207 transmits the received request packet to the comparator 1204 (Step S 304 ).
- the comparator 1204 compares the response packet received from the CPU 1201 and the response packet received from the CPU 2201 (Step S 305 ). When a fault is not generated in the data processing apparatus, these two request packets are coincident. The comparator 1204 chooses one of the request packets and transmits the request packet to the I/O module 1300 (Step S 306 ).
- the I/O module 1300 judges whether or not the received packet is the packet requiring a response. In this case, the received packet is the request packet. Thus, the I/O module 1300 generates a response packet and transmits the generated packet to the first data adder 1205 (Step S 307 ).
- the timing adjuster 1206 refers to the timing value TV added to the response packet when receiving the response packet, and executes the waiting until the value of the clock counter 1202 becomes equal to the timing value TV (Step S 310 ).
- the timing adjuster 1206 transmits the response packet to the CPU 1201 when the value of the clock counter 1202 becomes equal to the timing value TV (Step S 311 ).
- the cross link controller 1207 transmits the response packet received from the first data adder 1205 , through the cross link 3000 to the cross link controller 2207 (Step S 312 ).
- the cross link controller 2207 transmits the received response packet to the timing adjuster 2206 (Step S 313 ).
- the timing adjuster 2206 refers to the timing value TV added to the response packet when receiving the response packet, and executes the waiting until the value of the clock counter 2202 becomes equal to the timing value TV (Step S 314 ).
- the timing adjuster 2206 transmits the response packet to the CPU 2201 when the value of the clock counter 2202 becomes equal to the timing value TV (Step S 315 ).
- both of the CPU 1201 and the CPU 2201 transmit the request packet when the values of the clock counter 1202 and the clock counter 2202 are 10, and receive the response packet when the values of the clock counter 1202 and the clock counter 2202 are 50.
- FIG. 4 shows an example of a sequence diagram illustrating the operation in which the I/O module 1300 transmits the request packet to the CPU 1201 and the CPU 2201 and receives the response packet for the request packet from the CPU 1201 and the CPU 2201 .
- the I/O module 1300 transmits the request packets designated to the CPU 1201 and the CPU 2201 , to the first data adder 1205 (Step S 401 ).
- the first data adder 1205 refers to the clock counter 1202 when receiving the request packet from the I/O module 1300 (Step S 402 ).
- the value of the clock counter 1202 in this case is, for example, 30.
- the value of the offset value register 1203 is, for example, 20.
- the first data adder 1205 transmits the request packet added with the timing value TV to the timing adjuster 1206 and the cross link controller 1207 (Step S 403 ).
- the timing adjuster 1206 transmits the request packet to the CPU 1201 when the value of the clock counter 1202 becomes equal to the timing value TV (Step S 405 ).
- the cross link controller 1207 transmits the request packet received from the first data adder 1205 through the cross link 3000 to the cross link controller 2207 (Step S 406 ).
- the cross link controller 2207 transmits the received request packet to the timing adjuster 2206 (Step S 407 ).
- the timing adjuster 2206 refers to the timing value TV added to the request packet when receiving the request packet, and executes the waiting until the value of the clock counter 2202 becomes equal to the timing value TV (Step S 408 ).
- the timing adjuster 2206 transmits the response packet to the CPU 2201 when the value of the clock counter 2202 becomes equal to the timing value TV (Step S 409 ).
- the CPU 1201 judges whether or not the received request packet is the packet requiring the response, and transmits the response packet to the comparator 1204 when the response is required (Step S 410 ).
- the CPU 2201 judges whether or not the received request packet is the packet requiring the response, and if the response is required, transmits the response packet to the cross link controller 2207 (Step S 411 ).
- the cross link controller 2207 transmits the response packet to the cross link controller 1207 through the cross link 3000 (Step S 412 ).
- the cross link controller 1207 transmits the received response packet to the comparator 1204 (Step S 413 ).
- the comparator 1204 compares the response packet received from the CPU 1201 and the response packet received from the CPU 2201 (Step S 414 ).
- the comparator 1204 chooses one of the response packets and transmits the response packet to the I/O module 1300 (Step S 415 ).
- both of the CPU 1201 and the CPU 2201 receive the request packet when the values of the clock counter 1202 and the clock counter 2202 are 50 .
- the CPU module constituting the data processing apparatus adds the timing value defining its processing timing to the packet to be transmitted to the CPU from the I/O module, and processes the packet based on the value of the clock counter of its own and the timing value. Accordingly, the data processing apparatus makes it possible to synchronize the plurality of CPU modules each being operated at the independent clock.
- the data processing apparatus is operated based on the timing value added to the packet and the value of the clock counter of each CPU module. Accordingly, it is not necessary to know the counter value of the synchronous partner. Hence, in the data processing apparatus, there is no need for the general signal line to be provided with the special configuration to prevent the counter packet from receiving the influence of the general packet. Further, there is no need for the data processing apparatus to be provided with the signal line dedicated to the counter packet between the CPU modules.
- FIG. 5 shows an example of a sequence diagram illustrating the operation in which the CPU 1201 and the CPU 2201 receive the interruption packet periodically transmitted from the I/O module 1300 , and reset the respective clock counters 1202 and 2202 in response to the interruption packet.
- the timer 1303 in the I/O module 1300 transmits a timer interruption packet to the first data adder 1205 for each elapse of a predetermined time (Step S 501 ).
- the timing adjuster 1206 transmits the timer interruption packet to the CPU 1201 when the value of the clock counter 1202 becomes equal to the timing value TV (Step S 505 ).
- the cross link controller 1207 transmits the timer interruption packet received from the first data adder 1205 to the cross link controller 2207 through the cross link 3000 (Step S 506 ).
- the cross link controller 2207 transmits the received timer interruption packet to the timing adjuster 2206 (Step S 507 ).
- the timing adjuster 2206 refers to the timing value TV added to the timer interruption packet when receiving the timer interruption packet, and executes the waiting until the value of the clock counter 2202 becomes equal to the timing value TV (Step S 508 ).
- the timing adjuster 2206 transmits the timer interruption packet to the CPU 2201 when the value of the clock counter 2202 becomes equal to the timing value TV (Step S 509 ).
- the CPU 1201 first escapes a context when receiving the timer interruption packet (Step S 510 ). After that, the CPU 1201 transmits a reset request packet designated to the reset packet generator 1302 to the comparator 1204 (Step S 511 ).
- the CPU 2201 first escapes a context when receiving the timer interruption packet (Step S 512 ). After that, the CPU 2201 transmits a reset request packet designated to the reset packet generator 1302 to the cross link controller 2207 (Step S 513 ).
- the cross link controller 2207 transmits the received reset request packet to the cross link controller 1207 through the cross link 3000 (Step S 514 ).
- the cross link controller 1207 transmits the received reset request packet to the comparator 1204 through the cross link 3000 (Step S 515 ).
- the comparator 1204 compares the reset request packet received from the CPU 1201 and the reset request packet received from the CPU 2201 (Step S 516 ). When a fault is not generated in the data processing apparatus, those two response packets are coincident with each other. The comparator 1204 chooses one of the reset request packets and transmits the chosen reset request packet to the I/O module 1300 (Step S 517 ).
- the reset packet generator 1302 that received the reset request packet through the I/O bridge 1301 transmits the reset packet, which is assigned the transmission source ID to identify the I/O module to the first data adder 1205 (Step S 518 ).
- the first data adder 1205 transmits the received reset packet to the timing adjuster 1206 and the cross link controller 1207 (Step S 519 ).
- the timing adjuster 1206 refers to a transmission source ID of the received reset packet, and judges whether or not the reset packet is passed through the cross link 3000 .
- the transmission source of the reset packet is the reset packet generator 1302 , and the reset packet is not passed through the cross link 3000 .
- the timing adjuster 1206 after waiting for the elapse of a preset clock cycle (Step S 520 ), resets the clock counter 1202 (Step S 521 ). After that, the timing adjuster 1206 resets the CPU 1201 (Step S 522 ).
- the cross link controller 1207 transmits the reset packet received from the first data adder 1205 to the cross link controller 2207 through the cross link 3000 (Step S 523 ).
- the cross link controller 2207 transmits the received reset packet to the timing adjuster 2206 (Step S 524 ).
- the timing adjuster 2206 refers to a transmission source ID of the received reset packet, and judges whether or not the reset packet is passed through the cross link 3000 .
- the transmission source is the reset packet generator 1302 in the CPU module 1000 , and the reset packet is passed through the cross link 3000 .
- the timing adjuster 2206 does not enter into the waiting state, and immediately resets the clock counter 2202 (Step S 525 ). Moreover, after that, the timing adjuster 2206 resets the CPU 2201 (Step S 526 ).
- the CPU 1201 after being completed the reset returns the context escaped prior to the reset (Step S 527 ).
- the CPU 2201 returns the context escaped prior to the reset (Step S 528 ).
- FIG. 6 is a graph explicitly illustrating a fact that the deviation amount between the clock counter 1202 and the clock counter 2202 falls in a certain range by the periodical resetting process illustrated with reference to FIG. 5 .
- an abscissa indicates a time
- an ordinate indicates the deviation amount between the clock counter 1202 and the clock counter 2202 .
- the deviation amount between the clock counter 1202 and the clock counter 2202 can be suppressed to a certain range, for example, 7 or less in FIG. 6 . In this way, it is possible to continue the synchronous operation between the CPU 1201 and the CPU 2201 .
- FIG. 7 shows an example of a control block diagram of a data processing apparatus according to a second embodiment of the present invention.
- the difference from the data processing apparatus in the first embodiment of the data processing apparatus in the second embodiment lies in the point that the respective CPU modules 1000 and 2000 further include second data adders 1208 and 2208 .
- the second data adder 1208 adds the value of the clock counter 1202 ( 2202 ) to the packet transmitted from the CPU 1201 (CPU 2201 ).
- the comparator 1204 compares the packet transmitted from the CPU 1201 and the packet transmitted from the CPU 2201 during the synchronous operation. However, in this case, the comparator 1204 ( 2204 ) compares the values of the clock counters which are added to the respective packets. The comparison leads to the early detection of the synchronous mismatching between the CPU 1201 and the CPU 2201 .
- the data processing apparatus including the CPU modules of two systems is exemplified.
- the number of the systems is not limited to the two systems, and the three systems or more can be employed.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Hardware Redundancy (AREA)
Abstract
A data processing apparatus includes a plurality of CPU modules each including a CPU. Each of the plurality of CPU module includes a clock source, a clock counter, an I/O module, a first data adder, and a timing adjuster. The first data adder reads a value of the clock counter, adds a predetermined offset value to the read value to generate a timing value, and adds the generated timing value to the packet designated to the CPU. The timing adjuster adjusts timing of transmitting the packet to the CPU, based on the timing value of the packet received from the first data adder and the value of the clock counter.
Description
- 1. Field of the Invention
- The present invention relates to a data processing apparatus including a plurality of CPU (Central Processing Unit) modules which are operated synchronously with each other.
- 2. Description of the Related Art
- A data processing apparatus including a plurality of CPU modules which are operated synchronously with each other is known. The synchronization between the CPU modules is conventionally performed by inputting a clock from a clock source that is common to all of the CPU modules. However, such a data processing apparatus has a problem in that the operations of all the CPU modules are stopped when a fault occurs in the common clock source.
- To cope with the problem, for example, in the data processing apparatus as disclosed in JP 07-73059 A, each of the CPU modules recognizes the values of the mutual clock counters, and the CPU modules which are respectively operated based on the clocks from the individual clock sources are made synchronous with each other.
- In this case, each CPU module transmits and receives the value of the mutual clock counter as a packet to and from the other CPU modules. In that case, each CPU module cannot execute the exact synchronizing process, unless the arrival time of its counter packet is constant. When the counter packet is transmitted and received through a general signal line, the counter packet receives the influence of a general packet, and an arrival time thereof is not constant. Thus, when the counter packet is transmitted and received through the general signal line, the data processing apparatus must include a dedicated configuration, for example, a configuration in which the counter packet is preferentially processed without any influence of the general packet. Alternatively, the data processing apparatus must include the signal line dedicated to the clock counter information, which is different from the general signal line, to transmit and receive the general packet and the like. In any case, the configuration of the data processing apparatus becomes large in scale and complex.
- The present invention has been made to solve the above-mentioned problems. An exemplary feature of the present invention is to provide a data processing apparatus capable of synchronizing a plurality of CPU modules each being operated at an independent clock, with a simple configuration.
- In an aspect of the present invention, a data processing apparatus includes a plurality of CPU modules each including a CPU. The plurality of CPU modules are connected to each other through a cross link. Each of the plurality of CPU module includes a clock source which supplies a clock to the CPU of its own, a clock counter which counts the clocks from the clock source, an I/O module which transmits and receives a predetermined packet to and from the CPU, a first data adder which, when a packet designated to the CPU is received from the I/O module, reads a value of the clock counter, adds a predetermined offset value to the read value to generate a timing value, and adds the generated timing value to the packet designated to the CPU, and a timing adjuster which adjusts timing of transmitting the packet to the CPU, based on the timing value of the packet received from the first data adder and the value of the clock counter.
- The CPU module constituting the data processing apparatus of the present invention adds the timing value for defining its processing timing of to the packet to be transmitted to the CPU from the I/O module, and processes the packet based on the value of the clock counter of its own and the timing value. Thus, the data processing apparatus makes it possible to synchronize the plurality of CPU modules each being operated at the independent clock.
- Further, the data processing apparatus of the present invention is operated based on the timing value added to the packet and the value of the clock counter of each CPU module. Thus, the counter value of the synchronous partner is not required to be known. Consequently, according to the data processing apparatus of the present invention, there is no need for the general signal line to be provided with the special configuration to prevent a counter packet from receiving the influence of the general packet. Also, there is no need for the data processing apparatus to be provided with the signal line dedicated to the counter packet between the CPU modules.
- The above and other objects, features and advantages of the present invention will become more apparent from the following detailed description when taken in conjunction with the accompanying drawings wherein:
-
FIG. 1 shows an example of a control block diagram of a data processing apparatus according to a first embodiment of the present invention; -
FIG. 2 shows an example of a sequence diagram for illustrating an operation of resetting a CPU and a clock counter of each CPU module in the data processing apparatus shown inFIG. 1 ; -
FIG. 3 shows an example of a sequence diagram for illustrating an operation performed in the data processing apparatus shown inFIG. 1 , in which the CPU transmits a request packet to an I/O module and receives a response packet for the request packet from the I/O module; -
FIG. 4 shows an example of a sequence diagram illustrating an operation performed in the data processing apparatus shown inFIG. 1 , in which the I/O module transmits a request packet to the CPU and receives a response packet for the request packet from the CPU; -
FIG. 5 shows an example of a sequence diagram illustrating an operation performed in the data processing apparatus shown inFIG. 1 , the CPU receives an interruption packet periodically transmitted from the I/O module and resets the clock counter in response to the interruption packet; -
FIG. 6 is a graph explicitly showing a fact that a clock counter deviation amount between the CPU modules fall in a certain range by the periodical resetting process explained with reference toFIG. 5 ; and -
FIG. 7 shows an example of a control block diagram of a data processing apparatus according to a second embodiment of the present invention. -
FIG. 1 shows an example of a control block diagram of a data processing apparatus according to a first embodiment of the present invention. The data processing apparatus includes aCPU module 1000 and aCPU module 2000. TheCPU module 1000 and theCPU module 2000 are connected through across link 3000. - The
CPU module 1000 includes aclock source 1100, aCPU 1201, aclock counter 1202, anoffset value register 1203, acomparator 1204, afirst data adder 1205, atiming adjuster 1206, across link controller 1207 and an I/O module 1300. - The
CPU 1201 executes a series of command rows, and is composed of, for example, CPU (central processing unit) and its peripheral circuit. - The
clock counter 1202 counts the clocks from theclock source 1100. Theclock counter 1202 resets the counter value when receiving a reset instruction of a counter value from thetiming adjuster 1206. Usually, theclock counter 1202 and aclock counter 2202 in theCPU module 2000 are reset when theCPU 1201 and aCPU 2201 in theCPU module 2000 start a synchronizing operation. - The
offset value register 1203 stores a preset offset value. The offset value is a value equal to or greater than the necessary minimum number of the clocks, for example, until the packet transmitted from thefirst data adder 1205 in theCPU module 1000 is received by atiming adjuster 2206 in theCPU module 2000 through thecross link 3000. - The
comparator 1204 checks whether or not the packet received from theCPU 1201 and the packet received from theCPU 2201 in theCPU module 2000 through the cross link 300 are coincident. If the packets are coincident with each other, thecomparator 1204 chooses one of the packets and transmits it to the I/O module 1300. In this case, thecomparator 1204 can also buffer the packet transmitted from theCPU 1201 and the packet transmitted from theCPU 2201. - The
first data adder 1205 reads the value of theclock counter 1202 when receiving the packet designated to the CPU from the I/O module 1300, adds the value of theoffset value register 1203 to that value to generate a timing value, and then adds the generated timing value to the packet. Thefirst data adder 1205 transmits the packet with the timing value to thetiming adjuster 1206 and thecross link controller 1207. - The
timing adjuster 1206 receives the packet added with the timing value from thefirst data adder 1205 in theCPU module 1000 or afirst data adder 2205 in theCPU module 2000. Then, the timing adjuster 1206 waits until the value of theclock counter 1202 becomes coincident with the timing value added to the received packet, and transmits the packet to theCPU 1201 when they are coincident with each other. It should be noted that thetiming adjuster 1206 executes a control so that the processing order of the packets is not different between theCPU modules first data adder 1205 in theCPU module 1000 and the packet received from thefirst data adder 2205 in theCPU module 2000 are coincident with each other. For example, thetiming adjuster 1206 can buffer the packet received from thefirst data adder 1205 and the packet received from thefirst data adder 2205. - The
cross link controller 1207 transmits the packet transmitted from theCPU 1201 to acomparator 2204 in theCPU module 2000 through thecross link 3000 and across link controller 2207 in theCPU module 2000. Also, thecross link controller 1207 transmits the packet transmitted from thefirst data adder 1205 to thetiming adjuster 2206 through thecross link 3000 and thecross link controller 2207. Moreover, thecross link controller 1207 receives the packet transmitted from theCPU 2201 in theCPU module 2000 through thecross link controller 2207 and thecross link 3000, and transmits to thecomparator 1204. Further, thecross link controller 1207 receives the packet transmitted from thefirst data adder 2205 in theCPU module 2000 through thecross link controller 2207 and thecross link 3000, and transmits to thetiming adjuster 1206. - The I/
O module 1300 includes an I/O bridge 1301, areset packet generator 1302, atimer 1303 and an I/O device 1304. The I/O bridge 1301 receives the packet from thecomparator 1204 and transmits the packet to at least one of thereset packet generator 1302, thetimer 1303 and the I/O device 1304. Further, the I/O bridge 1301 receives the packets transmitted from thereset packet generator 1302, thetimer 1303 and the I/O device 1304, and transmits the packet to thefirst data adder 1205. Thereset packet generator 1302 generates the reset packet when the generation of a reset packet is required by theCPUs first data adder 1205 through the I/O bridge 1301. Thetimer 1303 generates a timer interruption packet for each elapse of a predetermined time, and transmits the packet to thefirst data adder 1205 through the I/O bridge 1301. The I/O device 1304 is composed of an SCSI controller, a LAN adapter and the like. - The
CPU module 2000 includes aclock source 2100, theCPU 2201, theclock counter 2202, an offsetvalue register 2203, thecomparator 2204, thefirst data adder 2205, thetiming adjuster 2206, thecross link controller 2207, and an I/O module 2300. Since those members are equal to those of theCPU module 1000, the explanations thereof are omitted. - It should be noted that the
respective CPUs O modules CPU 1201 and theCPU 2201 are synchronously operated, they are recognized as one CPU from the respective I/O modules - The
cross link 3000 establishes the connection between theCPU module 1000 and theCPU module 2000. Thecross link 3000 is composed of a parallel interface such as a PCI bus, and a serial interface such as PCI-Express, and the like. Thecross link 3000 is essential for the data processing apparatus having the plurality of CPU modules, and is not a special signal line. -
FIG. 2 shows an example of a sequence diagram illustrating the operation of resetting theCPU 1201 andclock counter 1202 in theCPU module 1000, and theCPU 2201 andclock counter 2202 in theCPU module 2000 in the data processing apparatus of the first embodiment of the present invention. - The resets of the
clock counter 1202 andCPU 1201 in theCPU module 1000 and theclock counter 2202 andCPU 2201 in theCPU module 2000 are executed based on the reset packet transmitted from thereset packet generator 1302 in theCPU module 1000 or areset packet generator 2302 in theCPU module 2000. - The
reset packet generator 1302 or thereset packet generator 2302 generates the reset packet when receiving a reset request packet from theCPU 1201 or theCPU 2201. There are no restrictions on whether the data processing apparatus carries out the reset using thereset packet generator 1302 or thereset packet generator 2302. Hereinafter, there is exemplified as a case where thereset packet generator 1302 in theCPU module 1000 is used to reset theclock counter 1202 andCPU 1201 in theCPU module 1000 and theclock counter 2202 andCPU 2201 in theCPU module 2000. - First, the
CPU 1201 transmits the reset request packet to the comparator 1204 (Step S201). At this time, theCPU 1201 and theCPU 2201 are not synchronous with each other. Accordingly, thecomparator 1204 transmits the reset request packet to thereset packet generator 1302 in the I/O module 1300 without waiting for the transmission of the same packet from the CPU 2201 (Step S202). - The
reset packet generator 1302 generates the reset packet when receiving the reset request packet, and transmits the reset packet to the first data adder 1205 (Step S203). Thefirst data adder 1205 transmits the reset request packet to thetiming adjuster 1206 and thecross link controller 1207 when receiving the reset packet from the reset packet generator 1302 (Step S204). - The
timing adjuster 1206 refers to a transmission source of the received reset packet, and judges whether or not the reset packet is passed through thecross link 3000. In this case, the transmission source of the reset packet is thereset packet generator 1302, and the reset packet is not passed through thecross link 3000. Accordingly, thetiming adjuster 1206, after waiting for the elapse of a preset clock cycle (Step S205), resets the clock counter 1202 (Step S206). After that, thetiming adjuster 1206 resets the CPU 1201 (Step S207). - On the other hand, the
cross link controller 1207 transmits the reset packet received from thefirst data adder 1205 to thecross link controller 2207 through the cross link 3000 (Step S208). Thecross link controller 2207 transmits the received reset packet to the timing adjuster 2206 (Step S209). - The
timing adjuster 2206 refers to a transmission source ID of the received reset packet, and judges whether or not the reset packet is passed through thecross link 3000. In this case, the transmission source is thereset packet generator 1302 in theCPU module 1000, and the reset packet is passed through thecross link 3000. For this reason, thetiming adjuster 2206 does not enter into a waiting state and immediately resets the clock counter 2202 (Step S210). Moreover, after that, thetiming adjuster 2206 resets the CPU 2201 (Step S211). - By the above-mentioned operations, the clock deviation between the
clock counter 1202 and theclock counter 2202 is removed. After that, the synchronous operation between theCPUs -
FIG. 3 shows an example of a sequence diagram illustrating the operation in which theCPU 1201 and theCPU 2201 transmit a request packet to the I/O module 1300 and receive a response packet for the request from the I/O module 1300. - First, the
CPU 1201 transmits the request packet designated to the I/O module 1300 to the comparator 1204 (Step S301). It should be noted that the value of theclock counter 1202 in this case is, for example, 10. It should be noted that theCPU 1201 and theCPU 2201 synchronously execute the same command row. Thus, theCPU 2201 also transmits the request packet designated to the I/O module 1300 to thecross link controller 2207 when the value of theclock counter 2202 becomes 10 (Step S302). Thecross link controller 2207 transmits the received request packet to thecross link controller 1207 through the cross link 3000 (Step S303). Thecross link controller 1207 transmits the received request packet to the comparator 1204 (Step S304). - The
comparator 1204 compares the response packet received from theCPU 1201 and the response packet received from the CPU 2201 (Step S305). When a fault is not generated in the data processing apparatus, these two request packets are coincident. Thecomparator 1204 chooses one of the request packets and transmits the request packet to the I/O module 1300 (Step S306). - The I/
O module 1300 judges whether or not the received packet is the packet requiring a response. In this case, the received packet is the request packet. Thus, the I/O module 1300 generates a response packet and transmits the generated packet to the first data adder 1205 (Step S307). - The
first data adder 1205 refers to the clock counter 1202 (Step S308) when receiving the response packet. It should be noted that the value of theclock counter 1202 at this time is, for example, 30. Besides, the value of the offsetvalue register 1203 is, for example, 20. Thefirst data adder 1205 adds the value (=20) of the offsetvalue register 1203 to the value (=30) of theclock counter 1202 and adds its value as a timing value TV (=50) to the response packet. Thefirst data adder 1205 transmits the response packet, added with the timing value TV to thetiming adjuster 1206 and the cross link controller 1207 (Step S309). - The
timing adjuster 1206 refers to the timing value TV added to the response packet when receiving the response packet, and executes the waiting until the value of theclock counter 1202 becomes equal to the timing value TV (Step S310). Thetiming adjuster 1206 transmits the response packet to theCPU 1201 when the value of theclock counter 1202 becomes equal to the timing value TV (Step S311). - On the other hand, the
cross link controller 1207 transmits the response packet received from thefirst data adder 1205, through thecross link 3000 to the cross link controller 2207 (Step S312). Thecross link controller 2207 transmits the received response packet to the timing adjuster 2206 (Step S313). - The
timing adjuster 2206 refers to the timing value TV added to the response packet when receiving the response packet, and executes the waiting until the value of theclock counter 2202 becomes equal to the timing value TV (Step S314). Thetiming adjuster 2206 transmits the response packet to theCPU 2201 when the value of theclock counter 2202 becomes equal to the timing value TV (Step S315). - As described above, both of the
CPU 1201 and theCPU 2201 transmit the request packet when the values of theclock counter 1202 and theclock counter 2202 are 10, and receive the response packet when the values of theclock counter 1202 and theclock counter 2202 are 50. -
FIG. 4 shows an example of a sequence diagram illustrating the operation in which the I/O module 1300 transmits the request packet to theCPU 1201 and theCPU 2201 and receives the response packet for the request packet from theCPU 1201 and theCPU 2201. - The I/
O module 1300 transmits the request packets designated to theCPU 1201 and theCPU 2201, to the first data adder 1205 (Step S401). Thefirst data adder 1205 refers to theclock counter 1202 when receiving the request packet from the I/O module 1300 (Step S402). It should be noted that the value of theclock counter 1202 in this case is, for example, 30. Besides, the value of the offsetvalue register 1203 is, for example, 20. Thefirst data adder 1205 adds the value (=20) of the offsetvalue register 1203 to the value (=30) of theclock counter 1202 and adds the value as the timing value TV (=50) to the request packet. Thefirst data adder 1205 transmits the request packet added with the timing value TV to thetiming adjuster 1206 and the cross link controller 1207 (Step S403). - The
timing adjuster 1206 refers to the timing value TV added to the request packet when receiving the request packet, and executes the waiting until the value of theclock counter 1202 becomes equal to the timing value TV (=50) (Step S404). Thetiming adjuster 1206 transmits the request packet to theCPU 1201 when the value of theclock counter 1202 becomes equal to the timing value TV (Step S405). - On the other hand, the
cross link controller 1207 transmits the request packet received from thefirst data adder 1205 through thecross link 3000 to the cross link controller 2207 (Step S406). Thecross link controller 2207 transmits the received request packet to the timing adjuster 2206 (Step S407). - The
timing adjuster 2206 refers to the timing value TV added to the request packet when receiving the request packet, and executes the waiting until the value of theclock counter 2202 becomes equal to the timing value TV (Step S408). Thetiming adjuster 2206 transmits the response packet to theCPU 2201 when the value of theclock counter 2202 becomes equal to the timing value TV (Step S409). - The
CPU 1201 judges whether or not the received request packet is the packet requiring the response, and transmits the response packet to thecomparator 1204 when the response is required (Step S410). - On the other hand, the
CPU 2201 judges whether or not the received request packet is the packet requiring the response, and if the response is required, transmits the response packet to the cross link controller 2207 (Step S411). Thecross link controller 2207 transmits the response packet to thecross link controller 1207 through the cross link 3000 (Step S412). Thecross link controller 1207 transmits the received response packet to the comparator 1204 (Step S413). - The
comparator 1204 compares the response packet received from theCPU 1201 and the response packet received from the CPU 2201 (Step S414). - When a fault is not generated in the data processing apparatus, those two response packets are coincident with each other. The
comparator 1204 chooses one of the response packets and transmits the response packet to the I/O module 1300 (Step S415). - As described above, both of the
CPU 1201 and theCPU 2201 receive the request packet when the values of theclock counter 1202 and theclock counter 2202 are 50. - As described above, as illustrated with reference to
FIG. 3 andFIG. 4 , the CPU module constituting the data processing apparatus adds the timing value defining its processing timing to the packet to be transmitted to the CPU from the I/O module, and processes the packet based on the value of the clock counter of its own and the timing value. Accordingly, the data processing apparatus makes it possible to synchronize the plurality of CPU modules each being operated at the independent clock. - Moreover, the data processing apparatus is operated based on the timing value added to the packet and the value of the clock counter of each CPU module. Accordingly, it is not necessary to know the counter value of the synchronous partner. Hence, in the data processing apparatus, there is no need for the general signal line to be provided with the special configuration to prevent the counter packet from receiving the influence of the general packet. Further, there is no need for the data processing apparatus to be provided with the signal line dedicated to the counter packet between the CPU modules.
-
FIG. 5 shows an example of a sequence diagram illustrating the operation in which theCPU 1201 and theCPU 2201 receive the interruption packet periodically transmitted from the I/O module 1300, and reset the respective clock counters 1202 and 2202 in response to the interruption packet. - The
timer 1303 in the I/O module 1300 transmits a timer interruption packet to thefirst data adder 1205 for each elapse of a predetermined time (Step S501). - The
first data adder 1205 refers to theclock counter 1202 when receiving the timer interruption packet (Step S502). It should be noted that the value of theclock counter 1202 at this time is, for example, 12. Besides, the value of the offsetvalue register 1203 is, for example, 20. Thefirst data adder 1205 adds the value (=20) of the offsetvalue register 1203 to the value (=12) of theclock counter 1202 and adds the value as a timing value TV (=32) to the timer interruption packet. Thefirst data adder 1205 transmits the timer interruption packet added with the timing value TV to thetiming adjuster 1206 and the cross link controller 1207 (Step S503). - The
timing adjuster 1206 refers to the timing value TV added to the timer interruption packet when receiving the timer interruption packet, and executes the waiting until the value of theclock counter 1202 becomes equal to the timing value TV (=32) (Step S504). Thetiming adjuster 1206 transmits the timer interruption packet to theCPU 1201 when the value of theclock counter 1202 becomes equal to the timing value TV (Step S505). - On the other hand, the
cross link controller 1207 transmits the timer interruption packet received from thefirst data adder 1205 to thecross link controller 2207 through the cross link 3000 (Step S506). - The
cross link controller 2207 transmits the received timer interruption packet to the timing adjuster 2206 (Step S507). - The
timing adjuster 2206 refers to the timing value TV added to the timer interruption packet when receiving the timer interruption packet, and executes the waiting until the value of theclock counter 2202 becomes equal to the timing value TV (Step S508). Thetiming adjuster 2206 transmits the timer interruption packet to theCPU 2201 when the value of theclock counter 2202 becomes equal to the timing value TV (Step S509). - The
CPU 1201 first escapes a context when receiving the timer interruption packet (Step S510). After that, theCPU 1201 transmits a reset request packet designated to thereset packet generator 1302 to the comparator 1204 (Step S511). - On the other hand, the
CPU 2201 first escapes a context when receiving the timer interruption packet (Step S512). After that, theCPU 2201 transmits a reset request packet designated to thereset packet generator 1302 to the cross link controller 2207 (Step S513). - The
cross link controller 2207 transmits the received reset request packet to thecross link controller 1207 through the cross link 3000 (Step S514). - The
cross link controller 1207 transmits the received reset request packet to thecomparator 1204 through the cross link 3000 (Step S515). - The
comparator 1204 compares the reset request packet received from theCPU 1201 and the reset request packet received from the CPU 2201 (Step S516). When a fault is not generated in the data processing apparatus, those two response packets are coincident with each other. Thecomparator 1204 chooses one of the reset request packets and transmits the chosen reset request packet to the I/O module 1300 (Step S517). - The
reset packet generator 1302 that received the reset request packet through the I/O bridge 1301 transmits the reset packet, which is assigned the transmission source ID to identify the I/O module to the first data adder 1205 (Step S518). - The
first data adder 1205 transmits the received reset packet to thetiming adjuster 1206 and the cross link controller 1207 (Step S519). - The
timing adjuster 1206 refers to a transmission source ID of the received reset packet, and judges whether or not the reset packet is passed through thecross link 3000. In this case, the transmission source of the reset packet is thereset packet generator 1302, and the reset packet is not passed through thecross link 3000. In this case, thetiming adjuster 1206, after waiting for the elapse of a preset clock cycle (Step S520), resets the clock counter 1202 (Step S521). After that, thetiming adjuster 1206 resets the CPU 1201 (Step S522). - On the other hand, the
cross link controller 1207 transmits the reset packet received from thefirst data adder 1205 to thecross link controller 2207 through the cross link 3000 (Step S523). Thecross link controller 2207 transmits the received reset packet to the timing adjuster 2206 (Step S524). - The
timing adjuster 2206 refers to a transmission source ID of the received reset packet, and judges whether or not the reset packet is passed through thecross link 3000. In this case, the transmission source is thereset packet generator 1302 in theCPU module 1000, and the reset packet is passed through thecross link 3000. In this case, thetiming adjuster 2206 does not enter into the waiting state, and immediately resets the clock counter 2202 (Step S525). Moreover, after that, thetiming adjuster 2206 resets the CPU 2201 (Step S526). - Incidentally, the
CPU 1201 after being completed the reset returns the context escaped prior to the reset (Step S527). On the other hand, theCPU 2201 returns the context escaped prior to the reset (Step S528). -
FIG. 6 is a graph explicitly illustrating a fact that the deviation amount between theclock counter 1202 and theclock counter 2202 falls in a certain range by the periodical resetting process illustrated with reference toFIG. 5 . InFIG. 6 , an abscissa indicates a time, and an ordinate indicates the deviation amount between theclock counter 1202 and theclock counter 2202. After the execution of the reset at a time t2, the deviation between theclock counter 1202 and theclock counter 2202 is increased based on a ratio between an average frequency of theclock source 1100 and an average frequency of theclock source 2100. However, theCPUs clock counter 1202 and theclock counter 2202 can be suppressed to a certain range, for example, 7 or less inFIG. 6 . In this way, it is possible to continue the synchronous operation between theCPU 1201 and theCPU 2201. -
FIG. 7 shows an example of a control block diagram of a data processing apparatus according to a second embodiment of the present invention. The difference from the data processing apparatus in the first embodiment of the data processing apparatus in the second embodiment lies in the point that therespective CPU modules second data adders - The second data adder 1208 (2208) adds the value of the clock counter 1202 (2202) to the packet transmitted from the CPU 1201 (CPU 2201). The comparator 1204 (2204) compares the packet transmitted from the
CPU 1201 and the packet transmitted from theCPU 2201 during the synchronous operation. However, in this case, the comparator 1204 (2204) compares the values of the clock counters which are added to the respective packets. The comparison leads to the early detection of the synchronous mismatching between theCPU 1201 and theCPU 2201. - It should be noted that in the above-mentioned examples, the data processing apparatus including the CPU modules of two systems is exemplified. However, the number of the systems is not limited to the two systems, and the three systems or more can be employed.
- While the present invention has been described in connection with certain exemplary embodiments, it is to be understood that the subject matter encompassed by way of the present invention is not to be limited to those specific embodiments. On the contrary, it is intended for the subject matter of the invention to include all alternatives, modifications and equivalents as can be included within the spirit and scope of the following claims.
- Further, it is the inventor's intent to retain all equivalents of the claimed invention even if the claims are amended during prosecution.
Claims (12)
1. A data processing apparatus comprising a plurality of CPU modules each including a CPU, the plurality of CPU modules being connected to each other through a cross link;
wherein each of the plurality of CPU module comprises:
a clock source which supplies a clock to the CPU of its own;
a clock counter which counts the clocks from the clock source;
an I/O module which transmits and receives a predetermined packet to and from the CPU;
a first data adder which, when a packet designated to the CPU is received from the I/O module, reads a value of the clock counter, adds a predetermined offset value to the read value to generate a timing value, and adds the generated timing value to the packet designated to the CPU; and
a timing adjuster which adjusts timing of transmitting the packet to the CPU, based on the timing value of the packet received from the first data adder and the value of the clock counter.
2. The data processing apparatus according to claim 1 , wherein each of the CPU module further comprises a comparator which compares the packet designated to the I/O module received from the CPU of its own with the packet designated to the I/O module received from the CPU of another CPU module through the cross link, and transmits one of the packets to the I/O module, when both the packets are coincident with each other.
3. The data processing apparatus according to claim 2 , wherein each of the CPU module further comprises a second data adder which adds the value of the clock counter to the packet designated to the I/O module received from the CPU of its own, and transmits the packet to the comparator of one of the CPU modules of its own and another.
4. The data processing apparatus according to claim 3 , wherein the comparator compares each of the values of the clock counters to be added to the respective packets when comparing the packets received from the second data adders of the CPU modules of its own and another.
5. The data processing apparatus according to claim 1 , wherein the I/O module comprises a reset packet generator which generates a reset packet for resetting the clock counter, and transmits the reset packet to the timing adjuster.
6. The data processing apparatus according to claim 5 , wherein the timing adjuster judges whether or not the received reset packet is received through the cross link, and determines timing of resetting the clock counter based on the judgement result.
7. The data processing apparatus according to claim 6 , wherein the timing adjuster immediately resets the clock counter when the received reset packet is received through the cross link, and resets the clock counter after an elapse of a predetermined time when the received reset packet is not received through the cross link.
8. The data processing apparatus according to claim 6 , wherein the reset packet is assigned an authentication code to specify the CPU module of a transmission source.
9. The data processing apparatus according to claim 5 , wherein the reset packet generator generates and transmits the reset packet in response to a reset packet request from the CPU.
10. The data processing apparatus according to claim 5 , wherein the I/O module transmits an interruption packet to the CPU for each elapse of a predetermined time.
11. The data processing apparatus according to claim 10 , wherein the CPU requests the reset packet generator to transmit the reset packet for each reception of the interruption packet.
12. The data processing apparatus according to claim 7 , wherein the timing adjuster resets the CPU when receiving the reset packet.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006071096A JP4752552B2 (en) | 2006-03-15 | 2006-03-15 | Data processing apparatus and synchronization method thereof |
JP2006-071096 | 2006-03-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
US20070220296A1 true US20070220296A1 (en) | 2007-09-20 |
Family
ID=38191092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/684,911 Abandoned US20070220296A1 (en) | 2006-03-15 | 2007-03-12 | Data processing apparatus |
Country Status (6)
Country | Link |
---|---|
US (1) | US20070220296A1 (en) |
EP (1) | EP1835646A1 (en) |
JP (1) | JP4752552B2 (en) |
CN (1) | CN101038580A (en) |
AU (1) | AU2007201067A1 (en) |
CA (1) | CA2581524A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106292256A (en) * | 2016-08-10 | 2017-01-04 | 北京空间飞行器总体设计部 | The correction device that a kind of second interrupt interval is controlled |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5036473B2 (en) * | 2007-09-28 | 2012-09-26 | 株式会社日立製作所 | Bus comparison type multi-processor |
JP5206009B2 (en) * | 2008-02-18 | 2013-06-12 | 日本電気株式会社 | Fault tolerant computer, synchronous control method, and program |
JP5380884B2 (en) * | 2008-04-04 | 2014-01-08 | 日本電気株式会社 | Data processing apparatus and synchronization method |
JP5604799B2 (en) * | 2009-03-06 | 2014-10-15 | 日本電気株式会社 | Fault tolerant computer |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5964846A (en) * | 1997-07-07 | 1999-10-12 | International Business Machines Corporation | System and method for mapping processor clock values in a multiprocessor system |
US6381660B1 (en) * | 1998-04-28 | 2002-04-30 | Yamaha Corporation | Clock generating system generating clock based on value obtained by adding second time information and difference between first time information and second time information |
US6591370B1 (en) * | 1999-12-23 | 2003-07-08 | International Business Machines Corporation | Multinode computer system with distributed clock synchronization system |
US6708281B1 (en) * | 2000-07-10 | 2004-03-16 | Advanced Micro Devices, Inc. | Methods for providing estimates of the current time in a computer system including a local time source having one of several possible levels of trust with regard to timekeeping |
US20040117682A1 (en) * | 2002-12-17 | 2004-06-17 | Jianzhong Xu | System and method for synchronizing a plurality of processors in a multiprocessor computer platform employing a global clock counter |
US20050033947A1 (en) * | 2003-08-08 | 2005-02-10 | Morris Dale C. | Multiprocessor system with interactive synchronization of local clocks |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0481936A (en) * | 1990-07-25 | 1992-03-16 | Pfu Ltd | Synchronization control system between plural cpus |
JPH0773059A (en) * | 1993-03-02 | 1995-03-17 | Tandem Comput Inc | Fault-tolerant computer system |
JP2002049605A (en) * | 2000-08-02 | 2002-02-15 | Fujitsu Ltd | Time register control system |
-
2006
- 2006-03-15 JP JP2006071096A patent/JP4752552B2/en not_active Expired - Fee Related
-
2007
- 2007-03-06 CA CA002581524A patent/CA2581524A1/en not_active Abandoned
- 2007-03-06 EP EP07103612A patent/EP1835646A1/en not_active Withdrawn
- 2007-03-12 US US11/684,911 patent/US20070220296A1/en not_active Abandoned
- 2007-03-12 AU AU2007201067A patent/AU2007201067A1/en not_active Abandoned
- 2007-03-15 CN CNA2007100863788A patent/CN101038580A/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5964846A (en) * | 1997-07-07 | 1999-10-12 | International Business Machines Corporation | System and method for mapping processor clock values in a multiprocessor system |
US6381660B1 (en) * | 1998-04-28 | 2002-04-30 | Yamaha Corporation | Clock generating system generating clock based on value obtained by adding second time information and difference between first time information and second time information |
US6591370B1 (en) * | 1999-12-23 | 2003-07-08 | International Business Machines Corporation | Multinode computer system with distributed clock synchronization system |
US6708281B1 (en) * | 2000-07-10 | 2004-03-16 | Advanced Micro Devices, Inc. | Methods for providing estimates of the current time in a computer system including a local time source having one of several possible levels of trust with regard to timekeeping |
US20040117682A1 (en) * | 2002-12-17 | 2004-06-17 | Jianzhong Xu | System and method for synchronizing a plurality of processors in a multiprocessor computer platform employing a global clock counter |
US20050033947A1 (en) * | 2003-08-08 | 2005-02-10 | Morris Dale C. | Multiprocessor system with interactive synchronization of local clocks |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106292256A (en) * | 2016-08-10 | 2017-01-04 | 北京空间飞行器总体设计部 | The correction device that a kind of second interrupt interval is controlled |
Also Published As
Publication number | Publication date |
---|---|
AU2007201067A1 (en) | 2007-10-04 |
JP4752552B2 (en) | 2011-08-17 |
CN101038580A (en) | 2007-09-19 |
CA2581524A1 (en) | 2007-09-15 |
EP1835646A1 (en) | 2007-09-19 |
JP2007249518A (en) | 2007-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4885316B2 (en) | Test apparatus and test method | |
US20070220296A1 (en) | Data processing apparatus | |
US9778971B2 (en) | Slave device, master device, and communication method | |
JPH06324977A (en) | Data transfer method | |
US7428608B2 (en) | Communication system, communication circuit and communication method | |
US5604754A (en) | Validating the synchronization of lock step operated circuits | |
EP1907937A2 (en) | Synchronized high-assurance circuits | |
US10769038B2 (en) | Counter circuitry and methods including a master counter providing initialization data and fault detection data and wherein a threshold count difference of a fault detection count is dependent upon the fault detection data | |
JP5537140B2 (en) | SAFETY CONTROL DEVICE AND SAFETY CONTROL PROGRAM | |
US8264948B2 (en) | Interconnection device | |
US7711885B2 (en) | Bus control apparatus and bus control method | |
US7313672B2 (en) | Intellectual property module for system-on-chip | |
JPH11232210A (en) | Information processor | |
WO2022019147A1 (en) | Communication device, communication method, and program | |
US7085865B2 (en) | I/O throughput by pre-termination arbitration | |
JPH11136309A (en) | Data processing system | |
JP4290067B2 (en) | Data synchronization method and program for serial communication system | |
KR970009750B1 (en) | Control method of state machine of interrupt requester | |
JPH0629962A (en) | Method and equipment for multiplex transmission | |
JP2000172521A (en) | Abnormality detecting method for cpu | |
JP2001290759A (en) | Bus bridge and bus bridge system | |
JP2000010909A (en) | Data transfer controller | |
JPH08202640A (en) | Cyclic data transmission method for distributed processing system | |
JPH077344B2 (en) | Faulty processor identification method | |
JPH10224422A (en) | Communication controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: NEC CORPORATION, JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SHIRANO, YASUYUKI;REEL/FRAME:018996/0425 Effective date: 20070301 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |