System and method of retiring misaligned write operands from a write buffer
First Claim
1. A microprocessor having a data path of predetermined length that defines a memory block boundary, comprising:
- (a) core means for executing a plurality of write instructions to produce a plurality of write operands, each write operand including a data field and an address field;
(b) misalignment control means, coupled to the core means, for indicating if any of the address fields of the plurality of write operands are misaligned with respect to the memory block boundary;
(c) write buffer means having a plurality of entries, coupled to the core means and the misalignment control means, for temporarily storing the plurality of write operands and responsive to the misalignment control means indicating a misaligned write operand, for allocating a first and a second write buffer entry, wherein the address field of the first write buffer entry contains a beginning address in a first memory block for the misaligned write operand and the address field of the second write buffer entry contains a continuation address in a second memory block for the misaligned write operand; and
, (d) memory means having a plurality of data field entries, coupled to the write buffer means, for storing the data fields of the plurality of write operands.
5 Assignments
0 Petitions
Accused Products
Abstract
A superscalar superpipelined microprocessor having a write buffer located between the core and cache is disclosed. The write buffer is controlled to store the results of write operations to memory until such time as the cache becomes available, such as when no high-priority reads are to be performed. The write buffer includes multiple entries that are split into two circular buffer sections for facilitating the interaction with the two pipelines of the core; cross-dependency tables are provided for each write buffer entry to ensure that the data is written from the write buffer to memory in program order, considering the possibility of prior data present in the opposite section. Non-cacheable reads form memory are also ordered in program order with the writing of data from the write buffer. Features for handling speculative execution, detecting and handling data dependencies and exceptions, and performing special write functions (misaligned writes and gathered writes) are also disclosed.
103 Citations
14 Claims
-
1. A microprocessor having a data path of predetermined length that defines a memory block boundary, comprising:
-
(a) core means for executing a plurality of write instructions to produce a plurality of write operands, each write operand including a data field and an address field;
(b) misalignment control means, coupled to the core means, for indicating if any of the address fields of the plurality of write operands are misaligned with respect to the memory block boundary;
(c) write buffer means having a plurality of entries, coupled to the core means and the misalignment control means, for temporarily storing the plurality of write operands and responsive to the misalignment control means indicating a misaligned write operand, for allocating a first and a second write buffer entry, wherein the address field of the first write buffer entry contains a beginning address in a first memory block for the misaligned write operand and the address field of the second write buffer entry contains a continuation address in a second memory block for the misaligned write operand; and
,(d) memory means having a plurality of data field entries, coupled to the write buffer means, for storing the data fields of the plurality of write operands. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A microprocessor having a data path of predetermined length that defines a memory block boundary, comprising:
-
(a) a core for executing a plurality of write instructions to produce a plurality of write operands, each write operand including a data field and an address field;
(b) misalignment control circuitry, coupled to the core, to indicate if any of the address fields of plurality of write operands are misaligned with respect to the memory block boundary;
(c) a write buffer having a plurality of entries, coupled to the core and the misalignment control circuitry, to temporarily store the plurality of write operands and responsive to the misalignment control circuitry indicating a misaligned write operand, allocating a first and a second write buffer entry, wherein the address field of the first write buffer entry contains a beginning address in a first memory block for the misaligned write operand and the address field of the second write buffer entry contains a continuation address in a second memory block; and
,(d) memory having a plurality of data field entries coupled to the write buffer. - View Dependent Claims (7, 8, 9, 10)
-
-
11. In a microprocessor having a core, a data path having a width of N bytes, a write buffer with a plurality of entries, and a memory, a method of retiring misaligned write operands from the write buffer to the memory comprising the steps of:
-
(a) executing a plurality of write instructions to produce a plurality of write operands, each write operand including a data field and an address field;
(b) indicating if any of the address fields of the plurality of write operands are misaligned with respect to the memory block boundary;
(c) responsive to step (b), allocating a first and a second write buffer entry, wherein the address field of the first write buffer entry contains a beginning address in a first memory block for the misaligned write operand and the address field of the second write buffer entry contains a continuation address in a second memory block; and
,(d) storing the plurality of write operands to memory. - View Dependent Claims (12, 13, 14)
(i) adding an operand size to the beginning address of each write operand to form a sum; and
,(ii) determining whether a carry occurs into an Nth bit of the sum, wherein 2N defines a width of the data path in bytes.
-
-
14. The method of claim 11 wherein the continuation address of a misaligned write operand in step (c) is calculating by adding the operand size to the beginning address of the misaligned write operand to form a sum and setting N least significant bits to zero.
Specification