Patent US5590351A successfully refreshed from Google Patents.
US5590351A
Expired / Lapsed
US
⏱️ 0.0 years remaining
Superscalar execution unit for sequential instruction pointer updates and segment limit checks
Assignee: Advanced Micro Devices Inc
•
Filing: 1994-01-21
•
Granted: 1996-12-31
•
Expires: 2014-01-21
Abstract
Abstract An execution unit performs multiple sequential instruction pointer updates and segment limit checks within a cycle. The updates and checks are carried out in a high-performance pipelined processor that speculatively executes variable length instructions. A disclosed embodiment of the execution unit includes Next EIP (Extended Instruction Pointer) selection logic, Current EIP selection logic, an EIP History RAM, a Dual EIP Adder, a CS Limit check adder, limit checking combinational logic, and a limit fault History RAM.
Inventors
- 👤 Elliot A. Sowadsky
- 👤 Larry Widigen
- 👤 David L. Puziol
- 👤 Korbin S. Van Dyke
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-05 20:17
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3885; G06F9/32; G06F9/321; G06F9/3861; G06F9/3863
Claims Analysis
Total Claims: 22
Claim 1
Independent Claim
300 words
A sequential instruction pointer execution unit for a processor that executes instructions, said sequential instruction pointer execution unit being one type of a plurality of types of execution units within said processor, said sequential instruction pointer execution unit performing superscalar instruction pointer updates for a plurality of sequential operations, said operations being associated with said instructions, said sequential instruction pointer execution unit comprising: (a) first storage for a first and a second of said plurality of operations, said second operation being sequential to said first operation, said first and second operations having respective first and second instruction length values; (b) instruction pointer selection logic, said selection logic providing a current instruction pointer value; and (c) an adder having (c1) a first input, said first input being coupled to said current instruction pointer value; (c2) a second input, said second input being coupled to said first instruction length value; (c3) a third input, said third input being coupled to said second instruction length value; (c4) a first sum output, said first sum output providing a first instruction pointer update equal to the addition of said current instruction pointer value and said first instruction length value, said first instruction pointer update corresponding to the execution of said first operation, said first sum output being coupled to said instruction pointer selection logic; and (c5) a second sum output, said second sum output providing a second instruction pointer update equal to the addition of said current instruction pointer value to said first and second instruction length values, said second instruction pointer update corresponding to the simultaneous execution of said first and second operations, said second sum output being coupled to said instruction pointer selection logic; whereby said sequential instruction pointer execution unit may simultaneously update the instruction pointer for a plurality of said operations.
Claim 2
Dependent Claim
300 words
A sequential instruction pointer execution unit for a processor that executes instructions, said sequential instruction pointer execution unit being one type of a plurality of types of execution units within said processor, said sequential instruction pointer execution unit performing superscalar instruction pointer updates for a plurality of sequential operations, said operations being associated with said instructions, said sequential instruction pointer execution unit comprising: (a) first storage for a first and a second of said plurality of operations, said second operation being sequential to said first operation, said first and second operations having respective first and second instruction length values; (b) instruction pointer selection logic, said selection logic providing a current instruction pointer value; and (c) an adder having (c1) a first input, said first input being coupled to said current instruction pointer value; (c2) a second input, said second input being coupled to said first instruction length value; (c3) a third input, said third input being coupled to said second instruction length value; (c4) a first sum output, said first sum output providing a first instruction pointer update equal to the addition of said current instruction pointer value and said first instruction length value, said first instruction pointer update corresponding to the execution of said first operation, said first sum output being coupled to said instruction pointer selection logic; and (c5) a second sum output, said second sum output providing a second instruction pointer update equal to the addition of said current instruction pointer value to said first and second instruction length values, said second instruction pointer update corresponding to the simultaneous execution of said first and second operations, said second sum output being coupled to said instruction pointer selection logic; whereby said sequential instruction pointer execution unit may simultaneously update the instruction pointer for a plurality of said operations.
Claim 3
Dependent Claim
56 words
The sequential instruction pointer execution unit of claim 1, wherein said adder further has: (a) a first wrap-carry output bit, associated with said first instruction pointer update by said first instruction length value; and (b) a second wrap-carry output bit, associated with said second instruction pointer update by said first and said second instruction length values.
Claim 4
Dependent Claim
72 words
The sequential instruction pointer execution unit of claim 1, wherein said sequential instruction pointer execution unit executes at least some of said plurality of sequential operations speculatively, said sequential instruction pointer execution unit further including an instruction pointer storage array storing a plurality of speculative instruction pointer values corresponding to at least some of said plurality of sequential operations, said instruction pointer storage array being coupled to said instruction pointer selection logic.
Claim 5
Dependent Claim
75 words
The sequential instruction pointer execution unit of claim 1, wherein said instructions include branch instructions, said branch instructions having respectively associated not-taken-direction and taken-direction control flow paths, said taken-direction control flow paths also being referred to as instruction streams, and further wherein said processor tracks a plurality of said instruction streams, said instruction pointer selection logic further including storage for a plurality of next instruction pointer values respectively associated with said plurality of instruction streams.
Claim 6
Dependent Claim
18 words
The sequential instruction pointer execution unit of claim 1, wherein said instruction length values are of variable length.
Claim 7
Dependent Claim
169 words
The sequential instruction pointer execution unit of claim 1, said processor implementing a segmented architecture, said processor executing said operations associated with said instructions from at least one segment, said segment having bounds within which each of said instructions must lie, said bounds being specified by a segment limit, a limit fault being said to occur when the last byte of one of said instructions associated with the execution of one of said operations is not within said segment limit, an evaluation of whether the execution of one of said operations has generated a limit fault being, referred to as an instruction pointer segment limit check, said sequential instruction pointer execution unit further including logic for simultaneously performing a first and second of said instruction pointer segment limit checks respectively for said first and second operations, said logic being referred to as superscalar instruction pointer segment limit checking logic, said superscalar instruction pointer segment limit checking logic being coupled to said first and second sum outputs of said adder.
Claim 8
Dependent Claim
169 words
The sequential instruction pointer execution unit of claim 3, said processor implementing a segmented architecture, said processor executing said operations associated with said instructions from at least one segment, said segment having bounds within which each of said instructions must lie, said bounds being specified by a segment limit, a limit fault being said to occur when the last byte of one of said instructions associated with the execution of one of said operations is not within said segment limit, an evaluation of whether the execution of one of said operations has generated a limit fault being referred to as an instruction pointer segment limit check, said sequential instruction pointer execution unit further including logic for simultaneously performing a first and second of said instruction pointer segment limit checks respectively for said first and second operations, said logic being referred to as superscalar instruction pointer segment limit checking logic, said superscalar instruction pointer segment limit checking logic being coupled to said first and second sum outputs of said adder.
Claim 9
Dependent Claim
169 words
The sequential instruction pointer execution unit of claim 4, said processor implementing a segmented architecture, said processor executing said operations associated with said instructions from at least one segment, said segment having bounds within which each of said instructions must lie, said bounds being specified by a segment limit, a limit fault being said to occur when the last byte of one of said instructions associated with the execution of one of said operations is not without said segment limit, an evaluation of whether the execution of one of said operations has generated a limit fault being referred to as an instruction pointer segment limit check, said sequential instruction pointer execution unit further including logic for simultaneously performing a first and second of said instruction pointer segment limit checks respectively for said first and second operations, said logic being retorted to as superscalar instruction pointer segment limit checking logic, said superscalar instruction pointer segment limit checking logic being coupled to said first and second sum outputs of said adder.
Claim 10
Dependent Claim
169 words
The sequential instruction pointer execution unit of claim 5, said processor implementing a segmented architecture, said processor executing said operations associated with said instructions from at least one segment, said segment having bounds within which each of said instructions must lie, said bounds being specified by a segment limit, a limit fault being said to occur when the last byte of one of said instructions associated with the execution of one of said operations is not within said segment limit, an evaluation of whether the execution of one of said operations has generated a limit fault being referred to as an instruction pointer segment limit check, said sequential instruction pointer execution unit further including logic for simultaneously performing a first and second of said instruction pointer segment limit checks respectively for said first and second operations, said logic being referred to as superscalar instruction pointer segment limit checking logic, said superscalar instruction pointer segment limit checking logic being coupled to said first and second sum output of said adder.
Claim 11
Dependent Claim
149 words
The sequential instruction pointer execution unit of claim 2, said processor implementing a segmented architecture, said segmented architecture defining a plurality of segments, each of said segments having respective bounds, said bounds being specified by respective segment limits, said processor executing instructions from one of said segments, said one segment from which said instructions are executed being designated as the code segment (CS), the respective segment limit of said code segment being referred to as the CS limit, said execution unit further comprising: segment limit checking logic that determines whether an instruction lies within the CS limit of the code segment, said instruction having a last byte that has an address that is one byte less than X -- EIP, X -- EIP bring a particular one of said first and second instruction pointer updates, said checking logic having dedicated circuitry to implement the inequality CS Limit+!X.sub.-- EIP+2≧0. 11.
Claim 12
Dependent Claim
35 words
The execution unit of claim 10, wherein each result of said segment limit checking logic is stored in a storage array as a tentative result pending retirement or abortion of an associated speculatively executed operation.
Claim 13
Dependent Claim
98 words
The essential instruction pointer execution unit of claim 10: wherein said checking logic's dedicated circuitry includes a carry-save adder, said carry-save adder having a carry output (B) corresponding to the carry-out of the most significant bit of said carry-save adder; a carry-propagation circuit, said carry-propagation circuit having a carry output (C) corresponding to the carry-out of the most significant bit of said carry-propagation circuit; and combinational logic having inputs for said carries B, and C and the particular one of said first and second carry output bits associated with EIP; and an output (F) for indicating limit faults.
Claim 14
Dependent Claim
23 words
The execution unit of claim 12, wherein the expanded sum-of-products form of said combinational logic's output is given by F(A,B,C)=Σ0, 4, 5, 6.
Claim 15
Dependent Claim
21 words
The execution unit of claim 10, wherein said segment limit checking logic performs a plurality of segment limit checks in parallel.
Claim 16
Dependent Claim
35 words
The execution unit of claim 14, wherein each result of said segment limit checking logic is stored in a storage array as a tentative result pending retirement or abortion of an associated speculatively executed operation.
Claim 17
Dependent Claim
23 words
The execution unit of claim 15, wherein multiple adjacent locations in said storage array are written simultaneously based on a single write address.
Claim 18
Dependent Claim
438 words
A sequential instruction pointer execution unit for a processor that executes instructions, said instructions including branch instructions, said branch instructions having respectively associated not-taken-direction and taken-direction control flow paths, said taken-direction control flow paths also being referred to as instruction streams, said processor tracking a plurality of said instruction streams, said sequential instruction pointer execution unit being one type of a plurality of types of execution units within said processor, said sequential instruction pointer execution unit performing superscalar instruction pointer updates for a plurality of sequential operations, said operations being associated with said instructions, said sequential instruction pointer execution unit executing at least some of said plurality of sequential operations speculatively, said sequential instruction pointer execution unit comprising: (a) first storage for a first and a second of said plurality of operations, said second operation being sequential to said first operation, said first and second operations having respective first and second instruction length values; (b) instruction pointer selection logic, said selection logic providing a current instruction pointer value, said instruction pointer selection logic including storage for a plurality of next instruction pointer values respectively associated with said plurality of instruction streams; (c) an adder having (c1) a first input, said first input being coupled to said current instruction pointer value; (c2) a second input, said second input being coupled to said first instruction length value; (c3) a third input, said third input being coupled to said second instruction length value; (c4) a first sum output, said first sum output providing a first instruction pointer update equal to the addition of said current instruction pointer value and said first instruction length value, said first instruction pointer update corresponding to the execution of said first operation, said first sum output being coupled to said instruction pointer selection logic; (c5) a second sum output, said second sum output providing a second instruction pointer update equal to the addition of said current instruction pointer value to said first and second instruction length values, said second instruction pointer update corresponding to the simultaneous execution of said first and second operations, said second sum output being coupled to said instruction pointer selection logic; (c6) a first wrap-carry output bit, associated with said first instruction pointer update by said first instruction length value; and (c7) a second wrap-carry output bit, associated with said second instruction pointer update by said first and said second instruction length values; and (d) an instruction pointer storage array storing a plurality of speculative instruction pointer values corresponding to at least some of said plurality of sequential operations, said instruction pointer storage array being coupled to said instruction pointer selection logic.
Claim 19
Dependent Claim
438 words
A sequential instruction pointer execution unit for a processor that executes instructions, said instructions including branch instructions, said branch instructions having respectively associated not-taken-direction and taken-direction control flow paths, said taken-direction control flow paths also being referred to as instruction streams, said processor tracking a plurality of said instruction streams, said sequential instruction pointer execution unit being one type of a plurality of types of execution units within said processor, said sequential instruction pointer execution unit performing superscalar instruction pointer updates for a plurality of sequential operations, said operations being associated with said instructions, said sequential instruction pointer execution unit executing at least some of said plurality of sequential operations speculatively, said sequential instruction pointer execution unit comprising: (a) first storage for a first and a second of said plurality of operations, said second operation being sequential to said first operation, said first and second operations having respective first and second instruction length values; (b) instruction pointer selection logic, said selection logic providing a current instruction pointer value, said instruction pointer selection logic including storage for a plurality of next instruction pointer values respectively associated with said plurality of instruction streams; (c) an adder having (c1) a first input, said first input being coupled to said current instruction pointer value; (c2) a second input, said second input being coupled to said first instruction length value; (c3) a third input, said third input being coupled to said second instruction length value; (c4) a first sum output, said first sum output providing a first instruction pointer update equal to the addition of said current instruction pointer value and said first instruction length value, said first instruction pointer update corresponding to the execution of said first operation, said first sum output being coupled to said instruction pointer selection logic; (c5) a second sum output, said second sum output providing a second instruction pointer update equal to the addition of said current instruction pointer value to said first and second instruction length values, said second instruction pointer update corresponding to the simultaneous execution of said first and second operations, said second sum output being coupled to said instruction pointer selection logic; (c6) a first wrap-carry output bit, associated with said first instruction pointer update by said first instruction length value; and (c7) a second wrap-carry output bit, associated with said second instruction pointer update by said first and said second instruction length values; and (d) an instruction pointer storage array storing a plurality of speculative instruction pointer values corresponding to at least some of said plurality of sequential operations, said instruction pointer storage array being coupled to said instruction pointer selection logic.
Claim 20
Dependent Claim
169 words
The sequential instruction pointer execution unit of claim 17, said processor implementing a segmented architecture, said processor executing said operations associated with said instructions from at least one segment, said segment having bounds within which each of said instructions must lie, said bounds being specified by a segment limit, a limit fault being said to occur,. when the last byte of one of said instructions associated with the execution of one of said operations is not within said segment limit, an evaluation of whether the execution of one of said operations has generated a limit fault being referred to as an instruction pointer segment limit check, said sequential instruction pointer execution unit further including logic for simultaneously performing a first and second of said instruction pointer segment limit checks respectively for said first and second operations, said logic being referred to as superscalar instruction pointer segment limit checking logic, said superscalar instruction pointer segment limit checking logic being coupled to said first and second sum outputs of said adder.
Claim 21
Dependent Claim
166 words
The sequential instruction pointer execution unit of claim 17, wherein: (a) said instruction pointer selection logic includes a first input, said first input accepting at least one of said plurality of speculative instruction pointer values from said instruction pointer storage array; (b) said instruction pointer selection logic includes a second input, said second input being coupled to said first instruction pointer update from said adder; (c) said instruction pointer selection logic includes a third input, said third input being coupled to said second instruction pointer update from said adder; (d) said sequential instruction pointer execution unit further includes storage for said current instruction pointer value, and wherein said instruction pointer selection logic includes a fourth input coupled to said current instruction pointer storage; and (e) said instruction pointer selection logic further includes an output coupled to said current instruction pointer storage and to said adder's first input and wherein said instruction pointer selection logic performs said providing of said current instruction pointer value via said output.
Claim 22
Dependent Claim
169 words
The sequential instruction pointer execution unit of claim 19, said processor implementing a segmented architecture, said processor executing said operations associated with said instructions from at least one segment, said segment having bounds within which each of said instructions must lie, said bounds being specified by a segment limit, a limit fault being said to occur when the last byte of one of said instructions associated with the execution of one of said operations is not within said segment limit, an evaluation of whether the execution of one of said operations has generated a limit fault being referred to as an instruction pointer segment limit check, said sequential instruction pointer execution unit further including logic for simultaneously performing a first and second of said instruction pointer segment limit checks respectively for said first and second operations, said logic being referred to as superscalar instruction pointer segment limit checking logic, said superscalar instruction pointer segment limit checking logic being coupled to said first and second sum outputs of said adder.
References Cited (Backward Citations)
US4200927A
Cited
US4360868A
Cited
US4926316A
Cited
US5146570A
Cited
US4714994A
Cited
US5321836A
Cited
US4851989A
Cited
US4783757A
Cited
US4858105A
Cited
US5226129A
Cited
US4837738A
Cited
US4942525A
Cited
US4949238A
Cited
US5202967A
Cited
US5051885A
Cited
US5067069A
Cited
US4959860A
Cited
US5226126A
Cited
US5204953A
Cited
US5313606A
Cited
US5463745A
Cited
US5471597A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 1999-12-31 | 2000-07-01 | 2000-12-31 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2003-12-31 | 2004-07-01 | 2004-12-31 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2007-12-31 | 2008-07-01 | 2008-12-31 | $7700.00 | Window Closed / Lapsed |