Claims Analysis
Total Claims: 23
Claim 1
Independent Claim
316 words
A superscalar complex instruction set computer (CISC) microprocessor having a variable byte length instruction format comprising: a source of CISC instructions having a variable byte-length instruction format in which the CISC instructions are stored with an inconsistent byte alignment within an instruction memory including CISC instructions that map into reduced instruction set computer (RISC) operations (ROPs), the CISC instructions being integer CISC instructions that map into integer ROPs and floating point instructions that map into floating point ROPs; an instruction cache coupled to the CISC instruction source for storing a plurality of instruction blocks including CISC instruction bytes and predecode bits, prefetching and predecoding stored instruction bytes and aligning the plurality of prefetched CISC instruction bytes; an instruction decoder coupled to the instruction cache for mapping aligned CISC instructions into a corresponding sequence of RISC-like operations (ROPs), dispatching a plurality of ROPs per microprocessor cycle and performing a speculative branch prediction operation; an integer functional unit coupled to the instruction decoder for receiving the dispatched integer ROPs, executing the integer ROPs and generating speculative results resulting from the integer ROP execution; a floating point functional unit coupled to the instruction decoder for receiving the dispatched floating point ROPs, executing the floating point ROPs and generating speculative results resulting from the floating point ROP execution; a reorder buffer coupled to the instruction decoder for shared use by both the integer functional unit and the floating point functional unit to store speculative results in common storage elements, the common reorder buffer renaming registers, issuing multiple instructions in a single cycle, retiring multiple instructions in a single cycle, and retiring speculative results which become non-speculative results by virtue of being in a correctly predicted branch, the common reorder buffer not retiring speculative results in mispredicted branches; and a register file, coupled to the reorder buffer and instruction decoder, for storing non-speculative results which are retired from the reorder buffer.
Claim 2
Dependent Claim
316 words
A superscalar complex instruction set computer (CISC) microprocessor having a variable byte length instruction format comprising: a source of CISC instructions having a variable byte-length instruction format in which the CISC instructions are stored with an inconsistent byte alignment within an instruction memory including CISC instructions that map into reduced instruction set computer (RISC) operations (ROPs), the CISC instructions being integer CISC instructions that map into integer ROPs and floating point instructions that map into floating point ROPs; an instruction cache coupled to the CISC instruction source for storing a plurality of instruction blocks including CISC instruction bytes and predecode bits, prefetching and predecoding stored instruction bytes and aligning the plurality of prefetched CISC instruction bytes; an instruction decoder coupled to the instruction cache for mapping aligned CISC instructions into a corresponding sequence of RISC-like operations (ROPs), dispatching a plurality of ROPs per microprocessor cycle and performing a speculative branch prediction operation; an integer functional unit coupled to the instruction decoder for receiving the dispatched integer ROPs, executing the integer ROPs and generating speculative results resulting from the integer ROP execution; a floating point functional unit coupled to the instruction decoder for receiving the dispatched floating point ROPs, executing the floating point ROPs and generating speculative results resulting from the floating point ROP execution; a reorder buffer coupled to the instruction decoder for shared use by both the integer functional unit and the floating point functional unit to store speculative results in common storage elements, the common reorder buffer renaming registers, issuing multiple instructions in a single cycle, retiring multiple instructions in a single cycle, and retiring speculative results which become non-speculative results by virtue of being in a correctly predicted branch, the common reorder buffer not retiring speculative results in mispredicted branches; and a register file, coupled to the reorder buffer and instruction decoder, for storing non-speculative results which are retired from the reorder buffer.
Claim 3
Dependent Claim
130 words
A microprocessor according to claim 1, wherein the instruction cache further includes: a prefetcher for prefetching a plurality of instruction bytes from the CISC instruction source; an array coupled to the prefetcher for storing a plurality of instruction blocks, each block having a plurality of prefetched instruction bytes and a corresponding plurality of predecode bits; a predecoder coupled to the array for predecoding each of the prefetched instruction bytes, designating a plurality of predecode bits for each prefetched instruction byte; a memory for storing the plurality of prefetched instruction bytes and plurality of predecode bits for each prefetched instruction byte into an instruction block within the array; and means for delivering a stream of instruction bytes and predecode bits from an instruction block within the array to the instruction decoder.
Claim 4
Dependent Claim
93 words
A microprocessor according to claim 2 wherein the plurality of predecode bits includes a bit designating whether the corresponding prefetched and predecoded instruction byte is a starting byte of an instruction, a bit designating whether the corresponding prefetched and predecoded instruction byte is an ending byte of an instruction, a bit designating whether the corresponding prefetched and predecoded instruction byte is an opcode byte of an instruction, and a group of bits for identifying an instruction byte according to which instruction fields, as prefetched and predecoded, are provided by the corresponding instruction byte.
Claim 5
Dependent Claim
80 words
A microprocessor according to claim 2, wherein the delivering means includes: a byte queue for buffering a plurality of instruction bytes; a loader for loading instruction bytes into available positions of the byte queue; and a shifter for shifting the instruction bytes within the byte queue in response to information received from the instruction decoder corresponding to the number of instruction bytes processed by the instruction decoder, and for aligning unprocessed instruction bytes at the head of the byte queue.
Claim 6
Dependent Claim
92 words
A microprocessor according to claim 2, wherein the array includes: a store array for storing the plurality of instruction blocks; a tag array for storing a plurality of cache tags, each of the cache tags corresponding to a respective instruction block stored within the store array; and a successor array for storing branch information corresponding to each instruction block stored within the store array, the branch information indicating whether a branch instruction is stored within a corresponding instruction block, and if so, the location of the branch instruction within the instruction block.
Claim 7
Dependent Claim
108 words
A microprocessor according to claim 2, wherein the prefetcher includes: a group of registers for storing a plurality of instruction bytes prefetched from the instruction source, the group of registers providing sufficient storage for storing instruction bytes corresponding to a plurality of instruction cache blocks; an assign block coupled to the group of registers for determining, in response to a starting point within the group of registers, the location of individual instruction bytes corresponding to instruction fields; and a lookup table block coupled to the assign block to receive a plurality of instruction fields for an instruction, and for returning a plurality of status indicators and descriptor fields.
Claim 8
Dependent Claim
52 words
A microprocessor according to claim 6, wherein the prefetcher further includes a scan/parse block for receiving from the delivering means a plurality of previously-provided instruction bytes and corresponding predecode bits and representing a partial instruction, and for providing to the assign block a plurality of descriptor fields corresponding to the partial instruction.
Claim 9
Dependent Claim
325 words
A superscalar complex instruction set computer (CISC) microprocessor having a variable byte length instruction format comprising: a source of CISC instructions having a variable byte-length instruction format in which the CISC instructions are stored with an inconsistent byte alignment within an instruction memory including CISC instructions that map into reduced instruction set computer (RISC) operations (ROPs), the CISC instructions being integer CISC instructions that map into integer ROPs and floating point instructions that map into floating point ROPs; an instruction cache coupled to the CISC instruction source for storing a plurality of instruction blocks including CISC instruction bytes and predecode bits, prefetching and predecoding stored instruction bytes and aligning the plurality of prefetched CISC instruction bytes; a plurality of instruction decoders coupled to the instruction cache, individual decoders of the plurality of decoders for decoding selected CISC instructions, the decoders mapping aligned CISC instructions into a corresponding sequence of RISC-like operations (ROPs) and dispatching a plurality of ROPs per microprocessor cycle; an integer functional unit coupled to the instruction decoder for receiving the dispatched integer ROPs, executing the integer ROPs and generating speculative results resulting from the integer ROP execution; a floating point functional unit coupled to the instruction decoder for receiving the dispatched floating point ROPs, executing the floating point ROPs and generating speculative results resulting from the floating point ROP execution; a reorder buffer coupled to the instruction decoder for shared use by both the integer functional unit and the floating point functional unit to store speculative results in common storage elements, the common reorder buffer renaming registers, issuing multiple instructions in a single cycle, retiring multiple instructions in a single cycle, and retiring speculative results which become non-speculative results by virtue of being in a correctly predicted branch, the common reorder buffer not retiring speculative results in mispredicted branches; and a register file, coupled to the reorder buffer and instruction decoder, for storing non-speculative results which are retired from the reorder buffer.
Claim 10
Dependent Claim
325 words
A superscalar complex instruction set computer (CISC) microprocessor having a variable byte length instruction format comprising: a source of CISC instructions having a variable byte-length instruction format in which the CISC instructions are stored with an inconsistent byte alignment within an instruction memory including CISC instructions that map into reduced instruction set computer (RISC) operations (ROPs), the CISC instructions being integer CISC instructions that map into integer ROPs and floating point instructions that map into floating point ROPs; an instruction cache coupled to the CISC instruction source for storing a plurality of instruction blocks including CISC instruction bytes and predecode bits, prefetching and predecoding stored instruction bytes and aligning the plurality of prefetched CISC instruction bytes; a plurality of instruction decoders coupled to the instruction cache, individual decoders of the plurality of decoders for decoding selected CISC instructions, the decoders mapping aligned CISC instructions into a corresponding sequence of RISC-like operations (ROPs) and dispatching a plurality of ROPs per microprocessor cycle; an integer functional unit coupled to the instruction decoder for receiving the dispatched integer ROPs, executing the integer ROPs and generating speculative results resulting from the integer ROP execution; a floating point functional unit coupled to the instruction decoder for receiving the dispatched floating point ROPs, executing the floating point ROPs and generating speculative results resulting from the floating point ROP execution; a reorder buffer coupled to the instruction decoder for shared use by both the integer functional unit and the floating point functional unit to store speculative results in common storage elements, the common reorder buffer renaming registers, issuing multiple instructions in a single cycle, retiring multiple instructions in a single cycle, and retiring speculative results which become non-speculative results by virtue of being in a correctly predicted branch, the common reorder buffer not retiring speculative results in mispredicted branches; and a register file, coupled to the reorder buffer and instruction decoder, for storing non-speculative results which are retired from the reorder buffer.
Claim 11
Dependent Claim
29 words
A microprocessor according to claim 8 wherein the plurality of instruction decoders include: first instruction decoder for decoding simple CISC instructions; second instruction decoder for decoding complex CISC instructions.
Claim 12
Dependent Claim
55 words
A microprocessor according to claim 9 wherein: the first instruction decoder for decoding simple CISC instructions includes combinatorial logic; and the second instruction decoder for decoding complex CISC instructions includes a memory for storing an ROP instruction sequence and a memory controller for generating an entrypoint into the memory in accordance with a CISC opcode.
Claim 13
Dependent Claim
56 words
A microprocessor according to claim 9 wherein: the first instruction decoder for decoding simple CISC instructions includes programmable array logic; and the second instruction decoder for decoding complex CISC instructions includes a memory for storing an ROP instruction sequence and a memory controller for generating an entrypoint into the memory in accordance with a CISC opcode.
Claim 14
Dependent Claim
31 words
A microprocessor according to claim 8 wherein the plurality of instruction decoders map CISC instructions into ROPs having a form which includes an opcode, two source operands and one destination operand.
Claim 15
Dependent Claim
18 words
A microprocessor according to claim 8 wherein the plurality of instruction decoders form a plurality of conversion pathways.
Claim 16
Dependent Claim
55 words
A microprocessor according to claim 13 wherein: the plurality of instruction decoders include a plurality of first-type instruction decoders for decoding simple CISC instructions and a plurality of second-type instruction decoders for decoding complex CISC instructions; and a pathway of the plurality of conversion pathways includes a first-type instruction decoder and a second-type instruction decoder.
Claim 17
Independent Claim
350 words
A method of operating a superscalar complex instruction set computer (CISC) microprocessor having a variable byte length instruction format, the method comprising the steps of: supplying a source of CISC instructions having a variable byte-length instruction format in which the CISC instructions are stored with an inconsistent byte alignment within an instruction memory including CISC instructions that map into reduced instruction set computer (RISC) operations (ROPs), the CISC instructions including branch instructions and associated branch prediction information, integer CISC instructions that map into integer ROPs and floating point instructions that map into floating point ROPs; storing a plurality of instruction blocks including CISC instruction bytes and predecode bits; prefetching and predecoding stored instruction bytes; aligning the inconsistent byte-aligned CISC instructions into an aligned instruction stream; mapping aligned CISC instructions into a corresponding sequence of RISC-like operations (ROPs) in parallel using a plurality of decoders including a decoder of a first type for decoding simple CISC instructions and decoder of a second type for decoding complex CISC instructions; dispatching a plurality of ROPs per microprocessor cycle; performing a speculative branch prediction operation; transmitting integer ROPs and floating point ROPs; within an integer functional unit receiving the dispatched integer ROPs, holding the dispatched integer ROPs awaiting execution, executing the integer ROPs and generating speculative results resulting from the integer ROP execution; within a floating point functional unit receiving the dispatched floating point ROPs, holding the dispatched floating point ROPs awaiting execution, executing the floating point ROPs and generating speculative results resulting from the floating point ROP execution; sharing a common reorder buffer between the integer functional unit and the floating point functional unit to store speculative results in common storage elements; within the common reorder buffer, renaming registers, issuing multiple instructions in a single cycle, retiring multiple instructions in a single cycle, and retiring speculative results generated by both the integer functional unit and the floating point functional unit, the speculative results which become non-speculative results by virtue of being in a correctly predicted branch; discarding speculative results in mispredicted branches; and storing retired non-speculative results as part of an architectural state.
Claim 18
Independent Claim
350 words
A method of operating a superscalar complex instruction set computer (CISC) microprocessor having a variable byte length instruction format, the method comprising the steps of: supplying a source of CISC instructions having a variable byte-length instruction format in which the CISC instructions are stored with an inconsistent byte alignment within an instruction memory including CISC instructions that map into reduced instruction set computer (RISC) operations (ROPs), the CISC instructions including branch instructions and associated branch prediction information, integer CISC instructions that map into integer ROPs and floating point instructions that map into floating point ROPs; storing a plurality of instruction blocks including CISC instruction bytes and predecode bits; prefetching and predecoding stored instruction bytes; aligning the inconsistent byte-aligned CISC instructions into an aligned instruction stream; mapping aligned CISC instructions into a corresponding sequence of RISC-like operations (ROPs) in parallel using a plurality of decoders including a decoder of a first type for decoding simple CISC instructions and decoder of a second type for decoding complex CISC instructions; dispatching a plurality of ROPs per microprocessor cycle; performing a speculative branch prediction operation; transmitting integer ROPs and floating point ROPs; within an integer functional unit receiving the dispatched integer ROPs, holding the dispatched integer ROPs awaiting execution, executing the integer ROPs and generating speculative results resulting from the integer ROP execution; within a floating point functional unit receiving the dispatched floating point ROPs, holding the dispatched floating point ROPs awaiting execution, executing the floating point ROPs and generating speculative results resulting from the floating point ROP execution; sharing a common reorder buffer between the integer functional unit and the floating point functional unit to store speculative results in common storage elements; within the common reorder buffer, renaming registers, issuing multiple instructions in a single cycle, retiring multiple instructions in a single cycle, and retiring speculative results generated by both the integer functional unit and the floating point functional unit, the speculative results which become non-speculative results by virtue of being in a correctly predicted branch; discarding speculative results in mispredicted branches; and storing retired non-speculative results as part of an architectural state.
Claim 19
Dependent Claim
55 words
A method according to claim 15 wherein: the first-type instruction decoder for decoding simple CISC instructions includes combinatorial logic; and the second-type instruction decoder for decoding complex CISC instructions includes a memory for storing an ROP instruction sequence and a memory controller for generating an entrypoint into the memory in accordance with a CISC opcode.
Claim 20
Dependent Claim
56 words
A method according to claim 15 wherein: the first-type instruction decoder for decoding simple CISC instructions includes programmable array logic; and the second-type instruction decoder for decoding complex CISC instructions includes a memory for storing an ROP instruction sequence and a memory controller for generating an entrypoint into the memory in accordance with a CISC opcode.
Claim 21
Dependent Claim
29 words
A method according to claim 15 wherein the mapping step maps CISC instructions into ROPs having a form which includes an opcode, two source operands and one destination operand.
Claim 22
Dependent Claim
26 words
A method according to claim 15 wherein the mapping step maps CISC instructions using a plurality of instruction decoders which form a plurality of conversion pathways.
Claim 23
Dependent Claim
55 words
A method according to claim 19 wherein: the plurality of instruction decoders include a plurality of first-type instruction decoders for decoding simple CISC instructions and a plurality of second-type instruction decoders for decoding complex CISC instructions; and a pathway of the plurality of conversion pathways includes a first-type instruction decoder and a second-type instruction decoder.