CN107430566B - 直接存储器访问描述符处理 - Google Patents
直接存储器访问描述符处理 Download PDFInfo
- Publication number
- CN107430566B CN107430566B CN201680018005.4A CN201680018005A CN107430566B CN 107430566 B CN107430566 B CN 107430566B CN 201680018005 A CN201680018005 A CN 201680018005A CN 107430566 B CN107430566 B CN 107430566B
- Authority
- CN
- China
- Prior art keywords
- descriptor
- dma
- slave
- processing
- fence
- 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.)
- Active
Links
Images
Classifications
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Systems (AREA)
Abstract
使用技术来提供跨多个直接存储器访问(DMA)引擎的数据移动的硬件加速的同步,在这些技术中,描述符处理的顺序对于涉及单个CPU和多个DMA引擎的情形以及涉及多个CPU和多个DMA引擎的情形而言是被保证的。
Description
背景
在现代片上系统(SoC)设计中,多个中央处理单元(CPU)通常被使用在单个硅芯片上用于处理来自不同源的数据。
概述
使用其中针对涉及单个CPU和多个直接存储器访问(DMA)引擎的情形以及涉及多个CPU和多个DMA引擎的情形对描述符处理的顺序进行协调的技术来提供跨多个DMA引擎的数据移动的硬件加速同步。本发明的描述符处理可提高系统中的存储器和其他组件之间的数据移动的效率,以减少跨CPU数据移动和监督开销,同时还使CPU在其他引擎正忙于大型数据移动时能够使用任何可用的DMA引擎将描述符入队以用于处理。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部分中所提及的任何或所有缺点的实现。将理解,上述主题可被实现为计算机控制的装置、计算机进程、计算系统或诸如一个或多个计算机可读存储介质之类的制品。通过阅读下面的详细描述并审阅相关联的附图,这些及各种其他特征将变得显而易见。
附图简述
图1示出了其中多个DMA引擎通过互连与一个或多个CPU互操作的说明性系统;
图2是说明性DMA引擎的简化功能框图;
图3示出了包括单个CPU以及使用时间戳跟踪和广播的多个DMA引擎的系统中的描述符处理的说明性示例;
图4是使用图3所示的系统的描述符处理的说明性方法的流程图;
图5示出了包括单个CPU以及使用标识符(ID)栅栏和释放的多个DMA引擎的系统中的描述符处理的说明性示例;
图6是使用图5所示的系统的描述符处理的说明性方法的流程图;
图7示出了包括多个CPU以及使用锁定和清除握手的多个DMA引擎的系统中的描述符处理的说明性示例;
图8是使用图7所示的系统的描述符处理的说明性方法的流程图;
图9示出了示例性计算系统。
各附图中相同的附图标记指示相同的元素。除非另外指明否则各元素不是按比例绘制的。
详细描述
图1示出了说明性系统100,其中多个DMA引擎(代表性地由附图标记105指示)通过互连120与一个或多个CPU 110互操作。互连120通常在芯片级工作,但是可包括处理器、高速缓存、存储器、外围组件(例如,PCIe-外围组件互连高速)等之间的互连,并且可在一些情况下被实现在单个芯片内,或者可在其他情况下支持多个芯片之间的连接。互连120不限于特定的协议或拓扑,并且作为示例而非任何限制可以包括总线、点对点、电路交换、交叉开关(crossbar)、基于分组的或片上网络布置或其组合。系统100通常使用片上系统(SoC)或嵌入式系统架构中的各种集成电路来以硬件实现。例如,系统100(包括DMA引擎105及其组成部件)可使用具有被布置成使系统100能够执行其如原先设计那样的功能的可配置逻辑块(CLB)的一个或多个现场可编程门阵列(FPGA)来被实现。每个CLB通常包括可配置的输入切换矩阵、诸如多路复用器(mux)和触发器(即,锁存器)电路之类的选择电路。互连120还可支持到各种存储器设备130和系统接口135的连接。一个或多个CPU 110可与紧密耦合的存储器(TCM)150相关联,如图所示。
图2是说明性DMA引擎105的简化功能框图。DMA引擎105根据CPU的控制自主地将数据块从源移动到目的地地址。在一些情况下,给定的传送是使用通常包括源地址、目的地地址、控制参数和其他信息的描述符205来进行配置的(在下面的说明性示例中描述了特定的描述符字段)。描述符被本地地储存在队列210中,并且在本地实现的逻辑220的控制下通过门215来到加载和存储管线230和250,管线230和250包括各自的命令管线235和260以及数据管线240和255。给定的描述符可通过设置栅栏位来被围以栅栏,使得在其之前的所有描述符在该被围以栅栏的描述符被处理之前都被处理。
DMA引擎105可通过数据管线执行数据重新对准270,以允许与存储器页面上的字节偏移无关的读取和写入。本地逻辑220使用到互连120的连接(这些连接由附图标记280代表性地指示)来被可操作地耦合到被实现在系统100中的其他DMA引擎105中的逻辑。然而,用于对被围以栅栏的描述符解除阻止的决定逻辑完全驻留在该被围以栅栏的描述符所驻留的DMA引擎中。未被围以栅栏的DMA引擎不需要知道被围以栅栏的DMA引擎正在等待它们完成其处理。DMA引擎105还可以可操作地耦合到全局ID存储器275和时间戳寄存器285。
在一些实现中,逻辑220可以通过使用MMIO(存储器映射的输入/输出)寄存器或其他合适的接口组件的软件来控制。因此,例如,软件可被用来取消被围以栅栏的描述符。
图3示出了使用包括单个CPU 110和多个DMA引擎1050-n的系统300的描述符处理的说明性示例。图4是针对使用可通过图3所示的系统300实现的时间戳跟踪和广播的描述符处理的说明性方法400的流程图。除非明确说明,否则流程图中所示并且在伴随的文本中描述的方法或步骤不限于特定的次序或顺序。此外,一些方法或其步骤可同时发生或被执行,并且取决于给定实现的要求,在此类实现中不是所有方法或步骤均需要被执行,并且一些方法或步骤可任选地被使用。
在框405中,当描述符被入队到系统100中的任何DMA引擎105时,DMA引擎105制作时间戳寄存器285中的值的副本以标记该描述符的年龄。当被入队时,时间戳与描述符一起被储存。时间戳寄存器285的大小通常被置位成足够大以保证没有冲突或时间戳重用。时间戳可被实现成周期计数器或者被实现成全局描述符计数器,其中全局描述符计数器通常需要较少的位。时间戳寄存器285被配置成对给定的DMA引擎集是唯一的,并且该集合中的所有DMA引擎使用时间戳寄存器值的一致视图。
在该特定的示例中,除了描述符的常规字段集以外,描述符可包括以下字段(一位字段):
“广播时间戳使能”-当被置位时,最后完成的描述符的时间戳被广播到集合中的所有其他DMA引擎。当未被置位时,DMA引擎将广播NULL(空)值或一些其他预先确定的值。
“本地栅栏使能”-当被置位时,DMA引擎等待,直到当前描述符之前的所有描述符在该当前描述符开始处理之前被完成。
“全局栅栏使能”-当被置位时,DMA引擎等待系统300中相比其更老的描述符在其开始处理当前描述符之前被完成。这可以通过等待直到来自其他DMA引擎的所有广播时间戳要么广播NULL描述符要么广播相比与当前描述符一起储存的时间戳更年轻的时间戳来实现。
“广播同时栅栏使能”-当被置位时,即使当前描述符被阻止,DMA引擎继续广播最后处理的描述符的时间戳。当未被置位时,DMA引擎广播NULL描述符。
在框410中,时间戳在系统300中通过DMA引擎处理管线(即,通过互连耦合的所有单独的DMA引擎管线)来跟随描述符。时间戳被用来确定描述符的前向进程。在框415中,系统300中的每个DMA引擎105使用时间戳将最后完成的描述符的年龄广播到其他各个个体DMA引擎,或者替代地将其广播到决定被围以栅栏的描述符何时能够前进和被处理的时间戳集中器。
在框420中,当描述符处在队列210的头部(图2)且为当前描述符并且全局栅栏使能位被置位时,DMA引擎将当前描述符的年龄与来自广播的时间戳进行比较。在框425中,如果任何广播时间戳比当前描述符的年龄更老,则当前描述符处理被DMA引擎阻止(即,围以栅栏),直到所有的广播时间戳是更年轻的。应用最大计数值,可使用对描述符已被围以栅栏的周期数进行计数的程序监控定时器(dead-man timer)。如果达到了最大计数值,则可被用来设置中断的故障隔离寄存器(FIR)可被置位。
在框430中,如果本地栅栏使能位被置位,则DMA引擎等待直到其自己的管线中的当前描述符之前的所有本地描述符在处理该当前描述符之前都被处理。
如图3所示,DMA0被阻止处理其当前描述符,同时等待DMA1广播具有较老的时间戳的描述符。DMAn正在广播具有较年轻的时间戳的描述符,因此DMA0在确定何时处理其当前描述符时不取决于DMAn。
图5示出了包括单个CPU 110和多个DMA引擎1050-n的系统500中的描述符处理的说明性示例。图6是针对使用可通过图5所示的系统500实现的标识符(ID)栅栏和释放的描述符处理的说明性方法600的流程图。该方法使用两个特定的描述符之间的依赖关系配对,其中每个描述符驻留在不同的DMA引擎上。因此,该方法与上述方法(图4所示的方法400)不同,其中依赖关系集在单个描述符和系统中具有较老的时间戳的所有描述符之间被使用。
在图6的框605中,当描述符被入队时,唯一的ID被分配到正被围以栅栏的描述符(被称为“从属”),并且相同的ID被分配到等待队列头部处的处理的当前描述符(被称为“主”)。在该方法中,从属描述符等待处理,直到主描述符已经完成处理,并因此取决于主描述符。依赖关系ID被储存在针对从属的描述符的栅栏释放ID字段及主描述符的广播ID字段中。同一DMA引擎队列中的从属和主描述符之间的依赖关系配对可以在上述示例中对本地栅栏创建类似的效果,但是具有附加的优点在于,被阻止的描述符可在存储管线250(图2)中的描述符完成时开始处理,而不是等待加载管线230和存储管线250两者中的描述符完成。例如,C、B和A是同一队列中的描述符,其中A是最老的条目且在队列的头部,并且C具有对A的依赖关系(即,C是从属,而A是主描述符)。A一离开存储管线,描述符C就可开始处理,而不是在C可以开始处理之前等待A和B两者离开存储管线,如以上所述的先前方法中的情况那样。
依赖关系可跨多个DMA引擎延伸,并且依赖关系集包括系统中共享同一依赖关系ID的所有描述符。因此,单个描述符可支持多个依赖关系。依赖关系窗跨越依赖关系集中第一描述符的入队与形成依赖关系集的所有描述符的处理的完成之间的时间帧。在系统500上运行的软件可被用来确保依赖关系ID不被重用于同一依赖关系窗内的描述符的不同依赖关系集。软件还可确保依赖关系ID分配不生成依赖关系循环。例如,使用ID=6将描述符A指派为取决于描述符B同时还将B指派为取决于A将不被软件允许。
在该示例中,除了描述符的常规描述符字段集以外,描述符可包括以下字段:
“广播ID使能”-当被置位时,最后完成的描述符的ID被广播到依赖关系集中的所有其他DMA引擎。当未被置位时,DMA引擎将广播NULL值或一些其他预先确定的值。
“广播ID”-这是在当前描述符已完成处理时,DMA引擎将广播到所有其他DMA引擎的依赖关系ID。
“本地栅栏使能”-当被置位时,DMA引擎等待当前描述符之前的所有描述符将在当前描述符开始处理之前被完成。
“全局栅栏使能”-当被置位时,DMA引擎将阻止描述符及队列中在其后面的所有描述符,直到广播DMA引擎中的一者提供该描述符正在等待的依赖关系ID。当匹配的依赖关系ID被接收自广播DMA引擎中的一者时,被围以栅栏的描述符随后可开始其处理。
“栅栏释放ID”-当“全局栅栏使能”位被置位时,该字段的值被用来与系统中其他DMA引擎所提供的值进行比较。当匹配被找到时,当前被围以栅栏的描述符随后可开始其处理。
继续图6中的流程图的描述,在框610中,依赖关系ID通过DMA管线跟随描述符,并且被用来确定从属描述符的前向进程。在框615中,系统500中的每个DMA引擎将其广播ID广播到其他各个个体DMA引擎。广播可使用握手或直接馈送来被实现。直接馈送通常可被有利地使用,因为它可以减少与来自多个DMA引擎的广播接收相关联的开销。有效信号将通常伴随广播ID,以通知消费DMA引擎使用广播ID是安全的。在替代实现中,广播ID可被发送到ID集中器,该集中器决定被围以栅栏的描述符何时能够前进。该功能可例如使用软件通过MMIO寄存器来被控制。
在框620中,当从属描述符到达队列的头部并成为当前描述符时,DMA引擎将其释放ID与来自系统中所有其他DMA引擎的广播ID进行比较。在框625中,如果没有广播ID与从属的“释放ID”匹配,则该从属的描述符被阻止(围以栅栏),直到匹配被找到。应用最大计数值,对描述符已被围以栅栏的周期数进行计数的程序监控定时器可被使用。如果达到了最大计数值,则可被用来设置中断的故障隔离寄存器(FIR)可被置位。死锁检测可通过观察具有依赖关系集中的描述符的所有DMA引擎何时被阻止来被使用。例如,软件可通过用远程释放ID位设置和远程释放位设置写入描述符来将栅栏从所有被阻止的DMA引擎释放。当该描述符被处理时,远程DMA引擎将把远程释放ID和一个有效位广播到系统中正在同步的所有DMA引擎。当匹配在从属的释放ID和广播ID之间被找到时,从属描述符随后被允许在系统中作出前向进程。
在框630中,如果本地栅栏使能位被置位,则DMA引擎等待直到其自己的管线中的当前描述符之前的所有本地描述符在处理该当前描述符之前都被处理。
如图5所示,DMA0通过广播ID=6(ID=6是DMA1和DMAn的栅栏释放ID字段中设置的依赖关系ID)来释放针对DMA1和DMAn中已入队的描述符的栅栏。
图7示出了使用包括多个CPU 110和多个DMA引擎1050-n的系统700的描述符处理的说明性示例。图8是使用可用系统700实现的锁定和清除握手的描述符处理的说明性方法的流程图。
该描述符处理示例还使用以与先前示例类似的方式按依赖关系对布置的描述符。然而,在使用多个CPU的系统中,描述符可从任何CPU中生成并将任何DMA引擎定为目标。死锁情形可能会发生,其中主描述符在从属描述符被入队之前被处理,从而完全错过依赖关系。这可导致从属描述符等待将不会发生的事件(即,死锁)。
本发明的解决方案使用被称为锁对存储器的握手存储器,其可储存具有共同依赖关系的多个描述符(例如,主描述符和从属描述符)之间的握手位。锁对存储器可使用基于触发器的存储器、逻辑分区、SRAM(静态ram)、ROM(只读存储器)、FLASH存储器、高速缓冲存储器、LPRA(低功率寄存器阵列)或主存储器来实现。基于触发器的存储器可以在一些实现中被有利地使用,使得各个位可在每个周期被并行地读取和写入。
在该示例中,除了描述符的常规描述符字段集以外,描述符可包括以下字段:
“依赖关系对使能”-当被置位时,描述符是依赖关系对的一部分,并且要么是主描述符要么是从属描述符。
“主使能”当被置位时,描述符是主描述符并具有等待其完成的从属的从属描述符。当未被置位时,描述符是从属描述符,并在其可开始被处理之前等待其主描述符完成。从属功能仅当“全局栅栏使能”位被置位时才被启用。
“锁对ID”-这是可由软件分配给依赖关系对的依赖关系ID。软件可被用来分配ID,并确保ID不被重用。给定的锁对存储器的大小将通常决定可被同时使用的依赖关系对的数量。
“本地栅栏使能”-当被置位时,DMA引擎等待当前描述符之前的所有描述符在该当前描述符开始处理之前被完成。
“全局栅栏使能”-当被置位时,DMA引擎阻止该描述符及队列中在其后面的所有描述符,直到用于依赖关系对的同步切换位与从属作出前向进程所需的设置相匹配。
在图8的框805中,当主描述符处在队列的头部时,DMA引擎轮询锁对存储器,直到其定位到主位和从属位之间的匹配。匹配指示所有先前的主/从属握手已被完成,并且新的一个可以开始。在框810中,当主描述符的处理被完成时,DMA引擎切换锁对存储器中的对应的主位以用信号通知从属主描述符处理被完成。锁对ID由软件索引。
在框815中,当使其全局栅栏使能位被置位的从属描述符处在队列的头部时,DMA轮询锁对存储器,直到其定位到主位和从属位之间的不匹配。不匹配指示主描述符已经完成了针对该特定依赖关系对的处理,并因此从属描述符可以开始处理。如果主/从属位匹配,则从属的处理继续被阻止,直到DMA引擎从锁对存储器读取不匹配。
在框820中,当从属描述符处理被完成时,从属位在锁对存储器中被切换以用信号通知握手完成并且主描述符和从属描述符之间的依赖关系被满足。该方法中所使用的同步序列在其中主位和从属位都没有被置位的锁对的默认状态中开始,并在其中主描述符首先切换其锁对存储器位但不能再次切换直到从属描述符切换它的位的序列之后。应用最大计数值,对描述符已被围以栅栏的周期数进行计数的程序监控定时器可被使用。如果达到了最大计数值,则可被用来设置中断的故障隔离寄存器(FIR)可被置位。用于程序监控计数的锁对值接着被重置以允许恢复。
在框825中,多个依赖关系也可以使用锁对链接来被实现。例如,当具有相同ID的第二主描述符检测到主位和从属位不匹配时,第二主描述符必须围以栅栏,直到先前的依赖关系被满足。当具有与先前从属相同的ID的第二从属描述符检测到主位和从属位匹配时,第二主描述符必须围以栅栏,直到其所依赖的主描述符切换主位。此时处理可以进行。
图9示意性地示出了计算系统900的非限制性实施例,其可被布置成在实现上述配置、布置、方法或过程中的一者或多者时使用应用本发明的DMA描述符处理的系统。计算系统900以简化形式被示出。可理解,可以使用实际上任何计算机架构,而不偏离本布置的范围。在不同的实施例中,计算系统900可以采取显示设备、可穿戴计算设备(包括头戴式显示(HMD)设备)、大型计算机、服务器计算机、台式计算机、膝上型计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如智能电话)等等的形式。
计算系统900包括逻辑子系统902和存储子系统904。计算系统900可任选地包括显示子系统906、输入子系统908、通信子系统910和/或在图9中未示出的其他组件。
逻辑子系统902包括被配置成执行指令的一个或多个物理设备。例如,逻辑子系统902可被配置成执行作为一个或多个应用、服务、程序、例程、库、对象、组件、数据结构或其他逻辑构造的一部分的指令。这样的指令可被实现以执行任务、实现数据类型、变换一个或多个组件的状态或以其他方式达到期望的结果。
逻辑子系统902可包括被配置成执行软件指令的一个或多个处理器。作为补充或替换,逻辑子系统902可包括被配置成执行硬件或固件指令的一个或多个硬件或固件逻辑机器。逻辑子系统902的处理器可以是单核或多核的,而其上执行的程序可被配置成用于串行、并行或分布式处理。逻辑子系统902可任选地包括分布在两个或更多设备之间的独立组件,这些独立组件可位于远程和/或被配置成用于进行协调处理。逻辑子系统902的各方面可由以云计算配置进行配置的可远程访问的联网计算设备来虚拟化和执行。
存储子系统904包括一个或多个物理设备,该一个或多个物理设备被配置成保持逻辑子系统902可执行来实现本文中所述的方法和过程的数据和/或指令。在实现此类方法和过程时,存储子系统904的状态可被变换(例如,以保持不同的数据)。
存储器子系统904可包括可移动介质和/或内置设备。存储子系统904可包括光学存储器设备(例如,CD(压缩盘)、DVD(数字多功能盘)、HD-DVD(高清DVD)、蓝光盘等)、半导体存储器设备(例如,RAM(随机存取存储器)、ROM(只读存储器)、EPROM(可擦除可编程ROM)、EEPROM(电可擦除ROM)等)和/或磁性存储设备(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM(磁致电阻RAM)等)等等。存储子系统904可包括易失性、非易失性、动态、静态、读/写、只读、随机存取、顺序存取、位置可寻址、文件可寻址和/或内容可寻址设备。
可领会,存储子系统904包括一个或多个物理设备,并排除传播信号自身。然而,在一些实现中,本文描述的指令的各方面可经由通信介质通过纯信号(例如,电磁信号、光学信号等)来传播,而不是被储存在存储设备上。此外,与本布置有关的数据和/或其他形式的信息可通过纯信号来传播。
在一些实施例中,逻辑子系统902和存储子系统904的各方面可被一起集成到一个或多个硬件-逻辑组件中,通过所述组件来执行在此所述的功能性。这样的硬件逻辑组件可包括:例如,现场可编程门阵列(FPGA)、程序和应用专用集成电路(PASIC/ASIC)、程序和应用专用标准产品(PSSP/ASSP)、片上系统(SOC)系统以及复杂可编程逻辑设备(CPLD)。
在被包括时,显示子系统906可用于呈现由存储子系统904保存的数据的视觉表示。此视觉表示可采用图形用户界面(GUI)的形式。由于目前描述的方法和过程改变了由存储子系统保持的数据,并由此变换了存储子系统的状态,因此同样可转变显示子系统906的状态以在视觉上表示底层数据的改变。显示子系统906可包括利用几乎任何类型的技术的一个或多个显示设备。在一些情况下,可将此类显示设备与逻辑子系统902和/或存储子系统904一起组合在共享封装中,或者在其他情况下,此类显示设备可以是外围显示设备。
在包括输入子系统908时,输入子系统908可包括一个或多个用户输入设备(诸如键盘、鼠标、触摸屏或游戏控制器)或与其对接。在一些实施例中,输入子系统可包括所选择的自然用户输入(NUI)组件或与其对接。这样的组件可以是集成的或外围的,且输入动作的转导和/或处理可以在板上或板外被处理。示例性NUI组件可包括用于语言和/或语音识别的麦克风;用于机器视觉和/或姿势识别的红外、色彩、立体显示和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼睛跟踪器、加速计和/或陀螺仪;以及用于评估脑部活动的电场感测组件。
在包括通信子系统910时,通信子系统910可被配置成将计算系统900与一个或多个其他计算设备通信耦合。通信子系统910可包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可被配置成用于经由无线电话网络或者有线或无线局域网或广域网来进行通信。在一些实施例中,通信子系统可允许计算系统900使用诸如互联网这样的网络将消息发送至其他设备以及/或者从其他设备接收消息。
本发明的直接存储器访问描述符处理的各种示例性实施例现在通过说明的方式而不是作为所有实施例的穷尽性列表来被呈现。一个示例包括直接存储器访问(DMA)引擎,包括:到互连支持组件的一个或多个连接,互联支持组件包括中央处理单元(CPU)、一个或多个存储器设备以及一个或多个远程DMA引擎;用于对指定在互连上的组件之间发生的DMA数据移动的描述符进行排队的描述符队列;以及被配置成促使DMA引擎执行一种方法的逻辑组件,该方法包括将与当前描述符相关联的时间戳广播到远程DMA引擎中的每一个,当前描述符处在描述符队列的头部,从远程DMA引擎接收与其他描述符相关联的时间戳,将当前描述符的时间戳与来自远程DMA引擎的接收到的时间戳进行比较,以及当接收到的时间戳全部具有相比当前描述符的时间戳的年龄更年轻的年龄时处理当前描述符。
在另一示例中,时间戳被保持在提供对DMA引擎集而言唯一的时间戳的寄存器中。在另一示例中,逻辑组件被配置成在当前描述符的时间戳对应于比任何其他接收到的时间戳更近的时间时对当前描述符围以栅栏。在另一示例中,逻辑组件被配置成针对描述符已被围以栅栏而不被处理的多个周期设置最大计数值,并且当该最大计数被达到时设置中断。在另一示例中,逻辑组件被配置成使用MMIO(存储器映射的输入/输出)寄存器来控制广播。在另一示例中,逻辑组件被配置成定位具有包括全局栅栏使能位的字段的描述符,并且被配置成仅在当前描述符的全局栅栏使能位被置位时才对该当前描述符围以栅栏。在另一示例中,逻辑组件被配置成在当前描述符被围以栅栏时发送空描述符。
又一示例包括一种系统,包括:互连;被连接到互连的中央处理单元;被连接到互连的一个或多个存储器设备;多个直接存储器访问(DMA)引擎,每个DMA引擎都被连接到互连,并且包括可操作以实现一种方法的逻辑组件,该方法包括将标识符(ID)分配给正被围以栅栏的从属描述符以及当前正在等待通过DMA引擎处理的主描述符,每个描述符都包括用于促进系统中的数据移动的信息的字段,被包括在从属描述符的栅栏释放字段中的所分配的ID以及被包括在主描述符的广播ID字段中的所分配的ID,将与最后完成的描述符相关联的广播ID广播到多个DMA引擎中的每一个,将正等待处理的从属描述符的释放ID与从多个DMA引擎接收到的广播ID中的每一个进行比较。
在另一示例中,逻辑组件可操作以接收来自多个DMA引擎的广播ID。在另一示例中,逻辑组件可操作以实现死锁检测并在死锁被检测到时释放栅栏。在另一示例中,系统还包括被配置成用于取消被围以栅栏的描述符的寄存器。在另一示例中,逻辑组件可操作以检查用于本地栅栏位的启用的描述符,并且等待处理本地队列中的当前描述符,直到该当前描述符之前的所有描述符都被处理。在另一示例中,系统还包括用于分配ID的软件组件,该软件组件确保依赖关系循环不被创建。在另一个示例中,该系统被实现为片上系统或嵌入式系统。
另一示例包括一种由直接存储器访问(DMA)引擎执行的方法,该直接存储器访问(DMA)引擎设置在具有包括多个中央处理单元(CPU)、一个或多个存储器设备、一个或多个远程DMA引擎以及提供这些组件之间的互相连接的互连在内的组件的系统中,该方法包括:在系统中的描述符之间创建依赖关系配对,描述符描述在互连之上的组件之间的DMA促进的数据移动,依赖关系在一个或多个主描述符以及一个或多个从属描述符之间;当主描述符接下来在队列中用于处理时,轮询将握手位储存在主描述符和从属描述符之间的存储器,握手位包括被配置成用于由主描述符切换的主位以及被配置成用于由从属描述符切换的从属位;如果轮询指示握手位不匹配,则保持接下来在队列中供处理的主描述符的处理;以及如果轮询指示握手位匹配,则开启接下来在队列中供处理的主描述符的处理。
在另一示例中,该方法还包括当主描述符处理被完成时,切换存储器中的主位。在另一示例中,该方法还包括当从属描述符接下来在队列中用于处理时轮询存储器,如果轮询指示握手位不匹配,则保持从属描述符的处理,并且如果轮询指示握手位匹配,则开启从属描述符的处理。在另一示例中,该方法还包括当从属描述符处理被完成时,切换存储器中的从属位。在另一示例中,该方法还包括使单个描述符能够支持多个依赖关系对。在另一示例中,该方法还包括将描述符配置成包括一个指示全局栅栏的位字段以及一个指示本地栅栏的位子段,当该指示全局栅栏的位字段被置位时,使得全局栅栏能够阻止处理队列中下一个描述符,除非握手位匹配,当该指示本地栅栏的位字段被置位时,使得本地栅栏能够阻止处理队列中下一个描述符,直到队列中的所有在前的描述符都被处理。
以上所述的主题仅作为说明提供,并且不应被解释为限制。在不背离所附权利要求中阐述的本发明的真实精神和范围的情况下,可以对本文所描述的主题作出各种修改和改变,而不必遵循所例示和描述的示例实施例及应用。
Claims (20)
1.一种直接存储器访问DMA引擎,包括:
到互连支持组件的一个或多个连接,所述互连支持组件包括中央处理单元CPU、一个或多个存储器设备以及一个或多个远程DMA引擎;
用于对指定在所述互连上的组件之间发生的DMA数据移动的描述符进行排队的描述符队列;以及
被配置成促使所述DMA引擎执行一种方法的逻辑组件,所述方法包括
将与当前描述符相关联的时间戳广播到所述远程DMA引擎中的每一个,
所述当前描述符处在所述描述符队列的头部,
从所述远程DMA引擎接收与其他描述符相关联的时间戳,
将所述当前描述符的时间戳与来自所述远程DMA引擎的所接收到的时间戳进行比较,以及
当所接收到的时间戳全部具有相比所述当前描述符的时间戳的年龄更年轻的年龄时,处理所述当前描述符。
2.根据权利要求1所述的DMA引擎,其特征在于,其中时间戳被保持在提供对DMA引擎集而言唯一的时间戳的寄存器中。
3.根据权利要求1所述的DMA引擎,其特征在于,所述逻辑组件被配置成在所述当前描述符的时间戳对应于比任何其他接收到的时间戳更近的时间时对所述当前描述符围以栅栏。
4.根据权利要求3所述的DMA引擎,其特征在于,所述逻辑组件被配置成针对描述符已被围以栅栏而不被处理的多个周期设置最大计数值,并且当所述最大计数被达到时设置中断。
5.根据权利要求1所述的DMA引擎,其特征在于,所述逻辑组件被配置成使用存储器映射的输入/输出MMIO寄存器来控制所述广播。
6.根据权利要求1所述的DMA引擎,其特征在于,所述逻辑组件被配置成定位具有包括全局栅栏使能位的字段的描述符,并且被配置成仅当所述当前描述符的全局栅栏使能位被置位时才对所述当前描述符围以栅栏。
7.根据权利要求6所述的DMA引擎,其特征在于,所述逻辑组件被配置成在当前描述符被围以栅栏时发送空描述符。
8.一种计算系统,包括:
互连;
被连接到所述互连的中央处理单元;
被连接到所述互连的一个或多个存储器设备;
多个直接存储器访问DMA引擎,所述DMA引擎中的每一个都被连接到所述互连,并且包括可操作以实现一种方法的逻辑组件,所述方法包括
将标识符ID分配给正被围以栅栏的从属描述符以及当前正在等待通过DMA引擎处理的主描述符,每个描述符都包括用于促进所述系统中的数据移动的信息的字段,被包括在所述从属描述符的栅栏释放字段中的所分配的ID以及被包括在所述主描述符的广播ID字段中的所分配的ID,
将与最后完成的描述符相关联的广播ID广播到所述多个DMA引擎中的每一个,
将正等待处理的从属描述符的释放ID与从所述多个DMA引擎接收到的广播ID中的每一个进行比较,
如果没有广播ID与所述从属描述符的释放ID相匹配,则所述从属描述符被围以栅栏,
如果在广播ID与所述从属描述符的释放ID之间存在匹配,则所述从属描述符被允许在所述计算系统中作出前向进程。
9.根据权利要求8所述的计算系统,其特征在于,所述逻辑组件可操作以接收来自所述多个DMA引擎的广播ID。
10.根据权利要求8所述的计算系统,其特征在于,所述逻辑组件可操作以实现死锁检测并在死锁被检测到时释放栅栏。
11.根据权利要求8所述的计算系统,其特征在于,还包括被配置成用于取消被围以栅栏的描述符的寄存器。
12.根据权利要求8所述的计算系统,其特征在于,所述逻辑组件可操作以检查用于本地栅栏位的启用的描述符,并且等待处理本地队列中的当前描述符,直到所述当前描述符之前的所有描述符都被处理。
13.根据权利要求8所述的计算系统,其特征在于,还包括用于分配所述ID的软件组件,所述软件组件确保依赖关系循环不被创建。
14.根据权利要求8所述的计算系统,其特征在于,被实现为片上系统或嵌入式系统。
15.一种由直接存储器访问DMA引擎执行的方法,所述直接存储器访问DMA引擎设置在具有包括多个中央处理单元CPU、一个或多个存储器设备、一个或多个远程DMA引擎以及提供上述组件之间的相互连接的互连在内的组件的系统中,所述方法包括:
在所述系统中的描述符之间创建依赖关系配对,所述描述符描述在所述互连之上的组件之间的DMA促进的数据移动,所述依赖关系在一个或多个主描述符以及一个或多个从属描述符之间;
当主描述符接下来在描述符队列中用于处理时,轮询将握手位储存在主描述符和从属描述符之间的存储器,所述握手位包括被配置成用于由主描述符切换的主位以及被配置成用于由从属描述符切换的从属位;
如果所述轮询指示所述握手位不匹配,则保持接下来在所述描述符队列中供处理的所述主描述符的处理;以及
如果所述轮询指示所述握手位匹配,则开启接下来在所述描述符队列中供处理的所述主描述符的处理。
16.根据权利要求15所述的方法,其特征在于,还包括当所述主描述符处理被完成时,切换所述存储器中的所述主位。
17.根据权利要求16所述的方法,其特征在于,还包括当从属描述符接下来在所述描述符队列中用于处理时轮询所述存储器,如果所述轮询指示所述握手位不匹配,则保持所述从属描述符的处理,并且如果所述轮询指示所述握手位匹配,则开启所述从属描述符的处理。
18.根据权利要求17所述的方法,其特征在于,还包括当所述从属描述符处理被完成时,切换所述存储器中的所述从属位。
19.根据权利要求18所述的方法,其特征在于,还包括使单个描述符能够支持多个依赖关系对。
20.根据权利要求15所述的方法,其特征在于,还包括将所述描述符配置成包括一个指示全局栅栏的位字段以及一个指示本地栅栏的位字段,当所述指示全局栅栏的位字段被置位时,使得所述全局栅栏能够阻止处理在所述描述符队列中是下一个的所述描述符,除非所述握手位匹配,当所述指示本地栅栏的位字段被置位时,使得所述本地栅栏能够阻止处理在所述描述符队列中是下一个的所述描述符,直到所述描述符队列中的所有在前的描述符都被处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/671,811 US9715464B2 (en) | 2015-03-27 | 2015-03-27 | Direct memory access descriptor processing |
US14/671,811 | 2015-03-27 | ||
PCT/US2016/020311 WO2016160238A2 (en) | 2015-03-27 | 2016-03-02 | Direct memory access descriptor processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107430566A CN107430566A (zh) | 2017-12-01 |
CN107430566B true CN107430566B (zh) | 2020-06-12 |
Family
ID=55538628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680018005.4A Active CN107430566B (zh) | 2015-03-27 | 2016-03-02 | 直接存储器访问描述符处理 |
Country Status (4)
Country | Link |
---|---|
US (3) | US9715464B2 (zh) |
EP (1) | EP3274853B1 (zh) |
CN (1) | CN107430566B (zh) |
WO (1) | WO2016160238A2 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10185678B1 (en) * | 2015-10-30 | 2019-01-22 | Amazon Technologies, Inc. | Universal offloading engine |
JP6992616B2 (ja) * | 2018-03-13 | 2022-01-13 | 日本電気株式会社 | データ転送装置、データ転送方法、プログラム |
CN108491274A (zh) * | 2018-04-02 | 2018-09-04 | 深圳市华傲数据技术有限公司 | 分布式数据管理的优化方法、装置、存储介质及设备 |
US11055130B2 (en) | 2019-09-15 | 2021-07-06 | Mellanox Technologies, Ltd. | Task completion system |
US11822973B2 (en) * | 2019-09-16 | 2023-11-21 | Mellanox Technologies, Ltd. | Operation fencing system |
WO2021124917A1 (ja) * | 2019-12-18 | 2021-06-24 | ソニーグループ株式会社 | 情報処理システム、情報処理方法、及び、情報処理装置 |
US11099966B2 (en) * | 2020-01-09 | 2021-08-24 | International Business Machines Corporation | Efficient generation of instrumentation data for direct memory access operations |
US11288001B1 (en) * | 2020-12-04 | 2022-03-29 | International Business Machines Corporation | Self-clearing data move assist (DMA) engine |
CN112668014B (zh) * | 2021-01-18 | 2021-07-06 | 黄策 | 具有两个键盘的信息终端 |
US11467998B1 (en) * | 2021-03-16 | 2022-10-11 | Amazon Technologies, Inc. | Low-latency packet processing for network device |
CN113051200B (zh) * | 2021-03-30 | 2024-01-09 | 无锡源代码科技有限公司 | 一种基于双路的数据采集并行数据传输及存储的装置及方法 |
US20240113986A1 (en) * | 2022-10-03 | 2024-04-04 | Qualcomm Incorporated | Hardware Based Ethernet Audio And Video Bridging (EAVB) Packet Scheduling |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5644784A (en) * | 1995-03-03 | 1997-07-01 | Intel Corporation | Linear list based DMA control structure |
CN101031897A (zh) * | 2004-07-15 | 2007-09-05 | 索尼计算机娱乐公司 | 在次序混乱的dma命令队列中建立命令次序 |
US7620748B1 (en) * | 2006-04-06 | 2009-11-17 | Bitmicro Networks, Inc. | Hardware assisted non-volatile memory-to-input/output direct memory access (DMA) transfer |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5828901A (en) | 1995-12-21 | 1998-10-27 | Cirrus Logic, Inc. | Method and apparatus for placing multiple frames of data in a buffer in a direct memory access transfer |
US6370625B1 (en) | 1999-12-29 | 2002-04-09 | Intel Corporation | Method and apparatus for lock synchronization in a microprocessor system |
US7809902B2 (en) | 2002-01-24 | 2010-10-05 | Broadcom Corporation | Method and system for copying DMA with separate strides by a modulo-n counter |
US7366843B2 (en) | 2002-06-28 | 2008-04-29 | Sun Microsystems, Inc. | Computer system implementing synchronized broadcast using timestamps |
US9015397B2 (en) | 2012-11-29 | 2015-04-21 | Sandisk Technologies Inc. | Method and apparatus for DMA transfer with synchronization optimization |
US7392330B2 (en) | 2004-07-02 | 2008-06-24 | Mediatek Usa Inc. | Memory access bandwidth allocation and latency control in a digital camera |
JP4456490B2 (ja) | 2005-01-14 | 2010-04-28 | 富士通株式会社 | Dma装置 |
US7747088B2 (en) | 2005-09-28 | 2010-06-29 | Arc International (Uk) Limited | System and methods for performing deblocking in microprocessor-based video codec applications |
US20080109569A1 (en) | 2006-11-08 | 2008-05-08 | Sicortex, Inc | Remote DMA systems and methods for supporting synchronization of distributed processes in a multi-processor system using collective operations |
US8756350B2 (en) | 2007-06-26 | 2014-06-17 | International Business Machines Corporation | Method and apparatus for efficiently tracking queue entries relative to a timestamp |
GB2459939B (en) | 2008-05-16 | 2012-02-15 | Icera Inc | Fetching descriptors in a multiple context DMA engine |
GB0814484D0 (en) * | 2008-08-07 | 2008-09-10 | Icera Inc | Dma engine |
US8086766B2 (en) * | 2010-01-15 | 2011-12-27 | International Business Machines Corporation | Support for non-locking parallel reception of packets belonging to a single memory reception FIFO |
US8250164B2 (en) | 2010-04-15 | 2012-08-21 | International Business Machines Corporation | Query performance data on parallel computer system having compute nodes |
US8601169B1 (en) * | 2010-11-03 | 2013-12-03 | Pmc-Sierra Us, Inc. | Method and apparatus for a multi-engine descriptor controller for distributing data processing tasks across the engines |
US8527672B2 (en) | 2010-11-05 | 2013-09-03 | International Business Machines Corporation | Fencing direct memory access data transfers in a parallel active messaging interface of a parallel computer |
US9727502B2 (en) | 2013-07-26 | 2017-08-08 | Infineon Technologies Ag | System and method for direct memory access transfers |
-
2015
- 2015-03-27 US US14/671,811 patent/US9715464B2/en active Active
-
2016
- 2016-03-02 CN CN201680018005.4A patent/CN107430566B/zh active Active
- 2016-03-02 EP EP16710045.2A patent/EP3274853B1/en active Active
- 2016-03-02 WO PCT/US2016/020311 patent/WO2016160238A2/en active Application Filing
-
2017
- 2017-07-17 US US15/651,235 patent/US10572401B2/en active Active
- 2017-07-17 US US15/651,319 patent/US10528494B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5644784A (en) * | 1995-03-03 | 1997-07-01 | Intel Corporation | Linear list based DMA control structure |
CN101031897A (zh) * | 2004-07-15 | 2007-09-05 | 索尼计算机娱乐公司 | 在次序混乱的dma命令队列中建立命令次序 |
US7620748B1 (en) * | 2006-04-06 | 2009-11-17 | Bitmicro Networks, Inc. | Hardware assisted non-volatile memory-to-input/output direct memory access (DMA) transfer |
Also Published As
Publication number | Publication date |
---|---|
US9715464B2 (en) | 2017-07-25 |
EP3274853A2 (en) | 2018-01-31 |
US10572401B2 (en) | 2020-02-25 |
WO2016160238A2 (en) | 2016-10-06 |
US20170315940A1 (en) | 2017-11-02 |
CN107430566A (zh) | 2017-12-01 |
US20170315939A1 (en) | 2017-11-02 |
WO2016160238A3 (en) | 2016-10-27 |
EP3274853B1 (en) | 2020-04-22 |
US20160283415A1 (en) | 2016-09-29 |
US10528494B2 (en) | 2020-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430566B (zh) | 直接存储器访问描述符处理 | |
TWI585680B (zh) | 用於執行緒佇列安排之方法、裝置與系統(二) | |
WO2019079008A1 (en) | LEARNING EXECUTION LIBRARY MACHINE FOR NEURONAL NETWORK ACCELERATION | |
US9678806B2 (en) | Method and apparatus for distributing processing core workloads among processing cores | |
JP2019532427A (ja) | トリガ動作を用いたgpuリモート通信 | |
EP3230860B1 (en) | Technologies for efficient synchronization barriers with work stealing support | |
US10467052B2 (en) | Cluster topology aware container scheduling for efficient data transfer | |
TW201027350A (en) | Devices, systems, and methods to synchronize simultaneous DMA parallel processing of a single data stream by multiple devices | |
KR102498223B1 (ko) | Ufs 장치의 작동 방법, ufs 호스트의 작동 방법, 및 이들을 포함하는 시스템의 작동 방법 | |
US20140267328A1 (en) | Graphics processing unit failure recovery | |
CN108829525B (zh) | 可信平台遥测机制 | |
US10970118B2 (en) | Shareable FPGA compute engine | |
US10031786B2 (en) | Lockless multithreaded completion queue access | |
US20160321197A1 (en) | Distributed intelligent platform management interface (d-ipmi) system and method thereof | |
KR20150079411A (ko) | 인터커넥트에서 코히어런스 확인 응답들의 제거 및 최적화 | |
JP5830042B2 (ja) | 二重更新防止システム及び二重更新防止方法 | |
US9116739B2 (en) | Fast and scalable concurrent queuing system | |
WO2018107658A1 (zh) | 一种防止总线死锁的方法、装置及存储介质 | |
TWI625628B (zh) | 由主機到設備控制器傳輸命令的方法及使用該方法的系統 | |
US20140101355A1 (en) | Virtualized communication sockets for multi-flow access to message channel infrastructure within cpu | |
US8375155B2 (en) | Managing concurrent serialized interrupt broadcast commands in a multi-node, symmetric multiprocessing computer | |
US11604748B2 (en) | Interconnect for direct memory access controllers | |
US10261723B1 (en) | POSIX compliant flash servers | |
US10097618B2 (en) | Cluster system and communication method in cluster system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |