WO2023185035A1 - 内存直接访问架构、系统、方法、电子设备和介质 - Google Patents
内存直接访问架构、系统、方法、电子设备和介质 Download PDFInfo
- Publication number
- WO2023185035A1 WO2023185035A1 PCT/CN2022/134792 CN2022134792W WO2023185035A1 WO 2023185035 A1 WO2023185035 A1 WO 2023185035A1 CN 2022134792 W CN2022134792 W CN 2022134792W WO 2023185035 A1 WO2023185035 A1 WO 2023185035A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- descriptor
- component
- read
- write
- direct access
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- This application relates to the field of computer technology, and in particular to a memory direct access architecture, system, method, electronic device and medium.
- PCI-Express peripheral component interconnect express
- PCIE has two data transmission methods: 1. DMA (Direct Memory Access). In this mode, data transmission is not performed by The CPU (Central Processing Unit, central processing unit) is responsible for processing, which is completed by a special processor DMA controller, so it takes up very little CPU resources; 2. PIO (Programmed Input-Output, programmable input and output), In this mode, data transfer is processed by the CPU by executing I/O port instructions in byte or larger data units, which takes up a lot of CPU resources and the data transfer speed is much lower than that in DMA mode. Therefore, DMA mode is better than PIO mode.
- DMA Direct Memory Access
- the purpose of this application is to provide a memory direct access architecture, system, method, electronic device and medium, which improves the transmission efficiency of DMA.
- this application provides a memory direct access architecture, which is applied to digital circuits and includes a memory direct access control component, a read data moving component, a write data moving component and a data storage component;
- the memory direct access control component It includes a control register, a read descriptor storage component, a write descriptor storage component, a read command transmission component, and a write command transmission component;
- the control register is set to be set by the host to obtain descriptor address information;
- the read descriptor storage component is set to Store the read descriptor obtained using the control register;
- the write descriptor storage component is configured to store the write descriptor obtained using the control register;
- the read command transmission component is configured to send the read descriptor based on the read descriptor or the read command obtained from the descriptor address information;
- the write command transmission component is configured to send the write command obtained based on the read descriptor to the write data moving component;
- the read data moving component is configured to execute the read command,
- the write data moving component is
- This application also provides an electronic device, which applies the above-mentioned memory direct access architecture.
- This application also provides a memory direct access system, including a host and the above-mentioned electronic device, and the host and the electronic device are connected through a target bus.
- This application also provides a memory direct access method, which is applied to the above-mentioned electronic device.
- the method includes: if it is detected that the control register of the memory direct access control component is triggered, obtaining the descriptor address information; using the memory to directly access the memory.
- the access control component generates a descriptor read command based on the descriptor address information; uses the read data moving component to execute the descriptor read command to obtain a descriptor, and writes the descriptor into the memory direct access control component.
- a descriptor storage component using the memory direct access control component to generate an access command based on the descriptor; based on the type of the access command, using a read data moving component or a write data moving component to execute the access command.
- This application also provides a computer-readable storage medium for storing a computer program, wherein when the computer program is executed by a processor, the above-mentioned direct memory access method is implemented.
- the memory direct access architecture is applied to digital circuits and includes a memory direct access control component, a read data moving component, a write data moving component, and a data storage component;
- the memory direct access control component includes a control register, a read descriptor storage component, Write descriptor storage component, read command transmission component, write command transmission component;
- the control register is set to be set by the host to obtain descriptor address information;
- the read descriptor storage component is set to store the read descriptor obtained by using the control register; write descriptor storage The component is configured to store the write descriptor obtained using the control register;
- the read command transmission component is configured to send a read command based on the read descriptor or descriptor address information to the read data moving component;
- the write command transmission component is configured to send the write data moving component Send the write command obtained based on the read descriptor;
- the read data moving component is set to execute the read command, the write data moving component is set to execute the write command, and the data storage component is set to store the
- the read data moving component and the writing data moving component are set up in this architecture, which are set up to execute read commands and write commands respectively.
- the read descriptor storage component and the write descriptor storage component are also set up correspondingly, so that the digital circuit can read Write parallel processing.
- the read data moving component can also execute the read command obtained from the descriptor address information, and can realize the moving of the descriptor. The same set of components can be used to complete the moving of the descriptor and data, saving hardware resources.
- this application also provides a system, method, electronic device and medium, which also have the above beneficial effects.
- Figure 1 is a schematic structural diagram of a memory direct access architecture provided by an embodiment of the present application.
- Figure 2 is a schematic structural diagram of a host memory provided by an embodiment of the present application.
- Figure 3 is a schematic structural diagram of a specific host memory provided by an embodiment of the present application.
- Figure 4 is a schematic diagram of a data migration process provided by an embodiment of the present application.
- Figure 5 is a flow chart of a memory direct access method provided by an embodiment of the present application.
- Figure 6 is a host memory writing flow chart provided by an embodiment of the present application.
- Figure 7 is a host memory reading flow chart provided by an embodiment of the present application.
- chain DMA has problems with low transmission efficiency, including the inability to support out-of-order data reception when reading data, the inability to interconnect with a standard bus, the inability to perform parallel processing of reading and writing, and low bandwidth utilization.
- this application proposes a new memory direct access architecture, which is applied to digital circuits.
- it can be a field programmable logic gate array (Field Programmable Gate Array, FPGA) circuit, or it can be a digital integrated ( digital integrated circuit, digital IC) circuit.
- the entire architecture includes a memory direct access control component, a read data moving component, a write data moving component and a data storage component.
- the memory direct access control component further includes a control register, a read descriptor storage component, a write descriptor storage component, a read command transmission component, Write command transfer component.
- Figure 1 is a specific implementation, which shows the memory direct access control component DMA Descriptor Controller, the read data moving component PCIe Read DMA Data Mover, the write data moving component PCIe Write DMA Data Mover, and the data storage Components DDR&RAM.
- the memory direct access control component further includes the control register Control Register, the read descriptor storage component Read Descriptor Table Slave, the write descriptor storage component Write Descriptor Table Slave, the read command transmission component Read DMA Control Source, and the write command transmission component Write DMA Control Source.
- the control register is set to be set by the host to obtain the descriptor address information.
- the host can set the register value of the control register so that the control register can locate the descriptor according to the written register value, that is, obtain the descriptor address, and then obtain the descriptor address from the host Read the descriptor from the memory to further perform DMA reading and writing based on the descriptor.
- the control register (or can be called the DMA descriptor control register) is accessed through the BAR (Base Address register, base address register) space, for example, it can correspond to BAR0 of the PCIe bus.
- the control register The address offset corresponding to the register can be 0x0000. It should be noted that the address offset can be set as needed, and there is no specific limit.
- the structure of the control register can be as follows:
- MSI Message Signal Interrupt
- RC Root Complex
- ED End Point
- terminal device that is, the digital circuit in this application, for example, it can refer to the FPGA circuit.
- R stands for Read and W stands for Write.
- the read descriptor storage component and the write descriptor storage component are first-in-first-out memories, and the read descriptor storage component and the write descriptor storage component have predefined storage addresses.
- FIFO is First Input First Output, first in first out queue, or first in first out memory.
- the descriptor is stored in the FIFO in the digital circuit, and the FIFO is given an address so that it can be identified by the address. , so that the digital circuit can be interconnected with a standard bus to facilitate development.
- the control register includes a source address register, a destination address register, a descriptor size register, and a trigger register, where the destination address register is set to store any storage address.
- control register structure is:
- the starting address offset of the DMA descriptor control register is set to 0x0100.
- the address offset can also be set as needed, and there is no specific limit.
- RC Write Status and Descriptor Base (Low) and RC Write Status and Descriptor Base (High), or RC Read Status and Descriptor Base (Low) and RC Read Status and Descriptor Base (High), constitute the descriptor address information, according to The descriptor address information can locate the read descriptor or write descriptor and then read it.
- the memory direct access control component can generate the corresponding read command or write command based on the descriptor or descriptor address information.
- the read data movement component and the write data movement component also have controllers, such as the Read DMA Data Master and Write DMA in Figure 1 Data Master, set to control instruction execution.
- this application is provided with a read descriptor storage component and a write descriptor storage component, wherein the read descriptor storage component is configured to store the read descriptor obtained using the control register, and the write descriptor storage component is configured to Stores the write descriptor obtained using the control register.
- the read descriptor is a descriptor that instructs the digital circuit to read data from the host to itself
- the write descriptor is a descriptor that instructs the digital circuit to write its own data to the host.
- Working in conjunction with the two are the read command transmission component and the write command transmission component.
- the read command transmission component is configured to send the read command based on the read descriptor or the read command based on the descriptor address information to the read data moving component. It can be understood that the read command obtained based on the descriptor address information is set as a command to read the descriptor. In this way, the same set of components can be used to complete the movement of the descriptor and data, saving hardware resources.
- the write command transmission component is configured to send the write command obtained based on the read descriptor to the write data moving component.
- it also includes a read data moving component and a write data moving component.
- the read data moving component is configured to execute the read command
- the write data moving component is configured to execute the write command
- the data storage component is configured to store the read data obtained after the read command is executed.
- the descriptors are stored in the host in advance.
- the host has a descriptor table in the memory.
- the descriptor table has space to store a certain number of descriptors. The specific number is not limited. For example, it can be 128, each descriptor.
- the space size corresponding to the symbol is not limited, for example, it can be 8 words, or it can be 32 bytes.
- the descriptor table may also include a state table corresponding to each descriptor.
- the data in the state table can be updated according to the execution status of the descriptor. When the host needs it, it can Read the data in the status table to determine the execution status of each descriptor. If necessary, you can update the descriptors that have been executed so that the digital circuit can continuously read and write data to improve efficiency.
- Figure 2 shows a host memory structure.
- the host memory adopts a state table + descriptor table.
- the form is preceded by a status table and followed by a descriptor table.
- the address of the status table can be RC Write Status and Descriptor Base or RC Read Status and Descriptor Base address.
- the address of the descriptor table is the base address + offset address
- the offset address is the overall size of the status table.
- the offset address is 0x200.
- There are 31 bits in each status table as reserved operation bits (reserved), and the other is an identification operation bit (done).
- the identification operation bit is used to indicate the execution status of the corresponding descriptor.
- the structure of the read descriptor is not limited and can be set as needed.
- the structure of the read descriptor may be:
- the structure of the write descriptor can be:
- Figure 4 is a schematic diagram of a data moving process provided by an embodiment of the present application, specifically moving three data blocks from the host memory to the FPGA bus address space.
- each entry in the state table is 4 bytes, and 128 entries requires 512 bytes of memory; each The size of the descriptor is 32 bytes. Taking Figure 2 and Figure 3 as an example, three descriptors require 96 bytes of memory, so the total memory allocation for the status table and descriptor table is 608 bytes.
- the host allocates 608 bytes of memory in the PCI Express address space.
- the starting address of the allocated memory can be 0xf000_0000, and this address is written into the Root Complex Read Status and Descriptor register.
- the base address is 0xf000_0000
- the address of the first descriptor is the base address + offset address, that is, 0xf000_0000+0x200. Therefore, the high 32bit source address 0 is written in 0xf000_0204 of the host memory space, and the low 32bit is written in 0xf000_0200.
- Source address 0x1000_0000 write the high 32bit destination address 0 in 0xf000_0200c, write the low 32bit destination address 0x5000_0000 in 0xf000_0208, write 0x0000_4000 in 0xf000_0210, send 16Kdwords (64KB), the descriptor ID is 0, complete the first description specific settings of the symbol. Repeat this step twice to complete the settings of the remaining two descriptors. The completed rendering is shown in Figure 3.
- the host configures the control register through bar0 so that the control register reads the read status descriptor base address.
- a 64-bit address can be used. That is, the host writes 0x0000_0000-high 32bit read status descriptor base address in 0x0000_0004, and writes 0xF000_0000-low 32bit read status descriptor base address in 0x0000_0000.
- the digital circuit can get the descriptor address based on +0x200.
- the host configures the FIFO address of the control register through bar0. Since the FIFO itself has no concept of address, in order to adapt it to the standard bus, when using the FIFO of the bus interface, the address of the FIFO needs to be defined. Specifically, you can write 0x0000_0000-high 32bitFIFO address in 0x0000_000C, and write 0x0100_0000-low 32bitFIFO address in 0x0000_0008. At this time, the corresponding address of the FIFO on the FPGA internal bus is 0x0100_0000.
- the host writes the register RD_DMA_LAST_PTR, that is, writes 0x2 at 0x0000_0010, indicating that there are 3 descriptors in total.
- the host writes an arbitrary value at 0x0000_001c in order to start the DMA operation of the digital circuit.
- the memory direct access control component is configured to receive the move completion notification sent by the read data moving component and the write data moving component.
- the DMA Descriptor Controller includes Read DMA Status Sink (which can be called the read status acquisition component) and Write DMA Status Sink (which can be called the write status acquisition component), which are respectively related to the Read DMA Status Source (read status Generate component) and Write DMA Status Source (write status generation component) are connected.
- the memory direct access control component includes a status update component, such as the Status&MSI component in Figure 1.
- the status update component is set to update the target status bit data corresponding to the target descriptor in the host's system memory after detecting that the target descriptor has been executed. Specifically, it can update the target status bit data in the target status table corresponding to the target descriptor in the host through the TX Slave (can be called the status and interrupt reporting part) in the Reg&Status&MSI Manager (which can be called the status and interrupt management component) .
- the MWr write data packet can be generated through the TX Slave and sent to the host through the PCIe bus.
- two independent memory spaces can be divided at the host, which are used to store read descriptors and corresponding state tables, and write descriptors and The corresponding status table.
- the digital circuit can send an interrupt signal, and the host can determine whether the reading or writing is completed by judging which state table in the memory space is in the completion state.
- the memory direct access control component includes an interrupt reporting component, and the interrupt reporting component is configured to send an interrupt message to the host after detecting that the target descriptor has been executed.
- the TX Slave in the Reg&Status&MSI Manage can be called the status and interrupt management component
- the Status&MSI component in the DMA Descriptor Controller can be used as an interrupt reporting component and is generated in conjunction with the TX Slave.
- MWr writes the data packet and sends it to the host through the PCIe bus, which has the effect of interrupt reporting. It can be understood that the contents of the MWr write data packets corresponding to interrupt reporting and status bit data update are different.
- each read data packet may be obtained in another order that does not follow the reading order. In order to avoid data errors, it is usually only read at a time. A data packet, which will prevent the bandwidth from being fully utilized.
- the memory direct access architecture in this application also includes a first-in first-out buffer, and the first-in first-out buffer is set to cache the read data packets obtained after the read command is executed.
- each read data packet includes a data packet tag corresponding to the read command, and the read data packets are arranged in sequence according to the data packet tags to obtain the read data.
- each data packet By caching multiple data packets in the first-in first-out buffer, and using the data packet tags obtained according to the read command when reading the data packets, each data packet can be sorted and stored, so that multiple data packets can be read at the same time. Data packets, making full use of the bandwidth effect.
- the direct memory access architecture can include Communication component of the target bus connection.
- the communication component is configured to send the first data packet to the target bus, or is configured to obtain the second data packet from the target bus, and send the second data packet to the corresponding component based on the data packet type of the second data packet.
- the first data packet refers to any kind of data packet that the digital circuit can generate, such as a write data packet, or it can be a terminal data packet.
- the second data packet refers to any type of data packet obtained from the host, such as a read data packet. Please refer to Figure 1.
- the Schedule in Figure 1 ie AXI-ST Schedule, indicating the communication component based on the AXI bus
- AXI-ST Schedule indicating the communication component based on the AXI bus
- the above-mentioned digital circuit can work alone as a device, or can be integrated into other electronic devices, that is, the electronic device can apply the above-mentioned direct memory access architecture.
- the electronic device can be connected to the host through a target bus, such as a PCIe bus, and together form a memory direct access system.
- Figure 5 is a flow chart of a direct memory access method provided by an embodiment of the present application.
- the method includes:
- S102 Utilize the memory direct access control component to generate a descriptor read command based on the descriptor address information.
- S103 Use the read data moving component to execute the descriptor read command to obtain the descriptor, and write the descriptor into the descriptor storage component of the memory direct access control component. It should be noted that the number of descriptors is not limited, and the type can be read descriptor and/or write descriptor.
- S104 Utilize the memory to directly access the control component and generate access commands based on the descriptor.
- S105 Based on the type of the access command, use the read data moving component or the writing data moving component to execute the access command.
- the access command may be a read command or a write command.
- Figure 6 is a host memory writing flow chart provided by an embodiment of the present application, which includes the following steps:
- the host CPU sets the DMA descriptor control register and starts the DMA process.
- the control register commands the read data mover to obtain the descriptors in the descriptor table in the host computer (i.e. host).
- the control register commands the write data mover to transfer data.
- the write data mover fetches data from the FPGA's DDR (Double Data Rate, double rate synchronous dynamic random access memory) or ram (Random Access Memory, random access memory) to form a MWr (storage write) TLP package. Move the data to the Host system memory.
- DDR Double Data Rate, double rate synchronous dynamic random access memory
- ram Random Access Memory, random access memory
- the control register sends an MSI interrupt to the host.
- Figure 7 is a host memory reading flow chart provided by an embodiment of the present application, which includes the following steps:
- the host CPU sets the DMA descriptor control register and starts the DMA process.
- the control register commands the read data mover to obtain the descriptors in the descriptor table in the host computer.
- the control register commands the read data mover to send an MRd (memory read) TLP packet.
- Each TLP packet has a tag (that is, a packet tag), and the tag is generated based on message management.
- the read data mover moves the data from the Host system memory to the FPGA, and uses 16 FIFOs (i.e. first-in, first-out buffers) to receive CplD (read data packets). Each read data packet has a corresponding tag, and is processed based on the tag. Data sequencing processing, writing data to the corresponding bus.
- the read data mover uses a done bit notification to send it to the control register to notify the control register to complete the data transfer.
- the control register sends an MSI interrupt to the host.
- a read data moving component and a writing data moving component are set up to execute read commands and write commands respectively.
- a read descriptor storage component and a write descriptor storage component are respectively set up. components that enable digital circuits to read and write in parallel.
- the read data moving component can also execute the read command obtained from the descriptor address information, and can realize the moving of the descriptor. The same set of components can be used to complete the moving of the descriptor and data, saving hardware resources.
- the electronic device provided by the embodiment of the present application is introduced below.
- the electronic device described below and the memory direct access method described above can be mutually referenced.
- the electronic device 100 applies the above-mentioned direct memory access architecture.
- the electronic device 100 may specifically include a processor 101 and a memory 102, and may further include a multimedia component 103, an information input/output (I/O) interface 104 and a communication component.
- a multimedia component 103 may further include a multimedia component 103, an information input/output (I/O) interface 104 and a communication component.
- I/O information input/output
- 105 One or more of 105.
- the processor 101 is configured to control the overall operation of the electronic device 100 to complete all or part of the steps in the above-mentioned direct memory access method;
- the memory 102 is configured to store various types of data to support operations on the electronic device 100.
- the data may include, for example, instructions for any application or method operating on the electronic device 100, as well as application-related data.
- the memory 102 can be implemented by any type of volatile or non-volatile storage device or a combination thereof, such as static random access memory (Static Random Access Memory, SRAM), electrically erasable programmable read-only memory (Electrically Erasable Programmable Read-Only Memory (EEPROM), Erasable Programmable Read-Only Memory (EPROM), Programmable Read-Only Memory (PROM), Read-Only Memory (Read- Only Memory (ROM), magnetic memory, flash memory, one or more of magnetic disks or optical disks.
- SRAM static random access memory
- EEPROM Electrically erasable programmable read-only memory
- EPROM Erasable Programmable Read-Only Memory
- PROM Programmable Read-Only Memory
- ROM Read-Only Memory
- magnetic memory flash memory, one or more of magnetic disks or optical disks.
- Multimedia components 103 may include screen and audio components.
- the screen may be a touch screen, for example, and the audio component is configured to output and/or input audio signals.
- the audio component may include a microphone configured to receive external audio signals.
- the received audio signals may be further stored in memory 102 or sent via communication component 105 .
- the audio component also includes at least one speaker configured to output audio signals.
- the I/O interface 104 provides an interface between the processor 101 and other interface modules.
- the other interface modules may be keyboards, mice, buttons, etc. These buttons can be virtual buttons or physical buttons.
- the communication component 105 is configured to perform wired or wireless communication between the electronic device 100 and other devices. Wireless communication, such as Wi-Fi, Bluetooth, Near Field Communication (NFC), 2G, 3G or 4G, or one or a combination of them, so the corresponding communication component 105 may include: Wi-Fi parts, Bluetooth parts, NFC parts.
- the electronic device 100 may be configured by one or more application specific integrated circuits (Application Specific Integrated Circuit, ASIC for short), digital signal processor (Digital Signal Processor, DSP for short), digital signal processing device (Digital Signal Processing Device, DSPD for short), Programmable Logic Device (PLD for short), Field Programmable Gate Array (FPGA for short), controller, microcontroller, microprocessor or other electronic components are implemented for executing the above embodiments Direct memory access method given.
- ASIC Application Specific Integrated Circuit
- DSP Digital Signal Processor
- DSPD Digital Signal Processing Device
- PLD Programmable Logic Device
- FPGA Field Programmable Gate Array
- the computer-readable storage medium provided by the embodiment of the present application is introduced below.
- the computer-readable storage medium described below and the memory direct access method described above can be mutually referenced.
- This application also provides a computer-readable storage medium.
- a computer program is stored on the computer-readable storage medium.
- the steps of the above-mentioned direct memory access method are implemented.
- the computer-readable storage medium can include: U disk, mobile hard disk, read-only memory (Read-Only Memory, ROM), random access memory (Random Access Memory, RAM), magnetic disk or optical disk, etc., which can store program code medium.
- RAM random access memory
- ROM read-only memory
- electrically programmable ROM electrically erasable programmable ROM
- registers hard disks, removable disks, CD-ROMs, or anywhere in the field of technology. any other known form of storage media.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
Abstract
Description
Claims (20)
- 一种内存直接访问架构,应用于数字电路,包括内存直接访问控制部件、读数据搬移部件、写数据搬移部件和数据存储部件;所述内存直接访问控制部件包括控制寄存器、读描述符存储部件、写描述符存储部件、读命令传输部件、写命令传输部件;所述控制寄存器设置为被主机设置得到描述符地址信息;所述读描述符存储部件设置为存储利用控制寄存器得到的读描述符;所述写描述符存储部件设置为存储利用控制寄存器得到的写描述符;所述读命令传输部件设置为向所述读数据搬移部件发送基于读描述符或所述描述符地址信息得到的读命令;所述写命令传输部件设置为向所述写数据搬移部件发送基于读描述符得到的写命令;所述读数据搬移部件设置为执行所述读命令,所述写数据搬移部件设置为执行所述写命令,所述数据存储部件设置为存储所述读命令执行后得到的读数据。
- 根据权利要求1所述的内存直接访问架构,其中,所述数字电路为现场可编程逻辑门阵列电路,或者为数字集成电路。
- 根据权利要求1所述的内存直接访问架构,其中,所述内存直接访问控制部件设置为接收所述读数据搬移部件和所述写数据搬移部件发送的搬移完毕通知;所述内存直接访问控制部件包括状态更新部件,所述状态更新部件设置为在检测到目标描述符执行完毕后,更新所述主机的系统内存中所述目标描述符对应的目标状态位数据。
- 根据权利要求1所述的内存直接访问架构,其中,还包括先入先出缓存器,所述先入先出缓存器设置为缓存所述读命令执行后得到的读数据包;所述读数据包包括与所述读命令对应的数据包标签,所述读数据包按照所述数据包标签先后顺序排列得到所述读数据。
- 根据权利要求3所述的内存直接访问架构,其中,所述内存直接访问控制部件包括中断上报部件,所述中断上报部件设置为在检测到所述目标描述符执行完毕后,向所述主机发送中断消息。
- 根据权利要求1所述的内存直接访问架构,其中,还包括与目标总线连接的通讯部件;所述通讯部件设置为向所述目标总线发送第一数据包,或者设置为从所述目标总线上获取第二数据包,并基于所述第二数据包的数据包类型,将所述第二数据包发送至对应的部件。
- 根据权利要求1所述的内存直接访问架构,其中,所述读描述符存储部件和写描述符存储部件为先入先出存储器,所述读描述符存储部件和写描述符存储部件被预先定义了存储地址;所述控制寄存器包括源地址寄存器、目的地址寄存器、描述符大小寄存器、触发寄存器,其中,所述目的地址寄存器设置为存储任一所述存储地址。
- 根据权利要求1所述的内存直接访问架构,其中,所述控制寄存器设置为通过基地址寄存器进行空间访问。
- 根据权利要求1所述的内存直接访问架构,其中,所述主机的系统内存中包括描述符表,其中,所述描述符表具有存储若干数量的描述符的空间。
- 根据权利要求9所述的内存直接访问架构,其中,所述描述符表包括与各个描述符一一对应的状态表,其中,所述状态表中的数据允许根据描述符的执行情况进行更新。
- 根据权利要求9所述的内存直接访问架构,其中,所述主机,设置为划分两个独立的内存空间,其中,所述两个独立的内存空间分别用于存储读描述符和读描述符对应的状态表,以及写描述符和写描述符对应的状态表。
- 根据权利要求1所述的内存直接访问架构,其中,所述主机,设置为配置所述控制寄存器,以使所述控制寄存器读取读描述符的基地址。
- 根据权利要求1所述的内存直接访问架构,其中,所述状态更新部件包括:读状态获取部件,与所述读数据搬移部件中的读状态生成部件连接,其中,所述读状态生成部件用于在读命令生成所述搬移完毕通知后,将所述搬移完毕通知发送至所述读状态读取部件。
- 根据权利要求1所述的内存直接访问架构,其中,所述状态更新部件包括:写状态获取部件,与所述写数据搬移部件中的写状态生成部件连接,其中,所述写状态生成部件用于在写命令生成所述搬移完毕通知后,将所述搬移完毕通知发送至所述写状态读取部件。
- 根据权利要求6所述的内存直接访问架构,其中,所述第一数据包包括以下至少之一:写数据包,终端数据包;所述第二数据包包括:读数据包。
- 一种电子设备,所述电子设备应用了如权利要求1至15任一项所述的内存直接 访问架构。
- 一种内存直接访问系统,包括主机和如权利要求16所述的电子设备,所述主机和所述电子设备通过目标总线连接。
- 一种内存直接访问方法,应用于如权利要求16所述的电子设备,所述方法包括:若检测到内存直接访问控制部件的控制寄存器被触发,则获取描述符地址信息;利用所述内存直接访问控制部件,基于所述描述符地址信息生成描述符读命令;利用读数据搬移部件执行所述描述符读命令,得到描述符,并将所述描述符写入所述内存直接访问控制部件的描述符存储部件;利用所述内存直接访问控制部件,基于所述描述符生成访问命令;基于所述访问命令的种类,利用读数据搬移部件或写数据搬移部件执行所述访问命令。
- 根据权利要求18所述的内存直接访问方法,其中,所述方法还包括:在检测到所述目标描述符执行完毕后,向所述主机发送中断消息。
- 一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求10所述的内存直接访问方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/724,096 US12277079B2 (en) | 2022-04-02 | 2022-11-28 | Direct memory access architecture, system and method, electronic device, and medium |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210340235.XA CN114443529B (zh) | 2022-04-02 | 2022-04-02 | 内存直接访问架构、系统、方法、电子设备和介质 |
| CN202210340235.X | 2022-04-02 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2023185035A1 true WO2023185035A1 (zh) | 2023-10-05 |
Family
ID=81359997
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2022/134792 Ceased WO2023185035A1 (zh) | 2022-04-02 | 2022-11-28 | 内存直接访问架构、系统、方法、电子设备和介质 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US12277079B2 (zh) |
| CN (1) | CN114443529B (zh) |
| WO (1) | WO2023185035A1 (zh) |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117667793A (zh) * | 2024-01-30 | 2024-03-08 | 苏州元脑智能科技有限公司 | 一种多通道描述符管理系统、方法、设备、介质 |
| CN117891762A (zh) * | 2023-12-18 | 2024-04-16 | 中科驭数(北京)科技有限公司 | 一种基于PICe的主机至网卡数据发送方法及系统 |
| CN118132469A (zh) * | 2024-05-08 | 2024-06-04 | 杭州长川科技股份有限公司 | 测试机通信系统、通信方法和测试机 |
| CN118885420A (zh) * | 2024-09-29 | 2024-11-01 | 苏州元脑智能科技有限公司 | 一种桥接系统及计算架构 |
| CN118885419A (zh) * | 2024-09-29 | 2024-11-01 | 紫光恒越技术有限公司 | 数据转发方法、装置、介质及程序产品 |
| CN118916150A (zh) * | 2024-10-10 | 2024-11-08 | 上海燧原智能科技有限公司 | 一种多主机任务同步器和多主机任务同步方法 |
| CN120762747A (zh) * | 2025-05-21 | 2025-10-10 | 上海天数智芯半导体股份有限公司 | 一种设备寄存器的访问方法、电子设备及存储介质 |
Families Citing this family (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114443529B (zh) | 2022-04-02 | 2022-07-05 | 苏州浪潮智能科技有限公司 | 内存直接访问架构、系统、方法、电子设备和介质 |
| CN117155729B (zh) * | 2022-05-24 | 2026-03-06 | 北京有竹居网络技术有限公司 | 通信方法、系统、装置和电子设备 |
| CN115237353B (zh) * | 2022-08-12 | 2023-12-22 | 青岛汉泰智能科技有限公司 | 一种arm查询fpga长度寄存器的方法 |
| CN115509972A (zh) * | 2022-10-12 | 2022-12-23 | 苏州盛科通信股份有限公司 | 实现dma高效收发报文的方法及应用 |
| CN115422101A (zh) * | 2022-11-04 | 2022-12-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种dma驱动系统、方法、设备及可读存储介质 |
| CN115905039B (zh) * | 2022-11-16 | 2023-07-25 | 逸超医疗科技(北京)有限公司 | 一种基于PCIe接口高速获取超声数据的方法 |
| CN115756612A (zh) * | 2022-11-24 | 2023-03-07 | 上海壁仞智能科技有限公司 | 计算装置、操作方法和机器可读存储介质 |
| CN115658572B (zh) * | 2022-12-12 | 2023-04-14 | 北京象帝先计算技术有限公司 | 任务处理方法、装置、电子设备和计算机可读存储介质 |
| US12572485B2 (en) * | 2023-01-04 | 2026-03-10 | Mercedes-Benz Group AG | DMA scatter/gather using an internal buffer with line accessible memory |
| CN116069711B (zh) * | 2023-04-07 | 2023-07-14 | 浪潮电子信息产业股份有限公司 | 直接内存访问控制器、异构设备、内存访问方法及介质 |
| CN119127751B (zh) * | 2023-06-13 | 2026-01-06 | 联芸科技(杭州)股份有限公司 | Dma控制器、芯片、根复合体及端点设备 |
| CN117076353B (zh) * | 2023-10-16 | 2024-02-02 | 苏州元脑智能科技有限公司 | 描述符的配置方法和描述符的配置装置 |
| CN117312201B (zh) * | 2023-11-29 | 2024-02-13 | 苏州元脑智能科技有限公司 | 一种数据传输方法、装置及加速器设备、主机和存储介质 |
| CN118838859B (zh) * | 2024-09-24 | 2024-12-10 | 浪潮电子信息产业股份有限公司 | 一种数据传输方法、产品、设备及介质 |
| CN119988268A (zh) * | 2025-01-06 | 2025-05-13 | 山东云海国创云计算装备产业创新中心有限公司 | Dma传输方法和装置 |
| CN120011292B (zh) * | 2025-04-18 | 2025-06-17 | 浪潮电子信息产业股份有限公司 | 直接内存访问控制器、方法、计算机程序产品及电子设备 |
| CN120631825B (zh) * | 2025-08-14 | 2025-12-12 | 凯云联创(北京)科技有限公司 | FPGA高速数据传输的PCIe接口实现方法及装置 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6145016A (en) * | 1998-09-03 | 2000-11-07 | Advanced Micro Devices, Inc. | System for transferring frame data by transferring the descriptor index data to identify a specified amount of data to be transferred stored in the host computer |
| US7912997B1 (en) * | 2008-03-27 | 2011-03-22 | Xilinx, Inc. | Direct memory access engine |
| CN102841871A (zh) * | 2012-08-10 | 2012-12-26 | 无锡众志和达存储技术股份有限公司 | 基于高速串行总线的DMA结构的pipeline读写方法 |
| US9053093B1 (en) * | 2013-08-23 | 2015-06-09 | Altera Corporation | Modular direct memory access system |
| CN114443529A (zh) * | 2022-04-02 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 内存直接访问架构、系统、方法、电子设备和介质 |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN2507066Y (zh) * | 2001-10-18 | 2002-08-21 | 深圳市中兴集成电路设计有限责任公司 | 一种直接存储器访问控制器 |
| US7818389B1 (en) * | 2006-12-01 | 2010-10-19 | Marvell International Ltd. | Packet buffer apparatus and method |
| TWI465905B (zh) * | 2010-09-22 | 2014-12-21 | Toshiba Kk | 記憶體系統、主機控制器、及直接記憶體存取之控制方法 |
| CN103714027B (zh) * | 2014-01-10 | 2016-04-20 | 浪潮(北京)电子信息产业有限公司 | 一种直接内存存取控制器的数据传输方法及装置 |
| US20170147517A1 (en) * | 2015-11-23 | 2017-05-25 | Mediatek Inc. | Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method |
| CN110389709B (zh) * | 2018-04-19 | 2024-11-01 | 北京忆恒创源科技股份有限公司 | 顺序流检测与数据预读 |
| CN111190842B (zh) * | 2019-12-30 | 2021-07-20 | Oppo广东移动通信有限公司 | 直接存储器访问、处理器、电子设备和数据搬移方法 |
| CN111538679B (zh) * | 2020-05-12 | 2023-06-06 | 中国电子科技集团公司第十四研究所 | 一种基于内嵌dma的处理器数据预取方法 |
| CN113986533B (zh) * | 2021-10-15 | 2025-06-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、dma控制器及计算机可读存储介质 |
-
2022
- 2022-04-02 CN CN202210340235.XA patent/CN114443529B/zh active Active
- 2022-11-28 US US18/724,096 patent/US12277079B2/en active Active
- 2022-11-28 WO PCT/CN2022/134792 patent/WO2023185035A1/zh not_active Ceased
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6145016A (en) * | 1998-09-03 | 2000-11-07 | Advanced Micro Devices, Inc. | System for transferring frame data by transferring the descriptor index data to identify a specified amount of data to be transferred stored in the host computer |
| US7912997B1 (en) * | 2008-03-27 | 2011-03-22 | Xilinx, Inc. | Direct memory access engine |
| CN102841871A (zh) * | 2012-08-10 | 2012-12-26 | 无锡众志和达存储技术股份有限公司 | 基于高速串行总线的DMA结构的pipeline读写方法 |
| US9053093B1 (en) * | 2013-08-23 | 2015-06-09 | Altera Corporation | Modular direct memory access system |
| CN114443529A (zh) * | 2022-04-02 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 内存直接访问架构、系统、方法、电子设备和介质 |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117891762A (zh) * | 2023-12-18 | 2024-04-16 | 中科驭数(北京)科技有限公司 | 一种基于PICe的主机至网卡数据发送方法及系统 |
| CN117667793A (zh) * | 2024-01-30 | 2024-03-08 | 苏州元脑智能科技有限公司 | 一种多通道描述符管理系统、方法、设备、介质 |
| CN117667793B (zh) * | 2024-01-30 | 2024-04-09 | 苏州元脑智能科技有限公司 | 一种多通道描述符管理系统、方法、设备、介质 |
| CN118132469A (zh) * | 2024-05-08 | 2024-06-04 | 杭州长川科技股份有限公司 | 测试机通信系统、通信方法和测试机 |
| CN118885420A (zh) * | 2024-09-29 | 2024-11-01 | 苏州元脑智能科技有限公司 | 一种桥接系统及计算架构 |
| CN118885419A (zh) * | 2024-09-29 | 2024-11-01 | 紫光恒越技术有限公司 | 数据转发方法、装置、介质及程序产品 |
| CN118916150A (zh) * | 2024-10-10 | 2024-11-08 | 上海燧原智能科技有限公司 | 一种多主机任务同步器和多主机任务同步方法 |
| CN120762747A (zh) * | 2025-05-21 | 2025-10-10 | 上海天数智芯半导体股份有限公司 | 一种设备寄存器的访问方法、电子设备及存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| US12277079B2 (en) | 2025-04-15 |
| US20240419617A1 (en) | 2024-12-19 |
| CN114443529B (zh) | 2022-07-05 |
| CN114443529A (zh) | 2022-05-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2023185035A1 (zh) | 内存直接访问架构、系统、方法、电子设备和介质 | |
| US11635902B2 (en) | Storage device processing stream data, system including the same, and operation method | |
| US9696942B2 (en) | Accessing remote storage devices using a local bus protocol | |
| US9727503B2 (en) | Storage system and server | |
| CN107992436B (zh) | 一种NVMe数据读写方法及NVMe设备 | |
| US8949486B1 (en) | Direct memory access to storage devices | |
| US8352689B2 (en) | Command tag checking in a multi-initiator media controller architecture | |
| CN100440184C (zh) | 一种能同时进行读写操作的dma控制器及传输方法 | |
| CN103221995B (zh) | 显示管中的流翻译 | |
| US20190278485A1 (en) | Adaptive transaction layer packet for latency balancing | |
| US10740000B2 (en) | Adaptive transaction layer packet for latency balancing | |
| CN113032293B (zh) | 缓存管理器及控制部件 | |
| TW200406680A (en) | Method, system, and program for handling input/output commands | |
| WO2013170730A1 (zh) | Dma传输方法及系统 | |
| US9875199B2 (en) | Data transfer control apparatus | |
| CN112416250B (zh) | 基于NVMe的固态硬盘的命令处理方法及相关设备 | |
| WO2020000485A1 (zh) | 一种基于NVMe的数据写入方法、装置及系统 | |
| WO2016038710A1 (ja) | ストレージシステム | |
| CN101539902A (zh) | 多计算机系统中节点的dma设备及通信方法 | |
| US8972624B2 (en) | USB virtualization | |
| CN101162448A (zh) | 一种usb高速数据隧道的硬件传输方法 | |
| EP4254207B1 (en) | Data processing apparatus and method, and related device | |
| CN119311627B (zh) | 基于描述符的PCIe总线DMA高速数据传输方法及设备 | |
| CN114817965A (zh) | 基于多算法ip核实现msi中断处理的高速加解密系统及方法 | |
| WO2024113704A1 (zh) | 一种pcie数据传输方法及相关装置 |
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: 22934853 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 18724096 Country of ref document: US |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 22934853 Country of ref document: EP Kind code of ref document: A1 |
|
| WWG | Wipo information: grant in national office |
Ref document number: 18724096 Country of ref document: US |
|
| 32PN | Ep: public notification in the ep bulletin as address of the adressee cannot be established |
Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 07.03.2025) |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 22934853 Country of ref document: EP Kind code of ref document: A1 |



