WO2011049051A1 - キャッシュメモリおよびその制御方法 - Google Patents

キャッシュメモリおよびその制御方法 Download PDF

Info

Publication number
WO2011049051A1
WO2011049051A1 PCT/JP2010/068298 JP2010068298W WO2011049051A1 WO 2011049051 A1 WO2011049051 A1 WO 2011049051A1 JP 2010068298 W JP2010068298 W JP 2010068298W WO 2011049051 A1 WO2011049051 A1 WO 2011049051A1
Authority
WO
WIPO (PCT)
Prior art keywords
address
data
subtag
generation
cam
Prior art date
Application number
PCT/JP2010/068298
Other languages
English (en)
French (fr)
Inventor
翔 岡部
公輝 阿部
Original Assignee
国立大学法人電気通信大学
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 国立大学法人電気通信大学 filed Critical 国立大学法人電気通信大学
Priority to JP2011537244A priority Critical patent/JP5622155B2/ja
Priority to EP10824900.4A priority patent/EP2492818A4/en
Priority to US13/503,225 priority patent/US8904111B2/en
Publication of WO2011049051A1 publication Critical patent/WO2011049051A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention relates to a cache memory and a control method thereof, and more particularly, to a cache memory and a control method thereof that can be operated with low power without reducing performance.
  • a cache memory has become indispensable for absorbing a performance difference between a CPU (Central Processing Unit) and a main memory and executing processing smoothly.
  • CPU Central Processing Unit
  • a cache memory is used to hide the delay or low bandwidth of the main memory, bus, etc. when a processing device such as a CPU acquires or updates information such as data and instructions, and to fill the performance difference between the processing device and the storage device. This is a high-speed small-capacity memory to be used.
  • the cache memory is intended to solve this from the viewpoint of the storage hierarchy, and is generally configured between a main storage device (main memory) and a processing device such as a CPU.
  • FIG. 1 As a conventional cache memory configuration, a 4-way set associative system shown in FIG. 1 is known.
  • the cache memory is composed of 4 ways (associative degree 4) SRAM (Static Random Access Memory), an index address is set for each way, and a tag address is provided for each index address. Data is stored in association with this tag.
  • each way is managed by being distinguished by 2-bit identification information of 00, 01, 10, and 11.
  • the address is composed of a tag address and an index address as shown in the upper part of FIG. That is, in FIG. 1, when one index address is specified, four tags are specified.
  • the way is the number of tag addresses that can be designated by the same index address, and is also referred to as association.
  • the cache memory of FIG. 1 when the CPU designates an address and requests data reading, first, the data is specified based on the index address among the addresses. In the case of FIG. 1, since it is composed of four ways, the tag address of each of the four ways is specified for the same index address by specifying the index address, so that four read data Candidates are identified.
  • the tag address information of the address specified by the CPU is compared with the tag address of each way, the comparison result is output, and four data specified by the tag address are read out simultaneously.
  • the cache memory does not have the data requested by the CPU (cache miss), so the cache memory reads the data at the requested address from the main memory. In addition to being supplied to the CPU, the data read at the earliest timing is overwritten and updated.
  • FIG. 2 shows the configuration of this highly associative cache memory.
  • the high associative cache memory in FIG. 2 is a 32-way high associative cache memory having a line size of 32 bytes and a capacity of 8 KB.
  • the high associative cache memory of FIG. 2 by dividing into 8 subbanks (each 1 KB) corresponding to the above-mentioned index address, one request from the CPU (hereinafter also referred to as cache access) is 1 By reducing the power consumption of other subbanks by activating only the subbanks, power reduction is achieved.
  • the index address information among the addresses is decoded by a decoder and supplied to the sub-bank to be cached.
  • the tag address information is supplied to the CAM that manages the tag address in the activated bank.
  • the CAM searches for all ways based on the supplied tag address. In one active subbank, the CAM compares the tag addresses in parallel for all the ways, and only the data stored corresponding to the matched tag addresses is output from the SRAM.
  • the tag address when the tag address is composed of 24 bits, as shown in FIG. 3, the tag address (hereinafter also simply referred to as a tag) is divided into two sub tag addresses (hereinafter simply referred to as a sub tag) of an upper bit and a lower bit. It is a technique to categorize.
  • the tag address configuration (a) of FIG. 3 the conventional high associative cache includes all tag addresses managed by the CAM (hereinafter also referred to as CAM tags).
  • CAM tags all tag addresses managed by the CAM
  • the sub tag address of the lower s bits of the tag address is managed by the CAM (hereinafter also referred to as CAM sub tag address or CAM sub tag)
  • the sub tag address of the upper bits is managed by the SRAM (hereinafter also referred to as SRAM sub tag address or SRAM sub tag). For example, when the number of ways is 32, s ⁇ 5 bits or more are required to distinguish each line.
  • a partial comparison search with the CAM sub tag address is first performed. If the search cannot be performed at this time (if a miss occurs), a cache miss occurs.
  • a comparison search with the SRAM sub tag address is performed for the hit line. More specifically, a partial comparison search with the CAM sub tag address is performed in the first half clock, and a partial comparison search by the SRAM sub tag address is performed on the line specified by the CAM sub tag address in the second half clock. At the same time, data is read out.
  • Comparative Example a in FIG. 4 when the address is “101000”, the CAM sub tag is “1000”, and the SRAM sub tag is “10”, the cache memory (not shown) is used as a CAM sub tag. , “1111”, “0101”, and “1000” are registered, and the SRAM subtags are registered as “11”, “10”, and “10” in association with them. That is, in the comparative example a, data corresponding to the addresses “111111”, “100101”, and “101000” are stored in a cache memory (not shown).
  • the CAM sub tag of the input address (input address) is used, and the CAM sub tag in the cache memory is partially compared and searched, so that it is surrounded by a circle in the figure. Since the search is performed on the assumption that “1000” in the third row matches, a cache hit occurs. For this reason, the SRAM sub tag “10” registered in association with the CAM sub tag “1000” is compared with the SRAM sub tag of the input address, but matches, so that the simultaneously read data is read to the CPU. become.
  • Comparative Example b of FIG. 4 when the address is “100000”, the CAM sub tag is “0000”, and the SRAM sub tag is “10”, the cache memory (not shown) includes Assume that “1111”, “0101”, and “1000” are registered as subtags, and the SRAM subtags are registered as “11”, “10”, and “10” in association with them. . That is, in the comparative example b, data corresponding to the addresses “111111”, “100101”, and “101000” are stored in a cache memory (not shown).
  • the CAM sub tag of the input address is used and the CAM sub tag in the cache memory is compared and searched, so that “0000” is searched but there is no matching CAM sub tag. That is, in this case, a cache miss occurs.
  • the CAM sub tag has 4 ways, and in the comparative example b in FIG. Therefore, the data corresponding to the address “100000” is read from the main memory and supplied to the CPU. As shown in the comparative example c in FIG. The CAM sub tag “0000” is registered in the way, and the SRAM sub tag “10” is registered in association with the way, and the data read from the main memory now is registered.
  • the CAM sub tag of the input address is used, and the CAM sub tag in the cache memory is compared and searched, so that “1000” is searched for and the same as shown in a circle in the figure. Things are searched.
  • the SRAM sub tag of the input address and the searched SRAM sub tag “10” are compared and searched, but they do not match as indicated by the crosses in the figure. That is, in this case, a cache miss occurs.
  • the SRAM sub tag “00” is registered in duplicate for the CAM sub tag “1000”. That is, the same CAM subtag “1000” is registered in duplicate, and SRAM subtags “10” and “00” are respectively registered.
  • LPHAC Least Recently Used
  • the hit data is as described above. Squeezed to one.
  • the missed data is set as the data to be replaced (the data is replaced with newly read data and disappears). .
  • the number of bits of the CAM sub tag s ⁇ 5 bits, it is possible to prevent a match with a plurality of data by partial comparison search of the CAM sub tag.
  • the hit data is narrowed down to one by making the missed data the target data to be replaced.
  • a replacement method different from the LRU method must be taken, and even data that has been accessed relatively recently may be lost by replacement, resulting in a decrease in the hit rate. It was the cause.
  • the LPHAC method has a limit in reducing the CAM portion with a large power consumption, and there is a limit in reducing the power consumption.
  • the present invention has been made in view of such a situation. In particular, it is possible to reduce power consumption without reducing the hit rate of a cache memory.
  • the cache memory has a CAM (Content Addressable Memory) and an SRAM (Static Random Access Memory) having an association degree n (n is a natural number), and from a connected CPU (Central Processing Unit)
  • a cache memory in which a tag address consisting of a first subtag address and a second subtag address is designated and corresponding data is stored or read out, and at least the latest read is requested according to the time when the data is requested to be read.
  • the first generation is classified into the second generation that has been requested to be read at a non-recent time, the first subtag address is managed in the CAM, and the second subtag address is managed in the SRAM. And a plurality of second subtag addresses are allowed to be associated with the same first subtag address.
  • the cache memory includes a CAM (Content Addressable Memory) and an SRAM (Static Random Access Memory) having an association degree n (n is a natural number), and a connected CPU (Central Processing Unit).
  • a cache memory in which a tag address consisting of a first subtag address and a second subtag address is designated and corresponding data is stored or read out, and at least the latest read is requested according to the time when the data is requested to be read.
  • the first subtag address is managed by the generation management means for classifying the generated first generation and the second generation requested to be read at a non-recent time, and the CAM, and is designated by the CPU.
  • the first search means for searching for the corresponding first sub tag address by comparing the tag address with the first sub tag address
  • the second subtag address is managed, the first subtag address searched by the first search means is included, and the tag address corresponding to the first generation data is compared with the second subtag address.
  • the second search means corresponds to the second generation data when the corresponding second sub tag address cannot be searched by comparing the second tag address corresponding to the first generation data with the second sub tag address.
  • the corresponding second sub tag address can be searched by comparing the tag address with the second sub tag address.
  • the main memory to be connected Data corresponding to the tag address requested to be read is read, and the oldest read data among the second generation data managed by the generation management means is read from the main memory. It is possible to further include replacement means for replacing the first subtag address and the second subtag address together with the data.
  • the replacement unit may allow a plurality of the second subtag addresses to be associated and replaced with one first subtag address.
  • the generation management means determines whether the data is the first generation or the second generation based on the time when each data managed by the second sub tag address is read. When the oldest read data is replaced with the data managed from the management list and read from the main memory by the replacement means, the data managed by the second sub tag address is read It is possible to delete the data read out the oldest and update the generation management list with the data read out from the main memory as the latest read out time.
  • the generation management means sets the most recently read data as the first generation data for each piece of data managed by the second subtag address, and is read at a time not recently.
  • the generated data can be managed as second generation data.
  • the association degree n is the association degree 32 and the tag address is 24 bits
  • the first subtag address can be 2 bits and the second subtag address can be 22 bits.
  • the first generation data may be the data in the second highest order in the order of the most recently read time. it can.
  • the processor according to the present invention includes a plurality of the cache memory according to any one of claims 1 to 8, the CPU, and the CPU, when reading or writing of data specified by the tag address is requested, First sub tag address extracting means for extracting the first sub tag address from the tag address, and when reading or writing of data designated by the tag address is requested by the CPU, the second address from the tag address. And a second sub tag address extracting means for extracting the sub tag address.
  • a cache memory control method includes a CAM (Content Addressable Memory) and an SRAM (Static Random Access Memory) having an association degree n (n is a natural number), and a connected CPU (Central Processing) Unit) is a cache memory control method in which a tag address consisting of a first subtag address and a second subtag address is designated, and corresponding data is stored or read out, and the data is read according to the time when the read is requested, At least a generation management step of classifying the first generation that has been requested to be read recently and a second generation that has been requested to be read at a time that is not recent; and the CAM manages the first subtag address, A first search for searching for a corresponding first subtag address by comparing the tag address designated by the CPU with a first subtag address.
  • a second search step for searching for a corresponding second subtag address by comparison with the second subtag address, and the second subtag address stored in association with the second subtag address searched by the processing of the second search step An output step of outputting data, wherein a plurality of the second subtag addresses are allowed to be associated with the same first subtag address.
  • a CAM Content Addressable Memory
  • SRAM Static Random Access Memory having an association degree n (n is a natural number) and a CPU (Central Processing Unit)
  • a tag address consisting of a sub tag address and a second sub tag address is designated, and corresponding data is stored or read out, and at least the first generation in which the data has been requested to be read at least recently according to the time when the data is requested to be read.
  • the second generation requested to be read at a time not recently the first subtag address is managed in the CAM, the second subtag address is managed in the SRAM, and the same. It is permitted to associate a plurality of the second subtag addresses with the first subtag address.
  • a CAM Content Addressable Memory having an association degree n (n is a natural number) and an SRAM (Static Random Access Memory) are first selected from a connected CPU (Central Processing Unit).
  • a cache memory in which a tag address consisting of a sub tag address and a second sub tag address is designated, and corresponding data is stored or read out, and at least the data is requested to be read at least recently according to the time when the data is requested to be read.
  • the first generation is classified into the first generation and the second generation requested to be read at a time not recent, the first sub tag address is managed by the CAM, and the first of the tag addresses specified by the CPU By comparing with the subtag address, the corresponding first subtag address is searched, and the second subtag address is managed and detected by the SRAM.
  • the searched first subtag address is included, and the corresponding second subtag address is searched by comparing with the second subtag address of the tag address corresponding to the first generation data.
  • the data stored in association with the second subtag address is output, and it is permitted to associate a plurality of the second subtag addresses with the same first subtag address.
  • FIG. 5 is a functional block diagram showing a configuration example of an embodiment of functions realized by a cache memory to which the present invention is applied.
  • a CPU (Central Processing Unit) 11 supplies an address of an instruction to be executed from the program counter to the address input unit 12 when executing various processes, requests data from the cache memory 13 and acquires and executes the data. To do.
  • CPU Central Processing Unit
  • the address input unit 12 supplies the index address to the decoding unit 41 of the cache memory 13, and among the tag addresses, the CAM (Content Addressable Memory) subtag address is cache memory. 13 to the CAM 51 and an SRAM (StaticStatRandom Access Memory) subtag address to the SRAM 52. More specifically, the address input unit 12 includes an index address extraction unit 21 and a tag address extraction unit 22. The index address extraction unit 21 extracts an index address from the input address, and supplies the extracted index address to the decoding unit 41.
  • the tag address extraction unit 22 further includes a CAM sub tag address extraction unit 22a and an SRAM sub tag address extraction unit 22b.
  • the CAM sub tag address extracting unit 22a extracts the lower s bits as the CAM sub tag address and supplies the CAM 51 to each sub bank 42 in the cache memory 13.
  • the SRAM subtag address extracting unit 22b extracts the upper (Xs) bits other than the CAM subtag address from the tag addresses included in the input address as the SRAM subtag, and extracts the SRAM 52 of each subbank 42 in the cache memory 13. To supply.
  • the cache memory 13 includes a decoding unit 41 and a sub bank 42.
  • the decoding unit 41 analyzes the index address supplied from the address input unit 12, determines which subbank 42 is to be activated, and supplies a signal instructing activation to the subbank 42 to be activated.
  • FIG. 5 only one subbank 42 is shown for convenience in order to show the configuration of the subbanks 42, but actually, a plurality of subbanks 42 are provided. That is, the relationship between the decoding unit 41 and the sub-bank 42 is the same as the configuration shown in FIG. 2, and only the sub-bank to which the activation instruction signal is supplied from the decoding unit 41 is turned on. Only the sub-bank 42 in the on state executes processing based on the tag address information.
  • the sub bank 42 includes a CAM 51, an SRAM 52, an LRU management unit 53, a reading unit 54, and a replacement unit 55.
  • the CAM 51 starts the operation based on the activation instruction signal supplied from the decoding unit 41, and based on the CAM sub tag address supplied from the CAM sub tag address extraction unit 22a, the data of the address specified by the CPU 11 is stored. A candidate is searched, and the search result is supplied to the SRAM 52 as a hit flag.
  • the SRAM 52 searches the data designated by the address by the CPU 11 based on the hit flag information from the CAM 51 and the SRAM subtag address, and outputs the data to the CPU 11 when the data can be retrieved. In addition, when the data designated by the address by the CPU 11 cannot be retrieved, the SRAM 52 accesses the main memory 14, reads the data, supplies it to the CPU 11, replaces it with the oldest data, and newly stores it.
  • the SRAM 52 includes a comparison search unit 71, an output unit 72, a rewrite unit 73, a replacement unit 55 generation management unit 74, a rewrite management unit 75, a write unit 76, a rewrite unit 77, and a storage unit 78.
  • the comparison search unit 71 controls the generation determination unit 81 to first select only the first generation in the first process from among the data candidates to be searched that are specified by the hit flag information from the CAM 51. Make it specific.
  • the generation referred to here is managed by the generation management unit 74, and is, for example, the top two in the order set by the date and time when each data stored in the storage unit 78 of the SRAM 52 was recently accessed.
  • the data up to this point is set as the first generation, and the data of the lower rank is set as the second generation. That is, recently accessed data with a relatively high possibility of being read is set as the first generation, and other data is set as the second generation.
  • the top two places are set as the first generation
  • other data may be set as the second generation.
  • the comparison search unit 71 controls the generation determination unit 81 in the first process, and the first generation data classified as the latest among the data candidates requested to be read specified by the address by the CPU 11. To identify. Then, the comparison search unit 71 receives the SRAM subtag address of each of the data candidates specified by the address searched with the CAM subtag address specified as the first generation, and the SRAM subtag address extraction unit 22b. A search is performed by comparing the supplied SRAM sub tag address, and if a match is found, the searched data is supplied to the output unit 72.
  • the output unit 72 When the output unit 72 acquires the retrieved data, the output unit 72 supplies it as requested data specified by the address by the CPU 11. In addition, if the candidate SRAM subtag address of the data specified by the address searched with the CAM subtag specified as the first generation cannot match the extracted SRAM subtag address, the comparison is made.
  • the search unit 71 compares the SRAM subtag address of the second generation data and the SRAM subtag address supplied from the SRAM subtag address extraction unit 22b, which has not been determined as the first generation by the generation determination unit 81. If a match is found, the retrieved data is supplied to the output unit 72 to the CPU 11.
  • the comparison search unit 71 reads the corresponding data from the main memory 14 together with the CAM sub tag address information and the SRAM sub tag address information.
  • the reading unit 54 is notified.
  • the reading unit 54 specifies a tag address based on the information of the CAM sub tag address and the SRAM sub tag address, accesses the main memory 14, reads data corresponding to the tag address, supplies the data to the CPU 11, and supplies the CAM 51.
  • the CAM sub tag, the SRAM sub tag, and the data itself of the read data are supplied to the SRAM 52 and the replacement unit 55.
  • the write-back unit 73 replaces the data stored in the storage unit 78 of the SRAM 52 and updates it when the data to be managed by the subbank 42 is updated. Data corresponding to the main memory 14 is written back.
  • the replacement unit 55 cannot detect the information of the tag address designated by the instruction from the CPU 11, and when the data is read from the main memory 14, the data previously stored with the new data and the tag address. And update the tag address.
  • the writing unit 76 rewrites the data stored in the storage unit 78 with the data that is the processing result from the CPU 11.
  • the rewriting unit 77 accesses the main memory before the writing unit 76 rewrites the data stored in the storage unit 78 with the data that is the processing result from the CPU 11. Rewrite data.
  • LRU management unit 53 The details of the LRU management unit 53, the generation management unit 74, and the write-back management unit 75 will be described together with a data management structure described later.
  • Each line L in FIG. 6 includes a CAM subtag address, an SRAM subtag address, data, access date / time information, generation information, and a write-back flag from the left, and shows information managed in units of data. .
  • the number of lines L corresponds to the number of ways determined by the physical configuration of the CAM 51 and the SRAM 52, and the example of FIG. 6 shows that the number of lines is an example of 32 ways. However, since the number of ways is determined by the hardware configuration, the number of ways can be various depending on the hardware configuration. For example, 2, 4, 8, 16, 32, etc. However, the number of ways other than this may be used.
  • tag addresses for specifying each data are shown in two columns on the left side of FIG. That is, by specifying the CAM sub tag address and the SRAM sub tag address, the data of the tag address designated by the CPU 11 is retrieved.
  • the access date / time information is information managed in data units (line units) by the LRU management list 53a of the LRU (Least-Recently-Used) management unit 53. That is, the LRU (Least Recently Used) management unit 53 includes an LRU management list 53a, which is displayed on the LRU management list 53a in units of data (in units of lines) on the right side of the data string in FIG. Recently accessed access date / time information is managed in data units (line units). That is, the LRU management unit 53 updates the LRU management list 53a each time the SRAM 52 is accessed, and manages information on access date and time for each data (each line) in FIG. Although not shown in FIG. 6, the LRU management unit 53 sorts the lines in the order of the most recently accessed date based on the information in the LRU management list 53a, and obtains the rank for each line.
  • the generation information is information managed in data units (line units) by the generation management list 74a of the generation management unit 74. That is, the generation management unit 74 includes a generation management list 74a, accesses the LRU management list 53a of the LRU management unit 53, and stores the generation management list 74a based on the date order information for each recently accessed line. A flag indicating that it is first generation data is set in the data up to the top two most recently accessed in line units, and other data is the first generation to indicate that it is second generation data. Management is performed so that no flag is set.
  • the writeback flag is information managed in data units (line units) by the writeback management list 75a of the writeback management unit 75.
  • the write-back management unit 75 includes a write-back management list 75a.
  • the main part of the write-back management unit 75 first updates the data in the SRAM 52 every time the data is updated. Since the data in the memory 14 needs to be written back and updated, data that needs to be written back is flagged and managed. That is, the write-back management unit 75 updates the write-back management list 75a depending on whether or not it is a write process, and manages the write-back flag for each data (each line) in FIG.
  • step S1 the CPU 11 acquires the address of an instruction to be executed from a program counter (not shown) and supplies it to the address input unit 12. With this process, the address input unit 12 receives an input of an address from the CPU 11.
  • the index address extraction unit 21 extracts an index address from the input address.
  • the tag address extraction unit 22 extracts a tag address from the input address and supplies the tag address to the CAM sub tag address extraction unit 22a and the SRAM sub tag address extraction unit 22b.
  • the CAM sub tag address extraction unit 22 a extracts the lower s bits of the tag address as a CAM sub tag address and supplies the extracted s bit to the CAM 51 of each sub bank 42 in the cache memory 13.
  • the SRAM subtag address extracting unit 22b extracts the upper (Xs) bits other than the CAM subtag address from the tag address as the SRAM subtag address, and supplies it to the SRAM 52 of each subbank 42 in the cache memory 13.
  • step S ⁇ b> 2 the cache memory 13 executes instruction cache processing, reads data corresponding to the address input to the CPU 11, and supplies the data to the CPU 11.
  • step S21 the cache memory 13 designates one of the subbanks 42 and executes a cache hit miss determination process.
  • step S41 the index address extracting unit 21 supplies the extracted index address to the decoding unit 41.
  • the decoding unit 41 analyzes the index address, identifies a subbank 42 for executing cache hit miss processing from the analysis result, and supplies a signal for instructing activation to the identified subbank 42. As a result of this processing, the sub-bank 42 instructed to start up starts receiving power supply. On the other hand, the subbanks 42 that are not instructed to be activated are not activated, and as a result, the power consumption of the subbanks 42 that are not required to be processed is reduced.
  • step S42 the CAM 51 compares the CAM tag address supplied from the CAM sub tag address extracting unit 22a of the tag address extracting unit 22 with the CAM tag address registered in association with the data managed in the SRAM 52. Then, it is determined whether or not a matching item is searched.
  • the CAM tag address of the line L0 is “0001”
  • the line L1 is “0101”
  • the line L2 is “1001”
  • the line L3 is “ 0000 ”
  • line L4 is“ 1001 ”
  • line L5 is“ 0001 ”
  • line L6 is“ 0010 ”
  • line L28 is“ 0001 ”
  • line L29 is“ 0111 ”.
  • the line L30 is “1001” and the line L31 is “1000”
  • the CAM sub tag address extracted from the input address is “1001”
  • the CAM 51 is the CAM of all the lines L.
  • step S42 the CAM 51 is registered in association with the CAM tag address supplied from the CAM sub tag address extracting unit 22a of the tag address extracting unit 22 and the data managed in the SRAM 52. It is determined that there is a match with the existing CAM tag address, and the process proceeds to step S43.
  • the CAM subtag address, SRAM subtag address, data, and generation information are shown in association with each other in the vertical direction for each line L from the left.
  • the generation information in FIG. 10 indicates that only the lines L2, L3, and L29 are the first generation (1st) and the other lines are the second generation (2nd).
  • step S43 the CAM 51 sets a hit flag for the matched line L and supplies it to the SRAM 52 as information indicating the matched CAM tag address and the matched line L.
  • the comparison search unit 71 of the SRAM 52 acquires the matched CAM tag address and line L information. That is, in the left part of FIG. 10, hit flags are attached to the lines L2, L4, and L30.
  • the comparison search unit 71 controls the generation determination unit 81 to search the information on the first generation line L as the comparison target line L among the lines L having the same CAM tag address. For example, in the case of the left part of FIG. 10, since only the data of the line L2 is set to the first generation, only the line L2 is searched. Further, the comparison search unit 71 is supplied from the SRAM subtag address extraction unit 22b and the SRAM subtag address of the line L2 of the first generation among the lines L whose searched CAM tag addresses match. The SRAM sub tag address is compared, and the data managed by the line L2 to be compared is output from the storage unit 78 to the comparison detection unit 71.
  • step S44 the comparison / search unit 71 compares the SRAM subtag address of the first generation line L to be compared with the SRAM subtag address supplied from the SRAM subtag address extraction unit 22b, and matches. Search whether there is. For example, in the case of the left part of FIG. 10, since only the data of the line L2 is searched, the SRAM subtag data of the line L2 is compared with the SRAM subtag address supplied from the SRAM subtag address extracting unit 22b.
  • step S44 for example, as indicated by “hit” in the left part of FIG. 10, if both of the SRAM subtag addresses match, in step S45, the comparison search unit 71 recognizes that the cache hit has occurred, and matches.
  • the data output from the storage unit 78 corresponding to the SRAM sub tag address is supplied to the output unit 72.
  • the comparison search unit 71 controls the generation determination unit 81 in step S46 to select the second generation line among the lines L with the matching CAM tag address.
  • the information of L is searched as a line L to be compared. For example, as shown in the right part of FIG. 10, only the data of the lines L4 and L30 are searched as the second generation data (line L).
  • the comparison search unit 71 supplies the SRAM sub tag address of the second generation, that is, the line L to be compared, among the lines L with the matched CAM tag addresses, and the SRAM sub tag address extraction unit 22b.
  • the SRAM sub tag address thus compared is compared, and the data managed by the line L to be compared is output from the storage unit 78 to the comparison detection unit 71.
  • step S47 the comparison / search unit 71 compares the SRAM subtag address of the second generation line L to be compared with the SRAM subtag address supplied from the SRAM subtag address extraction unit 22b, and matches them. Search whether there is. For example, in the case of the right part of FIG. 10, since the searched data is the data of the lines L4 and L30, the SRAM subtag data of the lines L4 and L30 and the SRAM subtag address supplied from the SRAM subtag address extracting unit 22b Are compared.
  • step S47 for example, as shown in the right part of FIG. 10 as “hit” in the line L30, if both match, the comparison search unit 71 recognizes that there is a cache hit and matches in step S45.
  • the data output from the storage unit 78 corresponding to the SRAM sub tag address is supplied to the output unit 72. That is, in this case, both data of the lines L4 and L30 are output from the storage unit 78 to the comparison and retrieval unit 71.
  • the comparison search unit 71 supplies only the data of the line L30 to the output unit 72 and also the line L4. Discard data. In this way, the comparison search unit 71 supplies only the hit data to the output unit 72 and discards the data that caused the cache miss.
  • step S42 if there is no match with the CAM sub tag address in step S42, or, for example, the SRAM tag address to be compared does not match the SRAM sub tag address supplied from the SRAM sub tag address extraction unit 22b in step S47.
  • step S48 the comparison and retrieval unit 71 recognizes that the data corresponding to the address supplied from the CPU 11 is not stored in the storage unit 78, that is, a cache miss, and the process ends. .
  • a line to be compared is searched with the CAM subtag address, and if there is a match, first, of the lines with the same CAM subtag address, only the first generation line is to be compared.
  • a search is performed with the SRAM sub tag address, and if they match, it is determined that there is a cache hit.
  • the second of the lines with the same CAM subtag address is searched. Searched for lines to compare generations by SRAM subtag address.
  • step S22 the comparison / search unit 71 determines whether or not there is a cache hit.
  • step S22 for example, in the case of a cache hit by the process in step S45 described above, the process proceeds to step S23.
  • step S23 the output unit 72 supplies the data supplied from the comparison and search unit 71 to the CPU 11.
  • step S24 the comparison detection unit 71 supplies the CAM sub tag address and the SRAM sub tag address of the data (line) supplied to the output unit 72, and notifies the LRU management unit 53 that the corresponding data has been accessed.
  • the LRU management unit 53 updates the LRU management list 53a based on information indicating that there has been access. More specifically, the LRU management unit 53 obtains the information on the date and time when the data of the CAM sub tag address and the SRAM sub tag address, which have been notified as having been accessed, from among the information in the LRU management list 53a, was read recently. And the order of the read date and time is updated to the first place.
  • the date and time information is managed using the date and time information as they are, it may be necessary to manage an enormous amount of data.
  • the date information is not handled as it is. For example, in the case of 32 ways, only the data order is managed by using a 5-bit counter bit. Good.
  • step S25 the generation management unit 74 requests and acquires the LRU management list 53a from the LRU management unit 53. Then, the generation management unit 74 updates the generation information in the generation management list 74a to the first generation for the top two lines in the LRU management list 53a, and also sets the second generation information for the other lines. Update to generation.
  • step S22 determines whether it is a cache hit, that is, a cache miss. If it is determined in step S22 that it is not a cache hit, that is, a cache miss, the process proceeds to step S26.
  • step S26 the comparison search unit 71 instructs the reading unit 54 to read from the main memory 14 because the data specified by the address from the CPU 11 does not exist, and supplies the CAM sub tag address and the SRAM sub tag address. To do.
  • the reading unit 54 specifies a tag address based on the CAM subtag address and the SRAM subtag address, accesses the main memory 14 to read out the data, and reads the data, as well as the CAM 51, the comparison search unit 71, and the replacement unit 55. To supply.
  • step S27 the replacement unit 55 requests and acquires the LRU management list 53a from the LRU management unit 53. Then, the replacement unit 55 searches the LRU management list 53a for the lowest line, that is, the oldest data and the tag address, and replaces the data and the tag address supplied from the read unit 54 with the CAM 51. And the information in the storage unit 78 of the SRAM 52 is updated.
  • the access date and time of the LRU management list 53a is updated for the data instructed to be read by the CPU 11, and the order set according to the date and time is sequentially updated.
  • the generation management list 74a in the generation management unit 74 can be updated together with the update of the LRU management list 53a, and the generation information can be updated according to the recently accessed date and time.
  • the replacement unit 55 performs processing so as to recognize that data in which a plurality of different SRAM sub tag addresses are duplicated in the storage unit 78 is replaced for the same CAM sub tag address.
  • the data stored in the storage unit 78 does not reduce the SRAM subtag address to 1 with respect to the same CAM subtag address, and the recently accessed data is surely determined according to the LRU method. Since the data is stored after being replaced, it is possible to suppress a decrease in the cache hit rate as seen in the LPHAC method.
  • step S2 When the instruction cache processing is completed in step S2, the CPU 11 designates a register operand to be used in step S3.
  • step S4 the CPU 11 executes processing such as calculation, calculation, or comparison corresponding to an instruction including data supplied from the cache memory 13.
  • step S5 the CPU 11 determines whether or not the instruction being executed is a store instruction. In step S5, for example, if the instruction being executed is a store instruction, the process proceeds to step S6.
  • step S6 the CPU 11 designates an address to the cache memory 13 in the same manner as in step S1, and instructs data cache processing.
  • the address input unit 12 supplies the index address, the CAM subtag address, and the SRAM subtag address to the cache memory 13 according to the input address.
  • the cache memory 13 executes a data cache (write) process based on the index address, the CAM subtag address, and the SRAM subtag address.
  • step S62 for example, if there is a cache hit, the process proceeds to step S63.
  • step S63 the comparison search unit 71 supplies the information (CAM sub tag address and SRAM sub tag address information) searched for as a cache hit to the rewrite management unit 75 and the writing unit 76. Then, in accordance with the write instruction from the CPU 11, the writing unit 76 writes operation result data in the storage unit 78 in association with the searched CAM subtag address and the line specified by the SRAM subtag address.
  • step S64 the write-back management unit 75 updates the write-back management list 75a by turning on the write-back flag of the line specified by the CAM subtag address and the SRAM subtag address. Record that the line is a write-back target.
  • step S62 if it is not a cache hit in step S62, that is, if it is a cache miss, the process proceeds to step S67.
  • step S67 the comparison search unit 71 supplies information indicating that a cache miss has occurred to the rewrite unit 77.
  • the rewriting unit 77 accesses the main memory 14 and rewrites the data of the tag address specified by the CAM sub tag address and the SRAM sub tag address with the data supplied from the CPU 11.
  • step S68 the write-back unit 73 requests and acquires the LRU management list 53a and the write-back management list 75a from the LRU management unit 53 and the write-back management unit 75, respectively. Then, the write-back unit 73 searches the LRU management list 53a for the lowest line, that is, the oldest line, and further checks the oldest line with the write-back management list 75a, and the write-back flag is set. It is determined whether or not it is on. In step S68, for example, when the write-back flag of the lowermost line, that is, the line to be replaced that is the oldest data is on and is to be written back, the process proceeds to step S69.
  • step S69 the write-back unit 73 accesses the main memory 14, and the write-back flag of the lowest line, that is, the line to be replaced with the oldest data is turned on. Data is written back to the main memory 14.
  • step S68 when the write-back flag of the line to be replaced that is the oldest data is not turned on but turned off, and the line is not a write-back target line, the process of step S69 is skipped.
  • step S70 the replacement unit 55 requests and acquires the LRU management list 53a from the LRU management unit 53. Then, the replacement unit 55 searches for the lowest line in the LRU management list 53a, that is, the oldest data and the tag address, and replaces the data with the tag address supplied from the CPU 11 to replace the CAM 51 and the SRAM 52. The information in the storage unit 78 is updated.
  • the data cache of the write data is managed. Therefore, only the write data with high access frequency is managed in the cache memory 13, and other data is sequentially written back to the main memory 14.
  • step S6 When the data cache (write) process is completed by the process of step S6, the program execution process ends.
  • step S5 determines whether or not the instruction being executed is a store instruction.
  • step S7 the CPU 11 determines whether or not the instruction being executed is a load instruction. In step S7, for example, if the instruction being executed is a load instruction, the process proceeds to step S8.
  • step S8 the CPU 11 designates an address to the cache memory 13 in the same manner as in step S1, and instructs data cache processing.
  • the address input unit 12 supplies the index address, the CAM subtag address, and the SRAM subtag address to the cache memory 13 according to the input address.
  • the cache memory 13 executes data cache (read) processing based on the index address, CAM subtag address, and SRAM subtag address.
  • step S8 when the data cache (reading) process ends, in step S9, the CPU 11 writes the processing result in a register file (not shown), and ends the process.
  • step S10 the CPU 11 writes the processing result in a register file (not shown), updates a program counter (not shown), and ends the process.
  • a part of the tag address is set as the SRAM sub tag address and managed by the SRAM 52, and the first generation data accessed recently is preferentially searched. .
  • the data stored in association with the search of the SRAM 52 is associated with the search.
  • the cache hit rate is increased. It is possible to reduce power consumption without reducing.
  • the error rate for each program is the number of bits s of the CAM sub tag address when the conventional 4-way SRAM, 8-way SRAM, 32-way CAM, and 24-bit tag address are 24 bits from the left.
  • the LPHAC method with 5,8,9,11 and an example of the present invention (s 4) (shown in black).
  • the miss rate of the instruction cache is higher in the LPHAC method than in the conventional CAM.
  • the miss rate is remarkably high. This is probably because the search can be performed (hit) by the comparative search of the CAM sub tag address, but the search cannot be performed (miss) by the comparative search of the SRAM tag address in many cases.
  • the miss rate in many benchmark programs is close to that of the conventional CAM, but the miss rate is large in rijndael d and qsort.
  • the number of bits of the CAM subtag address s 5, 8, 9, 11, they are 0.75%, 0.43%, 0.43%, and 0.42%, respectively.
  • the hit cache line is not narrowed down to one, so the LRU method can always be adopted, thereby suppressing the decrease in the hit rate. be able to. Also, unlike the LPHAC method, the error rate of a specific benchmark is not greatly affected by the size of the number of bits s of the CAM abtag address.
  • the conventional CAM and the cache memory of the present invention are 10.7% and 8.6% respectively for the instruction cache and 11.6% and 5.0% average miss rates for the data cache, respectively, compared to the 4 and 8-way conventional SRAM. Is small.
  • Etag ECAM + ESRAM (2)
  • ECAM and ESRAM in equation (2) are expressed by the following equations (3) and (4).
  • ECAM ⁇ ⁇ w ⁇ s ⁇ NC (3)
  • ESRAM (ts-s) x (NS1 + NS2) (4)
  • is the power consumption required for 1-bit detection of the CAM 51
  • w is the number of ways
  • s is the number of bits in the CAM subtag address
  • t is the number of bits in the tag address
  • NC is the number of accesses to the CAM.
  • NS1 represents the number of accesses to the SRAM data managed as the first generation
  • NS2 represents the number of accesses to the SRAM data managed as the second generation.
  • Edata ⁇ ⁇ l ⁇ (NS1 + NS2) (5)
  • represents the power consumption required for outputting one bit of SRAM data
  • l represents the data bit length per line.
  • the left part is instruction cache processing
  • the right part is data cache processing.
  • the solid line and the one-dot chain line represent the power consumption amount Etag required for tag address detection
  • the dotted line and the two-dot chain line represent the power consumption amount Edata required for data output.
  • the power consumption amount Etag required for tag address detection is based on the amount of power required for SRAM tag address 1-bit detection.
  • the power consumption amount Edata required for data output is based on the amount of power required for outputting 1-bit SRAM data.
  • One line is 256 bits.
  • the miss rate increases, so the number of bits of the CAM sub tag address s ⁇ 8, whereas in the cache memory of the present invention, the bits of the CAM sub tag address The number s ⁇ 8 is possible.
  • the power consumption Etag required for tag address detection decreases linearly when the number of bits s of the CAM subtag address is reduced.
  • the power consumption Edata required for data output increases sharply below a certain value when the number of bits s of the CAM sub tag address is reduced.
  • both the power consumption amount Etag required for tag address detection and the power consumption amount Edata required for data output have values similar to the cache memory of the present invention, but the number of bits s of the CAM sub tag address can be reduced. difficult.
  • the relationship between the power consumption amount Etag required for detecting the tag address indicated by the dotted line and the number of ways r of the power consumption amount Edata required for the data output indicated by the solid line is shown.
  • the minimum value of the power consumption appears depending on the value of the number of ways r.
  • the number of ways r is small, the number of comparison searches with the data set for the second generation increases, and when the number of ways r is large, the first generation appears. This is because the frequency of multiple comparison searches increases with the set data.
  • the conventional SRAM, CAM, and LPHAC methods and the power consumption of the cache memory of the present invention are compared.
  • the line size is 32 bytes and the cache capacity is 8 KB.
  • the conventional CAM shows that the power consumption is the highest compared to either case.
  • the LPHAC method can reduce power consumption compared to conventional CAM.
  • the cache memory of the present invention is smaller than both the conventional CAM and the LPHAC method regardless of ⁇ .
  • the cache memory of the present invention can reduce power consumption while suppressing a decrease in the cache miss rate.
  • the steps for describing a program are executed in parallel or individually even if not necessarily time-sequentially processed, as well as processes performed in time-sequentially according to the described order. It includes processing.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

 本発明は、キャッシュヒット率を低減させることなく、電力消費を低減させることができるキャッシュメモリおよびその制御方法に関する。 CAMサブタグアドレス抽出部22aは、タグアドレスよりCAMサブタグアドレスを抽出する。SRAMサブタグアドレス抽出部22bは、タグアドレスよりSRAMサブタグアドレスを抽出する。CAM51は、CAMサブタグアドレス同士の比較によりデータを検索する。比較検索部71は、検索されたタグアドレスのデータのうち、最近読み出された第1世代のデータについて、抽出されたSRAMサブタグアドレスと、SRAMに格納されたSRAMサブタグアドレスとの比較によりデータを検索する。出力部72は、比較検索部71により検索された、SRAMサブタグアドレスに対応付けて記憶されている第1世代のデータを要求に対する応答として出力する。本発明は、キャッシュメモリに適用することができる。

Description

キャッシュメモリおよびその制御方法
 本発明は、キャッシュメモリおよびその制御方法に関し、特に、性能を低減させること無く、低電力で動作できるようにしたキャッシュメモリおよびその制御方法に関する。
 近年、パーソナルコンピュータなどの情報処理装置において、CPU(Central Processing Unit)とメインメモリとの性能差を吸収し、処理を円滑に実行させるものとしてキャッシュメモリが欠かせない存在となっている。
 キャッシュメモリとは、CPUなど処理装置がデータや命令などの情報を取得または更新する際にメインメモリやバスなどの遅延または低帯域を隠蔽化させ、処理装置と記憶装置の性能差を埋めるために用いる高速小容量メモリである。
 コンピュータは以前から記憶装置の性能が処理装置の性能に追いつけず、この差が全体性能に対するボトルネックとされてきた(ノイマンズ・ボトルネック)。そして、ムーアの法則に基づく処理装置の加速度的な高性能化により現在ではますますこの差が拡大されている。キャッシュメモリは、記憶階層の観点からこれを解消しようとするものであり、一般に、主記憶装置(メインメモリ)とCPUなど処理装置との間に構成される。
 従来のキャッシュメモリの構成として、図1で示される4ウェイセットアソシアティブ方式のものが知られている。
 図1の場合、キャッシュメモリは、4ウェイ(連想度4)のSRAM(Static Random Access Memory)から構成されており、各ウェイ毎に、インデックスアドレスが設定され、そのインデックスアドレス毎にタグアドレスが設けられており、このタグに対応付けてデータが記憶されている。図1においては、各ウェイは、00,01,10,11の2ビットの識別情報で区別されて管理されている。また、アドレスは、図1の上部で示されるように、タグアドレスとインデックスアドレスから構成されている。すなわち、図1においては、1個のインデックスアドレスが特定されると、4個のタグが特定される。ここで、ウェイとは、同一のインデックスアドレスにより指定できるタグアドレスの数のことであり、連想度とも言う。
 図1のキャッシュメモリの場合、CPUがアドレスを指定して、データの読み出しを要求すると、まず、アドレスのうち、インデックスアドレスに基づいてデータが特定される。図1の場合、4ウェイで構成されているため、インデックスアドレスが特定されることにより、同一のインデックスアドレスに対して、4個の各ウェイのタグアドレスが指定されるため、4個の読み出しデータの候補が特定される。
 次に、CPUにより指定されたアドレスのうちのタグアドレスの情報と、各ウェイのタグアドレスとを比較し、比較結果を出力すると共に、タグアドレスで指定される4個のデータが同時に読み出される。この結果、一致するタグアドレスが存在した場合、キャッシュメモリには、CPUから要求されたデータが存在する(キャッシュヒットする)ことになる。そこで、出力された4個のデータのうち、同一のタグアドレスで管理されていたデータのみがCPUに供給され、その他のデータは破棄される。一方、同一のタグアドレスがない場合、キャッシュメモリには、CPUから要求されたデータが存在しない(キャッシュミスする)ことになるので、キャッシュメモリは、要求されたアドレスのデータをメインメモリより読み出して、CPUに供給すると共に、最も前のタイミングで読み出されたデータに上書き更新する。
 しかしながら、この手法では、アドレスのうちインデックスアドレスで特定できるのはウェイ数分の候補だけであり、さらに、この中で必要とされるデータは0または1であることから、インデックスアドレスで特定されたデータが、仮に用いられても、(ウェイ数-1)個分のミスが発生することとなる。SRAMは、読み出しの際に消費される電力が大きいため、ミスを低減させない限り消費電力の低減を期待できない。このため、インデックスアドレスで特定されるデータの個数、つまり、ウェイ数を減らさない限り消費電力を低減させることができない。しかしながら、ウェイ数が減れば、キャッシュヒット率は低減することとなるため、性能を低減させる一因となってしまう。
 そこで、このように1のインデックスアドレスで特定されるデータ数に起因するミスを低減させるために、CAM(Content Addressable Memory)を用いた高連想度キャッシュメモリが提案されている。
 図2は、この高連想度キャッシュメモリの構成を示している。図2の高連想度キャッシュメモリは、ラインサイズが32bytesであり、容量が8KBとなる32ウェイの高連想度キャッシュメモリである。図2の高連想度キャッシュメモリにおいては、上述したインデックスアドレスに対応する8個のサブバンク(各1KB)に区切ることにより、1回のCPUからの要求(以下キャッシュアクセスとも称する)に対して、1のサブバンクだけをアクティブにし、他のサブバンクの電力消費を低減することで、電力削減が図られている。
 すなわち、アドレスのうちインデックスアドレスの情報がデコーダ(decorder)によりデコードされて、キャッシュアクセスすべきサブバンクに供給される。これにより、特定されたサブバンクのみがアクティブにされ、アクティブにされたバンクにおける、タグアドレスを管理するCAMにタグアドレスの情報を供給する。CAMは、供給されたタグアドレスに基づいて、全ウェイについて検索する。そして、アクティブな1個のサブバンクにおいては、CAMにより全ウェイに対して並列にタグアドレスとの比較が行われ、一致したタグアドレスに対応して格納されているデータだけがSRAMより出力される。
 しかしながら、CAMを駆動させる場合、各ウェイについて全てのタグアドレスとの比較が実行されるため、1回のCPUからの読み出しに対して、連想度分のCAMが駆動されることにより電力消費が大きいという問題があった。
 そこで、この問題を解決させるために、いくつかの手法が提案されているが、その中にLPHAC(Low Power Highly Associa-tive Cache)法と呼ばれるものがある(非特許文献1参照)。
 LPHAC法は、タグアドレスが24ビットで構成される場合、図3で示されるように、タグアドレス(以下、単にタグとも称する)を上位ビットと下位ビットの2つのサブタグアドレス(以下、単にサブタグとも称する)に分ける手法である。従来の高連想度キャッシュでは、図3のタグアドレス構成(a)で示されるように、全てCAMで管理するタグアドレス(以下、CAMタグとも称する)で構成されている。これに対し、LPHAC法では、図3のタグアドレス構成(b)で示されるように、タグアドレスの下位sビットのサブタグアドレスをCAMで管理し(以下、CAMサブタグアドレスまたはCAMサブタグとも称する)、上位ビット(この例では24-sビット)のサブタグアドレスをSRAMで管理する(以下、SRAMサブタグアドレスまたはSRAMサブタグとも称する)。例えば、ウェイ数が32の場合、各ラインを区別するにはs≧5ビット以上必要となる。
 動作は、はじめにCAMサブタグアドレスとの部分的な比較検索が行われ、このときに検索できなければ(ミスすれば)キャッシュミスとなる。非特許文献1によれば、s=8のとき、CAMサブタグアドレスとの部分的な比較検索のみでキャッシュミスの85%が判明するといわれている。そして、CAMサブタグアドレスでヒットした場合は、ヒットしたラインに対してSRAMサブタグアドレスとの比較検索が行われる。より詳細には、最初の半クロックでCAMサブタグアドレスとの部分的な比較検索が行われ、後半の半クロックで、CAMサブタグアドレスで特定されたラインについて、SRAMサブタグアドレスによる部分的な比較検索が行われ、同時に、データが読み出される。
 ここで、図4を参照して、具体的な比較検索例を参照して説明する。尚、図4においては、説明の便宜上、アドレスが、6ビットからなる場合の比較検索例について説明する。
 まず、図4の比較例aで示されるように、アドレスが「101000」であって、CAMサブタグが「1000」、およびSRAMサブタグが「10」である場合、図示せぬキャッシュメモリにCAMサブタグとして、「1111」、「0101」、および「1000」が登録されており、それらに対応付けて、SRAMサブタグが「11」、「10」、および「10」として登録されているものとする。すなわち、比較例aにおいては、アドレス「111111」,「100101」,「101000」に対応するデータが図示せぬキャッシュメモリに記憶されている。
 比較例aの場合、入力されたアドレス(入力アドレス)のCAMサブタグが用いられて、キャッシュメモリ内のCAMサブタグが部分的に比較検索されることにより、図中丸印で囲まれて示されるように、3段目の「1000」が一致するものとして検索されることになるので、キャッシュヒットとなる。このため、CAMサブタグ「1000」に対応付けて登録されているSRAMサブタグ「10」と、入力アドレスのSRAMサブタグと比較検索されるが一致するので、同時に読み出されたデータがCPUに読み出されることになる。
 また、図4の比較例bで示されるように、アドレスが「100000」であって、CAMサブタグが「0000」、およびSRAMサブタグが「10」である場合、図示せぬキャッシュメモリには、CAMサブタグとして、「1111」、「0101」、および「1000」が登録されており、それらに対応付けて、SRAMサブタグが「11」、「10」、および「10」として登録されているものとする。すなわち、比較例bにおいては、アドレス「111111」,「100101」,「101000」に対応するデータが図示せぬキャッシュメモリに記憶されている。
 比較例bの場合、まず、入力アドレスのCAMサブタグが用いられて、キャッシュメモリ内のCAMサブタグが比較検索されることにより、「0000」が検索されるが一致するCAMサブタグがない。すなわち、この場合、キャッシュミスとなる。ところが、CAMサブタグは、4ウェイであり、図4の比較例bにおいては、1ウェイ分の空きがある。そこで、メインメモリよりアドレス「100000」に対応するデータが読み出されて、CPUに供給されると共に、図4の比較例cで示されるように、キャッシュメモリには、空いている最下段の1ウェイにCAMサブタグ「0000」が登録され、さらに、対応付けてSRAMサブタグ「10」が登録されて、今メインメモリから読み出されたデータが登録される。
 さらに、図4の比較例dで示されるように、入力アドレスが「001000」であって、CAMサブタグが「1000」、およびSRAMサブタグが「00」である場合、CAMサブタグとして、「1111」、「0101」、および「1000」が登録されており、それらに対応付けて、SRAMサブタグが「11」、「10」、および「00」として登録されているものとする。すなわち、比較例dにおいては、アドレス「111111」,「100101」,「101000」に対応するデータが図示せぬキャッシュメモリに記憶されている。
 このとき、まず、入力アドレスのCAMサブタグが用いられて、キャッシュメモリ内のCAMサブタグが比較検索されることにより、「1000」が検索されて、図中丸印で囲んで示されるように、同一のものが検索される。次に、入力アドレスのSRAMサブタグと、検索されたSRAMサブタグ「10」とが比較検索されるが、図中の×印で示されるように一致しない。すなわち、この場合、キャッシュミスとなる。しかしながら、既に、CAMサブタグとして「1000」が登録されていることから、1ウェイ分の空きがあっても、メインメモリから新たにアドレスが「001000」に対応するデータが読み出されて登録されると、CAMサブタグ「1000」に対して重複して、SRAMサブタグ「00」が登録されてしまう。すなわち、同一のCAMサブタグ「1000」が重複して登録されて、それぞれSRAMサブタグ「10」、および「00」が登録されてしまう。
 ところが、LPHAC法においては、同一のCAMサブタグの重複が回避されるように登録が管理される。このため、メインメモリよりアドレス「001000」に対応するデータが読み出されて、CPUに供給されると共に、図4の比較例eで示されるように、登録済みのCAMサブタグ「1000」に対応付けて、新たに読み出されたSRAMサブタグ「00」が上書きされて、図示せぬ今メインメモリから読み出されたデータが登録される。すなわち、この場合、登録されていたアドレス「101000」に対応するデータは、破棄され、CAMサブタグ「1000」に対応付けて登録されるSRAMサブタグが1に維持される。
Zhang, C.: A Low Power Highly Associa-tive Cache for Embedded Systems, Proc. IEEE ICCD, pp.31-36 (2006).
 ところで、上述したLPHAC法では、CAMサブタグのミスによる置換はLRU(Least Recently Used)方式で行うことが前提とされている。LRU方式とは、最も古くアクセスされたデータを、最近読み出されたデータで上書きする方式である。すなわち、時間的局所性に鑑みれば、過去最もアクセスのなかったデータは将来にわたってもアクセスされる可能性は少ないと言える。従って、この方法はヒット率を向上させるための方法としてよく採用されている。
 従って、CAMサブタグでヒットした場合、一般には複数のSRAMサブタグに対応するCAMサブタグと一致することになるが、LPHAC法ではCAMサブタグとの部分的な比較検索において、ヒットするデータが上述したように1個に絞られる。
 すなわち、CAMサブタグでヒットし、SRAMサブタグでミスした場合、ミスしたデータが置換される対象のデータとされる(新たに読み出されたデータにより置換されて、消滅してしまうデータとされる)。これにより、CAMサブタグのビット数s≧5ビットであればCAMサブタグの部分的な比較検索により複数のデータと一致しないようにできる。
 しかしながら、LPHAC法では、CAMサブタグでヒットし、SRAMサブタグでミスした場合、ミスしたデータが置換される対象データとされることによりヒットするデータが1個に絞られる。この場合、LRU方式とは異なる置換方式を取らざるを得ず、比較的最近アクセスがあったデータであっても置換により消滅してしまう可能性があり、結果として、ヒット率が低下してしまう原因となっていた。
 また、CAMサブタグのビット数sを小さく設定すると、このようなケースが増加し、LRU方式とは異なる置換方式を取る頻度が上がる。これにより、CAMサブタグのビット数sを小さく設定することができないため、LPHAC法では、消費電力の大きなCAM部分の縮小に限界があり、消費電力の低減には限界があった。
 本発明はこのような状況に鑑みてなされたものであり、特に、キャッシュメモリのヒット率を低減させること無く、消費電力を低減できるようにするものである。
 本発明の第1の側面のキャッシュメモリは、連想度n(nは自然数)のCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)とを有し、接続されるCPU(Central Processing Unit)より第1サブタグアドレスおよび第2サブタグアドレスとからなるタグアドレスを指定され、対応するデータを格納または読み出すキャッシュメモリであって、前記データを、読み出し要求された時期に応じて、少なくとも、最近読み出しが要求された第1世代と、前記最近ではない時期に読み出しが要求された第2世代とに分類し、前記CAMにて、前記第1サブタグアドレスを管理し、前記SRAMにて、前記第2サブタグアドレスを管理し、同一の前記第1サブタグアドレスに対し、複数の前記第2サブタグアドレスが対応付けられることを容認することを特徴とする。
 本発明の第2の側面のキャッシュメモリは、連想度n(nは自然数)のCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)とを有し、接続されるCPU(Central Processing Unit)より第1サブタグアドレスおよび第2サブタグアドレスとからなるタグアドレスを指定され、対応するデータを格納または読み出すキャッシュメモリであって、前記データを、読み出し要求された時期に応じて、少なくとも、最近読み出しが要求された第1世代と、前記最近ではない時期に読み出しが要求された第2世代とに分類する世代管理手段と、前記CAMにて、前記第1サブタグアドレスを管理し、前記CPUより指定される前記タグアドレスの第1サブタグアドレスとの比較により、対応する第1サブタグアドレスを検索する第1検索手段と、前記SRAMにて、前記第2サブタグアドレスを管理し、前記第1検索手段により検索された第1サブタグアドレスを含み、かつ、前記第1世代のデータに対応する前記タグアドレスの第2サブタグアドレスとの比較により、対応する第2サブタグアドレスを検索する第2検索手段と、前記第2検索手段により検索された、前記第2サブタグアドレスに対応付けて記憶されている前記データを出力する出力手段とを含み、同一の前記第1サブタグアドレスに対し、複数の前記第2サブタグアドレスを対応付けることを容認することを特徴とする。
 前記第2検索手段には、前記第1世代のデータに対応する前記第タグアドレスの第2サブタグアドレスとの比較により、対応する第2サブタグアドレスを検索できないとき、前記第2世代のデータに対応する前記タグアドレスの前記第2サブタグアドレスとの比較により、対応する第2サブタグアドレスを検索させるようにすることができる。
 前記第1検索手段による前記第1サブタグアドレスの比較によりデータが検索されないとき、または前記第2検索手段により前記第2サブタグアドレスの比較により第2世代のデータが検索されないとき、接続するメインメモリより前記読み出しが要求されたタグアドレスに対応するデータを読み出し、前記世代管理手段にて管理される、前記第2世代のデータのうち、最も古く読み出されたデータを、前記メインメモリより読み出されたデータで置換し、併せて前記第1サブタグアドレス、および第2サブタグアドレスを置換する置換手段をさらに含ませるようにすることができる。
 前記置換手段には、一の前記第1サブタグアドレスに対し、複数の前記第2サブタグアドレスが対応付けられて置換されることを許容するようにさせることができる。
 前記世代管理手段には、前記第2のサブタグアドレスにより管理される各データが読み出された時期に基づいて、前記データが第1世代であるか、または、前記第2世代であるかを世代管理リストにより管理し、前記置換手段により前記メインメモリより読み出されたデータで、前記最も古く読み出されたデータが置換されるとき、前記第2サブタグアドレスにより管理されるデータが読み出された時期が、最も古く読み出されたデータを削除し、前記メインメモリより読み出されたデータを、最近読み出された時期として世代管理リストを更新させるようにすることができる。
 前記世代管理手段には、前記世代管理リストに基づいて、前記第2サブタグアドレスにより管理される各データについて、最近読み出されたデータを第1世代のデータとし、最近ではない時期に読み出されたデータを第2世代のデータとして、世代管理させるようにすることができる。
 前記連想度nが連想度32であって、前記タグアドレスが24ビットの場合、第1サブタグアドレスが2ビットとし、第2サブタグアドレスが22ビットとすることができる。
 前記連想度nが連想度32の前記第1サブタグアドレスで管理されるデータのうち、前記第1世代のデータは、読み出された時期が最近に近い順に上位2位までのデータとすることができる。
 本発明のプロセッサは、複数の請求項1乃至8のいずれかに記載のキャッシュメモリと、前記CPUと、前記CPUより前記タグアドレスで指定されるデータの読み出し、または書き込みが要求された場合、前記タグアドレスより前記第1のサブタグアドレスを抽出する第1のサブタグアドレス抽出手段と、前記CPUより前記タグアドレスで指定されるデータの読み出し、または書き込みが要求された場合、前記タグアドレスより前記第2のサブタグアドレスを抽出する第2のサブタグアドレス抽出手段とを含むことを特徴とする。
 本発明の第2の側面のキャッシュメモリの制御方法は、連想度n(nは自然数)のCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)とを有し、接続されるCPU(Central Processing Unit)より第1サブタグアドレスおよび第2サブタグアドレスとからなるタグアドレスを指定され、対応するデータを格納または読み出すキャッシュメモリの制御方法であって、前記データを、読み出し要求された時期に応じて、少なくとも、最近読み出しが要求された第1世代と、前記最近ではない時期に読み出しが要求された第2世代とに分類する世代管理ステップと、前記CAMにて、前記第1サブタグアドレスを管理し、前記CPUより指定される前記タグアドレスの第1サブタグアドレスとの比較により、対応する第1サブタグアドレスを検索する第1検索ステップと、前記SRAMにて、前記第2サブタグアドレスを管理し、前記第1検索ステップの処理により検索された第1サブタグアドレスを含み、かつ、前記第1世代のデータに対応する前記タグアドレスの第2サブタグアドレスとの比較により、対応する第2サブタグアドレスを検索する第2検索ステップと、前記第2検索ステップの処理により検索された、前記第2サブタグアドレスに対応付けて記憶されている前記データを出力する出力ステップとを含み、同一の前記第1サブタグアドレスに対し、複数の前記第2サブタグアドレスが対応付けることを容認することを特徴とする。
 本発明の第1の側面においては、連想度n(nは自然数)のCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)とを有し、接続されるCPU(Central Processing Unit)より第1サブタグアドレスおよび第2サブタグアドレスとからなるタグアドレスを指定され、対応するデータが格納または読み出され、前記データが、読み出し要求された時期に応じて、少なくとも、最近読み出しが要求された第1世代と、前記最近ではない時期に読み出しが要求された第2世代とに分類され、前記CAMにて、前記第1サブタグアドレスが管理され、前記SRAMにて、前記第2サブタグアドレスが管理され、同一の前記第1サブタグアドレスに対し、複数の前記第2サブタグアドレスを対応付けることが容認される。
 本発明の第2の側面においては、連想度n(nは自然数)のCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)とを有し、接続されるCPU(Central Processing Unit)より第1サブタグアドレスおよび第2サブタグアドレスとからなるタグアドレスを指定され、対応するデータを格納または読み出すキャッシュメモリであって、前記データが、読み出し要求された時期に応じて、少なくとも、最近読み出しが要求された第1世代と、前記最近ではない時期に読み出しが要求された第2世代とに分類され、前記CAMにて、前記第1サブタグアドレスが管理され、前記CPUより指定される前記タグアドレスの第1サブタグアドレスとの比較により、対応する第1サブタグアドレスが検索され、前記SRAMにて、前記第2サブタグアドレスが管理され、検索された第1サブタグアドレスが含まれ、かつ、前記第1世代のデータに対応する前記タグアドレスの第2サブタグアドレスとの比較により、対応する第2サブタグアドレスが検索され、検索された、前記第2サブタグアドレスに対応付けて記憶されている前記データが出力され、同一の前記第1サブタグアドレスに対し、複数の前記第2サブタグアドレスを対応付けることが容認される。
 本発明の一側面によれば、キャッシュメモリのヒット率を低減させること無く、消費電力を低減させることが可能となる。
従来のキャッシュメモリの構成を示す図である。 その他の従来のキャッシュメモリの構成を示す図である。 LPHAC法を説明する図である。 LPHAC法を説明する図である。 本発明を適用した一実施の形態の構成例であるキャッシュメモリにより実現される機能を説明する機能ブロック図である。 キャッシュメモリに格納されるデータの管理構造を説明する図である。 プログラム実行処理を説明するフローチャートである。 命令キャッシュ処理を説明するフローチャートである。 キャッシュヒットミス判定処理を説明するフローチャートである。 キャッシュヒットミス判定処理を説明する図である。 データキャッシュ(書き込み)処理を説明するフローチャートである。 データキャッシュ(読み出し)処理を説明するフローチャートである。 本発明の効果を説明する図である。 本発明の効果を説明する図である。 本発明の効果を説明する図である。 本発明の効果を説明する図である。
[本発明を適用したキャッシュメモリの構成例]
 図5は、本発明を適用したキャッシュメモリにより実現される機能の一実施の形態の構成例を示す機能ブロック図である。
 CPU(Central Processing Unit)11は、各種の処理を実行させるとき、プログラムカウンタより実行すべき命令のアドレスをアドレス入力部12に供給し、キャッシュメモリ13に対してデータを要求すると共に取得して実行する。
 アドレス入力部12は、CPU11より命令を指定するアドレスが供給されると、インデックスアドレスをキャッシュメモリ13のデコード部41に供給すると共に、タグアドレスのうち、CAM(Content Addressable Memory)サブタグアドレスをキャッシュメモリ13のCAM51に供給すると共に、SRAM(Static Random Access Memory)サブタグアドレスをSRAM52に供給する。より詳細には、アドレス入力部12は、インデックスアドレス抽出部21、およびタグアドレス抽出部22を備えている。インデックスアドレス抽出部21は、入力されたアドレスよりインデックスアドレスを抽出し、抽出したインデックスアドレスをデコード部41に供給する。
 タグアドレス抽出部22は、さらにCAMサブタグアドレス抽出部22aおよびSRAMサブタグアドレス抽出部22bを備えている。CAMサブタグアドレス抽出部22aは、入力アドレスに含まれるタグアドレスが、例えば、Xビットである場合、その下位sビットをCAMサブタグアドレスとして抽出してキャッシュメモリ13内にある各サブバンク42のCAM51に供給する。また、SRAMサブタグアドレス抽出部22bは、入力アドレスに含まれるタグアドレスのうち、CAMサブタグアドレス以外の上位(X-s)ビットをSRAMサブタグとして抽出してキャッシュメモリ13内にある各サブバンク42のSRAM52に供給する。
 キャッシュメモリ13は、デコード部41、およびサブバンク42より構成されている。デコード部41は、アドレス入力部12より供給されてくるインデックスアドレスを解析し、いずれのサブバンク42を起動させるかを判定し、起動させるべきサブバンク42に対して起動を指示する信号を供給する。尚、図5においては、サブバンク42の構成を示すため、便宜上サブバンク42が1個のみ表示されているが、実際には、複数のサブバンク42が設けられている。すなわち、デコード部41とサブバンク42の関係については、図2で示される構成と同様の関係となっており、デコード部41より起動を指示する信号が供給されたサブバンクのみがオンの状態とされ、オンの状態となったサブバンク42のみが、タグアドレスの情報に基づいて処理を実行する。
 サブバンク42には、CAM51、SRAM52、LRU管理部53、読出部54、および置換部55を備えている。CAM51は、デコード部41より供給されてくる起動を指示する信号に基づいて動作を開始し、CAMサブタグアドレス抽出部22aより供給されてくるCAMサブタグアドレスに基づいて、CPU11で指定したアドレスのデータの候補を検索し、検索結果をヒットフラグとしてSRAM52に供給する。
 SRAM52は、CAM51からのヒットフラグの情報、およびSRAMサブタグアドレスに基づいて、CPU11がアドレスで指定したデータを検索し、データが検索できた場合、CPU11に出力する。また、SRAM52は、CPU11がアドレスで指定したデータが検索できなかった場合、メインメモリ14にアクセスし、そのデータを読み出して、CPU11に供給すると共に、最も古いデータと置換して新たに記憶する。
 より詳細には、SRAM52は、比較検索部71、出力部72、書戻部73、置換部55世代管理部74、書戻管理部75、書込部76、書換部77、および格納部78を備えている。比較検索部71は、世代判定部81を制御して、CAM51からのヒットフラグの情報により特定されている、検索されるデータの候補のうち、まず、最初の処理で第1世代のもののみを特定させる。
 ここでいう世代とは、世代管理部74により管理されるものであり、SRAM52の格納部78に格納されている各データが最近アクセスされた日時により設定される順序のうち、例えば、上位2位までのデータが第1世代に設定され、それ以下の順位のデータが第2世代に設定される。つまり、最近アクセスされた、読み出される可能性の比較的高いデータが第1世代に設定され、それ以外のデータが第2世代に設定される。尚、上位2位までが第1世代に設定される例について説明したが、それ以外の順位までを第1世代とし、それ以外のデータを第2世代としてもよいものである。
 比較検索部71は、最初の処理で世代判定部81を制御して、CPU11によりアドレスで特定される読み出しが要求されたデータの候補のうち、最新のものとして分類されている第1世代のデータを特定させる。そして、比較検索部71は、第1世代のものとして特定されたCAMサブタグアドレスで検索されたアドレスにより指定されたデータの候補のぞれぞれのSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較して検索し、一致するものが検索できた場合、検索されたデータを出力部72に供給する。
 出力部72は、検索されたデータを取得すると、CPU11によりアドレスで指定されている要求されたデータとして供給する。また、第1世代のものとして特定されたCAMサブタグで検索されたアドレスにより指定されたデータの候補のSRAMサブタグアドレスのうち、抽出されたSRAMサブタグアドレスと一致するものが検索できなかった場合、比較検索部71は、世代判定部81により第1世代と判定されなかった、すなわち、第2世代のデータのSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較検索し、一致するものが検索された場合、検索されたデータをCPU11に出力部72に供給する。
 一方、比較検索部71は、いずれの世代においてもCPU11によりアドレスで特定されたデータが検索できない場合、CAMサブタグアドレスの情報、およびSRAMサブタグアドレスの情報と共に、対応するデータをメインメモリ14より読み出すように読出部54に通知する。読出部54は、CAMサブタグアドレス、およびSRAMサブタグアドレスの情報に基づいて、タグアドレスを特定し、メインメモリ14にアクセスして、そのタグアドレスに対応するデータを読み出し、CPU11に供給すると共に、CAM51、SRAM52、および置換部55に対して読み出したデータのCAMサブタグ、SRAMサブタグ、およびデータそのものを供給する。
 書戻部73は、CPU11からの命令が書き込み処理である場合、サブバンク42により管理するべきデータが更新されるとき、SRAM52の格納部78に格納されているデータを置換して更新する前に、メインメモリ14に対応するデータを書き戻す。
 置換部55は、CPU11からの命令により指定されたタグアドレスの情報が検出できず、メインメモリ14からデータが読み出された場合、新たなデータとタグアドレスとで、それまで記憶していたデータとタグアドレスとを置換して更新する。
 書込部76は、CPU11からの命令が書き込み処理の場合、格納部78に格納されているデータをCPU11からの処理結果であるデータで書き換える。
 書換部77は、CPU11からの命令が書き込み処理の場合、書込部76が格納部78に格納されているデータをCPU11からの処理結果であるデータで書き換える前に、メインメモリにアクセスし、対応するデータを書き換える。
 尚、LRU管理部53、世代管理部74、および書戻管理部75の詳細については、後述するデータ管理構造と併せて説明するものとする。
[データ管理構造]
 次に、図6を参照して、格納部78に格納されるデータの管理構造について説明する。図6においては、垂直方向に各データ単位のラインが形成されており、ラインL1乃至L32までの合計32データが記録されていることが示されている。尚、このラインL1乃至L32のそれぞれを特に区別する必要がない場合、単にラインLと称するものとする。
 図6の各ラインLには、左からCAMサブタグアドレス、SRAMサブタグアドレス、データ、アクセス日時情報、世代情報、および書戻フラグが含まれており、データ単位で管理される情報が示されている。このラインLの数は、CAM51およびSRAM52の物理的な構成により決定されるウェイ数に相当しており、図6の例では、32ウェイの例であることが示されている。ただし、このウェイ数は、ハードウェアの構成により決まるものであるので、ハードウェアの構成により、ウェイ数は様々な数をとることが可能であり、例えば、2,4,8,16,32などでもよいし、これ以外のウェイ数であってもよい。
 尚、図6においては、各データを特定するタグアドレスは、図6の左側の2列で示されている。すなわち、CAMサブタグアドレスとSRAMサブタグアドレスとが特定されることにより、CPU11により指定されたタグアドレスのデータが検索されることになる。
 アクセス日時情報は、LRU(Least Recently Used)管理部53のLRU管理リスト53aによりデータ単位(ライン単位)で管理されている情報である。すなわち、LRU(Least Recently Used)管理部53は、LRU管理リスト53aを備えており、LRU管理リスト53a上にデータ単位で(ライン単位で)、図6中のデータ列の右側に表示されている最近アクセスされたアクセス日時情報をデータ単位(ライン単位)で管理している。すなわち、LRU管理部53は、SRAM52のアクセスがある度に、LRU管理リスト53aを更新して、図6におけるデータ毎(ライン毎)のアクセス日時の情報を管理している。また、図6には図示されていないが、LRU管理部53は、LRU管理リスト53aの情報に基づいて、各ラインを最近アクセスされた日時順に並び替えて、ライン毎の順位を求める。
 世代情報は、世代管理部74の世代管理リスト74aによりデータ単位(ライン単位)で管理されている情報である。すなわち、世代管理部74は、世代管理リスト74aを備えており、LRU管理部53のLRU管理リスト53aにアクセスし、最近アクセスされたライン毎の日時順の情報に基づいて、世代管理リスト74aに、ライン単位で最近アクセスされた上位2位までのデータに第1世代データであることを示すフラグを立て、それ以外のデータについては第2世代データであることを示すため、第1世代であること示すフラグを立てないようにして管理する。
 書戻フラグは、書戻管理部75の書戻管理リスト75aによりデータ単位(ライン単位)で管理されている情報である。すなわち、書戻管理部75は、書戻管理リスト75aを備えており、CPU11からの指令が書き込み処理である場合、データが更新される度に、SRAM52のデータを更新する前に、先にメインメモリ14のデータを書き戻して更新する必要があるので、書戻が必要となるデータにフラグを立てて管理する。すなわち、書戻管理部75は、書き込み処理であるか否かにより、書戻管理リスト75aを更新し、図6におけるデータ毎(ライン毎)の書戻フラグを管理している。
[プログラム実行処理]
 次に、図7のフローチャートを参照して、プログラム実行処理について説明する。
 ステップS1において、CPU11は、図示せぬプログラムカウンタより実行すべき命令のアドレスを取得し、アドレス入力部12に供給する。この処理により、アドレス入力部12は、CPU11よりアドレスの入力を受け付ける。
 インデックスアドレス抽出部21は、入力されたアドレスよりインデックスアドレスを抽出する。また、タグアドレス抽出部22は、入力されたアドレスよりタグアドレスを抽出し、CAMサブタグアドレス抽出部22aおよびSRAMサブタグアドレス抽出部22bに供給する。CAMサブタグアドレス抽出部22aは、タグアドレスの、下位sビットをCAMサブタグアドレスとして抽出してキャッシュメモリ13内にある各サブバンク42のCAM51に供給する。SRAMサブタグアドレス抽出部22bは、タグアドレスのうち、CAMサブタグアドレス以外の上位(X-s)ビットをSRAMサブタグアドレスとして抽出してキャッシュメモリ13内にある各サブバンク42のSRAM52に供給する。
 ステップS2において、キャッシュメモリ13は、命令キャッシュ処理を実行し、CPU11に入力されたアドレスに対応するデータを読み出し、CPU11に供給する。
[命令キャッシュ処理]
 ここで、図8のフローチャートを参照して、命令キャッシュ処理について説明する。
 ステップS21において、キャッシュメモリ13は、いずれかのサブバンク42を指定してキャッシュヒットミス判定処理を実行させる。
[キャッシュヒットミス判定処理]
 ここで、図9のフローチャートを参照して、キャッシュヒットミス判定処理について説明する。
 ステップS41において、インデックスアドレス抽出部21は、抽出したインデックスアドレスをデコード部41に供給する。デコード部41は、インデックスアドレスを解析し、解析結果からキャッシュヒットミス処理を実行させるサブバンク42を特定し、特定したサブバンク42に対して起動を指示する信号を供給する。この処理により、起動が指示されたサブバンク42は、電力供給を受けて起動を開始する。一方、起動が指示されていないサブバンク42は起動されず、結果として、処理が必要とされていないサブバンク42の電力消費が低減される。
 ステップS42において、CAM51は、タグアドレス抽出部22のCAMサブタグアドレス抽出部22aより供給されてくるCAMタグアドレスと、SRAM52内に管理されるデータに対応付けて登録されているCAMタグアドレスとを比較し、一致するものが検索されるか否かを判定する。
 すなわち、例えば、図10の左部で示されるように、ラインL0のCAMタグアドレスが「0001」であり、ラインL1が「0101」であり、ラインL2が「1001」であり、ラインL3が「0000」であり、ラインL4が「1001」であり、ラインL5が「0001」であり、ラインL6が「0010」であり、・・・ラインL28が「0001」であり、ラインL29が「0111」であり、ラインL30が「1001」であり、ラインL31が「1000」である場合、入力されたアドレスから抽出されたCAMサブタグアドレスが「1001」であるとき、CAM51は、全てのラインLのCAMサブアドレスとを比較して検索すると、図中の矢印で示されているラインL2,L4,L30のCAMサブタグアドレスがヒットすることになる。そこで、このような場合、ステップS42において、CAM51は、タグアドレス抽出部22のCAMサブタグアドレス抽出部22aより供給されてくるCAMタグアドレスと、SRAM52内に管理されるデータに対応付けて登録されているCAMタグアドレスとに一致するものがあると判定し、処理は、ステップS43に進む。
 尚、図10においては、垂直方向にラインLごとに左からCAMサブタグアドレス、SRAMサブタグアドレス、データ、および世代情報が対応付けて示されている。また、図10の世代情報においては、ラインL2,L3,L29のみが第1世代(1st)であり、それ以外が第2世代(2nd)であることが示されている。
 ステップS43において、CAM51は、一致したCAMタグアドレス、および一致したラインLを示す情報として、一致したラインLに対してヒットフラグを立ててSRAM52に供給する。この処理により、SRAM52の比較検索部71は、一致したCAMタグアドレスとラインLの情報を取得する。すなわち、図10の左部においては、ラインL2,L4,L30についてヒットフラグが付されることになる。
 そして、比較検索部71は、世代判定部81を制御して、CAMタグアドレスが一致したラインLのうち、第1世代のラインLの情報を比較対象のラインLとして検索させる。例えば、図10の左部の場合、ラインL2のデータのみが第1世代に設定されているので、ラインL2のみが検索される。さらに、比較検索部71は、検索されたCAMタグアドレスが一致したラインLのうち、第1世代の、比較対象となったラインL2のSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較すると共に、比較対象となったラインL2で管理されているデータを格納部78より比較検出部71に対して出力させる。
 ステップS44において、比較検索部71は、比較対象となった第1世代のラインLのSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較して、一致するものがあるか否かを検索する。例えば、図10の左部の場合、検索されたのはラインL2のデータのみであるので、ラインL2のSRAMサブタグデータと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとが比較される。
 ステップS44において、例えば、図10の左部で「hit」と示されるように、SRAMサブタグアドレスの両者が一致した場合、ステップS45において、比較検索部71は、キャッシュヒットしたことを認識し、一致したSRAMサブタグアドレスに対応して格納部78より出力されてきたデータを出力部72に供給する。
 一方、ステップS44において、一致するSRAMサブタグアドレスがない場合、ステップS46において、比較検索部71は、世代判定部81を制御して、CAMタグアドレスが一致したラインLのうち、第2世代のラインLの情報を比較対象のラインLとして検索させる。例えば、図10の右部で示されるように、ラインL4,L30のデータのみが第2世代のデータ(ラインL)として検索される。さらに、比較検索部71は、検索されたCAMタグアドレスが一致したラインLのうち、第2世代の、すなわち、比較対象となったラインLのSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較すると共に、比較対象となったラインLで管理されているデータを格納部78より比較検出部71に対して出力させる。
 ステップS47において、比較検索部71は、比較対象となった第2世代のラインLのSRAMサブタグアドレスと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとを比較して、一致するものがあるか否かを検索する。例えば、図10の右部の場合、検索されたのはラインL4,L30のデータであるので、ラインL4,L30のSRAMサブタグデータと、SRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスとが比較される。
 ステップS47において、例えば、図10の右部でラインL30において「hit」と示されるように、両者が一致した場合、ステップS45において、比較検索部71は、キャッシュヒットしたことを認識し、一致したSRAMサブタグアドレスに対応して格納部78より出力されてきたデータを出力部72に供給する。すなわち、この場合、ラインL4,L30の両方のデータが格納部78から比較検索部71に出力されている。しかしながら、SRAMサブタグアドレスが一致したのは、図中(hit)と示されたラインL30のものであるので、比較検索部71は、ラインL30のデータのみを出力部72に供給すると共に、ラインL4のデータを破棄する。このように、比較検索部71は、ヒットしたデータのみを出力部72に供給し、キャッシュミスとなったデータを破棄する。
 一方、ステップS42において、CAMサブタグアドレスに一致するものがない場合、または、ステップS47において、例えば、比較対象となるSRAMタグアドレスとSRAMサブタグアドレス抽出部22bより供給されてきたSRAMサブタグアドレスが一致しない場合、ステップS48において、比較検索部71は、格納部78には、CPU11より供給されてきたアドレスに対応するデータが格納されていない、すなわち、キャッシュミスであるものと認識し、処理は終了する。
 すなわち、まず、CAMサブタグアドレスで比較対象となるラインを検索し、一致するものがあった場合、最初は、CAMサブタグアドレスが一致するラインのうち、第1世代のものだけを比較対象とするラインとして、SRAMサブタグアドレスで検索し、一致すればキャッシュヒットであるものと判定する。また、CAMサブタグアドレスが一致するラインのうち、第1世代の比較対象とするラインを、SRAMサブタグアドレスで検索しても一致するものがないとき、CAMサブタグアドレスが一致するラインのうち、第2世代の比較対象とするラインを、SRAMサブタグアドレスで検索するようにした。
 このため、SRAMサブタグアドレスが一致する可能性の高い最近のデータを含む第1世代となる一部のラインのみを比較対象とすることができるので、SRAMサブタグアドレスでの一致の可能性の低いラインを排除することで、CAMサブタグアドレスで一致する全てのラインに対してSRAMサブタグアドレスによる検索をしないようにすることができる。
 結果として、全てのラインを比較対照としないため、キャッシュミスとなるラインが低減されてSRAM52の消費電力としてインパクトの大きな格納部78からの出力動作を低減させることができ、全体として消費電力を低減させることが可能となる。また、SRAMサブタグアドレスが一致する可能性の高い最近のデータを含む第1世代となる一部のラインのみを比較対象とすることができるので、ヒット率を低減させずに、消費電力を低減させることが可能となる。
 ここで、図8のフローチャートの説明に戻る。
 ステップS22において、比較検索部71は、キャッシュヒットであるか否かを判定する。
 ステップS22において、例えば、上述したステップS45の処理により、キャッシュヒットである場合、処理は、ステップS23に進む。
 ステップS23において、出力部72は、比較検索部71より供給されてきたデータをCPU11に供給する。
 ステップS24において、比較検出部71は、出力部72に供給したデータ(ライン)のCAMサブタグアドレスおよびSRAMサブタグアドレスを供給し、対応するデータにアクセスがあったことをLRU管理部53に通知する。LRU管理部53は、アクセスがあったことを示す情報に基づいて、LRU管理リスト53aを更新する。より詳細には、LRU管理部53は、LRU管理リスト53aの情報のうち、アクセスがあったとして通知されてきたCAMサブタグアドレスおよびSRAMサブタグアドレスのデータの最近読み出された日時の情報を現在時刻に更新すると共に、読み出された日時の順位を第1位に更新する。尚、日時の順位を管理するに当たり、日時の情報をそのまま用いて管理すると、膨大なデータを管理する必要が生じる恐れがある。そこで、日時の順位の管理には、日時の情報をそのまま扱うのではなく、例えば、32ウェイであれば、5ビットのカウンタビットを用いるようにして、データの順位のみを管理するようにしてもよい。
 ステップS25において、世代管理部74は、LRU管理部53に対してLRU管理リスト53aを要求し、取得する。そして、世代管理部74は、LRU管理リスト53aにおける上位2位までのラインについて、世代管理リスト74aの世代情報を第1世代に更新し、併せて、それ以外のラインについて、世代情報を第2世代に更新する。
 一方、ステップS22において、キャッシュヒットではない、すなわち、キャッシュミスであったと判定された場合、処理は、ステップS26に進む。
 ステップS26において、比較検索部71は、読出部54に対して、CPU11よりアドレスにより指定されたデータが存在しないため、メインメモリ14より読み出すように指示すると共に、CAMサブタグアドレスおよびSRAMサブタグアドレスを供給する。読出部54は、この指示に応じて、CAMサブタグアドレスおよびSRAMサブタグアドレスに基づいてタグアドレスを特定し、メインメモリ14にアクセスして、データを読み出すと共に、CAM51、比較検索部71および置換部55に供給する。
 ステップS27において、置換部55は、LRU管理部53に対してLRU管理リスト53aを要求し、取得する。そして、置換部55は、LRU管理リスト53aにおいて、最下位となるライン、すなわち、最も古いデータとタグアドレスとを検索し、読出部54より供給されてきたデータとタグアドレスとで置換してCAM51およびSRAM52の格納部78の情報を更新する。
 以上のように命令キャッシュ処理により、CPU11により命令の読み出しが指示されたデータについて、LRU管理リスト53aのアクセスされた日時が更新されて、さらに、日時に応じて設定される順位が順次更新することが可能となる。また、LRU管理リスト53aの更新に応じて、世代管理部74における世代管理リスト74aも併せて更新することが可能となり、最近アクセスされた日時に応じて世代情報を更新させることが可能となる。
 また、以上の処理においては、置換部55は、同一のCAMサブタグアドレスに対して、異なる複数のSRAMサブタグアドレスが格納部78に重複するようなデータが置換されることも認めるように処理する。この結果、格納部78に格納されるデータは、同一のCAMサブタグアドレスに対して、SRAMサブタグアドレスが1に絞られるようなことがなく、LRU法に則って、最近アクセスされたデータが確実に置換されて格納されることとなるので、LPHAC法で見られたようなキャッシュヒット率の低下を抑制することが可能となる。
 ここで、図7のフローチャートの説明に戻る。
 ステップS2において、命令キャッシュ処理が終了すると、ステップS3において、CPU11は、使用するレジスタオペランドを指定する。
 ステップS4において、CPU11は、キャッシュメモリ13より供給されてきたデータからなる命令に対応する計算、演算、または比較等の処理を実行する。
 ステップS5において、CPU11は、実行している命令がストア命令であるか否かを判定する。ステップS5において、例えば、実行している命令がストア命令である場合、処理は、ステップS6に進む。
 ステップS6において、CPU11は、キャッシュメモリ13に対してステップS1と同様にアドレスを指定してデータキャッシュ処理を指示する。これに応じてアドレス入力部12は、入力されたアドレスにより、インデックスアドレス、CAMサブタグアドレス、およびSRAMサブタグアドレスをキャッシュメモリ13に供給する。キャッシュメモリ13は、このインデックスアドレス、CAMサブタグアドレス、およびSRAMサブタグアドレスに基づいて、データキャッシュ(書き込み)処理を実行する。
[データキャッシュ(書き込み)処理]
 ここで、図11のフローチャートを参照して、データキャッシュ(書き込み)処理について説明する。尚、図11のフローチャートにおいて、ステップS61,S62,S65,S66の処理については、図8のフローチャートを参照して説明したステップS21,S22,S24,S25の処理と同様であるので、その説明は省略するものとする。
 すなわち、ステップS62において、例えば、キャッシュヒットであった場合、処理は、ステップS63に進む。
 ステップS63において、比較検索部71は、キャッシュヒットしたものとして検索されたラインの情報(CAMサブタグアドレス、およびSRAMサブタグアドレスの情報)を書戻管理部75、および書込部76に供給する。そして、書込部76は、CPU11の書き込み指示に従って、検索されたCAMサブタグアドレス、およびSRAMサブタグアドレスで特定されるラインに対応付けて、演算結果のデータを格納部78に書き込む。
 ステップS64において、書戻管理部75は、CAMサブタグアドレス、およびSRAMサブタグアドレスで特定されるラインの書き戻しフラグをオンの状態にして、書戻管理リスト75aを更新し、以降の処理において、そのラインが書き戻し対象であることを記録する。
 一方、ステップS62において、キャッシュヒットではない、すなわち、キャッシュミスであった場合、処理は、ステップS67に進む。
 ステップS67において、比較検索部71は、キャッシュミスしたことを示す情報を書換部77に供給する。書換部77は、メインメモリ14にアクセスし、CAMサブタグアドレス、およびSRAMサブタグアドレスで特定されるタグアドレスのデータを、CPU11より供給されてくるデータで書き換える。
 ステップS68において、書戻部73は、LRU管理部53および書戻管理部75に対して、それぞれLRU管理リスト53aおよび書戻管理リスト75aを要求し、取得する。そして、書戻部73は、LRU管理リスト53aにおいて、最下位となるライン、すなわち、最も古いラインを検索し、さらに、その最も古いラインについて、書戻管理リスト75aで照合し、書戻フラグがオンの状態であるか否かを判定する。ステップS68において、例えば、最下位となるライン、すなわち、最も古いデータであって置換されるラインの書戻フラグがオンであり、書き戻し対象となっている場合、処理は、ステップS69に進む。
 ステップS69において、書戻部73は、メインメモリ14にアクセスし、最下位となるライン、すなわち、最も古いデータであって置換される対象となっているラインの書戻フラグがオンとなっているデータをメインメモリ14に書き戻す。
 すなわち、この処理により、新たにCPU11より供給されてくるデータで書き換えられて、キャッシュメモリ13内から消滅する前に、データがメインメモリ14に書き戻されることになる。
 一方、ステップS68において、最も古いデータであって置換されるラインの書戻フラグがオンではなく、オフとされており、書き戻し対象のラインではない場合、ステップS69の処理は、スキップされる。
 ステップS70において、置換部55は、LRU管理部53に対してLRU管理リスト53aを要求し、取得する。そして、置換部55は、LRU管理リスト53aにおいて、最下位となるライン、すなわち、最も古いデータとタグアドレスとを検索し、CPU11より供給されてきたデータとタグアドレスとで置換してCAM51およびSRAM52の格納部78の情報を更新する。
 以上の処理により、書き込みデータのデータキャッシュが管理されるので、アクセス頻度の高い書き込みデータのみがキャッシュメモリ13内で管理され、それ以外のデータについては、順次メインメモリ14に書き戻されていく。
 ここで、図7のフローチャートの説明に戻る。
 ステップS6の処理により、データキャッシュ(書き込み)処理が完了すると、プログラム実行処理は終了する。
 一方、ステップS5において、実行している命令がストア命令ではないと判定された場合、処理は、ステップS7に進む。ステップS7において、CPU11は、実行している命令がロード命令であるか否かを判定する。ステップS7において、例えば、実行している命令がロード命令である場合、処理は、ステップS8に進む。
 ステップS8において、CPU11は、キャッシュメモリ13に対してステップS1と同様にアドレスを指定してデータキャッシュ処理を指示する。これに応じてアドレス入力部12は、入力されたアドレスにより、インデックスアドレス、CAMサブタグアドレス、およびSRAMサブタグアドレスをキャッシュメモリ13に供給する。キャッシュメモリ13は、このインデックスアドレス、CAMサブタグアドレス、およびSRAMサブタグアドレスに基づいて、データキャッシュ(読み出し)処理を実行する。
[データキャッシュ(読み出し)処理]
 ここで、図12のフローチャートを参照して、データキャッシュ(読み出し)処理について説明する。尚、図12のフローチャートにおけるステップS81乃至S89の処理は、図11のフローチャートにおけるステップS61,S62、図8のフローチャートにおけるステップS23乃至S26、並びに、図11のフローチャートにおけるステップS68乃至S70の処理と同様であるので、その説明は省略する。
 すなわち、図12のフローチャートにおいては、図11のフローチャートを参照して説明した処理における書き込みを対象とした処理が省略され、メインメモリ14からの読み出し処理のみとなる。
 ここで、図7のフローチャートの説明に戻る。
 ステップS8において、データキャッシュ(読み出し)処理が終了すると、ステップS9において、CPU11は、図示せぬレジスタファイルに処理結果を書き込み、処理を終了する。
 また、ステップS7において、命令がロード命令ではない場合、ステップS10において、CPU11は、図示せぬレジスタファイルに処理結果を書き込み、さらに、図示せぬプログラムカウンタを更新して、処理を終了する。
 以上の一連の処理のうち、特に、タグアドレスの一部をSRAMサブタグアドレスとして設定し、SRAM52により管理させるようにし、さらに、最近アクセスされた第1世代のデータを優先的に検索させるようにした。このため、CAMサブタグアドレスにより検索されたラインであって、第1世代のラインのみを、SRAMサブタグアドレスで検索するようにしたので、対応付けて格納されているデータのうち、SRAM52の検索に伴って同時に読み出されるデータ数を絞り込むことが可能となり、結果として、SRAM52の消費電力として大きな出力動作を制限させることができ、消費電力を低減させることが可能となる。また、最初の処理で、アクセスされる頻度が高い第1世代のラインを優先的に検索させることにより、キャッシュヒット率の低減を抑制することが可能となる。
 さらに、1のCAMサブタグアドレスに対して、複数のSRAMサブタグアドレスであっても、重複してデータを格納させることを認めて、LRU法に則って、アクセスされる可能性の高いデータを格納できるようにしたので、1のCAMサブタグアドレスに対して、1のSRAMサブタグアドレスに絞られることによりキャッシュヒット率が低減してしまうことを抑制することが可能となる。
 このように、1のCAMサブタグアドレスに重複して複数のSRAMサブタグアドレスとなるデータの格納を認めて、かつ、最近アクセスされた第1世代のデータを優先的に検索させることにより、キャッシュヒット率を低減させることなく、消費電力を低減させることが可能となる。
[ベンチマークプログラムによるミス率の比較]
 次に、図13を参照して、本発明を適用したキャッシュメモリを用いた場合のミス率と、その平均値について説明する。尚、図13においては、上段に命令キャッシュによる結果が示されており、下段にデータキャッシュによる結果が示されている。また、図13における横軸に対応する番号1乃至21のベンチマークプログラムは、1から順に、bitcount,qsort,susan_e,susan_c,susan_s,lame,tiff2bw,tiff2rgba,dijkstra,patricia,ispell,stringsearch,blow_d,blow_e,rijndael_d,rijndael_e,sha,crc,rawcaudio(adpcm),rawdaudio(adpcm),untoast(gsm)であり、番号22は全体の平均値(average)である。
 また、各プログラム毎のミス率は、左から従来型の4ウェイのSRAM、8ウェイのSRAM、32ウェイのCAM、タグアドレスを24ビットとしたときのCAMサブタグアドレスのビット数sを、s=5,8,9,11としたLPHAC法、および本発明の例(s=4)(黒で表記されている)である。
 図13の上段で示されるように命令キャッシュのミス率は、番号22で示される平均値から、LPHAC法は従来型のCAMよりも高い値であることがわかる。特に、CAMサブタグアドレスのビット数s=5の場合、ミス率が際立って高い。これは、CAMサブタグアドレスの比較検索で検索できる(ヒットする)が、SRAMタグアドレスの比較検索で検索できない(ミスする)場合が多いためと思われる。また、CAMサブタグアドレスのビット数s=8,9の場合、多くのベンチマークプログラムでのミス率は、従来型のCAMに近い値となるがrijndael dやqsortでは、ミス率は大きい。CAMサブタグアドレスのビット数s=11では全てのベンチマークプログラムにおいて従来型のCAMとほぼ同等となる。一方、本発明のキャッシュメモリにおいては,CAMサブタグアドレスのビット数s=4としても、ミス率には影響を与えないことがわかる。
 すなわち、平均値をみると、LPHAC法ではCAMサブタグアドレスのビット数s =5,8,9,11のとき、それぞれ0.75%,0.43%,0.43%,0.42%となるのに対し、本発明のキャッシュメモリにおいては、CAMサブタグアドレスのビット数s=4において、従来型のCAMと同じ0.42%である。
 また、図13の下段で示されるように、データキャッシュについても命令キャッシュと同様の傾向が見られる。すなわち、LPHAC法では、CAMサブタグアドレスのビット数s=8の場合、rijndael_dやrijndael eはミス率が高く、patriciaやcrcではCAMサブタグアドレスのビット数s=9でもミス率が高い。
 一方、本発明のキャッシュメモリの場合、命令キャッシュと同様、従来型のCAMと同様のミス率となっており、CAMサブタグアドレスのビット数s=4でも影響を受けない。番号22で示される平均値をみると、LPHAC法がs=5,8,9,11のとき、それぞれ1.95%,0.91%,0.80%,0.67%となるのに対し、本発明のキャッシュメモリにおいてはCAMサブタグアドレスのビット数s=4において従来型のCAMと同じ0.66%である。
 このように、本発明のキャッシュメモリにおいてはCAMサブタグアドレスとの部分的な比較検索において、ヒットするキャッシュラインを1つに絞らないため、常にLRU方式を採用できるので、ヒット率の低下を抑制することができる。また,LPHAC法のようにCAMアブタグアドレスのビット数sの大きさによって、特定のベンチマークのミス率が大きな影響を受けることはない。
 なお、従来型のCAMと本発明のキャッシュメモリは、4,8ウェイの従来型のSRAMと比較し、命令キャッシュでそれぞれ10.7%,8.6%となり、データキャッシュにおいてそれぞれ11.6%,5.0%平均ミス率が小さい。
[消費電力量の比較]
 次に、図14乃至図16を参照して、消費電力量の評価について説明する。本発明の消費電力量の評価は、上述したベンチマークプログラムを実行したときの平均値に基づいて行うものとし、以下の式(1)で表される消費電力量Eで表現されるものとする。
 E=Etag+Edata                   ・・・(1)
 ここで、Etagは、以下の式(2)で表される。
 Etag=ECAM +ESRAM                ・・・(2)
 ここで、式(2)におけるECAMおよびESRAMは以下の式(3),式(4)で表される。
 ECAM=α×w×s×NC                ・・・(3)
 ESRAM = (t-s)×(NS1+NS2)             ・・・(4)
 ここで、αはCAM51の1ビット検出に要する消費電力量を、wはウェイ数を、sはCAMサブタグアドレスのビット数を、tはタグアドレスのビット数を、NCはCAMへのアクセス数を、NS1は第1世代として管理されているSRAMのデータへのアクセス数を、NS2は第2世代として管理されているSRAMのデータへのアクセス数をそれぞれ示している。
 さらに、Edataは、以下の式(5)で表される。
 Edata =β×l×(NS1+NS2)             ・・・(5)
 ここで、βはSRAMのデータ1ビットの出力に要する消費電力量を、lは1ライン当たりのデータビット長をそれぞれ表している。
 まず、図14を参照して、タグアドレスの検出に要する消費電力量Etagおよびデータ出力に要する消費電力量Edataと、それぞれのCAMサブタグアドレスのビット長sとの関係について説明する。
 図14においては、左部が命令キャッシュ処理であり、右部がデータキャッシュ処理である。また、いずれも実線および1点鎖線がタグアドレスの検出に要する消費電力量Etagを、点線および2点鎖線がデータ出力に要する消費電力量Edataをそれぞれ表している。タグアドレスの検出に要する消費電力量Etagは、SRAMタグアドレス1ビット検出に要する電力量を単位とする。データ出力に要する消費電力量Edataは、SRAMデータ1ビットの出力に要する電力量を単位とする。尚、1ラインは256ビットとしている。また、CAM51の1ビット検出に要する消費電力量α=5とし、CAMサブタグアドレスのビット数s=0乃至8、第1世代ウェイ数r =0,4について比較している。比較のために、CAMサブタグアドレスのビット数s=8におけるLPHAC法のタグアドレスの検出に要する消費電力量Etag(×印)およびデータ出力に要する消費電力量Edata(十字マーク)も示している。
 LPHAC法では、CAMサブタグアドレスのビット数sを小さくするとミス率が大きくなるため、CAMサブタグアドレスのビット数s≧8でなければならないのに対し、本発明のキャッシュメモリでは、CAMサブタグアドレスのビット数s<8とすることが可能である。
 タグアドレスの検出に要する消費電力量Etagは、CAMサブタグアドレスのビット数sを小さくすると線形に減少する。CAMサブタグアドレスのビット数s=8に対して、CAMサブタグアドレスのビット数s=4では、タグアドレス検出に要する消費電力量はほぼ1/2となる。
 データ出力に要する消費電力量Edataは、CAMサブタグアドレスのビット数sを小さくするとある値以下では急激に増加する。急激に増加するときのCAMサブタグアドレスのビット数sの値は、第1世代SRAMのウェイ数rによって異なる。ウェイ数r=0のときはCAMサブタグアドレスのビット数sはs≦6で急激に増加するのに対し、ウェイ数r=4とすれば、CAMサブタグアドレスのビット数s=4まであまり変化しない。LPHAC法は、タグアドレスの検出に要する消費電力量Etagおよびデータ出力に要する消費電力量Edata共に本発明のキャッシュメモリと同程度の値をとるが、CAMサブタグアドレスのビット数sを小さくすることが難しい。
 本発明のキャッシュメモリは、ウェイ数r=0のときは世代を分けていないため、CAMサブタグアドレスのビット数sを小さくすることが難しいが、図15の波形図a,bで示されるように、ウェイ数r=4ならば、世代を分けた効果が表れる。
 ここで、図15の波形図a,bは、それぞれ命令キャッシュとデータキャッシュについて、CAMサブタグアドレスのビット数sをs=4とし、ウェイ数rをr=0,1,2,4,8,16,32と変えたとき、点線で示されるタグアドレスの検出に要する消費電力量Etagおよび実線で示されるデータ出力に要する消費電力量Edataのウェイ数rとの関係が示されている。
 すなわち、命令キャッシュ、およびデータキャッシュのどちらの場合も、ウェイ数r=2乃至4の近傍で消費電力量が最少となる。ウェイ数rの値により消費電力量に最小値が現れるのは、ウェイ数rが小さいと第2世代に設定されたデータとの比較検索回数が増加し、ウェイ数rが大きいと第1世代に設定されたデータで複数比較検索の頻度が上がるためである。
 ところで、SRAMにおいて、デコーダや比較器のような論理回路の電力が、ワードライン駆動時に流れるビットラインキャパシタンスの充放電に要する電力と比較して十分小さいという原理が知られている(Itoh, K., Sasaki, K. and Nakagome, Y.: Trends in low-power RAM circuit technologies, Proceedings of the IEEE, Vol.83, No.4, pp.524-543(1995).参照)。そこで、本発明のキャッシュメモリの消費電力量Eについて考えるに当たっては、その原理に則り、SRAMサブタグアドレス1ビットの検出に要する電力量は、SRAMデータ1ビット出力に要する電力量に等しいとする近似を用いる。すなわち、式(5)においてSRAMのデータ1ビットの出力に要する消費電力量β=1とする。
 図15の波形図c,dは、それぞれ命令キャッシュとデータキャッシュについて、CAMサブタグアドレスのビット数sを変えたときの命令キャッシュとデータキャッシュの消費電力量Eを示しており、点線はウェイ数rがr=0のときであり、実線はウェイ数rがr=4のときの波形である。また、図15の波形図e,dは、それぞれウェイ数r=4とし、第1世代のウェイ数rを変えたときの命令キャッシュとデータキャッシュの消費電力量Eを示している。これらの波形図から、本発明のキャッシュメモリにおいては、ウェイ数r=4の場合、CAMサブタグアドレスのビット数sがs=2のとき、消費電力量が最小となる。
 次に、図16を参照して、従来のSRAM、CAM、およびLPHAC法、並びに本発明のキャッシュメモリの消費電力量を比較する。比較対象は、図16の左から、4,8ウェイの従来型(Traditional)SRAM、32ウェイの従来型CAM、CAMサブタグアドレスのビット数sがs=8のLPHAC法、並びに、ウェイ数rがr=4であって、かつ、CAMサブタグアドレスのビット数sがs=2の本発明のキャッシュメモリ(proposed)である。なお、いずれの場合もラインサイズが32bytesであり、キャッシュ容量が8KBである。また、従来型のCAMとLPHAC法、および本発明のキャッシュメモリについては、図16の左からCAMの消費電力量α= 5,7,10と値を変えて比較を行った命令キャッシュ(図16上段)、およびデータキャッシュ(図16下段)の消費電力量の比較結果が示されている。
 命令キャッシュ、およびデータキャッシュの消費電力量は、共に従来型のCAMが、いずれの場合と比較しても消費電力量が一番高いことが示されている。LPHAC法は従来型のCAMに比べると消費電力量を抑えることができている。しかしながら、従来型のSRAMと比べると、CAMの消費電力量α≦7のとき、ウェイ数rがr=8のSRAMの消費電力量より小さくなるが、ウェイ数rがr=4のSRAMの消費電力量と比べるといずれも大きくなる。これに対して、本発明のキャッシュメモリではαによらず従来型CAMとLPHAC法のいずれよりも小さくなる。CAMの消費電力量α=10において、従来型のウェイ数rがr=4のSRAMと同程度の消費電力量となっており、CAMの消費電力量αによらず、略同等の消費電力量になっている。
 このように、本発明のキャッシュメモリはキャッシュミス率の低下を抑制しつつ、消費電力を低減させることが可能となっている。
 尚、本明細書において、プログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
 11 CPU, 12 アドレス入力部, 13 キャッシュメモリ, 14 メインメモリ, 21 インデックスアドレス抽出部, 22 タグアドレス抽出部, 22a CAMサブタグアドレス抽出部, 22b SRAMサブタグアドレス抽出部, 41 デコード部, 42 サブバンク, 51 CAM, 52 SRAM, 53 LRU管理部, 53a LRU管理リスト, 54 読出部, 55 置換部, 71 比較検索部, 72 出力部, 73 書戻部, 74 世代管理部, 74a 世代管理リスト, 75 書戻管理部, 76 書込部, 77 書換部, 78 格納部, 81 世代判定部

Claims (11)

  1.  連想度n(nは自然数)のCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)とを有し、接続されるCPU(Central Processing Unit)より第1サブタグアドレスおよび第2サブタグアドレスとからなるタグアドレスを指定され、対応するデータを格納または読み出すキャッシュメモリであって、
     前記データを、読み出し要求された時期に応じて、少なくとも、最近読み出しが要求された第1世代と、前記最近ではない時期に読み出しが要求された第2世代とに分類し、
     前記CAMにて、前記第1サブタグアドレスを管理し、
     前記SRAMにて、前記第2サブタグアドレスを管理し、
     同一の前記第1サブタグアドレスに対し、複数の前記第2サブタグアドレスを対応付けることを容認する
     ことを特徴とするキャッシュメモリ。
  2.  連想度n(nは自然数)のCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)とを有し、接続されるCPU(Central Processing Unit)より第1サブタグアドレスおよび第2サブタグアドレスとからなるタグアドレスを指定され、対応するデータを格納または読み出すキャッシュメモリであって、
     前記データを、読み出し要求された時期に応じて、少なくとも、最近読み出しが要求された第1世代と、前記最近ではない時期に読み出しが要求された第2世代とに分類する世代管理手段と、
     前記CAMにて、前記第1サブタグアドレスを管理し、前記CPUより指定される前記タグアドレスの第1サブタグアドレスとの比較により、対応する第1サブタグアドレスを検索する第1検索手段と、
     前記SRAMにて、前記第2サブタグアドレスを管理し、前記第1検索手段により検索された第1サブタグアドレスを含み、かつ、前記第1世代のデータに対応する前記タグアドレスの第2サブタグアドレスとの比較により、対応する第2サブタグアドレスを検索する第2検索手段と、
     前記第2検索手段により検索された、前記第2サブタグアドレスに対応付けて記憶されている前記データを出力する出力手段とを含み、
     同一の前記第1サブタグアドレスに対し、複数の前記第2サブタグアドレスを対応付けることを容認する
     を含むことを特徴とするキャッシュメモリ。
  3.  前記第2検索手段は、前記第1世代のデータに対応する前記第タグアドレスの第2サブタグアドレスとの比較により、対応する第2サブタグアドレスを検索できないとき、前記第2世代のデータに対応する前記タグアドレスの前記第2サブタグアドレスとの比較により、対応する第2サブタグアドレスを検索する
     ことを特徴とする請求項2に記載のキャッシュメモリ。
  4.  前記第1検索手段による前記第1サブタグアドレスの比較によりデータが検索されないとき、または前記第2検索手段により前記第2サブタグアドレスの比較により第2世代のデータが検索されないとき、接続するメインメモリより前記読み出しが要求されたタグアドレスに対応するデータを読み出し、前記世代管理手段にて管理される、前記第2世代のデータのうち、最も古く読み出されたデータを、前記メインメモリより読み出されたデータで置換し、併せて前記第1サブタグアドレス、および第2サブタグアドレスを置換する置換手段をさらに含む
     ことを特徴とする請求項2に記載のキャッシュメモリ。
  5.  前記置換手段は、一の前記第1サブタグアドレスに対し、複数の前記第2サブタグアドレスが対応付けられて置換されることを許容する
     ことを特徴とする請求項4に記載のキャッシュメモリ。
  6.   前記世代管理手段は、前記第2のサブタグアドレスにより管理される各データが読み出された時期に基づいて、前記データが第1世代であるか、または、前記第2世代であるかを世代管理リストにより管理し、前記置換手段により前記メインメモリより読み出されたデータで、前記最も古く読み出されたデータが置換されるとき、前記第2サブタグアドレスにより管理されるデータが読み出された時期が、最も古く読み出されたデータを削除し、前記メインメモリより読み出されたデータを、最近読み出された時期として世代管理リストを更新する
     ことを特徴とする請求項4に記載のキャッシュメモリ。
  7.  前記世代管理手段は、前記世代管理リストに基づいて、前記第2サブタグアドレスにより管理される各データについて、最近読み出されたデータを第1世代のデータとし、最近ではない時期に読み出されたデータを第2世代のデータとして、世代管理する
     ことを特徴とする請求項6に記載のキャッシュメモリ。
  8.  前記連想度nが連想度32であって、前記タグアドレスが24ビットの場合、第1サブタグアドレスが2ビットであり、第2サブタグアドレスが22ビットである
     ことを特徴とする請求項2に記載のキャッシュメモリ。
  9.  前記連想度nが連想度32の前記第1サブタグアドレスで管理されるデータのうち、前記第1世代のデータは、読み出された時期が最近に近い順に上位2位までのデータである
     ことを特徴とする請求項8に記載のキャッシュメモリ。
  10.  複数の請求項2乃至9のいずれかに記載のキャッシュメモリと、
     前記CPUと、
     前記CPUより前記タグアドレスで指定されるデータの読み出し、または書き込みが要求された場合、前記タグアドレスより前記第1のサブタグアドレスを抽出する第1のサブタグアドレス抽出手段と、
     前記CPUより前記タグアドレスで指定されるデータの読み出し、または書き込みが要求された場合、前記タグアドレスより前記第2のサブタグアドレスを抽出する第2のサブタグアドレス抽出手段とを含むことを特徴とするプロセッサ。
  11.  連想度n(nは自然数)のCAM(Content Addressable Memory)とSRAM(Static Random Access Memory)とを有し、接続されるCPU(Central Processing Unit)より第1サブタグアドレスおよび第2サブタグアドレスとからなるタグアドレスを指定され、対応するデータを格納または読み出すキャッシュメモリの制御方法であって、
     前記データを、読み出し要求された時期に応じて、少なくとも、最近読み出しが要求された第1世代と、前記最近ではない時期に読み出しが要求された第2世代とに分類する世代管理ステップと、
     前記CAMにて、前記第1サブタグアドレスを管理し、前記CPUより指定される前記タグアドレスの第1サブタグアドレスとの比較により、対応する第1サブタグアドレスを検索する第1検索ステップと、
     前記SRAMにて、前記第2サブタグアドレスを管理し、前記第1検索ステップの処理により検索された第1サブタグアドレスを含み、かつ、前記第1世代のデータに対応する前記タグアドレスの第2サブタグアドレスとの比較により、対応する第2サブタグアドレスを検索する第2検索ステップと、
     前記第2検索ステップの処理により検索された、前記第2サブタグアドレスに対応付けて記憶されている前記データを出力する出力ステップとを含み、
     同一の前記第1サブタグアドレスに対し、複数の前記第2サブタグアドレスを対応付けることを容認する
     ことを特徴とする
     を含むキャッシュメモリの制御方法。
PCT/JP2010/068298 2009-10-20 2010-10-19 キャッシュメモリおよびその制御方法 WO2011049051A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011537244A JP5622155B2 (ja) 2009-10-20 2010-10-19 キャッシュメモリおよびその制御方法
EP10824900.4A EP2492818A4 (en) 2009-10-20 2010-10-19 CACHE-MEMORY AND ITS CONTROL METHOD
US13/503,225 US8904111B2 (en) 2009-10-20 2010-10-19 Cache memory with CAM and SRAM sub-tags and generation control

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009-241446 2009-10-20
JP2009241446 2009-10-20

Publications (1)

Publication Number Publication Date
WO2011049051A1 true WO2011049051A1 (ja) 2011-04-28

Family

ID=43900277

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/068298 WO2011049051A1 (ja) 2009-10-20 2010-10-19 キャッシュメモリおよびその制御方法

Country Status (4)

Country Link
US (1) US8904111B2 (ja)
EP (1) EP2492818A4 (ja)
JP (1) JP5622155B2 (ja)
WO (1) WO2011049051A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009145776A1 (en) * 2008-05-29 2009-12-03 Hewlett-Packard Development Company, L.P. Replaceable printer component including memory storing data defined by tags and sub-tags
US9042652B2 (en) * 2012-11-01 2015-05-26 Intel Corporation Techniques for connected component labeling
KR20150009883A (ko) * 2013-07-17 2015-01-27 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US9304929B2 (en) 2013-10-24 2016-04-05 Mediatek Singapore Pte. Ltd. Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device
US20180088829A1 (en) * 2016-09-29 2018-03-29 Qualcomm Incorporated Area efficient architecture for multi way read on highly associative content addressable memory (cam) arrays
US10725699B2 (en) * 2017-12-08 2020-07-28 Sandisk Technologies Llc Microcontroller instruction memory architecture for non-volatile memory
US10824376B2 (en) 2017-12-08 2020-11-03 Sandisk Technologies Llc Microcontroller architecture for non-volatile memory
US10777240B1 (en) 2019-03-07 2020-09-15 Sandisk Technologies Llc Efficient control of memory core circuits
CN111045960B (zh) * 2019-11-21 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 一种多像素格式存储的Cache电路
US11507498B2 (en) 2020-03-05 2022-11-22 Sandisk Technologies Llc Pre-computation of memory core control signals

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62293596A (ja) * 1986-06-12 1987-12-21 Matsushita Electric Ind Co Ltd 連想記憶装置
JPH0535599A (ja) * 1991-07-26 1993-02-12 Matsushita Electric Ind Co Ltd 情報処理装置
JPH06131265A (ja) * 1992-03-13 1994-05-13 Inmos Ltd 完全連想キャッシュメモリおよびキャッシュメモリ装置
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
JP2003519835A (ja) * 2000-01-03 2003-06-24 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ウェイ予測がミスした時にサーチを方向付けるための、予測されないウェイからの部分的なタグを提供するキャッシュ
JP3850669B2 (ja) * 2000-03-13 2006-11-29 三星電子株式会社 キャッシュメモリ

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004104841A1 (ja) * 2003-05-21 2004-12-02 Fujitsu Limited アドレス変換バッファの電力制御方法及びその装置
US7480767B2 (en) 2006-06-15 2009-01-20 Sap Ag Cache with time-based purging and computation of purged items
ATE539578T1 (de) 2008-04-09 2012-01-15 Koninkl Philips Electronics Nv Verfahren zur verhinderung von datenübertragungen in einem erkennungskanal

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62293596A (ja) * 1986-06-12 1987-12-21 Matsushita Electric Ind Co Ltd 連想記憶装置
JPH0535599A (ja) * 1991-07-26 1993-02-12 Matsushita Electric Ind Co Ltd 情報処理装置
JPH06131265A (ja) * 1992-03-13 1994-05-13 Inmos Ltd 完全連想キャッシュメモリおよびキャッシュメモリ装置
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
JP2003519835A (ja) * 2000-01-03 2003-06-24 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ウェイ予測がミスした時にサーチを方向付けるための、予測されないウェイからの部分的なタグを提供するキャッシュ
JP3850669B2 (ja) * 2000-03-13 2006-11-29 三星電子株式会社 キャッシュメモリ

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ITOH, K.; SASAKI, K.; NAKAGOME, Y.: "Trends in low-power RAM circuit technologies", PROCEEDINGS OF THE IEEE, vol. 83, no. 4, 1995, pages 524 - 543
See also references of EP2492818A4 *
ZHANG, C.: "A Low Power Highly Associative Cache for Embedded Systems", PROC. IEEE ICCD, 2006, pages 31 - 36, XP031159204

Also Published As

Publication number Publication date
EP2492818A1 (en) 2012-08-29
US20120210056A1 (en) 2012-08-16
JPWO2011049051A1 (ja) 2013-03-14
JP5622155B2 (ja) 2014-11-12
US8904111B2 (en) 2014-12-02
EP2492818A4 (en) 2014-07-30

Similar Documents

Publication Publication Date Title
JP5622155B2 (ja) キャッシュメモリおよびその制御方法
US6912623B2 (en) Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US6990557B2 (en) Method and apparatus for multithreaded cache with cache eviction based on thread identifier
JP4920378B2 (ja) 情報処理装置およびデータ検索方法
JP7049338B2 (ja) タグマッチングコマンドに応答する記憶回路
US9582282B2 (en) Prefetching using a prefetch lookup table identifying previously accessed cache lines
US8180965B2 (en) System and method for cache access prediction
JPH0364893B2 (ja)
US20080168236A1 (en) Performance of a cache by detecting cache lines that have been reused
US9298615B2 (en) Methods and apparatus for soft-partitioning of a data cache for stack data
JP2012203560A (ja) キャッシュメモリおよびキャッシュシステム
US20040123044A1 (en) Page descriptors for prefetching and memory management
CN103198026A (zh) 指令高速缓存功耗降低
JP3929872B2 (ja) キャッシュメモリ、プロセッサ及びキャッシュ制御方法
JPWO2005050454A1 (ja) キャッシュメモリおよびその制御方法
US20210240631A1 (en) Cache memory device, system including the same, and method of operating the same
US20140013054A1 (en) Storing data structures in cache
US6397298B1 (en) Cache memory having a programmable cache replacement scheme
US9053030B2 (en) Cache memory and control method thereof with cache hit rate
JP3078303B2 (ja) キャッシュメモリ制御回路
JP2700147B2 (ja) 命令キャッシュ・フラッシュ・オン・rei制御
US20120102271A1 (en) Cache memory system and cache memory control method
WO2010089799A1 (ja) キャッシュメモリシステム、コンピュータシステム、及びキャッシュメモリアクセス方法
JPH0612331A (ja) キャッシュメモリ制御装置
JPH04288647A (ja) キャッシュメモリにおける置き換え制御装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10824900

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2011537244

Country of ref document: JP

Ref document number: 13503225

Country of ref document: US

REEP Request for entry into the european phase

Ref document number: 2010824900

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2010824900

Country of ref document: EP