Partition of on-chip memory buffer for cache
AssigneeInternational Business Machines Corporation
InventorDavid Arnold Luick
Life of this patent
Estimating the term…
Abstract
A data cache is constructed with the same dimensions as for a conventional n-way associative cache, but is constructed as an (n−1)-way associative cache, so that one associative column of the cache is left unused, although the cache has the same memory array size as a typical n-way associative cache. The extra column of data in the cache is organized as an independent logical translation look-aside buffer (TLB) that is n-way associative. Thus, there is no separate TLB array for the cache, rather, the TLB is contained within the data cache array. In this way, the cache can be implemented with a single chip, and can be of relatively large size, on the order of 8 MB or more.
Claims12
A computer system comprising:
- at least one central processor unit;
- a main memory;
- a first cache at a first cache level for use by said at least one central processing unit, said first cache comprising a translation lookaside buffer (TLB) and a first cache memory array;
- and
- a second cache at a second cache level for use by said at least one central processing unit, said second cache level being higher than said first cache level, said second cache comprising a second cache memory array and second cache control logic, said second cache memory array being an array of n columns and m rows, wherein a first portion of said second cache memory array having n−p of said n columns is used for storing data and a second portion of said second cache memory array having p of said n columns is used for storing pairs of virtual address portions and real address portions for at least some data in the first portion of said second cache memory array, wherein (n−2)≧p≧1, said first and second portions of the second cache memory array being disjoint;
- wherein said second cache control logic receives at least a portion of a virtual address generated by said central processor unit and receives output of said translation lookaside buffer comprising at least a portion of a real address corresponding to said virtual address;
- wherein if a virtual address generated by said central processor unit is contained in said translation lookaside buffer, said second level cache control logic selects an entry in said first portion of said second cache memory array using said at least a portion of a virtual address generated by said central processor unit and said output of said translation lookaside buffer;
- wherein if a virtual address generated by said central processor unit is not contained in said translation lookaside buffer, said second level cache control logic selects an entry in said second portion of said second cache memory array using said at least a portion of a virtual address generated by said central processor unit to obtain an address pair comprising a virtual address portion and a real address portion, and subsequently selects an entry in said first portion of said second cache memory array using said at least a portion of a virtual address generated by said central processor unit and said real address portion obtained from said second portion of said second cache memory array.
A method of operating a computer system having at least one central processor unit, a main memory, a translation lookaside buffer, a first cache at a first level, d and a second cache at a second level higher than said first level, said second cache comprising a second cache memory array and second cache control logic, said second cache memory array being an array of n columns and m rows, wherein a first portion of said second cache memory array having n−p of said n columns is used for storing data and a second portion of said second cache memory array having p of said n columns is used for storing address pairs, each address pair comprising a virtual address portion and a real address portion, for at least some data in the first portion of said second cache memory array, wherein (n−2)≧p≧1, said first and second portions of the second cache memory array being disjoint, said method comprising the steps of:
- generating a virtual address for a data reference with said CPU;
- accessing said translation lookaside buffer to translate said virtual address to a real address;
- if an entry corresponding to said virtual address is contained in said translation lookaside buffer, then translating said virtual address for a data reference to a real address for the data reference using said translation lookaside buffer, and accessing an entry in said first portion of said second cache, using said real address translated using said translation lookaside buffer;
- and
- if an entry corresponding to said virtual address is not contained in said translation lookaside buffer, then accessing said second portion of said second cache to translate said virtual address for a data reference to a real address for the data reference, and subsequently using said real address translated using said second portion of said second cache to access an entry in said first portion of said second cache.
Dependencies are inferred from the claim text.