Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache
First Claim
1. A method for prefetching, comprising:
- storing an address which misses an instruction cache in an address buffer;
initiating an external request for instruction bytes stored at said address;
receiving said instruction bytes into an instruction data buffer;
predecoding said instruction bytes; and
retaining said instruction bytes in said instruction data buffer until completion of said predecoding, even if said predecoding is interrupted.
3 Assignments
0 Petitions
Accused Products
Abstract
A microprocessor is configured to speculatively fetch cache lines of instruction bytes prior to actually detecting a cache miss for the cache lines of instruction bytes. The bytes transferred from an external main memory subsystem are stored into one of several prefetch buffers. Subsequently, instruction fetches may be detected which hit the prefetch buffers. Furthermore, predecode data may be generated for the instruction bytes stored in the prefetch buffers. When a fetch hit in the prefetch buffers is detected, predecode data may be available for the instructions being fetched. The prefetch buffers may each comprise an address prefetch buffer included within an external interface unit and an instruction data prefetch buffer included within a prefetch/predecode unit. The external interface unit maintains the addresses of cache lines assigned to the prefetch buffers in the address prefetch buffers. Both the linear address and the physical address of each cache line is maintained. The prefetch/predecode unit receives instruction bytes directly from the external interface and stores the instruction bytes in the corresponding instruction data prefetch buffer.
82 Citations
19 Claims
-
1. A method for prefetching, comprising:
-
storing an address which misses an instruction cache in an address buffer; initiating an external request for instruction bytes stored at said address; receiving said instruction bytes into an instruction data buffer; predecoding said instruction bytes; and retaining said instruction bytes in said instruction data buffer until completion of said predecoding, even if said predecoding is interrupted. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. An instruction buffer for storing instructions prior to their storage in an instruction cache of a microprocessor, comprising:
-
an address buffer configured to store an address corresponding to a plurality of instruction bytes; an instruction data buffer configured to store said plurality of instruction bytes, wherein said instruction data buffer is coupled to receive said plurality of instruction bytes from a source external to said microprocessor; a control unit coupled to said instruction data buffer, wherein said control unit is configured to retain said plurality of instruction bytes within said instruction data buffer if an instruction fetching mechanism within said microprocessor initiates an instruction fetch for a second address dissimilar from said address stored in said address buffer; and a second control unit coupled to said address buffer, wherein said second control unit is coupled to receive a fetch address from said instruction cache, and wherein said instruction cache is concurrently searching for instruction bytes corresponding to said fetch address. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A microprocessor comprising:
-
an instruction cache configured to store instructions; a prefetch/predecode unit coupled to receive a plurality of instruction bytes from an external source in response to a fetch miss in said instruction cache, wherein said prefetch/predecode unit is configured to retain said plurality of instruction bytes if said instruction cache fetches an address indicative of another plurality of instruction bytes; and an external interface unit coupled to said instruction cache and said prefetch/predecode unit, wherein said external interface unit is configured to store an address corresponding to said plurality of instruction bytes and to compare said address to a fetch address being concurrently searched within said instruction cache, and wherein said prefetch/predecode unit conveys said plurality of instruction bytes to an instruction processing pipeline of said microprocessor if said address matches said fetch address. - View Dependent Claims (17, 18, 19)
-
Specification