CN101221544B - 用于执行dma块移动的方法及dma设备 - Google Patents
用于执行dma块移动的方法及dma设备 Download PDFInfo
- Publication number
- CN101221544B CN101221544B CN2008100016377A CN200810001637A CN101221544B CN 101221544 B CN101221544 B CN 101221544B CN 2008100016377 A CN2008100016377 A CN 2008100016377A CN 200810001637 A CN200810001637 A CN 200810001637A CN 101221544 B CN101221544 B CN 101221544B
- Authority
- CN
- China
- Prior art keywords
- direct memory
- memory access
- barrier
- access request
- descriptor
- 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.)
- Expired - Fee Related
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明涉及用于执行DMA块移动的方法及DMA设备。直接存储器访问(DMA)设备包括屏障和中断机制,所述机制允许中断和邮箱操作以这样的方式发生:确保正确的操作,但只要有可能,仍允许发生高性能的乱序数据移动。将特定描述符定义为“屏障描述符”。当DMA设备遇到屏障描述符时,它确保在屏障描述符完成之前完成所有先前描述符。所述DMA设备还确保直至与屏障描述符关联的数据移动完成,才断言由屏障描述符生成的任何中断。DMA控制器仅允许由屏障描述符生成中断。屏障描述符概念还允许软件将邮箱完成消息嵌入描述符的分散/收集链接列表。
Description
技术领域
本申请通常涉及改进的数据处理系统和方法。更具体地说,本申请涉及具有用于高等待时间和乱序直接存储器访问设备的屏障和中断机制的直接存储器访问控制器。
背景技术
许多片上系统(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设备可以连接到允许读取数据乱序返回的总线。也就是说,DMA控制器可以向总线发出数个全部为相同或不同数据块移动的一部分的读取事务,并且目标设备可以按照与发出读取顺序不同的顺序返回数据。通常,发起者为每个读取事务分配一个“标记”号,以便当读取数据从总线返回时,发起者将根据标记知道数据所属的事务。
排队的事务可以以任何顺序完成。这允许DMA设备通过同时将多个事务排队到总线(包括将不同事务排队到不同设备)来实现最佳性能。读取事务可以以任何顺序完成,并且当读取数据到达时立即启动其关联的写入。允许按照任何顺序完成读取及其关联写入将在给定总线上实现可能的最佳性能,但是可能会导致某些问题。
当系统软件建立要在I/O设备与存储器之间移动或从存储器中的一个区域移动到另一个区域的大型存储器块时,软件将需要知道何时完成移动数据块以便它可以对数据采取操作。由于处理器或某些其他设备可能会在传输完成时对数据采取操作,所以必须直至所有与移动关联的数据都已传输时才能生成中断;否则,处理器可能会尝试对尚未传输的数据采取操作,并且因此将读取错误的数据。在乱序执行时,DMA设备不能简单地在块中的最后一个事务完成时生成中断。
某些系统通过当一系列数据移动完成时使“完成代码”移动到“邮箱”来工作。邮箱是用作消息的先进先出(FIFO)的消息传送设备。当DMA控制器通过写入邮箱地址来将消息传送到邮箱时,DMA控制器可以按顺序将消息传送到处理器。消息通常很小,在八字节或十六字节的量级。当软件在分散/收集列表中建立一系列块移动时,软件可以在描述符链接列表中输入完成消息,以便DMA设备可以通过同一分散/收集描述符列表来移动数据块和完成代码消息两者。
但是,为了使软件正确工作,当DMA控制器将完成消息写入邮箱时,正在写入邮箱的描述符之前的所有描述符都必须已完成,因为邮箱像中断一样,将通知处理器已移动一定量的数据。由于所有事务都可以为了性能而乱序完成,所以DMA设备可以在来自先前描述符的某些其他事务完成之前将完成消息写入邮箱,除非存在一种机制来防止这种情况。
发明内容
示例性实施例认识到现有技术的缺点,并提供了一种包括屏障和中断机制的直接存储器访问(DMA)设备,所述机制允许中断和邮箱操作以这样的方式发生:确保正确的操作,但只要有可能,仍允许发生高性能的乱序数据移动。将特定描述符定义为“屏障描述符”。当DMA设备遇到屏障描述符时,它确保在屏障描述符完成之前完成所有先前描述符。所述DMA设备还确保直至与屏障描述符关联的数据移动完成,才断言由屏障描述符生成的任何中断。DMA控制器仅允许由屏障描述符生成中断。屏障描述符概念还允许软件将邮箱完成消息嵌入描述符的分散/收集链接列表。
在一个示例性实施例中,提供了一种用于在直接存储器访问设备中执行直接存储器访问块移动的方法。所述方法包括接收直接存储器访问块移动描述符。所述直接存储器访问块移动描述符指示了源和目标。所述直接存储器访问块移动描述符被标识为屏障描述符。所述方法还包括:将所述直接存储器访问块移动描述符转换为所述直接存储器访问块移动描述符的一个或多个直接存储器访问请求;标识所述一个或多个直接存储器访问请求内的最后一个直接存储器访问请求;以及处理所述一个或多个直接存储器访问请求以满足直接存储器访问块移动请求,以便所述直接存储器访问设备在处理所述一个或多个直接存储器访问请求内的所有其他直接存储器访问请求之前,不会处理所述最后一个直接存储器访问请求。
在一个示例性实施例中,所述方法还包括设置与所述最后一个直接存储器访问请求关联的屏障属性。在另一个示例性实施例中,所述方法还包括每次处理屏障描述符时切换屏障标记。在另一个示例性实施例中,所述方法还包括响应于完成所述最后一个直接存储器访问请求而生成中断。在再一个示例性实施例中,将所述最后一个直接存储器访问请求配置为将完成代码移动到邮箱。
在另一个示例性实施例中,提供了一种用于在直接存储器访问设备内的直接存储器访问引擎中执行直接存储器访问块移动的方法。所述方法包括接收直接存储器访问块移动描述符。所述直接存储器访问块移动描述符指示了源和目标。所述直接存储器访问块移动描述符被标识为屏障描述符。所述方法还包括:将所述直接存储器访问块移动描述符转换为所述直接存储器访问块移动描述符的一个或多个直接存储器访问请求;标识所述一个或多个直接存储器访问请求内的最后一个直接存储器访问请求;以及设置与所述最后一个直接存储器访问请求关联的屏障属性。对于所述一个或多个直接存储器访问请求中的每个给定直接存储器访问请求,所述方法判定是否为所述给定直接存储器访问请求设置了所述屏障属性;如果设置了所述屏障属性,则判定对于与所述给定直接存储器访问请求关联的通道而言屏障是否未决;以及如果对于与所述给定直接存储器访问请求关联的通道而言屏障没有未决,则向所述直接存储器访问设备中的总线引擎发出所述给定直接存储器访问请求。
在一个示例性实施例中,所述方法还包括如果没有为所述给定直接存储器访问请求设置所述屏障属性,则向所述总线引擎发出所述给定直接存储器访问。在另一个示例性实施例中,所述方法还包括如果对于与所述给定直接存储器访问请求关联的通道而言屏障未决,则保持所述给定直接存储器访问请求,直至从所述总线引擎接收到针对与给定直接存储器访问请求关联的通道的屏障清除信号。
在另一个示例性实施例中,所述方法还包括响应于向所述总线引擎发出所述给定直接存储器访问请求,切换屏障标记,以便所述屏障第一侧上的直接存储器访问请求使屏障标记被设置为第一值,并且所述屏障第二侧上的直接存储器访问请求使屏障标记被设置为第二值。
在另一个实施例中,所述直接存储器访问块移动描述符设置了中断位。所述方法还包括设置与所述最后一个直接存储器访问请求关联的中断位。
在另一个示例性实施例中,提供了一种用于在直接存储器访问设备内的总线引擎中执行直接存储器访问块移动的方法,所述方法包括:从直接存储器访问队列接收直接存储器访问请求;判定所述直接存储器访问请求是否设置了屏障属性;如果所述直接存储器访问请求设置了屏障属性,则判定所述屏障之前的所有直接存储器访问请求是否都已完成;以及如果所述屏障之前的所有直接存储器访问请求尚未完成,则保持所述直接存储器访问请求以防止完成。
在一个示例性实施例中,所述方法还包括如果所述直接存储器访问请求在所述屏障之后并且未设置屏障属性,则发出针对直接存储器访问请求的直接存储器访问事务。在另一个示例性实施例中,所述方法还包括如果直接存储器访问请求所述在屏障之前并且未设置屏障属性,则发出针对所述直接存储器访问请求的直接存储器访问事务。
在另一个示例性实施例中,所述方法还包括响应于发出所述直接存储器访问事务,判定所述屏障之前的未设置所述屏障属性的所有直接存储器访问请求是否已完成;如果所述屏障之前的未设置所述屏障属性的所有直接存储器访问请求都已完成,则判定设置了所述屏障属性的屏障直接存储器访问请求是否被保持以防止完成;以及如果设置了所述屏障属性的屏障直接存储器访问请求被保持以防止完成,则发出针对所述屏障直接存储器访问请求的直接存储器访问事务。
在另一个示例性实施例中,所述方法还包括响应于发出针对屏障直接存储器请求的直接存储器事务,判定是否为所述屏障直接存储器请求设置了中断位,以及如果为所述屏障直接存储器访问请求设置了中断位,则生成中断。
在另一个示例性实施例中,提供了一种直接存储器访问设备,所述设备包括直接存储器访问引擎和总线引擎。将所述直接存储器访问引擎配置为接收直接存储器访问块移动描述符。所述直接存储器访问块移动描述符指示了源和目标。将所述直接存储器访问块移动请求标识为屏障描述符。所述直接存储器访问引擎还配置为将所述直接存储器访问块移动描述符转换为所述直接存储器访问块移动描述符的一个或多个直接存储器访问请求;标识所述一个或多个直接存储器访问请求内的最后一个直接存储器访问请求;设置与所述最后一个直接存储器访问请求关联的屏障属性;以及向直接存储器访问队列发出所述一个或多个直接存储器访问请求。所述总线引擎被配置为:从直接存储器访问队列接收直接存储器访问请求;判定所述直接存储器访问请求是否设置了屏障属性;如果所述直接存储器访问请求设置了屏障属性,则判定所述屏障之前的所有直接存储器访问请求是否都已完成;以及如果所述屏障之前的所有直接存储器访问请求尚未完成,则保持所述直接存储器访问请求以防止完成。
在一个示例性实施例中,所述直接存储器访问引擎还配置为如果对于与给定直接存储器访问请求关联的通道而言屏障未决,则保持所述给定直接存储器访问请求,直至从所述总线引擎接收到针对与所述给定直接存储器访问请求关联的通道的屏障清除信号。
在另一个示例性实施例中,所述直接存储器访问引擎还配置为响应于向所述总线引擎发出给定直接存储器访问请求,切换屏障标记,以便所述屏障第一侧上的直接存储器访问请求使屏障标记被设置为第一值,并且所述屏障第二侧上的直接存储器访问请求使屏障标记被设置为第二值。
在另一个示例性实施例中,所述总线引擎还配置为如果所述直接存储器访问请求在所述屏障之前并且未设置屏障属性,则发出针对所述直接存储器访问请求的直接存储器访问事务。
在另一个示例性实施例中,所述总线引擎还配置为响应于发出所述直接存储器访问事务,判定所述屏障之前的未设置所述屏障属性的所有直接存储器访问请求是否已完成。如果所述屏障之前的未设置所述屏障属性的所有直接存储器访问请求都已完成,所述总线引擎配置为判定设置了所述屏障属性的屏障直接存储器访问请求是否被保持以防止完成。如果设置了所述屏障属性的屏障直接存储器访问请求被保持以防止完成,所述总线引擎配置为发出针对所述屏障直接存储器访问请求的直接存储器访问事务。
本发明的这些和其他特征和优点将在以下对本发明示例性实施例的详细说明中进行描述,或者鉴于以下对本发明示例性实施例的详细说明,本发明的这些和其他特征和优点将对本领域的技术人员变得显而易见。
附图说明
当结合附图阅读时,通过参考以下对示例性实施例的详细说明,可以最佳地理解本发明及其优选使用方式、进一步的目的和优点,这些附图是:
图1是可在其中实现示例性实施例的各方面的数据处理系统的示例性方块图;
图2是可在其中实现示例性实施例的各方面的示例性数据处理系统的方块图;
图3是示出根据示例性实施例的南桥的方块图;
图4示出了根据示例性实施例的具有屏障描述符的直接存储器访问设备的总体操作;
图5A示出了根据示例性实施例的实例描述符;
图5B示出了根据示例性实施例的DMA请求属性的实例;
图6示出了根据一个示例性实施例的总体总线引擎队列结构;
图7是示出根据示例性实施例的直接存储器访问引擎处理描述符的操作的流程图;
图8是示出根据示例性实施例的向总线引擎发出请求的直接存储器访问引擎的操作的流程图;以及
图9A和9B是示出根据示例性实施例的实施屏障的总线引擎的操作的流程图。
具体实施方式
现在参考附图,具体地说,参考图1-2,提供了可在其中实现本发明的示例性实施例的数据处理环境的示意图。应当理解,图1-2仅是示例性的,并非旨在断言或暗示与可在其中实现本发明的各方面或实施例的环境有关的任何限制。可以对所示环境进行许多修改而不偏离本发明的精神和范围。
图1是可在其中实现示例性实施例的各方面的数据处理系统的示例性方块图。图1中所示的示例性数据处理系统是单元宽带引擎(CBE)数据处理系统的实例。虽然CBE将用于本发明的优选实施例的说明中,但是本发明并不限于此,如本领域的技术人员在阅读以下说明时将显而易见的那样。
如图1所示,CBE 100包括:Power处理器元件(PPE)110,其具有处理器(PPU)116及其L1和L2高速缓存112和114;以及多个协同处理器元件(SPE)120-134,每个元件都具有其自己的协同处理器单元(SPU)140-154、存储器流控制155-162、本地存储器或存储装置(LS)163-170以及总线接口单元(BIU单元)180-194,所述总线接口单元可以例如是直接存储器访问(DMA)、存储器管理单元(MMU)和总线接口单元的组合。还提供了高带宽内部元件互连总线(EIB)196、总线接口控制器(BIC)197以及存储器接口控制器(MIC)198。
本地存储器或本地存储(LS)163-170是大型存储器映射的非相干可寻址部分,其在物理上可作为连接到SPU 140-154的小型存储器来提供。本地存储163-170可以映射到不同的地址空间。在不具别名的配置中,这些地址区域是连续的。本地存储163-170通过其地址位置(例如通过下文中更详细说明的SPU标识寄存器)与其相应的SPU 140-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提供了BPA 100与其他外部总线和设备之间的通信接口。
PPE 110是双线程的PPE 110。此双线程的PPE 110和8个SPE 120-134的组合使得CBE 100能够处理10个同时的线程和多于128个的未完成存储器请求。PPE 110充当处理大多数计算工作负荷的其他8个SPE 120-134的控制器。例如,PPE 110可用于运行常规的操作系统,而SPE 120-134执行向量化的浮点代码执行。
SPE 120-134包括协处理单元(SPU)140-154、存储器流控制单元155-162、局部存储器或存储163-170以及接口单元180-194。在一个示例性实施例中,局部存储器或存储163-170包括256KB指令和数据存储器,该存储器对PPE 110是可见的并且可以由软件直接寻址。
PPE 110可以使用小程序或线程来加载SPE 120-134,将SPE链接在一起以处理复杂运算中的每个步骤。例如,结合了CBE 100的机顶盒可以加载程序以便读取DVD、进行视频和音频解码和显示,并且数据将在SPE之间传输,直到最终到达输出显示设备。在4GHz时,每个SPE 120-134提供理论上为32 GFLOP的性能,且PPE 110具有类似级别的性能。
存储器流控制单元(MFC)155-162用作SPU到系统的其余部分和其他元件的接口。MFC 155-162提供了用于在主存储与局部存储163-170之间进行数据传输、保护和同步的主要机制。对于处理器中的每个SPU都逻辑地存在MFC。某些实施方式可以在多个SPU之间共享单个MFC的资源。在这种情况下,为MFC定义的所有工具和命令都必须看起来独立于每个SPU的软件。共享MFC的作用限于实施方式相关的工具和命令。
现在参考图2,图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,Inc.在美国和/或其他国家/地区的商标)。
作为服务器,数据处理系统200可以例如是在高级交互执行(AIX)操作系统或LINUX操作系统上运行的IBMeServerTM pSeries计算机系统(eServer、pSeries和AIX是International Business MachinesCorporation在美国和/或其他国家/地区的商标,而LINUX是LinusTorvalds在美国和/或其他国家/地区的商标)。数据处理系统200可以在处理单元202中包括多个处理器。备选地,可以使用单处理器系统。
用于操作系统、面向对象的编程系统以及应用或程序的指令位于存储设备(例如HDD 226)上,并且可以被加载到主存储器208中以便由处理单元202执行。处理单元202可以使用计算机可用程序代码执行本发明的示例性实施例的过程,所述代码可以位于诸如主存储器208、ROM 224或一个或多个外围设备226和230之类的存储器中。
总线系统(例如图2中所示的总线238或总线240)可以包括一条或多条总线。当然,总线系统可以使用任何类型的通信结构或架构实现,这些结构或架构可在与它们连接的不同组件或设备之间传输数据。通信单元(例如图2的调制解调器222或网络适配器212)可以包括一个或多个用于传输和接收数据的设备。存储器可以例如是主存储器208、ROM 224或者例如在图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可以读取通过总线320从处理单元302发出的DMA命令,例如块移动请求。处理单元302可以直接向DMA设备310发出DMA命令。备选地,处理单元302可以使用分散/收集列表(其可以是系统存储器304或本地存储器328中的表或链接列表)发出DMA命令。在后一种情况下,BE 314可以只是从分散/收集列表读取描述符以接收下一个DMA命令。DMA设备310可以将通过本地存储器控制器326连接的本地存储器328用作工作存储器。
根据例如图3中所示的示例性实施例,DMA设备被构造为松散耦合的DMA引擎(DE)和总线引擎(BE)。DE将编程的数据块移动分为单独的事务,解释分散/收集描述符,并在通道之间进行仲裁。BE理解DMA设备连接到其的总线的总线协议,并运行由DE发送的所有事务。BE必须支持足够的并行事务,并且因此具有足够的缓冲区以防止数据流管线停止。DE将事务排队到BE,并可以通过BE的缓冲区空间而远超过BE。BE通过简单的请求/确认握手来限制DE。
DE不知道或者不需要知道BE已实现多少缓冲区;因此,可以将不同的BE与同一DE一起使用以支持不同的等待时间环境或连接到不同的总线。为实现最大的可伸缩性,可以将BE构造为逻辑上独立的“BE单元”,每个单元负责管理DE的一个缓冲区和一个事务。BE单元的数目可以是可配置的综合参数。
只要DE接收到对其当前请求的确认,它便可以发出其他请求。当BE的可用缓冲区耗尽时,它停止对DE的当前请求的确认,这可阻止DE请求更多的事务。当BE中的资源释放时,它将激活对DE的确认,然后DE可以请求其他事务。
BE包含总体的缓冲区池。例如,如果BE包含16个缓冲区,则所有16个缓冲区都可以由一个DMA通道使用,或者可以在通道之间按照DE需要的任何方式分配它们。DE将来自任何通道的事务排队到BE。仅当DE没有更多工作执行或BE停止确认(表明其可用缓冲区空间耗尽)时,DE才停止排队事务。
BE根据总线协议运行所有排队的事务并处理可能的总线情况,例如乱序返回的事务数据以及重试的事务。针对子块顺序对其无意义的数据块移动优化了处理乱序数据的DMA。在诸如联网和视频流传输之类的某些应用中,数据必须按顺序移动。
在DE和BE之间可以具有简单的接口,DE可在此接口中将事务排队到BE。BE运行DE的事务直至DE已导致移动所有编程的数据块。DE可以通过指定到BE的每个读取和每个写入来导致所有数据块移动,BE将在总线上执行这些读取和写入。DE在通道之间进行仲裁并且通常以公平的方式从各个通道交叉读取和写入,以使来自所有通道的数据可以几乎同时地传输。存在各种可以实现的通道仲裁优先级方案。
因为DMA涉及移动数据,所以DE从源地址执行的每个读取事务最终都必须后跟到目的地地址的相应写入事务。又因为DMA移动数据而不是处理数据,所以由读取事务传输的数据与由相应写入事务传输的数据是相同的数据。不会以任何方式修改数据。因此,根据示例性实施例,DE和BE可以通过使用可在DE和BE之间排队的组合读-写(RW)命令来使得此过程更高效。
RW事务同时指定读取和相应的写入两者。当DE将RW事务排队到BE时,它将指定源地址、目的地地址,以及仅与单个地址相对的字节计数和与传统读取或写入事务相对的字节计数。RW命令简化了DE的体系结构,因为DE不必管理它所排队的每个事务的读取和写入阶段。相反,DE可以只是排队单个RW事务,然后便可以“忘记”此事务。BE为DE所排队的每个RW事务运行单独的读取和写入。
根据一个示例性实施例,屏障和中断机制允许中断和邮箱操作以这样的方式发生:确保正确的操作,但只要可能,仍允许发生高性能的乱序数据移动。将某些描述符定义为“屏障描述符”。当DMA设备遇到屏障描述符时,它确保在屏障描述符完成之前完成所有先前的描述符。DMA设备还确保直至与屏障描述符关联的数据移动完成,才断言由屏障描述符生成的任何中断。
DMA控制器仅允许由屏障描述符生成中断。在这点上,将单个编程数据块移动视为屏障描述符。这允许软件可靠地使用它所收到的中断,因为当它收到中断时,它所预期移动的所有数据均保证已被移动。
屏障描述符概念还允许软件将邮箱完成消息嵌入描述符的分散/收集链接列表。此机制简单地将每个完成消息标记为屏障描述符。此机制确保直至所有的先前描述符已完成才传送这些完成消息。
屏障和中断机制创建了一种屏障,可强制顺序而不必强制事务排序和导致不必要的停止。此机制仅在需要时停止-只有屏障描述符的最后一个写入事务可能被停止,相应的读取不会被停止。当屏障针对所有先前的描述符强制顺序时,DMA控制器可以在屏障描述符的“另一侧”执行描述符。换言之,遇到屏障描述符不会使DMA控制器停止后续的描述符,除了当它遇到第二个未完成的屏障描述符时。
图4示出了根据示例性实施例的具有屏障描述符的直接存储器访问设备的总体操作。直接存储器访问(DMA)设备400包括DMA引擎(DE)410和总线引擎(BE)430。描述符401-405的链接列表驻留在系统存储器中。BE 430检索描述符401-405以供DE 410进行处理。
DE 410可以将给定的描述符转换为一个或多个DMA请求。在此实例中,DE 410将描述符转换为DMA请求421-424。如上所述,根据一个示例性实施例,这些请求可以是RW命令。备选地,DMA请求421-424可以是独立的读取和写入的组合。BE 430通过总线440执行DMA请求421-424。
根据一个示例性实施例,描述符401-405包括屏障位411和中断位412。屏障位411是描述符中表示它是“屏障描述符”的位。每个描述符都有此位字段。如果设置或断言了屏障位,即逻辑1,则描述符是屏障描述符;否则,它不是屏障描述符。屏障描述符是必须在分散/收集列表中的所有先前描述符之后完成的描述符。必须将单个编程DMA移动视为屏障描述符,因为它们可以生成中断。
中断位412是描述符中表示描述符应该在其完成时生成中断的位。如果设置或断言了中断位,即逻辑1,则描述符将在其完成时并且当且仅当描述符也是屏障描述符时生成中断。如果描述符不是屏障描述符,则中断位412的状态为“无关”。
当DE 410将请求排队到BE 430时,DE 410还随每个请求一起发送各种属性,例如源地址、目的地地址、字节计数(传输大小)以及通道标识(ID)。根据示例性实施例,DMA请求421-424还包括屏障属性431和屏障标记432。在所示实例中,DMA请求421-424可以与给定的屏障描述符相对应。
屏障属性431是随每个排队事务一起从DE 410发送到BE 430的单个位属性。DE 410仅为屏障描述符的最后一个排队事务设置屏障属性431。例如,如果屏障描述符描述了需要多个事务的大型块移动,则只有该块的最后一个事务将设置屏障属性431。屏障属性用于标记BE 430中的哪些事务必须最后发送。DE 410知道允许它在任何时间,在给定通道上只有一个已将屏障属性设置为1的未完成请求,因为BE 430通常被设计为支持每个通道一个屏障。
不会针对属于屏障描述符的每个事务设置屏障属性431。DE 410仅针对属于屏障描述符的最后一个事务设置屏障属性。屏障标记432将在发送设置了屏障属性431的事务之后切换;否则,屏障标记433的状态将在不同的事务之间保持不变。
当BE 430收到给定通道的设置了屏障属性的事务时,BE 430将不能针对此事务启动写入,直至此通道没有其他未决的事务(在读取或写入队列中)。BE 430针对每个通道发送屏障清除信号。当BE 430针对设置了屏障属性的请求完成写入时,它将向DE 410断言与此事务的所属通道关联的屏障清除信号,指示DE 410可以针对关联的通道发送其他屏障。
BE 430必须保留一个与它用于根据事务是否位于屏障另一侧判定哪些事务可安全发送的屏障标记相对应的标志(未示出)。此标志最初为零(0);BE 430被称为“置0”。
当BE 430置0并实施屏障时,它必须确保在发送{屏障标记,屏障属性}=01的一个事务之前发送{屏障标记,屏障属性}=00的所有事务。BE430可以发送{屏障标记,屏障属性}=10的事务,因为这些事务位于屏障的另一侧。DE 410将不会发送{屏障标记,屏障属性}=11的事务,因为它尚未收到屏障清除信号。
当BE 430完成与{屏障标记,屏障属性}=01的事务关联的写入时,它将发送屏障清除信号。DE 410然后将切换屏障标记,并在下次发送请求时,其屏障标记=1。在此情况下,标志将变为1;BE 430被称为“置1”。
当BE 430置1并实施屏障时,它必须确保在发送{屏障标记,屏障属性}=11的一个事务之前发送{屏障标记,屏障属性}=10的所有事务。BE430可以发送{屏障标记,屏障属性}=00的事务,因为这些事务位于屏障的另一侧;但是,DE 410将不会发送{屏障标记,屏障属性}=01的请求,因为它尚未收到屏障清除信号。
在开始时,DE 410可以在所有通道上发送屏障。在所示实例中,有四个通道;但是,根据实施方式的不同可以具有更多或更少的通道。当DE 410处理给定通道的屏障描述符并发送设置了屏障属性的请求时,它可能不会针对此通道发送其他设置了屏障属性的请求,直至它收到与此通道关联的屏障清除信号。
如上所述,描述符405可以是屏障描述符。在此情况下,软件在描述符405中设置屏障位411。如果将软件配置为在描述符405完成时接收中断,则软件还在描述符405中设置中断位412。
当DE 410将描述符405(在此实例中为屏障描述符)转换为DMA请求421-424时,DE 410将针对最后一个DMA请求(在此实例中为DMA请求424)设置屏障属性431。如果在屏障描述符405中设置了中断位412,则DE 410将针对DMA请求424设置中断位433。如果设置了中断位433,则当BE 430完成DMA请求424的事务时,BE 430将生成中断。
某些系统通过当一系列数据移动已完成时使“完成代码”移动到“邮箱”来工作。邮箱是充当消息的先进先出(FIFO)的消息传送设备。当通过写入邮箱地址将消息传送到邮箱时,便会按顺序将消息传送到处理器。消息通常很小,在八字节或十六字节的量级。
当软件在分散/收集列表中建立一系列块移动(例如描述符401-405)时,软件可以将完成消息完全放置在描述符链接列表中,以便DMA设备可以通过同一分散/收集描述符列表来移动数据块和完成代码消息。DMA设备400并不知道DMA请求正在移动完成消息或者目的地是邮箱。
在所示实例中,设置为屏障描述符的描述符405可以指向完成代码消息。也就是说,将通过邮箱通知软件系列块移动已完成,因为描述符405将是最后完成的移动。此外,软件可以针对描述符405设置中断位412。
图5A示出了根据示例性实施例的实例描述符。描述符500定义了源地址502、目的地地址504以及传输大小506。根据示例性实施例,描述符500还包括屏障位508和中断位510。屏障位508是描述符中表示它是“屏障描述符”的位。中断位510是描述符中表示描述符应该在其完成时生成中断的位。
图5B示出了根据示例性实施例的DMA请求属性的实例。DMA请求属性550包括源地址552、目的地地址554、传输大小556以及通道ID 558。根据示例性实施例,DMA请求属性550还可以包括屏障属性560、屏障标记562以及中断位564。中断位564通知BE DMA请求是还可生成中断的屏障描述符。BE将在其发送屏障清除信号时生成中断。
屏障属性560是随每个排队事务一起从DE发送到BE的单个位属性。DE仅针对屏障描述符的最后一个排队事务设置屏障属性560。屏障标记562将在发送设置了屏障属性560的事务之后切换;否则,屏障标记562的状态将在不同的事务之间保持不变。
图6示出了根据一个示例性实施例的整体总线引擎队列结构。接口610从DMA引擎接收DMA命令,并将这些命令放入至少一个读取队列(在所示实例中为读取队列602)中。每个DMA移动包括读取和写入。因此,每个移动都作为读取队列602中的读取开始。总线接口单元(BIU)620可以通过FIFO机制按照将读取放入读取队列602的顺序来运行读取。
多路复用器611从读取队列602中选择读取以便由总线接口单元620运行。当BIU 620运行来自读取队列602的读取时,有两种可能的结果。读取可能会立即完成。例如,对于能够立即接受事务的低等待时间目标可以发生这种情况。如果DMA命令是组合RW命令,则一旦完成读取,就将事务发送到写入队列606。在备选实施例中,可以使用多个读取队列来处理延迟的读取。
运行读取时可能出现的第二种结果是重试读取。例如,如果目标设备忙碌,可能会重试读取。然后会将重试的忙碌事务发送回读取队列602,以便将其按照次序放置以再次运行。备选地,如果“延迟读取”设备已将事务排队,则可能会重试读取。如果设备在排队读取并开始处理读取的同时重试读取,设备将执行延迟的读取。当设备处理读取时,延迟的读取将释放总线。
多路复用器612从写入队列606中选择写入以便由总线接口单元620运行。写入通常按照其相应读取的完成顺序运行。当BIU 620运行来自写入队列606的写入时,有两种可能的结果。写入可能会立即完成。在此情况下,将完成此事务指定的事务数据移动。总线630一旦接受(确认)写入(即,甚至在未将写入与等待状态同步的总线上传输数据之前),关联的事务标记就被“解除分配”并可重新用于新的读取。在组合RW事务的情况下,不会在此点之前发出其他使用此标记的读取,因为读取和相应的写入共享数据缓冲区位置。实际上,使用上述的组合RW事务时,给定的队列位置指向两个队列的同一数据缓冲区位置。
运行写入时可能出现的第二种情况是重试写入。可能会出现此情况是因为目标忙碌或者没有可用的写入缓冲区。如果重试写入,则写入将停留在写入队列606中以再次运行。备选地,BE可以只是立即重复重试的写入,而不是将其重新加载回写入队列606中。这将不会导致死锁,因为写入的完成不能依赖于其他事务(除此写入之前的其他写入以外)的完成。
当作为屏障描述符的最后一个事务的读取完成时,不会将其放入写入队列606。相反,将此读取放入保持寄存器650中。每个受支持的未完成屏障都有一个保持寄存器。写入然后被保留在保持寄存器650中,直至此屏障描述符中所有未设置屏障属性的事务完成。当此屏障描述符中所有未设置屏障属性的事务完成时,将写入从保持寄存器650移动到写入队列606。
多路复用器615从读取队列602和写入队列606中选择事务。总线接口单元620向多路复用器615提供选择信号以选择事务。
保持寄存器650可以包括用于所有DMA通道的单个保持寄存器。也就是说,DMA设备可以针对所有通道仅允许一个屏障描述符,因为可能很少具有两个或更多个未完成的屏障。备选地,保持寄存器650可以包括两个或更多个保持寄存器。在一个示例性实施例中,保持寄存器650可以针对每个DMA通道包括一个保持寄存器,这将允许每个通道有一个未完成的屏障。但是,根据使用DMA设备的应用,甚至可以适当地允许每个通道有多个屏障。
图7是示出根据示例性实施例的直接存储器访问引擎处理描述符的操作的流程图。可以理解,流程图的每个方块以及流程图中的方块组合可以由计算机程序指令来实现。可以将这些计算机程序指令提供给处理器或其他可编程数据处理装置以产生机器,以便在所述处理器或其他可编程数据处理装置上执行的指令将创建用于实现一个或多个流程图块中指定的功能的装置。这些计算机程序指令也可以被存储在引导处理器或其他可编程数据处理装置以特定方式执行功能的计算机可读存储器或存储介质中,以便存储在所述计算机可读存储器或存储介质中的所述指令产生一件包括实现所述一个或多个流程图块中指定的功能的指令装置的制品。
相应地,流程图的多个块支持用于执行指定功能的装置的组合、用于执行指定功能的步骤的组合和用于执行指定功能的程序指令装置。还应理解,流程图中的每个块和流程图中的块的组合可以由执行指定功能或步骤的基于硬件的专用计算机系统来实现,或者通过专用硬件和计算机指令的组合来实现。
现在参考图7,操作开始,直接存储器访问(DMA)引擎(DE)判定是否有可供处理的描述符(方块602)。如果没有可用的描述符,则操作返回方块602进行等待,直至存在可用的描述符。
如果在方块702中存在描述符,则DE将描述符转换为一个或多个要发出给BE的DMA请求(方块704)。此后,DE判定描述符是否为屏障描述符(方块706)。如果DE判定描述符不是屏障描述符,则操作返回方块702以判定是否有其他要处理的描述符。如果在方块706中DE判定描述符是屏障描述符,则DE将为屏障描述符的最后一个请求设置屏障属性(方块708)。此后,操作返回方块702以判定是否有其他要处理的描述符。
图8是示出根据示例性实施例的向总线引擎发出请求的直接存储器访问引擎的操作的流程图。操作开始,直接存储器访问(DMA)引擎(DE)判定DMA通道是否准备好向总线引擎发出DMA请求(方块802)。如果DMA通道未准备好发出请求,则操作返回方块802进行等待,直至DMA通道准备好发出请求。
如果在方块802中DMA通道准备好发出请求,则DE判定是否为请求设置了屏障属性(方块804)。如果未设置屏障属性,则DE向BE发出DMA请求(方决806),并且操作返回方块802进行等待,直至准备好在通道上发出DMA请求。
如果在方块804中为请求设置了屏障属性,则DE将判定对于通道而言屏障是否未决(方块808)。如果屏障没有未决,则DE切换屏障标记(方块810)并向BE发出DMA请求(方块806)。然后,操作返回方块802进行等待,直至准备好在通道上发出DMA请求。
如果在方块808中对于通道而言屏障未决,则DE判定是否为DAM通道从BE接收到屏障清除信号(方块812)。如果未收到屏障清除信号,则操作返回方块812以等待BE发出针对通道的屏障清除信号。如果在方块812中接收到屏障清除信号,则操作将继续到方块810以切换屏障标记,然后继续到方块806以向BE发出DMA请求。此后,操作返回方块802进行等待,直至准备好在通道上发出DMA请求。
图9A和9B是示出根据示例性实施例的实施屏障的总线引擎的操作的流程图。参考图9A,操作开始于将屏障标记设置为零。BE将屏障标记设置为零(0),并且BE被称为“置0”(方块902)。然后,BE判定是否存在新的DMA请求(方块904)。如果没有新的DMA请求,则操作返回方块904以等待新的DMA请求。
如果在方块904中有新的DMA请求,则BE将从队列接收DMA请求(方块906)。BE判定是否为请求将屏障标记设置为0并将屏障属性设置为1(方块908)。如果屏障标记设置为1,意味着请求位于屏障的另一侧,或者屏障属性设置为0,意味着请求不是屏障,则BE向总线发出DMA事务(方块910)。
接下来,BE将判定是否已发送所有将屏障标记设置为零(0)并将屏障属性设置为零(0)的事务(方块912)。也就是说,BE判定是否已处理屏障描述符的所有事务(除设置了屏障属性的事务以外)。如果并非如此,则操作返回方块904以判定是否有新的DMA请求。
返回方块908,如果屏障标记设置为0并且屏障属性设置为1,意味着事务为屏障事务,则BE将判定是否已发送所有将屏障标记设置为零(0)并将屏障属性设置为零(0)的事务(方块914)。如果在方块914中尚未处理屏障描述符的所有事务,则BE将DMA请求放置在保持寄存器中(方块916)。然后,操作返回方块904以判定是否有新的DMA请求。
如果当前事务设置了屏障描述符,并且在方块914中已处理屏障描述符的所有事务(除设置了屏障属性的事务以外),则BE将向总线发出DMA事务(方块918)。接下来,BE向DE发送屏障清除信号(方块920)。然后,BE将判定是否为DMA请求设置了中断位(方块922)。如果设置了中断位,则BE向软件发送中断(方块924)。此后,或者如果在方块922中未设置中断位,则BE将屏障标志设置为1,并且BE被称为“置1”(图9B中的方块926)。然后,操作将继续到将在下面进一步详细描述的方块930。
返回方块912,如果BE向总线发出在方块910中未针对其设置屏障属性的DMA事务,但是在方块912中已处理“置0”屏障的所有未设置屏障属性的DMA请求,则BE判定是否针对DMA通道在保持寄存器中保持DMA请求(方块928)。如果未针对通道保持DMA请求,则操作将返回方块904以判定是否有新的DMA请求。但是,如果在方块928中针对通道保持了DMA请求,则操作将继续到方块918以向总线发出事务,发送屏障清除信号(方块920),并且如果设置了中断位,将向软件发送中断(方块922和924)。然后,操作继续到方块926。
转向图9B,BE将屏障标志设置为1,并且BE被称为“置1”(方块926)。BE将判定是否有新的DMA请求(方块930)。如果没有新的DMA请求,则操作返回方块930以等待新的DMA请求。
如果在方块930中有新的DMA请求,则BE将从队列接收DMA请求(方块932)。BE判定是否为请求将屏障标记设置为1并将屏障属性设置为1(方块934)。如果屏障标记设置为零,意味着请求位于屏障的另一侧,或者屏障属性设置为零,意味着请求不是屏障,则BE向总线发出DMA事务(方块936)。
接下来,BE判定是否已发送所有将屏障标记设置为1并将屏障属性设置为零(0)的事务(方块938)。也就是说,BE判定是否已处理屏障描述符的所有事务(除设置了屏障属性的事务以外)。如果并非如此,则操作将返回方块930以判定是否有新的DMA请求。
返回方块934,如果屏障标记设置为1并且屏障属性设置为1,意味着事务为屏障事务,则BE判定是否已发送所有将屏障标记设置为1并将屏障属性设置为0的事务(方块940)。如果在方块940中尚未处理屏障描述符的所有事务,则BE将DMA请求放置在保持寄存器中(方块942)。然后,操作返回方块930以判定是否有新的DMA请求。
如果当前事务设置了屏障描述符,并且在方块940中已处理屏障描述符的所有事务(除设置了屏障属性的事务以外),则BE向总线发出DMA事务(方块944)。接下来,BE向DE发送屏障清除信号(方块946)。然后,BE判定是否为DMA请求设置了中断位(方块948)。如果设置了中断位,则BE向软件发送中断(方块950)。此后,或者如果在方块948中未设置中断位,则BE将屏障标志设置为零(0),并且BE被称为“置0”(方块952)。然后,操作将继续到图9A中的方块904。
返回方块938,如果BE向总线发出在方块936中未针对其设置屏障属性的DMA事务,但是在方块938中已处理“置0”屏障的所有未设置屏障属性的DMA请求,则BE判定是否针对DMA通道在保持寄存器中保持DMA请求(方块954)。如果未针对通道保持DMA请求,则操作返回方块930以判定是否有新的DMA请求。但是,如果在方块954中针对通道保持了DMA请求,则操作继续到方块944以向总线发出事务,发送屏障清除信号,并且如果设置了中断位,将向软件发送中断。然后,操作将继续到图9A中的方块904。
因此,示例性实施例通过提供构造为松散耦合DMA引擎(DE)和总线引擎(BE)的DMA设备,解决了现有技术的缺点。DE将编程的数据块移动分为单独的事务,解释分散/收集描述符,并在通道之间进行仲裁。BE理解DMA设备连接到其的总线的总线协议,并运行由DE发送的所有事务。DE和BE通过使用可在DE与BE之间排队的组合读-写(RW)命令,可以使过程更高效。但是,DE和BE也可以使用独立的读取和写入命令来工作。
DMA设备包括屏障和中断机制,此机制允许中断和邮箱操作以这样的方式发生:确保正确的操作,但只要可能,仍允许发生高性能的乱序数据移动。将某些描述符定义为“屏障描述符”。当DMA设备遇到屏障描述符时,它确保在屏障描述符完成之前完成所有先前的描述符。DMA设备还确保直至与屏障描述符关联的数据移动完成,才断言由屏障描述符生成的任何中断。
DMA控制器仅允许由屏障描述符生成中断。在这点上,将单个编程数据块移动视为屏障描述符。这允许软件可靠地使用它所收到的中断,因为当它收到中断时,它所预期移动的所有数据均保证已被移动。
屏障描述符概念还允许软件将邮箱完成消息嵌入描述符的分散/收集链接列表。此机制简单地将每个完成消息标记为屏障描述符。此机制确保直至所有的先前描述符已完成才传送这些完成消息。
应当理解,示例性实施例可以采取完全硬件实施例、完全软件实施例或同时包含硬件和软件元素的实施例的形式。在一个示例性实施例中,示例性实施例的机制以软件实现,所述软件包括但不限于固件、驻留软件、微码等。
此外,示例性实施例可以采取计算机程序产品的形式,所述计算机程序产品可从提供程序代码以供或结合计算机或任何指令执行系统使用的计算机可用或计算机可读介质来访问。出于此描述的目的,计算机可用或计算机可读介质可以是任何可以包含、存储、传送、传播或传输程序以供或结合指令执行系统、装置或设备使用的装置。
所述介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或传播介质。计算机可读介质的实例包括半导体、固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前实例包括光盘-只读存储器(CD-ROM)、光盘-读/写(CD-R/W)和DVD。
适合于存储和/或执行程序代码的数据处理系统将包括至少一个通过系统总线直接或间接地连接到存储器部件的处理器。所述存储器部件可以包括在程序代码的实际执行期间使用的本地存储器、大容量存储装置以及对至少某些程序代码提供临时存储以便减少在执行期间必须从大容量存储装置检索代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘、显示装置、指点设备等)可以直接或通过中间I/O控制器与所述系统相连。网络适配器也可以与所述系统相连以便使所述数据处理系统能够通过中间专用或公共网络与其他数据处理系统或远程打印机或存储设备相连。调制解调器、电缆调制解调器以及以太网卡只是少数几种当前可用的网络适配器类型。
出于示例和说明目的给出了对本发明的描述,并且所述描述并非旨在是穷举的或是将本发明限于所公开的形式。对于本领域的技术人员来说,许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其他技术人员能够理解本发明的具有各种修改的各种实施例。
Claims (19)
1.一种用于在直接存储器访问设备中执行直接存储器访问块移动的方法,所述方法包括:
接收直接存储器访问块移动描述符,其中所述直接存储器访问块移动描述符指示了源和目标,并且其中所述直接存储器访问块移动描述符被标识为屏障描述符;
将所述直接存储器访问块移动描述符转换为所述直接存储器访问块移动描述符的一个或多个直接存储器访问请求;
标识所述一个或多个直接存储器访问请求内的最后一个直接存储器访问请求;
设置与所述最后一个直接存储器访问请求关联的屏障属性;以及
处理所述一个或多个直接存储器访问请求以满足直接存储器访问块移动请求,以便所述直接存储器访问设备在处理所述一个或多个直接存储器访问请求内的所有其他直接存储器访问请求之前,不会处理所述最后一个直接存储器访问请求。
2.根据权利要求1的方法,还包括:
每次处理屏障描述符时切换屏障标记。
3.根据权利要求1的方法,还包括:
响应于所述最后一个直接存储器访问请求的完成,生成中断。
4.根据权利要求1的方法,其中所述最后一个直接存储器访问请求被配置为将完成代码移动到邮箱。
5.一种用于在直接存储器访问设备内的直接存储器访问引擎中执行直接存储器访问块移动的方法,所述方法包括:
接收直接存储器访问块移动描述符,其中所述直接存储器访问块移动描述符指示了源和目标,并且其中所述直接存储器访问块移动描述符被标识为屏障描述符;
将所述直接存储器访问块移动描述符转换为所述直接存储器访问块移动描述符的一个或多个直接存储器访问请求;
标识所述一个或多个直接存储器访问请求内的最后一个直接存储器访问请求;
设置与所述最后一个直接存储器访问请求关联的屏障属性;以及
对于所述一个或多个直接存储器访问请求中的每个给定直接存储器访问请求:
判定是否为所述给定直接存储器访问请求设置了所述屏障属性;
如果设置了所述屏障属性,则判定对于与所述给定直接存储器访问请求关联的通道而言屏障是否未决;以及
如果对于与所述给定直接存储器访问请求关联的通道而言屏障没有未决,则向所述直接存储器访问设备中的总线引擎发出所述给定直接存储器访问请求。
6.根据权利要求5的方法,还包括:
如果没有为所述给定直接存储器访问请求设置所述屏障属性,则向所述总线引擎发出所述给定直接存储器访问请求。
7.根据权利要求5的方法,还包括:
如果对于与所述给定直接存储器访问请求关联的通道而言屏障未决,则保持所述给定直接存储器访问请求,直至从所述总线引擎接收到针对与所述给定直接存储器访问请求关联的通道的屏障清除信号。
8.根据权利要求5的方法,还包括:
响应于向所述总线引擎发出所述给定直接存储器访问请求,切换屏障标记,以便所述屏障第一侧上的直接存储器访问请求使屏障标记被设置为第一值,并且所述屏障第二侧上的直接存储器访问请求使屏障标记被设置为第二值。
9.根据权利要求5的方法,其中所述直接存储器访问块移动描述符设置了中断位,所述方法还包括:
设置与所述最后一个直接存储器访问请求关联的中断位。
10.一种用于在直接存储器访问设备内的总线引擎中执行直接存储器访问块移动的方法,所述方法包括:
从直接存储器访问队列接收直接存储器访问请求;
判定所述直接存储器访问请求是否设置了屏障属性;
如果所述直接存储器访问请求设置了屏障属性,则判定所述屏障之前的所有直接存储器访问请求是否都已完成;以及
如果所述屏障之前的所有直接存储器访问请求尚未完成,则保持所述直接存储器访问请求以防止完成。
11.根据权利要求10的方法,还包括:
如果所述直接存储器访问请求在所述屏障之后并且未设置屏障属性,则发出针对所述直接存储器访问请求的直接存储器访问事务。
12.根据权利要求10的方法,还包括:
如果所述直接存储器访问请求在所述屏障之前并且未设置屏障属性,则发出针对所述直接存储器访问请求的直接存储器访问事务。
13.根据权利要求12的方法,还包括:
响应于发出所述直接存储器访问事务,判定所述屏障之前的未设置所述屏障属性的所有直接存储器访问请求是否已完成;
如果所述屏障之前的未设置所述屏障属性的所有直接存储器访问请求都已完成,则判定设置了所述屏障属性的屏障直接存储器访问请求是否被保持以防止完成;以及
如果设置了所述屏障属性的屏障直接存储器访问请求被保持以防止完成,则发出针对所述屏障直接存储器访问请求的直接存储器访问事务。
14.根据权利要求13的方法,还包括:
响应于发出针对所述屏障直接存储器访问请求的所述直接存储器访问事务,判定是否为所述屏障直接存储器访问请求设置了中断位;以及
如果为所述屏障直接存储器访问请求设置了中断位,则生成中断。
15.一种直接存储器访问设备,所述设备包括:
直接存储器访问引擎,其中所述直接存储器访问引擎被配置为:
接收直接存储器访问块移动描述符,其中所述直接存储器访问块移动描述符指示了源和目标,并且其中所述直接存储器访问块移动请求被标识为屏障描述符;
将所述直接存储器访问块移动描述符转换为所述直接存储器访问块移动描述符的一个或多个直接存储器访问请求;
标识所述一个或多个直接存储器访问请求内的最后一个直接存储器访问请求;
设置与所述最后一个直接存储器访问请求关联的屏障属性;以及
向直接存储器访问队列发出所述一个或多个直接存储器访问请求;以及
总线引擎,其中所述总线引擎被配置为:
从直接存储器访问队列接收直接存储器访问请求;
判定所述直接存储器访问请求是否设置了屏障属性;
如果所述直接存储器访问请求设置了屏障属性,则判定所述屏障之前的所有直接存储器访问请求是否都已完成;以及
如果所述屏障之前的所有直接存储器访问请求尚未完成,则保持所述直接存储器访问请求以防止完成。
16.根据权利要求15的直接存储器访问设备,其中所述直接存储器访问引擎还配置为:
如果对于与给定直接存储器访问请求关联的通道而言屏障未决,则保持所述给定直接存储器访问请求,直至从所述总线引擎接收到针对与所述给定直接存储器访问请求关联的通道的屏障清除信号。
17.根据权利要求15的直接存储器访问设备,其中所述直接存储器访问引擎还配置为:
响应于向所述总线引擎发出给定直接存储器访问请求,切换屏障标记,以便所述屏障第一侧上的直接存储器访问请求使屏障标记被设置为第一值,并且所述屏障第二侧上的直接存储器访问请求使屏障标记被设置为第二值。
18.根据权利要求15的直接存储器访问设备,其中所述总线引擎还配置为:
如果所述直接存储器访问请求在所述屏障之前并且未设置屏障属性,则发出针对所述直接存储器访问请求的直接存储器访问事务。
19.根据权利要求18的直接存储器访问设备,其中所述总线引擎还配置为:
响应于发出所述直接存储器访问事务,判定所述屏障之前的未设置所述屏障属性的所有直接存储器访问请求是否已完成;
如果所述屏障之前的未设置所述屏障属性的所有直接存储器访问请求都已完成,则判定设置了所述屏障属性的屏障直接存储器访问请求是否被保持以防止完成;以及
如果设置了所述屏障属性的屏障直接存储器访问请求被保持以防止完成,则发出针对所述屏障直接存储器访问请求的直接存储器访问事务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/621,776 | 2007-01-10 | ||
US11/621,776 US7603490B2 (en) | 2007-01-10 | 2007-01-10 | Barrier and interrupt mechanism for high latency and out of order DMA device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101221544A CN101221544A (zh) | 2008-07-16 |
CN101221544B true CN101221544B (zh) | 2012-01-18 |
Family
ID=39595237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100016377A Expired - Fee Related CN101221544B (zh) | 2007-01-10 | 2008-01-07 | 用于执行dma块移动的方法及dma设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7603490B2 (zh) |
CN (1) | CN101221544B (zh) |
Families Citing this family (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0722707D0 (en) * | 2007-11-19 | 2007-12-27 | St Microelectronics Res & Dev | Cache memory |
US8621138B2 (en) | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Flash storage controller execute loop |
JP2010128696A (ja) * | 2008-11-26 | 2010-06-10 | Toshiba Corp | バスブリッジ装置およびそれを用いたバスブリッジシステム |
GB2474446A (en) * | 2009-10-13 | 2011-04-20 | Advanced Risc Mach Ltd | Barrier requests to maintain transaction order in an interconnect with multiple paths |
WO2012014400A1 (ja) * | 2010-07-27 | 2012-02-02 | パナソニック株式会社 | データ転送制御装置及びデータ転送制御方法 |
US8904115B2 (en) * | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US8910020B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | Intelligent bit recovery for flash memory |
US8909982B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | System and method for detecting copyback programming problems |
US9058289B2 (en) | 2011-11-07 | 2015-06-16 | Sandisk Enterprise Ip Llc | Soft information generation for memory systems |
US8954822B2 (en) | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US8924815B2 (en) | 2011-11-18 | 2014-12-30 | Sandisk Enterprise Ip Llc | Systems, methods and devices for decoding codewords having multiple parity segments |
US9048876B2 (en) | 2011-11-18 | 2015-06-02 | Sandisk Enterprise Ip Llc | Systems, methods and devices for multi-tiered error correction |
CN102495817A (zh) * | 2011-12-08 | 2012-06-13 | 成都林海电子有限责任公司 | 一种基于pci总线的高速数据传输方法 |
CN102521184A (zh) * | 2011-12-20 | 2012-06-27 | 北京遥测技术研究所 | 一种在pci总线上实现数据高速传输的方法 |
US9348775B2 (en) | 2012-03-16 | 2016-05-24 | Analog Devices, Inc. | Out-of-order execution of bus transactions |
CN102693198B (zh) | 2012-05-12 | 2015-03-25 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
CN102681952B (zh) | 2012-05-12 | 2015-02-18 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法与存储设备 |
CN102789439B (zh) | 2012-06-16 | 2016-02-10 | 北京忆恒创源科技有限公司 | 控制数据传输过程中的中断的方法与存储设备 |
CN102799392B (zh) | 2012-06-16 | 2015-12-16 | 北京忆恒创源科技有限公司 | 存储设备及其中断控制方法 |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US10095433B1 (en) * | 2012-10-24 | 2018-10-09 | Western Digital Technologies, Inc. | Out-of-order data transfer mechanisms for data storage systems |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9612948B2 (en) * | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9003264B1 (en) | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9136877B1 (en) | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
US9009576B1 (en) | 2013-03-15 | 2015-04-14 | Sandisk Enterprise Ip Llc | Adaptive LLR based on syndrome weight |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9043517B1 (en) | 2013-07-25 | 2015-05-26 | Sandisk Enterprise Ip Llc | Multipass programming in buffers implemented in non-volatile data storage systems |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9361221B1 (en) | 2013-08-26 | 2016-06-07 | Sandisk Technologies Inc. | Write amplification reduction through reliable writes during garbage collection |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9158349B2 (en) | 2013-10-04 | 2015-10-13 | Sandisk Enterprise Ip Llc | System and method for heat dissipation |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
US9549457B2 (en) | 2014-02-12 | 2017-01-17 | Sandisk Technologies Llc | System and method for redirecting airflow across an electronic assembly |
US9497889B2 (en) | 2014-02-27 | 2016-11-15 | Sandisk Technologies Llc | Heat dissipation for substrate assemblies |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9519319B2 (en) | 2014-03-14 | 2016-12-13 | Sandisk Technologies Llc | Self-supporting thermal tube structure for electronic assemblies |
US9348377B2 (en) | 2014-03-14 | 2016-05-24 | Sandisk Enterprise Ip Llc | Thermal isolation techniques |
US9485851B2 (en) | 2014-03-14 | 2016-11-01 | Sandisk Technologies Llc | Thermal tube assembly structures |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9658976B2 (en) * | 2014-11-07 | 2017-05-23 | Mediatek Inc. | Data writing system and method for DMA |
US10223307B2 (en) | 2017-06-15 | 2019-03-05 | International Business Machines Corporation | Management of data transaction from I/O devices |
US20190391856A1 (en) * | 2018-06-26 | 2019-12-26 | Intel Corporation | Synchronization of multiple queues |
CN113805813B (zh) * | 2018-11-30 | 2024-07-16 | 北京忆芯科技有限公司 | 降低读命令处理延迟的方法与装置 |
JP7168487B2 (ja) * | 2019-02-26 | 2022-11-09 | ファナック株式会社 | 転送制御装置、情報処理装置及び工作機械 |
CN111736115B (zh) * | 2020-05-13 | 2023-04-07 | 复旦大学 | 基于改进型sgdma+pcie的mimo毫米波雷达高速传输方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1384938A (zh) * | 1999-10-20 | 2002-12-11 | 因芬尼昂技术北美公司 | 链接表直接存储器存取控制器描述符的结构 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US7496695B2 (en) * | 2005-09-29 | 2009-02-24 | P.A. Semi, Inc. | Unified DMA |
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,776 patent/US7603490B2/en not_active Expired - Fee Related
-
2008
- 2008-01-07 CN CN2008100016377A patent/CN101221544B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1384938A (zh) * | 1999-10-20 | 2002-12-11 | 因芬尼昂技术北美公司 | 链接表直接存储器存取控制器描述符的结构 |
Also Published As
Publication number | Publication date |
---|---|
US7603490B2 (en) | 2009-10-13 |
CN101221544A (zh) | 2008-07-16 |
US20080168191A1 (en) | 2008-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101221544B (zh) | 用于执行dma块移动的方法及dma设备 | |
CN101221543B (zh) | 执行dma块移动的方法、dma设备和数据处理系统 | |
CN101149714B (zh) | 用于执行直接存储器存取的方法和系统 | |
JP7324287B2 (ja) | 割り込みテーブルを使用した有向割り込みの仮想化方法、システム、プログラム | |
CN101290609B (zh) | 平衡快速外围组件互连带宽的系统和方法 | |
JP7379502B2 (ja) | フォールバックを伴う有向割り込みの仮想化方法、システム、プログラム | |
JP5764265B2 (ja) | 複数のハードウェア・スレッドにわたる仮想スレッドの細粒化並列処理のための低遅延変数伝達ネットワークを利用する回路装置、集積回路デバイス、プログラム製品および方法(複数のハードウェア・スレッドにわたる仮想スレッドの細粒化並列処理のための低遅延変数伝達ネットワーク) | |
US6938253B2 (en) | Multiprocessor communication system and method | |
CN101878475B (zh) | 向星形拓扑串行总线接口委托网络处理器操作 | |
US11635961B2 (en) | Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file | |
JP7335339B2 (ja) | 有向割り込みの仮想化方法、システム、プログラム | |
US11314538B2 (en) | Interrupt signaling for directed interrupt virtualization | |
RU2608000C2 (ru) | Представление фильтрации наблюдения, ассоциированной с буфером данных | |
JP7450627B2 (ja) | 実行中インジケータを使用した有向割り込みの仮想化方法、システム、プログラム | |
CN101939732B (zh) | 在电子计算器系统中用于广播系统管理中断至其它处理器之机制 | |
CN108292267B (zh) | 用于配置装置的方法、系统和设备 | |
US20080082755A1 (en) | Administering An Access Conflict In A Computer Memory Cache | |
JP7448550B2 (ja) | ブロッキング・インジケータを使用した有向割り込みの仮想化方法、システム、プログラム | |
CN113868173A (zh) | 扁平化端口桥 | |
CN103597457A (zh) | 避免设备中的非公布请求死锁 | |
JP2003296191A (ja) | 汎用プロセッサおよび周辺装置のプロセッサとして動作可能な集積回路 | |
US20140122842A1 (en) | Efficient usage of a register file mapper mapping structure | |
US7805579B2 (en) | Methods and arrangements for multi-buffering data | |
JP2013025794A (ja) | フラッシュインタフェースの有効利用 | |
KR102614515B1 (ko) | 스케일러블 인터럽트들 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120118 Termination date: 20160107 |