WO2011151944A1 - キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法 - Google Patents
キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法 Download PDFInfo
- Publication number
- WO2011151944A1 WO2011151944A1 PCT/JP2011/000431 JP2011000431W WO2011151944A1 WO 2011151944 A1 WO2011151944 A1 WO 2011151944A1 JP 2011000431 W JP2011000431 W JP 2011000431W WO 2011151944 A1 WO2011151944 A1 WO 2011151944A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- unit
- memory access
- way
- access instruction
- prediction
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
- G06F2212/6082—Way prediction in set-associative cache
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the present invention relates to a set associative cache memory device, and more particularly to a cache memory device that predicts a hit way.
- a small-capacity, high-speed cache memory such as an SRAM (Static Random Access Memory) has been used.
- SRAM Static Random Access Memory
- Patent Document 1 discloses a set associative cache memory.
- the conventional memory device described in Patent Document 1 includes a way determination unit that outputs a way determination signal indicating whether a way has hit, and a way prediction unit that generates a predicted value of the way determination signal.
- the conventional memory device activates only the data storage unit of the way predicted based on the predicted value from the way prediction unit.
- the activation means supplying a clock.
- the conventional memory device includes a way prediction determination unit that compares the way determination signal from the way determination unit with a predicted value and outputs a way prediction determination signal in the case of a mismatch. Then, the conventional memory device changes the predicted value of the way prediction unit to a way determination signal indicating the hit way based on the way prediction determination signal from the way prediction determination unit.
- the conventional memory device can reduce power consumption and time lag when reading data.
- the above-described conventional technique has a problem that when prediction is lost, there is no means for avoiding overhead due to a prediction error, and the performance of the cache memory is deteriorated.
- an object of the present invention is to provide a cache memory device and a cache memory control method capable of suppressing deterioration in performance and suppressing an increase in power consumption. It is another object of the present invention to provide a program conversion apparatus and a program conversion method capable of generating a memory access instruction corresponding to the cache memory device according to the present invention.
- a cache memory device is a cache memory device connected to a processor unit that executes a plurality of programs while switching, and is connected to the processor unit and includes a tag storage unit And a set associative cache memory including a plurality of ways each including a data storage unit, and a way prediction for predicting a hit way among the plurality of ways when a memory access instruction is decoded by the processor unit And a clock control unit that controls a clock supplied to the plurality of ways based on a type of the memory access instruction decoded by the processor unit, and the clock control unit includes a first memory access instruction A plurality of ways included in the plurality of ways when decoded by the processor unit; A clock is supplied only to the data storage unit of the way predicted by the way prediction unit among the data storage units, and a second memory access instruction different from the first memory access instruction is decoded by the processor unit Regardless of the prediction result by the way prediction unit, a clock is supplied to a predetermined data
- the clock is supplied to the data storage unit of the predetermined way without using the way prediction result. For this reason, for example, when the prediction is likely to be off, the prediction result can be ignored, so that it is possible to suppress the repetition of the processing due to the prediction being off. Therefore, deterioration of the performance of the cache memory device can be suppressed, and an increase in power consumption due to repeated processing can also be suppressed.
- the way prediction result is used and the clock is supplied only to the data storage unit of the predicted way, so that an increase in power consumption can be suppressed.
- the first memory access instruction is an instruction to read / write an exclusive variable between the plurality of programs to / from the memory
- the second memory access instruction is a variable shared between the plurality of programs to the memory. It may be an instruction to read and write.
- the shared variable may be referred to by other programs (or threads). Therefore, when the second memory access instruction for reading / writing the shared variable from / to the memory is decoded, the way prediction is performed. There is a high possibility of coming off.
- the exclusive variable is not referred to by other programs, when the first memory access instruction that reads / writes the exclusive variable to / from the memory is decoded, the possibility that the way is unpredictable is low. Therefore, when there is a high possibility of being out of prediction, the prediction result is ignored, and when there is a low possibility of being out of prediction, the prediction is used, so that deterioration in performance and increase in power consumption can be suppressed. .
- the first memory access instruction may be an instruction for reading / writing a variable declared as a local variable into / from a memory
- the second memory access instruction may be an instruction for reading / writing a variable declared as a shared variable into / from a memory.
- the second memory access instruction for reading / writing the variable declared as a memory from / to the memory is decoded. If this is the case, there is a high possibility that the way is unpredictable.
- variables declared as local variables are not referred to by other programs, if the first memory access instruction that reads / writes the variables declared as local variables is decoded, the way may be unpredictable. The nature is low. Therefore, when there is a high possibility of being out of prediction, the prediction result is ignored, and when there is a low possibility of being out of prediction, the prediction is used, so that deterioration in performance and increase in power consumption can be suppressed. .
- the second memory access instruction may include an attribute bit indicating that the way prediction result is not used.
- the clock control unit is further predicted by the way prediction unit among a plurality of tag storage units included in the plurality of ways when the first memory access instruction is decoded by the processor unit.
- a clock is supplied only to the tag storage unit of the way and the second memory access instruction is decoded by the processor unit, a plurality of tags included in the plurality of ways regardless of a prediction result by the way prediction unit Of the storage units, a clock may be supplied to a predetermined tag storage unit.
- the clock control unit may supply a clock to all the data storage units included in the plurality of ways when the second memory access instruction is decoded by the processor unit.
- the clock is supplied to all the data storage units, so that when the tag is hit, it is possible to prevent the data from being mis-hit. Can be suppressed.
- the plurality of ways are assigned to the plurality of programs, and the clock control unit stores a plurality of data included in the plurality of ways when the second memory access instruction is decoded by the processor unit.
- the clock may be supplied to a data storage unit included in a way allocated to the program including the second memory access instruction.
- This provides a clock to one or more data storages of one or more ways allocated to execute the program when there is a high probability of being unpredictable, so when a tag hits, The possibility of data hits being reduced can be reduced. Furthermore, power consumption can be reduced compared to the case where clocks are supplied to all data storage units.
- the way prediction unit includes a history holding unit that holds history information indicating a history of hit ways, a prediction unit that predicts the way to be hit based on the history information, and an update that updates the history information.
- the update unit updates the history information using information indicating a way hit by the first memory access instruction when the first memory access instruction is decoded by the processor unit.
- the history information may not be updated when the second memory access instruction is decoded by the processor unit.
- the way prediction unit includes a history holding unit that holds history information indicating a history of hit ways, a prediction unit that predicts the way to be hit based on the history information, and an update that updates the history information.
- the update unit updates the history information using information indicating a way hit by the first memory access instruction when the first memory access instruction is decoded by the processor unit.
- the history information may be updated using information indicating a way hit by the second memory access instruction.
- a program conversion apparatus is a program conversion apparatus that generates a memory access instruction corresponding to a cache memory having a way prediction function, and extracts a memory access instruction from an input program , A determination unit that determines whether or not the variable indicated by the memory access instruction extracted by the extraction unit is a global variable, and a corresponding memory access when the determination unit determines that the variable is a global variable A conversion unit that converts the instruction into a prediction ignore memory access instruction for preventing the cache memory from using the way prediction result.
- the global variable may be referred to by other programs (or threads)
- a memory access instruction for reading / writing the global variable from / to the memory is decoded, there is a high possibility that the way is unpredictable. Therefore, the prediction result can be ignored in the cache memory by converting the memory access instruction for reading / writing the global variable into / from the memory into the prediction ignoring memory access instruction. Therefore, it is possible to suppress deterioration in performance of the cache memory and increase in power consumption.
- the determination unit may determine that the variable is a global variable when the variable indicated by the memory access instruction extracted by the extraction unit is a shared variable among a plurality of programs.
- shared variables may be referenced by other programs (or threads), so if a memory access instruction that reads or writes shared variables to / from memory is decoded, the way may be unpredictable. High nature. Therefore, when there is a high possibility that the prediction will be lost, the prediction result is ignored, so that deterioration in performance and increase in power consumption can be suppressed.
- the determination unit may determine that the variable is a global variable.
- a variable declared as a shared variable may be referred to by other programs (or threads). Therefore, when a memory access instruction that reads / writes a variable declared as a shared variable from / to a memory is decoded, There is a high possibility that the way is unpredictable. Therefore, when there is a high possibility that the prediction will be lost, the prediction result is ignored, so that deterioration in performance and increase in power consumption can be suppressed.
- the conversion unit converts the corresponding memory access instruction into the prediction ignoring memory access instruction including an attribute bit indicating that the way prediction result is not used. May be.
- a cache memory control method is a cache memory control method for controlling a cache memory connected to a processor unit that executes a plurality of programs while switching, wherein the cache memory includes the processor unit Is a set associative cache memory including a plurality of ways each including a tag storage unit and a data storage unit, and the cache memory control method is configured such that when a memory access instruction is decoded by the processor unit, A way prediction step for predicting a hit way among the plurality of ways, and a clock control step for controlling a clock supplied to the plurality of ways based on a type of a memory access instruction decoded by the processor unit.
- the clock control step When the first memory access instruction is decoded by the processor unit, the clock is supplied only to the data storage unit of the way predicted in the way prediction step among the plurality of data storage units included in the plurality of ways.
- a second memory access instruction different from the first memory access instruction is decoded by the processor unit, a plurality of data storage units included in the plurality of ways regardless of a prediction result in the way prediction step Among these, a clock is supplied to a predetermined data storage unit.
- the clock is supplied to the data storage unit of the predetermined way without using the way prediction result. For this reason, for example, when the prediction is likely to be off, the prediction result can be ignored, so that it is possible to suppress the repetition of the processing due to the prediction being off. Therefore, it is possible to suppress the deterioration of the performance of the cache memory and to suppress an increase in power consumption due to repeated processing.
- the way prediction result is used and the clock is supplied only to the data storage unit of the predicted way, so that an increase in power consumption can be suppressed.
- a program conversion method is a program conversion method for generating a memory access instruction corresponding to a cache memory having a way prediction function, and extracting a memory access instruction from an input program And a determination step for determining whether or not the variable indicated by the memory access instruction extracted in the extraction step is a global variable, and if it is determined in the determination step that the variable is a global variable, the corresponding memory access
- FIG. 1 is a block diagram showing an example of the configuration of a cache memory system according to Embodiment 1 of the present invention.
- FIG. 2 is a diagram showing an example of a memory access instruction according to the first embodiment of the present invention.
- FIG. 3 is a diagram showing an example of the relationship among the instruction, the prediction way, and the access way according to Embodiment 1 of the present invention.
- FIG. 4 is a block diagram showing an example of the configuration of the way prediction unit according to Embodiment 1 of the present invention.
- FIG. 5 is a diagram showing an example of the relationship among the instruction, the prediction way, the access way, and the hit way according to Embodiment 1 of the present invention.
- FIG. 1 is a block diagram showing an example of the configuration of a cache memory system according to Embodiment 1 of the present invention.
- FIG. 2 is a diagram showing an example of a memory access instruction according to the first embodiment of the present invention.
- FIG. 3 is a diagram showing an example of the relationship among the
- FIG. 6 is a flowchart showing an example of a cache memory control method according to the first embodiment of the present invention.
- FIG. 7 is a diagram showing an example of a memory access instruction according to the first embodiment of the present invention.
- FIG. 8 is a diagram showing an example of the relationship among the instruction, the prediction way, the access way, and the hit way according to Embodiment 1 of the present invention.
- FIG. 9 is a block diagram showing an example of the configuration of the program conversion apparatus according to Embodiment 1 of the present invention.
- FIG. 10 is a flowchart showing an example of the operation of the program conversion apparatus according to the first embodiment of the present invention.
- FIG. 10 is a flowchart showing an example of the operation of the program conversion apparatus according to the first embodiment of the present invention.
- FIG. 11 is a diagram illustrating an example of a relationship among an instruction, a prediction way, an access way, and a hit way according to a modification of the first embodiment of the present invention.
- FIG. 12 is a block diagram showing an example of the configuration of the cache memory device according to the second embodiment of the present invention.
- FIG. 13 is a diagram showing an example of a memory access instruction according to the second embodiment of the present invention.
- FIG. 14 is a diagram illustrating an example of a relationship among an instruction, a prediction way, an access way, and a hit way according to Embodiment 2 of the present invention.
- FIG. 15 is a diagram illustrating an example of a correspondence relationship between threads and weights according to a modification of the embodiment of the present invention.
- FIG. 16 is a block diagram showing an example of a configuration of a cache memory device according to a modification of the embodiment of the present invention.
- FIG. 17 is a diagram showing an example of a memory access instruction according to a modification of the embodiment of the
- the cache memory device is a cache memory device connected to a processor that executes a plurality of programs while switching.
- the cache memory device according to the first embodiment includes a cache memory including a plurality of ways including a tag storage unit and a data storage unit, and a way that hits among the plurality of ways when a memory access instruction is executed by the processor.
- a way prediction unit for predicting Furthermore, the cache memory device according to the first embodiment includes a clock control unit, and the clock control unit only stores the data storage unit of the way predicted by the way prediction unit when the first memory access instruction is decoded.
- a clock is supplied, and the clock is supplied to a predetermined data storage unit when the second memory access instruction is decoded.
- the cache memory device ignores the prediction result by the way prediction unit when the second memory access instruction that is highly likely to be predicted is decoded by the processor unit.
- the clock is supplied to a predetermined data storage unit.
- the cache memory device is predicted according to the prediction result by the way prediction unit when the first memory access instruction that is unlikely to be unpredicted is decoded by the processor unit.
- a clock is supplied to the data storage unit of the way.
- FIG. 1 is a block diagram showing an example of the configuration of the cache memory system 10 according to the first embodiment of the present invention.
- the cache memory system 10 includes a cache memory device 100 and a processor unit 200.
- the cache memory device 100 is connected to the processor unit 200 and a main memory (not shown). When the memory access instruction is executed by the processor unit 200, the cache memory device 100 determines whether it is a hit or a miss hit. Specifically, the cache memory device 100 determines whether an entry corresponding to the address indicated by the memory access instruction exists in the cache memory (hit) or not (miss hit).
- the cache memory device 100 determines that there is a hit when there is an entry corresponding to the read address indicated by the read instruction and the data stored in the entry is valid. If not, it is determined as a miss hit.
- the cache memory device 100 determines a hit when there is an entry corresponding to the write address indicated by the write instruction, and determines that it is a miss hit otherwise.
- the cache memory device 100 When the read instruction is executed and it is determined as a miss hit, the cache memory device 100 creates an entry in the cache memory and reads the corresponding data from the main memory. Then, the cache memory device 100 writes the read data in the created entry and outputs it to the processor unit 200.
- the cache memory device 100 creates an entry in the cache memory and writes data to the created entry. Then, the cache memory device 100 writes the data written in the entry to the main memory at a predetermined timing.
- the cache memory device 100 includes a cache memory 110, a way prediction unit 120, and a TLB (Translation Look-aside Buffer) 130.
- a cache memory 110 includes a cache memory 110, a way prediction unit 120, and a TLB (Translation Look-aside Buffer) 130.
- TLB Translation Look-aside Buffer
- the cache memory 110 is a set associative cache memory having n (n is an integer of 2 or more) ways, and is connected to the processor unit 200. Specifically, the cache memory 110 is connected to the processor 210 included in the processor unit 200, and when a memory access instruction is executed, an address 151 included in the memory access instruction is input. In the first embodiment of the present invention, as an example, the cache memory 110 has two ways.
- the write data 152 is input to the cache memory 110. Further, the cache memory 110 outputs read data 153 to the processor 210 when a read command is executed.
- the cache memory 110 includes a tag storage unit group 111, a data storage unit group 112, a clock control unit 113, a hit determination unit 114, and a selector 115.
- the address 151 is a logical address (virtual address) and is converted into a physical address by the TLB 130. Then, it is assumed that the converted physical address is input to the cache memory 110 as the address 151 (the route indicating this processing is not shown in FIG. 1). Note that the cache memory 110 may store virtual addresses.
- the tag storage unit group 111 has n tag storage units, that is, the same number of tag storage units as the number of ways, and a plurality of tag addresses can be stored in each of the n tag storage units.
- One tag storage unit includes a plurality of (for example, 16) entries, and can store one tag address in each entry.
- the tag address is, for example, 21 bits and is an address indicating a data writing destination or a data reading destination.
- the tag storage unit group 111 since there are two ways, the tag storage unit group 111 includes two tag storage units 111a and 111b.
- the address 151 is input to the tag storage units 111a and 111b.
- the address 151 includes, for example, a tag address, a set index, and a word index.
- the tag storage units 111a and 111b output the tag address stored in the entry corresponding to the set index included in the address 151 as tag data 160a and 160b.
- the data storage unit group 112 has n data storage units, that is, the same number of data storage units as the number of ways, and a plurality of data can be stored in each of the n data storage units.
- One data storage unit includes a plurality of (for example, 16) entries, that is, the same number of entries as one tag storage unit, and can store one data in each entry.
- the size of one data is, for example, 64 or 128 bytes.
- the data storage unit group 112 since there are two ways, the data storage unit group 112 includes two data storage units 112a and 112b.
- the address 151 is input to the data storage units 112a and 112b.
- the data storage units 112a and 112b output data corresponding to the set index included in the address 151 as data storage unit read data 161a and 161b.
- the tag storage unit 111a and the data storage unit 112a are included in the first way.
- One way includes a plurality of (for example, 16) entries (cache lines).
- Each of the plurality of entries includes one tag address in the tag storage unit 111a and one data in the data storage unit 112a. That is, the tag address stored in the tag storage unit 111a and the data stored in the data storage unit 112a are associated with each other.
- the tag storage unit 111b and the data storage unit 112b are included in the second way.
- write data 152 is input to the data storage unit group 112 together with the address 151. Then, the data storage unit group 112 determines the way and entry to be written based on the cache hit signal 162 and the address 151 input from the hit determination unit 114, and writes the write data 152 in the determined entry.
- the clock control unit 113 controls the clock supplied to the plurality of ways based on the type of the memory access instruction decoded by the processor unit 200. Specifically, the clock control unit 113, when the first memory access instruction is decoded, out of the plurality of data storage units included in the plurality of ways, the data storage unit of the way predicted by the way prediction unit 120 Only supply the clock.
- the first memory access instruction is, for example, an instruction for reading / writing an exclusive variable to / from a memory among a plurality of programs being executed by the processor 210.
- the clock control unit 113 sets predetermined data among a plurality of data storage units included in the plurality of ways regardless of the prediction result by the way prediction unit 120.
- a clock is supplied to the storage unit. More specifically, the clock control unit 113 supplies a clock to all data storage units as a predetermined data storage unit.
- the second memory access instruction is a different type of instruction from the first memory access instruction.
- the second memory access instruction is an instruction to read / write a shared variable between a plurality of programs being executed by the processor 210.
- the clock control unit 113 has n clock control signal generation units, that is, the same number of clock control signal generation units as the number of ways. In this embodiment, since there are two ways, the clock control unit 113 includes two clock control signal generation units 113a and 113b.
- the clock control signal generators 113a and 113b are configured by, for example, OR circuits. Specifically, as shown in FIG. 1, the shared access signal 156 and the way prediction signal 158a output from the way prediction unit 120 are input to the clock control signal generation unit 113a. If at least one of the shared access signal 156 and the way prediction signal 158a is High level, the clock control signal generation unit 113a outputs the clock control signal 159a.
- the way prediction signal 158a is a signal indicating whether or not the first way is predicted to be a hit way.
- the way prediction unit 120 predicts that the first way is a hit way, the way prediction signal 158a is at a high level. Otherwise, the way prediction signal 158a is at a low level.
- the shared access signal 156 is a signal output from the processor unit 200 and is a signal that becomes a high level when the processor unit 200 decodes the second memory access instruction.
- the clock control signal 159a is a signal for supplying a clock to the data storage unit 112a included in the first way.
- the shared access signal 156 and the way prediction signal 158b output from the way prediction unit 120 are input to the clock control signal generation unit 113b. If at least one of the shared access signal 156 and the way prediction signal 158b is at a high level, the clock control signal generation unit 113b outputs a clock control signal 159b.
- the way prediction signal 158b is a signal indicating whether or not the second way is predicted to be a hit way. When the way prediction unit 120 predicts that the second way is a hit way, the way prediction signal 158b is at a high level, otherwise, the way prediction signal 158b is at a low level.
- the clock control signal 159b is a signal for supplying a clock to the data storage unit 112b included in the second way.
- the shared access signal 156 is input to all clock control signal generation units included in the clock control unit 113. Accordingly, since all the clock control signal generation units each output a clock control signal, the clock is supplied to all the data storage units included in the data storage unit group 112.
- the hit determination unit 114 determines a hit or a miss by using the physical page number 163 output from the TLB 130 and the tag data 160a and 160b. Specifically, the hit determination unit 114 determines that the tag address corresponding to the physical page number 163 is a hit when any of the tag data 160a and 160b indicates the hit. In the case of a hit, the hit determination unit 114 outputs a cache hit signal 162 indicating the hit and the hit way to the selector 115 and the way prediction unit 120.
- the cache hit signal 162 is output to the data storage unit group 112.
- the selector 115 selects the data storage unit read data 161 a and 161 b based on the cache hit signal 162, and outputs the selected data to the processor 210 as the read data 153.
- the way prediction unit 120 predicts a hit way among a plurality of ways when the processor 210 executes a memory access instruction. For example, the way prediction unit 120 predicts a hit way based on a history of ways hit in the past.
- the way prediction unit 120 controls the clock control unit 113 so that the clock is supplied only to the data storage unit of the predicted way. For example, when the way prediction unit 120 predicts that the first way is a hit way, the way prediction unit 120 outputs a way prediction signal 158a that is at a high level. Further, when the way prediction unit 120 predicts that the second way is a hit way, the way prediction unit 120 outputs a way prediction signal 158b that becomes a high level.
- the way prediction unit 120 performs the prediction of the way only when the exclusive access signal 157 is input from the processor unit 200, and does not need to perform the prediction of the way when the shared access signal 156 is input.
- the exclusive access signal 157 is a signal output from the processor unit 200, and is a signal that becomes a high level when the processor unit 200 decodes the first memory access instruction.
- the TLB 130 receives the address 151 from the processor 210.
- the address 151 is a logical address (virtual address), and the TLB 130 is a cache memory used for converting a logical address into a physical address at high speed.
- the TLB 130 outputs the physical page number 163.
- the configuration in which the cache memory device 100 includes the TLB 130 has been described, but the processor unit 200 may include the TLB 130.
- the TLB 130 may be provided separately from the cache memory device 100 and the processor unit 200.
- the cache memory device 100 when the exclusive access signal 157 is input from the processor unit 200, only the data storage unit of the way predicted by the way prediction unit 120 is used. Supply the clock. Further, when the shared access signal 156 is input from the processor unit 200, the cache memory device 100 ignores the prediction result by the way prediction unit 120 and supplies a clock to all the data storage units.
- the cache memory device 100 controls the data storage unit that supplies the clock based on the signal input from the processor unit 200. Therefore, when there is a high possibility that a prediction will be made, the clock can be supplied only to the data storage unit of the predicted way, so that an increase in power consumption can be suppressed. In addition, when the possibility of being predicted is low, supplying a clock to all the data storage units prevents the processing from being repeated if the prediction is lost, thus suppressing a decrease in latency. And deterioration of performance can be suppressed.
- the processor unit 200 is connected to the cache memory device 100 and the main memory (not shown), and reads and writes data from and to the cache memory device 100 and the main memory by executing a program. As shown in FIG. 1, the processor unit 200 includes a processor 210, an instruction decoding unit 220, and an instruction cache memory 230.
- the processor 210 executes a plurality of programs while switching. That is, the processor 210 executes multitask processing and multithread processing. Accordingly, the memory access instructions executed by the processor 210 are classified into, for example, the following two types of memory access instructions.
- a first memory access instruction which is a first type memory access instruction, is an instruction for reading and writing an exclusive variable to and from a memory among a plurality of programs.
- a second memory access instruction which is a second type memory access instruction, is an instruction for reading and writing a shared variable between a plurality of programs.
- the instruction decoding unit 220 reads the instruction code 154 from the instruction cache memory 230, decodes the read instruction code 154, generates an instruction decode signal 155, and outputs it to the processor 210.
- the instruction decoding unit 220 determines whether the memory access instruction is the first memory access instruction or the second memory access instruction by decoding a plurality of programs. Further, the instruction decoding unit 220 outputs a signal corresponding to the determination result to the cache memory device 100. Specifically, the instruction decoding unit 220 outputs an exclusive access signal 157 in the case of the first memory access instruction, and outputs a shared access signal 156 in the case of the second memory access instruction.
- the first memory access instruction is a variable declared as a local variable, specifically, an instruction for reading / writing a local variable into / from memory.
- the second memory access instruction is a variable declared as a shared variable, specifically, An instruction for reading / writing a global variable from / to a memory may be used.
- the first memory access instruction is an instruction with a low possibility of way prediction being missed in the cache memory device 100
- the second memory access instruction is an instruction with a high possibility of way prediction being missed in the cache memory device 100.
- a variable shared among a plurality of programs and a variable declared as a shared variable are variables that are accessed even when another program is executed.
- the instruction cache memory 230 is a cache memory for storing instructions executed by the processor 210.
- the instruction cache memory 230 stores the instruction decoded by the instruction decoding unit 220.
- the processor unit 200 controls the way prediction function of the cache memory device 100 according to the type of the memory access instruction. Specifically, when the first memory access instruction is executed, the processor unit 200 outputs an exclusive access signal 157 to cause the cache memory device 100 to use the result of way prediction. Further, when the second memory access instruction is executed, the processor unit 200 outputs the shared access signal 156 to cause the cache memory device 100 to ignore the way prediction result.
- the cache memory system 10 when there is a high possibility that the prediction is successful, it is possible to supply the clock only to the data storage unit of the predicted way. Therefore, an increase in power consumption can be suppressed.
- the possibility of being predicted is low, supplying a clock to all the data storage units prevents the processing from being repeated if the prediction is lost, thus suppressing a decrease in latency. And deterioration of performance can be suppressed.
- FIG. 2 is a diagram showing an example of a memory access instruction according to the first embodiment of the present invention. A case where the memory access instruction is a load instruction for reading data from the memory will be described.
- Load rm, (rn) is an example of a first memory access instruction, which is a load instruction, and means an access to an exclusive area between a plurality of programs.
- the instruction decoding unit 220 shown in FIG. 1 outputs an exclusive access signal 157 when the decoded memory access instruction is “load rm, (rn)”. Note that “load rm, (rn)” is a normal load instruction conventionally used.
- Loadcm rm, (rn) is an example of a second memory access instruction, which is a load instruction, and means an access to a shared area among a plurality of programs.
- the instruction decoding unit 220 shown in FIG. 1 outputs a shared access signal 156 when the decoded memory access instruction is “loadcm rm, (rn)”.
- Loadcm rm, (rn) is a new load instruction generated by the program conversion apparatus according to the present embodiment described later.
- rm indicates a register for storing the read data.
- Rn indicates a register in which an address indicating an area in a memory in which data to be read is stored is stored.
- load rm, (rn)” and “loadcm rm, (rn)” read data from the area in the memory indicated by the address stored in the register indicated by “rn”, This is a load instruction which means storing in a register indicated by “rm”.
- FIG. 3 is a diagram showing an example of the relationship among the instruction, the prediction way, and the access way according to Embodiment 1 of the present invention.
- the predicted way indicates a way prediction result by the way prediction unit 120 illustrated in FIG. 1.
- the access way is a way in which the clock controller 113 shown in FIG. 1 supplies a clock.
- the instruction decoding unit 220 when “load r0, (r1)” which is the first memory access instruction is decoded by the instruction decoding unit 220 at time t0, the instruction decoding unit 220 outputs the exclusive access signal 157 to the cache memory device 100. .
- the way prediction unit 120 predicts that the way to be hit is way A based on the past history and the like. Then, the way prediction unit 120 outputs only the way prediction signal corresponding to the way A (for example, only the way prediction signal 158a) as the High level.
- the clock control unit 113 supplies a clock only to the data storage unit included in the way A (for example, only the data storage unit 112a) based on the prediction result by the way prediction unit 120. Specifically, since only the way prediction signal 158 a that has become High level is input to the clock control unit 113, only the clock control signal generation unit 113 a outputs the clock control signal 159 a to the data storage unit group 112.
- the instruction decoding unit 220 when “load r14, (r15)” as the second memory access instruction is decoded by the instruction decoding unit 220 at time t (n ⁇ 1), the instruction decoding unit 220 The signal 156 is output to the cache memory device 100.
- the way prediction unit 120 predicts that the way to be hit is way A based on the past history or the like. Then, the way prediction unit 120 outputs only the way prediction signal corresponding to the way A (for example, only the way prediction signal 158a) as the High level.
- the shared access signal 156 that has become High level is input to the clock control unit 113. Therefore, as described above, the clock control unit 113 outputs a clock control signal so as to supply clocks to all data storage units included in all ways. That is, the clock control unit 113 supplies the clock to the predetermined data storage unit without basing the prediction result on the basis of the prediction result by the way prediction unit 120, in other words, ignoring the prediction result.
- the cache memory device 100 supplies the clocks to all the data storage units, so that even if the way is unpredictable, the cache memory device 100 does not determine that there is a mishit, and the read data 153 is processed by the processor unit 200. Can be output.
- the clocks are supplied to all the data storage units only when an instruction having a high possibility of deviating the way, such as the second memory access instruction, is decoded. Therefore, an increase in power consumption can be suppressed.
- FIG. 4 is a block diagram showing an example of the configuration of the way prediction unit according to Embodiment 1 of the present invention.
- the way prediction unit 120 includes a history holding unit 121, a prediction unit 122, and an update unit 123.
- the history holding unit 121 is a memory for holding history information indicating a history of hit ways.
- the history holding unit 121 holds a history of hit ways for each program or thread being executed. That is, the history holding unit 121 holds a history of hit ways corresponding to a memory access instruction included in the program or thread until the program or thread being executed ends.
- the history information may be information indicating only the way hit immediately before.
- the prediction unit 122 predicts a hit way based on the history information held in the history holding unit 121. For example, the prediction unit 122 may predict the way that was hit immediately before as the way that hits. Alternatively, the prediction unit 122 may predict a hit way based on a predetermined prediction algorithm. The prediction method is not limited to the above example.
- the update unit 123 updates the history information held in the history holding unit 121. Specifically, when the first memory access instruction is decoded by the processor unit 200, the history information is updated using information indicating the way hit by the first memory access instruction. More specifically, the update unit 123 uses the cache hit signal 162 input from the hit determination unit 114 to update the history information.
- the history information is not updated. That is, when the shared access signal 156 is input to the update unit 123, the update unit 123 ignores the cache hit signal 162 input from the hit determination unit 114.
- FIG. 5 is a diagram showing an example of the relationship among the instruction, the prediction way, the access way, and the hit way according to Embodiment 1 of the present invention.
- an access tag way indicates a way including a tag storage unit to which a clock is supplied.
- clocks are supplied to all tag storage units.
- the access data way indicates a way including a data storage unit to which the clock control unit 113 supplies a clock.
- the hit way indicates a way hit when a memory access instruction is executed.
- the hit way is a way indicated by the cache hit signal 162.
- the instruction decoding unit 220 156 is output to the cache memory device 100.
- the prediction unit 122 predicts that the way to be hit is the way A based on the past history or the like.
- the shared access signal 156 that has become High level is input to the clock control unit 113. Therefore, as described above, the clock control unit 113 outputs a clock control signal so as to supply clocks to all data storage units included in all ways.
- the hit determination unit 114 determines that the way C has been hit, and the cache hit signal 162 indicating the hit way C is input to the update unit 123. However, since the shared access signal 156 is input to the updating unit 123, the cache hit signal 162 indicating the hit way C is ignored and the history information is not updated.
- the prediction unit 122 is information indicating the way C. It is determined that the way to be hit is way A based on the history information that has not been updated.
- the update unit 123 ignores the cache hit signal 162 even when the way predicted by the prediction unit 122 matches the hit way when the second memory access instruction is decoded. To do.
- the way prediction unit 120 when the second memory access instruction is decoded, the way prediction unit 120 according to Embodiment 1 of the present invention performs the second prediction when the subsequent instruction is executed. Do not use prediction results corresponding to memory access instructions. As a result, the stored prediction algorithm is not destroyed, and therefore correct prediction can be performed when a subsequent instruction is executed.
- the prediction unit 122 may not receive the shared access signal 156 and perform the way prediction.
- the prediction unit 122 predicts the way based on a prediction algorithm that does not use the prediction result corresponding to the second memory access instruction. May be performed.
- FIG. 6 is a flowchart showing an example of a method for controlling the cache memory 110 according to the first embodiment of the present invention.
- the way prediction unit 120 predicts a way to hit when the memory access instruction is decoded by the processor unit 200 (S110).
- the prediction result is output to the clock control unit 113.
- the clock control unit 113 determines only the way predicted by the way prediction unit 120.
- a clock is supplied to (S130). Specifically, the clock control unit 113 supplies a clock only to the data storage unit included in the predicted way among the plurality of data storage units included in the plurality of ways.
- the clock control unit 113 supplies a clock to a predetermined way (S140). . Specifically, the clock control unit 113 supplies clocks to all ways. More specifically, the clock control unit 113 supplies a clock to all the data storage units included in the plurality of ways.
- the clock is supplied only to the data storage unit of the way indicated by the prediction result. Thereby, power consumption can be suppressed as compared with the case where the clock is always supplied to all the data storage units.
- the cache memory device 100 and the cache memory control method according to the first embodiment of the present invention it is possible to suppress degradation of performance and suppress increase in power consumption.
- the memory access instruction is a write instruction (store instruction)
- FIG. 7 is a diagram showing an example of a memory access instruction according to the first embodiment of the present invention.
- “Store (rn), rm” is an example of a memory access instruction and is a write instruction. “Rm” indicates a register in which write data is stored. “(Rn)” is a register in which an address indicating an area in a memory in which write data is written is stored. That is, “store (rn), rm” means that the data stored in the register indicated by “rm” is written to the area in the memory indicated by the address stored in the register indicated by “rn”. Is a write command.
- the cache memory device 100 cannot write the write data 152 to the data storage unit until the hit way and entry are determined. Therefore, even if the way is predicted when the write instruction is executed, it is not necessary to use the way prediction result because it is necessary to wait for the result of the hit determination unit 114. Therefore, as shown in FIG. 7, the write instruction is not classified into the first memory access instruction and the second memory access instruction.
- FIG. 8 is a diagram showing an example of the relationship among the instruction, the prediction way, the access way, and the hit way according to Embodiment 1 of the present invention.
- the hit determination unit 114 determines that the way C is a hit way, and the cache indicating the way C is displayed.
- a hit signal 162 is output.
- the data storage unit group 112 is supplied with a clock only to the data storage units included in the way C based on the cache hit signal 162.
- FIG. 9 is a block diagram showing an example of the configuration of the program conversion apparatus 300 according to Embodiment 1 of the present invention.
- the program conversion apparatus 300 shown in FIG. 9 generates a memory access instruction corresponding to a cache memory having a way prediction function.
- the program conversion apparatus 300 is a compiler, determines the type of the memory access instruction, and generates the second memory access instruction by converting the memory access instruction.
- the second memory access instruction is an example of a prediction ignoring memory access instruction for preventing the cache memory from using the way prediction result.
- the program conversion apparatus 300 includes an extraction unit 310, a determination unit 320, and a conversion unit 330.
- the extraction unit 310 extracts a memory access instruction from the input program.
- the program is described in a high-level language such as Perl, JavaScript, or C language.
- the determination unit 320 determines the type of the memory access instruction extracted by the extraction unit 310. Specifically, the determination unit 320 determines whether or not the variable indicated by the memory access instruction extracted by the extraction unit 310 is a global variable. More specifically, the determination unit 320 determines whether the variable indicated by the memory access instruction is a global variable or a local variable.
- the conversion unit 330 ignores the prediction for preventing the corresponding memory access instruction from using the way prediction result in the cache memory. Convert to memory access instruction. That is, the predicted ignore memory access instruction is a memory access instruction indicating that the global variable is read from or written to the memory.
- the predicted ignore memory access instruction is, for example, a memory access instruction indicating that a shared variable is read from or written to a memory among a plurality of programs.
- the predicted-ignore memory access instruction is a memory access instruction indicating that a variable declared as a shared variable is read from or written to the memory.
- the program conversion apparatus 300 determines whether or not the variable indicated by the memory access instruction is a global variable. If the variable is a global variable, the program conversion apparatus 300 , The prediction result of the way is converted into a prediction ignore memory access instruction so as not to be used.
- Global variables are variables that are referenced across multiple programs and multiple threads. For this reason, the prediction of the way executed by the cache memory device 100 when the memory access instruction for reading and writing the global variable is decoded is more likely to deviate than the case of the local variable.
- the cache memory device 100 uses the way prediction result to limit the data storage unit that supplies the clock. For this reason, power consumption in the cache memory device 100 can be reduced.
- the operation of the determination unit 320 will be described for each high-level language describing the program.
- variables are used only within the declared block (range indicated by ⁇ ).
- a variable for which an effective range is determined is a local variable.
- a local variable is a variable whose reference range is determined.
- a variable declared within a range surrounded by ⁇ is a local variable.
- a variable declared outside the range surrounded by ⁇ is a global variable.
- Global variables are variables that can be referenced from anywhere.
- the determination unit 320 can determine whether the variable is a global variable or a local variable by determining the position where the variable is declared.
- variable In a program written in JavaScript, when a variable is declared with var, the variable becomes a local variable. On the other hand, if a variable is declared with nothing added, the variable becomes a global variable.
- the determination unit 320 can determine whether the variable is a global variable or a local variable by determining whether or not var is attached when the variable is declared.
- a variable declared in a predetermined function is a local variable.
- a global variable must be defined outside an arbitrary function and declared again in the function to be used.
- the determination unit 320 can determine that the variable is a global variable if it is declared outside the function and is declared using any of the functions in the function.
- the determination unit 320 can determine whether the variable is a global variable or a local variable based on each program.
- FIG. 10 is a flowchart showing an example of the operation of the program conversion apparatus 300 according to Embodiment 1 of the present invention.
- the extraction unit 310 extracts a memory access command from the input program (S210). For example, the extraction unit extracts a memory access instruction from a program (source code) written in a high-level language, and compiles the extracted memory access instruction, so that “load rm, (rn)” shown in FIG. Convert to first memory access instruction.
- the determination unit 320 determines the type of the variable indicated by the memory access instruction extracted by the extraction unit 310 (S220).
- the conversion unit 330 converts the corresponding memory access instruction, whereby the second memory access, which is an example of the predicted ignore memory access instruction, is converted. An instruction is generated (S230).
- the conversion unit 330 converts the first memory access instruction into a second memory access instruction such as “loadcm rm, (rn)” illustrated in FIG.
- variable indicated by the memory access instruction is a local variable (“local variable” in S220)
- the conversion unit 330 outputs the corresponding memory access instruction as it is.
- the program conversion apparatus 300 may determine whether or not the variable indicated by the extracted memory access instruction is a global variable before extracting the memory access instruction from the source code and compiling. If it is determined that the variable is a global variable, the corresponding memory access instruction is converted into a second memory access instruction. If it is determined that the variable is a local variable, the corresponding memory access instruction is converted to the first memory access instruction. Convert to
- the cache memory system 10 ignores the way prediction result when a memory access instruction that is highly likely to be out of way prediction is decoded.
- a clock is supplied to all data storage units of the memory 110.
- the cache memory system 10 supplies a clock only to the data storage unit of the predicted way based on the prediction result of the way when a memory access instruction that is unlikely to be out of the way prediction is decoded. . Thereby, power consumption can be suppressed as compared with the case where the clock is always supplied to all the data storage units.
- the hit result corresponding to the second memory access instruction is ignored, but the hit result is used as a prediction algorithm. It may be adopted.
- FIG. 11 is a diagram illustrating an example of a relationship among an instruction, a prediction way, an access way, and a hit way according to a modification of the first embodiment of the present invention.
- the instruction decoding unit 220 receives the shared access signal 156. Is output to the cache memory device 100. At this time, in the cache memory device 100, the prediction unit 122 predicts that the way to be hit is the way A based on the past history or the like.
- the shared access signal 156 that has become High level is input to the clock control unit 113. Therefore, as described above, the clock control unit 113 outputs a clock control signal so as to supply clocks to all data storage units included in all ways.
- the hit determination unit 114 determines that the way C has been hit, and the cache hit signal 162 indicating the hit way C is input to the update unit 123. Then, the update unit 123 updates the history information using the cache hit signal 162 indicating the hit way C.
- the prediction unit 122 uses the information indicating the way C. It is determined that the way to be hit is way C based on the updated history information.
- the updating unit 123 is configured to determine whether the first memory access instruction or the second memory access instruction is decoded by the processor unit 200.
- the history information may be updated using information indicating a way hit by a corresponding memory access instruction.
- FIG. 12 is a block diagram showing an example of the configuration of the cache memory device 400 according to Embodiment 2 of the present invention.
- a cache memory device 400 illustrated in FIG. 12 includes a tag storage unit group 411 instead of the tag storage unit group 111 as compared with the cache memory device 100 according to the first embodiment illustrated in FIG. Instead, a clock control unit 413 is provided. 12, the same components as those in the first embodiment shown in FIG. 1 are denoted by the same reference numerals, description thereof is omitted, and different points will be mainly described.
- the tag storage unit group 411 has n tag storage units, that is, the same number of tag storage units as the number of ways, and can store a plurality of tag addresses in each of the n tag storage units. In the present embodiment, since there are two ways, the tag storage unit group 411 includes two tag storage units 411a and 411b.
- the address 151 is input to the tag storage units 411a and 411b.
- the tag storage units 411a and 411b output the tag addresses stored in the entry corresponding to the set index included in the address 151 as tag data 160a and 160b.
- a clock control signal is input from the clock control unit 413 to the tag storage unit group 411. That is, in the tag storage unit group 111 shown in Embodiment 1, clocks are supplied to all the tag storage units, whereas the tag storage unit group 411 uses the clocks based on the control from the clock control unit 413. Is supplied.
- the clock control unit 413 controls the clock supplied to the plurality of ways based on the type of the memory access instruction decoded by the processor unit 200. Specifically, when the first memory access instruction is decoded, the clock control unit 413 is predicted by the way prediction unit 120 among the plurality of tag storage units and the plurality of data storage units included in the plurality of ways. The clock is supplied only to the tag storage unit and the data storage unit of each way.
- the clock control unit 413 when the second memory access instruction is decoded, includes a plurality of tag storage units and a plurality of data storage units included in the plurality of ways regardless of the prediction result by the way prediction unit 120.
- the clock is supplied to the tag storage unit and the data storage unit of a predetermined way.
- the clock control unit 413 supplies clocks to all tag storage units and all data storage units when the second memory access instruction is decoded.
- the clock control unit 413 has n clock control signal generation units, that is, the same number of clock control signal generation units as the number of ways. In this embodiment, since there are two ways, the clock control unit 413 includes two clock control signal generation units 413a and 413b.
- clock control signal generation units 413a and 413b are substantially the same as those of the clock control signal generation units 113a and 113b according to the first embodiment. The difference is that the clock control signal is output not only to the data storage unit group 112 but also to the tag storage unit group 411.
- the clock control signal generation unit 413a receives the clock control signal 459a from the tag storage unit 411a and the data when at least one of the shared access signal 156 and the way prediction signal 158a is input. The data is output to the storage unit 112a. Similarly, when at least one of the shared access signal 156 and the way prediction signal 158b is input, the clock control signal generation unit 413b outputs the clock control signal 459b to the tag storage unit 411b and the data storage unit 112b.
- first memory access instruction and the second memory access instruction are the same as those in the first embodiment.
- the memory access instruction is a write instruction (store instruction)
- FIG. 13 is a diagram showing an example of a memory access instruction according to a modification of the second embodiment of the present invention.
- “Store (rn), rm” is an example of a first memory access instruction, which is a write instruction (store instruction), and means an access to an exclusive area among a plurality of programs.
- the instruction decoding unit 220 shown in FIG. 12 outputs an exclusive access signal 157 when the decoded memory access instruction is “store (rn), rm”. Note that “store (rn), rm” is a normal write command used conventionally.
- “Storecm (rn), rm” is an example of a second memory access instruction, which is a write instruction (store instruction), and means an access to a shared area among a plurality of programs.
- the instruction decoding unit 220 shown in FIG. 12 outputs the shared access signal 156 when the decoded memory access instruction is “storecm (rn), rm”.
- “Storecm (rn), rm” is a new write command generated by the program conversion apparatus according to the present embodiment.
- Store (rn), rm” and “storecm (rn), rm” indicate the data stored in the register indicated by “rm” and the address stored in the register indicated by “rn”. This is a write command that means writing to an area in memory.
- the cache memory device 400 cannot write the write data 152 to the data storage unit until the hit way and entry are determined. Therefore, it is not necessary to use the way prediction result to determine whether or not to supply a clock to the data storage unit.
- the way prediction result can be used to determine whether or not to supply a clock to the tag storage unit.
- FIG. 14 is a diagram illustrating an example of a relationship among an instruction, a prediction way, an access way, and a hit way according to a modification of the second embodiment of the present invention.
- the instruction decoding unit 220 when the “memory (r2), r0” that is the first memory access instruction is decoded by the instruction decoding unit 220 at time t2, the instruction decoding unit 220 outputs the exclusive access signal 157 to the cache memory device 400. .
- the way prediction unit 120 predicts that the way to be hit is way A based on the past history and the like. Then, the way prediction unit 120 outputs only the way prediction signal corresponding to the way A (for example, only the way prediction signal 158a) as the High level.
- the clock control unit 413 supplies a clock only to the tag storage unit included in the way A (for example, only the tag storage unit 411a) based on the prediction result by the way prediction unit 120. Specifically, since only the way prediction signal 158a that has become High level is input to the clock control unit 413, only the clock control signal generation unit 413a outputs the clock control signal 459a to the tag storage unit group 411.
- the instruction decoding unit 220 transmits the shared access signal 156 to the cache memory. Output to the device 400.
- the way prediction unit 120 predicts that the way to be hit is way A based on the past history and the like. Then, the way prediction unit 120 outputs only the way prediction signal corresponding to the way A (for example, only the way prediction signal 158a) as the High level.
- the shared access signal 156 that has become High level is input to the clock control unit 413. Therefore, as described above, the clock control unit 413 outputs a clock control signal so as to supply a clock to all tag storage units included in all ways. That is, the clock control unit 413 supplies the clock to a predetermined tag storage unit without basing the prediction result on the basis of the prediction result by the way prediction unit 120, in other words, ignoring the prediction result.
- the hit determination unit 114 determines that the way C is a hit way, and outputs a cache hit signal 162 indicating the way C.
- the data storage unit group 112 is supplied with a clock only to the data storage units included in the way C based on the cache hit signal 162.
- the cache memory device 400 when the exclusive access signal 157 is input from the processor unit 200, the data storage unit and tag of the way predicted by the way prediction unit 120 A clock is supplied only to the storage unit. Further, when the shared access signal 156 is input from the processor unit 200, the cache memory device 400 ignores the prediction result by the way prediction unit 120 and supplies a clock to all data storage units and tag storage units.
- the cache memory device 400 controls the data storage unit and the tag storage unit that supply the clock based on the signal input from the processor unit 200. Therefore, when there is a high possibility of being predicted, the clock can be supplied only to the predicted data storage unit and the tag storage unit, so that an increase in power consumption can be suppressed. At this time, for the way that was not predicted, the clock is not supplied to the tag storage unit as well as the data storage unit, so that the power consumption can be further reduced.
- the cache memory device, the program conversion device, the cache memory control method, and the program conversion method according to the present invention have been described based on the embodiments. However, the present invention is not limited to these embodiments. . Unless it deviates from the meaning of this invention, the form which carried out the various deformation
- the second memory access instruction when the second memory access instruction is decoded by the processor unit 200, all the data storage units and / or tag storage units are used as the predetermined data storage unit and / or tag storage unit.
- An example of supplying a clock to the unit has been described.
- not all data storage units and / or tag storage units, but one or more data stores included in one or more ways allocated to execute a program including the second memory access instruction The clock may be supplied to the unit and / or the tag storage unit.
- a plurality of threads included in a plurality of programs may be assigned ways to be used at the time of execution.
- way A and way B are assigned to thread A
- way C is assigned to thread B
- way D is assigned to thread D.
- FIG. 16 is a diagram showing an example of a configuration of a cache memory device 500 according to a modification of the embodiment of the present invention.
- the cache memory 110 includes a clock control unit 513 instead of the clock control unit 113, as compared with the cache memory device 100 shown in FIG.
- the clock control unit 513 includes the second memory access instruction when the second memory access instruction is decoded, for example, by referring to a table showing the correspondence between threads and ways as shown in FIG. Supply the clock to the way assigned to the thread.
- the clock control unit 513 supplies the clock only to the data storage units included in the way A and the way B. To do.
- the clock control unit 513 newly includes switches 516 a and 516 b and a selection unit 517 compared to the clock control unit 113 according to the first embodiment shown in FIG. 1.
- the switches 516a and 516b determine whether to supply the shared access signal 156 to each of the clock control signal generation units 113a and 113b based on the control signals 564a and 564b from the selection unit 517.
- the switch 516a corresponds to the clock control signal generation unit 113a and the data storage unit 112a.
- the switch 516b corresponds to the clock control signal generation unit 113b and the data storage unit 112b.
- the selection unit 517 holds a table indicating the correspondence between threads and ways.
- the selection unit 517 refers to the table, and turns on only the switch corresponding to the data storage unit of the way allocated to the thread including the second memory access instruction when the second memory access instruction is decoded.
- the control signal is output as follows.
- the selection unit 517 sets the control signal 564a so that only the switch 516a is turned on. Output.
- the switch 516a outputs the shared access signal 156 to the clock control signal generation unit 113a, so that the clock control signal generation unit 113a can supply a clock to the data storage unit 112a.
- the way prediction unit 120 may predict a plurality of ways as hit ways.
- the second memory access instruction may include an attribute bit indicating that the way prediction result is not used.
- FIG. 17 is a diagram showing an example of a memory access instruction according to a modification of the embodiment of the present invention.
- the conversion unit 330 included in the program conversion apparatus 300 does not use the corresponding memory access instruction for the way prediction result. It may be converted into a second memory access instruction including the indicated attribute bit.
- the attribute bit corresponds to a flag indicating whether to use the prediction result.
- one bit is an attribute bit among a plurality of bits (for example, 32 bits) constituting the second memory access instruction.
- the 1 bit indicates that the way prediction result by the way prediction unit 120 is not used.
- the clock when the second memory access instruction is decoded, the clock is supplied to the predetermined data storage unit by ignoring the prediction result by the way prediction unit 120.
- the prediction result by the unit 120 may be replaced with a prediction result indicating that a predetermined way has been predicted.
- the clock control unit 113 supplies a clock to the data storage unit included in the way indicated by the prediction result, not the type of the memory access instruction.
- the prediction unit 122 when the second memory access instruction is decoded by the processor unit 200, the prediction unit 122 receives the shared access signal 156 and outputs a predetermined way as a prediction result. That is, when the prediction unit 122 receives the shared access signal 156, the prediction unit 122 outputs a predetermined way prediction signal. For example, the prediction unit 122 outputs all way prediction signals so as to supply clocks to all data storage units.
- the prediction result by the way prediction unit may be replaced with a dummy prediction result indicating that all ways have been predicted.
- the present invention can be realized not only as a cache memory device, a program conversion device, a cache memory control method, and a program conversion method, but also by executing the cache memory control method and the program conversion method of the present embodiment on a computer.
- These programs, information, data, and signals may be distributed via a communication network such as the Internet.
- the components constituting the cache memory device and the program conversion device may be constituted by one system LSI (Large Scale Integration).
- the system LSI is an ultra-multifunctional LSI manufactured by integrating a plurality of components on a single chip.
- the system LSI is a computer system including a microprocessor, a ROM, a RAM, and the like. .
- the present invention has an effect of suppressing deterioration in performance and suppressing increase in power consumption, and can be used for devices having a cache memory such as a personal computer and various home appliances.
- Cache memory system 100 400, 500 Cache memory device 110 Cache memory 111, 411 Tag storage unit group 111a, 111b, 411a, 411b Tag storage unit 112 Data storage unit group 112a, 112b Data storage unit 113, 413, 513 Clock control Units 113a, 113b, 413a, 413b clock control signal generation unit 114 hit determination unit 115 selector 120 way prediction unit 121 history holding unit 122 prediction unit 123 update unit 130 TLB 151 Address 152 Write data 153 Read data 154 Instruction code 155 Instruction decode signal 156 Shared access signal 157 Exclusive access signal 158a, 158b Way prediction signal 159a, 159b, 459a, 459b Clock control signal 160a, 160b Tag data 161a, 161b Data storage unit Read data 162 Cache hit signal 163 Physical page number 200 Processor unit 210 Processor 220 Instruction decoding unit 230 Instruction cache memory 300 Program conversion device 310 Extraction unit 320 Determination unit 330 Conversion unit 516
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
複数のプログラムを切り替えながら実行するプロセッサ部(200)に接続されるキャッシュメモリ装置(100)であって、タグ格納部及びデータ格納部を含む複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリ(110)と、複数のウェイのうちのヒットするウェイを予測するウェイ予測部(120)と、クロック制御部(113)とを備え、クロック制御部(113)は、第1メモリアクセス命令がプロセッサ部(200)で解読された場合に、ウェイ予測部(120)によって予測されたウェイのデータ格納部のみにクロックを供給し、第2メモリアクセス命令がプロセッサ部(200)で解読された場合に、ウェイ予測部(120)による予測結果に関わらず、予め定められたデータ格納部にクロックを供給する。
Description
本発明は、セットアソシアティブ方式のキャッシュメモリ装置に関し、特に、ヒットするウェイの予測を行うキャッシュメモリ装置に関する。
近年、プロセッサからメインメモリへのメモリアクセスを高速化させるために、例えば、SRAM(Static Random Access Memory)などからなる小容量で高速で動作可能なキャッシュメモリが利用されている。例えば、キャッシュメモリを、プロセッサの内部又はその近傍に配置し、メインメモリに保持されたデータの一部をキャッシュメモリに記憶させておくことで、メモリアクセスを高速化させることができる。
例えば、特許文献1には、セットアソシアティブ方式のキャッシュメモリについて開示されている。
特許文献1に記載された従来のメモリ装置は、ウェイがヒットしたかを示すウェイ判定信号を出力するウェイ判定器と、ウェイ判定信号の予測値を発生するウェイ予測部とを備える。そして、従来のメモリ装置は、ウェイ予測部からの予測値に基づき予測されたウェイのデータ格納部だけを活性化する。なお、活性化とは、クロックを供給することである。
また、従来のメモリ装置は、ウェイ判定器からのウェイ判定信号と予測値とを比較し、不一致の場合にウェイ予測判定信号を出力するウェイ予測判定部を備える。そして、従来のメモリ装置は、ウェイ予測判定部からのウェイ予測判定信号に基づきウェイ予測部の予測値を、ヒットしたウェイを示すウェイ判定信号に変更する。
上記構成により、従来のメモリ装置は、消費電力を低減させ、かつ、データ読み出し時のタイムラグを低減させることができる。
しかしながら、上記従来技術では、予測が外れた場合に、予測ミスによるオーバーヘッドを回避する手段がなく、キャッシュメモリの性能が劣化するという課題がある。
具体的には、特許文献1に記載のメモリ装置では、予測が外れた場合には、ヒットしたウェイを示すウェイ判定信号に予測値を変更する処理が必要であり、処理のサイクル数が増加してしまう。つまり、レイテンシーが大きくなることでキャッシュメモリの性能が劣化してしまう。
特に、マルチスレッド処理のように、サイクル毎にスレッドを切り替え、又は、1サイクルに複数のスレッドを処理する場合には、予測が外れる場合が大きく、性能の劣化を無視することができない。これに対して、予測が外れる可能性を低くするために、予測の範囲を大きくすることが考えられるが、これでは消費電力の増加を抑制することができない。
そこで、本発明は、性能の劣化を抑制するとともに、消費電力の増加を抑制することができるキャッシュメモリ装置及びキャッシュメモリ制御方法を提供することを目的とする。また、本発明は、本発明に係るキャッシュメモリ装置に対応するメモリアクセス命令を生成することができるプログラム変換装置及びプログラム変換方法を提供することも目的とする。
上記課題を解決するため、本発明の一態様に係るキャッシュメモリ装置は、複数のプログラムを切り替えながら実行するプロセッサ部に接続されるキャッシュメモリ装置であって、前記プロセッサ部に接続され、タグ格納部及びデータ格納部をそれぞれが含む複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリと、前記プロセッサ部でメモリアクセス命令が解読されたときに、前記複数のウェイのうちのヒットするウェイを予測するウェイ予測部と、前記プロセッサ部で解読されたメモリアクセス命令の種別に基づいて、前記複数のウェイに供給するクロックを制御するクロック制御部とを備え、前記クロック制御部は、第1メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記ウェイ予測部によって予測されたウェイのデータ格納部のみにクロックを供給し、前記第1メモリアクセス命令とは異なる第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測部による予測結果に関わらず、前記複数のウェイに含まれる複数のデータ格納部のうち、予め定められたデータ格納部にクロックを供給する。
これにより、第2メモリアクセス命令が解読された場合は、ウェイの予測結果を利用せずに、予め定められたウェイのデータ格納部にクロックを供給する。このため、例えば、予測が外れやすい場合には、予測結果を無視することができるので、予測が外れたことによる処理の繰り返しを抑制することができる。したがって、キャッシュメモリ装置の性能の劣化を抑制することができるとともに、処理の繰り返しによる消費電力の増加も抑制することができる。
また、第1メモリアクセス命令が解読された場合は、ウェイの予測結果を利用し、予測されたウェイのデータ格納部のみにクロックを供給するので、消費電力の増加を抑制することができる。
また、前記第1メモリアクセス命令は、前記複数のプログラムの間において排他の変数をメモリに読み書きする命令であり、前記第2メモリアクセス命令は、前記複数のプログラムの間において共有の変数をメモリに読み書きする命令であってもよい。
これにより、共有の変数は、他のプログラム(又は、スレッド)からも参照される可能性があるため、共有の変数をメモリに読み書きする第2メモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が高い。これに対して、排他の変数は、他のプログラムからは参照されないため、排他の変数をメモリに読み書きする第1メモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が低い。したがって、予測が外れる可能性が高い場合には、予測結果を無視し、予測が外れる可能性が低い場合には、予測を利用するので、性能の劣化及び消費電力の増加を抑制することができる。
また、前記第1メモリアクセス命令は、局所変数宣言された変数をメモリに読み書きする命令であり、前記第2メモリアクセス命令は、共有変数宣言された変数をメモリに読み書きする命令であってもよい。
これにより、共有変数宣言された変数は、他のプログラム(又は、スレッド)からも参照される可能性があるため、共有変数宣言された変数をメモリに読み書きする第2メモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が高い。これに対して、局所変数宣言された変数は、他のプログラムからは参照されないため、局所変数宣言された変数をメモリに読み書きする第1メモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が低い。したがって、予測が外れる可能性が高い場合には、予測結果を無視し、予測が外れる可能性が低い場合には、予測を利用するので、性能の劣化及び消費電力の増加を抑制することができる。
また、前記第2メモリアクセス命令は、ウェイの予測結果を利用しないことを示す属性ビットを含んでもよい。
これにより、メモリアクセス命令に含まれるビットを判断するだけで、予測結果を利用するか否かを容易に決定することができる。
また、前記クロック制御部は、さらに、前記第1メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のタグ格納部のうち、前記ウェイ予測部によって予測されたウェイのタグ格納部のみにクロックを供給し、前記第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測部による予測結果に関わらず、前記複数のウェイに含まれる複数のタグ格納部のうち、予め定められたタグ格納部にクロックを供給してもよい。
これにより、ウェイの予測結果に応じて、タグ格納部にクロックを供給するか否かを判定するので、消費電力をさらに低減することができる。
また、前記クロック制御部は、前記第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる全てのデータ格納部にクロックを供給してもよい。
これにより、予測が外れる可能性が高い場合には、全てのデータ格納部にクロックを供給するので、タグがヒットした場合に、データがミスヒットすることを防止することができるので、性能の劣化を抑制することができる。
また、前記複数のウェイは、前記複数のプログラムに割り当てられ、前記クロック制御部は、前記第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記第2メモリアクセス命令を含むプログラムに割り当てられたウェイに含まれるデータ格納部にクロックを供給してもよい。
これにより、予測が外れる可能性が高い場合には、プログラムを実行するために割り当てられた1つ以上のウェイの1つ以上のデータ格納部にクロックを供給するので、タグがヒットした場合に、データがミスヒットする可能性を低減することができる。さらに、全てのデータ格納部にクロックを供給する場合に比べて、消費電力を低減することができる。
また、前記ウェイ予測部は、ヒットしたウェイの履歴を示す履歴情報を保持する履歴保持部と、前記履歴情報に基づいて、前記ヒットするウェイを予測する予測部と、前記履歴情報を更新する更新部とを備え、前記更新部は、前記第1メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第1メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新し、前記第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記履歴情報を更新しなくてもよい。
これにより、予測が外れる可能性が高い場合には、履歴情報の更新を行わないので、予測のアルゴリズムを壊すことがなく、以降に実行されるメモリアクセス命令に対して適切な予測を行うことができる。
また、前記ウェイ予測部は、ヒットしたウェイの履歴を示す履歴情報を保持する履歴保持部と、前記履歴情報に基づいて、前記ヒットするウェイを予測する予測部と、前記履歴情報を更新する更新部とを備え、前記更新部は、前記第1メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第1メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新し、前記第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第2メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新してもよい。
これにより、複数のプログラムのうち単一のプログラムのみが一定期間実行されてヒットするウェイの履歴が単一のプログラムにより決定される場合に、予測の当たる確率を向上させることができる。
また、本発明の一態様に係るプログラム変換装置は、ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成するプログラム変換装置であって、入力されたプログラムからメモリアクセス命令を抽出する抽出部と、前記抽出部によって抽出されたメモリアクセス命令が示す変数が、グローバル変数であるか否かを判定する判定部と、前記判定部によってグローバル変数であると判定された場合、対応するメモリアクセス命令を、前記キャッシュメモリにウェイの予測結果を利用させないようにするための予測無視メモリアクセス命令に変換する変換部とを備える。
これにより、上記のキャッシュメモリ装置のような、ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成することができる。グローバル変数は、他のプログラム(又は、スレッド)からも参照される可能性があるため、グローバル変数をメモリに読み書きするメモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が高い。このため、グローバル変数をメモリに読み書きするメモリアクセス命令を予測無視メモリアクセス命令に変換することで、キャッシュメモリにおいて、予測結果を無視させることができる。したがって、キャッシュメモリの性能の劣化及び消費電力の増加を抑制することができる。
また、前記判定部は、前記抽出部によって抽出されたメモリアクセス命令が示す変数が、複数のプログラムの間において共有の変数である場合に、当該変数をグローバル変数であると判定してもよい。
これにより、共有の変数は、他のプログラム(又は、スレッド)からも参照される可能性があるため、共有の変数をメモリに読み書きするメモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が高い。したがって、予測が外れる可能性が高い場合には、予測結果を無視させるので、性能の劣化及び消費電力の増加を抑制することができる。
また、前記判定部は、前記抽出部によって抽出されたメモリアクセス命令が示す変数が、共有変数宣言された変数である場合に、当該変数をグローバル変数であると判定してもよい。
これにより、共有変数宣言された変数は、他のプログラム(又は、スレッド)からも参照される可能性があるため、共有変数宣言された変数をメモリに読み書きするメモリアクセス命令が解読された場合、ウェイの予測が外れる可能性が高い。したがって、予測が外れる可能性が高い場合には、予測結果を無視させるので、性能の劣化及び消費電力の増加を抑制することができる。
また、前記変換部は、前記判定部によってグローバル変数であると判定された場合、対応するメモリアクセス命令を、ウェイの予測結果を利用しないことを示す属性ビットを含む前記予測無視メモリアクセス命令に変換してもよい。
これにより、メモリアクセス命令にビットを追加するだけで、予測無視メモリアクセス命令を生成することができる。
また、本発明の一態様に係るキャッシュメモリ制御方法は、複数のプログラムを切り替えながら実行するプロセッサ部に接続されるキャッシュメモリを制御するキャッシュメモリ制御方法であって、前記キャッシュメモリは、前記プロセッサ部に接続され、タグ格納部及びデータ格納部をそれぞれが含む複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリであり、前記キャッシュメモリ制御方法は、前記プロセッサ部でメモリアクセス命令が解読されたときに、前記複数のウェイのうちヒットするウェイを予測するウェイ予測ステップと、前記プロセッサ部で解読されたメモリアクセス命令の種別に基づいて、前記複数のウェイに供給するクロックを制御するクロック制御ステップとを含み、前記クロック制御ステップでは、第1メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記ウェイ予測ステップにおいて予測されたウェイのデータ格納部のみにクロックを供給し、前記第1メモリアクセス命令とは異なる第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測ステップにおける予測結果に関わらず、前記複数のウェイに含まれる複数のデータ格納部のうち、予め定められたデータ格納部にクロックを供給する。
これにより、第2メモリアクセス命令が解読された場合は、ウェイの予測結果を利用せずに、予め定められたウェイのデータ格納部にクロックを供給する。このため、例えば、予測が外れやすい場合には、予測結果を無視することができるので、予測が外れたことによる処理の繰り返しを抑制することができる。したがって、キャッシュメモリの性能の劣化を抑制することができるとともに、処理の繰り返しによる消費電力の増加も抑制することができる。
また、第1メモリアクセス命令が解読された場合は、ウェイの予測結果を利用し、予測されたウェイのデータ格納部のみにクロックを供給するので、消費電力の増加を抑制することができる。
また、本発明の一態様に係るプログラム変換方法は、ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成するプログラム変換方法であって、入力されたプログラムからメモリアクセス命令を抽出する抽出ステップと、前記抽出ステップにおいて抽出されたメモリアクセス命令が示す変数が、グローバル変数であるか否かを判定する判定ステップと、前記判定ステップにおいてグローバル変数であると判定された場合、対応するメモリアクセス命令を、前記キャッシュメモリにウェイの予測結果を利用させないようにするための予測無視メモリアクセス命令に変換する変換ステップとを含む。
これにより、上記のキャッシュメモリ装置のように、ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成することができる。
本発明によれば、性能の劣化を抑制するとともに、消費電力の増加を抑制することができる。
以下では、本発明のキャッシュメモリ装置及びプログラム変換装置について、実施の形態に基づいて、図面を用いて詳細に説明する。
(実施の形態1)
本発明の実施の形態1に係るキャッシュメモリ装置は、複数のプログラムを切り替えながら実行するプロセッサに接続されるキャッシュメモリ装置である。実施の形態1に係るキャッシュメモリ装置は、タグ格納部及びデータ格納部を含む複数のウェイを備えるキャッシュメモリと、プロセッサでメモリアクセス命令が実行されるときに、複数のウェイのうちのヒットするウェイを予測するウェイ予測部とを備える。さらに、実施の形態1に係るキャッシュメモリ装置は、クロック制御部を備え、クロック制御部は、第1メモリアクセス命令が解読された場合に、ウェイ予測部によって予測されたウェイのデータ格納部のみにクロックを供給し、第2メモリアクセス命令が解読された場合に、予め定められたデータ格納部にクロックを供給することを特徴とする。
本発明の実施の形態1に係るキャッシュメモリ装置は、複数のプログラムを切り替えながら実行するプロセッサに接続されるキャッシュメモリ装置である。実施の形態1に係るキャッシュメモリ装置は、タグ格納部及びデータ格納部を含む複数のウェイを備えるキャッシュメモリと、プロセッサでメモリアクセス命令が実行されるときに、複数のウェイのうちのヒットするウェイを予測するウェイ予測部とを備える。さらに、実施の形態1に係るキャッシュメモリ装置は、クロック制御部を備え、クロック制御部は、第1メモリアクセス命令が解読された場合に、ウェイ予測部によって予測されたウェイのデータ格納部のみにクロックを供給し、第2メモリアクセス命令が解読された場合に、予め定められたデータ格納部にクロックを供給することを特徴とする。
言い換えると、本発明の実施の形態1に係るキャッシュメモリ装置は、予測が外れる可能性が高い第2メモリアクセス命令がプロセッサ部で解読された場合には、ウェイ予測部による予測結果を無視して、予め定められたデータ格納部にクロックを供給する。また、本発明の実施の形態1に係るキャッシュメモリ装置は、予測が外れる可能性が低い第1メモリアクセス命令がプロセッサ部で解読された場合には、ウェイ予測部による予測結果に従って、予測されたウェイのデータ格納部にクロックを供給する。
図1は、本発明の実施の形態1に係るキャッシュメモリシステム10の構成の一例を示すブロック図である。
図1に示すように、本発明の実施の形態1に係るキャッシュメモリシステム10は、キャッシュメモリ装置100と、プロセッサ部200とを備える。
キャッシュメモリ装置100は、プロセッサ部200及びメインメモリ(図示せず)に接続されている。キャッシュメモリ装置100は、プロセッサ部200によってメモリアクセス命令が実行された場合に、ヒットかミスヒットかを判定する。具体的には、キャッシュメモリ装置100は、メモリアクセス命令が示すアドレスに対応するエントリがキャッシュメモリに存在する(ヒット)か否か(ミスヒット)を判定する。
例えば、メモリアクセス命令がリード命令である場合、キャッシュメモリ装置100は、リード命令が示すリードアドレスに対応するエントリがあり、かつ、当該エントリに格納されたデータが有効である場合に、ヒットと判定し、そうでない場合に、ミスヒットと判定する。また、メモリアクセス命令がライト命令である場合、キャッシュメモリ装置100は、ライト命令が示すライトアドレスに対応するエントリがある場合に、ヒットと判定し、そうでない場合に、ミスヒットと判定する。
リード命令が実行された場合において、ミスヒットと判定された場合は、キャッシュメモリ装置100は、キャッシュメモリにエントリを作成し、メインメモリから該当するデータを読み出す。そして、キャッシュメモリ装置100は、読み出したデータを、作成したエントリに書き込むとともに、プロセッサ部200に出力する。
また、ライト命令が実行された場合において、ミスヒットと判定された場合は、キャッシュメモリ装置100は、キャッシュメモリにエントリを作成し、作成したエントリにデータを書き込む。そして、キャッシュメモリ装置100は、所定のタイミングで、メインメモリに、エントリに書き込んだデータを書き込む。
図1に示すように、キャッシュメモリ装置100は、キャッシュメモリ110と、ウェイ予測部120と、TLB(Translation Look-aside Buffer)130とを備える。
キャッシュメモリ110は、n(nは2以上の整数)個のウェイを有するセットアソシアティブ方式のキャッシュメモリであり、プロセッサ部200に接続されている。具体的には、キャッシュメモリ110は、プロセッサ部200が備えるプロセッサ210と接続され、メモリアクセス命令が実行された場合に、当該メモリアクセス命令に含まれるアドレス151が入力される。本発明の実施の形態1では、一例として、キャッシュメモリ110は、2個のウェイを有する。
また、キャッシュメモリ110には、ライト命令が実行された場合に、書き込みデータ152が入力される。さらに、キャッシュメモリ110は、リード命令が実行された場合に、読み出しデータ153をプロセッサ210へ出力する。
図1に示すように、キャッシュメモリ110は、タグ格納部群111と、データ格納部群112と、クロック制御部113と、ヒット判定部114と、セレクタ115とを備える。
なお、以下の説明では、一例として、キャッシュメモリ110は、物理アドレスを格納する場合について説明する。アドレス151は、論理アドレス(仮想アドレス)であって、TLB130によって物理アドレスに変換される。そして、変換された物理アドレスが、アドレス151として、キャッシュメモリ110に入力されるものとする(この処理を示す経路については図1に示していない)。なお、キャッシュメモリ110は、仮想アドレスを格納してもよい。
タグ格納部群111は、n個のタグ格納部、すなわち、ウェイの数と同数のタグ格納部を有し、n個のタグ格納部のそれぞれに、複数のタグアドレスを格納することができる。1つのタグ格納部は、複数の(例えば、16個)エントリを含み、各エントリに1つのタグアドレスを格納することができる。タグアドレスは、例えば、21ビットであり、データの書き込み先、又は、データの読み出し先を示すアドレスである。本実施の形態では、ウェイは2個であるので、タグ格納部群111は、2個のタグ格納部111a及び111bを有する。
タグ格納部111a及び111bには、アドレス151が入力される。アドレス151は、例えば、タグアドレス、セットインデックス及びワードインデックスを含んでいる。タグ格納部111a及び111bは、アドレス151に含まれるセットインデックスに対応するエントリに格納されたタグアドレスを、タグデータ160a及び160bとして出力する。
データ格納部群112は、n個のデータ格納部、すなわち、ウェイの数と同数のデータ格納部を有し、n個のデータ格納部のそれぞれに、複数のデータを格納することができる。1つのデータ格納部は、複数の(例えば、16個)エントリ、すなわち、1つのタグ格納部が有するエントリの個数と同数のエントリを含み、各エントリに1つのデータを格納することができる。1つのデータのサイズは、例えば、64又は128バイトである。本実施の形態では、ウェイは2個であるので、データ格納部群112は、2個のデータ格納部112a及び112bを有する。
データ格納部112a及び112bには、アドレス151が入力される。データ格納部112a及び112bは、アドレス151に含まれるセットインデックスに対応するデータを、データ格納部読み出しデータ161a及び161bとして出力する。
なお、タグ格納部111aとデータ格納部112aとは第1ウェイに含まれる。1つのウェイには、複数の(例えば、16個)エントリ(キャッシュライン)が含まれる。複数のエントリのそれぞれが、タグ格納部111aの1つのタグアドレスとデータ格納部112aの1つのデータとを含んでいる。つまり、タグ格納部111aに格納されるタグアドレスと、データ格納部112aに格納されるデータとは、互いに対応付けられている。
同様に、タグ格納部111bとデータ格納部112bとが第2ウェイに含まれる。
また、プロセッサ210で実行されたメモリアクセス命令がライト命令である場合は、データ格納部群112には、アドレス151とともに、書き込みデータ152が入力される。そして、データ格納部群112は、ヒット判定部114から入力されるキャッシュヒット信号162とアドレス151とに基づいて、書き込みを行うウェイ及びエントリを決定し、決定したエントリに書き込みデータ152を書き込む。
クロック制御部113は、プロセッサ部200で解読されたメモリアクセス命令の種別に基づいて、複数のウェイに供給するクロックを制御する。具体的には、クロック制御部113は、第1メモリアクセス命令が解読された場合に、複数のウェイに含まれる複数のデータ格納部のうち、ウェイ予測部120によって予測されたウェイのデータ格納部のみにクロックを供給する。第1メモリアクセス命令は、例えば、プロセッサ210で実行中の複数のプログラムの間において排他の変数をメモリに読み書きする命令である。
また、クロック制御部113は、第2メモリアクセス命令が解読された場合に、ウェイ予測部120による予測結果に関わらず、複数のウェイに含まれる複数のデータ格納部のうち、予め定められたデータ格納部にクロックを供給する。より具体的には、クロック制御部113は、予め定められたデータ格納部として、全てのデータ格納部にクロックを供給する。
また、第2メモリアクセス命令は、第1メモリアクセス命令とは異なるタイプの命令である。例えば、第2メモリアクセス命令は、プロセッサ210で実行中の複数のプログラムの間において共有の変数をメモリに読み書きする命令である。
図1に示すように、クロック制御部113は、n個のクロック制御信号生成部、すなわち、ウェイの数と同数のクロック制御信号生成部を有する。本実施の形態では、ウェイが2個であるので、クロック制御部113は、2個のクロック制御信号生成部113a及び113bを有する。
クロック制御信号生成部113a及び113bは、例えば、OR回路によって構成される。具体的には、図1に示すように、クロック制御信号生成部113aには、共有アクセス信号156とウェイ予測部120から出力されるウェイ予測信号158aとが入力される。クロック制御信号生成部113aは、共有アクセス信号156とウェイ予測信号158aとの少なくとも1つがHighレベルであれば、クロック制御信号159aを出力する。
ウェイ予測信号158aは、第1ウェイがヒットするウェイであると予測されたか否かを示す信号である。ウェイ予測部120によって第1ウェイがヒットするウェイであると予測された場合に、ウェイ予測信号158aはHighレベルとなり、そうでない場合に、ウェイ予測信号158aはLowレベルとなる。
また、共有アクセス信号156は、プロセッサ部200から出力される信号であって、プロセッサ部200で第2メモリアクセス命令が解読された場合に、Highレベルとなる信号である。クロック制御信号159aは、第1ウェイに含まれるデータ格納部112aにクロックを供給するための信号である。
また、クロック制御信号生成部113bには、共有アクセス信号156とウェイ予測部120から出力されるウェイ予測信号158bとが入力される。クロック制御信号生成部113bは、共有アクセス信号156とウェイ予測信号158bとの少なくとも1つがHighレベルであれば、クロック制御信号159bを出力する。
ウェイ予測信号158bは、第2ウェイがヒットするウェイであると予測されたか否かを示す信号である。ウェイ予測部120によって第2ウェイがヒットするウェイであると予測された場合に、ウェイ予測信号158bはHighレベルとなり、そうでない場合に、ウェイ予測信号158bはLowレベルとなる。クロック制御信号159bは、第2ウェイに含まれるデータ格納部112bにクロックを供給するための信号である。
図1に示すように、共有アクセス信号156は、クロック制御部113が備える全てのクロック制御信号生成部に入力される。したがって、全てのクロック制御信号生成部はそれぞれ、クロック制御信号を出力するので、データ格納部群112が備える全てのデータ格納部にクロックが供給される。
つまり、共有アクセス信号156がキャッシュメモリ装置100に入力された場合は、ウェイ予測部120の予測結果に関わらず、予め定められたウェイ、本実施の形態の例では、全てのウェイに含まれる全てのデータ格納部にクロックが供給される。つまり、予測結果が無視される。
ヒット判定部114は、TLB130から出力される物理ページ番号163と、タグデータ160a及び160bとを用いて、ヒットかミスヒットかを判定する。具体的には、ヒット判定部114は、物理ページ番号163に対応するタグアドレスを、タグデータ160a及び160bのいずれかが示す場合を、ヒットと判定する。ヒットの場合は、ヒット判定部114は、ヒットであること、及び、ヒットしたウェイを示すキャッシュヒット信号162をセレクタ115及びウェイ予測部120へ出力する。
また、アドレス151が、ライト命令が示すアドレスである場合において、ヒットの場合は、キャッシュヒット信号162をデータ格納部群112へ出力する。
セレクタ115は、キャッシュヒット信号162に基づいて、データ格納部読み出しデータ161a及び161bを選択し、選択したデータを読み出しデータ153としてプロセッサ210へ出力する。
ウェイ予測部120は、プロセッサ210でメモリアクセス命令が実行されるときに、複数のウェイのうちのヒットするウェイを予測する。例えば、ウェイ予測部120は、過去にヒットしたウェイの履歴に基づいて、ヒットするウェイを予測する。
そして、ウェイ予測部120は、予測したウェイのデータ格納部のみにクロックを供給するように、クロック制御部113を制御する。例えば、ウェイ予測部120は、第1ウェイがヒットするウェイであると予測した場合には、Highレベルとなるウェイ予測信号158aを出力する。また、ウェイ予測部120は、第2ウェイがヒットするウェイであると予測した場合には、Highレベルとなるウェイ予測信号158bを出力する。
なお、ウェイ予測部120は、プロセッサ部200から排他アクセス信号157が入力された場合にのみウェイの予測を行い、共有アクセス信号156が入力された場合には、ウェイの予測を行わなくてもよい。排他アクセス信号157は、プロセッサ部200から出力される信号であって、プロセッサ部200で第1メモリアクセス命令が解読された場合に、Highレベルとなる信号である。
TLB130は、プロセッサ210からアドレス151が入力される。アドレス151は、論理アドレス(仮想アドレス)であり、TLB130は、高速に論理アドレスを物理アドレスに変換するために用いられるキャッシュメモリである。TLB130は、アドレス151が入力された場合において、ヒットである場合には、物理ページ番号163を出力する。
なお、本実施の形態では、キャッシュメモリ装置100がTLB130を備える構成について説明したが、プロセッサ部200がTLB130を備えてもよい。また、キャッシュメモリ装置100及びプロセッサ部200とは別に、TLB130を設けてもよい。
以上のように、本発明の実施の形態1に係るキャッシュメモリ装置100は、プロセッサ部200から排他アクセス信号157が入力された場合は、ウェイ予測部120によって予測されたウェイのデータ格納部のみにクロックを供給する。また、キャッシュメモリ装置100は、プロセッサ部200から共有アクセス信号156が入力された場合は、ウェイ予測部120による予測結果を無視して、全てのデータ格納部にクロックを供給する。
このように、本発明の実施の形態1に係るキャッシュメモリ装置100は、プロセッサ部200から入力される信号に基づいて、クロックを供給するデータ格納部を制御する。したがって、予測が当たる可能性が高い場合には、予測されたウェイのデータ格納部だけにクロックを供給することができるので、消費電力の増加を抑制することができる。また、予測が当たる可能性が低い場合には、全てのデータ格納部にクロックを供給することで、予測が外れた場合に、処理が繰り返されるのを防ぐことができるので、レイテンシーの低下を抑制することができ、性能の劣化を抑制することができる。
続いて、図1に示すプロセッサ部200について説明する。
プロセッサ部200は、キャッシュメモリ装置100及びメインメモリ(図示せず)に接続され、プログラムを実行することで、キャッシュメモリ装置100及びメインメモリにデータを読み書きする。図1に示すように、プロセッサ部200は、プロセッサ210と、命令解読部220と、命令キャッシュメモリ230とを備える。
プロセッサ210は、複数のプログラムを切り替えながら実行する。つまり、プロセッサ210は、マルチタスク処理及びマルチスレッド処理を実行する。したがって、プロセッサ210が実行するメモリアクセス命令は、例えば、以下の2つのタイプのメモリアクセス命令に分類される。第1タイプのメモリアクセス命令である第1メモリアクセス命令は、複数のプログラムの間において排他の変数をメモリに読み書きする命令である。また、第2タイプのメモリアクセス命令である第2メモリアクセス命令は、複数のプログラムの間において共有の変数をメモリに読み書きする命令である。
命令解読部220は、命令キャッシュメモリ230から命令コード154を読み出し、読み出した命令コード154を解読することで、命令デコード信号155を生成して、プロセッサ210に出力する。
命令解読部220は、複数のプログラムを解読することで、メモリアクセス命令が第1メモリアクセス命令であるか第2メモリアクセス命令であるかを判定する。また、命令解読部220は、判定結果に応じた信号を、キャッシュメモリ装置100に出力する。具体的には、命令解読部220は、第1メモリアクセス命令の場合、排他アクセス信号157を出力し、第2メモリアクセス命令の場合、共有アクセス信号156を出力する。
なお、第1メモリアクセス命令は、局所変数宣言された変数、具体的には、ローカル変数をメモリに読み書きする命令であり、第2メモリアクセス命令は、共有変数宣言された変数、具体的には、グローバル変数をメモリに読み書きする命令であってもよい。
第1メモリアクセス命令は、キャッシュメモリ装置100においてウェイの予測が外れる可能性が低い命令であり、第2メモリアクセス命令は、キャッシュメモリ装置100においてウェイの予測が外れる可能性が高い命令である。例えば、複数のプログラム間で共有の変数、及び、共有変数宣言された変数は、他のプログラムを実行した場合にもアクセスされる変数である。
1つのプログラムを実行した場合に使用されるデータは、同一のウェイに格納されることが多いが、共有の変数及び共有変数宣言された変数は、他のプログラムでも実行される。このため、これらの変数は、処理対象のプログラムを実行するために割り当てられたウェイとは、異なるウェイに格納されている場合が生じる。ウェイの予測は上述したように、過去の履歴に基づいて実行されるので、途中での他のプログラムによるアクセスが割り込むと、予測が外れやすい。したがって、第2メモリアクセス命令は、ウェイの予測が外れる可能性が高いメモリアクセス命令である。
命令キャッシュメモリ230は、プロセッサ210が実行する命令を格納するためのキャッシュメモリである。命令キャッシュメモリ230は、命令解読部220によって解読された命令を格納する。
以上のように、本発明の実施の形態1に係るプロセッサ部200は、メモリアクセス命令のタイプに応じて、キャッシュメモリ装置100のウェイ予測機能の制御を行う。具体的には、プロセッサ部200は、第1メモリアクセス命令を実行した場合は、排他アクセス信号157を出力して、キャッシュメモリ装置100に、ウェイ予測の結果を利用させる。また、プロセッサ部200は、第2メモリアクセス命令を実行した場合は、共有アクセス信号156を出力して、キャッシュメモリ装置100に、ウェイ予測の結果を無視させる。
このようにして、本発明の実施の形態1に係るキャッシュメモリシステム10によれば、予測が当たる可能性が高い場合には、予測されたウェイのデータ格納部だけにクロックを供給することができるので、消費電力の増加を抑制することができる。また、予測が当たる可能性が低い場合には、全てのデータ格納部にクロックを供給することで、予測が外れた場合に、処理が繰り返されるのを防ぐことができるので、レイテンシーの低下を抑制することができ、性能の劣化を抑制することができる。
続いて、本発明の実施の形態1に係るキャッシュメモリ装置100の具体的な動作について説明する。まず、メモリアクセス命令の具体例について、図2を用いて説明する。図2は、本発明の実施の形態1に係るメモリアクセス命令の一例を示す図である。メモリアクセス命令が、メモリからデータを読み出すためのロード命令である場合について説明する。
“load rm,(rn)”は、第1メモリアクセス命令の一例であり、ロード命令であって、複数のプログラム間で排他の領域へのアクセスを意味する命令である。図1に示す命令解読部220は、解読したメモリアクセス命令が“load rm,(rn)”である場合は、排他アクセス信号157を出力する。なお、“load rm,(rn)”は、従来から使用されている通常のロード命令である。
“loadcm rm,(rn)”は、第2メモリアクセス命令の一例であり、ロード命令であって、複数のプログラム間で共有の領域へのアクセスを意味する命令である。図1に示す命令解読部220は、解読したメモリアクセス命令が“loadcm rm,(rn)”である場合は、共有アクセス信号156を出力する。“loadcm rm,(rn)”は、後述する本実施の形態に係るプログラム変換装置によって生成される新たなロード命令である。
なお、“rm”は、読み出したデータを格納するレジスタを示す。また、“rn”は、読み出すデータが格納されているメモリ内の領域を示すアドレスが格納されているレジスタを示す。
つまり、“load rm,(rn)”及び“loadcm rm,(rn)”は、“rn”が示すレジスタに格納されているアドレスが示す、メモリ内の領域からデータを読み出し、読み出したデータを、“rm”が示すレジスタに格納することを意味するロード命令である。
図3は、本発明の実施の形態1に係る命令と予測ウェイとアクセスウェイとの関係の一例を示す図である。
図3において、予測ウェイは、図1に示すウェイ予測部120によるウェイの予測結果を示す。アクセスウェイは、図1に示すクロック制御部113がクロックを供給するウェイを示す。
例えば、時刻t0において、第1メモリアクセス命令である“load r0,(r1)”が命令解読部220で解読された場合、命令解読部220は、排他アクセス信号157をキャッシュメモリ装置100へ出力する。キャッシュメモリ装置100では、ウェイ予測部120が、過去の履歴などに基づいてヒットするウェイがウェイAであると予測する。そして、ウェイ予測部120は、ウェイAに対応するウェイ予測信号のみ(例えば、ウェイ予測信号158aのみ)をHighレベルとして出力する。
クロック制御部113は、ウェイ予測部120による予測結果に基づいて、ウェイAに含まれるデータ格納部のみ(例えば、データ格納部112aのみ)にクロックを供給する。具体的には、クロック制御部113には、Highレベルとなったウェイ予測信号158aのみが入力されるので、クロック制御信号生成部113aのみがクロック制御信号159aをデータ格納部群112へ出力する。
このようにして、図3に示すように、第1メモリアクセス命令がプロセッサ部200で実行された場合は、予測ウェイとアクセスウェイとが一致する。
これに対して、例えば、時刻t(n-1)において、第2メモリアクセス命令である“load r14,(r15)”が命令解読部220で解読された場合、命令解読部220は、共有アクセス信号156をキャッシュメモリ装置100へ出力する。このとき、キャッシュメモリ装置100では、ウェイ予測部120は、過去の履歴などに基づいてヒットするウェイがウェイAであると予測する。そして、ウェイ予測部120は、ウェイAに対応するウェイ予測信号のみ(例えば、ウェイ予測信号158aのみ)をHighレベルとして出力する。
クロック制御部113には、Highレベルとなった共有アクセス信号156が入力される。したがって、上述したように、クロック制御部113は、全てのウェイに含まれる全てのデータ格納部にクロックを供給するように、クロック制御信号を出力する。すなわち、クロック制御部113は、ウェイ予測部120による予測結果には基づかずに、言い換えると、予測結果を無視して、予め定められたデータ格納部にクロックを供給する。
これにより、キャッシュメモリ装置100は、全てのデータ格納部にクロックを供給することで、ウェイの予測が外れた場合であっても、ミスヒットと判定されることなく、読み出しデータ153をプロセッサ部200に出力することができる。また、常に全てのデータ格納部にクロックを供給する場合に比べて、第2メモリアクセス命令のようにウェイの予測が外れる可能性が高い命令が解読された場合のみ、全てのデータ格納部にクロックを供給するので、消費電力の増加を抑制することができる。
ここで、ウェイ予測部120の詳細について、図4を用いて説明する。図4は、本発明の実施の形態1に係るウェイ予測部の構成の一例を示すブロック図である。
図4に示すように、ウェイ予測部120は、履歴保持部121と、予測部122と、更新部123とを備える。
履歴保持部121は、ヒットしたウェイの履歴を示す履歴情報を保持するためのメモリなどである。例えば、履歴保持部121は、実行中のプログラム又はスレッド単位で、ヒットしたウェイの履歴を保持する。つまり、履歴保持部121は、実行中のプログラム又はスレッドが終了するまで、当該プログラム又はスレッドに含まれるメモリアクセス命令に対応するヒットしたウェイの履歴を保持する。あるいは、履歴情報は、直前にヒットしたウェイだけを示す情報であってもよい。
予測部122は、履歴保持部121に保持された履歴情報に基づいて、ヒットするウェイを予測する。例えば、予測部122は、直前にヒットしたウェイを、ヒットするウェイと予測してもよい。あるいは、予測部122は、所定の予測アルゴリズムに基づいて、ヒットするウェイを予測してもよい。予測の方法は、上記の例には限られない。
更新部123は、履歴保持部121に保持された履歴情報を更新する。具体的には、第1メモリアクセス命令がプロセッサ部200で解読された場合に、当該第1メモリアクセス命令によってヒットしたウェイを示す情報を用いて、履歴情報を更新する。より具体的には、更新部123は、ヒット判定部114から入力されるキャッシュヒット信号162を用いて、履歴情報を更新する。
また、第2メモリアクセス命令がプロセッサ部200で解読された場合には、履歴情報を更新しない。つまり、更新部123に共有アクセス信号156が入力された場合、更新部123は、ヒット判定部114から入力されるキャッシュヒット信号162を無視する。
以下では、図5を用いて、ウェイ予測部120の動作について説明する。図5は、本発明の実施の形態1に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
図5において、アクセスタグウェイは、クロックが供給されるタグ格納部を含むウェイを示す。本発明の実施の形態1では、全てのタグ格納部にクロックが供給されている。
アクセスデータウェイは、図3に示すアクセスウェイと同様に、クロック制御部113がクロックを供給するデータ格納部を含むウェイを示す。ヒットウェイは、メモリアクセス命令が実行された場合にヒットしたウェイを示す。具体的には、ヒットウェイは、キャッシュヒット信号162が示すウェイである。
図5の例では、時刻t(n-1)において、第2メモリアクセス命令である“load r14,(r15)”が命令解読部220で解読された場合、命令解読部220は、共有アクセス信号156をキャッシュメモリ装置100へ出力する。このとき、キャッシュメモリ装置100では、予測部122は、過去の履歴などに基づいてヒットするウェイがウェイAであると予測する。
クロック制御部113には、Highレベルとなった共有アクセス信号156が入力される。したがって、上述したように、クロック制御部113は、全てのウェイに含まれる全てのデータ格納部にクロックを供給するように、クロック制御信号を出力する。
そして、ヒット判定部114によってウェイCがヒットしたと判定され、ヒットしたウェイCを示すキャッシュヒット信号162が更新部123に入力される。しかしながら、更新部123には、共有アクセス信号156が入力されているので、ヒットしたウェイCを示すキャッシュヒット信号162を無視して、履歴情報を更新しない。
したがって、時刻t(n)に示すように、次の第1メモリアクセス命令である“load r16,(r17)”が命令解読部220で解読された場合、予測部122は、ウェイCを示す情報によって更新されていない履歴情報に基づいて、ヒットするウェイがウェイAであると判定している。
なお、更新部123は、第2メモリアクセス命令が解読された場合に、予測部122によって予測されたウェイと、ヒットしたウェイとが一致していた場合であっても、キャッシュヒット信号162を無視する。
以上のように、本発明の実施の形態1に係るウェイ予測部120は、第2メモリアクセス命令が解読された場合には、以降の命令が実行された場合における予測を行う際に、第2メモリアクセス命令に対応する予測結果を利用しない。これにより、蓄積されてきた予測アルゴリズムを壊すことがないので、以降の命令が実行された場合に、正しい予測を行うことができる。
なお、上記の例では、更新部123が履歴情報を更新しない例について説明したが、予測部122が、共有アクセス信号156を受け取り、ウェイの予測を行わなくてもよい。あるいは、予測部122は、共有アクセス信号156が入力された以降において、メモリアクセス命令が実行された場合に、第2メモリアクセス命令に対応する予測結果を用いない予測アルゴリズムに基づいて、ウェイの予測を行ってもよい。
続いて、本発明の実施の形態1に係るキャッシュメモリシステム10によって実行されるキャッシュメモリ110の制御方法について、図6を用いて説明する。図6は、本発明の実施の形態1に係るキャッシュメモリ110の制御方法の一例を示すフローチャートである。
まず、ウェイ予測部120は、プロセッサ部200でメモリアクセス命令が解読されたときに、ヒットするウェイを予測する(S110)。予測結果は、クロック制御部113に出力される。
次に、プロセッサ部200で解読されたメモリアクセス命令が第1メモリアクセス命令である場合(S120で“第1メモリアクセス命令”)、クロック制御部113は、ウェイ予測部120によって予測されたウェイのみにクロックを供給する(S130)。具体的には、クロック制御部113は、複数のウェイに含まれる複数のデータ格納部のうち、予測されたウェイに含まれるデータ格納部のみにクロックを供給する。
プロセッサ部200で解読されたメモリアクセス命令が第2メモリアクセス命令である場合(S120で“第2メモリアクセス命令”)、クロック制御部113は、予め定められたウェイにクロックを供給する(S140)。具体的には、クロック制御部113は、全てのウェイにクロックを供給する。より具体的には、クロック制御部113は、複数のウェイに含まれる全てのデータ格納部にクロックを供給する。
以上のようにして、本発明の実施の形態1に係るキャッシュメモリ110の制御方法によれば、予測が外れる可能性が高い第2メモリアクセス命令が解読された場合には、全てのデータ格納部にクロックを供給する。これにより、予測が外れても処理が繰り返されることを防ぐことができる。すなわち、予測ミスの発生を防止することができるので、性能の劣化を抑制することができる。
また、予測が外れる可能性が低い第1メモリアクセス命令が解読された場合には、予測結果が示すウェイのデータ格納部のみにクロックを供給する。これにより、常に全てのデータ格納部にクロックを供給する場合に比べて、消費電力を抑制することができる。
以上のことから、本発明の実施の形態1に係るキャッシュメモリ装置100及びキャッシュメモリの制御方法によれば、性能の劣化を抑制するとともに、消費電力の増加を抑制することができる。
続いて、メモリアクセス命令がライト命令(ストア命令)である場合について、説明する。
図7は、本発明の実施の形態1に係るメモリアクセス命令の一例を示す図である。
“store (rn),rm”は、メモリアクセス命令の一例であり、ライト命令である。“rm”は、書き込みデータが格納されているレジスタを示す。“(rn)”は、書き込みデータを書き込むメモリ内の領域を示すアドレスが格納されているレジスタである。つまり、“store (rn),rm”は、“rm”が示すレジスタに格納されているデータを、“rn”が示すレジスタに格納されているアドレスが示す、メモリ内の領域に書き込むことを意味するライト命令である。
ライト命令がプロセッサ210で実行された場合、キャッシュメモリ装置100は、ヒットしたウェイ及びエントリが決定されるまで、書き込みデータ152をデータ格納部に書き込むことはできない。したがって、ライト命令が実行された場合に、ウェイの予測を行ったとしても、ヒット判定部114の結果を待つ必要があるため、ウェイの予測結果を用いる必要はない。よって、図7に示すように、ライト命令は、第1メモリアクセス命令及び第2メモリアクセス命令への分類は行われない。
図8は、本発明の実施の形態1に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
例えば、時刻t3において、ストア命令である“store (r5),r3”がプロセッサ210で実行された場合、ヒット判定部114は、ウェイCがヒットしたウェイであると判定し、ウェイCを示すキャッシュヒット信号162を出力する。そして、データ格納部群112には、キャッシュヒット信号162に基づいて、ウェイCに含まれるデータ格納部のみにクロックが供給される。
このようにして、図8に示すように、ライト命令(ストア命令)がプロセッサ210で実行された場合には、ヒットウェイとアクセスデータウェイとが一致する。
以上のように、ライト命令(ストア命令)が実行された場合は、リード命令の場合に比べて1サイクル分の処理が多く必要となるが、ヒットしたウェイのデータ格納部だけにクロックを供給すればよいので、全てのウェイのデータ格納部にクロックを供給する場合に比べて、消費電力を抑制することができる。
続いて、本発明の実施の形態1に係るプログラム変換装置について、図9を用いて説明する。図9は、本発明の実施の形態1に係るプログラム変換装置300の構成の一例を示すブロック図である。
図9に示すプログラム変換装置300は、ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成する。例えば、プログラム変換装置300は、コンパイラであり、メモリアクセス命令の種別を判定し、メモリアクセス命令を変換することで、第2メモリアクセス命令を生成する。第2メモリアクセス命令は、ウェイの予測結果をキャッシュメモリに利用させないようにするための予測無視メモリアクセス命令の一例である。
図9に示すように、プログラム変換装置300は、抽出部310と、判定部320と、変換部330とを備える。
抽出部310は、入力されたプログラムからメモリアクセス命令を抽出する。プログラムは、例えば、Perl、JavaScript、C言語などの高級言語で記述されている。
判定部320は、抽出部310によって抽出されたメモリアクセス命令の種別を判定する。具体的には、判定部320は、抽出部310によって抽出されたメモリアクセス命令が示す変数がグローバル変数であるか否かを判定する。より具体的には、判定部320は、メモリアクセス命令が示す変数がグローバル変数であるかローカル変数であるかを判定する。
変換部330は、判定部320によってメモリアクセス命令が示す変数がグローバル変数であると判定された場合、対応するメモリアクセス命令を、ウェイの予測結果をキャッシュメモリに利用させないようにするための予測無視メモリアクセス命令に変換する。つまり、予測無視メモリアクセス命令は、グローバル変数をメモリに読み書きすることを示すメモリアクセス命令である。
具体的には、予測無視メモリアクセス命令は、例えば、複数のプログラムの間において共有の変数をメモリに読み書きすることを示すメモリアクセス命令である。あるいは、予測無視メモリアクセス命令は、共有変数宣言された変数をメモリに読み書きすることを示すメモリアクセス命令である。
以上のように、本発明の実施の形態1に係るプログラム変換装置300は、メモリアクセス命令が示す変数がグローバル変数であるか否かを判定し、グローバル変数である場合は、当該メモリアクセス命令を、ウェイの予測結果を利用させないようにするための予測無視メモリアクセス命令に変換する。
グローバル変数は、複数のプログラム及び複数のスレッドにまたがって参照される変数である。このため、グローバル変数を読み書きするためのメモリアクセス命令が解読されたときにキャッシュメモリ装置100が実行するウェイの予測は、ローカル変数の場合に比べて、外れる可能性が高い。
したがって、グローバル変数の読み書きを示すメモリアクセス命令が解読された場合には、キャッシュメモリ装置100によって実行されるウェイの予測結果を無視させることで、キャッシュメモリ装置100における処理の繰り返しを防止することができる。よって、キャッシュメモリ装置100におけるレイテンシーの低下、及び、繰り返しによる消費電力の増加を抑制することができる。
また、グローバル変数でない場合、具体的には、ローカル変数である場合には、キャッシュメモリ装置100ではウェイの予測結果を利用して、クロックを供給するデータ格納部を制限する。このため、キャッシュメモリ装置100における消費電力を低減することができる。
ここで、判定部320の動作について、プログラムを記述している高級言語毎に、説明する。
例えば、Perlで記述されたプログラムでは、変数は、宣言したブロック({}で示される範囲)内だけで使用される。このように、有効な範囲が決められている変数がローカル変数である。言い換えると、ローカル変数は、参照される範囲が決まっている変数である。
つまり、Perlで記述されたプログラムでは、{}で囲まれた範囲内に宣言された変数が、ローカル変数である。逆に、{}で囲まれた範囲外で宣言された変数が、グローバル変数である。グローバル変数は、あらゆる場所からの参照が可能な変数である。
したがって、判定部320は、変数が宣言されている位置を判定することで、当該変数がグローバル変数であるかローカル変数であるかを判定することができる。
また、JavaScriptで記述されたプログラムでは、varを付けて変数宣言した場合、当該変数はローカル変数となる。これに対して、何も付けずに変数宣言した場合、当該変数はグローバル変数となる。
したがって、判定部320は、変数宣言されたときにvarが付いているか否かを判定することで、当該変数がグローバル変数であるかローカル変数であるかを判定することができる。
また、C言語で記述されたプログラムでは、所定の関数内で宣言された変数は、ローカル変数となる。これに対して、グローバル変数は、任意の関数の外側で定義するとともに、使用する関数の中でも改めて、宣言される必要がある。
この場合、はっきりとexternを用いて宣言するか、あるいは、前後関係から暗黙のうちに宣言すればよい。前後関係から暗黙のうちにとは、特定の関数で使われる以前に、プログラムファイル(ソースファイル)の中でグローバル変数の定義がされていれば、使用する関数内でのexternを用いた宣言は不要である。
したがって、判定部320は、関数の外部で宣言されているとともに、いずれかの関数でexternを用いて宣言されている場合は、当該変数がグローバル変数であると判定することができる。
なお、他の高級言語で記述されたプログラムの場合も、判定部320は、それぞれのプログラムに基づいて、変数がグローバル変数であるかローカル変数であるかを判定することができる。
続いて、本発明の実施の形態1に係るプログラム変換装置300の動作について、図10を用いて説明する。図10は、本発明の実施の形態1に係るプログラム変換装置300の動作の一例を示すフローチャートである。
まず、抽出部310は、入力されたプログラムからメモリアクセス命令を抽出する(S210)。例えば、抽出部は、高級言語で記述されたプログラム(ソースコード)からメモリアクセス命令を抽出し、抽出したメモリアクセス命令をコンパイルすることで、図2に示す“load rm,(rn)”などの第1メモリアクセス命令に変換する。
次に、判定部320は、抽出部310によって抽出されたメモリアクセス命令が示す変数の種別を判定する(S220)。
メモリアクセス命令が示す変数がグローバル変数である場合(S220で“グローバル変数”)、変換部330は、対応するメモリアクセス命令を変換することで、予測無視メモリアクセス命令の一例である第2メモリアクセス命令を生成する(S230)。変数がグローバル変数である場合は、変換部330は、第1メモリアクセス命令を、図2に示す“loadcm rm,(rn)”などの第2メモリアクセス命令に変換する。
また、メモリアクセス命令が示す変数がローカル変数である場合(S220で“ローカル変数”)、変換部330は、対応するメモリアクセス命令をそのまま出力する。
なお、プログラム変換装置300は、ソースコードからメモリアクセス命令を抽出し、コンパイルを行う前に、抽出したメモリアクセス命令が示す変数がグローバル変数であるか否かを判定してもよい。グローバル変数であると判定された場合には、対応するメモリアクセス命令を第2メモリアクセス命令に変換し、ローカル変数であると判定された場合には、対応するメモリアクセス命令を第1メモリアクセス命令に変換する。
以上のように、本発明の実施の形態1に係るキャッシュメモリシステム10は、ウェイの予測が外れる可能性が高いメモリアクセス命令が解読された場合には、ウェイの予測結果を無視して、キャッシュメモリ110の全てのデータ格納部にクロックを供給する。これにより、予測が外れても処理が繰り返されることを防ぐことができる。すなわち、予測ミスの発生を防止することができるので、性能の劣化を抑制することができる。
また、キャッシュメモリシステム10は、ウェイの予測が外れる可能性が低いメモリアクセス命令が解読された場合には、ウェイの予測結果に基づいて、予測されたウェイのデータ格納部のみにクロックを供給する。これにより、常に全てのデータ格納部にクロックを供給する場合に比べて、消費電力を抑制することができる。
なお、本発明の実施の形態1では、第2メモリアクセス命令がプロセッサ部200で解読された場合には、当該第2メモリアクセス命令に対応するヒット結果を無視したが、ヒット結果を予測アルゴリズムに採用してもよい。
図11は、本発明の実施の形態1の変形例に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
図11の例では、時刻t(n-1)において、第2メモリアクセス命令である“load r14,(r15)”がプロセッサ部200で解読された場合、命令解読部220は、共有アクセス信号156をキャッシュメモリ装置100へ出力する。このとき、キャッシュメモリ装置100では、予測部122は、過去の履歴などに基づいてヒットするウェイがウェイAであると予測する。
クロック制御部113には、Highレベルとなった共有アクセス信号156が入力される。したがって、上述したように、クロック制御部113は、全てのウェイに含まれる全てのデータ格納部にクロックを供給するように、クロック制御信号を出力する。
そして、ヒット判定部114によってウェイCがヒットしたと判定され、ヒットしたウェイCを示すキャッシュヒット信号162が更新部123に入力される。そして、更新部123は、ヒットしたウェイCを示すキャッシュヒット信号162を用いて、履歴情報を更新する。
したがって、時刻t(n)に示すように、次の第1メモリアクセス命令である“load r16,(r17)”がプロセッサ部200で解読された場合、予測部122は、ウェイCを示す情報によって更新された履歴情報に基づいて、ヒットするウェイがウェイCであると判定している。
以上のように、本発明の実施の形態1の変形例においては、更新部123は、第1メモリアクセス命令及び第2メモリアクセス命令のいずれがプロセッサ部200で解読された場合であっても、対応するメモリアクセス命令によってヒットしたウェイを示す情報を用いて、履歴情報を更新してもよい。これにより、複数のプログラムのうち単一のプログラムのみが一定期間実行されてヒットするウェイの履歴が単一のプログラムにより決定される場合に、予測の当たる確率を向上させることができる。
(実施の形態2)
本発明の実施の形態2に係るキャッシュメモリ装置では、クロック制御部が、さらに、第1メモリアクセス命令がプロセッサ部で解読された場合に、複数のウェイに含まれる複数のタグ格納部のうち、ウェイ予測部によって予測されたウェイのタグ格納部のみにクロックを供給し、第2メモリアクセス命令がプロセッサ部で解読された場合に、複数のウェイに含まれる複数のタグ格納部のうち、予め定められたタグ格納部にクロックを供給することを特徴とする。
本発明の実施の形態2に係るキャッシュメモリ装置では、クロック制御部が、さらに、第1メモリアクセス命令がプロセッサ部で解読された場合に、複数のウェイに含まれる複数のタグ格納部のうち、ウェイ予測部によって予測されたウェイのタグ格納部のみにクロックを供給し、第2メモリアクセス命令がプロセッサ部で解読された場合に、複数のウェイに含まれる複数のタグ格納部のうち、予め定められたタグ格納部にクロックを供給することを特徴とする。
図12は、本発明の実施の形態2に係るキャッシュメモリ装置400の構成の一例を示すブロック図である。
図12に示すキャッシュメモリ装置400は、図1に示す実施の形態1に係るキャッシュメモリ装置100と比較して、タグ格納部群111の代わりにタグ格納部群411を備え、クロック制御部113の代わりにクロック制御部413を備える点が異なっている。図12において、図1に示す実施の形態1と同じ構成要素には同じ参照符号を付し、説明を省略し、異なる点を中心に説明する。
タグ格納部群411は、n個のタグ格納部、すなわち、ウェイの数と同数のタグ格納部を有し、n個のタグ格納部のそれぞれに、複数のタグアドレスを格納することができる。本実施の形態では、ウェイは2個であるので、タグ格納部群411は、2個のタグ格納部411a及び411bを有する。
タグ格納部411a及び411bには、アドレス151が入力される。タグ格納部411a及び411bは、アドレス151に含まれるセットインデックスに対応するエントリに格納されたタグアドレスを、タグデータ160a及び160bとして出力する。
さらに、タグ格納部群411には、クロック制御部413からクロック制御信号が入力される。つまり、実施の形態1に示すタグ格納部群111では、全てのタグ格納部にクロックが供給されたのに対して、タグ格納部群411は、クロック制御部413からの制御に基づいて、クロックが供給される。
クロック制御部413は、プロセッサ部200で解読されたメモリアクセス命令の種別に基づいて、複数のウェイに供給するクロックを制御する。具体的には、クロック制御部413は、第1メモリアクセス命令が解読された場合に、複数のウェイに含まれる複数のタグ格納部及び複数のデータ格納部のうち、ウェイ予測部120によって予測されたウェイのタグ格納部及びデータ格納部のみにクロックを供給する。
また、クロック制御部413は、第2メモリアクセス命令が解読された場合に、ウェイ予測部120による予測結果に関わらず、複数のウェイに含まれる複数のタグ格納部及び複数のデータ格納部のうち、予め定められたウェイのタグ格納部及びデータ格納部にクロックを供給する。具体的には、クロック制御部413は、第2メモリアクセス命令が解読された場合に、全てのタグ格納部及び全てのデータ格納部にクロックを供給する。
図12に示すように、クロック制御部413は、n個のクロック制御信号生成部、すなわち、ウェイの数と同数のクロック制御信号生成部を有する。本実施の形態では、ウェイが2個であるので、クロック制御部413は、2個のクロック制御信号生成部413a及び413bを有する。
なお、クロック制御信号生成部413a及び413bの動作は、実施の形態1に係るクロック制御信号生成部113a及び113bとほぼ同様である。データ格納部群112だけでなく、タグ格納部群411にもクロック制御信号を出力する点が異なっている。
具体的には、図12に示すように、クロック制御信号生成部413aは、共有アクセス信号156及びウェイ予測信号158aの少なくとも1つが入力された場合に、クロック制御信号459aをタグ格納部411aとデータ格納部112aとに出力する。同様に、クロック制御信号生成部413bは、共有アクセス信号156及びウェイ予測信号158bの少なくとも1つが入力された場合に、クロック制御信号459bをタグ格納部411bとデータ格納部112bとに出力する。
また、第1メモリアクセス命令及び第2メモリアクセス命令については、実施の形態1と同じである。
続いて、メモリアクセス命令がライト命令(ストア命令)である場合について、説明する。
図13は、本発明の実施の形態2の変形例に係るメモリアクセス命令の一例を示す図である。
“store (rn),rm”は、第1メモリアクセス命令の一例であり、ライト命令(ストア命令)であって、複数のプログラム間で排他の領域へのアクセスを意味する命令である。図12に示す命令解読部220は、解読したメモリアクセス命令が“store (rn),rm”である場合は、排他アクセス信号157を出力する。なお、“store (rn),rm”は、従来から使用されている通常のライト命令である。
“storecm (rn),rm”は、第2メモリアクセス命令の一例であり、ライト命令(ストア命令)であって、複数のプログラム間で共有の領域へのアクセスを意味する命令である。図12に示す命令解読部220は、解読したメモリアクセス命令が“storecm (rn),rm”である場合は、共有アクセス信号156を出力する。“storecm (rn),rm”は、本実施の形態に係るプログラム変換装置によって生成される新たなライト命令である。
なお、“store (rn),rm”及び“storecm (rn),rm”は、“rm”が示すレジスタに格納されているデータを、“rn”が示すレジスタに格納されているアドレスが示す、メモリ内の領域に書き込むことを意味するライト命令である。
実施の形態1と同様に、ライト命令がプロセッサ210で実行された場合、キャッシュメモリ装置400は、ヒットしたウェイ及びエントリが決定されるまで、書き込みデータ152をデータ格納部に書き込むことはできない。したがって、データ格納部にクロックを供給するか否かを決定するために、ウェイの予測結果を用いる必要はない。
これに対して、本発明の実施の形態2に係るキャッシュメモリ装置400では、タグ格納部にクロックを供給するか否かを決定するのに、ウェイの予測結果を用いることができる。
図14は、本発明の実施の形態2の変形例に係る命令と予測ウェイとアクセスウェイとヒットウェイとの関係の一例を示す図である。
例えば、時刻t2において、第1メモリアクセス命令である“store (r2),r0”が命令解読部220で解読された場合、命令解読部220は、排他アクセス信号157をキャッシュメモリ装置400へ出力する。キャッシュメモリ装置400では、ウェイ予測部120が、過去の履歴などに基づいてヒットするウェイがウェイAであると予測する。そして、ウェイ予測部120は、ウェイAに対応するウェイ予測信号のみ(例えば、ウェイ予測信号158aのみ)をHighレベルとして出力する。
クロック制御部413は、ウェイ予測部120による予測結果に基づいて、ウェイAに含まれるタグ格納部のみ(例えば、タグ格納部411aのみ)にクロックを供給する。具体的には、クロック制御部413には、Highレベルとなったウェイ予測信号158aのみが入力されるので、クロック制御信号生成部413aのみがクロック制御信号459aをタグ格納部群411に出力する。
このようにして、図14に示すように、第1メモリアクセス命令が命令解読部220で解読された場合は、予測ウェイとアクセスタグウェイとが一致する。
これに対して、例えば、時刻t4において、第2メモリアクセス命令である“storecm (r5),r3”が命令解読部220で解読された場合、命令解読部220は、共有アクセス信号156をキャッシュメモリ装置400へ出力する。キャッシュメモリ装置400では、ウェイ予測部120は、過去の履歴などに基づいてヒットするウェイがウェイAであると予測する。そして、ウェイ予測部120は、ウェイAに対応するウェイ予測信号のみ(例えば、ウェイ予測信号158aのみ)をHighレベルとして出力する。
クロック制御部413には、Highレベルとなった共有アクセス信号156が入力される。したがって、上述したように、クロック制御部413は、全てのウェイに含まれる全てのタグ格納部にクロックを供給するように、クロック制御信号を出力する。すなわち、クロック制御部413は、ウェイ予測部120による予測結果には基づかずに、言い換えると、予測結果を無視して、予め定められたタグ格納部にクロックを供給する。
そして、ヒット判定部114は、ウェイCがヒットしたウェイであると判定し、ウェイCを示すキャッシュヒット信号162を出力する。そして、データ格納部群112には、キャッシュヒット信号162に基づいて、ウェイCに含まれるデータ格納部のみにクロックが供給される。
以上のように、ライト命令(ストア命令)が実行された場合、全てのタグ格納部にクロックを供給することで、ウェイの予測が外れた場合であっても、ミスヒットと判定されることなく、書き込みデータ152を書き込むエントリを決定することができる。また、常に全てのタグ格納部にクロックを供給する場合に比べて、第2メモリアクセス命令のように、ウェイの予測が外れる可能性が高い命令が実行された場合のみ、全てのタグ格納部にクロックを供給するので、消費電力の増加を抑制することができる。
以上の構成により、本発明の実施の形態2に係るキャッシュメモリ装置400は、プロセッサ部200から排他アクセス信号157が入力された場合は、ウェイ予測部120によって予測されたウェイのデータ格納部とタグ格納部とのみにクロックを供給する。また、キャッシュメモリ装置400は、プロセッサ部200から共有アクセス信号156が入力された場合は、ウェイ予測部120による予測結果を無視して全てのデータ格納部とタグ格納部とにクロックを供給する。
このように、本発明の実施の形態2に係るキャッシュメモリ装置400は、プロセッサ部200から入力される信号に基づいて、クロックを供給するデータ格納部及びタグ格納部を制御する。したがって、予測が当たる可能性が高い場合には、予測されたデータ格納部とタグ格納部とだけにクロックを供給することができるので、消費電力の増加を抑制することができる。このとき、予測されなかったウェイについては、データ格納部だけでなくタグ格納部にも、クロックを供給しないので、消費電力をさらに低減することができる。
また、予測が当たる可能性が低い場合には、全てのデータ格納部及びタグ格納部にクロックを供給することで、予測が外れた場合に、処理が繰り返されるのを防ぐことができるので、レイテンシーの低下を抑制することができ、性能の劣化を抑制することができる。
以上、本発明に係るキャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法について、実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を当該実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
例えば、上記の実施の形態では、第2メモリアクセス命令がプロセッサ部200で解読された場合に、予め定められたデータ格納部及び/又はタグ格納部として、全てのデータ格納部及び/又はタグ格納部にクロックを供給する例について説明した。これに対して、全てのデータ格納部及び/又はタグ格納部ではなく、当該第2メモリアクセス命令を含むプログラムを実行するために割り当てられた1つ以上のウェイに含まれる1つ以上のデータ格納部及び/又はタグ格納部にクロックを供給してもよい。
例えば、複数のプログラムに含まれる複数のスレッドはそれぞれ、実行時に利用するウェイが割り当てられていてもよい。図15に示す例では、スレッドAには、ウェイA及びウェイBが割り当てられ、スレッドBにはウェイCが、スレッドDにはウェイDがそれぞれ割り当てられている。
図16は、本発明の実施の形態の変形例に係るキャッシュメモリ装置500の構成の一例を示す図である。同図に示すように、図1に示すキャッシュメモリ装置100と比べて、キャッシュメモリ110は、クロック制御部113の代わりに、クロック制御部513を備える。
クロック制御部513は、例えば、図15に示すようなスレッドとウェイとの対応関係を示すテーブルを参照することで、第2メモリアクセス命令が解読された場合に、当該第2メモリアクセス命令を含むスレッドに割り当てられたウェイにクロックを供給する。図15の例では、スレッドAに含まれる第2メモリアクセス命令がプロセッサ部200で解読された場合は、クロック制御部513は、ウェイA及びウェイBに含まれるデータ格納部のみに、クロックを供給する。
図16に示すように、クロック制御部513は、図1に示す実施の形態1に係るクロック制御部113と比較して、新たに、スイッチ516a及び516bと、選択部517とを備える。
スイッチ516a及び516bは、選択部517からの制御信号564a及び564bに基づいて、共有アクセス信号156をクロック制御信号生成部113a及び113bのそれぞれに供給するか否かを決定する。スイッチ516aは、クロック制御信号生成部113a及びデータ格納部112aに対応する。スイッチ516bは、クロック制御信号生成部113b及びデータ格納部112bに対応する。
選択部517は、スレッドとウェイとの対応関係を示すテーブルを保持する。選択部517は、当該テーブルを参照することで、第2メモリアクセス命令が解読された場合に、第2メモリアクセス命令を含むスレッドに割り当てられたウェイのデータ格納部に対応したスイッチのみをオンするように制御信号を出力する。
例えば、スレッドAとウェイAとが割り当てられている場合において、スレッドAに含まれる第2メモリアクセス命令が解読された場合は、選択部517は、スイッチ516aのみがオンするように制御信号564aを出力する。これにより、スイッチ516aは、共有アクセス信号156をクロック制御信号生成部113aに出力するので、クロック制御信号生成部113aは、データ格納部112aにクロックを供給することができる。
これにより、キャッシュメモリ装置500が備える全てのデータ格納部にクロックを供給する場合に比べて、消費電力を低減することができる。
また、ウェイ予測部120は、ヒットするウェイとして、複数のウェイを予測してもよい。
また、図17に示すように、第2メモリアクセス命令は、ウェイの予測結果を利用しないことを示す属性ビットを含んでいてもよい。図17は、本発明の実施の形態の変形例に係るメモリアクセス命令の一例を示す図である。
つまり、プログラム変換装置300が備える変換部330は、判定部320によってメモリアクセス命令が示す変数がグローバル変数であると判定された場合、対応するメモリアクセス命令を、ウェイの予測結果を利用しないことを示す属性ビットを含む第2メモリアクセス命令に変換してもよい。例えば、属性ビットは、予測結果を利用するか否かを示すフラグに相当する。
例えば、図17に示すように、第2メモリアクセス命令を構成する複数のビット(例えば、32ビット)のうち、1ビットが属性ビットである。当該1ビットが、ウェイ予測部120によるウェイの予測結果を利用させないことを示している。
また、上記の各実施の形態では、第2メモリアクセス命令が解読された場合、ウェイ予測部120による予測結果を無視することで、予め定められたデータ格納部にクロックを供給したが、ウェイ予測部120による予測結果を、予め定められたウェイが予測されたことを示す予測結果に置き換えてもよい。この場合、クロック制御部113は、メモリアクセス命令の種別ではなく、予測結果が示すウェイに含まれるデータ格納部にクロックを供給する。
例えば、ウェイ予測部120において、予測部122は、プロセッサ部200で第2メモリアクセス命令が解読された場合に、共有アクセス信号156を受け取り、予め定められたウェイを予測結果として出力する。すなわち、予測部122は、共有アクセス信号156を受け取った場合、予め定められたウェイ予測信号を出力する。例えば、予測部122は、全てのデータ格納部にクロックを供給するように、全てのウェイ予測信号を出力する。
このように、第2メモリアクセス命令が解読された場合に、例えば全てのウェイが予測されたことを示すダミーの予測結果に、ウェイ予測部による予測結果を置き換えてもよい。
また、本発明は、上述したように、キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法として実現できるだけではなく、本実施の形態のキャッシュメモリ制御方法及びプログラム変換方法をコンピュータに実行させるためのプログラムとして実現してもよい。また、当該プログラムを記録するコンピュータ読み取り可能なCD-ROMなどの記録媒体として実現してもよい。さらに、当該プログラムを示す情報、データ又は信号として実現してもよい。そして、これらプログラム、情報、データ及び信号は、インターネットなどの通信ネットワークを介して配信されてもよい。
また、本発明は、キャッシュメモリ装置及びプログラム変換装置を構成する構成要素の一部又は全部を、1個のシステムLSI(Large Scale Integration)から構成してもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM及びRAMなどを含んで構成されるコンピュータシステムである。
また、上記で用いた数字は、全て本発明を具体的に説明するために例示するものであり、本発明は例示された数字に制限されない。さらに、High/Lowにより表される論理レベルは、本発明を具体的に説明するために例示するものであり、例示された論理レベルの異なる組み合わせにより、同等な結果を得ることも可能である。さらに、上で示した論理回路の構成は本発明を具体的に説明するために例示するものであり、異なる構成の論理回路により同等の入出力関係を実現することも可能である。また、構成要素間の接続関係は、本発明を具体的に説明するために例示するものであり、本発明の機能を実現する接続関係はこれに限定されない。
本発明は、性能の劣化を抑制するとともに、消費電力の増加を抑制することができるという効果を奏し、パーソナルコンピュータ、各種家電機器などのキャッシュメモリを有する機器に利用することができる。
10 キャッシュメモリシステム
100、400、500 キャッシュメモリ装置
110 キャッシュメモリ
111、411 タグ格納部群
111a、111b、411a、411b タグ格納部
112 データ格納部群
112a、112b データ格納部
113、413、513 クロック制御部
113a、113b、413a、413b クロック制御信号生成部
114 ヒット判定部
115 セレクタ
120 ウェイ予測部
121 履歴保持部
122 予測部
123 更新部
130 TLB
151 アドレス
152 書き込みデータ
153 読み出しデータ
154 命令コード
155 命令デコード信号
156 共有アクセス信号
157 排他アクセス信号
158a、158b ウェイ予測信号
159a、159b、459a、459b クロック制御信号
160a、160b タグデータ
161a、161b データ格納部読み出しデータ
162 キャッシュヒット信号
163 物理ページ番号
200 プロセッサ部
210 プロセッサ
220 命令解読部
230 命令キャッシュメモリ
300 プログラム変換装置
310 抽出部
320 判定部
330 変換部
516a、516b スイッチ
517 選択部
564a、564b 制御信号
100、400、500 キャッシュメモリ装置
110 キャッシュメモリ
111、411 タグ格納部群
111a、111b、411a、411b タグ格納部
112 データ格納部群
112a、112b データ格納部
113、413、513 クロック制御部
113a、113b、413a、413b クロック制御信号生成部
114 ヒット判定部
115 セレクタ
120 ウェイ予測部
121 履歴保持部
122 予測部
123 更新部
130 TLB
151 アドレス
152 書き込みデータ
153 読み出しデータ
154 命令コード
155 命令デコード信号
156 共有アクセス信号
157 排他アクセス信号
158a、158b ウェイ予測信号
159a、159b、459a、459b クロック制御信号
160a、160b タグデータ
161a、161b データ格納部読み出しデータ
162 キャッシュヒット信号
163 物理ページ番号
200 プロセッサ部
210 プロセッサ
220 命令解読部
230 命令キャッシュメモリ
300 プログラム変換装置
310 抽出部
320 判定部
330 変換部
516a、516b スイッチ
517 選択部
564a、564b 制御信号
Claims (15)
- 複数のプログラムを切り替えながら実行するプロセッサ部に接続されるキャッシュメモリ装置であって、
前記プロセッサ部に接続され、タグ格納部及びデータ格納部をそれぞれが含む複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリと、
前記プロセッサ部でメモリアクセス命令が解読されたときに、前記複数のウェイのうちのヒットするウェイを予測するウェイ予測部と、
前記プロセッサ部で解読されたメモリアクセス命令の種別に基づいて、前記複数のウェイに供給するクロックを制御するクロック制御部とを備え、
前記クロック制御部は、
第1メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記ウェイ予測部によって予測されたウェイのデータ格納部のみにクロックを供給し、
前記第1メモリアクセス命令とは異なる第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測部による予測結果に関わらず、前記複数のウェイに含まれる複数のデータ格納部のうち、予め定められたデータ格納部にクロックを供給する
キャッシュメモリ装置。 - 前記第1メモリアクセス命令は、前記複数のプログラムの間において排他の変数をメモリに読み書きする命令であり、
前記第2メモリアクセス命令は、前記複数のプログラムの間において共有の変数をメモリに読み書きする命令である
請求項1記載のキャッシュメモリ装置。 - 前記第1メモリアクセス命令は、局所変数宣言された変数をメモリに読み書きする命令であり、
前記第2メモリアクセス命令は、共有変数宣言された変数をメモリに読み書きする命令である
請求項1記載のキャッシュメモリ装置。 - 前記第2メモリアクセス命令は、ウェイの予測結果を利用しないことを示す属性ビットを含む
請求項1記載のキャッシュメモリ装置。 - 前記クロック制御部は、さらに、
前記第1メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のタグ格納部のうち、前記ウェイ予測部によって予測されたウェイのタグ格納部のみにクロックを供給し、
前記第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測部による予測結果に関わらず、前記複数のウェイに含まれる複数のタグ格納部のうち、予め定められたタグ格納部にクロックを供給する
請求項1記載のキャッシュメモリ装置。 - 前記クロック制御部は、
前記第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる全てのデータ格納部にクロックを供給する
請求項1記載のキャッシュメモリ装置。 - 前記複数のウェイは、前記複数のプログラムに割り当てられ、
前記クロック制御部は、前記第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記第2メモリアクセス命令を含むプログラムに割り当てられたウェイに含まれるデータ格納部にクロックを供給する
請求項1記載のキャッシュメモリ装置。 - 前記ウェイ予測部は、
ヒットしたウェイの履歴を示す履歴情報を保持する履歴保持部と、
前記履歴情報に基づいて、前記ヒットするウェイを予測する予測部と、
前記履歴情報を更新する更新部とを備え、
前記更新部は、
前記第1メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第1メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新し、
前記第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記履歴情報を更新しない
請求項1記載のキャッシュメモリ装置。 - 前記ウェイ予測部は、
ヒットしたウェイの履歴を示す履歴情報を保持する履歴保持部と、
前記履歴情報に基づいて、前記ヒットするウェイを予測する予測部と、
前記履歴情報を更新する更新部とを備え、
前記更新部は、
前記第1メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第1メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新し、
前記第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記第2メモリアクセス命令によってヒットしたウェイを示す情報を用いて、前記履歴情報を更新する
請求項1記載のキャッシュメモリ装置。 - ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成するプログラム変換装置であって、
入力されたプログラムからメモリアクセス命令を抽出する抽出部と、
前記抽出部によって抽出されたメモリアクセス命令が示す変数が、グローバル変数であるか否かを判定する判定部と、
前記判定部によってグローバル変数であると判定された場合、対応するメモリアクセス命令を、前記キャッシュメモリにウェイの予測結果を利用させないようにするための予測無視メモリアクセス命令に変換する変換部とを備える
プログラム変換装置。 - 前記判定部は、前記抽出部によって抽出されたメモリアクセス命令が示す変数が、複数のプログラムの間において共有の変数である場合に、当該変数をグローバル変数であると判定する
請求項10記載のプログラム変換装置。 - 前記判定部は、前記抽出部によって抽出されたメモリアクセス命令が示す変数が、共有変数宣言された変数である場合に、当該変数をグローバル変数であると判定する
請求項10記載のプログラム変換装置。 - 前記変換部は、前記判定部によってグローバル変数であると判定された場合、対応するメモリアクセス命令を、ウェイの予測結果を利用しないことを示す属性ビットを含む前記予測無視メモリアクセス命令に変換する
請求項10記載のプログラム変換装置。 - 複数のプログラムを切り替えながら実行するプロセッサ部に接続されるキャッシュメモリを制御するキャッシュメモリ制御方法であって、
前記キャッシュメモリは、
前記プロセッサ部に接続され、タグ格納部及びデータ格納部をそれぞれが含む複数のウェイを備えるセットアソシアティブ方式のキャッシュメモリであり、
前記キャッシュメモリ制御方法は、
前記プロセッサ部でメモリアクセス命令が解読されたときに、前記複数のウェイのうちヒットするウェイを予測するウェイ予測ステップと、
前記プロセッサ部で解読されたメモリアクセス命令の種別に基づいて、前記複数のウェイに供給するクロックを制御するクロック制御ステップとを含み、
前記クロック制御ステップでは、
第1メモリアクセス命令が前記プロセッサ部で解読された場合に、前記複数のウェイに含まれる複数のデータ格納部のうち、前記ウェイ予測ステップにおいて予測されたウェイのデータ格納部のみにクロックを供給し、
前記第1メモリアクセス命令とは異なる第2メモリアクセス命令が前記プロセッサ部で解読された場合に、前記ウェイ予測ステップにおける予測結果に関わらず、前記複数のウェイに含まれる複数のデータ格納部のうち、予め定められたデータ格納部にクロックを供給する
キャッシュメモリ制御方法。 - ウェイの予測機能を有するキャッシュメモリに対応するメモリアクセス命令を生成するプログラム変換方法であって、
入力されたプログラムからメモリアクセス命令を抽出する抽出ステップと、
前記抽出ステップにおいて抽出されたメモリアクセス命令が示す変数が、グローバル変数であるか否かを判定する判定ステップと、
前記判定ステップにおいてグローバル変数であると判定された場合、対応するメモリアクセス命令を、前記キャッシュメモリにウェイの予測結果を利用させないようにするための予測無視メモリアクセス命令に変換する変換ステップとを含む
プログラム変換方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010-129296 | 2010-06-04 | ||
JP2010129296A JP2011257800A (ja) | 2010-06-04 | 2010-06-04 | キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2011151944A1 true WO2011151944A1 (ja) | 2011-12-08 |
Family
ID=45066338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2011/000431 WO2011151944A1 (ja) | 2010-06-04 | 2011-01-27 | キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2011257800A (ja) |
WO (1) | WO2011151944A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014085890A (ja) * | 2012-10-24 | 2014-05-12 | Fujitsu Ltd | メモリ装置、演算処理装置、及びキャッシュメモリ制御方法 |
JP2016507097A (ja) * | 2013-01-15 | 2016-03-07 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | データキャッシュウェイ予測 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011100213A (ja) * | 2009-11-04 | 2011-05-19 | Renesas Electronics Corp | キャッシュ装置 |
US9304932B2 (en) * | 2012-12-20 | 2016-04-05 | Qualcomm Incorporated | Instruction cache having a multi-bit way prediction mask |
US11281586B2 (en) | 2017-05-09 | 2022-03-22 | Andes Technology Corporation | Processor and way prediction method thereof |
KR20210097345A (ko) | 2020-01-30 | 2021-08-09 | 삼성전자주식회사 | 캐시 메모리 장치, 이를 포함하는 시스템 및 캐시 메모리 장치의 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07334423A (ja) * | 1994-06-07 | 1995-12-22 | Hitachi Ltd | セットアソシアティブ方式のメモリ装置 |
JPH1139216A (ja) * | 1997-07-24 | 1999-02-12 | Hitachi Ltd | 半導体記憶装置及びキャッシュメモリシステム |
JP2005084712A (ja) * | 2003-09-04 | 2005-03-31 | Renesas Technology Corp | キャッシュシステム |
-
2010
- 2010-06-04 JP JP2010129296A patent/JP2011257800A/ja active Pending
-
2011
- 2011-01-27 WO PCT/JP2011/000431 patent/WO2011151944A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07334423A (ja) * | 1994-06-07 | 1995-12-22 | Hitachi Ltd | セットアソシアティブ方式のメモリ装置 |
JPH1139216A (ja) * | 1997-07-24 | 1999-02-12 | Hitachi Ltd | 半導体記憶装置及びキャッシュメモリシステム |
JP2005084712A (ja) * | 2003-09-04 | 2005-03-31 | Renesas Technology Corp | キャッシュシステム |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014085890A (ja) * | 2012-10-24 | 2014-05-12 | Fujitsu Ltd | メモリ装置、演算処理装置、及びキャッシュメモリ制御方法 |
JP2016507097A (ja) * | 2013-01-15 | 2016-03-07 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | データキャッシュウェイ予測 |
JP2017152001A (ja) * | 2013-01-15 | 2017-08-31 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | データキャッシュウェイ予測 |
Also Published As
Publication number | Publication date |
---|---|
JP2011257800A (ja) | 2011-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2011151944A1 (ja) | キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法 | |
JP4920378B2 (ja) | 情報処理装置およびデータ検索方法 | |
CN102498477A (zh) | Tlb预取 | |
TW201351145A (zh) | 指令快取的減少耗能 | |
US10241810B2 (en) | Instruction-optimizing processor with branch-count table in hardware | |
KR102568051B1 (ko) | 메모리 관리 | |
US20080098174A1 (en) | Cache memory having pipeline structure and method for controlling the same | |
US10540182B2 (en) | Processor and instruction code generation device | |
CN115993992A (zh) | 提前取出分支目标缓冲器 | |
US8151096B2 (en) | Method to improve branch prediction latency | |
US7769954B2 (en) | Data processing system and method for processing data | |
US20060095746A1 (en) | Branch predictor, processor and branch prediction method | |
US6810473B2 (en) | Replacement algorithm for a replicated fully associative translation look-aside buffer | |
JPWO2005050454A1 (ja) | キャッシュメモリおよびその制御方法 | |
JP2010102623A (ja) | キャッシュメモリ及びその制御方法 | |
US9348598B2 (en) | Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry | |
US20150193348A1 (en) | High-performance data cache system and method | |
JP2007272681A (ja) | キャッシュメモリ装置及びそのキャッシュラインの入れ替え方法 | |
JP5233078B2 (ja) | プロセッサ及びその処理方法 | |
JP2013073271A (ja) | アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置 | |
JP5902208B2 (ja) | データ処理装置 | |
US20160179676A1 (en) | Cleaning a write-back cache | |
US20140297958A1 (en) | System and method for updating an instruction cache following a branch instruction in a semiconductor device | |
US10180907B2 (en) | Processor and method | |
JP2006285727A (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: 11789359 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 11789359 Country of ref document: EP Kind code of ref document: A1 |