Modulization of cache structure utilizing independent tag array and data array in microprocessor
First Claim
1. A microprocessor, comprising:
- a data array in a cache of the microprocessor, the data array directly interfaced with one or more data index queues, wherein;
upon detection of a conflict between a plurality of instructions issued from an input queue requesting access to the data array, at least one data index associated with at least one of the instructions is stored into the one or more data index queues,the at least one data index is kept in the one or more data index queues until after removal of the conflict, andupon the removal of the conflict, the data array is accessed based on the at least one data index stored in the one or more data index queues;
a tag array in the cache accessed by the instructions prior to the detection of the conflict, the tag array interfaced with a tag queue that stores tag entries from the tag array, The tag entries associated with data outputs read from the data array in response to accessing the data array when executing the instruction, the tag entries being kept in the tag queue until after the removal of the conflict, the input queue directly communicating with the tag queue to prevent overflowing of the tag queue when the tag entries associated with the instructions are being kept in the tag queue; and
circuitry in the cache couple to the data array and the tag array, the circuitry configured, upon the removal of the conflict, to initiate resending the at least one of the instructions from the input queue without re-accessing the tag array and the one or more data index queues for storing the at least one data index.
1 Assignment
0 Petitions
Accused Products
Abstract
Embodiments of the present disclosure support implementation of a Level-1 (L1) cache in a microprocessor based on independently accessed data and tag arrays. Presented implementations of L1 cache do not require any stall pipeline mechanism for stalling execution of instructions, leading to improved microprocessor performance. A data array in the cache is interfaced with one or more data index queues that comprise, upon occurrence of a conflict between at least one instruction requesting access to the data array and at least one other instruction that accessed the data array, at least one data index for accessing the data array associated with the at least one instruction. A tag array in the cache is interfaced with a tag queue that stores one or more tag entries associated with one or more data outputs read from the data array based on accessing the data array.
-
Citations
19 Claims
-
1. A microprocessor, comprising:
-
a data array in a cache of the microprocessor, the data array directly interfaced with one or more data index queues, wherein; upon detection of a conflict between a plurality of instructions issued from an input queue requesting access to the data array, at least one data index associated with at least one of the instructions is stored into the one or more data index queues, the at least one data index is kept in the one or more data index queues until after removal of the conflict, and upon the removal of the conflict, the data array is accessed based on the at least one data index stored in the one or more data index queues; a tag array in the cache accessed by the instructions prior to the detection of the conflict, the tag array interfaced with a tag queue that stores tag entries from the tag array, The tag entries associated with data outputs read from the data array in response to accessing the data array when executing the instruction, the tag entries being kept in the tag queue until after the removal of the conflict, the input queue directly communicating with the tag queue to prevent overflowing of the tag queue when the tag entries associated with the instructions are being kept in the tag queue; and circuitry in the cache couple to the data array and the tag array, the circuitry configured, upon the removal of the conflict, to initiate resending the at least one of the instructions from the input queue without re-accessing the tag array and the one or more data index queues for storing the at least one data index. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method executed by a microprocessor, comprising:
-
issuing, from an input queue, one or more instructions per clock cycle for accessing a data array in a cache of the microprocessor, the data array directly interfaced with one or more data index queues; upon detection of a conflict between a plurality of instructions issued from the input queue requesting access to the data array, storing at least one data index associated with at least one of the instructions into the one or more data index queues; keeping the at least one data index in the one or more data index queues until after removal of the conflict; upon the removal of the conflict, accessing the data array based on the at least one data index stored in the one or more data index queues; accessing, by the instructions prior to the detection of the conflict, a tag array in the cache interfaced with a ta queue; storing, in the tag queue based on accessing the tag array, tag entries from the tag array, The tag entries associated with data outputs read from the data array in response to accessing the data array when executing the instructions; keeping the tag entries in the tag queue until after the removal of the conflict communicating, by the input queue, directly with the tag queue to prevent overflowing of the tag queue when the tag entries associated with the instructions are being kept in the tag queue; and upon the removal of the conflict, resending the at least one of the instructions from the input queue without re-accessing the tag array and the one or more data index queues for storing the at least one data index. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19)
-
Specification