CN115964316A - 用于自动直接存储器访问数据格式化的硬件系统 - Google Patents
用于自动直接存储器访问数据格式化的硬件系统 Download PDFInfo
- Publication number
- CN115964316A CN115964316A CN202211235057.0A CN202211235057A CN115964316A CN 115964316 A CN115964316 A CN 115964316A CN 202211235057 A CN202211235057 A CN 202211235057A CN 115964316 A CN115964316 A CN 115964316A
- Authority
- CN
- China
- Prior art keywords
- data
- memory access
- direct memory
- payload
- target destination
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/4009—Coupling between buses with data restructuring
- G06F13/4013—Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
- Communication Control (AREA)
Abstract
本申请公开了用于自动直接存储器访问数据格式化的硬件系统。一种硬件直接存储器访问控制器(600)包括:输入端口(610),其被配置为从电子设备接收数据以用于直接存储器访问传输;输出端口(630),其被配置为提供数据用于直接存储器访问;以及公开了处理电路(620))。处理电路(620)被配置为经由输入端口(610)从电子设备接收包括报头和有效载荷的数据,解析报头以确定包括事务长度和输入数据格式的数据参数,并至少部分基于数据参数选择数据的目标目的地。处理电路还被配置为至少部分地基于事务长度分配在目标目的地内的存储器,并且至少部分地基于数据参数来格式化有效载荷以用于直接存储器访问,并且使用直接存储器访问经由输出端口(630)传输格式化的有效载荷以存储在目标目的地内的分配的存储器内。
Description
技术领域
背景技术
直接存储器访问(DMA)用于直接传输数据,而无需中央处理单元(CPU)内核的干预。为了使此传输正常运行,需要在数据传输之前正确配置DMA通道。
通常,当将协议应用于输入数据时,在CPU上运行的软件会解析协议的报头,提取输入数据的有效载荷,对数据进行转码,执行任何必要的数据操纵,并将输入数据传输到目的地存储器内的适当位置。
软件通常事先不知道输入数据的长度或量,因此软件(通常在中断请求(IRQ)例程中)必须解析它,然后相应地设置和执行作业。
这个解析、转码和数据操纵的过程需要在硬件物理接口和软件之间的大量交互。这需要对数据进行实时处理,消耗CPU处理时间,并且需要使用大的硬件先进先出(FIFO)存储器,以便在不丢失数据的情况下保持物理接口数据流。
发明内容
在一个实施方式中,提供一种硬件直接存储器访问控制器。硬件直接存储器访问控制器包括输入端口,其被配置为从电子设备接收数据以用于直接存储器访问;输出端口,其被配置为提供数据用于直接存储器访问传输;以及处理电路,其与输入端口和输出端口耦合。
处理电路被配置为经由输入端口从电子设备接收包括报头和有效载荷的数据,解析报头以确定包括事务长度和输入数据格式的数据参数,并至少基于部分基于数据参数选择数据的目标目的地。
处理电路还被配置为至少部分地基于事务长度在目标目的地内分配存储器,并且至少部分地基于数据参数格式化有效载荷以用于直接存储器访问。处理电路还被配置为使用直接存储器访问经由输出端口传输格式化的有效载荷以存储在目标目的地内的分配存储器内。
在另一个实施方式中,提供了一种用于操作硬件直接存储器访问控制器的方法。该方法包括经由输入端口从电子设备接收包括报头和有效载荷的数据,解析报头以确定包括事务长度和输入数据格式的数据参数,以及至少部分地基于数据参数选择数据的目标目的地。
该方法还包括至少部分地基于事务长度在目标目的地内分配存储器,至少部分地基于数据参数格式化有效载荷用于直接存储器访问,以及使用直接存储器访问经由输出端口传输格式化的有效载荷以存储在目标目的地内的分配存储器内。
在进一步的实施方式中,提供了一种电子设备。电子设备包括输入/输出端口,其被配置为在电子设备和外部电子设备之间传输数据;存储器,其被配置为存储从外部电子设备接收的数据;以及硬件直接存储器访问控制器,其与输入/输出端口和存储器耦合。
硬件直接存储器访问控制器被配置为经由输入/输出端口从外部电子设备接收包括报头和有效载荷的数据,解析报头以确定包括事务长度和输入数据格式的数据参数,并且至少部分地基于数据参数在存储器内选择数据的目标目的地。
硬件直接存储器访问控制器还被配置为至少部分地基于事务长度在目标目的地内分配存储器,至少部分地基于数据参数格式化有效载荷以用于直接存储器访问,并且使用直接存储器访问经由输入/输出端口传输格式化的有效载荷以存储在存储器中。
附图说明
参考以下附图可以更好地理解本公开的许多方面。尽管结合这些附图描述了若干实施方式,但本公开不限于本文所公开的实施方式。相反,其目的是涵盖所有替代方案、修改和等价物。
图1图示了用于传输数据的包括硬件DMA数据控制器的系统的示例实施例。
图2图示了用于传输数据的包括硬件DMA数据控制器的系统的另一个示例实施例。
图3图示了用于传输数据的包括硬件DMA数据控制器的系统的另一个示例实施例。
图4图示了两种不同数据格式的示例数据格式化。
图5图示了用于操作硬件DMA控制器的示例方法。
图6图示了电子设备内的硬件DMA控制器的示例实施例。
具体实施方式
在当前复杂的电子设备(诸如片上系统(SoC)设备)中,微控制器(MCU)用于管理设备内的任何直接存储器访问(DMA)操作。MCU为DMA操作生成作业描述符,描述数据有效载荷和存储器中的位置,以便在存储操作中存储数据,或在读取操作中读取数据。FIFO用作外围设备和内部存储器访问之间的抖动缓冲器。
对于发射操作,DMA或MCU将数据复制到FIFO,并且外围设备从FIFO复制数据并通过接口(例如串行外围设备接口(SPI)、安全数字输入输出(SDIO)、通用异步接收器-发射器(UART)等)传输它。对于接收操作,外围设备从接口接收数据并将其存储在FIFO中。然后MCU或DMA模块将数据复制到储存存储器。FIFO的这种操作克服了抖动,并允许MCU或DMA模块间隔工作。
通过将所需的DMA管理操作从MCU传输到设备内的专用硬件DMA模块,MCU可用于处理不涉及DMA例程的其它指令,从而导致提高MCU效率。
图1图示了用于传输数据的包括硬件DMA数据控制器140的系统100的示例实施例。在本发明的该示例实施例中,电子系统100包括主机微控制器110和片上系统120。这里主机微控制器110和片上系统120二者是在整个电子系统内操作的电子设备的具体示例。其它示例实施例包含所有在本发明的范围内的其它电子设备。
在该示例实施例中,微控制器130、硬件DMA控制器140、串行接口150、RAM存储器160和总线121包括片上系统(SoC)120。在该示例实施例中,串行接口150还包括发射FIFO152和接收FIFO154。
串行接口150通过物理接口122与主机微控制器110通信。微控制器130、硬件DMA控制器140、串行接口150和RAM存储器160通过总线121相互通信。在该示例实施例中,与总线121耦合的模块是启动器模块或目标模块。启动器模块是总线上能够发起事务的节点。微控制器130是启动器,而串行接口150是目标。这意味着微控制器130能够访问串行接口150并从其读取数据或将数据写入其中。
硬件DMA控制器140既作为启动器又作为目标来运行。它作为目标运行以允许微控制器130控制和设置作业,并且作为启动器运行以便从串行接口150内的接收FIFO154读取数据并将该数据复制到RAM存储器160。它还作为启动器运行,以便从RAM存储器160读取数据并将该数据复制到串行接口150内的发射FIFO152中。
注意,图1是片上系统120的大大简化的图示。实际上,片上系统120要复杂得多,其包括在各种模块和外围设备之间的数据总线和控制接口,并且包括许多图1未图示的模块和外围设备。
在该示例实施例中,硬件DMA控制器140执行即时DMA事务数据解析和执行,而不需要来自微控制器130的直接控制。当硬件DMA控制器140从串行接口150接收输入数据时,它解析输入数据的报头以检测事务长度和数据格式,在RAM存储器160内设置目标目的地,在RAM存储器160内的正确存储器池内分配空间,执行输入数据的任何必要的位重组和转码。
硬件DMA控制器140内的这些操作消除了对预定义配置的需要,减少了MCU处理要求及其相关联的软件占用空间,消除了冗余软件分配,并避免了FIFO溢出的任何可能性。
在该示例实施例中,硬件DMA控制器140被配置为执行外围设备到存储器、存储器到外围设备和存储器到存储器的DMA事务。
在操作中,片上系统通过物理接口122从主机微控制器110接收包含报头和有效载荷的输入数据。物理接口122包括多种数据接口中的任何一种,其包括但不限于串行外围接口(SPI)、安全数字输入输出(SDIO)、通用异步收发器(UART)等。在接收数据之前,片上系统120通常不知道输入物理数据格式。硬件DMA控制器140从要接收的可能物理数据格式列表中确定输入数据包括哪种格式。
一旦确定了物理数据格式,硬件DMA控制器140就解析输入数据的报头以确定用于将数据存储在RAM存储器160中的正确数据参数。例如,硬件DMA控制器140确定事务长度,或要存储的数据量,以及输入数据的数字格式。
基于报头,硬件DMA控制器140确定数据的目标目的地。硬件DMA控制器140基于从输入数据的报头提取的数据参数在目标目的地内分配存储器。
这些数据参数包括数据格式、数据量等。硬件DMA控制器140至少部分地基于这些数据参数来确定将数据存储在目标目的地内的什么位置。存储器分配包括在目标目的地内的存储器分区之间进行选择,其中根据数据类型对存储器进行分区。
然后,硬件DMA控制器140确定在将数据存储在RAM存储器160中之前所需的任何必要的位重组或数据转码,并对有效载荷执行所需的位重组和/或数据转码。
位重组是本领域的术语,特别是在计算机图形学中,用于描述通过任意重新排列和组合其它向量的分量来组成向量的过程。转码也是本领域的术语,用于描述将数据从一种数据格式转换为另一种数据格式的过程。图4图示了在大端数据格式和小端数据格式之间转码数据的示例。
数据格式化、位重组和转码由硬件DMA控制器140即时完成,使得硬件DMA控制器140使用直接存储器访问经由输出端口传输格式化的有效载荷以存储在目标目的地内的分配的存储器内,同时仍接收、格式化、位重组和转码传入数据。这些数据格式化、位重组和转码操作通常在每个字的基础上(一次32或64位)执行。
图2图示了用于传输数据的包括硬件DMA数据控制器220的系统200的另一个示例实施例。在本发明的该示例实施例中,电子系统200包括主机平台/微控制器230和电子设备210。在该示例实施例中,输入/输出(I/O)端口222、硬件DMA控制器220、存储器224和网络处理器/MCU 226组成电子设备210。在该示例实施例中,电子系统200还被配置为经由Wi-Fi天线228与其它外部设备通信。
I/O端口222通过物理接口242与主机230通信。I/O端口222通过链路241与硬件DMA控制器220交换数据,并且硬件DMA控制器220通过链路240与存储器224交换已转码数据。硬件DMA控制器220还通过链路243向网络处理器/MCU 226提供数据格式。
注意,图2是电子设备210的大大简化图示。在实际实践中,电子设备210要复杂得多,其包括各种模块和外围设备之间的数据总线和控制接口,并且包括图2中未图示的众多模块和外围设备。
在该示例实施例中,硬件DMA控制器220执行即时DMA事务数据解析和执行,而不需要来自网络处理器/MCU 226的直接控制。当硬件DMA控制器220从I/O端口222接收输入数据时,它解析输入数据的报头以检测事务长度和数据格式,在存储器224内设置目标目的地,分配在存储器224内的正确存储器池内的空间,对输入数据执行任何必要的位重组和转码,以及可选地执行用于数据分段和聚合的增强分散聚集模式。
硬件DMA控制器220内的这些操作消除了对预定义配置的需要,减少了MCU处理要求及其相关联的软件占用空间,消除了冗余软件分配,并避免了FIFO溢出的任何可能性。
在该示例实施例中,硬件DMA控制器220被配置为执行外围设备到存储器、存储器到外围设备和存储器到存储器的DMA事务。
在操作中,电子设备210通过物理接口242从主机230接收包括报头和有效载荷的输入数据。物理接口242包括多种数据接口中的任何一种,其包括但不限于串行外围接口(SPI)、安全数字接口输入输出(SDIO)、通用异步收发器(UART)等。电子设备210在接收数据之前通常不知道输入物理数据格式。硬件DMA控制器220从要接收的可能物理数据格式的列表中确定输入数据包括哪种格式。
一旦确定了物理数据格式,硬件DMA控制器220就解析输入数据的报头以确定用于将数据存储在存储器224中的正确数据参数。例如,硬件DMA控制器220确定事务长度或要存储的数据量,以及输入数据的数字格式。
基于报头,硬件DMA控制器220确定数据的目标目的地。该目标目的地可以是存储器224、外部存储器(未图示)、经由Wi-Fi天线228链接的外部设备等。硬件DMA控制器220基于从输入数据的报头提取的数据参数在目标目的地内分配存储器。
这些数据参数包括数据格式、数据量等。硬件DMA控制器220至少部分地基于这些数据参数来确定将数据存储在目标目的地内的什么位置。存储器分配包括在目标目的地内的存储器分区之间进行选择,其中根据数据类型对存储器进行分区。可选地,硬件DMA控制器220在从存储器接收数据时执行数据聚合并且在将数据分配给存储器时执行数据分段。在本发明的一些示例实施例中,该聚合和分段被执行为用于与目标目的地交接的分散-聚集模式。
然后,硬件DMA控制器220确定在数据被存储在存储器224中之前所需的任何必要的位重组或数据转码,并在有效载荷上执行所需的位重组和/或数据转码。
位重组是本领域的术语,特别是在计算机图形学中,用于描述通过任意重新排列和组合其它向量的分量来组成向量的过程。转码也是本领域的术语,用于描述将数据从一种数据格式转换为另一种数据格式的过程。图4图示了在大端数据格式和小端数据格式之间转码数据的示例。
数据格式化、位重组和转码由硬件DMA控制器220即时完成,使得硬件DMA控制器220使用直接存储器访问经由输出端口传输格式化的有效载荷以存储在目标目的地内的分配的存储器内,同时仍接收、格式化、位重组和转码传入数据。这些数据格式化、位重组和转码操作通常在每个字的基础上(一次32或64位)执行。
图3图示了用于传输数据的包括硬件DMA数据控制器340的系统300的另一个示例实施例。在本发明的该示例实施例中,电子系统300包括外部控制器/设备310和电子设备320。电子设备320被配置通过物理接口312从外部控制器/设备310接收数据。在该示例实施例中,电子设备320包括硬件DMA控制器340和存储器360。硬件DMA控制器340包括报头解析模块344和数据处理模块346-352。
在该示例实施例中,报头处理模块344和数据处理模块346-352是指令模块,其被配置为引导硬件DMA控制器340内的处理电路以如本文所述进行操作。一些数据处理模块346-352是可选的并且不在由硬件DMA控制器340执行的每个DMA操作中使用。图3图示了硬件DMA控制器340对电子设备320通过物理接口从外部控制器/设备310接收的数据执行的数据操纵。请注意,硬件DMA控制器340还执行DMA操作所需的其它功能,诸如上面关于图2讨论的那些功能。
报头解析模块344指示硬件DMA控制器340内的处理电路解析输入数据的报头342以确定用于将数据存储在存储器360中的正确数据参数。例如,报头解析模块344确定事务长度或要存储的数据量,以及输入数据的数字格式。
至少部分地基于由报头解析模块344确定的数据参数,硬件DMA控制器340确定在将数据存储在存储器360中之前所需的任何必要的位重组或数据转码,并且对有效载荷执行所需的位重组和/或数据转码。
位重组是本领域的术语,特别是在计算机图形学中,用于描述通过任意重新排列和组合其它向量的分量来组成向量的过程。转码也是本领域的术语,用于描述将数据从一种数据格式转换为另一种数据格式的过程。图4图示了在大端数据格式和小端数据格式之间转码数据的示例。
根据需要,数据位重组模块346引导硬件DMA控制器340内的处理电路执行必要的位重组。同样根据需要,数据转码模块348引导硬件DMA控制器340内的处理电路执行必要的数据转码。数据聚合模块350引导硬件DMA控制器340内的处理电路在任何类型的分散-聚集存储器操作中执行任何必要的数据聚合。数据分段模块352引导硬件DMA控制器340内的处理电路在任何类型的分散-聚集存储器操作中执行任何必要的数据分段。
一旦有效载荷被正确格式化以用于存储,硬件DMA控制器340使用直接存储器访问经由输出端口传输格式化的有效载荷以用于存储在目标目的地360内的分配的存储器内。
图4图示了两种不同数据格式的示例数据格式化。图4图示了由硬件DMA控制器340内的处理电路执行的数据格式化400的示例。
在此示例中,在有效载荷中的数据可以是大端格式或小端格式。图4图示了具有长度为字节[0xAA]、短[0xAABB]和长[0xAABBCCDD]长度的数据的这两种格式。对于字节长度的数据,大端402和小端404数据没有区别。然而,对于短长度和长长度的数据,数据格式在它们存储其数据的各个字节的顺序上有所不同。
对于短长度的数据,数据[0xAABB]以顺序[AA]、[BB]存储在存储器位置中作为大端406数据,而相同的数据以顺序[BB]、[AA]存储在存储器位置中作为小端数据408。类似地,对于长长度的数据,数据[0xAABBCCDD]以顺序[AA]、[BB]、[CC]、[DD]存储在存储器位置中作为大端410数据,而相同的数据以顺序[DD]、[CC]、[BB]、[AA]存储在存储器位置中作为小端412数据。
硬件DMA控制器340基于输入数据的格式和存储器360内的数据的格式根据需要在大端格式和小端格式之间对数据进行格式化。图4图示了数据格式化的一个示例。硬件DMA控制器340被配置为根据需要在数据格式之间执行其它不同的数据格式化方法。
图5图示了用于操作硬件DMA控制器340的示例方法。在该示例方法中,硬件DMA控制器340内的处理电路由各种模块控制以执行以下操作。
在该示例实施例中,硬件DMA控制器340经由输入端口从电子设备310接收包括报头和有效载荷的数据(操作500)。硬件DMA控制器340解析报头以确定包括事务长度和输入数据格式的数据参数(操作502)。
硬件DMA控制器340至少部分地基于数据参数来选择数据的目标目的地360(操作504)。硬件DMA控制器340在数据的目标目的地360内分配存储器(操作506)。
硬件DMA控制器340至少部分地基于数据参数来格式化有效载荷以用于直接存储器访问(操作508)。在一个示例实施例中,该格式化操作以块或字为基础执行并且被重复直到已经接收到整个有效载荷。硬件DMA控制器340然后使用直接存储器访问经由输出端口传输格式化的有效载荷以存储在目标目的地360内的分配的存储器内(操作510)。在一个示例实施例中,该传输操作也以块或字为基础执行并且被重复直到已经存储了整个有效载荷。
图6图示了电子设备320内的硬件DMA控制器600的示例实施例。如上所述,硬件DMA控制器600可以采用多种配置中的任何一种。在此,为实施为ASIC的电子设备320内的硬件DMA控制器600提供示例配置。在一些实施例中,硬件DMA控制器600是片上系统(SoC)内的模块。
在该示例实施例中,硬件DMA控制器600包括输入端口610、处理电路620、输出端口630和内部存储系统640。在一个示例配置中,输入端口610包括被配置为从电子设备310接收输入数据以用于存储在存储器中的电路。输出端口630包括被配置为向存储系统或存储器360发送数据和命令的电路。在一些实施例中,输入端口610和输出端口630被组合成单个输入/输出(I/O)端口。
处理电路620包括被配置为执行如上所述的硬件DMA控制器340的任务的电子电路。在一些实施例中,处理电路620可以嵌入在复杂电子设备320中。处理电路620的示例包括通用中央处理单元、专用处理器和逻辑设备以及任何其它类型的处理设备、它们的组合或变体。处理电路620可以在单个处理设备内实施,但也可以分布在协作执行程序指令的多个处理设备或子系统上。
在一个示例实施例中,硬件DMA控制器600被实施为专用模块,并且定制处理电路620被提供以经由一个或多个硬件模块执行本文所述的功能,一个或多个硬件模块包括报头解析模块621、数据位重组模块622、数据转码模块623、数据聚合模块624、数据分段模块625和存储器分配模块626。
内部存储系统640包括能够存储数据的任何非暂时性计算机可读存储介质。内部存储系统640还包括各种数据结构650,其包括一个或多个数据库、表格、列表或其它数据结构,包括由处理电路620使用的物理数据格式、数字数据格式、数据缓冲器等的列表。内部存储系统640可以包括以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术实施的易失性和非易失性、可移动和不可移动介质。
内部存储系统640可以被实施为单个存储设备,但也可以跨多个存储设备、子系统或相对于彼此共同定位或分布的模块来实施。内部存储系统640可以包括附加元件,诸如能够与处理电路620通信的控制器。存储介质的示例包括随机访问存储器、只读存储器、磁盘、光盘、闪存、虚拟存储器和非虚拟存储器、磁盒、磁带、磁盘存储装置或其它磁性存储设备,或可用于存储所需信息且可由指令执行系统访问的任何其它介质,以及它们的任何组合或变体。
在该示例实施例中,内部存储系统640还包括一个或多个FIFO 660,诸如来自图1的Tx(发射)FIFO 152和Rx(接收)FIFO 154。这些FIFO 660用于克服抖动并允许硬件DMA控制器600间隔运行。
处理电路620内的报头处理模块621解析数据报头,以便确定包括事务长度和输入数据格式的数据参数。处理电路620内的数据位重组模块622执行任何所需的数据位重组。处理电路620内的数据转码模块623执行任何所需的数据转码。在一些示例中,数据转码模块623还根据需要执行任何数据格式化,例如图4中所示。
处理电路620内的数据聚合模块624以分散-聚集型模式执行任何所需的数据聚合。例如,数据聚合模块624对多个数据有效载荷执行数据聚合。
处理电路620内的数据分段模块625以分散-聚集类型模式执行任何所需的数据分段。例如,数据分段模块665通过将有效载荷划分为多个数据分区,分别处理每个数据分区,在目标目的地内分配对应于多个数据分区的多个存储器位置,以及将多个数据分区中的每一个存储在多个存储器位置之一中来对有效载荷执行数据分段。
处理电路620内的存储器分配模块626分配存储器用于存储数据。
所包括的描述和附图描绘了特定实施例以教导本领域技术人员如何制作和使用最佳模式。为了教导发明原理,一些常规方面已被简化或省略。本领域技术人员将理解落入本发明范围内的这些实施例的变体。本领域技术人员还将理解,上述特征可以以各种方式组合以形成多个实施例。结果,本发明不限于上述特定实施例,而仅受权利要求及其等同物的限制。
Claims (20)
1.一种硬件直接存储器访问控制器,其包括:
输入端口,其被配置为从电子设备接收数据以用于直接存储器访问;
输出端口,其被配置为提供数据以用于直接存储器访问传输;以及
处理电路,其与所述输入端口和所述输出端口耦合,所述处理电路被配置为:
经由所述输入端口从所述电子设备接收包括报头和有效载荷的数据;
解析所述报头以确定包括事务长度和输入数据格式的数据参数;
至少部分地基于所述数据参数选择所述数据的目标目的地;
至少部分基于所述事务长度在所述目标目的地内分配存储器;
至少部分基于所述数据参数格式化所述有效载荷以用于直接存储器访问;以及
使用直接存储器访问经由所述输出端口传输格式化的有效载荷以存储在所述目标目的地内的所分配的存储器中。
2.根据权利要求1所述的硬件直接存储器访问控制器,其中所述处理电路还被配置为对所述数据执行位重组。
3.根据权利要求1所述的硬件直接存储器访问控制器,其中所述处理电路还被配置为使用分散-聚集模式在所述目标目的地内分配存储器。
4.根据权利要求3所述的硬件直接存储器访问控制器,其中所述处理电路还被配置为对多个数据有效载荷执行数据聚合。
5.根据权利要求3所述的硬件直接存储器访问控制器,其中所述处理电路还被配置为通过将所述有效载荷划分为多个数据分区、分别处理每个数据分区、在所述目标目的地内分配对应于所述多个数据分区的多个存储器位置,以及将所述多个数据分区中的每一个存储在所述多个存储器位置之一中来对所述有效载荷执行数据分段。
6.根据权利要求1所述的硬件直接存储器访问控制器,其中所述处理电路还被配置为至少部分地基于所述输入数据格式在所述目标目的地内分配存储器。
7.根据权利要求1所述的硬件直接存储器访问控制器,其中所述输入端口和所述输出端口一起包括输入/输出端口。
8.一种用于操作硬件直接存储器访问控制器的方法,其包括:
经由输入端口从电子设备接收包括报头和有效载荷的数据;
解析所述报头以确定包括事务长度和输入数据格式的数据参数;
至少部分地基于所述数据参数选择所述数据的目标目的地;
至少部分基于所述事务长度在所述目标目的地内分配存储器;
至少部分基于所述数据参数格式化所述有效载荷以用于直接存储器访问;以及
使用直接存储器访问经由输出端口传输格式化的有效载荷以存储在所述目标目的地内的分配的存储器中。
9.根据权利要求8所述的方法,其中所述处理电路还被配置为对所述数据执行位重组。
10.根据权利要求8所述的方法,其中所述处理电路还被配置为使用分散-聚集模式在所述目标目的地内分配存储器。
11.根据权利要求10所述的方法,其中所述处理电路还被配置为对多个数据有效载荷执行数据聚合。
12.根据权利要求10所述的方法,其中所述处理电路还被配置为通过将所述有效载荷划分为多个数据分区、分别处理每个数据分区、在所述目标目的地内分配对应于所述多个数据分区的多个存储器位置,以及将所述多个数据分区中的每一个存储在所述多个存储器位置之一中来对所述有效载荷执行数据分段。
13.根据权利要求8所述的方法,其中所述处理电路还被配置为至少部分地基于所述输入数据格式在所述目标目的地内分配存储器。
14.根据权利要求8所述的方法,其中所述输入端口和所述输出端口一起包括输入/输出端口。
15.一种电子设备,其包括:
输入/输出端口,其被配置为在所述电子设备和外部电子设备之间传输数据;
存储器,其被配置为存储从所述外部电子设备接收的数据;以及
硬件直接存储器访问控制器,其与所述输入/输出端口和所述存储器耦合,所述硬件直接存储器访问控制器被配置为:
经由所述输入/输出端口从所述外部电子设备接收包括报头和有效载荷的数据;
解析所述报头以确定包括事务长度和输入数据格式的数据参数;
至少部分地基于所述数据参数在所述存储器内选择所述数据的目标目的地;
至少部分基于所述事务长度在所述目标目的地内分配存储位置;
至少部分基于所述数据参数格式化所述有效载荷以用于直接存储器访问;以及
使用直接存储器访问经由所述输入/输出端口传输格式化的有效载荷以存储在所述存储器中。
16.根据权利要求15所述的电子设备,其中所述硬件直接存储器访问控制器还被配置为对所述数据执行位重组。
17.根据权利要求15所述的电子设备,其中所述硬件直接存储器访问控制器还被配置为使用分散-聚集模式在所述目标目的地内分配存储器。
18.根据权利要求17所述的电子设备,其中所述硬件直接存储器访问控制器还被配置为对多个数据有效载荷执行数据聚合。
19.根据权利要求17所述的电子设备,其中所述硬件直接存储器访问控制器还被配置为通过将所述有效载荷划分为多个数据分区、分别处理每个数据分区、在所述目标目的地内分配对应于所述多个数据分区的多个存储器位置,以及将所述多个数据分区中的每一个存储在所述多个存储器位置之一中来对所述有效载荷执行数据分段。
20.根据权利要求15所述的电子设备,其中所述硬件直接存储器访问控制器还被配置为至少部分地基于所述输入数据格式在所述目标目的地内分配存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/499,522 | 2021-10-12 | ||
US17/499,522 US20230112720A1 (en) | 2021-10-12 | 2021-10-12 | Hardware system for automatic direct memory access data formatting |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115964316A true CN115964316A (zh) | 2023-04-14 |
Family
ID=83691038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211235057.0A Pending CN115964316A (zh) | 2021-10-12 | 2022-10-10 | 用于自动直接存储器访问数据格式化的硬件系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230112720A1 (zh) |
EP (1) | EP4167099A1 (zh) |
JP (1) | JP2023058030A (zh) |
CN (1) | CN115964316A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230342045A1 (en) * | 2022-04-21 | 2023-10-26 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for selecting devices in tiered memory |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5937170A (en) * | 1997-02-21 | 1999-08-10 | Vlsi Technology, Inc. | Data communications with processor-assertable addresses mapped to peripheral-accessible-addresses-times-command product space |
US20030097481A1 (en) * | 2001-03-01 | 2003-05-22 | Richter Roger K. | Method and system for performing packet integrity operations using a data movement engine |
US20030172189A1 (en) * | 2001-07-02 | 2003-09-11 | Globespanvirata Incorporated | Communications system using rings architecture |
US7707477B2 (en) * | 2005-09-29 | 2010-04-27 | Apple Inc. | Checksum calculation |
US20090296683A1 (en) * | 2008-05-27 | 2009-12-03 | Fujitsu Limited | Transmitting a protocol data unit using descriptors |
US10505747B2 (en) * | 2012-10-16 | 2019-12-10 | Solarflare Communications, Inc. | Feed processing |
US9916269B1 (en) * | 2016-04-14 | 2018-03-13 | Amazon Technologies, Inc. | Packet queueing for network device |
US11943207B2 (en) * | 2020-09-25 | 2024-03-26 | Intel Corporation | One-touch inline cryptographic data processing |
US20210117353A1 (en) * | 2020-12-23 | 2021-04-22 | Kishore Kasichainula | Methods and apparatus to transmit and/or receive data streams with a network interface controller |
US11467998B1 (en) * | 2021-03-16 | 2022-10-11 | Amazon Technologies, Inc. | Low-latency packet processing for network device |
US20220398282A1 (en) * | 2021-06-10 | 2022-12-15 | Fidelity Information Services, Llc | Systems and methods for multi-vendor storage infrastructure in a dashboard |
-
2021
- 2021-10-12 US US17/499,522 patent/US20230112720A1/en active Pending
-
2022
- 2022-10-10 CN CN202211235057.0A patent/CN115964316A/zh active Pending
- 2022-10-12 EP EP22201095.1A patent/EP4167099A1/en active Pending
- 2022-10-12 JP JP2022163626A patent/JP2023058030A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230112720A1 (en) | 2023-04-13 |
JP2023058030A (ja) | 2023-04-24 |
EP4167099A1 (en) | 2023-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6397316B2 (en) | System for reducing bus overhead for communication with a network interface | |
EP1430405B1 (en) | Method and apparatus for distributed direct memory access for systems on chip | |
US6813653B2 (en) | Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system | |
US7594057B1 (en) | Method and system for processing DMA requests | |
US5828901A (en) | Method and apparatus for placing multiple frames of data in a buffer in a direct memory access transfer | |
EP1358562B1 (en) | Method and apparatus for controlling flow of data between data processing systems via a memory | |
US6754735B2 (en) | Single descriptor scatter gather data transfer to or from a host processor | |
US6889266B1 (en) | Method for delivering packet boundary or other metadata to and from a device using direct memory controller | |
US20100281201A1 (en) | Protocol translation in a data storage system | |
CN102841871B (zh) | 基于高速串行总线的DMA结构的pipeline读写方法 | |
US6684281B1 (en) | Fast delivery of interrupt message over network | |
EP3077914B1 (en) | System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface | |
CN111078609A (zh) | 一种基于FPGA的PCIe转三总线接口及方法 | |
EP3058684B1 (en) | Network interface | |
US20140344485A1 (en) | Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit | |
EP4167099A1 (en) | Hardware system for automatic direct memory access data formatting | |
JPH06208548A (ja) | スマート・バス制御ユニット | |
US8032675B2 (en) | Dynamic memory buffer allocation method and system | |
US7216186B2 (en) | Controlling data flow between processor systems | |
CN114385534A (zh) | 一种数据处理的方法及装置 | |
CN115391257A (zh) | 数据总线通信 | |
US9990307B1 (en) | Split packet transmission DMA engine | |
CN117971135B (zh) | 存储设备的访问方法、装置、存储介质和电子设备 | |
CN117312202B (zh) | 片上系统和用于片上系统的数据传输方法 | |
CN115718712A (zh) | 基于虚拟串口的数据传输方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |