← Back to Patent Explorer
US5384906A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for synchronizing a plurality of processors

Assignee: Hewlett Packard Development Co LP
•
Filing: 1993-08-23
•
Granted: 1995-01-24
•
Expires: 2013-08-23
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and apparatus for synchronizing a plurality of processors. Each processor runs off its own independent clock, indicates the occurrence of a prescribed process or event on one line and receives signals on another line for initiating a processor wait state. Each processor has a counter which counts the number of processor events indicated since the last time the processors were synchronized. When an event requiring synchronization is detected by a sync logic circuit associated with the processor, the sync logic circuit generates the wait signal after the next processor event. A compare circuit associated with each processor then tests the other event counters in the system and determines whether its associated processor is behind the others. If so, the sync logic circuit removes the wait signal until the next processor event. The processor is finally stopped when its event counter matches the event counter for the fastest processor. At that time, all processors are synchronized and may be restarted for servicing the event. If no synchronizing event occurs before an event counter reaches its maximum value, and overflow of the event counter forces resynchronization, a cycle counter is provided for counting the number of clock cycles since the last processor event. The cycle counter is set to overflow and force resynchronization at a point before maximum interrupt latency time is exceeded.

Inventors

  • 👤 Robert W. Horst

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 19:08
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/07; G06F11/16; G06F11/18; G06F11/183; G06F11/184; G06F11/1658; G06F11/1666; G06F11/1675; G06F11/1683; G06F11/1687; G06F11/1691; G06F15/00; G06F15/16; G06F15/163; G06F15/17; G06F11/1679; G06F11/185; G06F11/20; G11; G11C; G11C29/00; G11C29/70; G11C29/74

Claims Analysis

Total Claims: 20
Claim 1
Independent Claim 313 words
A computer system comprising: a) a plurality of Central Processing Units (CPUs) each executing a respective instruction stream, the CPUs being clocked independently of one another, each CPU executing its respective instruction stream at a speed which is variable from the speed that each of such other CPUs executes its respective instruction stream, each CPU having at least one processor executing said CPU's respective instruction stream during execution cycles and providing first processor events, related to processing said respective instruction stream, spaced apart over plural execution cycles; b) each of the CPUs having a cycle counter to count its respective execution cycles and an event counter to count its respective first processor events and provide an event count corresponding to the counted first processor events, each counted first processor event being defined explicitly by a processor instruction which is associated with the counted first processor event the respective instruction stream of such CPU including the same processor instructions that are executed in the respective instruction stream of each of the other CPUs each processor providing an indication of a second processor event in response to its respective CPU's cycle counter reaching a selected overflow count, wherein said event counter also counts said second processor events; c) wherein each CPU has synchronizing means for halting the execution of the processor instructions in its respective instruction stream upon the respective event counter of such CPU reaching said overflow count, wherein each CPU's synchronizing means is coupled to receive the event count of the respective event counters of each of the other CPUs and compares the respective event counts and wherein the respective synchronization means restart each of the respective CPUs to execute the processor instructions in its respective instruction stream from a point in such instruction stream which corresponds to said overflow count when all of the respective event counters have reached said overflow count.
Claim 2
Dependent Claim 313 words
A computer system comprising: a) a plurality of Central Processing Units (CPUs) each executing a respective instruction stream, the CPUs being clocked independently of one another, each CPU executing its respective instruction stream at a speed which is variable from the speed that each of such other CPUs executes its respective instruction stream, each CPU having at least one processor executing said CPU's respective instruction stream during execution cycles and providing first processor events, related to processing said respective instruction stream, spaced apart over plural execution cycles; b) each of the CPUs having a cycle counter to count its respective execution cycles and an event counter to count its respective first processor events and provide an event count corresponding to the counted first processor events, each counted first processor event being defined explicitly by a processor instruction which is associated with the counted first processor event the respective instruction stream of such CPU including the same processor instructions that are executed in the respective instruction stream of each of the other CPUs each processor providing an indication of a second processor event in response to its respective CPU's cycle counter reaching a selected overflow count, wherein said event counter also counts said second processor events; c) wherein each CPU has synchronizing means for halting the execution of the processor instructions in its respective instruction stream upon the respective event counter of such CPU reaching said overflow count, wherein each CPU's synchronizing means is coupled to receive the event count of the respective event counters of each of the other CPUs and compares the respective event counts and wherein the respective synchronization means restart each of the respective CPUs to execute the processor instructions in its respective instruction stream from a point in such instruction stream which corresponds to said overflow count when all of the respective event counters have reached said overflow count.
Claim 3
Dependent Claim 12 words
A system according to claim 1 wherein there are three said CPUs.
Claim 4
Dependent Claim 23 words
A system according to claim 1 wherein each said CPU has a memory accessable by said CPU but not by the other CPUs.
Claim 5
Dependent Claim 20 words
A system according to claim 1 wherein said CPUs access an I/O controller through a vote circuit for outgoing requests.
Claim 6
Dependent Claim 26 words
A system according to claim 4 wherein said CPUs receive incoming data from said I/O controller through a path which does not include a vote circuit.
Claim 7
Dependent Claim 374 words
A computer system comprising: a) a plurality of Central Processing Units (CPUs) each executing a respective instruction stream, the CPUs being clocked independently of one another, each CPU executing such stream in independently clocked cycles; b) each of the CPUs having synchronizing means, including a cycle counter for counting its respective execution cycles and an event counter to count respective preselected CPU events occurring in such CPU during said execution of its respective instruction stream, each counted event being defined explicitly by a processor instruction which is associated with the counted event, the respective instruction stream of such CPU including the same processor instructions that are executed in the respective instruction stream of each of the other CPUs, each processor instruction being executed during its associated execution cycle, wherein said cycle counter has a first overflow count and said event counter has a second overflow count, and wherein the respective CPU issues a synchronizing request to all of said CPUs upon overflow of the cycle counter or the event counter; wherein each CPU's synchronizing means is coupled to receive the event count of the respective event counters of each of the other CPUs and compares the respective event counts and wherein said synchronizing means halts the execution of the processor instructions included in its respective instruction stream, in response to said synchronizing request applied to all of said CPUs, when the respective event counter of such CPU reaches a count that matches the count of the respective event counter of a fastest CPU among all of the CPUs, all of the CPUs being synchronized when the respective synchronizing means of each CPU halts the execution of the processor instructions in its respective instruction stream upon the respective event counter of such CPU reaching a count that is the same as the count reached by the respective event counter of each of such other CPUs, and, after all of the CPUs are synchronized, the respective synchronization means restarts each of the CPUs to execute the processor instructions in its respective instruction stream from a point in such instruction stream which is the same as the point from which each of such other CPUs is restarted to execute the processor instructions in its respective instruction stream.
Claim 8
Dependent Claim 374 words
A computer system comprising: a) a plurality of Central Processing Units (CPUs) each executing a respective instruction stream, the CPUs being clocked independently of one another, each CPU executing such stream in independently clocked cycles; b) each of the CPUs having synchronizing means, including a cycle counter for counting its respective execution cycles and an event counter to count respective preselected CPU events occurring in such CPU during said execution of its respective instruction stream, each counted event being defined explicitly by a processor instruction which is associated with the counted event, the respective instruction stream of such CPU including the same processor instructions that are executed in the respective instruction stream of each of the other CPUs, each processor instruction being executed during its associated execution cycle, wherein said cycle counter has a first overflow count and said event counter has a second overflow count, and wherein the respective CPU issues a synchronizing request to all of said CPUs upon overflow of the cycle counter or the event counter; wherein each CPU's synchronizing means is coupled to receive the event count of the respective event counters of each of the other CPUs and compares the respective event counts and wherein said synchronizing means halts the execution of the processor instructions included in its respective instruction stream, in response to said synchronizing request applied to all of said CPUs, when the respective event counter of such CPU reaches a count that matches the count of the respective event counter of a fastest CPU among all of the CPUs, all of the CPUs being synchronized when the respective synchronizing means of each CPU halts the execution of the processor instructions in its respective instruction stream upon the respective event counter of such CPU reaching a count that is the same as the count reached by the respective event counter of each of such other CPUs, and, after all of the CPUs are synchronized, the respective synchronization means restarts each of the CPUs to execute the processor instructions in its respective instruction stream from a point in such instruction stream which is the same as the point from which each of such other CPUs is restarted to execute the processor instructions in its respective instruction stream.
Claim 9
Dependent Claim 13 words
A system according to claim 6 wherein said request is an external interrupt.
Claim 10
Dependent Claim 12 words
A system according to claim 6 wherein there are three said CPUs.
Claim 11
Dependent Claim 23 words
A system according to claim 6 wherein each said CPU has a memory accessable by said CPU but not by the other CPUs.
Claim 12
Dependent Claim 385 words
A computer system comprising: a) a plurality of Central Processing Units (CPUs) each executing a respective instruction stream, the CPUs being clocked independently of one another to define respective clock cycles for each CPU, each CPU executing such stream at a speed which is variable from the speed that each of such other CPUs executes its respective instruction stream; b) each of the CPUs having respective synchronizing means, including first counting means to count respective CPU clock cycles and second counting means to count respective CPU events related to the execution of its respective instruction stream, each counted event being defined explicitly by a processor instruction which is associated with the counted event, the respective instruction stream of such CPU including the same processor instructions that are executed in the respective instruction stream of each of such other CPUs, each processor instruction being executed during its associated execution cycle; wherein each CPU's synchronizing means is coupled to receive the event count of the respective event counters of each of the other CPUs and compares the respective event counts and wherein said synchronizing means further include means for receiving an externally-applied synchronization request, said synchronizing means presenting said externally-applied synchronizing request to its respective CPU when the respective second counting means of such CPU reaches a count that matches the count of the respective second counting means of a fastest CPU among all of the CPUs, the synchronizing means also halting execution of instructions in response to said first counting means indicating a selected overflow count when the respective second counting means of such CPU reaches a count that matches the count of the respective second counting means of the fastest CPU among all of the CPUs, all of the CPUs being synchronized when the respective synchronizing means of each CPU halts the execution of the processor instructions in its respective instruction stream upon the respective second counting means of such CPU reaching a count that is the same as the count reached by the respective second counting means of each of such other CPUs, and, after all of the CPUs are synchronized, the respective synchronization means restarting each of the CPUs to execute the same processor instruction in their respective instruction stream and clearing and restarting the respective event counting means and cycle counting means.
Claim 13
Dependent Claim 385 words
A computer system comprising: a) a plurality of Central Processing Units (CPUs) each executing a respective instruction stream, the CPUs being clocked independently of one another to define respective clock cycles for each CPU, each CPU executing such stream at a speed which is variable from the speed that each of such other CPUs executes its respective instruction stream; b) each of the CPUs having respective synchronizing means, including first counting means to count respective CPU clock cycles and second counting means to count respective CPU events related to the execution of its respective instruction stream, each counted event being defined explicitly by a processor instruction which is associated with the counted event, the respective instruction stream of such CPU including the same processor instructions that are executed in the respective instruction stream of each of such other CPUs, each processor instruction being executed during its associated execution cycle; wherein each CPU's synchronizing means is coupled to receive the event count of the respective event counters of each of the other CPUs and compares the respective event counts and wherein said synchronizing means further include means for receiving an externally-applied synchronization request, said synchronizing means presenting said externally-applied synchronizing request to its respective CPU when the respective second counting means of such CPU reaches a count that matches the count of the respective second counting means of a fastest CPU among all of the CPUs, the synchronizing means also halting execution of instructions in response to said first counting means indicating a selected overflow count when the respective second counting means of such CPU reaches a count that matches the count of the respective second counting means of the fastest CPU among all of the CPUs, all of the CPUs being synchronized when the respective synchronizing means of each CPU halts the execution of the processor instructions in its respective instruction stream upon the respective second counting means of such CPU reaching a count that is the same as the count reached by the respective second counting means of each of such other CPUs, and, after all of the CPUs are synchronized, the respective synchronization means restarting each of the CPUs to execute the same processor instruction in their respective instruction stream and clearing and restarting the respective event counting means and cycle counting means.
Claim 14
Dependent Claim 14 words
A system according to claim 10 wherein said synchronizing request is an external interrupt.
Claim 15
Dependent Claim 12 words
A system according to claim 10 wherein there are three said CPUs.
Claim 16
Dependent Claim 23 words
A system according to claim 10 wherein each said CPU has a memory accessable by said CPU but not by the other CPUs.
Claim 17
Dependent Claim 20 words
A system according to claim 10 wherein said CPUs access an I/O controller through a vote circuit for outgoing requests.
Claim 18
Dependent Claim 26 words
A system according to claim 14 wherein said CPUs receive incoming data from said I/O controller through a path which does not include a vote circuit.
Claim 19
Independent Claim 380 words
A method for synchronizing a computer system including a plurality of Central Processing Units (CPUs,) each CPU having a respective execution cycle counter, a respective event counter, and a respective synchronizing circuit, each said respective synchronizing circuit being coupled to the respective event counters of all the CPUs, each CPU processing a respective instruction stream including a plurality of processor instructions executed in a particular order in execution cycles clocked independently for each CPU, the respective instruction stream of each CPU including identical processor instructions; comprising the steps of: counting respective execution cycles in said respective execution cycle counter in each CPU and providing a synchronizing request upon overflow of any one thereof; counting respective events associated with the execution of the respective instruction stream of each CPU in each CPU's respective event counter, each counted event being defined explicitly by the processor instruction which is associated with the counted event, each processor instruction being executed during its associated execution cycle; receiving a synchronizing request in each CPU in response to a respective execution cycle counter overflow in one of said CPUs; comparing each respective event counter of each of the CPUs in response to a synchronizing request; halting the execution of the processor instructions included in the respective instruction stream of the fastest CPU by its respective synchronizing circuit in response to said synchronizing request; continuing execution in each other CPU until such CPU reaches a count matching the count of the respective event counter of the fastest CPU among all of the CPUs and halting execution when the respective counter of such CPU reaches a count matching the count of the respective counter of the fastest CPU among all of the CPUs; synchronizing all of the CPUs when the respective synchronizing circuit of each CPU halts the execution of the processor instructions in its respective instruction stream upon the respective event counter of such CPU reaching a count that is the same as the count reached by the respective event counter of each of such other CPUs; and after said synchronizing step restarting all of the CPUs to execute the processor instruction in its respective instruction stream from a point in such instruction stream corresponding to an event count which is the same for each of the CPUs.
Claim 20
Independent Claim 380 words
A method for synchronizing a computer system including a plurality of Central Processing Units (CPUs,) each CPU having a respective execution cycle counter, a respective event counter, and a respective synchronizing circuit, each said respective synchronizing circuit being coupled to the respective event counters of all the CPUs, each CPU processing a respective instruction stream including a plurality of processor instructions executed in a particular order in execution cycles clocked independently for each CPU, the respective instruction stream of each CPU including identical processor instructions; comprising the steps of: counting respective execution cycles in said respective execution cycle counter in each CPU and providing a synchronizing request upon overflow of any one thereof; counting respective events associated with the execution of the respective instruction stream of each CPU in each CPU's respective event counter, each counted event being defined explicitly by the processor instruction which is associated with the counted event, each processor instruction being executed during its associated execution cycle; receiving a synchronizing request in each CPU in response to a respective execution cycle counter overflow in one of said CPUs; comparing each respective event counter of each of the CPUs in response to a synchronizing request; halting the execution of the processor instructions included in the respective instruction stream of the fastest CPU by its respective synchronizing circuit in response to said synchronizing request; continuing execution in each other CPU until such CPU reaches a count matching the count of the respective event counter of the fastest CPU among all of the CPUs and halting execution when the respective counter of such CPU reaches a count matching the count of the respective counter of the fastest CPU among all of the CPUs; synchronizing all of the CPUs when the respective synchronizing circuit of each CPU halts the execution of the processor instructions in its respective instruction stream upon the respective event counter of such CPU reaching a count that is the same as the count reached by the respective event counter of each of such other CPUs; and after said synchronizing step restarting all of the CPUs to execute the processor instruction in its respective instruction stream from a point in such instruction stream corresponding to an event count which is the same for each of the CPUs.

References Cited (Backward Citations)

US3602900A Cited
US3681578A Cited
US3735356A Cited
US3761884A Cited
US3810119A Cited
US3833798A Cited
US3848116A Cited
US3921149A Cited
US4030074A Cited
US4015246A Cited
US4015243A Cited
US4034347A Cited
JPS5224825A Cited
JPS5260540A Cited
US4224664A Cited
US4672535A Cited
US4456952A Cited
US4358823A Cited
US4187538A Cited
US4366535A Cited
JPS54143037A Cited
US4257097A Cited
US4253144A Cited
US4380046A Cited
US4428044A Cited
US4392199A Cited
US4426681A Cited
US4330826A Cited
US4321666A Cited
US4412218A Cited
US4493019A Cited
US4412281A Cited
US4392196A Cited
US4399504A Cited
US4375683A Cited
US4414624A Cited
US4430707A Cited
US4455605A Cited
US4597084A Cited
US4616312A Cited
US4497059A Cited
US4783731A Cited
EP0104490A2 Cited
US4779008A Cited
US4667287A Cited
US4648035A Cited
US4541094A Cited
US4591977A Cited
US4644498A Cited
US4577272A Cited
US4709325A Cited
US4912698A Cited
EP0141246A2 Cited
US4564903A Cited
US4783733A Cited
US4607365A Cited
US4570261A Cited
WO1985002698A1 Cited
US4638427A Cited
US4633394A Cited
US4589066A Cited
US4853872A Cited
US4827401A Cited
US4785453A Cited
US4751639A Cited
US4683570A Cited
US4733353A Cited
US4794601A Cited
US4703452A Cited
US4799140A Cited
US4819159A Cited
US4849979A Cited
US4774709A Cited
US4847837A Cited
US4945486A Cited
US4831520A Cited
US4805107A Cited
US4933940A Cited
US4914657A Cited
EP0286856B1 Cited
US4800462A Cited
US4868826A Cited
US4868818A Cited
EP0316087A2 Cited
US4879716A Cited
US4937741A Cited
US4873685A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1998-01-23 1998-07-25 1999-01-24 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2002-01-23 2002-07-25 2003-01-24 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2006-01-23 2006-07-25 2007-01-24 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag