Patent US5067069A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5067069A Expired / Lapsed US ⏱️ 0.0 years remaining

Control of multiple functional units with parallel operation in a microcoded execution unit

Assignee: Hewlett Packard Development Co LP
•
Filing: 1989-02-03
•
Granted: 1991-11-19
•
Expires: 2009-02-03
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract To increase the performance of a pipelined processor executing various classes of instructions, the classes of instructions are executed by respective functional units which are independently controlled and operated in parallel. The classes of instructions include integer instructions, floating point instructions, multiply instructions, and divide instructions. The integer unit, which also performs shift operations, is controlled by the microcode execution unit to handle the wide variety of integer and shift operations included in a complex, variable-length instruction set. The other functional units need only accept a control command to initiate the operation to be performed by the functional unit. The retiring of the results of the instructions need not be controlled by the microcode execution unit, but instead is delegated to a separate retire unit that services a result queue. When the microcode execution unit determines that a new operation is required, an entry is inserted into the result queue. The entry includes all the information needed by the retire unit to retire the result once the result is available from the respective functional unit. The retire unit services the result queue by reading a tag in the entry at the head of the queue to determine the functional unit that is to provide the result. Once the result is available and the destination specified by the entry is also available, the result is retired in accordance with the entry, and the entry is removed from the queue.

Inventors

  • 👤 Elaine H. Fite
  • 👤 Tryggve Fossum
  • 👤 William R. Grundmann
  • 👤 Francis X. McKeen
  • 👤 Ronald M. Salett

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-29 16:16
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/30145; G06F9/3016; G06F9/30167; G06F9/30098; G06F9/30101; G06F9/38; G06F9/3836; G06F9/3854; G06F9/3858; G06F9/3861; G06F9/3863; G06F9/3867; G06F9/3885

Claims Analysis

Total Claims: 23
Claim 1
Independent Claim 209 words
A method of preprocessing and executing multiple instructions in a pipelined processor, said instructions including opcodes and operand specifiers, said pipelined processor including multiple and separate functional units for executing various classes of said instructions, said method comprising the steps of: decoding said instructions to obtain said opcodes and operand specifiers; fetching source operands specified by said operand specifiers; operating a microcode-controlled issue unit to issue the source operands to the respective functional units indicated by the decoded opcodes, and for each of the instructions, to insert an entry into a result queue when an instruction is issued to a functional unit and the destination for the result is known, the entry indicating the particular functional unit and the destination for the result of the functional unit, wherein instructions are issued before their destinations are known; operating the functional units in parallel to execute the various classes of said instructions including integer instructions, floating point instructions, multiply instructions, and divide instructions; and successively retiring results by retiring the result from the functional unit indicated by the entry at the head of the result queue when the result is available and when the destination indicated by the entry is available, and removing the entry from the head of the queue.
Claim 2
Independent Claim 209 words
A method of preprocessing and executing multiple instructions in a pipelined processor, said instructions including opcodes and operand specifiers, said pipelined processor including multiple and separate functional units for executing various classes of said instructions, said method comprising the steps of: decoding said instructions to obtain said opcodes and operand specifiers; fetching source operands specified by said operand specifiers; operating a microcode-controlled issue unit to issue the source operands to the respective functional units indicated by the decoded opcodes, and for each of the instructions, to insert an entry into a result queue when an instruction is issued to a functional unit and the destination for the result is known, the entry indicating the particular functional unit and the destination for the result of the functional unit, wherein instructions are issued before their destinations are known; operating the functional units in parallel to execute the various classes of said instructions including integer instructions, floating point instructions, multiply instructions, and divide instructions; and successively retiring results by retiring the result from the functional unit indicated by the entry at the head of the result queue when the result is available and when the destination indicated by the entry is available, and removing the entry from the head of the queue.
Claim 3
Dependent Claim 62 words
The method as claimed in claim 1, wherein the entry includes a flag indicating whether the result is to be written into memory, and wherein destination addresses for results to be written to memory are not stored in the result queue, but instead are forwarded to a memory unit for address translation while the results are being obtained by the functional units.
Claim 4
Dependent Claim 18 words
The method as claimed in claim 1, wherein the entry includes a context field indicating the result context.
Claim 5
Dependent Claim 16 words
The method as claimed in claim 1, wherein the entry includes flags for enabling condition codes.
Claim 6
Dependent Claim 21 words
The method as claimed in claim 1, wherein the entry includes a flag that marks the end of a macro instruction.
Claim 7
Dependent Claim 21 words
The method as claimed in claim 1, wherein the entry includes a flag that marks the end of a macro branch.
Claim 8
Dependent Claim 94 words
The method as claimed in claim 1, wherein the entry includes a flag indicating whether the retiring of a result must wait for acknowledgement of a successful memory write operation before completing subsequent retirement operations, and wherein the retiring of a result waits for acknowledgement of a successful memory write operation when said flag indicates that the retiring of a result must wait, and the retiring of a result does not wait for acknowledgement of a successful memory write operation when said flag does not indicate that the retiring of a result must wait.
Claim 9
Dependent Claim 46 words
The method as claimed in claim 1, wherein the entry includes a flag indicating whether a result is to be written somewhere, and wherein the retiring of the result ignores the result when said flag does not indicate that the result is to be written somewhere.
Claim 10
Dependent Claim 42 words
The method as claimed in claim 1, wherein said functional units include an integer unit, and wherein said method further includes controlling said integer unit by microcode which controls said issue unit, and controlling the other functional units independently of said microcode.
Claim 11
Dependent Claim 62 words
The method as claimed in claim 1, wherein said issue unit is controlled by microcode including microcode sequences for executing respective instruction opcodes, and wherein at least one of said microcode sequences provides a destination addresses for a respective instruction, and wherein the issue unit loads the result queue with said destination address at the beginning of execution of said respective instruction.
Claim 12
Independent Claim 235 words
A method of preprocessing and executing multiple instructions in a pipelined processor, said instructions including opcodes and operand specifiers, said pipelined processor including multiple and separate functional units for executing various classes of said instructions, said method comprising the steps of: decoding said instructions to obtain said opcodes and operand specifiers; fetching source operands specified by said operand specifiers; operating a microcode-controlled issue unit to issue the source operands to the respective functional units indicated by the decoded opcodes, and for each of the instructions, to insert an entry into a result queu when an instruction is issued to a functional unit and the destination for the result is known, the entry indicating the particular functional unit and the destination for the result of the functional unit; operating the functional units in parallel to execute the various classes of said instructions including integer instructions, floating point instructions, multiply instructions, and divide instructions, wherein said functional units include an integer unit, and wherein said method further includes controlling said integer unit by microcode which controls said issue unit, and controlling the other functional units independently of said microcode; and successively retiring results by retiring the result from the functional unit indicated by the entry at the head of the result queue when the result is available and when the destination indicated by the entry is available, and removing the entry from the head of the queue.
Claim 13
Independent Claim 235 words
A method of preprocessing and executing multiple instructions in a pipelined processor, said instructions including opcodes and operand specifiers, said pipelined processor including multiple and separate functional units for executing various classes of said instructions, said method comprising the steps of: decoding said instructions to obtain said opcodes and operand specifiers; fetching source operands specified by said operand specifiers; operating a microcode-controlled issue unit to issue the source operands to the respective functional units indicated by the decoded opcodes, and for each of the instructions, to insert an entry into a result queu when an instruction is issued to a functional unit and the destination for the result is known, the entry indicating the particular functional unit and the destination for the result of the functional unit; operating the functional units in parallel to execute the various classes of said instructions including integer instructions, floating point instructions, multiply instructions, and divide instructions, wherein said functional units include an integer unit, and wherein said method further includes controlling said integer unit by microcode which controls said issue unit, and controlling the other functional units independently of said microcode; and successively retiring results by retiring the result from the functional unit indicated by the entry at the head of the result queue when the result is available and when the destination indicated by the entry is available, and removing the entry from the head of the queue.
Claim 14
Dependent Claim 62 words
The method as claimed in claim 11, wherein the entry includes a flag indicating whether the result is to be written into memory, and wherein destination addresses for results to be written to memory are not stored in the result queue, but instead are forwarded to a memory unit for address translation while the results are being obtained by the functional units.
Claim 15
Dependent Claim 21 words
The method as claimed in claim 11, wherein the entry includes a flag that marks the end of a macro instruction.
Claim 16
Dependent Claim 21 words
The method as claimed in claim 11, wherein the entry includes a flag that marks the end of a macro branch.
Claim 17
Dependent Claim 94 words
The method as claimed in claim 11, wherein the entry includes a flag indicating whether the retiring of a result must wait for acknowledgement of a successful memory write operation before completing subsequent retirement operations, and wherein the retiring of a result waits for acknowledgement of a successful memory write operation when said flag indicates that the retiring of a result must wait, and the retiring of a result does not wait for acknowledgement of a successful memory write operation when said flag does not indicate that the retiring of a result must wait.
Claim 18
Dependent Claim 46 words
The method as claimed in claim 11, wherein the entry includes a flag indicating whether a result is to be written somewhere, and wherein the retiring of the result ignores the result when said flag does not indicate that the result is to be written somewhere.
Claim 19
Dependent Claim 62 words
The method as claimed in claim 11, wherein said issue unit is controlled by microcode including microcode sequences for executing respective instruction opcodes, and wherein at least one of said microcode sequences provides a destination addresses for a respective instruction, and wherein the issue unit loads the result queue with said destination address at the beginning of execution of said respective instruction.
Claim 20
Dependent Claim 181 words
A pipelined processor for preprocessing and executing multiple instructions, said instructions including opcodes and operand specifiers, said processor including means for decoding said instructions to obtain said opcodes and said operand specifiers, means for fetching source operands specified by said operand specifiers, multiple and separate functional units for executing various classes of said instructions, means responsive to the decoded opcodes for issuing commands and source operands to the respective functional units to initiate parallel execution of the various classes of instructions, and means for retiring results from the respective functional units, wherein said means for issuing commands and source operands includes a microcode controlled issue unit, said functional units include an integer unit controlled by said microcode, and the other functional units are controlled independently of said microcode, said means for retiring results from the respective functional units includes a result queue, means for loading entries into the result queue identifying respective functional units and respective destinations for their results, and means for retiring results from respective functional units and to respective destinations indicated by the entries in the result queue.
Claim 21
Dependent Claim 181 words
A pipelined processor for preprocessing and executing multiple instructions, said instructions including opcodes and operand specifiers, said processor including means for decoding said instructions to obtain said opcodes and said operand specifiers, means for fetching source operands specified by said operand specifiers, multiple and separate functional units for executing various classes of said instructions, means responsive to the decoded opcodes for issuing commands and source operands to the respective functional units to initiate parallel execution of the various classes of instructions, and means for retiring results from the respective functional units, wherein said means for issuing commands and source operands includes a microcode controlled issue unit, said functional units include an integer unit controlled by said microcode, and the other functional units are controlled independently of said microcode, said means for retiring results from the respective functional units includes a result queue, means for loading entries into the result queue identifying respective functional units and respective destinations for their results, and means for retiring results from respective functional units and to respective destinations indicated by the entries in the result queue.
Claim 22
Dependent Claim 102 words
The pipelined processor as claimed in claim 18, wherein each of said entries includes a flag indicating whether the retiring of a result must wait for acknowledgement of a successful memory write operation before completing subsequent retirement operations, and wherein said means for retiring results includes means for waiting for acknowledgement of a successful memory write operation when said flag indicates that the retiring of a result must wait, and means for completing the retiring of a result without waiting for acknowledgement of a successful memory write operation when said flag does not indicate that the retiring of a result must wait.
Claim 23
Dependent Claim 65 words
The method as claimed in claim 18, wherein said issue unit is controlled by microcode including microcode sequences for executing respective instruction opcodes, and wherein at least one of said microcode sequences provides a destination addresses for a respective instruction, and wherein the issue unit includes means for loading the result queue with said destination address at the beginning of execution of said respective instruction.

References Cited (Backward Citations)

US3949379A Cited
US4395758A Cited
US4392200A Cited
US4454578A Cited
US4467409A Cited
US4509116A Cited
US4521851A Cited
US4594659A Cited
US4594660A Cited
US4543626A Cited
US4783738A Cited
US4943912A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1994-11-18 1995-05-20 1995-11-19 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 1998-11-18 1999-05-20 1999-11-19 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2002-11-18 2003-05-20 2003-11-19 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag