Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
First Claim
1. A method, comprising:
- decoding a macroinstruction of a computer, the decoding generating a plurality of iterations of a sequence of one or more microinstructions, including;
a pattern of microinstructions implementing a basic operation, anda branch instruction predicted not taken;
on detecting that an iteration completes operation of the macroinstruction, adding a marker indicating an end of the macroinstruction to a microinstruction in a pipeline downstream of an instruction decoder;
after reaching a termination condition of the macroinstruction, partially executing an iteration beyond the termination, the partial execution committing at least one side-effect to an architecturally-visible resource of the computer, and raising an exception to transfer control to a second microinstruction stream; and
in the second microinstruction stream, unwinding the side-effects committed by the post-termination iteration.
2 Assignments
0 Petitions
Accused Products
Abstract
A computer. A processor pipeline alternately executes instructions coded for first and second different computer architectures or coded to implement first and second different processing conventions. A memory stores instructions for execution by the processor pipeline, the memory being divided into pages for management by a virtual memory manager, a single address space of the memory having first and second pages. A memory unit fetches instructions from the memory for execution by the pipeline, and fetches stored indicator elements associated with respective memory pages of the single address space from which the instructions are to be fetched. Each indicator element is designed to store an indication of which of two different computer architectures and/or execution conventions under which instruction data of the associated page are to be executed by the processor pipeline. The memory unit and/or processor pipeline recognizes an execution flow from the first page, whose associated indicator element indicates the first architecture or execution convention, to the second page, whose associated indicator element indicates the first architecture or execution convention. In response to the recognizing, a processing mode of the processor pipeline or a storage content of the memory adapts to effect execution of instructions in the architecture and/or under the convention indicated by the indicator element corresponding to the instruction'"'"'s page.
273 Citations
54 Claims
-
1. A method, comprising:
-
decoding a macroinstruction of a computer, the decoding generating a plurality of iterations of a sequence of one or more microinstructions, including; a pattern of microinstructions implementing a basic operation, and a branch instruction predicted not taken; on detecting that an iteration completes operation of the macroinstruction, adding a marker indicating an end of the macroinstruction to a microinstruction in a pipeline downstream of an instruction decoder; after reaching a termination condition of the macroinstruction, partially executing an iteration beyond the termination, the partial execution committing at least one side-effect to an architecturally-visible resource of the computer, and raising an exception to transfer control to a second microinstruction stream; and in the second microinstruction stream, unwinding the side-effects committed by the post-termination iteration.
-
-
2. A method, comprising:
decoding a macroinstruction of a computer, the decoding generating a plurality of iterations of; a pattern of microinstructions implementing a basic operation, wherein the microinstruction set is architecturally exposed to programs fetched from an architecturally-visible memory of the computer, and a branch instruction predicted not taken. - View Dependent Claims (3, 4, 5, 6)
-
7. A computer, comprising:
-
an instruction decoder designed to decode macroinstructions into microinstructions for execution in an instruction pipeline on a computer, and for at least one macroinstruction that includes internal iterations, the decoding of the internal-iteration macroinstruction designed to generate a plurality of iterations of; a pattern of microinstructions for implementing a basic operation of an internal iteration of the internal-iteration macroinstruction, and a branch microinstruction predicted not taken, wherein the branch microinstruction is generated including a marker indicating that the branch microinstruction defines a boundary between two successive iterations of the internal-iteration macroinstruction; the instruction decoder being further designed to cease generating iterations on detection of a branch mispredict. - View Dependent Claims (8, 9, 10)
-
-
11. A method, comprising:
-
decoding a macroinstruction on a computer, the macroinstruction calling for a plurality of iterations of a sequence of one or more microinstructions; and on detecting that an iteration completes operation of the macroinstruction, adding a marker indicating an end of the macroinstruction to a microinstruction in a pipeline downstream of an instruction decoder. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. A computer, comprising:
-
an instruction decoder designed to decode a macroinstruction set that includes a macroinstruction calling for a plurality of iterations of a sequence of one or more microinstructions; a pipeline stage downstream of the instruction decoder designed to detect that operation of the macroinstruction is complete, and in response, to add a marker to a microinstruction indicating an end of the macroinstruction. - View Dependent Claims (18, 19)
-
-
20. A method, comprising:
-
after reaching a termination condition of a loop of a first microinstruction stream executing in a computer, the microinstruction stream being generated by decoding a macroinstruction, partially executing a loop iteration beyond the termination, the partial execution committing at least one side-effect to an architecturally-visible resource of the computer, and raising an exception to transfer control to a second microinstruction stream; in the second microinstruction stream, unwinding the side-effects committed by the post-termination iteration. - View Dependent Claims (21, 22, 23, 24, 25, 26)
-
-
27. A computer, comprising:
-
circuitry designed to partially execute a post-termination iteration of a loop of a first microinstruction stream executing in the computer, the partial execution designed to commit at least one side-effect to an architecturally-visible resource of the computer, and to raise an exception to transfer control to a second microinstruction stream; software of the second microinstruction stream, programmed to unwind side-effects committed by the post-termination iteration. - View Dependent Claims (28, 29, 30, 31)
-
-
32. A method comprising:
-
in a computer having instruction fetch circuitry for fetching instructions in first and second instruction sets from a memory of the computer and executing the instructions, executing a first instruction coded in the first instruction set, the first instruction storing into a memory location a value of a second instruction coded in the second instruction set, in response to the storing, clearing an instruction cache and execution pipeline of the computer of the former content of the memory location; executing the second instruction in the execution pipeline. - View Dependent Claims (33, 34, 35, 36, 37)
-
-
38. A computer, comprising:
-
instruction fetch and execution circuitry designed to fetch and execute instructions in two different instruction sets, each instruction set including store instructions to write data to a memory of the computer; store monitoring circuitry designed to monitor the store instructions and to invalidate any copies of a datum overwritten by the store instructions, including copies of instructions in any instruction cache, in the instruction set other than the instruction set of the current store instruction. - View Dependent Claims (39, 40)
-
-
41. A method, comprising:
decoding and executing an instruction on a computer, execution of the instruction including waiting to allow a pipeline to drain, and setting bits of a floating-point control word to values denoted in an explicit immediate field of the instruction. - View Dependent Claims (42, 43, 44, 45)
-
46. A computer, comprising:
execution circuitry designed to execute an instruction calling for waiting to allow a pipeline to drain and to set bits of a floating-point control word to values denoted in an explicit immediate field of the instruction. - View Dependent Claims (47, 48, 49, 50)
-
51. A computer, comprising:
-
an instruction decoder designed to decode macroinstructions into microinstructions for execution in an instruction pipeline on the computer, and for at least one macroinstruction, the decoder designed to generate a plurality of iterations of a pattern of microinstructions implementing a basic operation of the macroinstruction, a microinstruction of each of the plurality of iterations including a marker indicating that the marked microinstruction defines a boundary between two successive iterations, the microinstruction set being architecturally exposed for execution from an architecturally-exposed memory; and operand commit circuitry designed to detect the marker, and in response, to commit results of an iteration to architectural state of the computer. - View Dependent Claims (52, 53, 54)
-
Specification