WO2022129869A1 - Cache stash relay - Google Patents
Cache stash relay Download PDFInfo
- Publication number
- WO2022129869A1 WO2022129869A1 PCT/GB2021/053222 GB2021053222W WO2022129869A1 WO 2022129869 A1 WO2022129869 A1 WO 2022129869A1 GB 2021053222 W GB2021053222 W GB 2021053222W WO 2022129869 A1 WO2022129869 A1 WO 2022129869A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- cache
- processing unit
- address pattern
- processing system
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
Definitions
- Caches also provide benefit when data usage can be predicted and the data prefetched from memory.
- prediction errors due to program branching for example, result in unnecessary memory read operations.
- Caches also provide performance benefits when data from an input device can be injected directly into a cache of a target processor core. This approach is also called cache stashing.
- cache stashing requires that the input device knows the core identifier of the target processor. This information may not be available or it may be undesirable to provide the information to an input device.
- FIG. 1 is a block diagram of a data processing system, in accordance with various representative embodiments.
- FIG. 2 is a transaction diagram showing information flow in a data processing system, in accordance with various representative embodiments.
- FIG. 3 is a flow chart of a method of data movement in a data processing system, in accordance with various representative embodiments.
- FIG. 4 is a flow chart of a method of data movement in a data processing system, in accordance with various representative embodiments.
- FIG. 5 is a diagram of a logical arrangement of information in a shared cache of a data processing system.
- FIG. 6 is a diagram of a logical arrangement of address pattern information in a data processing system, in accordance with various representative embodiments.
- FIG. 7 is a diagram of a logical arrangement of stream information in a data processing system, in accordance with various representative embodiments.
- FIG. 8 is a transaction diagram showing information flow in a data processing system, in accordance with various representative embodiments.
- the term “configured to”, when applied to an element, means that the element may be designed or constructed to perform a designated function, or that the element has the required structure to enable it to be reconfigured or adapted to perform that function.
- FIG. 1 is a block diagram of a data processing system 100, in accordance with various representative embodiments.
- System 100 includes a number of processing cores 102 configured to access a shared memory 104. Memory access speeds are much slower than processor speeds, so system 100 also includes one or more high speed caches.
- the caches may be arranged in a hierarchy, the highest level (level one or ‘LI’) being the fastest and closest to the processing cores.
- each processing core 102 has a local or private LI cache 106. This may be reserved for data (Lid) with another LI cache (not shown) reserved for instructions. Alternatively, the LI cache could be used for both instructions and data.
- a larger, slower level two (L2) cache 108 may be shared by several processing cores and feeds data to the LI caches.
- L2 slower level two
- system 100 includes shared cache 110.
- the shared cache is the lowest level of the cache hierarchy and is referred to as a last level cache (LLC) or system cache (SC).
- LLC last level cache
- SC system cache
- shared cache 110 is controlled by a controller 112 that has access to a table memory 114. These will be discussed in more detail below.
- Producer devices 116 provide data to be processed or consumed by the processing cores.
- Example producer devices include network interface cards (NICs), other processors, input devices, Direct Memory Access (DMA) controllers, etc.
- NICs network interface cards
- DMA Direct Memory Access
- Coherent interconnect circuitry 118 enables information, such as messages and data, to be passed between the various elements of the data processing system.
- FIG. 2 is a transaction diagram 200 showing information flow in a data processing system, in accordance with various representative embodiments.
- the diagram shows timeline 202 for a producer device, timeline 204 for a shared cache, timeline 206 for interconnect circuitry, timeline 208 for a local cache of a consumer processor core and timeline 210 for the consumer processor core. In each case, time flows from top to bottom in the diagram.
- the producer device starts stashing or injecting data into the shared cache.
- the producer device may be provided with one or more target addresses.
- the target address may be the address of a pre-allocated data block in the shared cache, for example.
- the data may also be sent to a memory.
- the data in the shared cache may be flagged as having a ‘dirty’ or ‘modified’ coherency status to indicate that it should be written to memory when evicted from the cache.
- the controller of the shared cache recognizes an address pattern of the stashed data. For example, a sequence of consecutive addresses may be detected. If this is a new address pattern, an entry for the pattern is created in a prediction table. The entry contains descriptors of the address pattern, such as start address and end address, or a start address and size (number of addresses or number of cache lines), for example. If the pattern is not new, the existing entry may be updated. For example, the entry could be updated with a new end address or size. [0026] At time (3), a consumer core issues a load request for data associated with an address in the identified address pattern. First, the local cache is checked to see if a copy of the data is stored there.
- a cache miss occurs and a read request is sent to home agent associated with the data address.
- the read request is sent via the interconnect circuity, which introduced a first latency.
- the home agent checks for the requested data in the shared cache, introducing a second latency and, finding the data, returns the data via the interconnect circuitry, introducing a third latency.
- the data may pass through a local cache hierarchy (such as L2 and LI caches) before finally reaching the consumer core at time (4).
- the controller of the shared cache recognizes that the consumer core has accessed data associated with an identified address pattern and adds an identifier of the consumer core in the prediction table entry for that address pattern.
- the identifier indicates that the consumer core is a predicted target for the data associated with the pattern.
- data associated with other addresses in the address pattern are pushed to consumer core at time (6).
- the data is first stashed in the shared cache and then relayed to the local cache of the consumer core when that core is predicted as a target.
- the consumer core may select to stash the data in a local cache or discard them.
- the consumer core issues a load request for data associated with another address in the identified address pattern.
- the requested data is found in the local cache, having been relayed to the cache at time (6).
- the data is loaded at time (8).
- the consumer core issues a load request for new data.
- the requested data is found in the local cache, having been relayed to the cache at time (11).
- the data is loaded at time (13). Again, the latency of retrieving the data, via the interconnect circuitry, from the shared cache has been avoided, providing a considerable performance advantage.
- FIG. 3 is a flow chart of a method 300 of data movement in a data processing system, in accordance with various representative embodiments.
- new data is stashed or injected into a shared cache of the data processing system at block 304.
- decision block 306 it is determined, by controller circuitry associated with the shared cache, if the address associated with the new data, together with addresses associated with previously stashed data, form a pattern of addresses. If not, as depicted by the negative branch from decision block 306, stream statistics may be updated at block 308. For example, if the previous address was part of a stream of consecutive address, but the new address is not, the length of the terminated stream may be used to update a counter of streams of that length or similar length.
- FIG. 4 is a flow chart of a method 400 of data movement in a data processing system, in accordance with various representative embodiments.
- a controller associated with a shared cache receives a new request, from a consumer core, for data associated with a designated data address at block 404.
- the requested data is returned to the core, having been retrieved from the shared cache or, if not present in the shared cache, from the designated address in a memory.
- a decision block 408 a prediction table is searched to determine if the designated address is in an identified address pattern. If not, as depicted by the negative branch from decision block 408, flow returns to block 404.
- an identifier of the consumer core is added to the entry in the prediction table for the identified address pattern at block 410, indicating the core to be a target for data associated with the address pattern.
- any other data in the shared cache that is associated with addresses in the identified address pattern is relayed to a local cache of the core. In this way, data associated with the address pattern is placed in local cache of the core in anticipation that the core, having accessed one address in the pattern, with likely request access to data associated with other addresses in the pattern. When this access is requested, the data will be available in the local cache of the core, thereby avoiding the delay associated with requesting the data via the interconnect circuitry.
- FIG. 5 is a diagram of a logical arrangement of information 500 in a shared cache of a data processing system.
- the information includes data array 502 for storing cached data.
- the data is logically organized as a number of lines, each containing data associated with multiple addresses.
- Corresponding address tags are stored in tag array 504.
- the tag array enables the controller to identify which line of data in data array 502 contains data associated with a given address.
- the status of a line of data is stored in status array 506. This may indicate, for example, if a line of data is valid or invalid.
- FIG. 6 is a diagram of a prediction table 600, in accordance with various representative embodiments.
- Each logical row, 602a, 602b, 602c, etc., of the prediction table includes a number of descriptors, 604a, 604b, 604c, etc., of an associated identified address pattern.
- An address pattern may have any number of descriptors.
- descriptor 604a is a starting address
- descriptor 604b is an end address of a pattern comprising a stream of consecutive addresses.
- descriptor 604a is a starting address and descriptor 604b is a size (such as a number of addresses, a number of cache lines or a number of data blocks).
- Descriptor 604c is a ‘stride’ of a pattern, indicating the number of elements between successive elements in a data stream.
- An additional entry 606 in each row identifies consumer cores that have accessed data associated with an address in the address pattern. This may be, for example, a list of explicit identifiers or a bit pattern in which each bit position corresponds to consumer core in the data processing system. Other logical arrangements or formats may be used without departing from the present disclosure.
- the prediction table may be reset at intervals to remove outdated information.
- a consumer core may provide feedback to the controller as to the utilization of relayed data. This feedback may be used to update the prediction table. For example, a core identifier may be remove from an entry in the table if the corresponding relayed data was found to be not useful.
- the controller associated with the shared cache identifies a stream of addresses associated with stashed data as an address pattern.
- space in the local caches is limited, it may be advantageous to select which address patterns should be relayed to a target consumer core.
- stashing data associated with longer streams may provide greater performance benefits.
- statistics relating to the length of data streams are maintained. A number of stream length ranges are designated and, for each length range, a counter value is incremented each time a stream of the corresponding length is completed. Based on this information, the controller may select a threshold on the stream length. For example, the controller could select to only relay data associated with stream lengths of 10 or more.
- FIG. 7 is a diagram of a logical arrangement of stream information 700 in a data processing system in accordance with embodiments of the disclosure.
- the controller associated with the shared cache identifies a stream of addresses associated with stashed data as an address pattern.
- the controller associated with the shared cache identifies a stream of addresses associated with stashed data as an address pattern.
- stashing data associated with longer streams may provide greater performance benefits.
- statistics relating to the length of data streams are maintained. In the example shown, a number of stream length ranges are designated.
- FIG. 8 is a transaction diagram 800 showing information flow in a data processing system, in accordance with various representative embodiments.
- the diagram shows timeline 802 for a producer device, timeline 804 for a shared cache, timeline 806 for interconnect circuitry, timeline 808 for a local cache of a consumer processor core and timeline 810 for the consumer processor core. In each case, time flows from top to bottom in the diagram.
- the producer device begins stashing data into the shared cache.
- the producer device may be provided with one or more target addresses.
- the target address may be a pre-allocated data block in the shared cache, for example.
- the controller of the shared cache recognizes an address pattern of the stashed data. For example, a sequence of consecutive addresses may be detected. If this is a new address pattern, an entry for the pattern is created in a prediction table.
- a consumer core issues a load request, via the interconnect circuitry, for data associated with an address in the identified address pattern consumer core.
- the data is received at the core.
- the controller of the shared cache recognizes that the consumer core has accessed data associated with an identified address pattern and stores an identifier of that consumer core in the prediction table entry for the address pattern. This indicates that the consumer core is a predicted target for data associated with the pattern.
- the controller sends a message, via the interconnect circuitry, to a pre-fetcher of the requesting consumer core, indicating that data associated with the address pattern is available in the shared cache.
- the pre-fetch er of the in the consumer core issues a request to pre-fetch data associated with the address pattern.
- the requested data is relayed from the shared cache to a local cache of the consumer core.
- the consumer core executes a load instruction for the data, at time (9), the data is available in the local cache and can be loaded, with minimum latency, at time (10).
- Dedicated or reconfigurable hardware components used to implement the disclosed mechanisms may be described, for example, by instructions of a hardware description language (HDL), such as VHDL, Verilog or RTL (Register Transfer Language), or by a netlist of components and connectivity.
- the instructions may be at a functional level or a logical level or a combination thereof.
- the instructions or netlist may be input to an automated design or fabrication process (sometimes referred to as high-level synthesis) that interprets the instructions and creates digital hardware that implements the described functionality or logic.
- the HDL instructions or the netlist may be stored on non-transient computer readable medium such as Electrically Erasable Programmable Read Only Memory (EEPROM); non-volatile memory (NVM); mass storage such as a hard disc drive, floppy disc drive, optical disc drive; optical storage elements, magnetic storage elements, magnetooptical storage elements, flash memory, core memory and/or other equivalent storage technologies without departing from the present disclosure.
- EEPROM Electrically Erasable Programmable Read Only Memory
- NVM non-volatile memory
- mass storage such as a hard disc drive, floppy disc drive, optical disc drive; optical storage elements, magnetic storage elements, magnetooptical storage elements, flash memory, core memory and/or other equivalent storage technologies without departing from the present disclosure.
- Such alternative storage devices should be considered equivalents.
- a method for cache stashing is provided.
- First data from a producer device of a data processing system, is stashed in a shared cache of the data processing system.
- the first data is associated with a plurality of first data addresses in a shared memory of the data processing system and an address pattern of the plurality of first data addresses is identified.
- the second data address is determined to be in the identified address pattern and data associated with data addresses in the identified address pattern is relayed from the shared cache to a local cache of the processing unit.
- the identified address pattern may include a range of consecutive data addresses. [0052] In a further embodiment, relaying the data associated with data addresses in the identified address pattern includes pushing the data from the shared cache to the local cache of the processing unit.
- relaying the data associated with data addresses in the identified address pattern includes sending a message to inform a pre-fetcher of the processing unit of the identified address pattern and the pre-fetcher of the processing unit pulling the data from the shared cache to the local cache of the processing unit.
- third data from the producer device is stashed in the shared cache, the third data associated with a third data address in the shared memory.
- the processing unit is predicted to be a target for data in the identified address pattern and the third data is relayed from the shared cache and stashed in the local cache of the processing unit.
- descriptors of the identified address pattern are stored in an entry of a prediction table and an identifier of the processing unit is stored in the entry of the prediction table as a target for the data associated with the identified address pattern.
- third data is relayed from the producer device and stashed in the shared cache of the data processing system, the third data associated with a third data address in the shared memory.
- the shared cache may be a system level cache or a last level cache of the data processing system and the local cache of the processing unit may be a level one (LI) cache or a level two (L2) cache of the processing unit.
- LI level one
- L2 level two
- a data processing system including a first processing unit, one or more second processing units, a shared cache, a producer device and a controller.
- the first processing unit has a local cache and the shared cache is accessible by the first processing unit.
- the stashed data is associated with a plurality of first data addresses in a shared memory of the data processing system.
- the producer device is configured to stash data in the shared cache.
- the controller is configured to identify an address pattern of the plurality of the first data addresses.
- the controller Responsive to receiving a request, from the first processing unit, for second data associated with a second data address, the controller determines the second data address to be in the identified address pattern and data associated with data addresses in the identified address pattern is relayed from the shared cache to a local cache of the first processing unit.
- the controller is configured to push the data associated with data addresses in the identified address pattern from the shared cache to the local cache of the first processing unit.
- the controller is configured to send a message to a pre-fetcher of the first processing unit when data stashed in the shared cache is determined to be an identified address pattern.
- the pre-fetcher of the first processing unit then pulls the data associated with data addresses in the identified address pattern from the shared cache to the local cache of the first processing unit in response to the message.
- the shared cache may be a system cache or a last level cache and the local cache of the first processing unit may be a level one (LI) cache or a level two (L2) cache, for example.
- LI level one
- L2 level two
- the identified address pattern may be a range of consecutive data addresses, for example.
- the data processing system includes a memory and the controller is configured to store descriptors of the identified address pattern in an entry of a prediction table stored in the memory.
- the controller may be configured to store an identifier of the first processing unit in the entry of the prediction table as a target for the data associated with the identified address pattern.
- the controller may be further configured to determine, from the prediction table, that a third data address, associated with third data stashed in the shared cache by the producer device, is in the identified address pattern and determine, from the prediction table, the first processing unit to be target for data associated with the identified address pattern. In this case, the third data is relayed from the shared cache to the local cache of the first processing unit.
- the producer device may be, for example, a network interface card, an input device, a camera, a hardware accelerator or a direct memory access (DMA) device.
- DMA direct memory access
- the producer device may be a processing unit of the one or more second processing units or some other device.
- the data processing system includes interconnect circuitry, where the first processing unit and the shared cache are operationally coupled via the interconnect circuitry.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
Description
Claims
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202180078419.7A CN116472521A (en) | 2020-12-16 | 2021-12-09 | Cache Staging Relay |
| GB2309698.5A GB2616399A (en) | 2020-12-16 | 2021-12-09 | Cache stash relay |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/123,527 | 2020-12-16 | ||
| US17/123,527 US11314645B1 (en) | 2020-12-16 | 2020-12-16 | Cache stash relay |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2022129869A1 true WO2022129869A1 (en) | 2022-06-23 |
Family
ID=79025107
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/GB2021/053222 Ceased WO2022129869A1 (en) | 2020-12-16 | 2021-12-09 | Cache stash relay |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US11314645B1 (en) |
| CN (1) | CN116472521A (en) |
| GB (1) | GB2616399A (en) |
| WO (1) | WO2022129869A1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2026033192A1 (en) * | 2024-08-09 | 2026-02-12 | Arm Limited | Technique for controlling stashing of data |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12001722B2 (en) * | 2022-08-18 | 2024-06-04 | Arm Limited | Technique for controlling stashing of data |
Citations (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040162949A1 (en) * | 2003-02-18 | 2004-08-19 | Cray Inc. | Optimized high bandwidth cache coherence mechanism |
| US20070174555A1 (en) * | 2006-01-20 | 2007-07-26 | Martin Burtscher | Future execution prefetching technique and architecture |
| US20140351519A1 (en) * | 2013-05-23 | 2014-11-27 | Lsi Corporation | System and method for providing cache-aware lightweight producer consumer queues |
| US20170010966A1 (en) * | 2015-07-10 | 2017-01-12 | Applied Micro Circuits Corporation | Systems and methods facilitating reduced latency via stashing in system on chips |
| US20190114262A1 (en) * | 2017-10-12 | 2019-04-18 | Arm Limited | Cache stashing in a data processing system |
| US20190129871A1 (en) * | 2017-11-02 | 2019-05-02 | Arm Limited | I/o driven data transfer in a data processing network |
| WO2019085649A1 (en) * | 2017-11-02 | 2019-05-09 | 华为技术有限公司 | Cache access method, multi-level cache system and computer system |
| EP3550437A1 (en) * | 2018-04-06 | 2019-10-09 | INTEL Corporation | Adaptive spatial access prefetcher apparatus and method |
| WO2019211610A1 (en) * | 2018-05-03 | 2019-11-07 | Arm Limited | HIGH-PERFORMANCE STREAMING OF ORDERED WRITE STASHES TO ENABLE OPTIMIZED DATA SHARING BETWEEN I/O MASTERS AND CPUs |
| US20200334153A1 (en) * | 2019-04-17 | 2020-10-22 | Chengdu Haiguang Integrated Circuit Design Co. Ltd. | Multi-Core Processing Device and Method of Transfering Data Between Cores Thereof |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3969009B2 (en) * | 2001-03-29 | 2007-08-29 | 株式会社日立製作所 | Hardware prefetch system |
| US6813694B2 (en) * | 2002-08-08 | 2004-11-02 | International Business Machines Corporation | Local invalidation buses for a highly scalable shared cache memory hierarchy |
| JP2009230374A (en) * | 2008-03-21 | 2009-10-08 | Fujitsu Ltd | Information processor, program, and instruction sequence generation method |
-
2020
- 2020-12-16 US US17/123,527 patent/US11314645B1/en active Active
-
2021
- 2021-12-09 CN CN202180078419.7A patent/CN116472521A/en active Pending
- 2021-12-09 GB GB2309698.5A patent/GB2616399A/en active Pending
- 2021-12-09 WO PCT/GB2021/053222 patent/WO2022129869A1/en not_active Ceased
Patent Citations (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040162949A1 (en) * | 2003-02-18 | 2004-08-19 | Cray Inc. | Optimized high bandwidth cache coherence mechanism |
| US20070174555A1 (en) * | 2006-01-20 | 2007-07-26 | Martin Burtscher | Future execution prefetching technique and architecture |
| US20140351519A1 (en) * | 2013-05-23 | 2014-11-27 | Lsi Corporation | System and method for providing cache-aware lightweight producer consumer queues |
| US20170010966A1 (en) * | 2015-07-10 | 2017-01-12 | Applied Micro Circuits Corporation | Systems and methods facilitating reduced latency via stashing in system on chips |
| US20190114262A1 (en) * | 2017-10-12 | 2019-04-18 | Arm Limited | Cache stashing in a data processing system |
| US20190129871A1 (en) * | 2017-11-02 | 2019-05-02 | Arm Limited | I/o driven data transfer in a data processing network |
| WO2019085649A1 (en) * | 2017-11-02 | 2019-05-09 | 华为技术有限公司 | Cache access method, multi-level cache system and computer system |
| EP3550437A1 (en) * | 2018-04-06 | 2019-10-09 | INTEL Corporation | Adaptive spatial access prefetcher apparatus and method |
| WO2019211610A1 (en) * | 2018-05-03 | 2019-11-07 | Arm Limited | HIGH-PERFORMANCE STREAMING OF ORDERED WRITE STASHES TO ENABLE OPTIMIZED DATA SHARING BETWEEN I/O MASTERS AND CPUs |
| US20200334153A1 (en) * | 2019-04-17 | 2020-10-22 | Chengdu Haiguang Integrated Circuit Design Co. Ltd. | Multi-Core Processing Device and Method of Transfering Data Between Cores Thereof |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2026033192A1 (en) * | 2024-08-09 | 2026-02-12 | Arm Limited | Technique for controlling stashing of data |
Also Published As
| Publication number | Publication date |
|---|---|
| CN116472521A (en) | 2023-07-21 |
| GB2616399A (en) | 2023-09-06 |
| GB202309698D0 (en) | 2023-08-09 |
| US11314645B1 (en) | 2022-04-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111344684B (en) | Multi-layer cache placement mechanism | |
| KR100567099B1 (en) | Method and apparatus for temporary storage of multiprocessor system using L2 directory | |
| KR100278328B1 (en) | Cache miss buffer | |
| KR100704089B1 (en) | Method and apparatus for acceleration of provisional load of multiprocessor system using L2 directory | |
| US11263137B2 (en) | Core-to-core cache stashing and target discovery | |
| JP4298800B2 (en) | Prefetch management in cache memory | |
| US6643747B2 (en) | Processing requests to efficiently access a limited bandwidth storage area | |
| US7194586B2 (en) | Method and apparatus for implementing cache state as history of read/write shared data | |
| JP5445581B2 (en) | Computer system, control method, recording medium, and control program | |
| CN101023414B (en) | Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches | |
| EP0185867A2 (en) | A memory hierarchy and its method of operation | |
| CN108009008A (en) | Data processing method and system, electronic equipment | |
| CN117609110A (en) | A caching method, cache, electronic device and readable storage medium | |
| JP2000250813A (en) | Data managing method for i/o cache memory | |
| JP4028875B2 (en) | System and method for managing memory | |
| CN1757018B (en) | Data processing system with prefetch device, data prefetch method | |
| JP2000235520A (en) | Method for managing cache data | |
| US20110320738A1 (en) | Maintaining Cache Coherence In A Multi-Node, Symmetric Multiprocessing Computer | |
| TWI793812B (en) | Microprocessor, cache storage system and method implemented therein | |
| US11681617B2 (en) | Cache victim selection based on completer determined cost in a data processing system | |
| US11314645B1 (en) | Cache stash relay | |
| JP2000285023A (en) | File control unit | |
| US10901691B2 (en) | System, method and apparatus for inter-process communication | |
| US20010032297A1 (en) | Cache memory apparatus and data processing system | |
| US7610458B2 (en) | Data processing system, processor and method of data processing that support memory access according to diverse memory models |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 21831083 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 202180078419.7 Country of ref document: CN |
|
| ENP | Entry into the national phase |
Ref document number: 202309698 Country of ref document: GB Kind code of ref document: A Free format text: PCT FILING DATE = 20211209 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2309698.5 Country of ref document: GB |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| WWP | Wipo information: published in national office |
Ref document number: 2309698.5 Country of ref document: GB |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 21831083 Country of ref document: EP Kind code of ref document: A1 |