WO2006124348A2 - Dma reordering for dca - Google Patents
Dma reordering for dca Download PDFInfo
- Publication number
- WO2006124348A2 WO2006124348A2 PCT/US2006/017566 US2006017566W WO2006124348A2 WO 2006124348 A2 WO2006124348 A2 WO 2006124348A2 US 2006017566 W US2006017566 W US 2006017566W WO 2006124348 A2 WO2006124348 A2 WO 2006124348A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- dca
- transfers
- bus
- data
- transferred
- 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/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
Definitions
- Embodiments of the present apparatus and method relate in general to direct cache access, and, in particular, to cache management.
- Cache misses are one cause of latency.
- a cache miss occurs when data requested by a processor is not in the processor's cache memory, and must be accessed from a slower memory device.
- Cache misses are reduced with cache warming.
- Cache warming is a technology to place data into a processor's cache before the processor attempts to access it.
- the first method is to issue processor pre-fetch commands for source and/or destination addresses before they are accessed.
- the second method is to use Direct Cache Access (DCA).
- DCA Direct Cache Access
- special tags are included in bus transactions to indicate that this data is to be placed into a given processor's cache as the data is transferred to memory.
- FIG. 1 depicts an embodiment of the present subject matter for use in DMA reordering
- FIG. 2 depicts transfer of a packet according to an embodiment of the present subject matter
- FIG. 3 depicts transfer of packets according to another embodiment of the present subject matter
- FIG. 4 is a flow diagram of a method for Direct Memory Access (DMA) according to an embodiment of the present subject matter
- FIG. 5 is a flow diagram of a method for DMA according to another embodiment of the present subject matter
- FIG. 6 is a flow diagram of a method for DMA according to another embodiment of the present subject matter.
- FIG. 7 is a flow diagram of a method for DMA according to another embodiment of the present subject matter.
- inventive subject matter may be referred to, individually and/or collectively, herein by the term "invention" merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed.
- Direct Memory Access is a method of transferring data from an input/output (I/O) device to a memory device without intervention by a central processing unit (CPU).
- a DMA controller behaves as a bus master on a bus carrying data to or from the I/O device and a memory device during DMA.
- Data transferred across a network is transferred in packets. Each packet typically contains a header and packet data. Packet descriptors are often used to convey status and other information about the packets (location, length, error status etc.) These packets and descriptors are DMA transferred across the bus as they move to and from a host system to an Ethernet controller.
- some data transferred by DMA is also placed directly in a cache memory according to Direct Cache Access (DCA), while other data transferred by DMA is not placed in the cache memory according to DCA.
- DCA and non-DCA transfers are reordered to improve the management of the cache memory.
- FIG. 1 depicts an embodiment of the present subject matter that implements DMA with reordering.
- a bus 100 may be operatively coupled to, for example, a storage device 102, a reordering module 104, a coordinating module 106, and an I/O device 108.
- the bus 100 may have bus-ordering rules.
- the storage device 102 may be a disk drive device, a DRAM, a Flash memory device, or an SRAM.
- the I/O device 108 may be a cable modem coupled to a network using Ethernet or an omni-directional antenna in a wireless network.
- a processor 110 may be operatively coupled to the storage device 102, the reordering module 104, and the coordinating module 106.
- the processor 110 controls operation of these elements for transfer of, for example, packets on the bus 100.
- DCA and non-DCA transfers on the bus 100 may be reordered such that DCA transfers are last transactions and therefore closer to an interrupt than non-DCA transfers.
- requests for DCA and non-DCA transfers may be coordinated with interrupt processing by the processor 110.
- Other configurations of the system may utilize the present subject matter.
- the DCA data may be placed in the cache memory (cache warmed) immediately prior to access by the processor 110. This prevents early eviction of other cache contents and greatly increases the probability of the DCA data still being in cache when the processor 110 accesses it.
- DCA and non- DCA transfexs are reordered so that DCA transfers are the last transactions and therefore closer to an interrupt.
- This reordering is independent from, and does not violate, the bus ordering rules. For example, when a received packet is transferred, the headers and the descriptors are generally DCA transactions and the packet data is not. Packets are not accessed until the descriptors are transferred, and so long as the descriptors remain the final transfer, the order of the other transfers can be changed.
- FIG. 2 depicts the transfer of a packet according to an embodiment of the present subject matter.
- DMA data is transferred in a non-DCA manner in 201.
- a DCA transfer of DMA headers occurs in 202, and a DCA transfer of DMA descriptors occurs in 203.
- An interrupt occurs in 204.
- FIG. 3 depicts transfer of multiple packets according to an embodiment of the present subject matter.
- the transfers in FIG 3. are coordinated with an interrupt assertion. This allows DCA transactions for multiple packets to be reordered. DCA transactions are issued for the first Nl packets in FIG 3. For packets Nl+1 - N2 that are subsequent to Nl, DCA transactions are not issued. The DCA transactions of packets 1 - Nl are reordered so as to occur after the non-DCA transactions. This allows initial accesses of a driver's interrupt processing function to issue pre-fetch commands for needed components of packets Nl+1 - N2. This allows the pre-fetch operations to occur in the background while packets 1 - Nl are processed.
- non-DCA transactions for packets 1-Nl are implemented.
- all transactions for packets N1+1-N2 are implemented. None of the transactions for packets N1+1-N2 are DCA transactions.
- DCA transactions for packets 1- Nl are implemented, and interrupt processing starts in 304.
- pre-fetch commands are issued for needed portions of packets N1+1-N2.
- Packets 1-Nl are processed in 306.
- pre-fetch for packets N1+1-N2 is complete.
- packets N1+1-N2 are processed.
- Nl (how many packets to use DCA on) may be adaptively programmable.
- the value for Nl should be large enough to allow adequate time for pre-fetching the needed portions of packet Nl+1 before they are accessed. It should additionally be no larger than needed to achieve this goal. Larger values could result in needed data being evicted from cache.
- embodiments of the present subject matter may consider the processor cache memory size and utilization, Additionally, the DCA activity may be restricted to select traffic such as high priority queues or TCP.
- Embodiments of the present subject matter involve coordinating DCA requests with interrupt processing by a device driver.
- the interrupt coordination is achieved by synchronizing the DMA activity with the interrupt moderation and assertion timers.
- a DCA flush timer is set relative to an interrupt assertion timer. This allows the device driver to program the flush timer so that the delay matches the platform and Operating System (OS) interrupt delay.
- OS Operating System
- the flush timer can be set to a value prior to the interrupt assertion sufficient to allow the stored DCA transactions to complete. This flush timer value would have several dependencies such as bus bandwidth, packet rate, and interrupt moderation.
- An adaptive algorithm may be used to tune the flush timer.
- a DCA coordination timer can be set to a value subsequent to the interrupt assertion. This would allow the DCA transactions to occur after the interrupt assertion and prior to the DPC execution.
- the DCA coordination timer value may be an adaptively programmable value.
- a DCA flush timer may be set that is not relative to the interrupt assertion.
- a DCA flush threshold of packet, byte, or descriptor counts may be used.
- FIG. 4 is a flow diagram of a method for DMA according to an embodiment of the present subject matter.
- DCA and non-DCA transfers are reordered so that DCA transfers are last transactions and therefore closer to an interrupt than non-DCA transfers.
- DCA requests for DCA and non-DCA transfers are coordinated with interrupt processing.
- FIG. 5 is a flow diagram of a method for DMA according to another embodiment of the present subject matter.
- DCA and non-DCA transfers are reordered on a bus having bus-ordering rules so that DCA transfers are last transactions and therefore closer to an interrupt than non-DCA transfers. The reordering is independent from and does not violate bus-ordering rules.
- DMA activity is synchronized with interrupt moderation and assertion timers to achieve interrupt coordination for interrupt processing of DCA requests for DCA and non-DCA transfers.
- FIG. 6 is a flow diagram of a method for DMA according to another embodiment of the present subject matter.
- DCA transfers are used in concert with pre-fetching commands such that a number of DCA transfers are limited to ensure that the pre-fetching commands are issued prior to access for data and subsequent to the DCA transfers.
- headers and descriptors of the packet are DCA transactions and packet data are non-DCA transfers.
- FIG. 7 is a flow diagram of a method for DMA according to another embodiment of the present subject matter.
- data is transferred on a bus using direct cache access (DCA) transfers and the transfers are reordered so that DCA transfers are last transactions.
- DCA direct cache access
- data is transferred on the bus using non-DCA transfers.
- the amount of data that is transferred on the bus using DCA transfers is adaptively tuned.
- pre-fetch commands are issued for data that is transferred on the bus using non-DCA transfers.
- a DCA flush threshold is set.
- the DCA flush threshold is set relative to an interrupt assertion timer.
- the DCA flush threshold is adaptively tuned.
- Embodiments of the present subject matter can be applied with any bus master device. Embodiments of the present subject matter can be applied in high-speed network applications such as a 10 gigabit Ethernet or a wireless network. Embodiments of the present subject matter can be implemented with many types of operating systems. Embodiments of the present subject matter may also be implemented in other network applications, and other hardware.
- Embodiments of the present subject matter have several advantages. Bus transactions are reordered such that DCA events are last, which includes reordering events between packets. DCA transactions may be synchronized with interrupt assertion. Embodiments of the present subject matter include an adaptively programmable timer or threshold, and this timer may or may not be relative to an interrupt assertion.
- DCA may be used in concert with pre-fetching.
- DCA transactions may be limited to the number needed to ensure that pre-fetching commands may-be adequately issued prior to access for data subsequent to the DCA transactions.
- DCA transactions may be limited based on the size of the processor's cache.
- DCA may be limited to select traffic or queues.
- Embodiments of the present subject matter utilize the strengths of each of DCA and pre-fetching. These embodiments of the present subject matter limit the number of packets for which DCA transactions need to be issued. The embodiments of the present subject matter select the most appropriate tool for a given situation.
- the operations described herein are just exemplary. There may be many variations to these operations without departing from the spirit of the inventive subject matter. For instance, the operations may be performed in a differing order, or operations may be added, deleted, or modified.
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)
- Bus Control (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
Description
Claims
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008511212A JP2008541270A (en) | 2005-05-13 | 2006-05-02 | DMA reordering for DCA |
| DE112006001158T DE112006001158T5 (en) | 2005-05-13 | 2006-05-02 | DMA with reorganization for the DCA |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/129,559 US20060259658A1 (en) | 2005-05-13 | 2005-05-13 | DMA reordering for DCA |
| US11/129,559 | 2005-05-13 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| WO2006124348A2 true WO2006124348A2 (en) | 2006-11-23 |
| WO2006124348A3 WO2006124348A3 (en) | 2007-01-25 |
Family
ID=36857080
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US2006/017566 Ceased WO2006124348A2 (en) | 2005-05-13 | 2006-05-02 | Dma reordering for dca |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US20060259658A1 (en) |
| JP (1) | JP2008541270A (en) |
| CN (1) | CN101176076A (en) |
| DE (1) | DE112006001158T5 (en) |
| WO (1) | WO2006124348A2 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103927266A (en) * | 2013-01-15 | 2014-07-16 | 想象力科技有限公司 | Improved control of prefetch traffic |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| IL211490A (en) * | 2010-03-02 | 2016-09-29 | Marvell Israel(M I S L ) Ltd | Pre-fetching of data packets |
| WO2013109234A2 (en) * | 2011-11-03 | 2013-07-25 | Intel Corporation | Method to accelerate message signaled interrupt processing |
| US8996760B2 (en) * | 2011-11-03 | 2015-03-31 | Intel Corporation | Method to emulate message signaled interrupts with interrupt data |
| WO2013066335A1 (en) * | 2011-11-03 | 2013-05-10 | Intel Corporation | Method to emulate message signaled interrupts with multiple interrupt vectors |
| US8996774B2 (en) | 2012-06-27 | 2015-03-31 | Intel Corporation | Performing emulated message signaled interrupt handling |
| KR101937544B1 (en) * | 2013-12-26 | 2019-01-10 | 인텔 코포레이션 | Data reorder during memory access |
| US10019675B2 (en) * | 2014-11-12 | 2018-07-10 | Duetto Research, Inc. | Actuals cache for revenue management system analytics engine |
| CN106302234B (en) * | 2015-06-24 | 2019-03-19 | 龙芯中科技术有限公司 | Network packet transfer approach, ethernet controller, cache and system |
| WO2017189006A1 (en) * | 2016-04-29 | 2017-11-02 | Appdynamics Llc | Predictive rollup and caching for application performance data |
| WO2017208182A1 (en) * | 2016-06-02 | 2017-12-07 | Marvell Israel (M.I.S.L) Ltd. | Packet descriptor storage in packet memory with cache |
| US11314674B2 (en) * | 2020-02-14 | 2022-04-26 | Google Llc | Direct memory access architecture with multi-level multi-striding |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH04130551A (en) * | 1990-09-20 | 1992-05-01 | Fujitsu Ltd | Cache control method |
| US5903911A (en) * | 1993-06-22 | 1999-05-11 | Dell Usa, L.P. | Cache-based computer system employing memory control circuit and method for write allocation and data prefetch |
| JP2675981B2 (en) * | 1993-09-20 | 1997-11-12 | インターナショナル・ビジネス・マシーンズ・コーポレイション | How to avoid snoop push operations |
| US6662297B1 (en) * | 1999-12-30 | 2003-12-09 | Intel Corporation | Allocation of processor bandwidth by inserting interrupt servicing instructions to intervene main program in instruction queue mechanism |
| US8533401B2 (en) * | 2002-12-30 | 2013-09-10 | Intel Corporation | Implementing direct access caches in coherent multiprocessors |
| US7243172B2 (en) * | 2003-10-14 | 2007-07-10 | Broadcom Corporation | Fragment storage for data alignment and merger |
| US20060004965A1 (en) * | 2004-06-30 | 2006-01-05 | Tu Steven J | Direct processor cache access within a system having a coherent multi-processor protocol |
| US7930422B2 (en) * | 2004-07-14 | 2011-04-19 | International Business Machines Corporation | Apparatus and method for supporting memory management in an offload of network protocol processing |
| US7360027B2 (en) * | 2004-10-15 | 2008-04-15 | Intel Corporation | Method and apparatus for initiating CPU data prefetches by an external agent |
| US7404040B2 (en) * | 2004-12-30 | 2008-07-22 | Intel Corporation | Packet data placement in a processor cache |
-
2005
- 2005-05-13 US US11/129,559 patent/US20060259658A1/en not_active Abandoned
-
2006
- 2006-05-02 DE DE112006001158T patent/DE112006001158T5/en not_active Withdrawn
- 2006-05-02 JP JP2008511212A patent/JP2008541270A/en active Pending
- 2006-05-02 WO PCT/US2006/017566 patent/WO2006124348A2/en not_active Ceased
- 2006-05-02 CN CNA2006800165239A patent/CN101176076A/en active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103927266A (en) * | 2013-01-15 | 2014-07-16 | 想象力科技有限公司 | Improved control of prefetch traffic |
| CN103927266B (en) * | 2013-01-15 | 2018-11-09 | 美普思技术有限责任公司 | Method and system for improved control of prefetch traffic |
| US10754778B2 (en) | 2013-01-15 | 2020-08-25 | MIPS Tech, LLC | Control of pre-fetch traffic |
Also Published As
| Publication number | Publication date |
|---|---|
| US20060259658A1 (en) | 2006-11-16 |
| JP2008541270A (en) | 2008-11-20 |
| DE112006001158T5 (en) | 2008-04-03 |
| CN101176076A (en) | 2008-05-07 |
| WO2006124348A3 (en) | 2007-01-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7130933B2 (en) | Method, system, and program for handling input/output commands | |
| US9176911B2 (en) | Explicit flow control for implicit memory registration | |
| US10015117B2 (en) | Header replication in accelerated TCP (transport control protocol) stack processing | |
| US7111092B1 (en) | Buffer management technique for a hypertransport data path protocol | |
| US6701393B1 (en) | Systems and methods for managing storage location descriptors | |
| US7246205B2 (en) | Software controlled dynamic push cache | |
| US20060031600A1 (en) | Method of processing a context for execution | |
| US11301408B1 (en) | Asymmetric read / write architecture for enhanced throughput and reduced latency | |
| US20060259658A1 (en) | DMA reordering for DCA | |
| US20170147517A1 (en) | Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method | |
| CN118860290A (en) | NVMe write data processing method, terminal and storage medium | |
| US7552232B2 (en) | Speculative method and system for rapid data communications | |
| US6801963B2 (en) | Method, system, and program for configuring components on a bus for input/output operations | |
| US20080225858A1 (en) | Data transferring apparatus and information processing system | |
| US9811467B2 (en) | Method and an apparatus for pre-fetching and processing work for procesor cores in a network processor | |
| US6820140B2 (en) | Method, system, and program for returning data to read requests received over a bus | |
| EP1008940A2 (en) | Intelligent and adaptive memory and methods and devices for managing distributed memory systems with hardware-enforced coherency | |
| CN115757223A (en) | Embedded DMA data transmission method | |
| CN120371744A (en) | Read acceleration device, data reading method, communication system, equipment and medium | |
| CN117312013A (en) | Interactive queue management method and device based on active writing back of message queue pointer | |
| WO2005026972A2 (en) | Data transfer management method, software and system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| WWE | Wipo information: entry into national phase |
Ref document number: 200680016523.9 Country of ref document: CN |
|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
| ENP | Entry into the national phase |
Ref document number: 2008511212 Country of ref document: JP Kind code of ref document: A |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 1120060011588 Country of ref document: DE |
|
| NENP | Non-entry into the national phase |
Ref country code: RU |
|
| RET | De translation (de og part 6b) |
Ref document number: 112006001158 Country of ref document: DE Date of ref document: 20080403 Kind code of ref document: P |
|
| WWE | Wipo information: entry into national phase |
Ref document number: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 06759232 Country of ref document: EP Kind code of ref document: A2 |