CN101221543B - 执行dma块移动的方法、dma设备和数据处理系统 - Google Patents
执行dma块移动的方法、dma设备和数据处理系统 Download PDFInfo
- Publication number
- CN101221543B CN101221543B CN2008100017670A CN200810001767A CN101221543B CN 101221543 B CN101221543 B CN 101221543B CN 2008100017670 A CN2008100017670 A CN 2008100017670A CN 200810001767 A CN200810001767 A CN 200810001767A CN 101221543 B CN101221543 B CN 101221543B
- Authority
- CN
- China
- Prior art keywords
- dma
- descriptor
- memory access
- direct memory
- descriptors
- 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/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
Abstract
一种DMA设备将描述符预取到描述符预取缓冲器中。描述符预取缓冲器的大小针对给定等待时间环境保有适当数量的描述符。为了支持描述符链接列表,DMA引擎基于描述符在存储器中为顺序的假设来预取描述符,并且将被发现违反该假设的任意描述符丢弃。DMA引擎试图在任何可能的时候通过对于每次事务请求多个描述符而保持描述符预取缓冲器为满的。总线引擎从系统存储器中读取这些描述符,并将它们写到预取缓冲器中。DMA引擎还可以使用积极预取,其中总线引擎无论何时当描述符预取缓冲器中存在任意空间时请求缓冲器将支持的最大数量的描述符。DMA设备丢弃无法被存储的任意其余描述符。
Description
技术领域
本发明一般涉及改进的数据处理系统和方法。更具体地,本发明涉及支持高等待时间设备的直接存储器存取控制器。
背景技术
许多单片系统(system-on-a-chip,SOC)设计包含被称为直接存储器存取(DMA)控制器的设备。DMA的目的是从存储器中的一个位置向另一个高效移动数据块。DMA控制器通常用于在系统存储器和输入/输出(I/O)设备之间移动数据,但也用于在系统存储器中的一个区域和另一个之间移动数据。DMA控制器被称为“直接”,因为处理器未涉及移动数据。
在没有DMA控制器的情况下,可以通过令处理器在软件控制下从一个存储器空间向另一个逐片地拷贝数据来移动数据块。这对于较大数据块通常是不理想的。当处理器逐片地拷贝大数据块时,速度十分缓慢,因为处理器不具有大型存储器缓冲器,并且必须每次以低效的小尺寸(诸如32比特)移动数据。而且,当处理器正进行拷贝时,其无法进行其它工作。因此,处理器直到移动完成之前都被占用。将这些数据块的移动减载到DMA控制器是更加高效的,DMA控制器可以更快速地以及与其它工作并行地进行数据块的移动。
DMA控制器通常具有多个“信道”。如这里所用的,“信道”是将由DMA控制器移动的独立数据流。因此,DMA控制器可以被编程在不同信道上同时执行若干次块移动,这允许DMA设备同时向或从若干I/O设备传输数据。
DMA控制器的另一典型特征是散布/收集操作。散布/收集操作是下述的一种操作,其中DMA控制器不需要被处理器进行编程用于将每个数据块从某个源移动到某个目的地。而是,处理器在系统存储器中建立一个描述符表或描述符链接列表。描述符表或链接列表是一组描述符。每个描述符描述一次数据块移动,包括源地址、目的地地址以及所传输的字节数。经由DMA寄存器直接进行编程的非散布/收集块移动被称为“单编程”DMA块移动。
DMA控制器的链接列表体系结构比表体系结构更灵活和动态。在链接列表体系结构中,处理器将DMA信道之一引用到链中的第一描述符,并且链接列表中的每个描述符包含指向存储器中的下一描述符的指针。描述符可以位于系统存储器中的任意地方,并且处理器可以在传输发生时将其动态添加到列表上。DMA控制器自动遍历表或列表,并执行由每个描述符所描述的数据块移动,直到到达所述表或列表的末尾为止。
DMA设备可以被构建为具有适当数量的缓冲器,以及处理适当数量的并发的未完成事务,从而到数据的高等待时间路径将不会导致数据传输中的显著延误(stall)。典型的DMA编程模型是将数据传输链接在一起作为如上所述的散布/收集描述符列表。这些描述符必须从存储器中读取。在此环境中,如果对于描述符存储器的等待时间与对于数据的等待时间一样长,则可能遇到问题。如将在下面讨论的,甚至可能存在低等待时间描述符读取与高等待时间数据块读取的问题。
典型的DMA体系结构将描述符中读取的信息直接馈送到通过“单编程”DMA块数据移动所加载的相同的配置寄存器中。一旦DMA设备开始针对当前描述符的最终事务的写操作,即开始对下一描述符的请求。DMA设备必须等待,直到此最终写操作开始,因为在此时,运行数据块移动的配置寄存器再次可用于被加载。此重叠可以减少(但不可避免)数据总线延误,因为DMA设备在低等待时间环境中从描述符到描述符进行转换。不过,此方案在高等待时间环境中可能是灾难。
发明内容
说明性实施例识别出现有技术的缺陷,并提供了一种DMA设备,其将描述符预取到描述符预取缓冲器中。描述符预取缓冲器的大小针对给定等待时间环境保有适当数量的描述符。为了支持描述符链接列表,DMA引擎基于描述符在存储器中为顺序的假设来预取描述符,并且将被发现违反该假设的任意描述符丢弃。DMA引擎试图在任何可能的时候通过对于每次事务请求多个描述符而保持描述符预取缓冲器为满的。总线引擎从系统存储器中读取这些描述符,并将它们写到预取缓冲器中。DMA引擎还可以使用积极预取,其中总线引擎无论何时当描述符预取缓冲器中存在任意空间时请求缓冲器将支持的最大数量的描述符。DMA设备丢弃无法被存储的任意其余描述符。
在一个说明性实施例中,提供了一种用于在直接存储器存取设备中通过描述符预取来执行直接存储器存取块移动的方法。所述方法包括:响应于空间在所述直接存储器存取设备中的描述符预取缓冲器中可用,将在物理存储器中顺序存储的多个直接存储器存取描述符读取到所述描述符预取缓冲器中。所述方法进一步包括:处理来自所述描述符预取缓冲器中的描述符,以根据所述描述符执行直接存储器存取块移动。
在一个示例性实施例中,所述方法进一步包括:检查所述多个直接存储器存取描述符的有效性,以及响应于给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为非连续的,将所述给定的直接存储器存取描述符标为无效。在另一示例性实施例中,所述方法进一步包括:将所述给定的直接存储器存取描述符之后的每个描述符标为无效。
在另一示例性实施例中,所述方法进一步包括:检查所述多个直接存储器存取描述符的有效性,以及响应于给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为连续的,将所述给定的直接存储器存取描述符标为有效。
在另一示例性实施例中,读取多个直接存储器存取描述符包括:确定所述描述符预取缓冲器中的可用槽的数量,以及读取对应于所述可用槽的数量的多个直接存储器存取描述符。
在又一示例性实施例中,读取多个直接存储器存取描述符包括:读取对应于所述描述符预取缓冲器中的槽的最大数量的多个直接存储器存取描述符,试图将所读取的数量的直接存储器存取描述符存储在所述描述符预取缓冲器中,以及响应于所述描述符预取缓冲器已满,从所述多个直接存储器存取描述符中丢弃无法被存储在所述描述符预取缓冲器中的其余直接存储器存取描述符。在又一示例性实施例中,所述方法进一步包括:响应于空间在所述描述符预取缓冲器中可用,将所述多个直接存储器存取描述符中的给定的直接存储器存取描述符存储在所述描述符预取缓冲器中。
在又一示例性实施例中,所述方法进一步包括:检查所述给定的直接存储器存取描述符的有效性,以及响应于所述给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为非连续的,将所述给定的直接存储器存取描述符标为无效。在又一示例性实施例中,所述方法进一步包括:将所述给定的直接存储器存取描述符之后的每个描述符标为无效。在另一示例性实施例中,所述方法进一步包括:检查所述给定的直接存储器存取描述符的有效性,以及响应于所述给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为连续的,将所述给定的直接存储器存取描述符标为有效。
在另一说明性实施例中,一种直接存储器存取设备包括:具有预取缓冲器的直接存储器存取引擎以及总线引擎。响应于空间在所述直接存储器存取设备中的描述符预取缓冲器中可用,所述总线引擎将在物理存储器中顺序存储的多个直接存储器存取描述符读取到所述描述符预取缓冲器中。所述直接存储器存取设备处理来自所述描述符预取缓冲器的直接存储器存取描述符,以根据所述直接存储器存取描述符执行直接存储器存取块移动。
在一个示例性实施例中,所述直接存储器存取引擎检查所述多个直接存储器存取描述符的有效性。响应于给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为非连续的,所述总线引擎将所述给定的直接存储器存取描述符标为无效。
在另一示例性实施例中,所述直接存储器存取引擎将所述给定的直接存储器存取描述符之后的每个描述符标为无效。在另一示例性实施例中,所述直接存储器存取引擎检查所述多个直接存储器存取描述符的有效性,以及响应于给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为连续的,将所述给定的直接存储器存取描述符标为有效。
在另一示例性实施例中,所述总线引擎确定所述描述符预取缓冲器中的可用槽的数量,以及读取对应于所述可用槽的数量的多个直接存储器存取描述符。在另一示例性实施例中,所述总线引擎读取对应于所述描述符预取缓冲器中的槽的最大数量的多个直接存储器存取描述符,试图将所读取的数量的直接存储器存取描述符存储在所述描述符预取缓冲器中,以及响应于所述描述符预取缓冲器已满,从所述多个直接存储器存取描述符中丢弃无法被存储在所述描述符预取缓冲器中的其余直接存储器存取描述符。
在另一说明性实施例中,一种数据处理系统包括:总线;耦合于所述总线的多个总线单元设备;耦合于所述总线的直接存储器存取设备,其中所述直接存储器存取设备包括描述符预取缓冲器;处理单元;以及耦合于所述处理单元的系统存储器。所述处理单元具有对所述总线的访问。所述处理单元将直接存储器存取描述符存储在所述系统存储器中。每个直接存储器存取描述符指示所述多个总线单元设备中的源设备和目标设备。响应于空间在所述描述符预取缓冲器中可用,所述直接存储器存取设备将多个直接存储器存取描述符从所述系统存储器读取到所述描述符预取缓冲器中。所述直接存储器存取设备处理来自所述描述符预取缓冲器的直接存储器存取描述符,以根据所述直接存储器存取描述符执行直接存储器存取块移动。
在一个示例性实施例中,所述直接存储器存取设备检查所述多个直接存储器存取描述符的有效性。响应于给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为非连续的,所述直接存储器存取设备将所述给定的直接存储器存取描述符标为无效。
在另一示例性实施例中,所述直接存储器存取设备确定所述描述符预取缓冲器中的可用槽的数量,以及读取对应于所述可用槽的数量的多个直接存储器存取描述符。
在另一示例性实施例中,所述直接存储器存取设备读取对应于所述描述符预取缓冲器中的槽的最大数量的多个直接存储器存取描述符,试图将所读取的数量的直接存储器存取描述符存储在所述描述符预取缓冲器中,以及响应于所述描述符预取缓冲器已满,从所述多个直接存储器存取描述符中丢弃无法被存储在所述描述符预取缓冲器中的其余直接存储器存取描述符。
将在以下对本发明示例性实施例的详细描述中描述本发明的这些和其它特征和优点,或者考虑到以下对本发明示例性实施例的详细描述,本发明的这些和其它特征和优点对于本领域普通技术人员将变得显而易见。
附图说明
通过参考以下结合附图阅读的说明性实施例的详细描述,将最好地理解本发明本身以及其优选使用模式、另外的目的和优点,在附图中:
图1是其中可实现说明性实施例的各方面的数据处理系统的示例性框图;
图2是其中可实现说明性实施例的各方面的示例性数据处理系统的框图;
图3是说明根据说明性实施例的南桥的框图;
图4是说明根据说明性实施例的、具有描述符预取缓冲器的直接存储器存取设备的框图;
图5是说明根据说明性实施例的、通过描述符预取进行的直接存储器存取设备的操作的流程图;以及
图6是说明根据说明性实施例的、通过积极描述符预取进行的直接存储器存取设备的操作的流程图。
具体实施方式
现在参考附图,并具体参考图1-2,提供了其中可实现本发明说明性实施例的数据处理环境的示例性图。应该理解,图1-2仅是示例性的,并不意味着断言或暗示对其中可实现本发明各方面或实施例的环境的任何限制。在不背离本发明的精神和范围的情况下,可以做出对所描述环境的许多修改。
图1是其中可实现说明性实施例的各方面的数据处理系统的示例性框图。图1中所示的示例性数据处理系统是单元宽带引擎(CBE)数据处理系统的示例。尽管CBE将用在对本发明优选实施例的描述中,但本发明并不限于此,其对于本领域普通技术人员来说在阅读以下描述后将变得显而易见。
如图1所示,CBE 100包括具有处理器(PPU)116及其L1和L2高速缓存112和114的功率处理器元件(PPE)110,和多个协处理器元件(SPE)120-134,多个协处理器元件(SPE)120-134的每个具有其自有的协处理器单元(SPU)140-154、存储器流控制155-162、本地存储器或存储库(LS)163-170、以及总线接口单元(BIU单元)180-194,BIU单元180-194例如可以是组合直接存储器存取(DMA)、存储器管理单元(MMU)和总线接口单元。还提供有高带宽内部元件互连总线(EIB)196、总线接口控制器(BIC)197和存储器接口控制器(MIC)198。
本地存储器或本地存储库(LS)163-170是大型存储器映射的非连贯的可寻址部分,其物理上可以被提供作为耦合于SPU 140-154的小型存储器。本地存储库163-170可以被映射到不同的地址空间。这些地址区域在无别名(non-aliased)配置中是连续的。本地存储库163-170通过将在下文详细描述的其地址单元(诸如经由SPU标识寄存器)与其相应的SPU140-154和SPE 120-134相关联。只要本地存储库未被置于安全操作模式中,系统中的任意资源就有能力从/向本地存储库163-170进行读写,其中在安全操作模式中仅有其相关联的SPU可以访问本地存储库163-170或者本地存储库163-170的指定的受保护部分。
CBE 100可以是单片系统,从而图1描述的每个元件可以在单个微处理器芯片上被提供。而且,CBE 100是异构处理环境,其中每个SPU可以接收来自系统中其它每个SPU的不同指令。而且,SPU的指令集不同于PPU的指令集,例如,PPU可以执行基于精简指令集计算机(RISC)的指令,而SPU执行矢量化指令。
SPE 120-134彼此耦合并且经由EIB 196耦合到L2高速缓存114。此外,SPE 120-134经由EIB 196耦合到MIC 198和BIC 197。MIC 198提供到共享存储器199的通信接口。BIC 197提供CBE 100和其它外部总线与设备之间的通信接口。
PPE 110是双线程的PPE 110。该双线程PPE 110和八个SPE 120-134的组合使得CBE 100能够处理10个并发线程以及超过128个未完成的存储器请求。PPE 110充当其它八个SPE 120-134的控制器,SPE 120-134处理大多数的计算工作负荷。举例来说,PPE 110可以被用来运行传统的操作系统,而SPE 120-134执行矢量化的浮点代码运行。
SPE 120-134包括协处理单元(SPU)140-154、存储器流控制单元155-162、本地存储器或存储库163-170和接口单元180-194。在一示例性实施例中,本地存储器或存储库163-170包括对PPE 110可见并可以由软件直接寻址的256KB的指令与数据存储器。
PPE 110可以为SPE 120-134加载小的程序或线程,将SPE链接在一起来处理复杂操作中的每一步。例如,引入CBE 100的机顶盒可以加载用于读取DVD、视频音频解码以及显示的程序,并且数据将从一SPE传递到另一SPE,直到它最终止于输出显示器上。在4GHz处,每个SPE 120-134具有理论上32 GFLOPS(十亿次浮点运算/秒)的性能,并且PPE110具有类似的性能水平。
存储器流控制单元(MFC)155-162用作SPU与系统的其余部分及其它元件的接口。MFC 155-162提供了用于主存储装置和本地存储装置163-170之间的信息传输、保护和同步的主要机制。逻辑上对于处理器中的每个SPU存在一MFC。某些实现方式可以在多个SPU之间共享单个MFC的资源。在这种情形下,为MFC定义的所有设施和命令必须表现为独立于用于每个SPU的软件。共享MFC的效果受限于依赖于实现方式的设施和命令。
现在参考图2,示出了其中可实现说明性实施例的各方面的示例性数据处理系统的框图。在所描述示例中,数据处理系统200使用集线器体系结构,其包括南桥和输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元202经由存储器接口控制器(MIC)210连接于系统存储器208。处理单元202通过总线接口控制器(BIC)206连接于SB/ICH 204。
在所描述示例中,局域网(LAN)适配器212连接于SB/ICH 204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口以及其它通信端口232、以及PCI/PCIe设备234通过总线238和总线240连接于SB/ICH 204。PCI/PCIe设备可以包括例如以太网适配器、内插卡和用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe不使用。ROM 224可以例如是闪速二进制输入/输出系统(BIOS)。
HDD 226和CD-ROM驱动器230通过总线240连接于SB/ICH 204。HDD 226和CD-ROM驱动器230例如可以使用集成驱动器电子电路(IDE)或串行高级技术附接(SATA)接口。超级I/O(SIO)设备236可以连接于SB/ICH 204。
操作系统运行于处理单元202上。操作系统协调和提供对图2中的数据处理系统200内的各种组件的控制。作为客户端,操作系统可以是可买到的操作系统。面向对象编程系统(诸如JavaTM编程系统)可结合操作系统运行,并提供从在数据处理系统200上执行的JavaTM程序或应用对操作系统的调用。(Java是Sun Microsystems公司在美国、其它国家或二者中的商标。)
作为服务器,数据处理系统200例如可以是IBMeServerTM pSeries计算机系统,其运行高级交互执行(AIX)操作系统或LINUX操作系统(eServer、pSeries和AIX是国际商业机器公司在美国、其它国家或二者中的商标,而LINUX是Linus Torvalds在美国、其它国家或二者中的商标)。数据处理系统200可以在处理单元202中包括多个处理器。可替代地,可以使用单处理器系统。
用于操作系统、面向对象的编程系统和应用或程序的指令位于存储设备(诸如HDD 226)上,并可被加载到主存储器208中用于由处理单元202执行。本发明的说明性实施例的过程可以由处理单元202使用计算机可用程序代码来执行,所述计算机可用程序代码可位于存储器(例如主存储器208、ROM 224)中、或位于例如一个或多个外围设备226和230中。
总线系统(诸如图2中所示的总线238或240)可以包括一个或多个总线。当然,总线系统可以使用任意类型的通信结构或体系结构来实现,其提供在附接于该结构或体系结构的不同组建或设备之间的数据传输。通信单元(诸如图2中的调制解调器222或网络适配器212)可以包括用于传送和接收数据的一个或多个设备。存储器可以例如是主存储器208、ROM224、或者诸如在图2中的NB/MCH 202中找到的高速缓存。
本领域普通技术人员将理解,图1-2中的硬件可以取决于实现方式而不同。除了图1-2中描述的硬件之外或作为图1-2中描述的硬件的替换,可使用其它内部硬件或外围设备,诸如闪速存储器、等效非易失性存储器或光盘驱动器等等。同样,在不背离本发明的精神和范围的情况下,说明性实施例的过程可被应用于不同于前述的SMP系统的多处理器数据处理系统。
而且,数据处理系统200可以采用多个不同的数据处理系统中的任一种的形式,所述多个不同的数据处理系统包括客户端计算设备、服务器计算设备、平板式计算机、膝上型计算机、电话或其它通信设备、个人数字助理(PDA)、视频游戏控制台等等。在某些说明性实施例中,数据处理系统200可以是便携式计算设备,例如其配置有闪速存储器来提供用于存储操作系统文件和/或用户生成数据的非易失性存储器。基本上,数据处理系统200可以是任意已知的或未来开发的数据处理系统,而不存在体系结构上的限制。
南桥204可以包括直接存储器存取(DMA)控制器。DMA控制器通常用于在系统存储器和输入/输出(I/O)设备之间移动数据,但也用于在系统存储器中的一个区域和另一个之间移动数据。如果期望高总线使用率,则高等待时间设备呈现出独特的挑战。当谈到高等待时间设备时,必须存在足够的并发未完成事务,从而用来从高等待时间设备接收数据的时间少于或等于用来从在其之前排队的所有其它未完成事务传输数据的时间。如果此标准被满足,则在总线上将很少存在间隙或延误,其中DMA正等待数据并且不具有可用于传输的任意其它数据。
在进行进一步集成的趋势下,尤其是通过单片系统,图2中的许多设备可以被集成到南桥204中。例如,单一总线可被集成到南桥204中。而且,控制器和接口(诸如USB控制器、PCI和PCIe控制器、存储器控制器等)可被集成到南桥204中,并附接到内部总线。此外,南桥204可包括存储器控制器,其中存储器模块可被连接到存储器控制器用于本地存储器。还要指出,处理单元202可包括内部总线(诸如图1中的EIB 196),通过内部总线,DMA设备可访问系统存储器208。
图3是说明根据说明性实施例的南桥的框图。例如,处理单元302向南桥300中的总线320发出DMA命令。南桥300中的DMA设备310接着可以通过执行从源设备(诸如总线单元设备322)进行的读操作以及对目标设备(诸如总线单元设备324)进行的写操作而执行DMA命令。在可替换示例中,DMA命令可请求从总线单元设备322向系统存储器304移动数据块,或者根据另一示例,DMA命令可请求从存储器304向总线单元设备324移动数据块。总线单元设备322和总线单元设备324例如可以是存储器控制器、USB控制器、PCI控制器、存储设备控制器等等、或它们的组合。
源设备和目标设备可包括低等待时间设备(诸如存储器)和高等待时间设备(诸如硬盘驱动器)。不过,要指出,通常为低等待时间的设备(诸如存储器设备)在某些情况下取决于它们在总线和桥层级结构中的位置也可能是高等待时间的。出于简明的原因,南桥300的许多组件未示出。本领域普通技术人员将认识到,南桥300将包括图3中未示出的更多的特征和功能。
在南桥300中,DMA设备310包括DMA引擎(DE)312和总线引擎(BE)314。专用读写(RW)命令允许DE 312更高效地使事务对于BE 314排队。通过使用更标准的实现方式,DE将通过指定BE将在总线上执行的每个事务而对BE进行微管理。不过,在说明性实施例中,专用RW命令允许DE 312同时指定读和写,从而DE 312可以更高效地控制数据块的移动。
BE 314可以读取从处理单元302向总线320发出的DMA命令,诸如块移动请求。处理单元302可以直接向DMA设备310发出DMA命令。可替换地,处理单元302可以使用散布/收集列表发出DMA命令,所述散布/收集列表可以是系统存储器304或本地存储器328中的表或链接列表。在后一情形中,BE 314可以仅从散布/收集列表读取描述符,以接收下一DMA命令。DMA设备310可以把通过本地存储器控制器326连接的本地存储器328用作为工作存储器。
根据说明性实施例,如图3所示,例如,DMA设备被构建为松散耦合的DMA引擎(DE)和总线引擎(BE)。DE将已编程数据块移动分解为单独的事务,解释散布/收集描述符、以及对信道进行判优。BE理解DMA设备所附接的总线的总线协议,并运行由DE发送的所有事务。BE必须支持足够的并发事务,以及由此支持足够的缓冲器,以便保持数据流管道不会延误。DE使事务对于BE排队,并且可以远远在BE之前获得BE的每一缓冲器空间。BE经由简单的请求/确认握手来调节(throttle)DE。
DE不知道或不需要知道BE已实现了多少缓冲器;因此,不同BE可以与同一DE一起使用,以支持不同的等待时间环境或者附接到不同总线。对于最大可扩展性,BE可被构建为逻辑上独立的“BE单元”,每个BE单元负责为DE管理一个缓冲器和一个事务。BE单元的数量可以是可配置的合成参数。
一旦DE获得针对其当前请求的确认,它就可以进行另一请求。当BE没有可用缓冲器时,它拒绝对DE的当前请求的确认,这防止DE请求更多事务。当资源在BE中被释放时,将激活对DE的确认,并且接着DE可以请求另一事务。
BE包含缓冲器的通用池。例如,如果BE包含16个缓冲器,则所有16个缓冲器可被一个DMA信道使用,或者它们可以以DE需要的任意方式在信道之间进行分配。DE使来自任意信道的事务对于BE排队。DE仅当它没有工作可做时或者当BE拒绝确认时才停止使事务排队,其中所述确认指示出BE没有可用的缓冲器空间。
BE根据总线协议运行所有已排队事务,并处理可能的总线情形,诸如无序返回的事务数据以及被重试的事务。处理无序数据的DMA针对数据块移动被优化,所述数据块移动对于子块的顺序没有意义。存在某些应用(诸如连网和视频流传输),其中数据必须按顺序移动。
在DE和BE之间可以存在简单接口,其中DE使事务对于BE排队。BE为DE运行事务,直到DE已使得所有已编程数据块被移动为止。DE可以通过指定对于BE的每次读和每次写(BE在总线上执行这些读和写)而使得所有已编程数据块被移动。DE对信道进行判优,并且通常以公平方式交错扫描来自多个信道的读和写,从而来自所有信道的数据可以大约同时进行传输。存在可以被实现的多种信道判优优先级方案;不过,判优并非本公开的重点。
因为DMA涉及移动数据,所以DE执行的从源地址进行的每次读事务必须最终跟随有对于目的地地址的相应写事务。并且因为DMA移动数据而不处理数据,所以由读事务传输的数据是由相应写事务传输的相同数据。数据不会以任意方式被修改。因此,根据说明性实施例,DE和BE可以通过使用组合的读写(RW)命令使得过程更高效,所述命令可以在DE和BE之间进行排队。
在一说明性实施例中,DMA设备将描述符预取到描述符预取缓冲器中。在图3描述的示例中,描述符预取缓冲器330位于DE 312中。描述符预取缓冲器330的大小针对给定等待时间环境保有适当数量的描述符。DE 312试图在任何时候通过对于每次事务请求多个描述符而保持描述符预取缓冲器330为满的。BE 314从系统存储器304或从本地存储器328读取这些描述符,并经由R/W接口上的特殊数据通道将它们直接发送到DE312,所述特殊数据通道仅被用于从BE 314向DE 312中的描述符预取缓冲器传递描述符。在所述示例中,DE 312可以继续使数据事务对于BE 314排队,而不会出现当它进行从描述符向描述符的转换时不得不延误的情况,因为下一描述符很可能将位于预取缓冲器中。
在描述符表体系结构中,描述符是顺序的,并且预取描述符是直接进行的。不过,描述符表体系结构具有缺点,典型地,DMA控制器通过使用更灵活的链接列表体系结构来尝试避免所述缺点。预取描述符本质上是串行过程,因为每个描述符指向链接列表中的下一项。理论上,DMA控制器直到当前描述符被检索和检查之前将不知道在哪里获得下一描述符,因为每个描述符“指向”下一描述符的位置。
根据说明性实施例,DMA控制器做出描述符在存储器中顺序地存储的假设,并且根据该假设“推测地”读取它们。当DE 312从系统存储器接收到实际的描述符数据时,它检查每个描述符以确保该假设有效。当发现假设无效时,预取缓冲器被转储清除(flush),并且向正确的地址发出新的读取。因此,在此方案中,仅当描述符不可以在存储器中顺序地存储时,才应该存在延误。这在正确编写的软件的情况下应该是罕见的。此方案给出了较大性能获益,而不必非要使用较不灵活的“描述符表”体系结构。
图4是说明根据说明性实施例的、具有描述符预取缓冲器的直接存储器存取设备的框图。DMA设备400可以通过执行从源设备的读操作以及对于目标设备的写操作来执行DMA命令。出于简明的原因,DMA设备400的许多组件未示出。本领域普通技术人员将认识到,DMA设备400可包括图4中未示出的更多的特征和功能。DMA设备400包括DMA引擎(DE)412和总线引擎(BE)414。BE 414可读取DMA命令,如例如来自系统存储器430的描述符431-435所定义的。描述符431-435包括散布/收集列表,其可以是系统存储器430中的链接列表。
根据说明性实施例,如图4所示,例如,BE 414经由总线420将预定数量的描述符预取到描述符预取缓冲器450中。在一示例性实施例中,针对每个DMA信道可以存在一个描述符预取缓冲器,因为每个信道遵从不同的描述符链接列表;不过,在图4中出于简明的原因,仅示出一个描述符预取缓冲器。在所描述的示例中,描述符预取缓冲器450保有四个描述符451-454。取决于实现方式,并更具体地取决于DMA设备400的等待时间环境,描述符预取缓冲器450可以保有更多或更少个描述符。
例如,每个描述符可以是64字节长。当散布/收集操作在信道上通过软件开始时,在此示例中,DE 412立即在单个256字节的事务中发出对于四个连续描述符的请求。BE 414执行该事务。BE 414在接收到描述符451-454时将描述符451-454存储在描述符预取缓冲器450中。
当数据被置于描述符预取缓冲器450中时,DMA设备400评估所述数据,以确定每个描述符是否实际上与前一描述符是顺序的,或者甚至根本就是一个描述符。描述符451-454被存储在缓冲器450中,并包括有效/无效标记456。使用有效/无效标记456将每个顺序描述符标为有效。如果发现描述符是非顺序的,或者在其它方面是无效的,则DMA设备400使用标记456将该描述符和所有随后的描述符标为无效。当描述符被BE 414传递到DE 412时,DE 412执行对描述符的证实。
如果使用标记456将描述符标为无效,则描述符预取缓冲器450中的槽被认为是空的。因此,如果任意描述符被标为无效,则缓冲器450实际上未满,并且BE 414可以基于缓冲器中的可用空间数量立即执行另一描述符读取。
作为示例,考虑能够保有四个描述符的缓冲器。首先,BE将四个描述符读取到缓冲器中。在此示例中,考虑第一和第二描述符为有效,但发现第三描述符为非顺序的。DMA设备将第一和第二描述符标为有效,而将第三和第四描述符标为无效。一旦发现第三描述符为无效,DE就请求另两个描述符,因为在描述符预取缓冲器中存在两个可用的槽。
用于读取描述符的规则为,无论何时当预取缓冲器中存在可用空间时,或者由于处理有效描述符的原因或者由于当所预取的描述符到达时发现其无效的原因,DE将单个事务排队,所述事务请求填充缓冲器中的可用空间所需数量的描述符。因此,根据以上示例,取决于缓冲器中有多少空间当前可用,DE可以在一个事务中请求一个、两个、三个或四个描述符。
在典型操作期间,DE将请求四个描述符以开始信道,并每当其完成对一个描述符的处理时接着请求一个描述符。DE直到其完成对缓冲器中的其它三个描述符的处理之前将不需要针对该下一个描述符的数据。此机制应该允许描述符足够提前地被读取,以避免针对合理大小的包的延误。当然,如果每个描述符指向的包的大小小于临界大小,则将存在延误。预取输入的数量必须根据最大数据读取等待时间、最大描述符读取等待时间、以及每个描述符可描述的最小包大小而进行调整。
为了上述的具有描述符预取缓冲器的DMA设备良好地执行,软件必须在任何可能的时候将描述符链接列表顺序地建立在存储器中。每个非顺序的描述符将使得DMA引擎丢弃其已预取的数据,以及返回并开始对新地址的描述符读取,从而导致延误。有时,软件可以仅将描述符链接列表的顺序性质控制到某一点。例如,软件可以使得描述符在虚拟存储器中为顺序的,但操作系统可以将相应的实页面非顺序地映射在物理存储器中。因为页面典型地为至少4k,所以在由于非顺序页面的原因可能出现非顺序描述符之前,可以存在至少64个顺序的(64字节)描述符。由于页面边界原因产生的这些“跳跃”对于使用上述的描述符预取缓冲器的DMA设备的性能的影响应该可忽略。
不过,重要的是要指出,对于DMA设备的正确操作来说,具有顺序的描述符不是必须的。即使所有描述符都不是顺序的,也将获得正确结果。将描述符链接列表顺序地建立在存储器中仅影响性能,而不影响功能。
图5是说明根据说明性实施例的、通过描述符预取进行的直接存储器存取设备的操作的流程图。将会理解,流程图图示中的每个框以及流程图图示中的框的组合可以由计算机程序指令来实现。这些计算机程序指令可被提供给处理器或其它可编程数据处理装置以产生机器,从而在处理器或其它可编程数据处理装置上执行的指令创建用于实现一个或多个流程图框中指定的功能的装置。这些计算机程序指令还可以存储在计算机可读存储器或存储媒体中,其可以指示处理器或其它可编程数据处理装置以特定方式运行,从而存储在计算机可读存储器或存储媒体中的指令产生制品,其包括用于实现一个或多个流程图框中指定的功能的指令装置。
于是,流程图图示的框支持用于执行所指定功能的装置的组合、用于执行所指定功能的步骤的组合、以及用于执行所指定功能的程序代码装置。还将理解,流程图图示的每个框以及流程图图示中的框的组合可以由执行所指定功能或步骤的专用的基于硬件的计算机系统来实现,或者由专用硬件和计算机指令的组合来实现。
现在参考图5,操作开始,并且DMA设备确定描述符是否在系统存储器中的散布/收集链接列表中可用(框502)。如果描述符不可用,则操作返回框502进行等待,直到描述符可用为止。如果在框502描述符可用,则DMA设备确定在描述符预取缓冲器中空间是否可用(框504)。如果空间不可用,则操作返回框502进行等待,直到描述符可用为止。
如果在框504在预取缓冲器中空间可用,则DMA设备确定描述符预取缓冲器中的可用描述符槽的数量(框506)。接着,总线引擎将描述符读取到描述符预取缓冲器中(框508)。
接着,DMA设备检查所预取的描述符的有效性(框510),并确定描述符是否有效(框512)。例如,如果描述符不是由缓冲器中的前一描述符所指向的顺序的描述符,则该描述符可以是无效的。如果描述符无效,则DMA设备使用有效/无效标记将该描述符和所有随后的描述符标为无效(框514),并且接着操作返回框502进行等待,直到描述符可用为止;否则,DMA设备将该描述符标为有效(框516)。
此后,DMA设备确定描述符是否是所预取的最后一个描述符(框518)。如果描述符不是最后一个所预取的描述符,则操作返回框510,在此DMA设备检查下一个所预取的描述符的有效性。如果在框518描述符是最后一个所预取的描述符,则操作返回框502等待更多的描述符可用。
上述DMA预取机制向下至某个数据包大小都工作良好,但是对于更小的包大小可能经历延误。在另一说明性实施例中,DMA设备使用积极(aggressive)预取。积极预取使用更多总线带宽,于是仅当必须支持比上述描述符预取机制所可以处理的包更小的包时,将使用积极预取。
较小包大小所经历的问题在于,DE开始将事务对于BE排队,并且预取缓冲器开始快速清空。一旦预取缓冲器开始为空,DE就进行预取请求。取决于实际情况,当DE准备进行其下一个描述符预取时,通常存在由BE处理的两个描述符,以及在预取缓冲器中剩余的两个描述符。这使得DE请求另外两个描述符。接着,若干时钟周期之后,DE完成针对最后两个描述符的其余事务对于BE的排队,并且预取缓冲器为空。因此,如果DE等待了另外若干个时钟周期,则当DE请求了两个描述符的时候实际可以请求四个描述符。这导致延误,因为DE每次仅可以支持一个未决描述符读取,这是因为支持多于一个的读取具有许多显著困难,诸如不得不支持无序预取返回。
两个描述符回来,并且DE快速地处理它们。由此,DE请求另外四个描述符。当四个描述符回来时,同样事情发生,并且DE在下一次读取中请求另外两个描述符。结果,DE重复四、二、四、二等等的模式。这导致性能延误。
根据说明性实施例,无论何时当描述符预取缓冲器中存在任意空间时,DE请求最大数量的描述符。这是非常积极的,因为DE将常常请求比缓冲器所能存储的更多的描述符数据。没有可用缓冲器空间时到达的描述符被丢弃。不过,该积极预取工作良好,因为在高等待时间读环境中,直到缓冲器接收描述符之时,DMA设备很可能已处理了某些更多的描述符。因此,可以使用某些额外数据(在其它情况下将无法预期到这些数据)。与通过读取无法被存储的某些描述符数据而占据的额外带宽相比,通过提前接收无需等待随后的请求就可以使用的描述符所获得的性能重要得多。
当包大小较大时,DMA设备结束,丢弃更多描述符,因为在缓冲器中没有地方存储它们。不过,当包大小较大时,不存在由于缺少描述符而产生的延误管道的风险,于是被丢弃的描述符所用的附加带宽是可忽略的。
图6是说明根据说明性实施例的、通过积极描述符预取进行的直接存储器存取设备的操作的流程图。操作开始,并且DMA设备确定描述符是否在系统存储器中的散布/收集链接列表中可用(框602)。如果描述符不可用,则操作返回框602进行等待,直到描述符可用为止。如果在框602描述符可用,则DMA设备确定在描述符预取缓冲器中空间是否可用(框604)。如果空间不可用,则操作返回框602进行等待,直到描述符可用为止。
如果在框604在预取缓冲器中空间可用,则总线引擎读取描述符预取缓冲器将保有的最大数量的描述符(框606)。接着,BE将所预取的描述符存储到描述符预取缓冲器中(框608)。接着,DMA设备检查所存储的所预取的描述符的有效性(框610),并确定描述符是否有效(框612)。例如,如果描述符不是由缓冲器中的前一描述符所指向的顺序的描述符,则该描述符可以是无效的。如果描述符无效,则DMA设备使用有效/无效标记将该描述符标为无效(框614),并且丢弃其余所预取的描述符(框620),并且操作返回框602等待更多描述符可用;否则,DMA设备将该描述符标为有效(框616)。
此后,DMA设备确定预取缓冲器是否有地方存储描述符(框618)。如果缓冲器未满,则操作返回框608,在此DMA设备存储下一个所预取的描述符。如果在框618缓冲器已满,则DMA设备丢弃其余所预取的描述符(框620),并且操作返回框602等待更多描述符可用。
因此,说明性实施例通过提供一种DMA设备解决了现有技术的缺陷,所述DMA设备被构建为松散耦合的DMA引擎(DE)和总线引擎(BE)。DE将已编程数据块移动分解为单独的事务,解释散布/收集列表、以及对信道进行判优。BE理解DMA设备所附接的总线的总线协议,并运行由DE发送的所有事务。DE和BE可以通过使用结合的读写(RW)命令来使得过程更高效,所述命令可以在DE和BE之间排队。
DMA设备将描述符预取到描述符预取缓冲器中。描述符预取缓冲器的大小针对给定等待时间环境保有适当数量的描述符。为了支持描述符链接列表,DMA引擎基于描述符在存储器中为顺序的假设来预取描述符,并且将被发现违反该假设的任意描述符丢弃。DMA引擎试图在任何可能的时候通过对于每次事务请求多个描述符而保持描述符预取缓冲器为满的。总线引擎从系统存储器中读取这些描述符,并将它们写到预取缓冲器中。DMA引擎还可以使用积极预取,其中总线引擎无论何时当描述符预取缓冲器中存在任意空间时请求缓冲器将支持的最大数量的描述符。DMA设备丢弃无法被存储的任意其余描述符。
应该理解,说明性实施例可采用完全硬件实施例、完全软件实施例或包含硬件和软件单元二者的实施例的形式。在一个优选实施例中,说明性实施例的机制用软件实现,所述软件包括但不限于固件、驻留软件、微代码等。
此外,说明性实施例可采用可从计算机可用或计算机可读媒体访问的计算机程序产品的形式,所述计算机可用或计算机可读媒体提供用于由计算机或任何指令执行系统所使用或与其相结合使用的程序代码。出于此说明书的目的,计算机可用或计算机可读媒体可以是任何装置,其可以包含、存储、传送、传播或传输用于由指令执行系统、装置或设备所使用或与其相结合使用的程序。
所述媒体可以是电、磁、光、电磁、红外或半导体系统(或装置或设备)或传播媒体。计算机可读媒体的示例包括半导体或固态存储器、磁带、可移除计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘以及光盘。光盘的当前示例包括只读存储器致密盘(CD-ROM)、读/写致密盘(CD-R/W)和DVD。
适于存储和/或执行程序代码的数据处理系统将包括通过系统总线直接或间接耦合到存储器单元的至少一个处理器。存储器单元可包括在程序代码实际执行期间使用的本地存储器、海量存储装置和高速缓冲存储器,高速缓冲存储器提供至少某种程序代码的临时存储以便减少在执行期间必须从海量存储装置检索代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、点击设备等)可直接地或通过中间I/O控制器被耦合于系统。网络适配器也可耦合于系统,以使得数据处理系统能够通过中间的专用或公用网络耦合于其它数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器和以太网卡仅是当前可用类型的网络适配器的几种。
已经出于说明和描述的目的呈现了对本发明的描述,其并非意在将本发明穷举或限制于所公开的形式。对于本领域普通技术人员来说许多修改和变体将很明显。所选择和描述的实施例用来最好地解释本发明的原理、实践应用,以及使得本领域普通技术人员能够理解本发明的具有适于预期的特定使用的多种修改的多种实施例。
Claims (20)
1. 一种用于在直接存储器存取设备中通过描述符预取来执行直接存储器存取块移动的方法,所述方法包括:
响应于空间在所述直接存储器存取设备中的描述符预取缓冲器中可用,将在物理存储器中顺序存储的多个直接存储器存取描述符读取到所述描述符预取缓冲器中;以及
处理来自所述描述符预取缓冲器中的描述符,以根据所述描述符执行直接存储器存取块移动。
2. 根据权利要求1所述的方法,进一步包括:
检查所述多个直接存储器存取描述符的有效性;以及
响应于给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为非连续的,将所述给定的直接存储器存取描述符标为无效。
3. 根据权利要求2所述的方法,进一步包括:
将所述给定的直接存储器存取描述符之后的每个描述符标为无效。
4. 根据权利要求1所述的方法,进一步包括:
检查所述多个直接存储器存取描述符的有效性;以及
响应于给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为连续的,将所述给定的直接存储器存取描述符标为有效。
5. 根据权利要求1所述的方法,其中读取多个直接存储器存取描述符包括:
确定所述描述符预取缓冲器中的可用槽的数量;以及
读取对应于所述可用槽的数量的多个直接存储器存取描述符。
6. 根据权利要求1所述的方法,其中读取多个直接存储器存取描述符包括:
读取对应于所述描述符预取缓冲器中的槽的最大数量的多个直接存储器存取描述符;
试图将所读取的数量的直接存储器存取描述符存储在所述描述符预取缓冲器中;以及
响应于所述描述符预取缓冲器已满,从所述多个直接存储器存取描述符中丢弃无法被存储在所述描述符预取缓冲器中的其余直接存储器存取描述符。
7. 根据权利要求6所述的方法,进一步包括:
响应于空间在所述描述符预取缓冲器中可用,将所述多个直接存储器存取描述符中的给定的直接存储器存取描述符存储在所述描述符预取缓冲器中。
8. 根据权利要求7所述的方法,进一步包括:
检查所述给定的直接存储器存取描述符的有效性;以及
响应于所述给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为非连续的,将所述给定的直接存储器存取描述符标为无效。
9. 根据权利要求8所述的方法,进一步包括:
将所述给定的直接存储器存取描述符之后的每个描述符标为无效。
10. 根据权利要求7所述的方法,进一步包括:
检查所述给定的直接存储器存取描述符的有效性;以及
响应于所述给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为连续的,将所述给定的直接存储器存取描述符标为有效。
11. 一种直接存储器存取设备,包括:
具有预取缓冲器的直接存储器存取引擎;
总线引擎;以及
其中响应于空间在所述直接存储器存取设备中的描述符预取缓冲器中可用,所述总线引擎将在物理存储器中顺序存储的多个直接存储器存取描述符读取到所述描述符预取缓冲器中;以及
其中所述直接存储器存取设备处理来自所述描述符预取缓冲器的直接存储器存取描述符,以根据所述直接存储器存取描述符执行直接存储器存取块移动。
12. 根据权利要求11所述的直接存储器存取设备,其中所述直接存储器存取引擎检查所述多个直接存储器存取描述符的有效性,以及响应于给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为非连续的,将所述给定的直接存储器存取描述符标为无效。
13. 根据权利要求12所述的直接存储器存取设备,其中所述直接存储器存取引擎将所述给定的直接存储器存取描述符之后的每个描述符标为无效。
14. 根据权利要求11所述的直接存储器存取设备,其中所述直接存储器存取引擎检查所述多个直接存储器存取描述符的有效性,以及响应于给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为连续的,将所述给定的直接存储器存取描述符标为有效。
15. 根据权利要求11所述的直接存储器存取设备,其中所述总线引擎确定所述描述符预取缓冲器中的可用槽的数量,以及读取对应于所述可用槽的数量的多个直接存储器存取描述符。
16. 根据权利要求11所述的直接存储器存取设备,其中所述总线引擎读取对应于所述描述符预取缓冲器中的槽的最大数量的多个直接存储器存取描述符,试图将所读取的数量的直接存储器存取描述符存储在所述描述符预取缓冲器中,以及响应于所述描述符预取缓冲器已满,从所述多个直接存储器存取描述符中丢弃无法被存储在所述描述符预取缓冲器中的其余直接存储器存取描述符。
17. 一种数据处理系统,包括:
总线;
耦合于所述总线的多个总线单元设备;
耦合于所述总线的直接存储器存取设备,其中所述直接存储器存取设备包括描述符预取缓冲器;
处理单元,其中所述处理单元具有对所述总线的访问;以及
耦合于所述处理单元的系统存储器,其中所述处理单元将直接存储器存取描述符存储在所述系统存储器中,其中每个直接存储器存取描述符指示所述多个总线单元设备中的源设备和目标设备,
其中响应于空间在所述描述符预取缓冲器中可用,所述直接存储器存取设备将多个直接存储器存取描述符从所述系统存储器读取到所述描述符预取缓冲器中;以及
其中所述直接存储器存取设备处理来自所述描述符预取缓冲器的直接存储器存取描述符,以根据所述直接存储器存取描述符执行直接存储器存取块移动。
18. 根据权利要求17所述的数据处理系统,其中所述直接存储器存取设备检查所述多个直接存储器存取描述符的有效性,以及响应于给定的直接存储器存取描述符相对于所述多个直接存储器存取描述符中的前一直接存储器存取描述符为非连续的,将所述给定的直接存储器存取描述符标为无效。
19. 根据权利要求17所述的数据处理系统,其中所述直接存储器存取设备确定所述描述符预取缓冲器中的可用槽的数量,以及读取对应于所述可用槽的数量的多个直接存储器存取描述符。
20. 根据权利要求17所述的数据处理系统,其中所述直接存储器存取设备读取对应于所述描述符预取缓冲器中的槽的最大数量的多个直接存储器存取描述符,试图将所读取的数量的直接存储器存取描述符存储在所述描述符预取缓冲器中,以及响应于所述描述符预取缓冲器已满,从所述多个直接存储器存取描述符中丢弃无法被存储在所述描述符预取缓冲器中的其余直接存储器存取描述符。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/621,789 US7620749B2 (en) | 2007-01-10 | 2007-01-10 | Descriptor prefetch mechanism for high latency and out of order DMA device |
US11/621,789 | 2007-01-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101221543A CN101221543A (zh) | 2008-07-16 |
CN101221543B true CN101221543B (zh) | 2012-02-08 |
Family
ID=39595276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100017670A Active CN101221543B (zh) | 2007-01-10 | 2008-01-08 | 执行dma块移动的方法、dma设备和数据处理系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7620749B2 (zh) |
JP (1) | JP4939443B2 (zh) |
CN (1) | CN101221543B (zh) |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7676192B1 (en) * | 2005-12-21 | 2010-03-09 | Radio Shack, Corp. | Radio scanner programmed from frequency database and method |
US7711888B2 (en) * | 2006-12-31 | 2010-05-04 | Texas Instruments Incorporated | Systems and methods for improving data transfer between devices |
EP1950932A1 (en) * | 2007-01-29 | 2008-07-30 | Stmicroelectronics Sa | System for transmitting data within a network between nodes of the network and flow control process for transmitting said data |
TWI334541B (en) * | 2007-06-22 | 2010-12-11 | Via Tech Inc | Prd (physical region descriptor) pre-fetch methods for dma (direct memory access) unit |
US8683126B2 (en) * | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
US8176252B1 (en) | 2007-11-23 | 2012-05-08 | Pmc-Sierra Us, Inc. | DMA address translation scheme and cache with modified scatter gather element including SG list and descriptor tables |
US8495301B1 (en) | 2007-11-23 | 2013-07-23 | Pmc-Sierra Us, Inc. | System and method for scatter gather cache processing |
US8650364B2 (en) * | 2008-05-28 | 2014-02-11 | Vixs Systems, Inc. | Processing system with linked-list based prefetch buffer and methods for use therewith |
US20100146518A1 (en) * | 2008-12-08 | 2010-06-10 | International Business Machines Corporation | All-To-All Comparisons on Architectures Having Limited Storage Space |
US7870309B2 (en) | 2008-12-23 | 2011-01-11 | International Business Machines Corporation | Multithreaded programmable direct memory access engine |
US7870308B2 (en) * | 2008-12-23 | 2011-01-11 | International Business Machines Corporation | Programmable direct memory access engine |
US8446944B1 (en) * | 2009-04-30 | 2013-05-21 | Verint Video Solutions Inc. | Data processing system and method |
US8665601B1 (en) | 2009-09-04 | 2014-03-04 | Bitmicro Networks, Inc. | Solid state drive with improved enclosure assembly |
US8447908B2 (en) | 2009-09-07 | 2013-05-21 | Bitmicro Networks, Inc. | Multilevel memory bus system for solid-state mass storage |
US8560804B2 (en) | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
US8738863B2 (en) * | 2009-09-25 | 2014-05-27 | Intel Corporation | Configurable multi-level buffering in media and pipelined processing components |
US8789153B2 (en) * | 2010-01-27 | 2014-07-22 | Authentify, Inc. | Method for secure user and transaction authentication and risk management |
US8626963B2 (en) * | 2010-05-04 | 2014-01-07 | Mediatek Inc. | Packet based data transfer system and method for host-slave interface |
CN101894000A (zh) * | 2010-07-02 | 2010-11-24 | 北京海泰方圆科技有限公司 | Iso文件的读写方法和读写系统 |
US8855194B2 (en) * | 2011-05-09 | 2014-10-07 | Texas Instruments Incorporated | Updating non-shadow registers in video encoder |
US9372755B1 (en) | 2011-10-05 | 2016-06-21 | Bitmicro Networks, Inc. | Adaptive power cycle sequences for data recovery |
WO2013095461A1 (en) | 2011-12-21 | 2013-06-27 | Intel Corporation | Secure direct memory access |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
US8826391B2 (en) | 2012-07-02 | 2014-09-02 | Freescale Semiconductor, Inc. | Virtualized trusted descriptors |
US10095433B1 (en) * | 2012-10-24 | 2018-10-09 | Western Digital Technologies, Inc. | Out-of-order data transfer mechanisms for data storage systems |
KR101993187B1 (ko) | 2012-11-26 | 2019-06-27 | 삼성전자주식회사 | 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 |
US9423457B2 (en) | 2013-03-14 | 2016-08-23 | Bitmicro Networks, Inc. | Self-test solution for delay locked loops |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US10489318B1 (en) | 2013-03-15 | 2019-11-26 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9798688B1 (en) | 2013-03-15 | 2017-10-24 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9875205B1 (en) | 2013-03-15 | 2018-01-23 | Bitmicro Networks, Inc. | Network of memory systems |
US9672178B1 (en) | 2013-03-15 | 2017-06-06 | Bitmicro Networks, Inc. | Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system |
US9400617B2 (en) | 2013-03-15 | 2016-07-26 | Bitmicro Networks, Inc. | Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9501436B1 (en) | 2013-03-15 | 2016-11-22 | Bitmicro Networks, Inc. | Multi-level message passing descriptor |
US9645934B2 (en) | 2013-09-13 | 2017-05-09 | Samsung Electronics Co., Ltd. | System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer |
US10110518B2 (en) | 2013-12-18 | 2018-10-23 | Mellanox Technologies, Ltd. | Handling transport layer operations received out of order |
US9811467B2 (en) * | 2014-02-03 | 2017-11-07 | Cavium, Inc. | Method and an apparatus for pre-fetching and processing work for procesor cores in a network processor |
US10025736B1 (en) | 2014-04-17 | 2018-07-17 | Bitmicro Networks, Inc. | Exchange message protocol message transmission between two devices |
US10078604B1 (en) | 2014-04-17 | 2018-09-18 | Bitmicro Networks, Inc. | Interrupt coalescing |
US10055150B1 (en) | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
US10042792B1 (en) | 2014-04-17 | 2018-08-07 | Bitmicro Networks, Inc. | Method for transferring and receiving frames across PCI express bus for SSD device |
US9952991B1 (en) * | 2014-04-17 | 2018-04-24 | Bitmicro Networks, Inc. | Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation |
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 |
JP6274623B2 (ja) * | 2016-03-24 | 2018-02-07 | インテル・コーポレーション | 安全なダイレクトメモリアクセス |
US10552050B1 (en) | 2017-04-07 | 2020-02-04 | Bitmicro Llc | Multi-dimensional computer storage system |
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
US10956245B1 (en) * | 2017-07-28 | 2021-03-23 | EMC IP Holding Company LLC | Storage system with host-directed error scanning of solid-state storage devices |
US10983920B2 (en) * | 2018-02-08 | 2021-04-20 | Xilinx, Inc. | Customizable multi queue DMA interface |
US10657087B2 (en) * | 2018-05-31 | 2020-05-19 | Toshiba Memory Corporation | Method of out of order processing of scatter gather lists |
JP2020154493A (ja) | 2019-03-19 | 2020-09-24 | キオクシア株式会社 | メモリシステム |
US11669464B1 (en) | 2020-04-24 | 2023-06-06 | Xilinx, Inc. | Multi-addressing mode for DMA and non-sequential read and write patterns |
US11372645B2 (en) * | 2020-06-12 | 2022-06-28 | Qualcomm Incorporated | Deferred command execution |
CN111651380B (zh) * | 2020-06-17 | 2023-08-18 | 中国电子科技集团公司第十四研究所 | 一种基于描述符表的参数加载方法 |
CN114691562A (zh) * | 2020-12-29 | 2022-07-01 | 中科寒武纪科技股份有限公司 | 用于dma操作的方法、装置、设备、集成电路芯片和板卡 |
US20230161725A1 (en) * | 2021-11-23 | 2023-05-25 | Meta Platforms, Inc. | Smart scalable design for a crossbar |
US11622004B1 (en) | 2022-05-02 | 2023-04-04 | Mellanox Technologies, Ltd. | Transaction-based reliable transport |
CN114968864B (zh) * | 2022-07-28 | 2022-10-25 | 飞腾信息技术有限公司 | 验证环境的搭建方法、芯片的验证方法及系统 |
CN116578391B (zh) * | 2023-07-08 | 2023-09-26 | 北京云豹创芯智能科技有限公司 | 描述符表读取方法及模块、后端设备、介质、设备、芯片 |
CN117667793B (zh) * | 2024-01-30 | 2024-04-09 | 苏州元脑智能科技有限公司 | 一种多通道描述符管理系统、方法、设备、介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708233B1 (en) * | 1999-03-25 | 2004-03-16 | Microsoft Corporation | Method and apparatus for direct buffering of a stream of variable-length data |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2669911B2 (ja) * | 1989-11-17 | 1997-10-29 | 株式会社日立製作所 | Dmaコントローラおよび情報処理システム |
JPH0696007A (ja) * | 1992-09-17 | 1994-04-08 | Fujitsu Ltd | Dma転送方式 |
JPH07306785A (ja) * | 1994-05-11 | 1995-11-21 | Toshiba Corp | 分岐命令実行機能を持つプロセッサおよび分岐命令制御方法 |
US6848029B2 (en) * | 2000-01-03 | 2005-01-25 | Dirk Coldewey | Method and apparatus for prefetching recursive data structures |
US7054962B2 (en) | 2002-03-08 | 2006-05-30 | Hewlett-Packard Development Company, L.P. | Embedded system having broadcast data storing controller |
US7631106B2 (en) * | 2002-08-15 | 2009-12-08 | Mellanox Technologies Ltd. | Prefetching of receive queue descriptors |
JPWO2004057481A1 (ja) | 2002-12-20 | 2006-04-27 | 富士通株式会社 | Dma制御装置、dma制御方法、dma制御プログラム |
US7421694B2 (en) | 2003-02-18 | 2008-09-02 | Microsoft Corporation | Systems and methods for enhancing performance of a coprocessor |
US7512722B2 (en) | 2003-07-31 | 2009-03-31 | International Business Machines Corporation | Method for completing a plurality of chained list DMA commands that include a fenced list DMA command element |
US6981074B2 (en) * | 2003-10-14 | 2005-12-27 | Broadcom Corporation | Descriptor-based load balancing |
US7076578B2 (en) * | 2003-12-22 | 2006-07-11 | Intel Corporation | Race free data transfer algorithm using hardware based polling |
US20060206635A1 (en) * | 2005-03-11 | 2006-09-14 | Pmc-Sierra, Inc. | DMA engine for protocol processing |
US7218566B1 (en) * | 2005-04-28 | 2007-05-15 | Network Applicance, Inc. | Power management of memory via wake/sleep cycles |
US7650557B2 (en) * | 2005-09-19 | 2010-01-19 | Network Appliance, Inc. | Memory scrubbing of expanded memory |
US7496695B2 (en) * | 2005-09-29 | 2009-02-24 | P.A. Semi, Inc. | Unified DMA |
US7620746B2 (en) * | 2005-09-29 | 2009-11-17 | Apple Inc. | Functional DMA performing operation on DMA data and writing result of operation |
US7707477B2 (en) * | 2005-09-29 | 2010-04-27 | Apple Inc. | Checksum calculation |
CN100507886C (zh) | 2005-12-22 | 2009-07-01 | 北京中星微电子有限公司 | 一种对非易失性存储器进行直接存储访问的方法及其装置 |
US7822903B2 (en) | 2006-02-24 | 2010-10-26 | Qualcomm Incorporated | Single bus command having transfer information for transferring data in a processing system |
-
2007
- 2007-01-10 US US11/621,789 patent/US7620749B2/en active Active
-
2008
- 2008-01-07 JP JP2008000839A patent/JP4939443B2/ja active Active
- 2008-01-08 CN CN2008100017670A patent/CN101221543B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6708233B1 (en) * | 1999-03-25 | 2004-03-16 | Microsoft Corporation | Method and apparatus for direct buffering of a stream of variable-length data |
Also Published As
Publication number | Publication date |
---|---|
CN101221543A (zh) | 2008-07-16 |
US7620749B2 (en) | 2009-11-17 |
US20080168259A1 (en) | 2008-07-10 |
JP2008171426A (ja) | 2008-07-24 |
JP4939443B2 (ja) | 2012-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101221543B (zh) | 执行dma块移动的方法、dma设备和数据处理系统 | |
CN101221544B (zh) | 用于执行dma块移动的方法及dma设备 | |
CN101149714B (zh) | 用于执行直接存储器存取的方法和系统 | |
US8521934B1 (en) | Multi-port context-based host controller | |
CN105718390B (zh) | 共享存储器链路中的低功率进入 | |
CN104823167B (zh) | 现场错误恢复 | |
CN101878475B (zh) | 向星形拓扑串行总线接口委托网络处理器操作 | |
TWI337709B (en) | Apparatus, method and system for processing a plurality of i/o sequences | |
US5925099A (en) | Method and apparatus for transporting messages between processors in a multiple processor system | |
US5862400A (en) | Formula processor having cache means for storing and retrieving results of previously computed formulas based on identification and dependency information | |
US7051150B2 (en) | Scalable on chip network | |
US7139860B2 (en) | On chip network with independent logical and physical layers | |
US20070174509A1 (en) | System for asynchronous dma command completion notification | |
US20080155163A1 (en) | Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging | |
CN102446073A (zh) | 延迟对操作的确认直至操作完成的方法和系统 | |
US6823403B2 (en) | DMA mechanism for high-speed packet bus | |
US8521930B1 (en) | Method and apparatus for scheduling transactions in a host-controlled packet-based bus environment | |
US6014721A (en) | Method and system for transferring data between buses having differing ordering policies | |
JP3752224B2 (ja) | コンピュータ・システムにおいて命令を処理する方法および装置 | |
US7472158B2 (en) | Initiator connection tag for simple table lookup | |
TWI722009B (zh) | 用於在遠端處理器上進行基元動作之硬體機制 | |
CN103092781A (zh) | 闪存接口的有效利用 | |
US6895454B2 (en) | Method and apparatus for sharing resources between different queue types | |
US6016526A (en) | Method and apparatus for transferring data between buses having differing ordering policies via the use of autonomous units | |
EP1069511B1 (en) | Data Transfer Controller with Plural Ports |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MLNX TECHNOLOGY CO., LTD. Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION Effective date: 20131111 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20131111 Address after: American California Patentee after: Ross, science and Technology Co Ltd Address before: American New York Patentee before: International Business Machines Corp. |