US5006980A
Expired / Lapsed
US
⏱️ 0.0 years remaining
Pipelined digital CPU with deadlock resolution
Assignee: Hewlett Packard Development Co LP
•
Filing: 1988-07-20
•
Granted: 1991-04-09
•
Expires: 2008-07-20
Abstract
Abstract A pipelined CPU employs separate microinstruction pipelines for the execution unit and memory management unit. Deadlocks can occur in a pipelined CPU when there is data dependency in two consecutive instructions. The later instruction may stall the pipeline if operands fetched by an earlier instruction are needed, but the earlier instruction is not producing the memory request for the operands because the pipeline is stalled; this results in a deadlock. Using separate micro-pipelines, the earlier instruction is advanced independently of the rest of the pipeline, in the case of a deadlock, so that the operands for the later instruction are provided and the deadlock is broken.
Inventors
- 👤 Douglas E. Sanders
- 👤 George M. Uhler
- 👤 John F. Brown, III
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-10-28 15:51
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3885; G06F9/3889; G06F9/22; G06F9/28; G06F9/3824; G06F9/3867
Claims Analysis
Total Claims: 24
Claim 1
Independent Claim
169 words
A processor comprising: (a) a plurality of execution stages connected in sequence and a plurality of memory access stages connected in sequence; (b) microinstruction means for producing microinstructions for controlling the operation of said execution and memory access stages; (c) a plurality of latches receiving output from said microinstruction means, said plurality of latches temporarily storing controls representing said microinstructions, a respective one of said plurality of latches being associated separately with each one of said stages, said controls being separately coupled from each of said latches to each one of said stages; (d) means for advancing said controls through said plurality of latches for execution stages, and separate means for advancing said controls through said plurality of latches for said memory access stages, said separate means including means for applying said controls to a last one of said plurality of latches for said memory access stages under a selected condition whereby said memory access stages can complete a memory access operation even if said execution stages are stalled.
Claim 2
Dependent Claim
169 words
A processor comprising: (a) a plurality of execution stages connected in sequence and a plurality of memory access stages connected in sequence; (b) microinstruction means for producing microinstructions for controlling the operation of said execution and memory access stages; (c) a plurality of latches receiving output from said microinstruction means, said plurality of latches temporarily storing controls representing said microinstructions, a respective one of said plurality of latches being associated separately with each one of said stages, said controls being separately coupled from each of said latches to each one of said stages; (d) means for advancing said controls through said plurality of latches for execution stages, and separate means for advancing said controls through said plurality of latches for said memory access stages, said separate means including means for applying said controls to a last one of said plurality of latches for said memory access stages under a selected condition whereby said memory access stages can complete a memory access operation even if said execution stages are stalled.
Claim 3
Dependent Claim
45 words
A processor according to claim 1 wherein said microinstruction means includes a control store, and said microinstructions include sets of control bits read from said control store, and said controls stored in said latches are derived from said sets of control bits of said microinstructions.
Claim 4
Dependent Claim
29 words
A processor according to claim 1 wherein said means for advancing for said execution stages and said means for advancing for said memory access stages both include clocking means.
Claim 5
Dependent Claim
18 words
A processor according to claim 3 wherein said clocking means includes conditional clocking means and unconditional clocking means.
Claim 6
Dependent Claim
30 words
A processor according to claim 4 wherein said conditional clocking means are in early ones of said stages and said unconditional clocking means are in later ones of said stages.
Claim 7
Dependent Claim
202 words
A processor comprising: (a) a plurality of first type stages connected in sequence and a plurality of second type stages connected in sequence, each of said first type stages performing processor execution functions and each of said second type stages performing memory access functions; (b) means for producing sets of control bits for controlling the operation of each of said first and second type stages; (c) a plurality of storage means for temporarily storing said sets of control bits, a respective one of said plurality of storage means being separately associated with each one of said first and second type stages; (d) first means for advancing said control bits through said plurality of storage means for said first type stages, and second means for advancing said control bits through said plurality of storage means for said second type stages, wherein said first and second means are separately controlled, said second means including means for applying said control bits to a last one of said plurality of storage means for said second type of stages under a selected condition of operation so that the second means can continue advancing while said first means and a first part of said second means are stalled.
Claim 8
Dependent Claim
202 words
A processor comprising: (a) a plurality of first type stages connected in sequence and a plurality of second type stages connected in sequence, each of said first type stages performing processor execution functions and each of said second type stages performing memory access functions; (b) means for producing sets of control bits for controlling the operation of each of said first and second type stages; (c) a plurality of storage means for temporarily storing said sets of control bits, a respective one of said plurality of storage means being separately associated with each one of said first and second type stages; (d) first means for advancing said control bits through said plurality of storage means for said first type stages, and second means for advancing said control bits through said plurality of storage means for said second type stages, wherein said first and second means are separately controlled, said second means including means for applying said control bits to a last one of said plurality of storage means for said second type of stages under a selected condition of operation so that the second means can continue advancing while said first means and a first part of said second means are stalled.
Claim 9
Dependent Claim
29 words
A processor according to claim 6 wherein said first type stages are execution stages for selecting operands, performing functions on said operands, and storing the results of said operations.
Claim 10
Dependent Claim
32 words
A processor according to claim 7 wherein said second type stages are memory access stages for accessing memory locations for reading or writing operands or results to or from said execution stages.
Claim 11
Dependent Claim
34 words
A processor according to claim 6 wherein said means for producing sets of control bits includes a control store, and said sets of control bits are included in microinstructions read from said control store.
Claim 12
Dependent Claim
27 words
A processor according to claim 6 wherein said first and second type stages are pipelined stages and said storage means are latches for storing said control bits.
Claim 13
Independent Claim
244 words
A method of operating a pipelined processor comprising the steps of: (a) advancing control or data sequentially through a plurality of first type stages, and separately and in parallel advancing control or data sequentially through a plurality of second type stages, each one of said first type stages performing execution functions and each of said second type stages performing memory access functions using said control or data; (b) producing sets of control bits for controlling the operation of said first and second type stages and temporarily storing in a plurality of separate storage means said sets of control bits, a respective one of said plurality of storage means being associated with each one of said stages, said sets of control bits being coupled from said separate storage means to each one of said stages to control the operation thereof; (c) advancing said control bits through said plurality of storage means for said first type stages, and separately advancing said control bits through said plurality of storage means for said second type stages, said step of separately advancing including applying said control bits to a last one of said plurality of storage means for said second type of stages under a selected condition of operation, whereby said control bits may advance in said storage means for said second type stages while stalled in said storage means for said first type stages and stalled in a first of said storage means for said second type stages.
Claim 14
Independent Claim
244 words
A method of operating a pipelined processor comprising the steps of: (a) advancing control or data sequentially through a plurality of first type stages, and separately and in parallel advancing control or data sequentially through a plurality of second type stages, each one of said first type stages performing execution functions and each of said second type stages performing memory access functions using said control or data; (b) producing sets of control bits for controlling the operation of said first and second type stages and temporarily storing in a plurality of separate storage means said sets of control bits, a respective one of said plurality of storage means being associated with each one of said stages, said sets of control bits being coupled from said separate storage means to each one of said stages to control the operation thereof; (c) advancing said control bits through said plurality of storage means for said first type stages, and separately advancing said control bits through said plurality of storage means for said second type stages, said step of separately advancing including applying said control bits to a last one of said plurality of storage means for said second type of stages under a selected condition of operation, whereby said control bits may advance in said storage means for said second type stages while stalled in said storage means for said first type stages and stalled in a first of said storage means for said second type stages.
Claim 15
Dependent Claim
29 words
A method according to claim 11 wherein said first type stages are execution stages for selecting operands, performing functions on said operands, and storing the results of said operations.
Claim 16
Dependent Claim
32 words
A method according to claim 13 wherein said second type stages are memory access stages for accessing memory locations for reading or writing operands or results to or from said execution stages.
Claim 17
Dependent Claim
19 words
A method according to claim 11 wherein said sets of control bits are microinstructions read from a control store.
Claim 18
Dependent Claim
27 words
A method according to claim 11 wherein said first and second type stages are pipelined stages and said storage means are latches for storing said control bits.
Claim 19
Dependent Claim
329 words
A pipelined processor comprising: (a) an execution unit having a plurality of sequentially-coupled execution stages including a first stage for accessing operands from local registers, a second stage for performing operations on said operands, and a third stage for storing results of said operations; (b) a memory interface unit having a plurality of sequentially-coupled memory-interface stages including a first stage for calculating memory requests, a second stage for evaluating memory availability, and a third stage for issuing memory addresses for memory access and receiving data from memory if available. (c) means for generating sets of control bits, one set for each cycle of operation of said processor, and (i) first means having an input connected to said means for generating and having outputs connected to said execution stages for applying at least some of each one of said sets of control bits to each of said first, second and third stages of said execution unit in successive ones of said machine cycles. (ii) second means having an input connected to said means for generating and having outputs connected to said memory-interface stages for applying at least some of each one of said sets of control bits to each of said first, second and third stages of said memory interface unit in successive ones of said machine cycles, (d) clocking means connected to said first and second means to advance said sets of control bits to said first, second and third stages of said execution unit and said memory interface unit in synchronization during normal operation of said processor and for stalling advance of said control bits to at least said first and second stages of said execution unit and said memory interface unit in a stall condition if a selected condition of operation occurs, said clocking means functioning to separately advance said sets of control bits for at least one of the stages of said memory interface unit during said stall condition if said selected condition of operation occurs.
Claim 20
Dependent Claim
329 words
A pipelined processor comprising: (a) an execution unit having a plurality of sequentially-coupled execution stages including a first stage for accessing operands from local registers, a second stage for performing operations on said operands, and a third stage for storing results of said operations; (b) a memory interface unit having a plurality of sequentially-coupled memory-interface stages including a first stage for calculating memory requests, a second stage for evaluating memory availability, and a third stage for issuing memory addresses for memory access and receiving data from memory if available. (c) means for generating sets of control bits, one set for each cycle of operation of said processor, and (i) first means having an input connected to said means for generating and having outputs connected to said execution stages for applying at least some of each one of said sets of control bits to each of said first, second and third stages of said execution unit in successive ones of said machine cycles. (ii) second means having an input connected to said means for generating and having outputs connected to said memory-interface stages for applying at least some of each one of said sets of control bits to each of said first, second and third stages of said memory interface unit in successive ones of said machine cycles, (d) clocking means connected to said first and second means to advance said sets of control bits to said first, second and third stages of said execution unit and said memory interface unit in synchronization during normal operation of said processor and for stalling advance of said control bits to at least said first and second stages of said execution unit and said memory interface unit in a stall condition if a selected condition of operation occurs, said clocking means functioning to separately advance said sets of control bits for at least one of the stages of said memory interface unit during said stall condition if said selected condition of operation occurs.
Claim 21
Dependent Claim
29 words
A processor according to claim 16 wherein said clocking means unconditionally advances a set of control bits to said third stages even when said stall condition of operation exists.
Claim 22
Dependent Claim
34 words
A processor according to claim 17 wherein said clocking means causes a no-operation set of control bits to be inserted to said third stage of said execution unit during said stall condition of operation.
Claim 23
Dependent Claim
32 words
A processor according to claim 16 wherein said clocking means separately advances said set of control bits to said second stage of said memory interface unit during said stall condition of operation.
Claim 24
Dependent Claim
26 words
A processor according to claim 19 wherein separate advancing is done when there is a stall condition of operation and also a deadlock condition of operation.
References Cited (Backward Citations)
US4236206A
Cited
US4750112A
Cited
US4760519A
Cited
US4586130A
Cited
US4812970A
Cited
US4714991A
Cited
US4709324A
Cited
US4794527A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 1994-04-08 | 1994-10-08 | 1995-04-09 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 1998-04-08 | 1998-10-08 | 1999-04-09 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2002-04-08 | 2002-10-08 | 2003-04-09 | $7700.00 | Window Closed / Lapsed |