Variable length cache fill
AssigneeApollo Computer, Inc.
InventorsPaul Mageau, John S. Yates
Life of this patent
Estimating the term…
Abstract
A method and apparatus for selectively filling a cache memory with a variable number of data words in response to the size and type of data transfer requested by the processor associated with the cache. According to the present invention a cache fill of either 16 or 64 bytes are provided. If there is a cache miss and an 8 byte word data transfer as requested, the larger fill is provided, similarly, if the 8 byte word data transfer is not requested, the shorter block of data is provided, resulting in enhanced performance over a fixed length cache fill.
Claims10
A method of selectively receiving and storing data blocks of selected lengths of data from a main memory, into a cache memory said method comprising the steps of:
- requesting a transfer of data between a processor and a cache memory, the data having a corresponding indicia and at least one of a first and a second length;
- determining if said indicia corresponding to the data to be transferred indicates the presence of the data in said cache;
- determining if a virtual address transferred with the data corresponds to a physical main memory location that is an integer multiple of a given number of bytes, if said data is not present in said cache;
- selectively transferring from said main memory to said cache a data block of one of a third and a fourth length in response to determining if said virtual address transferred with the data corresponds to a physical main memory location that is an integer multiple of said given number of bytes, wherein
- said second length is greater than said first length,
- said fourth length is greater than said third length,
- said third length is a higher multiple of said second length, and
- said data block of said fourth length is transferred into said cache memory if data of said second length is requested and if said virtual address transferred with the data corresponds to a physical main memory location that is an integer multiple of said given number of bytes.
Apparatus for selectively loading data to a cache memory from an associated main memory, comprising
- computer means for requesting a selected length data transfer with said cache said selected length data transfer being one of a first and a second number of bytes;
- means for determining the presence of said selected length data in said cache;
- means for determining if a virtual address transferred with the data corresponds to a physical main memory location that is an integer multiple of a given number of bytes;
- means for selectively transferring a data block from said associated main memory to said cache if said selected length data is not in said cache, said data block being transferred to said cache having one of a third and a fourth length, wherein
- said second length is greater than said first length,
- said fourth length is greater than said third length,
- said third length is a higher multiple of said second length,
- said fourth length of data is selectively transferred if said second length is requested and is not present in said cache and if said virtual address transferred with the data corresponds to a physical main memory location that is an integer multiple of said given number of bytes.
Apparatus for selectively receiving and storing from a main memory into a cache memory, data of at least one of a first block size and a second block size, said apparatus comprising:
- means for requesting a transfer of data between a processor and a cache memory, the requested data being of one of a first data length and a second data length;
- means for determining that the requested data is of said first data length;
- means for determining that the requested data is of said second data length;
- means for determining that the data of said first data length and alternatively of said second data length does not reside in said cache memory;
- longfill means for determining that a first address transferred with the data of said second data length is an integer multiple of a number of bytes of said second block size;
- means for loading from main memory into cache memory a data block of said first block size in response to said means for determining that the requested data is of said first data length and alternatively in response to said means for determining that the requested data is of said second data length and in response to said longfill means;
- and
- means for loading from main memory into cache memory a data block of said second block size in response to said means for determining that the requested data is of said second data length and in response to said longfill means.
Dependencies are inferred from the claim text.