EP2260388B1 - Systems and methods for cache line replacement - Google Patents
Systems and methods for cache line replacement Download PDFInfo
- Publication number
- EP2260388B1 EP2260388B1 EP09714236.8A EP09714236A EP2260388B1 EP 2260388 B1 EP2260388 B1 EP 2260388B1 EP 09714236 A EP09714236 A EP 09714236A EP 2260388 B1 EP2260388 B1 EP 2260388B1
- Authority
- EP
- European Patent Office
- Prior art keywords
- cache
- index
- instruction
- tag
- identifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Not-in-force
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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
- Embodiments of the inventive concepts disclosed herein relate generally to the field of data processing systems.
- embodiments of the inventive concepts disclosed herein relate to systems and methods for cache line replacement.
- memory e.g., Random Access Memory
- memory stores data to be used by the processor in computing instructions.
- memory may store two operands to be added by a processor and store the result from the summation of the two operands.
- the processor may access the memory to read the two operands and again access the memory to write the result.
- Memory may have a slower operating speed than the processor. Therefore, the processor may wait during an access of the memory. Hence, power and time is consumed by the computing device while the processor may be idle waiting for access of the memory.
- a cache with a faster operating speed than the memory may be coupled to the processor.
- the cache includes a plurality of cache lines, wherein each cache line may store a portion of the data in memory.
- the cache is faster than the memory, data that may be used by the processor is preloaded into portions (e.g., cache lines) of the cache. Hence, when the processor is to retrieve data for processing, the processor accesses the cache for the data. If the cache does not include the data, the memory is accessed for the data.
- a system may exist that is configured to determine the sequence that cache lines are to be populated and/or replaced.
- the cache lines of the cache are used in sequence, wherein the processor loops back to the first cache line once reaching the last cache line of the cache.
- a system may exist in the processor to determine and point to the next cache line to be used by the processor.
- One such system implements a First In First Out (FIFO) cache replacement policy, wherein pointers are incremented in order to sequentially point to the next cache line of the cache.
- FIFO First In First Out
- a program may be executed by a processor to include cache maintenance instructions to invalidate a cache line. Since instructions may invalidate cache lines, invalid cache lines may exist in the cache while the system points to a valid cache line to be replaced by the processor. As a result, in a cache implementing a FIFO replacement policy, a valid cache line may be replaced by a load operation while an invalid cache line exists.
- One problem in this approach is that a decrease in valid cache lines may require the processor to more frequently access the memory, thus causing an increase in power consumption and a decrease in computing speed.
- US 5,875,465 describes a data processing system that incorporates a cache memory and a central processing unit.
- US 6,408,364 describes a least recently used cache replacement algorithm.
- the system includes a cache comprising a plurality of cache lines.
- the system further includes an identifier configured to identify a cache line for replacement.
- the system also includes a control logic configured to determine a value of the identifier selected from an incrementer, a cache maintenance instruction, or remains the same.
- Advantages of one or more embodiments disclosed herein may include power savings and increased processor speed.
- Embodiments of the inventive concepts disclosed herein relate to systems and methods for cache line replacement.
- the conventional system 100 illustrated in the schematic of Figure 1 may be modified in order to reduce the number of invalid cache lines existing in the cache. As a result, less cache misses may exist. Hence, the processor may access the memory less during operation.
- Figure 1 is a schematic illustrating a conventional system 100 for determining cache lines for replacement.
- the processor is configured sequentially to proceed through the cache in replacing the data stored in the cache lines.
- the system 100 includes a tag storage 110 and a state storage 112.
- the tag storage 110 and state storage 112 may be arrays including the same number of sets (e.g., rows) and ways (e.g., column).
- Each cell of the state and tag arrays 110, 112 corresponds to a cache line of the cache of the processor.
- each set includes sixteen ways (0-15), which may correspond to sixteen data cache lines that may be independently read and written from/to by the processor.
- Each cell of the tag array 110 stores a tag.
- the tag may be an address of a memory location presently corresponding to a cache line.
- a cache line may store data from a memory location with memory address A.
- the corresponding tag cell stores memory address A.
- Each cell of the state array 112 stores the state (e.g., valid or invalid) of the corresponding cache line. Continuing the above example, if the stored value in the cache line is valid, then the state cell stores information indicating that the cache line is valid.
- the program to be executed by a processor may include cache maintenance instructions that may include instructions to invalidate a cache line by either directly pointing to the cache line to be invalidated or pointing to the tag for which the cache line storing the value of memory corresponding to the tag is to be invalidated.
- cache maintenance instructions may include instructions to invalidate a cache line by either directly pointing to the cache line to be invalidated or pointing to the tag for which the cache line storing the value of memory corresponding to the tag is to be invalidated.
- the system 100 may store an invalid state in the corresponding cell of state array 112.
- the system 100 further includes a plurality of identifiers 114 (e.g., pointers).
- the number of identifiers 114 corresponds to the number of sets in the tag and state arrays 110, 112. Furthermore, since the number of ways per set is 16 in system 100, each identifier may be four bits. Thus, each FIFO may be configured to point to any of the sixteen ways of its respective set, hence being able to point to the sixteen cache lines associated with the set.
- the instruction 102 may be received by the system 100.
- the instruction 102 may include a set 104, a byte 106, and a tag 108.
- the byte 106 may be the type of operation to be performed by the processor executing the instruction (e.g., load, add, etc.). If the instruction is a load or store, then the set 104 may be the set from which the value of one of the sixteen cache lines may be loaded are stored.
- the tag 108 is the memory address of the memory storing the value for which the instruction is to include. In an example, if the instruction is load operand A, the instruction may include the set 104 for where to store operand A in cache, the byte 106 that the instruction is a load instruction, and tag 108 for where operand A is stored in the memory.
- System 100 further includes incrementers 120.
- an incrementer exists for each of the identifiers 114.
- the next way of a set of a cache to be loaded is pointed to by the corresponding identifier 114 for the set.
- the incrementer 120 for the identifier 114 of set 104 increments the identifier to point to the next way of the set of the cache.
- the incrementer may roll over the value (e.g., 15 to 0) in order to point to the first way of the set. Therefore, cache lines are sequentially loaded.
- the system 100 determines if the tag 108 of the instruction 102 is stored in the tag array 110. If the tag 108 is stored in the tag array 110, then the memory value of the memory location corresponding to the tag 108 may be stored. The storage location may be the respective cache line for the cell of the tag array 110 where the tag 108 is stored.
- System 100 includes tag comparators 116 to determine whether a memory value stored in the memory location corresponding to tag 108 is stored in a cache line of the cache.
- a tag comparator may exist for each way (e.g., column) of the tag and state arrays. Hence, for system 100, sixteen tag comparators may exist in 116. For its corresponding way, the tag comparator compares the tag 108 to the tag stored for the way of set 104 in tag array 110. The tag comparator further determines if the tag stored in tag array 110 is valid by accessing the state of the cell of state array 112 corresponding to the cell of the tag array 110.
- the tag comparators 116 may output a miss signal 118 that the memory value is not stored in cache. Thus, the value may be loaded from memory into the cache. If one of the sixteen comparators finds a match between tags with a valid state, the tag comparators 116 may output a hit signal 118 that the memory value is stored in the cache. Thus, the processor may access the cache instead of accessing the memory.
- the system 100 may access the identifier 114 for the set 104 to determine which cache line is to be loaded. The identifier 114 is then incremented in order to point to the next cache line to be loaded.
- Cache maintenance instructions may include an invalidate by index instruction and an invalidate by address instruction.
- An invalidate by index instruction includes an index of the cache to be invalidated. Therefore, the instruction specifically points to a cache line to be invalidated. Hence, when a processor executes the invalidate by index instruction, the cell of the state array corresponding to the indexed cache line stores an invalid status.
- An invalidate by address instruction includes an address of the memory (e.g., tag). Therefore, when a processor executes the invalidate by address instruction, the processor is to invalidate the cache line associated with the memory address. Hence, the processor searches for the memory address in the tag array and invalidates the cache line associated with the tag cell storing the matching tag.
- the system 200, 300 may cast the identifier corresponding to the set for the invalidated cache line such that the identifier points to the invalidated cache line. As a result, an invalidated cache line replaced before a valid cache line of the same set.
- the schematics in Figures 2-3 illustrate exemplary embodiments of systems for replacing cache lines.
- the schematic of Figure 2 illustrates an exemplary system 200 for determining cache lines of a cache for replacement wherein invalidate by index instructions exist during operation of the processor.
- the schematic of Figure 3 illustrates an exemplary system 300 for determining cache lines of a cache for replacement wherein invalidate by index instructions and invalidate by address instructions exist during operation of the processor.
- system 200 includes a selector 202 as compared to system 100 of Figure 1 .
- selector 202 selects the incremented identifier value (i.e., the output of incrementers 120).
- system 200 may operate similar to system 100 in Figure 1 .
- the system 200 uses the set 104 of instruction 102 to select the identifier 114, set of the state array 112, and set of the tag array 110.
- the processor then loads the value stored in the tag 108 of memory into the cache line identified by the set 104 and the identifier 114.
- the incrementer 120 receiving the byte 106 increments the selected identifier 114 to point to the next cache line of the set.
- the selector 202 selects the output of the incrementer (the incremented identifier value) since the instruction is not a cache maintenance / invalidate by index instruction.
- the identifier 114 then stores the incremented identifier value.
- the system 200 uses the set 104 of instruction 102 to select the identifier 114, set of the state array 112, and set of the tag array 110.
- the processor sends the value of the cache line corresponding to the set 104 and a predetermined way to the memory location of memory identified by tag 108 for storage. Since the instruction is neither a load instruction nor requires a value from memory in order to be executed by the processor, the incrementer 120 does not increment the identifier value. Since the instruction is not an invalidate by index instruction, selector 202 selects the output of the incrementer 120. Therefore, the identifier value of the identifier stays the same during execution of the store instruction.
- Some instructions may include operands that are to be used for execution of the instruction.
- the operand is conventionally stored in memory. Hence, the operand may be stored in cache. Therefore, the system 200 may determine if the operand is stored in cache. Similar to system 100 in Figure 1 , if the operand is stored in cache, a hit signal 118 is output from tag comparators 116. If the operand is not stored in cache, a miss signal 118 is output from the tag comparators 116. The hit or miss signal 118 is routed to the incrementers 120 to help control whether the incrementer 120 is to increment an identifier value.
- the identifier 114 for set 104 identifies the next cache line to be replaced. The operand is loaded into the identified cache line.
- incrementer 120 increments the identifier value in order to point to the next cache line after the replaced cache line. If the signal 118 is a hit, then the operand does not need to be loaded from memory to cache. Therefore, upon receiving the hit signal 118, the incrementer 120 does not change the identifier value.
- system 200 diverts from the operation of system 100 ( Figure 1 ) during execution of cache maintenance instructions (e.g., cache invalidation instructions).
- cache maintenance instructions e.g., cache invalidation instructions.
- the selector 202 selects the index input from the instruction.
- the processor also invalidates the indexed cache line. Since the selector 202 selects the index from the instruction, the identifier 114 for the indexed cache line equals the index in order to point to the invalidated cache line.
- the system 200 sets the invalidated cache line as the next cache line of a set to be replaced.
- system 300 includes an encoder 302 and selector 304. Like system 200 in Figure 2 , system 300 operates similar to system 100 of Figure 1 during execution of non maintenance instructions. When a maintenance instruction is executed, though, the maintenance instruction may be an invalidate by index instruction or an invalidate by address instruction. If the cache maintenance instruction is an invalidate by index instruction, then the selector 304 selects the index from the instruction 102 and system 300 operates like system 200 in Figure 2 .
- an invalidate by address instruction includes a memory address for which the processor is to find a cache line associated with the memory location of tag 108 and invalidate the cache line. Therefore, encoder 302 may be configured to output the identifier value of the cache line in set 104 associated with the memory location of tag 108 of memory so that the identifier points to the invalidated cache line for replacement by the processor.
- a tag comparator exists for each way of a set of the tag array. Therefore, in the illustrative embodiment, sixteen tag comparators may exist. As previously stated, if the tag comparator has a match of tags that is valid, the tag comparator outputs a hit signal. In one embodiment, if a comparator matches tags and receives a valid state from the corresponding cell in state array 112, then the comparator outputs a one. Only one cache line in a set may be associated with a memory address (tag 108).
- the outputs of the sixteen tag comparators for a set 104 may be: (i) sixteen zeros (i.e., one zero from each tag comparator) denoting a miss or (ii) fifteen zeros and one one (i.e., one one from the tag comparator matching tags and receiving a valid state and one zero from each of the remaining fifteen tag comparators) denoting a hit.
- sixteen bits are sent from the tag comparators 116 to encoder 302.
- the encoder 302 is configured to encode the received sixteen bit values into a four bit identifier value. For example, if the tag comparator for way 10 (from way 0-15) of set 104 is one, then the encoder may output "1010.” In another example, if way 3 is one, then the encoder 302 may output "0011." Therefore, identifier value output by encoder 302 is selected by selector 304 and stored by identifier 114 such that the invalidated cache line is pointed to as being the next cache line to be replaced.
- Figures 4-5 are flowcharts illustrating exemplary methods of operation of the cache replacement systems 200, 300.
- Figure 4 is a flowchart illustrating an exemplary method 400 of operation of the system 200 illustrated in the schematic of Figure 2 .
- Figure 5 is a flowchart illustrating an exemplary method 500 of operation of the system 300 illustrated in the schematic of Figure 3 .
- the system 200 determines if the instruction to be executed is a cache maintenance instruction in 402.
- the cache maintenance instruction for system 200 is an invalidate by index instruction. If the instruction is not a cache maintenance instruction, then the system 200 casts the identifier for the set 104 as the output of the incrementer 120 in 404.
- the selector 202 selects the output of the incrementer 120 to feed the value back into the identifiers 114. If the incrementer 120 receives a hit signal 118 from the tag comparator 116, then the incrementer 120 does not increment the identifier value. If the incrementer 120 receives a miss signal 118, then the incrementer 120 increments the identifier value. Hence, the identifier for set 104 either remains the same or is incremented.
- the system 200 retrieves the invalidation index from the instruction 102.
- the cache line positioned at the index is then invalidated in 408. Proceeding to 410, the system 200 casts the identifier for the set 104 as the index from the instruction.
- the selector 202 selects the index from the instruction to feed back into the identifiers 114. Hence, the identifier points to the invalidated cache line as the next cache line to be replaced.
- the system 300 determines if the instruction to be executed is a cache maintenance instruction (502 and 510).
- a cache maintenance instruction for system 300 may be an invalidate by index instruction or an invalidate by address instruction.
- the system 300 determines if the instruction is an invalidate by index instruction. If the instruction is an invalidate by index instruction, then the system 300 retrieves the invalidation index from the instruction 102 in 504. The cache line positioned at the index is then invalidated in 506. Proceeding to 508, the system 200 casts the identifier for the set 104 as the index from the instruction.
- the selector 304 selects the index from the instruction to feed back into the identifiers 114. Hence, the identifier points to the invalidated cache line as the next cache line to be replaced.
- the system 300 determines if the instruction is a cache invalidate by address instruction in 510. If the instruction is an invalidate by address instruction, then the system 300 retrieves the invalidation memory address (e.g., tag 108) from the instruction 102 in 512. Proceeding to 514, the system 300 determines if any cache line for set 104 stores the value in memory at the memory address (e.g., tag 108) retrieved from instruction 102.
- the encoder 302 of system 300 encodes the output from tag comparators 116 to create a cache line index (e.g., a four bit identifier value pointing to the cache line that is invalidated) in 516. Proceeding to 518, the system 300 casts the identifier for set 104 to the encoded value such that the identifier of set 104 points to the cache line to be invalidated. The cache line is invalidated in 520.
- a cache line index e.g., a four bit identifier value pointing to the cache line that is invalidated
- the system 300 determines that the value stored in memory location of the invalidation address is not stored in cache in 514, then the identifier 114 for set 104 remains the same since none of the cache lines are invalidated in 522.
- the instruction is not an invalidate by address instruction, then the instruction is not a cache maintenance instruction. Therefore, the system 300 casts the identifier for the set 104 as the output of the incrementer 120 in 524.
- the selector 304 selects the output of the incrementer 120 to feed the value back into the identifiers 114. If the incrementer 120 receives a hit signal 118 from the tag comparator 116, then the incrementer 120 does not increment the identifier value. If the incrementer 120 receives a miss signal 118, then the incrementer 120 increments the identifier value. Hence, the identifier for set 104 either remains the same or is incremented.
- Multi-mode register files may be included in any processors including register files, such as digital signal processors.
- the general diagrams of Figures 6-10 illustrate example devices that may incorporate a cache replacement system to replace invalidated cache lines as illustrated in the schematics of Figures 2 and 3 .
- FIG. 6 is a diagram illustrating an exemplary embodiment of a portable communication device 600.
- the portable communication device includes an on-chip system 602 that includes a digital signal processor (DSP) 604.
- the general diagram of Figure 6 also shows a display controller 606 that is coupled to the digital signal processor 604 and a display 608.
- an input device 610 is coupled to the DSP 604.
- a memory 612 is coupled to the DSP 604.
- a coder/decoder (CODEC) 614 may be coupled to the DSP 604.
- a speaker 616 and a microphone 618 may be coupled to the CODEC 614.
- the general diagram of Figure 6 further illustrates a wireless controller 620 coupled to the digital signal processor 604 and a wireless antenna 622.
- a power supply 624 is coupled to the on-chip system 602.
- the display 626, the input device 630, the speaker 616, the microphone 618, the wireless antenna 622, and the power supply 624 are external to the on-chip system 602. However, each is coupled to a component of the on-chip system 602.
- the DSP 604 includes a cache replacement system 680 to determine which cache lines of a cache of the DSP 604 to replace with values from memory 612.
- FIG. 7 is a diagram illustrating an exemplary embodiment of a cellular telephone 700.
- the cellular telephone 700 includes an on-chip system 702 that includes a digital baseband processor 704 and an analog baseband processor 706 that are coupled together.
- the digital baseband processor 704 is a digital signal processor.
- a display controller 708 and a touchscreen controller 710 are coupled to the digital baseband processor 704.
- a touchscreen display 712 external to the on-chip system 702 is coupled to the display controller 708 and the touchscreen controller 710.
- the general diagram of Figure 7 further illustrates a video encoder 714, e.g., a phase alternating line (PAL) encoder, a sequential 07 a memoire (SECAM) encoder, or a national television system(s) committee (NTSC) encoder, is coupled to the digital baseband processor 704. Further, a video amplifier 716 is coupled to the video encoder 714 and the touchscreen display 712. Also, a video port 718 is coupled to the video amplifier 716. As depicted in the general diagram of Figure 7 , a universal serial bus (USB) controller 720 is coupled to the digital baseband processor 704. Also, a USB port 722 is coupled to the USB controller 720.
- PAL phase alternating line
- SECAM sequential 07 a memoire
- NTSC national television system(s) committee
- a memory 724 and a subscriber identity module (SIM) card 726 may also be coupled to the digital baseband processor 704. Further, as shown in the general diagram of Figure 7 , a digital camera 728 may be coupled to the digital baseband processor 704. In an exemplary embodiment, the digital camera 728 is a charge-coupled device (CCD) camera or a complementary metal-oxide semiconductor (CMOS) camera.
- CCD charge-coupled device
- CMOS complementary metal-oxide semiconductor
- a stereo audio CODEC 730 may be coupled to the analog baseband processor 706.
- an audio amplifier 732 may coupled to the stereo audio CODEC 730.
- a first stereo speaker 734 and a second stereo speaker 736 are coupled to the audio amplifier 732.
- a microphone amplifier 738 may be also coupled to the stereo audio CODEC 730.
- a microphone 740 may be coupled to the microphone amplifier 738.
- a frequency modulation (FM) radio tuner 742 may be coupled to the stereo audio CODEC 730.
- an FM antenna 744 is coupled to the FM radio tuner 742.
- stereo headphones 746 may be coupled to the stereo audio CODEC 730.
- FM frequency modulation
- the general diagram of Figure 7 further illustrates a radio frequency (RF) transceiver 748 may be coupled to the analog baseband processor 706.
- An RF switch 750 may be coupled to the RF transceiver 748 and an RF antenna 752.
- a keypad 754 may be coupled to the analog baseband processor 706.
- a mono headset with a microphone 756 may be coupled to the analog baseband processor 706.
- a vibrator device 758 may be coupled to the analog baseband processor 706.
- the general diagram of Figure 7 also shows a power supply 760 may be coupled to the on-chip system 702.
- the power supply 760 is a direct current (DC) power supply that provides power to the various components of the cellular telephone 700.
- the power supply is a rechargeable DC battery or a DC power supply that is derived from an alternating current (AC) to DC transformer that is coupled to an AC power source.
- DC direct current
- the touchscreen display 712, the video port 718, the USB port 722, the camera 728, the first stereo speaker 734, the second stereo speaker 736, the microphone 740, the FM antenna 744, the stereo headphones 746, the RF switch 750, the RF antenna 752, the keypad 754, the mono headset 756, the vibrator 758, and the power supply 760 may be external to the on-chip system 702.
- the Digital Baseband Processor 704 includes a cache replacement system 780 to determine which cache lines of a cache of the processor 704 to replace with values from memory 724.
- FIG 8 is a diagram illustrating an exemplary embodiment of a wireless Internet protocol (IP) telephone 800.
- the wireless IP telephone 800 includes an on-chip system 802 that includes a digital signal processor (DSP) 804.
- DSP digital signal processor
- a display controller 806 may be coupled to the DSP 804 and a display 808 is coupled to the display controller 806.
- the display 808 is a liquid crystal display (LCD).
- Figure 8 further shows that a keypad 810 may be coupled to the DSP 804.
- a flash memory 812 may be coupled to the DSP 804.
- a synchronous dynamic random access memory (SDRAM) 814, a static random access memory (SRAM) 816, and an electrically erasable programmable read only memory (EEPROM) 818 may also be coupled to the DSP 804.
- the general diagram of Figure 8 also shows that a light emitting diode (LED) 820 may be coupled to the DSP 804.
- a voice CODEC 822 may be coupled to the DSP 804.
- An amplifier 824 may be coupled to the voice CODEC 822 and a mono speaker 826 may be coupled to the amplifier 824.
- the general diagram of Figure 8 further illustrates a mono headset 828 coupled to the voice CODEC 822.
- the mono headset 828 includes a microphone.
- a wireless local area network (WLAN) baseband processor 830 may be coupled to the DSP 804.
- An RF transceiver 832 may be coupled to the WLAN baseband processor 830 and an RF antenna 834 may be coupled to the RF transceiver 832.
- a Bluetooth controller 836 may also be coupled to the DSP 804 and a Bluetooth antenna 838 may be coupled to the controller 836.
- the general diagram of Figure 8 also shows that a USB port 840 may also be coupled to the DSP 804.
- a power supply 842 is coupled to the on-chip system 802 and provides power to the various components of the wireless IP telephone 800.
- the display 808, the keypad 810, the LED 820, the mono speaker 826, the mono headset 828, the RF antenna 834, the Bluetooth antenna 838, the USB port 840, and the power supply 842 may be external to the on-chip system 802 and coupled to one or more components of the on-chip system 802.
- the Digital Signal Processor 804 includes a cache replacement system 880 to determine which cache lines of a cache of the processor 804 to replace with values from flash 812, SDRAM 814, SRAM 816, and/or EEPROM 818.
- FIG 9 is a diagram illustrating an exemplary embodiment of a portable digital assistant (PDA) 900.
- the PDA 900 includes an on-chip system 902 that includes a digital signal processor (DSP) 904.
- DSP digital signal processor
- a touchscreen controller 906 and a display controller 908 are coupled to the DSP 904.
- a touchscreen display 910 is coupled to the touchscreen controller 906 and to the display controller 908.
- the general diagram of Figure 9 also indicates that a keypad 912 may be coupled to the DSP 904.
- a stereo audio CODEC 926 may be coupled to the DSP 904.
- a first stereo amplifier 928 may be coupled to the stereo audio CODEC 926 and a first stereo speaker 930 may be coupled to the first stereo amplifier 928.
- a microphone amplifier 932 may be coupled to the stereo audio CODEC 926 and a microphone 934 may be coupled to the microphone amplifier 932.
- the general diagram of Figure 9 further shows that a second stereo amplifier 936 may be coupled to the stereo audio CODEC 926 and a second stereo speaker 938 may be coupled to the second stereo amplifier 936.
- stereo headphones 940 may also be coupled to the stereo audio CODEC 926.
- FIG. 9 The general diagram of Figure 9 also illustrates that an 802.11 controller 942 may be coupled to the DSP 904 and an 802.11 antenna 944 may be coupled to the 802.11 controller 942.
- a Bluetooth controller 946 may be coupled to the DSP 904 and a Bluetooth antenna 948 may be coupled to the Bluetooth controller 946.
- a USB controller 950 may be coupled to the DSP 904 and a USB port 952 may be coupled to the USB controller 950.
- a smart card 954 e.g., a multimedia card (MMC) or a secure digital card (SD), may be coupled to the DSP 904.
- a power supply 956 may be coupled to the on-chip system 902 and may provide power to the various components of the PDA 900.
- the display 910, the keypad 912, the IrDA port 922, the digital camera 924, the first stereo speaker 930, the microphone 934, the second stereo speaker 938, the stereo headphones 940, the 802.11 antenna 944, the Bluetooth antenna 948, the USB port 952, and the power supply 956 may be external to the on-chip system 902 and coupled to one or more components on the on-chip system.
- the Digital Signal Processor 904 includes a cache replacement system 980 to determine which cache lines of a cache of the processor 904 to replace with values from flash 914, ROM 916, DRAM 918, and/or EEPROM 920.
- FIG 10 is a diagram illustrating an exemplary embodiment of an audio file player (e.g., MP3 player) 1000.
- the audio file player 1000 includes an on-chip system 1002 that includes a digital signal processor (DSP) 1004.
- DSP digital signal processor
- a display controller 1006 may be coupled to the DSP 1004 and a display 1008 is coupled to the display controller 1006.
- the display 1008 is a liquid crystal display (LCD).
- a keypad 1010 may be coupled to the DSP 1004.
- a flash memory 1012 and a read only memory (ROM) 1014 may be coupled to the DSP 1004.
- an audio CODEC 1016 may be coupled to the DSP 1004.
- An amplifier 1018 may be coupled to the audio CODEC 1016 and a mono speaker 1020 may be coupled to the amplifier 1018.
- the general diagram of Figure 10 further indicates that a microphone input 1022 and a stereo input 1024 may also be coupled to the audio CODEC 1016.
- stereo headphones 1026 may also be coupled to the audio CODEC 1016.
- a USB port 1028 and a smart card 1030 may be coupled to the DSP 1004. Additionally, a power supply 1032 may be coupled to the on-chip system 1002 and may provide power to the various components of the audio file player 1000.
- the display 1008, the keypad 1010, the mono speaker 1020, the microphone input 1022, the stereo input 1024, the stereo headphones 1026, the USB port 1028, and the power supply 1032 are external to the on-chip system 1002 and coupled to one or more components on the on-chip system 1002.
- the Digital Signal Processor 1004 includes a cache replacement system 1080 to determine which cache lines of a cache of the processor 1004 to replace with values from flash 1012 and/or ROM 1014.
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)
Description
- Embodiments of the inventive concepts disclosed herein relate generally to the field of data processing systems. For example, embodiments of the inventive concepts disclosed herein relate to systems and methods for cache line replacement.
- In many computing systems today, memory (e.g., Random Access Memory) stores data to be used by the processor in computing instructions. For example, memory may store two operands to be added by a processor and store the result from the summation of the two operands. Thus, in the example, the processor may access the memory to read the two operands and again access the memory to write the result.
- Memory may have a slower operating speed than the processor. Therefore, the processor may wait during an access of the memory. Hence, power and time is consumed by the computing device while the processor may be idle waiting for access of the memory. To increase the overall processing speed and reduce power consumption of the computing system, a cache with a faster operating speed than the memory may be coupled to the processor. The cache includes a plurality of cache lines, wherein each cache line may store a portion of the data in memory.
- Since the cache is faster than the memory, data that may be used by the processor is preloaded into portions (e.g., cache lines) of the cache. Hence, when the processor is to retrieve data for processing, the processor accesses the cache for the data. If the cache does not include the data, the memory is accessed for the data.
- As more data is preloaded into the cache, previously stored data may be replaced with newly computed or retrieved data. As a result, a system may exist that is configured to determine the sequence that cache lines are to be populated and/or replaced. In conventional processors, the cache lines of the cache are used in sequence, wherein the processor loops back to the first cache line once reaching the last cache line of the cache. A system may exist in the processor to determine and point to the next cache line to be used by the processor. One such system implements a First In First Out (FIFO) cache replacement policy, wherein pointers are incremented in order to sequentially point to the next cache line of the cache.
- A program may be executed by a processor to include cache maintenance instructions to invalidate a cache line. Since instructions may invalidate cache lines, invalid cache lines may exist in the cache while the system points to a valid cache line to be replaced by the processor. As a result, in a cache implementing a FIFO replacement policy, a valid cache line may be replaced by a load operation while an invalid cache line exists. One problem in this approach is that a decrease in valid cache lines may require the processor to more frequently access the memory, thus causing an increase in power consumption and a decrease in computing speed.
-
US 5,875,465 describes a data processing system that incorporates a cache memory and a central processing unit.US 6,408,364 describes a least recently used cache replacement algorithm. - A system for determining a cache line to replace is described in accordance with claim 1, and a methond is diescrivbed in accordanec with claim 9. In one embodiment, the system includes a cache comprising a plurality of cache lines. The system further includes an identifier configured to identify a cache line for replacement. The system also includes a control logic configured to determine a value of the identifier selected from an incrementer, a cache maintenance instruction, or remains the same.
- Advantages of one or more embodiments disclosed herein may include power savings and increased processor speed.
- This illustrative embodiment is mentioned not to limit or define the inventive concepts disclosed herein, but to provide examples to aid understanding thereof. Other aspects, advantages, and features of the present disclosure will become apparent after review of the entire application, including the following sections: Brief Description of the Drawings, Detailed Description, and the Claims.
- These and other features, aspects, and advantages of the present inventive concepts disclosed herein are better understood when the following Detailed Description is read with reference to the accompanying drawings, wherein:
-
Figure 1 is a prior art schematic illustrating a conventional system for determining cache lines for replacement. -
Figure 2 is a schematic illustrating an exemplary system for determining cache lines for replacement wherein invalidate by index instructions exist. -
Figure 3 is a schematic illustrating an exemplary system for determining cache lines for replacement wherein invalidate by index instructions and invalidate by address instructions exist. -
Figure 4 is a flowchart illustrating an exemplary method of operation of the system illustrated in the schematic ofFigure 2 . -
Figure 5 is a flowchart illustrating an exemplary method of operation of the system illustrated in the schematic ofFigure 3 . -
Figure 6 is a general diagram illustrating an example portable communication device incorporating a digital signal processor that may include a cache replacement system as illustrated inFigures 2-3 . -
Figure 7 is a general diagram illustrating an example cellular telephone incorporating a digital signal processor that may include a cache replacement system as illustrated inFigures 2-3 . -
Figure 8 is a general diagram illustrating an example wireless Internet Protocol telephone incorporating a digital signal processor that may include a cache replacement system as illustrated inFigures 2-3 . -
Figure 9 is a general diagram illustrating an example portable digital assistant incorporating a digital signal processor that may include a cache replacement system as illustrated inFigures 2-3 . -
Figure 10 is a general diagram illustrating an example audio file player incorporating a digital signal processor that may include a cache replacement system as illustrated inFigures 2-3 . - Throughout the description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the inventive concepts disclosed herein. It will be apparent, however, to one skilled in the art that the inventive concepts disclosed herein may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form to avoid obscuring the underlying principles of the inventive concepts disclosed herein.
- Embodiments of the inventive concepts disclosed herein relate to systems and methods for cache line replacement. The
conventional system 100 illustrated in the schematic ofFigure 1 may be modified in order to reduce the number of invalid cache lines existing in the cache. As a result, less cache misses may exist. Hence, the processor may access the memory less during operation. -
Figure 1 is a schematic illustrating aconventional system 100 for determining cache lines for replacement. In thesystem 100, the processor is configured sequentially to proceed through the cache in replacing the data stored in the cache lines. - As illustrated in the schematic of
Figure 1 , thesystem 100 includes atag storage 110 and astate storage 112. Thetag storage 110 andstate storage 112 may be arrays including the same number of sets (e.g., rows) and ways (e.g., column). Each cell of the state andtag arrays system 100, each set includes sixteen ways (0-15), which may correspond to sixteen data cache lines that may be independently read and written from/to by the processor. - Each cell of the
tag array 110 stores a tag. The tag may be an address of a memory location presently corresponding to a cache line. For example, a cache line may store data from a memory location with memory address A. Hence, the corresponding tag cell stores memory address A. Each cell of thestate array 112 stores the state (e.g., valid or invalid) of the corresponding cache line. Continuing the above example, if the stored value in the cache line is valid, then the state cell stores information indicating that the cache line is valid. The program to be executed by a processor may include cache maintenance instructions that may include instructions to invalidate a cache line by either directly pointing to the cache line to be invalidated or pointing to the tag for which the cache line storing the value of memory corresponding to the tag is to be invalidated. To invalidate the cache line, thesystem 100 may store an invalid state in the corresponding cell ofstate array 112. - The
system 100 further includes a plurality of identifiers 114 (e.g., pointers). The number ofidentifiers 114 corresponds to the number of sets in the tag andstate arrays system 100, each identifier may be four bits. Thus, each FIFO may be configured to point to any of the sixteen ways of its respective set, hence being able to point to the sixteen cache lines associated with the set. - In
system 100, when aninstruction 102 is to be executed by the processor, theinstruction 102 may be received by thesystem 100. Theinstruction 102 may include aset 104, abyte 106, and atag 108. Thebyte 106 may be the type of operation to be performed by the processor executing the instruction (e.g., load, add, etc.). If the instruction is a load or store, then theset 104 may be the set from which the value of one of the sixteen cache lines may be loaded are stored. Thetag 108 is the memory address of the memory storing the value for which the instruction is to include. In an example, if the instruction is load operand A, the instruction may include theset 104 for where to store operand A in cache, thebyte 106 that the instruction is a load instruction, and tag 108 for where operand A is stored in the memory. -
System 100 further includesincrementers 120. Insystem 100, an incrementer exists for each of theidentifiers 114. The next way of a set of a cache to be loaded is pointed to by the correspondingidentifier 114 for the set. Then, when a value is loaded to the way ofset 104 of the cache, then theincrementer 120 for theidentifier 114 ofset 104 increments the identifier to point to the next way of the set of the cache. Upon incrementing to the last way of the set, the incrementer may roll over the value (e.g., 15 to 0) in order to point to the first way of the set. Therefore, cache lines are sequentially loaded. - If the
instruction 102 is not a load instruction, then thesystem 100 determines if thetag 108 of theinstruction 102 is stored in thetag array 110. If thetag 108 is stored in thetag array 110, then the memory value of the memory location corresponding to thetag 108 may be stored. The storage location may be the respective cache line for the cell of thetag array 110 where thetag 108 is stored. -
System 100 includestag comparators 116 to determine whether a memory value stored in the memory location corresponding to tag 108 is stored in a cache line of the cache. A tag comparator may exist for each way (e.g., column) of the tag and state arrays. Hence, forsystem 100, sixteen tag comparators may exist in 116. For its corresponding way, the tag comparator compares thetag 108 to the tag stored for the way ofset 104 intag array 110. The tag comparator further determines if the tag stored intag array 110 is valid by accessing the state of the cell ofstate array 112 corresponding to the cell of thetag array 110. If none of the sixteen comparators finds a match between tags with a valid state, thetag comparators 116 may output amiss signal 118 that the memory value is not stored in cache. Thus, the value may be loaded from memory into the cache. If one of the sixteen comparators finds a match between tags with a valid state, thetag comparators 116 may output ahit signal 118 that the memory value is stored in the cache. Thus, the processor may access the cache instead of accessing the memory. - If the
instruction 102 is a load instruction, thesystem 100 may access theidentifier 114 for theset 104 to determine which cache line is to be loaded. Theidentifier 114 is then incremented in order to point to the next cache line to be loaded. - Since instructions may exist to invalidate cache lines of the cache, an invalid cache line may exist while the corresponding identifier points to a different cache line of the cache. As a result, in a processor including the
conventional system 100, a valid cache line may be replaced by a load operation while an invalid cache line exists. - Cache maintenance instructions may include an invalidate by index instruction and an invalidate by address instruction. An invalidate by index instruction includes an index of the cache to be invalidated. Therefore, the instruction specifically points to a cache line to be invalidated. Hence, when a processor executes the invalidate by index instruction, the cell of the state array corresponding to the indexed cache line stores an invalid status.
- An invalidate by address instruction includes an address of the memory (e.g., tag). Therefore, when a processor executes the invalidate by address instruction, the processor is to invalidate the cache line associated with the memory address. Hence, the processor searches for the memory address in the tag array and invalidates the cache line associated with the tag cell storing the matching tag.
- In the exemplary system 200 (
Figure 2 ) and the exemplary system 300 (Figure 3 ), for a cache line invalidated via an invalidate instruction, thesystem - The schematics in
Figures 2-3 illustrate exemplary embodiments of systems for replacing cache lines. The schematic ofFigure 2 illustrates anexemplary system 200 for determining cache lines of a cache for replacement wherein invalidate by index instructions exist during operation of the processor. The schematic ofFigure 3 illustrates anexemplary system 300 for determining cache lines of a cache for replacement wherein invalidate by index instructions and invalidate by address instructions exist during operation of the processor. - Referring to
Figure 2 ,system 200 includes aselector 202 as compared tosystem 100 ofFigure 1 . During processing of non maintenance instructions,selector 202 selects the incremented identifier value (i.e., the output of incrementers 120). Hence,system 200 may operate similar tosystem 100 inFigure 1 . For example, during a load operation, thesystem 200 uses theset 104 ofinstruction 102 to select theidentifier 114, set of thestate array 112, and set of thetag array 110. The processor then loads the value stored in thetag 108 of memory into the cache line identified by theset 104 and theidentifier 114. Sincebyte 106 shows that the instruction is a load instruction, theincrementer 120 receiving thebyte 106 increments the selectedidentifier 114 to point to the next cache line of the set. Theselector 202 then selects the output of the incrementer (the incremented identifier value) since the instruction is not a cache maintenance / invalidate by index instruction. Theidentifier 114 then stores the incremented identifier value. - In another example, during a store operation, the
system 200 uses theset 104 ofinstruction 102 to select theidentifier 114, set of thestate array 112, and set of thetag array 110. The processor sends the value of the cache line corresponding to theset 104 and a predetermined way to the memory location of memory identified bytag 108 for storage. Since the instruction is neither a load instruction nor requires a value from memory in order to be executed by the processor, theincrementer 120 does not increment the identifier value. Since the instruction is not an invalidate by index instruction,selector 202 selects the output of theincrementer 120. Therefore, the identifier value of the identifier stays the same during execution of the store instruction. - Some instructions, such as add or multiply, may include operands that are to be used for execution of the instruction. The operand is conventionally stored in memory. Hence, the operand may be stored in cache. Therefore, the
system 200 may determine if the operand is stored in cache. Similar tosystem 100 inFigure 1 , if the operand is stored in cache, ahit signal 118 is output fromtag comparators 116. If the operand is not stored in cache, amiss signal 118 is output from thetag comparators 116. The hit or misssignal 118 is routed to theincrementers 120 to help control whether theincrementer 120 is to increment an identifier value. - If the
signal 118 is a miss, then the operand is not stored in cache and needs to be loaded from memory to cache. Therefore, theidentifier 114 forset 104 identifies the next cache line to be replaced. The operand is loaded into the identified cache line. Upon receiving themiss signal 118,incrementer 120 increments the identifier value in order to point to the next cache line after the replaced cache line. If thesignal 118 is a hit, then the operand does not need to be loaded from memory to cache. Therefore, upon receiving thehit signal 118, theincrementer 120 does not change the identifier value. - The operation of
system 200 diverts from the operation of system 100 (Figure 1 ) during execution of cache maintenance instructions (e.g., cache invalidation instructions). When a cache maintenance instruction is executed, theselector 202 selects the index input from the instruction. The processor also invalidates the indexed cache line. Since theselector 202 selects the index from the instruction, theidentifier 114 for the indexed cache line equals the index in order to point to the invalidated cache line. As a result, when a cache line is invalidated, thesystem 200 sets the invalidated cache line as the next cache line of a set to be replaced. - Referring to
Figure 3 , invalidation may be performed by index or by address. Therefore, as compared tosystem 100 inFigure 1 ,system 300 includes anencoder 302 andselector 304. Likesystem 200 inFigure 2 ,system 300 operates similar tosystem 100 ofFigure 1 during execution of non maintenance instructions. When a maintenance instruction is executed, though, the maintenance instruction may be an invalidate by index instruction or an invalidate by address instruction. If the cache maintenance instruction is an invalidate by index instruction, then theselector 304 selects the index from theinstruction 102 andsystem 300 operates likesystem 200 inFigure 2 . - If the cache maintenance instruction is an invalidate by address instruction, then the
selector 304 selects an output ofencoder 302. As previously described, an invalidate by address instruction includes a memory address for which the processor is to find a cache line associated with the memory location oftag 108 and invalidate the cache line. Therefore,encoder 302 may be configured to output the identifier value of the cache line inset 104 associated with the memory location oftag 108 of memory so that the identifier points to the invalidated cache line for replacement by the processor. - A tag comparator exists for each way of a set of the tag array. Therefore, in the illustrative embodiment, sixteen tag comparators may exist. As previously stated, if the tag comparator has a match of tags that is valid, the tag comparator outputs a hit signal. In one embodiment, if a comparator matches tags and receives a valid state from the corresponding cell in
state array 112, then the comparator outputs a one. Only one cache line in a set may be associated with a memory address (tag 108). Therefore, the outputs of the sixteen tag comparators for aset 104 may be: (i) sixteen zeros (i.e., one zero from each tag comparator) denoting a miss or (ii) fifteen zeros and one one (i.e., one one from the tag comparator matching tags and receiving a valid state and one zero from each of the remaining fifteen tag comparators) denoting a hit. Thus, the sixteen bits are sent from thetag comparators 116 toencoder 302. - In one embodiment, the
encoder 302 is configured to encode the received sixteen bit values into a four bit identifier value. For example, if the tag comparator for way 10 (from way 0-15) ofset 104 is one, then the encoder may output "1010." In another example, if way 3 is one, then theencoder 302 may output "0011." Therefore, identifier value output byencoder 302 is selected byselector 304 and stored byidentifier 114 such that the invalidated cache line is pointed to as being the next cache line to be replaced. -
Figures 4-5 are flowcharts illustrating exemplary methods of operation of thecache replacement systems Figure 4 is a flowchart illustrating anexemplary method 400 of operation of thesystem 200 illustrated in the schematic ofFigure 2 .Figure 5 is a flowchart illustrating anexemplary method 500 of operation of thesystem 300 illustrated in the schematic ofFigure 3 . - Referring to
Figure 4 , thesystem 200 determines if the instruction to be executed is a cache maintenance instruction in 402. The cache maintenance instruction forsystem 200 is an invalidate by index instruction. If the instruction is not a cache maintenance instruction, then thesystem 200 casts the identifier for theset 104 as the output of theincrementer 120 in 404. In one embodiment, theselector 202 selects the output of theincrementer 120 to feed the value back into theidentifiers 114. If theincrementer 120 receives ahit signal 118 from thetag comparator 116, then theincrementer 120 does not increment the identifier value. If theincrementer 120 receives amiss signal 118, then theincrementer 120 increments the identifier value. Hence, the identifier forset 104 either remains the same or is incremented. - If the instruction is a cache maintenance instruction, then the
system 200 retrieves the invalidation index from theinstruction 102. The cache line positioned at the index is then invalidated in 408. Proceeding to 410, thesystem 200 casts the identifier for theset 104 as the index from the instruction. In one embodiment, theselector 202 selects the index from the instruction to feed back into theidentifiers 114. Hence, the identifier points to the invalidated cache line as the next cache line to be replaced. - Referring to
Figure 5 in reference tosystem 300 inFigure 3 , thesystem 300 determines if the instruction to be executed is a cache maintenance instruction (502 and 510). A cache maintenance instruction forsystem 300 may be an invalidate by index instruction or an invalidate by address instruction. Hence, beginning in 502, thesystem 300 determines if the instruction is an invalidate by index instruction. If the instruction is an invalidate by index instruction, then thesystem 300 retrieves the invalidation index from theinstruction 102 in 504. The cache line positioned at the index is then invalidated in 506. Proceeding to 508, thesystem 200 casts the identifier for theset 104 as the index from the instruction. In one embodiment, theselector 304 selects the index from the instruction to feed back into theidentifiers 114. Hence, the identifier points to the invalidated cache line as the next cache line to be replaced. - If the instruction is not an invalidate by index instruction, then the
system 300 determines if the instruction is a cache invalidate by address instruction in 510. If the instruction is an invalidate by address instruction, then thesystem 300 retrieves the invalidation memory address (e.g., tag 108) from theinstruction 102 in 512. Proceeding to 514, thesystem 300 determines if any cache line forset 104 stores the value in memory at the memory address (e.g., tag 108) retrieved frominstruction 102. - If the
system 300 determines that a cache line stores the value from memory at the address, then theencoder 302 ofsystem 300 encodes the output fromtag comparators 116 to create a cache line index (e.g., a four bit identifier value pointing to the cache line that is invalidated) in 516. Proceeding to 518, thesystem 300 casts the identifier forset 104 to the encoded value such that the identifier ofset 104 points to the cache line to be invalidated. The cache line is invalidated in 520. - If the
system 300 determines that the value stored in memory location of the invalidation address is not stored in cache in 514, then theidentifier 114 forset 104 remains the same since none of the cache lines are invalidated in 522. Referring back to 510, if the instruction is not an invalidate by address instruction, then the instruction is not a cache maintenance instruction. Therefore, thesystem 300 casts the identifier for theset 104 as the output of theincrementer 120 in 524. In one embodiment, theselector 304 selects the output of theincrementer 120 to feed the value back into theidentifiers 114. If theincrementer 120 receives ahit signal 118 from thetag comparator 116, then theincrementer 120 does not increment the identifier value. If theincrementer 120 receives amiss signal 118, then theincrementer 120 increments the identifier value. Hence, the identifier forset 104 either remains the same or is incremented. - Multi-mode register files may be included in any processors including register files, such as digital signal processors. The general diagrams of
Figures 6-10 illustrate example devices that may incorporate a cache replacement system to replace invalidated cache lines as illustrated in the schematics ofFigures 2 and3 . -
Figure 6 is a diagram illustrating an exemplary embodiment of aportable communication device 600. As illustrated in the general diagram ofFigure 6 , the portable communication device includes an on-chip system 602 that includes a digital signal processor (DSP) 604. The general diagram ofFigure 6 also shows adisplay controller 606 that is coupled to thedigital signal processor 604 and adisplay 608. Moreover, aninput device 610 is coupled to theDSP 604. As shown, amemory 612 is coupled to theDSP 604. Additionally, a coder/decoder (CODEC) 614 may be coupled to theDSP 604. Aspeaker 616 and amicrophone 618 may be coupled to theCODEC 614. - The general diagram of
Figure 6 further illustrates awireless controller 620 coupled to thedigital signal processor 604 and awireless antenna 622. In a particular embodiment, apower supply 624 is coupled to the on-chip system 602. Moreover, in a particular embodiment, as illustrated inFigure 6 , the display 626, the input device 630, thespeaker 616, themicrophone 618, thewireless antenna 622, and thepower supply 624 are external to the on-chip system 602. However, each is coupled to a component of the on-chip system 602. - In a particular embodiment, the
DSP 604 includes acache replacement system 680 to determine which cache lines of a cache of theDSP 604 to replace with values frommemory 612. -
Figure 7 is a diagram illustrating an exemplary embodiment of acellular telephone 700. As shown, thecellular telephone 700 includes an on-chip system 702 that includes adigital baseband processor 704 and ananalog baseband processor 706 that are coupled together. In a particular embodiment, thedigital baseband processor 704 is a digital signal processor. As illustrated in the general diagram ofFigure 7 , adisplay controller 708 and atouchscreen controller 710 are coupled to thedigital baseband processor 704. In turn, atouchscreen display 712 external to the on-chip system 702 is coupled to thedisplay controller 708 and thetouchscreen controller 710. - The general diagram of
Figure 7 further illustrates avideo encoder 714, e.g., a phase alternating line (PAL) encoder, a sequential couleur a memoire (SECAM) encoder, or a national television system(s) committee (NTSC) encoder, is coupled to thedigital baseband processor 704. Further, avideo amplifier 716 is coupled to thevideo encoder 714 and thetouchscreen display 712. Also, avideo port 718 is coupled to thevideo amplifier 716. As depicted in the general diagram ofFigure 7 , a universal serial bus (USB)controller 720 is coupled to thedigital baseband processor 704. Also, aUSB port 722 is coupled to theUSB controller 720. Amemory 724 and a subscriber identity module (SIM)card 726 may also be coupled to thedigital baseband processor 704. Further, as shown in the general diagram ofFigure 7 , adigital camera 728 may be coupled to thedigital baseband processor 704. In an exemplary embodiment, thedigital camera 728 is a charge-coupled device (CCD) camera or a complementary metal-oxide semiconductor (CMOS) camera. - As further illustrated in the general diagram of
Figure 7 , astereo audio CODEC 730 may be coupled to theanalog baseband processor 706. Moreover, anaudio amplifier 732 may coupled to thestereo audio CODEC 730. In an exemplary embodiment, afirst stereo speaker 734 and asecond stereo speaker 736 are coupled to theaudio amplifier 732. Amicrophone amplifier 738 may be also coupled to thestereo audio CODEC 730. Additionally, amicrophone 740 may be coupled to themicrophone amplifier 738. In a particular embodiment, a frequency modulation (FM)radio tuner 742 may be coupled to thestereo audio CODEC 730. Also, anFM antenna 744 is coupled to theFM radio tuner 742. Further,stereo headphones 746 may be coupled to thestereo audio CODEC 730. - The general diagram of
Figure 7 further illustrates a radio frequency (RF)transceiver 748 may be coupled to theanalog baseband processor 706. AnRF switch 750 may be coupled to theRF transceiver 748 and anRF antenna 752. Akeypad 754 may be coupled to theanalog baseband processor 706. Also, a mono headset with amicrophone 756 may be coupled to theanalog baseband processor 706. Further, avibrator device 758 may be coupled to theanalog baseband processor 706. The general diagram ofFigure 7 also shows apower supply 760 may be coupled to the on-chip system 702. In a particular embodiment, thepower supply 760 is a direct current (DC) power supply that provides power to the various components of thecellular telephone 700. Further, in a particular embodiment, the power supply is a rechargeable DC battery or a DC power supply that is derived from an alternating current (AC) to DC transformer that is coupled to an AC power source. - As depicted in the general diagram of
Figure 7 , thetouchscreen display 712, thevideo port 718, theUSB port 722, thecamera 728, thefirst stereo speaker 734, thesecond stereo speaker 736, themicrophone 740, theFM antenna 744, thestereo headphones 746, theRF switch 750, theRF antenna 752, thekeypad 754, themono headset 756, thevibrator 758, and thepower supply 760 may be external to the on-chip system 702. In a particular embodiment, theDigital Baseband Processor 704 includes acache replacement system 780 to determine which cache lines of a cache of theprocessor 704 to replace with values frommemory 724. -
Figure 8 is a diagram illustrating an exemplary embodiment of a wireless Internet protocol (IP)telephone 800. As shown, thewireless IP telephone 800 includes an on-chip system 802 that includes a digital signal processor (DSP) 804. Adisplay controller 806 may be coupled to theDSP 804 and adisplay 808 is coupled to thedisplay controller 806. In an exemplary embodiment, thedisplay 808 is a liquid crystal display (LCD).Figure 8 further shows that akeypad 810 may be coupled to theDSP 804. - A
flash memory 812 may be coupled to theDSP 804. A synchronous dynamic random access memory (SDRAM) 814, a static random access memory (SRAM) 816, and an electrically erasable programmable read only memory (EEPROM) 818 may also be coupled to theDSP 804. The general diagram ofFigure 8 also shows that a light emitting diode (LED) 820 may be coupled to theDSP 804. Additionally, in a particular embodiment, avoice CODEC 822 may be coupled to theDSP 804. Anamplifier 824 may be coupled to thevoice CODEC 822 and amono speaker 826 may be coupled to theamplifier 824. The general diagram ofFigure 8 further illustrates amono headset 828 coupled to thevoice CODEC 822. In a particular embodiment, themono headset 828 includes a microphone. - A wireless local area network (WLAN)
baseband processor 830 may be coupled to theDSP 804. AnRF transceiver 832 may be coupled to theWLAN baseband processor 830 and anRF antenna 834 may be coupled to theRF transceiver 832. In a particular embodiment, aBluetooth controller 836 may also be coupled to theDSP 804 and aBluetooth antenna 838 may be coupled to thecontroller 836. The general diagram ofFigure 8 also shows that aUSB port 840 may also be coupled to theDSP 804. Moreover, apower supply 842 is coupled to the on-chip system 802 and provides power to the various components of thewireless IP telephone 800. - As indicated in the general diagram of
Figure 8 , thedisplay 808, thekeypad 810, theLED 820, themono speaker 826, themono headset 828, theRF antenna 834, theBluetooth antenna 838, theUSB port 840, and thepower supply 842 may be external to the on-chip system 802 and coupled to one or more components of the on-chip system 802. In a particular embodiment, theDigital Signal Processor 804 includes acache replacement system 880 to determine which cache lines of a cache of theprocessor 804 to replace with values fromflash 812,SDRAM 814,SRAM 816, and/orEEPROM 818. -
Figure 9 is a diagram illustrating an exemplary embodiment of a portable digital assistant (PDA) 900. As shown, thePDA 900 includes an on-chip system 902 that includes a digital signal processor (DSP) 904. Atouchscreen controller 906 and adisplay controller 908 are coupled to theDSP 904. Further, atouchscreen display 910 is coupled to thetouchscreen controller 906 and to thedisplay controller 908. The general diagram ofFigure 9 also indicates that akeypad 912 may be coupled to theDSP 904. - In a particular embodiment, a
stereo audio CODEC 926 may be coupled to theDSP 904. Afirst stereo amplifier 928 may be coupled to thestereo audio CODEC 926 and afirst stereo speaker 930 may be coupled to thefirst stereo amplifier 928. Additionally, amicrophone amplifier 932 may be coupled to thestereo audio CODEC 926 and amicrophone 934 may be coupled to themicrophone amplifier 932. The general diagram ofFigure 9 further shows that asecond stereo amplifier 936 may be coupled to thestereo audio CODEC 926 and asecond stereo speaker 938 may be coupled to thesecond stereo amplifier 936. In a particular embodiment,stereo headphones 940 may also be coupled to thestereo audio CODEC 926. - The general diagram of
Figure 9 also illustrates that an 802.11controller 942 may be coupled to theDSP 904 and an 802.11antenna 944 may be coupled to the 802.11controller 942. Moreover, aBluetooth controller 946 may be coupled to theDSP 904 and aBluetooth antenna 948 may be coupled to theBluetooth controller 946. AUSB controller 950 may be coupled to theDSP 904 and aUSB port 952 may be coupled to theUSB controller 950. Additionally, asmart card 954, e.g., a multimedia card (MMC) or a secure digital card (SD), may be coupled to theDSP 904. Further, apower supply 956 may be coupled to the on-chip system 902 and may provide power to the various components of thePDA 900. - As indicated in the general diagram of
Figure 9 , thedisplay 910, thekeypad 912, theIrDA port 922, thedigital camera 924, thefirst stereo speaker 930, themicrophone 934, thesecond stereo speaker 938, thestereo headphones 940, the 802.11antenna 944, theBluetooth antenna 948, theUSB port 952, and thepower supply 956 may be external to the on-chip system 902 and coupled to one or more components on the on-chip system. In a particular embodiment, theDigital Signal Processor 904 includes acache replacement system 980 to determine which cache lines of a cache of theprocessor 904 to replace with values fromflash 914,ROM 916,DRAM 918, and/orEEPROM 920. -
Figure 10 is a diagram illustrating an exemplary embodiment of an audio file player (e.g., MP3 player) 1000. As shown, theaudio file player 1000 includes an on-chip system 1002 that includes a digital signal processor (DSP) 1004. Adisplay controller 1006 may be coupled to theDSP 1004 and adisplay 1008 is coupled to thedisplay controller 1006. In an exemplary embodiment, thedisplay 1008 is a liquid crystal display (LCD). Akeypad 1010 may be coupled to theDSP 1004. - As further depicted in the general diagram of
Figure 10 , aflash memory 1012 and a read only memory (ROM) 1014 may be coupled to theDSP 1004. Additionally, in a particular embodiment, anaudio CODEC 1016 may be coupled to theDSP 1004. Anamplifier 1018 may be coupled to theaudio CODEC 1016 and amono speaker 1020 may be coupled to theamplifier 1018. The general diagram ofFigure 10 further indicates that amicrophone input 1022 and astereo input 1024 may also be coupled to theaudio CODEC 1016. In a particular embodiment,stereo headphones 1026 may also be coupled to theaudio CODEC 1016. - A
USB port 1028 and asmart card 1030 may be coupled to theDSP 1004. Additionally, apower supply 1032 may be coupled to the on-chip system 1002 and may provide power to the various components of theaudio file player 1000. - As indicated in the general diagram of
Figure 10 , thedisplay 1008, thekeypad 1010, themono speaker 1020, themicrophone input 1022, thestereo input 1024, thestereo headphones 1026, theUSB port 1028, and thepower supply 1032 are external to the on-chip system 1002 and coupled to one or more components on the on-chip system 1002. In a particular embodiment, theDigital Signal Processor 1004 includes acache replacement system 1080 to determine which cache lines of a cache of theprocessor 1004 to replace with values fromflash 1012 and/orROM 1014. - The foregoing description of the embodiments of the inventive concepts disclosed herein has been presented only for the purpose of illustration and description and is not intended to be exhaustive or to limit the inventive concepts disclosed herein to the precise forms disclosed. Numerous modifications and adaptations are apparent to those skilled in the art without departing from the scope of the inventive concepts disclosed herein.
Claims (12)
- A system (200, 300), comprising:means configured to identify a cache line for replacement from a cache comprising a plurality of cache lines by an identifier (114); andmeans configured to determine a value of the identifier (114), said value selected from an output of an incrementer (120) during execution of non maintenance instructions and, during execution of cache maintenance instructions, selected from either an index from a cache invalidate by index instruction or an identifier value of a cache line associated with a cache invalidate by address instruction.
- The system of claim 1, further comprising means for determining a location of a state (112) of the maintenance instruction stored in the cache.
- The system of claim 1, further comprising means for encoding the location to be identified as the cache line to be replaced.
- The system of claim 1, wherein
the means for identifying further comprising the identifier (114) configured to identify the cache line for replacement; and
the means for determining further comprising a control logic configured to determine the value of the identifier (114). - The system of claim 4, wherein the cache invalidate by index instruction includes the index to be selected by the control logic.
- The system of claim 4, wherein the control logic comprises an index of tags of information stored in the cache.
- The system of claim 1, wherein the control logic further comprises a comparator (116, 118) configured to determine if a tag of the cache invalidate by address instruction matches any tag stored in the index of tags at a predefined set and, wherein the control logic further comprises an index of states configured to store the validity of each of the plurality of tags in the index of tags, wherein the comparator is configured to determine if the tag stored in the index of tags is valid.
- The system of claim 7, wherein the control logic further comprises an encoder (302) configured to receive the output of the comparator and encode the output into a way address of a cache line as the output of the cache invalidate by address instruction for selection as the identifier value.
- A method, comprising:identifying a cache line for replacement from a cache comprising a plurality of cache lines by an identifier (114); anddetermining a value of the identifier, said value selected from an output of an incrementer (120) during execution of non maintenance instructions, and during execution of cache maintenance instructions, selected from either an index from a cache invalidate by index instruction or an identifier value of a cache line associated with a cache invalidate by address instruction.
- The method of claim 9, wherein the cache invalidate by index instruction includes the index to be selected by the control logic.
- The method of claim 9, further comprising: storing an index of tags (110) of information stored in the cache by the control logic; and determining by a comparator if a tag of the cache invalidate by address instruction matches any tag stored in the index of tags at a predefined set; and further comprising determining by the comparator if a tag in the index of tags is valid upon determining a match between the tag in the index of tags and the tag of the cache invalidate by address instruction.
- The method of claim 11, further comprising encoding by an encoder an output of the comparator into a way address of a cache line as the output of the cache invalidate by address instruction for selection as the identifier value.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/039,954 US8464000B2 (en) | 2008-02-29 | 2008-02-29 | Systems and methods for cache line replacements |
PCT/US2009/032920 WO2009108463A1 (en) | 2008-02-29 | 2009-02-03 | Systems and methods for cache line replacement |
Publications (2)
Publication Number | Publication Date |
---|---|
EP2260388A1 EP2260388A1 (en) | 2010-12-15 |
EP2260388B1 true EP2260388B1 (en) | 2016-08-31 |
Family
ID=40565113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP09714236.8A Not-in-force EP2260388B1 (en) | 2008-02-29 | 2009-02-03 | Systems and methods for cache line replacement |
Country Status (7)
Country | Link |
---|---|
US (2) | US8464000B2 (en) |
EP (1) | EP2260388B1 (en) |
JP (2) | JP5474836B2 (en) |
KR (1) | KR101252744B1 (en) |
CN (2) | CN101960433B (en) |
TW (1) | TW200945051A (en) |
WO (1) | WO2009108463A1 (en) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8464000B2 (en) | 2008-02-29 | 2013-06-11 | Qualcomm Incorporated | Systems and methods for cache line replacements |
US9170955B2 (en) * | 2012-11-27 | 2015-10-27 | Intel Corporation | Providing extended cache replacement state information |
US9158702B2 (en) | 2012-12-28 | 2015-10-13 | Intel Corporation | Apparatus and method for implementing a scratchpad memory using priority hint |
WO2015075673A1 (en) | 2013-11-21 | 2015-05-28 | Green Cache AB | Systems and methods for reducing first level cache energy by eliminating cache address tags |
US9619387B2 (en) * | 2014-02-21 | 2017-04-11 | Arm Limited | Invalidating stored address translations |
US10031849B2 (en) | 2014-05-29 | 2018-07-24 | Samsung Electronics Co., Ltd. | Tracking alternative cacheline placement locations in a cache hierarchy |
US10331561B1 (en) | 2016-06-29 | 2019-06-25 | Emc Corporation | Systems and methods for rebuilding a cache index |
US10146438B1 (en) | 2016-06-29 | 2018-12-04 | EMC IP Holding Company LLC | Additive library for data structures in a flash memory |
US10037164B1 (en) | 2016-06-29 | 2018-07-31 | EMC IP Holding Company LLC | Flash interface for processing datasets |
US10055351B1 (en) | 2016-06-29 | 2018-08-21 | EMC IP Holding Company LLC | Low-overhead index for a flash cache |
US10261704B1 (en) | 2016-06-29 | 2019-04-16 | EMC IP Holding Company LLC | Linked lists in flash memory |
US10089025B1 (en) | 2016-06-29 | 2018-10-02 | EMC IP Holding Company LLC | Bloom filters in a flash memory |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS579155B2 (en) * | 1975-02-04 | 1982-02-19 | ||
JPS63178354A (en) | 1987-01-20 | 1988-07-22 | Hitachi Ltd | Replacement control system for buffer memory |
JPH05189356A (en) | 1992-01-14 | 1993-07-30 | Matsushita Electric Ind Co Ltd | Memory controller |
JP2005108262A (en) | 1994-09-09 | 2005-04-21 | Renesas Technology Corp | Data processor |
JP3740195B2 (en) | 1994-09-09 | 2006-02-01 | 株式会社ルネサステクノロジ | Data processing device |
GB2311880A (en) | 1996-04-03 | 1997-10-08 | Advanced Risc Mach Ltd | Partitioned cache memory |
US6405287B1 (en) * | 1999-11-17 | 2002-06-11 | Hewlett-Packard Company | Cache line replacement using cache status to bias way selection |
US6408364B1 (en) | 2000-03-17 | 2002-06-18 | Advanced Micro Devices, Inc. | Apparatus and method for implementing a least recently used cache replacement algorithm |
US6725337B1 (en) * | 2001-05-16 | 2004-04-20 | Advanced Micro Devices, Inc. | Method and system for speculatively invalidating lines in a cache |
US20040143711A1 (en) * | 2002-09-09 | 2004-07-22 | Kimming So | Mechanism to maintain data coherency for a read-ahead cache |
US7669009B2 (en) * | 2004-09-23 | 2010-02-23 | Intel Corporation | Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches |
US8464000B2 (en) | 2008-02-29 | 2013-06-11 | Qualcomm Incorporated | Systems and methods for cache line replacements |
-
2008
- 2008-02-29 US US12/039,954 patent/US8464000B2/en not_active Expired - Fee Related
-
2009
- 2009-02-03 WO PCT/US2009/032920 patent/WO2009108463A1/en active Application Filing
- 2009-02-03 KR KR1020107021738A patent/KR101252744B1/en active IP Right Grant
- 2009-02-03 CN CN200980106734.5A patent/CN101960433B/en not_active Expired - Fee Related
- 2009-02-03 EP EP09714236.8A patent/EP2260388B1/en not_active Not-in-force
- 2009-02-03 JP JP2010548780A patent/JP5474836B2/en not_active Expired - Fee Related
- 2009-02-03 CN CN201610180597.1A patent/CN105868128B/en not_active Expired - Fee Related
- 2009-02-17 TW TW098104985A patent/TW200945051A/en unknown
-
2013
- 2013-05-15 US US13/894,545 patent/US8812789B2/en not_active Expired - Fee Related
- 2013-06-19 JP JP2013128940A patent/JP5722389B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101960433A (en) | 2011-01-26 |
US8812789B2 (en) | 2014-08-19 |
CN105868128A (en) | 2016-08-17 |
EP2260388A1 (en) | 2010-12-15 |
CN101960433B (en) | 2016-04-27 |
US20090222626A1 (en) | 2009-09-03 |
US20130254489A1 (en) | 2013-09-26 |
CN105868128B (en) | 2018-05-18 |
TW200945051A (en) | 2009-11-01 |
KR20100119820A (en) | 2010-11-10 |
US8464000B2 (en) | 2013-06-11 |
JP2011513844A (en) | 2011-04-28 |
WO2009108463A1 (en) | 2009-09-03 |
KR101252744B1 (en) | 2013-04-09 |
JP5722389B2 (en) | 2015-05-20 |
JP2013232210A (en) | 2013-11-14 |
JP5474836B2 (en) | 2014-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2260388B1 (en) | Systems and methods for cache line replacement | |
US8639913B2 (en) | Multi-mode register file for use in branch prediction | |
US7584233B2 (en) | System and method of counting leading zeros and counting leading ones in a digital signal processor | |
US8250332B2 (en) | Partitioned replacement for cache memory | |
US8713286B2 (en) | Register files for a digital signal processor operating in an interleaved multi-threaded environment | |
US8429378B2 (en) | System and method to manage a translation lookaside buffer | |
KR20100090703A (en) | Configurable translation lookaside buffer | |
US20060168390A1 (en) | Methods and apparatus for dynamically managing banked memory | |
EP3149594B1 (en) | Method and apparatus for cache access mode selection | |
JP2010539598A (en) | System and method using n-way cache | |
US20120054426A1 (en) | System and Method of Reducing Power Usage of a Content Addressable Memory | |
US8185721B2 (en) | Dual function adder for computing a hardware prefetch address and an arithmetic operation value | |
KR20070118705A (en) | System and method of using a predicate value to access a register file |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20100923 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO SE SI SK TR |
|
AX | Request for extension of the european patent |
Extension state: AL BA RS |
|
DAX | Request for extension of the european patent (deleted) | ||
17Q | First examination report despatched |
Effective date: 20130307 |
|
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
INTG | Intention to grant announced |
Effective date: 20160317 |
|
GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO SE SI SK TR |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: EP Ref country code: GB Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R096 Ref document number: 602009040773 Country of ref document: DE |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: REF Ref document number: 825530 Country of ref document: AT Kind code of ref document: T Effective date: 20161015 |
|
REG | Reference to a national code |
Ref country code: FR Ref legal event code: PLFP Year of fee payment: 9 |
|
REG | Reference to a national code |
Ref country code: LT Ref legal event code: MG4D |
|
REG | Reference to a national code |
Ref country code: NL Ref legal event code: MP Effective date: 20160831 |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: MK05 Ref document number: 825530 Country of ref document: AT Kind code of ref document: T Effective date: 20160831 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: HR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: NO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20161130 Ref country code: FI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: LT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: LV Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: NL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20161201 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: EE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: RO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: DE Payment date: 20161212 Year of fee payment: 9 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: CZ Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: PT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20170102 Ref country code: BE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: PL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: SK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 Ref country code: BG Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20161130 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R097 Ref document number: 602009040773 Country of ref document: DE |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
26N | No opposition filed |
Effective date: 20170601 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MC Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: PL |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LI Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20170228 Ref country code: CH Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20170228 |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: MM4A |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: LU Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20170203 |
|
REG | Reference to a national code |
Ref country code: FR Ref legal event code: PLFP Year of fee payment: 10 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20170203 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: GB Payment date: 20180125 Year of fee payment: 10 |
|
PGFP | Annual fee paid to national office [announced via postgrant information from national office to epo] |
Ref country code: FR Payment date: 20180118 Year of fee payment: 10 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R119 Ref document number: 602009040773 Country of ref document: DE |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MT Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20170203 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: DE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20180901 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: HU Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO Effective date: 20090203 |
|
GBPC | Gb: european patent ceased through non-payment of renewal fee |
Effective date: 20190203 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: CY Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20160831 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: MK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: GB Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190203 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: FR Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20190228 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: TR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20160831 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: IS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20161231 |