Instruction pre-fetching of a cache line within a processor
AssigneeInternational Business Machines Corporation
InventorsKevin Arthur Chiarot, Michael John Mayfield, Era Kasturia Nangia, Milford John Peterson
Life of this patent
Estimating the term…
Abstract
An apparatus for fetching data from a main memory into a primary cache memory of a processor. Instruction fetch requests are generated by the processor and assigned a priority level according to the predicted accuracy of the fetch request. The priority levels of different fetch requests are compared and the highest priority level fetch request is serviced first. An instruction cache line address N+1 is pre-fetched if there is a cache miss in the primary cache memory on address N+1.
Claims24
A processor comprising:
- a primary cache memory associated with said processor;
- next address circuitry for generating a next instruction cache line address N associated with a pending cache line of instructions being executed by said processor;
- pre-fetch address circuitry for generating a pre-fetch instruction cache line address N+1 sequential to said next instruction cache line address N, wherein address N+1 is associated with a next cache line subsequent to cache line N;
- first address request circuitry for generating a next address request and accessing said next instruction cache line address N in said primary cache memory;
- second address request circuitry for generating a pre-fetch address request and accessing said pre-fetch instruction cache line address N+1 in said primary cache memory;
- and
- arbitration circuitry for receiving said next address request and said pre-fetch address request and sending said next address request to a subsequent level memory if said next address request resulted in a cache miss in said primary cache memory and sending said pre-fetch address request to said subsequent level memory if said pre-fetch address request resulted in a cache miss in said primary cache memory, wherein said next address circuitry assigns a first selected one of at least one higher priority state to said next address request, said first selected higher priority state being determined by previous executions of said pending cache line of instructions, and wherein said pre-fetch address circuitry assigns a lowest priority state to said pre-fetch address request.
A data processing system comprising:
- a processor;
- a primary cache memory associated with said processor;
- a secondary cache memory associated with said processor;
- a main memory;
- next address circuitry for generating a next instruction cache line address N associated with a pending cache line of instructions being executed by said processor;
- pre-fetch address circuitry for generating a pre-fetch instruction cache line address N+1 sequential to said next instruction cache line address N;
- first address request circuitry for generating a next address request and accessing said next instruction cache line address N in said primary cache memory;
- second address request circuitry for generating a pre-fetch address request and accessing said pre-fetch address cache line address N+1 in said primary cache memory;
- and
- arbitration circuitry for receiving said next address request and said pre-fetch address request and sending said next address request to said secondary cache memory or said main memory if said next address request resulted in a cache miss in said primary memory and sending said pre-fetch address request to said secondary cache memory or said main memory if said pre-fetch address request resulted in a cache miss in said primary cache memory, wherein said first address request circuitry assigns a selected one of at least one higher priority state to said next address request, where said selected higher priority state is determined by previous executions of said pending cache line of instructions, and said second address request circuitry assigns a lowest priority state to said pre-fetch address request.
In a data processing system comprising a processor, a primary cache memory associated with the processor, a secondary cache memory associated with said processor, and a main memory, a method of fetching cache lines of instructions from the secondary cache memory or the main memory into the primary cache comprising the steps of:
- generating a next instruction cache line address N associated with a pending cache line of instructions being executed by the processor;
- generating a pre-fetch instruction cache line address N+1 sequential to the next instruction cache line address N;
- generating a next address request operable to access the next instruction cache line address N in the primary cache memory;
- generating a pre-fetch address request operable to access the pre-fetch instruction cache line address N+1 in the primary cache;
- sending the next address request to the secondary cache memory or the main memory if the next address request resulted in a cache miss in the primary cache memory;
- and
- sending the pre-fetch address request to the secondary cache memory or the main memory if the pre-fetch address request resulted in a cache miss in the primary cache memory, wherein said step of generating a next address request assigns a selected one of at least one higher priority state to said next address request, where said selected higher priority state is determined by previous executions of said pending cache line of instructions, and said step of generating a pre-fetch address request assigns a lowest priority state to said pre-fetch address request.
Dependencies are inferred from the claim text.