WO2006044743A2 - Method and apparatus for initiating cpu data prefetches by an external agent - Google Patents
Method and apparatus for initiating cpu data prefetches by an external agent Download PDFInfo
- Publication number
- WO2006044743A2 WO2006044743A2 PCT/US2005/037165 US2005037165W WO2006044743A2 WO 2006044743 A2 WO2006044743 A2 WO 2006044743A2 US 2005037165 W US2005037165 W US 2005037165W WO 2006044743 A2 WO2006044743 A2 WO 2006044743A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- target
- agent
- cache
- prefetch
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- 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/6028—Prefetching based on hints or prefetch instructions
Definitions
- the present disclosure relates generally to memory access in a computing system and, more specifically, to initiating CPU data prefetches and preprocessing by an external agent to increase the performance of memory dependent operations.
- CPUs Central Processing Units
- CPUs typically implement prefetches in hardware in order to anticipatorily fetch data into the CPU caches. This helps in reducing the latency of a memory access when the program executing on the CPU actually requires the data. Due to the prefetch, the data can be found in cache with a latency that is usually much smaller than system memory access latency.
- Modern prefetching hardware tracks spatial and temporal access patterns of memory accesses and issues anticipatory requests to system memory on behalf of the CPU.
- prefetching hardware associated with a CPU normally cannot be invoked by an external agent such as another CPU, a chipset or an Input/Output (I/O) device.
- I/O Input/Output
- Figure 1 is a diagram illustrating a general computing system
- Figure 2 is a diagram of functional components of a computing system where an external agent may initiate CPU data prefetches
- Figure 3 is a diagram of a processor to which an external agent may initiate data prefetches
- Figure 4 is a table illustrating an example format of a prefetch directive used for initiating CPU data prefetches by an external agent in a computing system
- Figure 5 is a diagram illustrating one example computing system where an external agent may be allowed to initiate CPU data prefetches
- Figure 6 is a diagram illustrating another example computing system where an external agent may be allowed to initiate CPU data prefetches
- Figure 7 is a flow chart illustrating an example process of initiating CPU data prefetches by an external agent in a computing system.
- An embodiment of the present invention comprises a method and apparatus for initiating CPU data prefetches by an external agent.
- prefetching hardware in addition to software-implemented prefetching mechanisms, to anticipatorily fetch data into CPU caches.
- Such prefetching hardware can have data prefetched from a system memory into a CPU cache based on spatial and temporal access patterns of memory accesses.
- functions of prefetching hardware may be expanded so that it can be invoked by an external agent such as a chipset, an I/O device, and a CPU other than the one with which the prefetching hardware associated.
- the external agent may issue an independent message or "a prefetch directive" to the target CPU's prefetching hardware so that the new data may be prefetched into the target CPU's caches from the memory.
- a prefetch directive may be sent along with existing system interconnect transactions.
- the prefetch directive may be sent as a separate transaction.
- other functions such as preprocessing the new data in addition to prefetching the new data may also be invoked.
- FIG. 1 is a diagram illustrating a general computing system 100.
- the computing system 100 comprises a target CPU 110, a supporting platform 120, a memory 130, and at least one external agent 140.
- the target CPU may run a program that processes data from the external agent 140.
- the target CPU may be the only CPU or one of multiple CPUs in the computing system.
- the target CPU may comprise a cache 112 and a hardware prefetcher 114.
- the cache 112 is arranged such that the target CPU 110 can access data from this cache more efficiently than accessing the same data from the memory 130 (e.g., cache access latency is much smaller than memory access latency).
- the hardware prefetcher 114 may send a request to the memory 130 to anticipatorily fetch data into the cache 112 on behalf of the target CPU 110.
- the hardware prefetcher may issue prefetch requests based on predictable spatial and temporal access patterns of memory access by the target CPU.
- the cache 112 and the hardware prefetcher 114 are shown to be within the target CPU 110 in Figure 1 , they may be separate from each other and either of them or both may be separate from the target CPU.
- the external agent 140 may comprise another CPU in a multiple CPU system, and/or other devices such as a chipset and an I/O device.
- the external agent may provide data that is needed by a program running on the target CPU 110.
- the supporting platform 120 may provide necessary interfaces between the target CPU 110, the memory 130, and the external agents 140.
- the supporting platform may comprise a memory controller 125 to handle the I/O of data going to and from the memory 130.
- the supporting platform may also comprise an interface component (not shown in the figure) to facilitate data traffic between the memory and the external agent.
- the memory 130 may store data (including sequences of instructions) that is used by the target CPU 110 or any other device included in the system 100. Access information located in the memory 130 may be relatively slow (e.g., high latency) compared with access information located in the cache 112 by the target CPU 110.
- the computing system 100 may run a cache coherency protocol under which when an external agent has new data, the external agent invalidates all copies of data that has the same memory address as the new data in all CPU's caches, including the target CPU's cache 112, and writes the new data to the memory 130 (this protocol may be called the Write-lnvalidate protocol).
- this protocol may be called the Write-lnvalidate protocol.
- a program running on the target CPU 110 cannot expect to find the data in its cache 112 (i.e., incurs cache misses) and has to obtain the data from the memory whenever the program needs the data. Because memory access latency is typically much higher than cache access latency, the performance of the program running on the target CPU may suffer.
- One approach to avoiding cache misses of data from an external agent is to allow the external agent to initiate data prefetches on behalf of the target CPU 110.
- the external agent may invoke the hardware prefetcher 114 by sending a prefetch directive.
- the hardware prefetcher may issue a memory request to prefetch the new data from the memory 130 and place it into the cache 112.
- DCA direct cache access
- the prefetch directive may be sent along with existing system interconnect transactions such as snoop transactions.
- the prefetch directive may be sent as a separate transaction.
- Figure 2 is a diagram of functional components of a computing system where an external agent may initiate CPU data prefetches.
- the target agent 210 may be a CPU or a processor and it may run a program that needs data from the DCA source agent 260.
- the target agent has faster and more efficient access to the target cache 220 than access to the memory 250.
- the target agent comprises a hardware prefetcher 215.
- the hardware prefetcher 215 may anticipate subsequent memory accesses, based on past spatial and temporal memory access patterns by the target agent 210, and issue memory requests to prefetch data into the target cache 220.
- the hardware prefetcher may also be invoked by the DCA source agent 260 so that new data received or generated by the DCA source agent may be prefetched into the target cache.
- the target cache 220 stores at least a portion of data needed by programs running on the target agent.
- the target cache may be associated with the target agent.
- the target cache may be any cache in the system.
- the target cache is implemented such that the target agent can access data from this cache more efficiently than accessing the same data from the memory 250.
- the target agent 210, the hardware prefetcher 215, and the target cache 220 may be physically separated from each other. In another embodiment, these three components may be physically coupled to each other. In another embodiment, any two of them may be physically coupled to each other but physically separated from the third one. Yet in another embodiment, either the hardware prefetcher 215 or the target cache 220, or both may physically be a part of the target agent 210.
- the requesting agent 230 may be a CPU or a processor running an operating system (OS) or equivalent software that will or is highly likely to process the new data 270 and has knowledge of properties of the new data.
- the properties of the new data may comprise a memory address and DCA preferences.
- the memory address indicates where data from an I/O device or other devices is placed in memory.
- DCA preferences may include a DCA enablement indicator, a target identifier and target cache placement attributes.
- the DCA enablement indicator indicates that the new data from the DCA source agent can be prefetched into a cache of a target agent; the target identifier identifies the cache of the target agent; and target placement attributes indicate how the new data is placed in the cache of the target agent.
- the requesting agent may be different from or the same as the target agent.
- the routing support platform 240 provides the necessary support for DCA transactions to route data to the target cache 220 and also to ensure coherency between the target cache and the memory 250.
- the routing support platform may be a chipset that bridges DCA source agents (e.g., DCA source agent 260) and CPUs (e.g., target agent 210).
- the routing support platform 240 may comprise a memory controller to handle the I/O of data going to and from the memory 250.
- the memory 250 may store data (including sequences of instructions) that are used by the target agent 210, the DCA source agent 260 and/or any other device included in the system.
- the memory controller may be a part of the routing support platform.
- the memory controller may be a part of the target agent.
- the routing support platform may be separated from the DCA source agent, but they may also be combined or coupled together.
- a chipset may also be a source of new data and may also initiate data prefetches to a cache of a target agent.
- the computing system shown in Figure 2 may comprise a DCA source agent 260. Although Figure 2 only shows one DCA source agent, there may be multiple more DCA source agents in the computing system.
- the DCA source agent 260 may comprise an I/O adapter, a network interface controller, or a disk adapter.
- the requesting agent 230 sends properties of the new data to the DCA source agent for the DCA source agent to use when it has new data 270. If the DCA enablement indicator indicates that the DCA function is enabled, the DCA source agent may directly send the new data to the target cache 220 while maintaining the coherency among different caches in the system in one embodiment.
- the routing support platform 240 acting on behalf of the DCA source agent may initiate coherency transactions such as snoops to ensure that all copies of data having the same memory address as the new data in all CPU caches, including the target cache 220, are invalidated ("invalidate transaction").
- the CPU's response to an invalidate transaction depends on the state of the cache line (where the copy of data having the same memory address as the new data is placed) in its caches. If the cache line is in a Modified (M) state in any of the CPU's caches, then the data is evicted (write-back) from the CPU caches to the memory.
- M Modified
- the memory controller merges the CPU write-back with the write transaction (for writing the new data from the DCA source agent to the memory) and sends the merged data to the memory. If the write transaction is a full cache-line write, then the CPU write-back can be ignored. If the write transaction is a partial cache-line transaction, then it is merged with the full cache-line evicted by the CPU. The CPU write-back may not occur if the cache line is not found to be in the M state in a CPU's cache.
- the DCA source agent may also create a prefetch directive encoding the DCA preferences received from the requesting agent and issue the prefetch directive to all CPUs with the help from the routing support platform 240.
- the prefetch directive may be sent along with the invalidate transaction. In another embodiment, the prefetch directive may be sent as a separate independent transaction.
- the hardware prefetcher 215, associated with the target agent receives and recognizes the prefetch directive, the hardware prefetcher may issue a request to the memory to prefetch the new data 270 to the target cache 220 according the DCA preferences of the new data. Thereafter, the target agent may read the new data directly from the target cache rather than from the memory for a running program, and thus reduce data read latency and improve the performance of the running program.
- the hardware prefetcher 215 may pre-process the new data prior to making the data available in the target cache 220, according to instructions of the prefetch directive. Instructions to pre-process the data may be encoded in the DCA preferences which are a part of the prefetch directive.
- the pre-processing selection provides flexibility in converting the prefetched data into a new format before delivering the data to a cache.
- Such pre-processing may comprise any type of data processing such as, for example, decoding, decompressing, decrypting, etc.
- Figure 3 is a diagram of a processor 300 which may act as a target agent 210 as shown in Figure 2.
- the processor 300 may also act as an external agent (e.g., in a multiple processor computing system).
- the processor 300 may comprise one or more processing cores (not shown in Figure 3). Each processing core may have its own cache associated with it, or more than one processing cores may share one or more caches.
- a cache for a processing core may be physically integrated with the processing core and located within the processor 300.
- a cache for a processing core may be physically separate from the processing core and may be located inside or outside the processor 300.
- the processor 300 may comprise a hardware prefetcher 310.
- the hardware prefetcher 310 may anticipate subsequent memory accesses, based on past spatial and temporal memory access patterns by processing cores of the processor 300, and issue memory requests to prefetch data into a cache of a requesting processing core.
- the processor 300 may also comprise a prefetch directive receiving mechanism 330 to recognize and receive a prefetch directive issued by an external agent (e.g., a DCA source agent 260 as shown in Figure 2) when the external agent has new data needed by one or more processing cores in the processor 300, when the processor 300 acts as a target agent.
- the prefetch directive may be sent to the processor 300 along with an invalidate transaction or as a separate transaction.
- the prefetch directive may be passed to a prefetch directive decoding mechanism 340 to decode information included in the prefetch directive.
- a prefetch directive may comprise at least a memory address and a destination (e.g., a specific processing core's cache) of data to be prefetched.
- the prefetch directive decoding mechanism may pass the decoded information to the hardware prefetcher 310 so that the hardware prefetcher may prefetch the data from the memory into the receiving cache based on the memory address and the destination information provided by the prefetch directive decoding mechanism 320.
- the prefetch directive may also include information to require that the prefetched data be first preprocessed (e.g., decrypting, decoding, decompressing, downsampling, etc.) before delivering the data to the receiving cache.
- the processor may comprise a preprocessing mechanism 320 to pre-process the prefetched data according to information included in the prefetch directive.
- the processor 300 may also comprise a prefetch directive sending mechanism 350 to send a prefetch directive to a target agent when the processor 300 acts as an external agent which has new data that is needed by the target agent.
- the prefetch directive may be sent to the target agent along with a coherency transaction (e.g., invalidate) or as a separate transaction.
- the processor 300 may further comprise a mechanism to create a prefetch directive when the processor has new data which needs to be sent to a cache of a target agent.
- Figure 4 is a table illustrating an example format of a prefetch directive used for initiating CPU data prefetches by an external agent in a computing system.
- a prefetch directive may comprise multiple fields (e.g., 6 fields in this example).
- Field 410 may include a message opcode to identify a message as a prefetch directive.
- Field 420 may include a memory address, which is the base address from which data is to be prefetched.
- Field 420 may also include the length of data, which is the number of bytes that is to be prefetched starting from the base address. The length of data may be optional since a default value (e.g., a single cache line) may be used.
- Field 430 may include routing information, which may involve an identification of a target cache or a target processing core in a target agent ("target ID") and any other information to permit the system to route the prefetch directive to the target.
- Field 440 may include optional priority information of the prefetch request issued by a hardware prefetcher.
- Field 450 may include optional cache attributes, which may permit selection of a cache level if a hierarchy is present and may also control how the prefetched block of data will replace existing data in the cache and the state of the new blocks after brought into the cache.
- Field 460 may include optional pre-processing instructions, which instruct a hardware prefetcher to initiate required pre-processing before delivering the data into a cache.
- prefetch directive as shown in Figure 4 may comprise six fields, the number of fields, the size of each field, and interpretation of each field may depend on each implementation. A person of ordinary skill in the art may readily come up with modified formats for specific implementations, which are deemed to lie within the spirit and scope of this disclosed example.
- FIG. 5 is a diagram illustrating one example computing system 500 where an external agent may be allowed to initiate CPU data prefetches.
- the computing system 500 comprises N processors (where N is a positive integer), 510A 510N, a chipset 520, a system memory 550, a Peripheral Component Interconnect (PCI) bus 560, and at least one I/O device 570 connected to the PCI bus.
- Each processor e.g., 510A
- Each processing core may run a program which needs data from another processor (e.g., processor 510N) and/or other devices (e.g., I/O device 570).
- each processing core may have its own cache such as 514A, 514B, ..., 512M as shown in the figure. In another embodiment, some or all of the processing cores may share a cache. Typically, a processing core can access data in its cache more efficiently than it accesses data in the system memory 550.
- Each processor e.g., 510A
- may also comprise a hardware prefetcher e.g., 516 for processor 510A to anticipatorily fetch data from the system memory to a cache associated with one or more of its processing core(s) based on spatial and temporal memory access patterns by this/these processing core(s).
- the chipset 520 may further comprise a memory controller hub (MCH) 530 and an I/O controller hub (ICH) 540.
- the MCH 530 may include a memory controller 532 that is coupled to a system memory 550 to control traffic to/from the system memory.
- the system memory 550 may store data, including sequences of instructions that are executed by processors or any other device included in the system 500.
- the MCH 530 may be coupled to the ICH 540 via a hub interface.
- the ICH 540 provides an interface to input/output (I/O) devices in the system.
- the ICH 540 may include a PCI bridge 542 that provides an interface to a Peripheral Component Interconnect (PCI) bus 560.
- PCI Peripheral Component Interconnect
- the PCI Bridge 542 may provide a data path between the processor 510 and I/O devices 570 (e.g., an audio device and a disk drive). Although not shown, other devices may also be coupled to the PCI bus 560 and the ICH 540.
- a hardware prefetcher of a processor e.g., 516 inside processor 510A
- an external agent e.g., another processor and/or an I/O device.
- the external agent may send a prefetch directive to all processors.
- the prefetch directive encodes the identification of the target processing core ("target core ID").
- the target core ID is included in properties of the new data, which are sent to the external agent by a requesting agent.
- the requesting agent may be the same as the target core or any other processing cores inside a processor, which is the same as or different from the one where the target core is located.
- the requesting agent may run an operating system (OS) or other software and has the knowledge of how the new data is to be routed and processed.
- OS operating system
- target hardware prefetcher receives the prefetch directive and recognizes the identification of the target processing core, it issues a request to the system memory to prefetch the new data to the cache associated with the target processing core.
- Using a prefetch directive allows direct local cache access by an external agent.
- the target processing core may read the new data directly from its cache instead of the system memory.
- a prefetch directive may instruct a hardware prefetcher to first pre-process the new data before delivering it into the target cache.
- a processor e.g., 510A
- the chipset 520 may be connected through a front side bus (FSB) 580.
- Direct access to a cache by an external agent may be supported on the FSB by extending the existing Bus-Read-lnvalidate-Line (BRIL) transaction protocol.
- An FSB agent e.g., a processor, a chipset, or an I/O device
- a non-zero length BRIL is used by an agent to read a full cache-line from its current location (either a processor's cache or the system memory) into the agent's cache with the cache state in Exclusive.
- a zero length BRIL (BRIL.O or BIL) is used by an agent that already has the cache-line in a shared state and the agent now intends to modify the cache line.
- BIL transactions may also be used by the chipset to invalidate previous copies of the cache lines in processor caches, when I/O devices write to cache coherent memory.
- a prefetch directive may be sent along with a BIL transaction ("modified BlL transaction").
- a prefetch directive may be sent as an interconnection transaction separate from the FSB protocol. Using this alternative approach, a prefetch directive may be sent at any time between the time when an external agent has new data and the time when the new data is read by a target core of a processor.
- FIG. 6 is a diagram illustrating another example computing system 600 where an external agent may be allowed to initiate CPU data prefetches.
- the computing system 600 comprises two processors 610A and 610B, an I/O hub (IOH) 630, memories 620A and 620B, a Peripheral Component Interconnect (PCI) bus 660, and at least one I/O device 650 connected to the PCI bus.
- Each processor e.g., 610A
- Each processing core may run a program which needs data from another processor (e.g., processor 610B) and/or other devices (e.g., I/O device 650).
- each processing core may have its own cache such as 613A, 613B
- processing cores may share a cache.
- a processing core can access data in its cache more efficiently than it accesses data in the memory 620A or 620B.
- Each processor e.g., 610A
- a processor may further comprise a memory controller (e.g., 619) coupled to a memory (e.g., 620A) to control traffic to/from the memory. Additionally, a processor may comprise a link interface 617 to provide point-to-point connections between the processor and the IOH 630. Although the figure only shows two processors, the system 600 may comprise only one processor or more than two processors.
- the memories 620A and 620B both store data, including sequences of instructions that are executed by processors or any other device included in the system 600.
- the IOH 630 provides an interface to input/output (I/O) devices in the system.
- the IOH may be coupled to a Peripheral Component Interconnect (PCI) bus 660.
- the I/O device 650 may be connected to the PCI bus.
- PCI Peripheral Component Interconnect
- other devices may also be coupled to the PCI bus and the ICH.
- a hardware prefetcher of a processor may also be invoked by an external agent (e.g., another processor and/or an I/O device) to allow direct access to a local cache by the external agent through the use of a prefetch directive.
- an external agent e.g., another processor and/or an I/O device
- Such direct access may be supported on the point-to-point connections between the processors and the IOH by modifying point-to-point connection based coherency transactions so that a prefetch directive may be sent along with such transactions (e.g., an invalidate transaction).
- a prefetch directive may be sent as an interconnection transaction separate from the point-to-point connection based coherency protocol.
- FIG. 7 is a flow chart illustrating an example process of initiating CPU data prefetches by an external agent in a computing system.
- a target agent e.g., a processing core in a processor
- the DCA source agent may receive or generate new data.
- a requesting agent may send the DCA source agent properties of the new data including a memory address and DCA preferences.
- a prefetch directive encoding the DCA preferences of the new data may be created and sent to the target agent as well as other processors by the DCA source agent.
- the prefetch directive may be sent along with an invalidate transaction, which is part of cache coherency transactions.
- the prefetch directive may be sent along with an invalidate transaction as a hint. The hint will be received and recognized by the hardware prefetcher associated with the target agent so that the hardware prefetcher may issue a prefetch request to the system memory.
- the prefetch directive may be sent as a separate transaction. Since the prefetch directive has information about the target agent, the prefetch directive, as a separate transaction, may be sent directly to the target agent. Additionally, the prefetch directive, as a separate transaction, may be sent at any time after the DCA agent has the new data and before the target agent reads the new data.
- the prefetch directive may be received and recognized by the hardware prefetcher associated with the target agent.
- copies of data, which have the same memory address as the new data in the DCA source agent, in all coherency caches may be discarded or written back to the memory.
- Memory write back occurs when the write transaction (for writing the new data from the DCA source agent to the memory) is a partial cache-line transaction and the data in the cache is in modified state. In this situation, the write transaction is merged with the full cache-line evicted by the CPU.
- the new data may be written to the memory. The new data may be merged with the data evicted from a target cache and the merged data is written to the memory.
- the hardware prefetcher associated with the target agent may issue a request to the memory to prefetch the new data (or merged data) to the target cache. If the prefetch directive includes preprocessing instructions, the new data (or merged data) is preprocessed according to the instructions before being delivered into the target cache. In block 780, the target agent may read the new data (or merged data) from the target cache.
- blocks in Figure 7 are shown in this specific order, such an order is used only for the convenience of illustration.
- the order of the blocks may be different.
- the prefetch directive may be created and sent as a separate transaction, it may be sent at any time before the new data is read by the target agent (but after the DCA agent has the new data).
- the target agent may execute the program through the entire process shown in Figure 3 without limited to block 710 only.
- blocks in Figure 3 may be combined, split, or re-ordered to achiever the same result.
- the disclosed techniques may have various design representations or formats for simulation, emulation, and fabrication of a design.
- Data representing a design may represent the design in a number of manners.
- the hardware may be represented using a hardware description language or another functional description language which essentially provides a computerized model of how the designed hardware is expected to perform.
- the hardware model may be stored in a storage medium such as a computer memory so that the model may be simulated using simulation software that applies a particular test suite to the hardware model to determine if it indeed functions as intended.
- the simulation software is not recorded, captured, or contained in the medium.
- a circuit level model with logic and/or transistor gates may be produced at some stages of the design process.
- This model may be similarly simulated, sometimes by dedicated hardware simulators that form the model using programmable logic. This type of simulation, taken a degree further, may be an emulation technique.
- re-configurable hardware is another embodiment that may involve a machine readable medium storing a model employing the disclosed techniques.
- most designs, at some stage, reach a level of data representing the physical placement of various devices in the hardware model.
- the data representing the hardware model may be the data specifying the presence or absence of various features on different mask layers for masks used to produce the integrated circuit. Again, this data representing the integrated circuit embodies the techniques disclosed in that the circuitry or logic in the data can be simulated or fabricated to perform these techniques.
- the data may be stored in any form of a computer readable medium or device (e.g., hard disk drive, floppy disk drive, read only memory (ROM), CD-ROM device, flash memory device, digital versatile disk (DVD), or other storage device).
- a computer readable medium or device e.g., hard disk drive, floppy disk drive, read only memory (ROM), CD-ROM device, flash memory device, digital versatile disk (DVD), or other storage device.
- Embodiments of the disclosed techniques may also be considered to be implemented as a machine-readable storage medium storing bits describing the design or the particular part of the design.
- the storage medium may be sold in and of itself or used by others for further design or fabrication. While this disclosure has been described with reference to illustrative embodiments, this description is not intended to be construed in a limiting sense.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
Description
Claims
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/966,231 | 2004-10-15 | ||
| US10/966,231 US7360027B2 (en) | 2004-10-15 | 2004-10-15 | Method and apparatus for initiating CPU data prefetches by an external agent |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| WO2006044743A2 true WO2006044743A2 (en) | 2006-04-27 |
| WO2006044743A3 WO2006044743A3 (en) | 2006-08-17 |
Family
ID=35515631
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2005/037165 Ceased WO2006044743A2 (en) | 2004-10-15 | 2005-10-13 | Method and apparatus for initiating cpu data prefetches by an external agent |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US7360027B2 (en) |
| KR (1) | KR100958967B1 (en) |
| CN (2) | CN100514282C (en) |
| TW (1) | TWI305881B (en) |
| WO (1) | WO2006044743A2 (en) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2006124348A3 (en) * | 2005-05-13 | 2007-01-25 | Intel Corp | Dma reordering for dca |
| US8234458B2 (en) | 2008-12-09 | 2012-07-31 | Nvidia Corporation | System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message |
| WO2013108070A1 (en) * | 2011-12-13 | 2013-07-25 | Ati Technologies Ulc | Mechanism for using a gpu controller for preloading caches |
Families Citing this family (61)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7296129B2 (en) | 2004-07-30 | 2007-11-13 | International Business Machines Corporation | System, method and storage medium for providing a serialized memory interface with a bus repeater |
| US7539800B2 (en) | 2004-07-30 | 2009-05-26 | International Business Machines Corporation | System, method and storage medium for providing segment level sparing |
| US7389375B2 (en) | 2004-07-30 | 2008-06-17 | International Business Machines Corporation | System, method and storage medium for a multi-mode memory buffer device |
| US7443848B2 (en) * | 2004-09-29 | 2008-10-28 | Intel Corporation | External device-based prefetching mechanism |
| US7356737B2 (en) * | 2004-10-29 | 2008-04-08 | International Business Machines Corporation | System, method and storage medium for testing a memory module |
| US20060095620A1 (en) * | 2004-10-29 | 2006-05-04 | International Business Machines Corporation | System, method and storage medium for merging bus data in a memory subsystem |
| US7331010B2 (en) * | 2004-10-29 | 2008-02-12 | International Business Machines Corporation | System, method and storage medium for providing fault detection and correction in a memory subsystem |
| US7299313B2 (en) * | 2004-10-29 | 2007-11-20 | International Business Machines Corporation | System, method and storage medium for a memory subsystem command interface |
| US7305574B2 (en) | 2004-10-29 | 2007-12-04 | International Business Machines Corporation | System, method and storage medium for bus calibration in a memory subsystem |
| US7277988B2 (en) * | 2004-10-29 | 2007-10-02 | International Business Machines Corporation | System, method and storage medium for providing data caching and data compression in a memory subsystem |
| US7441060B2 (en) * | 2004-10-29 | 2008-10-21 | International Business Machines Corporation | System, method and storage medium for providing a service interface to a memory system |
| US7395476B2 (en) * | 2004-10-29 | 2008-07-01 | International Business Machines Corporation | System, method and storage medium for providing a high speed test interface to a memory subsystem |
| US7512762B2 (en) | 2004-10-29 | 2009-03-31 | International Business Machines Corporation | System, method and storage medium for a memory subsystem with positional read data latency |
| US7356456B1 (en) * | 2004-11-12 | 2008-04-08 | Paravirtual Corporation | Computer storage exception handing apparatus and method for virtual hardware system |
| US7437517B2 (en) * | 2005-01-11 | 2008-10-14 | International Business Machines Corporation | Methods and arrangements to manage on-chip memory to reduce memory latency |
| US7478259B2 (en) | 2005-10-31 | 2009-01-13 | International Business Machines Corporation | System, method and storage medium for deriving clocks in a memory system |
| US7685392B2 (en) | 2005-11-28 | 2010-03-23 | International Business Machines Corporation | Providing indeterminate read data latency in a memory system |
| JP2007241612A (en) * | 2006-03-08 | 2007-09-20 | Matsushita Electric Ind Co Ltd | Multi-master system |
| US7681047B2 (en) * | 2006-04-18 | 2010-03-16 | International Business Machines Corporation | Decryption of data in storage systems |
| US7636813B2 (en) * | 2006-05-22 | 2009-12-22 | International Business Machines Corporation | Systems and methods for providing remote pre-fetch buffers |
| US7640386B2 (en) * | 2006-05-24 | 2009-12-29 | International Business Machines Corporation | Systems and methods for providing memory modules with multiple hub devices |
| US7594055B2 (en) | 2006-05-24 | 2009-09-22 | International Business Machines Corporation | Systems and methods for providing distributed technology independent memory controllers |
| US7584336B2 (en) * | 2006-06-08 | 2009-09-01 | International Business Machines Corporation | Systems and methods for providing data modification operations in memory subsystems |
| US7493439B2 (en) | 2006-08-01 | 2009-02-17 | International Business Machines Corporation | Systems and methods for providing performance monitoring in a memory system |
| US7669086B2 (en) * | 2006-08-02 | 2010-02-23 | International Business Machines Corporation | Systems and methods for providing collision detection in a memory system |
| US7581073B2 (en) | 2006-08-09 | 2009-08-25 | International Business Machines Corporation | Systems and methods for providing distributed autonomous power management in a memory system |
| US7587559B2 (en) | 2006-08-10 | 2009-09-08 | International Business Machines Corporation | Systems and methods for memory module power management |
| US7490217B2 (en) | 2006-08-15 | 2009-02-10 | International Business Machines Corporation | Design structure for selecting memory busses according to physical memory organization information stored in virtual address translation tables |
| US7539842B2 (en) | 2006-08-15 | 2009-05-26 | International Business Machines Corporation | Computer memory system for selecting memory buses according to physical memory organization information stored in virtual address translation tables |
| US7555597B2 (en) * | 2006-09-08 | 2009-06-30 | Intel Corporation | Direct cache access in multiple core processors |
| US7870459B2 (en) | 2006-10-23 | 2011-01-11 | International Business Machines Corporation | High density high reliability memory module with power gating and a fault tolerant address and command bus |
| US7477522B2 (en) | 2006-10-23 | 2009-01-13 | International Business Machines Corporation | High density high reliability memory module with a fault tolerant address and command bus |
| US7721140B2 (en) | 2007-01-02 | 2010-05-18 | International Business Machines Corporation | Systems and methods for improving serviceability of a memory system |
| US7606988B2 (en) * | 2007-01-29 | 2009-10-20 | International Business Machines Corporation | Systems and methods for providing a dynamic memory bank page policy |
| US7603526B2 (en) | 2007-01-29 | 2009-10-13 | International Business Machines Corporation | Systems and methods for providing dynamic memory pre-fetch |
| US7937532B2 (en) * | 2007-03-30 | 2011-05-03 | Intel Corporation | Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine |
| GB2454809B (en) * | 2007-11-19 | 2012-12-19 | St Microelectronics Res & Dev | Cache memory system |
| GB0722707D0 (en) * | 2007-11-19 | 2007-12-27 | St Microelectronics Res & Dev | Cache memory |
| US7958313B2 (en) * | 2007-12-18 | 2011-06-07 | International Business Machines Corporation | Target computer processor unit (CPU) determination during cache injection using input/output (I/O) adapter resources |
| US8510509B2 (en) * | 2007-12-18 | 2013-08-13 | International Business Machines Corporation | Data transfer to memory over an input/output (I/O) interconnect |
| US8064307B2 (en) * | 2008-09-16 | 2011-11-22 | Emt Co., Ltd. | Reproducing device, reproducing method and program used in the same |
| US8886760B2 (en) * | 2009-06-30 | 2014-11-11 | Sandisk Technologies Inc. | System and method of predictive data acquisition |
| US8984228B2 (en) * | 2011-12-13 | 2015-03-17 | Intel Corporation | Providing common caching agent for core and integrated input/output (IO) module |
| US8539506B2 (en) * | 2012-02-09 | 2013-09-17 | Microsoft Corporation | Dynamic injection of code into running process |
| CN104035888B (en) * | 2014-06-11 | 2017-08-04 | 华为技术有限公司 | A kind of data cached method and storage device |
| US10078589B2 (en) * | 2015-04-30 | 2018-09-18 | Arm Limited | Enforcing data protection in an interconnect |
| CN106302234B (en) * | 2015-06-24 | 2019-03-19 | 龙芯中科技术有限公司 | Network packet transfer approach, ethernet controller, cache and system |
| KR102179237B1 (en) * | 2016-01-22 | 2020-11-16 | 주식회사 소니 인터랙티브 엔터테인먼트 | CPUID spoofing for backwards compatibility |
| US10073775B2 (en) * | 2016-04-01 | 2018-09-11 | Intel Corporation | Apparatus and method for triggered prefetching to improve I/O and producer-consumer workload efficiency |
| CN107544937A (en) * | 2016-06-27 | 2018-01-05 | 深圳市中兴微电子技术有限公司 | A kind of coprocessor, method for writing data and processor |
| GB2567466B (en) * | 2017-10-12 | 2020-01-22 | Advanced Risc Mach Ltd | Cache stashing in a data processing system |
| US10366027B2 (en) * | 2017-11-29 | 2019-07-30 | Advanced Micro Devices, Inc. | I/O writes with cache steering |
| US10664273B2 (en) * | 2018-03-30 | 2020-05-26 | Intel Corporation | Delayed prefetch manager to multicast an updated cache line to processor cores requesting the updated data |
| EP3835959B1 (en) | 2018-08-24 | 2024-10-30 | Huawei Technologies Co., Ltd. | Data pre-fetching method and device |
| US10860487B2 (en) * | 2019-04-17 | 2020-12-08 | Chengdu Haiguang Integrated Circuit Design Co. Ltd. | Multi-core processing device and method of transferring data between cores thereof |
| CN115858409A (en) * | 2021-09-23 | 2023-03-28 | 华为技术有限公司 | Data prefetching method, computing node and storage system |
| US20240211366A1 (en) * | 2022-12-21 | 2024-06-27 | Akeana, Inc. | Processor performance profiling using agents |
| CN116015613B (en) * | 2023-01-05 | 2026-02-27 | 苏州盛科通信股份有限公司 | Message processing methods, apparatus, electronic devices and computer-readable storage media |
| CN117707625B (en) * | 2024-02-05 | 2024-05-10 | 上海登临科技有限公司 | Computing unit, method and corresponding graphics processor supporting multiple instruction issuance |
| WO2025184895A1 (en) * | 2024-03-08 | 2025-09-12 | Intel Corporation | Hardware prefetch improvements for large language model inference accuracy |
| CN119292768B (en) * | 2024-09-13 | 2025-11-14 | 山东云海国创云计算装备产业创新中心有限公司 | A chip configuration method, apparatus, computer device, and storage medium |
Family Cites Families (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5371870A (en) * | 1992-04-24 | 1994-12-06 | Digital Equipment Corporation | Stream buffer memory having a multiple-entry address history buffer for detecting sequential reads to initiate prefetching |
| US6473832B1 (en) * | 1999-05-18 | 2002-10-29 | Advanced Micro Devices, Inc. | Load/store unit having pre-cache and post-cache queues for low latency load memory operations |
| US6460115B1 (en) * | 1999-11-08 | 2002-10-01 | International Business Machines Corporation | System and method for prefetching data to multiple levels of cache including selectively using a software hint to override a hardware prefetch mechanism |
| US6711651B1 (en) * | 2000-09-05 | 2004-03-23 | International Business Machines Corporation | Method and apparatus for history-based movement of shared-data in coherent cache memories of a multiprocessor system using push prefetching |
| US6957305B2 (en) * | 2002-08-29 | 2005-10-18 | International Business Machines Corporation | Data streaming mechanism in a microprocessor |
| US6922753B2 (en) * | 2002-09-26 | 2005-07-26 | International Business Machines Corporation | Cache prefetching |
| US20040117606A1 (en) * | 2002-12-17 | 2004-06-17 | Hong Wang | Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information |
| US8533401B2 (en) * | 2002-12-30 | 2013-09-10 | Intel Corporation | Implementing direct access caches in coherent multiprocessors |
| US7010666B1 (en) * | 2003-01-06 | 2006-03-07 | Altera Corporation | Methods and apparatus for memory map generation on a programmable chip |
| US20040199727A1 (en) * | 2003-04-02 | 2004-10-07 | Narad Charles E. | Cache allocation |
| US7231470B2 (en) * | 2003-12-16 | 2007-06-12 | Intel Corporation | Dynamically setting routing information to transfer input output data directly into processor caches in a multi processor system |
| US8281079B2 (en) * | 2004-01-13 | 2012-10-02 | Hewlett-Packard Development Company, L.P. | Multi-processor system receiving input from a pre-fetch buffer |
| US20050246500A1 (en) * | 2004-04-28 | 2005-11-03 | Ravishankar Iyer | Method, apparatus and system for an application-aware cache push agent |
| US7366845B2 (en) | 2004-06-29 | 2008-04-29 | Intel Corporation | Pushing of clean data to one or more processors in a system having a coherency protocol |
| US8255591B2 (en) * | 2004-09-23 | 2012-08-28 | International Business Machines Corporation | Method and system for managing cache injection in a multiprocessor system |
| US20060095679A1 (en) * | 2004-10-28 | 2006-05-04 | Edirisooriya Samantha J | Method and apparatus for pushing data into a processor cache |
| US7246205B2 (en) * | 2004-12-22 | 2007-07-17 | Intel Corporation | Software controlled dynamic push cache |
-
2004
- 2004-10-15 US US10/966,231 patent/US7360027B2/en not_active Expired - Fee Related
-
2005
- 2005-10-07 TW TW094135257A patent/TWI305881B/en not_active IP Right Cessation
- 2005-10-13 WO PCT/US2005/037165 patent/WO2006044743A2/en not_active Ceased
- 2005-10-13 CN CNB2005800331573A patent/CN100514282C/en not_active Expired - Fee Related
- 2005-10-13 CN CN2009101328188A patent/CN101697118B/en not_active Expired - Fee Related
- 2005-10-13 KR KR1020077007398A patent/KR100958967B1/en not_active Expired - Fee Related
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2006124348A3 (en) * | 2005-05-13 | 2007-01-25 | Intel Corp | Dma reordering for dca |
| US8234458B2 (en) | 2008-12-09 | 2012-07-31 | Nvidia Corporation | System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message |
| US20120290796A1 (en) * | 2008-12-09 | 2012-11-15 | Brian Keith Langendorf | System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message |
| US8782349B2 (en) * | 2008-12-09 | 2014-07-15 | Nvidia Corporation | System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message |
| WO2013108070A1 (en) * | 2011-12-13 | 2013-07-25 | Ati Technologies Ulc | Mechanism for using a gpu controller for preloading caches |
| US9239793B2 (en) | 2011-12-13 | 2016-01-19 | Ati Technologies Ulc | Mechanism for using a GPU controller for preloading caches |
Also Published As
| Publication number | Publication date |
|---|---|
| CN101036118A (en) | 2007-09-12 |
| WO2006044743A3 (en) | 2006-08-17 |
| TW200634621A (en) | 2006-10-01 |
| CN100514282C (en) | 2009-07-15 |
| US20060085602A1 (en) | 2006-04-20 |
| CN101697118B (en) | 2013-06-19 |
| KR20070059127A (en) | 2007-06-11 |
| CN101697118A (en) | 2010-04-21 |
| US7360027B2 (en) | 2008-04-15 |
| TWI305881B (en) | 2009-02-01 |
| KR100958967B1 (en) | 2010-05-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7360027B2 (en) | Method and apparatus for initiating CPU data prefetches by an external agent | |
| US20060095679A1 (en) | Method and apparatus for pushing data into a processor cache | |
| CN101322103B (en) | Unconstrained transactional memory system and method thereof | |
| JP4170218B2 (en) | Method and apparatus for improving the throughput of a cache-based embedded processor by switching tasks in response to a cache miss | |
| US9251083B2 (en) | Communicating prefetchers in a microprocessor | |
| US6321326B1 (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
| US8543765B2 (en) | Efficient data prefetching in the presence of load hits | |
| US9483406B2 (en) | Communicating prefetchers that throttle one another | |
| KR20040045035A (en) | Memory access latency hiding with hint buffer | |
| CN106537362A (en) | Data processing device and method for processing address translation in a data processing device | |
| CN101088076A (en) | Predictive early write-back of owned cache blocks in a shared memory computer system | |
| KR20040041550A (en) | Using type bits to track storage of ecc and predecode bits in a level two cache | |
| US20080133844A1 (en) | Method and apparatus for extending local caches in a multiprocessor system | |
| JP7700219B2 (en) | Disable prefetching of memory requests targeting data with low locality | |
| CN114661357A (en) | System, apparatus, and method for prefetching physical pages in a processor | |
| US7028144B2 (en) | Method and apparatus for an in-situ victim cache | |
| CN115956237A (en) | Method for performing atomic memory operations when raced | |
| CN119201234A (en) | Instruction processing method, processor and electronic device | |
| US20080263279A1 (en) | Design structure for extending local caches in a multiprocessor system | |
| CN100461092C (en) | Microprocessor and method for selectively executing prefetching instructions | |
| CN104809080B (en) | Mutual throttling communication prefetcher | |
| CN113641403B (en) | Microprocessor and method implemented in microprocessor | |
| JP2024538196A (en) | Cache Line Coherence State Upgrade | |
| TW202540859A (en) | Hierarchical trace cache |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KP KR KZ LC LK LR LS LT LU LV LY MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
| AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
| WWE | Wipo information: entry into national phase |
Ref document number: 1020077007398 Country of ref document: KR Ref document number: 200580033157.3 Country of ref document: CN |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 05808928 Country of ref document: EP Kind code of ref document: A2 |