Patent ID: 6035392
Filing Date: 2000-03-07
Classification: G06F

Abstract:
A computer for executing programs and having a structure for fetching instructions and/or operands along a path which may not be taken by a process being executed by a computer processor having a hierarchical memory structure with data being loaded into cache lines of a cache in the structure, said computer comprising: a central processor with processing logic, a hierarchical memory structure including at least a first level of cache organized to bring lines of data into the cache from the memory structure in response to requests for data from the processing logic, decoding and computational logic for fetching instructions, decoding instructions, fetching operands, computing results, saving results computed internally, storing results to storage, and storing logic elements for processing stores to said first level cache including storing logic for passing store data from said decoding and computational logic to the first level cache and for passing said store data on to other storage,operational logic for making fetches for both instructions and operands on behalf of the decoding and computational logic including: (a) a operand fetching element which makes operand fetches on behalf of said decoding and computational logic along a main path being followed by a decoding process of a computation being performed in accordance with a program being executed with said structure, and (b) a plurality of instruction fetching elements which each fetch instructions along a single path of sequential addresses including sequential addresses identified during said decoding process as being along said main path, and in addition, instructions fetches along other paths including fetches that the computer did not choose to follow for decoding and instruction fetches at a target address of a branch which is not expected to be taken but to which a branch history table predicts branches will go; priority logic for receiving a requests sent from said operational logic as output signals, which requests include a request signal which indicates that a request is wanted, signals which qualify a request, and the address for a fetch; said priority logic determining which request is to be sent to the first level cache, and signals back to a requesting operational logic element that it has been sent; said first level cache then processing and responding to the request by indicating that either: (i) the data is in the first level cache, (ii) the data is not in the first level cache, or (iii) the request is rejected as the first level cache is busy; said plurality of instruction fetching elements having a coupling to said priority logic for returning to said priority logic block line signals causing said priority logic to send to said first level cache a block line fetch signal, wherein when an instruction fetching element is making a request and is operating along a hedge fetching path for which cache line fetches are not to be performed it turns on its block line fetch signal along with the request, and when said priority logic selects a request to send to said first level cache from one of said instructions fetching elements, if it has an on block line signal, it provides a signal for turning on the block line signal to the first level cache to change the first level cache processing of the request; said decoding and computational logic providing to each of said instruction fetching elements signals which inform whether the instruction fetching element is operating along a path where line fetches should be blocked and which control whether block line fetch signals actions take place to determine which paths cause line fetches to be blocked, and wherein the determination of which fetches are marked by a selected hedge fetch signal which accompanies each fetch request to the cache to identify whether a line should be loaded if it misses the cache to indicate a selected hedge fetch when this signal is ON, is determined by the setting of latches which control which fetches are so treated, and the determination of which latches are set is determined by testing combinations of fetches treated this way to determine which performs best.