CN101763245A - 用于对直接存储器存取引擎进行编程的方法和装置 - Google Patents
用于对直接存储器存取引擎进行编程的方法和装置 Download PDFInfo
- Publication number
- CN101763245A CN101763245A CN200910222068A CN200910222068A CN101763245A CN 101763245 A CN101763245 A CN 101763245A CN 200910222068 A CN200910222068 A CN 200910222068A CN 200910222068 A CN200910222068 A CN 200910222068A CN 101763245 A CN101763245 A CN 101763245A
- Authority
- CN
- China
- Prior art keywords
- dma
- processor
- engine
- data
- memory access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
提供一种用于对作为单线程处理器工作的直接存储器存取引擎进行编程的机制。从主机处理器接收与直接存储器存取引擎相关联的局部存储器中的程序。从主机处理器接收在直接存储器存取引擎中的请求,该请求指示要执行位于局部存储器中的程序。在不受主机处理器干预的情况下,直接存储器存取引擎执行程序。响应于所述程序完成执行,直接存储器存取引擎将完成通知发送到主机处理器,该通知指示程序已经完成执行。
Description
技术领域
本申请一般涉及一种改进的数据处理装置和方法,并且更具体地涉及一种用于可编程直接存储器存取引擎的装置和方法。
背景技术
可从国际商用机器公司获得的Cell宽带引擎(CBE)(即一种多核处理器架构)描述了一种存储器流程控制器(MFC),该存储器流程控制器对于每个协同处理单元(SPU)是特定的。这种存储器流程控制器的主要目的是保持和处理来自MFC的相关联的SPU或者来自电源处理器元件(PPE)或其它设备的直接存储器存取(DMA)命令的队列。MFC的DMA引擎执行DMA命令。这允许SPU与MFC的DMA传输并行地连续执行。
这使得在PPE或其它SPU上的软件能够访问MFC资源和控制SPU。在PPE或其它SPU上的特权软件还将地址变换信息提供给MFC用于DMA传输。DMA传输相对于系统存储是相关的(coherent)。系统存储的属性(地址变换和保护)由架构的页表和段表来管理。
为了排列和监视DMA命令、监视SPU事件、执行经由邮箱的处理器间通信和信号通知、访问诸如衰减计(定时器)的辅助资源和其它功能的目的,MFC支持信道和相关联的存储器映射输入/输出(MMIO)寄存器。除了支持DMA传输、信道和MMIO寄存器外,MFC还支持总线带宽保留特征以及对系统中的SPU和其它处理单元之间的操作进行同步。
然而,目前的DMA引擎需要太多在主机处理器(host processor)(PPE或SPU)上运行的软件的管理,限制了主机处理器的性能和从复杂数据结构访问所需数据的总的等待时间。
发明内容
在一个说明性实施例中,提供一种在数据处理系统中,用于对作为单线程处理器操作的直接存储器存取引擎进行编程的方法。说明性实施例从主机处理器接收与直接存储器存取引擎相关联的局部存储器中的程序。说明性实施例从主机处理器接收在直接存储器存取引擎中的请求,以执行位于局部存储器中的程序。说明性实施例通过直接存储器存取引擎并且在没有主机处理器干预的情况下执行所述程序。响应于所述程序完成执行,通过直接存储器存取引擎,说明性实施例将完成通知发送到主机处理器,该通知指示该程序已经完成执行。
在其它说明性实施例中,提供一种包括计算机可用或可读介质的计算机程序产品,该计算机可用或可读介质具有计算机可读程序。当在计算设备上执行时,所述计算机可读程序使计算设备执行上面关于方法的说明性实施例概述的操作之一或操作的组合。
在另一说明性实施例中,提供一种系统/装置。所述系统/装置可以包括一个或多个处理器以及连接到该一个或多个处理器的存储器。该存储器可以包括指令,当该指令由该一个或多个处理器执行时,使该一个或多个处理器执行上面关于方法的说明性实施例描述的操作之一或操作的组合。
本公开的这些和其它的特征和优点将在下面的本公开的示例实施例的详细说明中描述,由此本公开这些和其它的特征和优点将对本领域技术人员是显而易见的。
附图说明
当结合附图阅读时,通过参考下面的说明性实施例的具体说明,将最好地理解本发明及其优选的使用模式和另外的目的和优点,其中:
图1是数据处理系统的示例性框图,本公开的各方面可以在该数据处理系统中实现;
图2是根据本公开的示例性实施例的典型存储器流程控制(MFC)单元200的示例性框图;
图3图示根据说明性实施例,通过将储存在存储器中的数据传输到存储器中的不同位置或传输到局部存储,修改在链表(linked list)中的数据的当前处理的示例。
图4图示根据一个说明性实施例,通过使用增强的直接存储器存取(DMA)引擎,将储存在存储器中的数据传输到存储器中的不同位置或传输到局部存储,传输或修改在链表中的数据的处理的示例。
图5描述根据一个说明性实施例,通过与增强的直接存储器存取(DMA)引擎相互作用的主机处理器执行的示例操作;以及
图6描述根据一个说明性实施例,通过与主机处理器相互作用的增强的直接存储器存取(DMA)引擎执行的示例操作。
具体实施方式
说明性实施例提供了一种用于增强的直接存储器存取(DMA)引擎的机制,所述直接存储器存取引擎包括复杂指令集。来自协同处理单元(SPU)的DMA请求可以被编码到写入DMA指令集的程序中,该程序修改链表中的数据,如传输数据、分析数据、重新格式化数据、在数据中建立的遍历(traversing)数据结构等。随后,整个DMA指令集可以被DMA引擎执行而不会被主机处理器干涉。
本领域技术人员应当理解,本公开可以被实施为系统、方法或计算机程序产品。因而,本公开可以采用以下的形式:完全硬件的实施方式、完全软件的实施方式(包括固件、驻留软件、微代码等)或者软件和硬件结合的实施方式,所有这些实施方式在这里通称为“电路”、“模块”或“系统”。因此,本公开可以采用嵌入任何有形介质的表达的计算机程序产品的形式,该表达具有在介质中体现的计算机可用程序编码。
可以采用一个或多个计算机可用或计算机可读介质的任何组合。计算机可用或计算机可读介质例如可以是但不限于:电子的、磁的、光学的、电磁的、红外的或半导体的系统、装置、设备,或者传播介质。计算机可读介质的更具体的示例(非穷举列表)包括:具有一个或多个布线的电连接、便携计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携致密盘只读存储器(CDROM)、光学存储设备、如支持互联网或内部网络的传输介质、或者磁存储设备。应当注意,计算机可用或计算机可读介质还可以是纸张或其它可在上面打印程序的合适的介质,由于程序可以经由例如对纸张或其它介质的光学扫描来电子地捕获,然后编译、解释或者另外以合适的方式处理,如果需要,随后储存在计算机存储器中。在本文献的上下中,计算机可用或计算机可读介质可以是由指令执行系统、装置或设备使用或与之连接的任何介质,该介质可以包含、储存、通信、传播或传输程序。计算机可用介质可以包括以基带或作为载波的一部分的形式的传播数据信号,该数据信号具有随其体现的计算机可用程序代码。计算机可用程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光纤电缆、射频(RF)等。
用于执行本公开的操作的计算机程序代码可以用一种或多种编程语言的任何组合进行编写,这些语言包括面向对象语言(如JavaTM、SmalltalkTM、C++等)和传统程序编程语言(如“C”编程语言)或者类似的编程语言。程序代码可以在用户计算机上全部地执行,在用户计算机上部分地执行,作为独立软件包在用户计算机上部分地执行,以及在远程计算机上部分地执行或在远程计算机或服务器上全部地执行。在后面情况中,远程计算机可以通过任何类型的网络连接到用户计算机,所述网络包括:局域网(LAN)、广域网(WAN),或者可以(例如,通过使用因特网服务提供商的因特网)与外部计算机建立连接。
下面将参照根据本发明说明性实施例的方法、装置(系统)和计算机程序产品的流程图示和/或框图来描述说明性实施例。应当理解,流程图示和/或框图的每个块,以及流程图示和/或框图中的块的组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以产生机器,使得经由计算机或其它可编程数据处理装置的处理器的执行的指令创建用于实现在流程图和/或框图的一个或多个块中指定的功能/动作的部件。
这些计算机程序指令也可以存储在计算机可读介质中,该计算机可读介质可以指导计算机或其它可编程数据处理装置以特定的方式运行,使得储存在计算机可读介质中的指令产生制造品,该制造品包括实现流程图和/或框图的一个或多个块的功能/动作的指令部件。
计算机程序指令也可以加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程装置上执行一系列的操作步骤,以产生计算机实现的处理,使得在计算机或其它可编程装置上执行的指令提供了用于实现在流程图和/或框图的一个或多个块中执行的功能/动作的处理。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品可能实施的架构、功能和操作。在这点上,流程图或框图中的每个块可以表示一个模块、段或部分代码,其包括了用于实现(各)指定逻辑功能的一个或多个可执行指令。还应当注意的是,在一些可选实施方式中,块中表明的功能可以以没有在附图表明的次序发生。例如,取决于涉及的功能,连续示出的两个块实际上可以基本同时执行,或者有时块可以以相反的顺序执行。还应当注意的是,框图和/或流程图示的每个块,以及框图和/或流程图示中的各块的组合可以由执行特定功能或动作的专用的基于硬件的系统,或者专用的硬件和计算机指令的组合来实施。
说明性实施例可以在许多不同类型的数据处理环境中使用,这些数据处理环境包括:分布数据处理环境、单一数据处理装置等。为了提供描述说明性实施例的特定组件和功能的内容,下文提供了图1和2作为示例环境,其中可以实现说明性实施例的各方面。尽管关于图1和2的描述将主要集中在可编程直接存储器存取(DMA)引擎的单一数据处理装置实现上,但这仅是示例,并不旨在明示或暗示关于本公开的特征的任何限制。相反地,说明性实施例旨在包括分布数据处理环境和实施例,其中可以编程DMA引擎以在没有主机处理器干预的情况下执行指令。
现在参照附图,特别是参照图1-2,提供了数据处理环境的示意图,其中可以实现本公开的说明性实施例。应当理解,图1-2仅作为示例,并不旨在明示或暗示关于其中可以实现本公开的各方面或实施例的环境的任何限制。在不背离本公开的精神和范围的情况下,可以对描述的环境作出许多修改。
现在参照附图,图1是数据处理系统的示例性框图,其中可以实现本公开的各方面。图1所示的示例性数据处理系统是CELL宽带引擎(CBE)数据处理系统的示例。尽管在本公开的优选实施例的描述中采用了CBE,但是本发明不限于此,这在本领域技术人员阅读下面的描述时将是显而易见的。
如图1所示,CBE 100包括具有处理器(PPU)116和其L1高速缓存112和L2高速缓存113的电源处理器元件(PPE),以及多个协同处理器元件(SPE)120-134,每个协同处理元件具有其自己的协同处理单元(SPU)140-154、存储器流程控制155-162、局部存储器或存储(LS)163-170、以及总线接口单元(BIU单元)180-194,该总线接口单元可以例如是组合直接存储器存取(DMA)引擎、存储器管理单元(MMU)和总线接口单元。还提供了高带宽内部元件互连总线(EIB)196、总线接口控制器(BIC)197和存储器接口控制器(MIC)198。
CBE 100可以是片上系统(system-on-a-chip),使得图1所示的每个元件可以提供在单个微处理器芯片上。此外,CBE 100是异种(heterogeneous)处理环境,在该异种处理环境中,每个SPU可以从系统中的每个其它的SPU接收不同的指令。此外,用于SPU的指令集与PPU的指令集不同。
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和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、局部存储器或存储160-174和接口单元180-194。在一个示例性实施例中,局部存储器或存储160-174包括对于PPE 110可见并且可以由软件直接寻址的256KB指令和数据存储器。
PPE 110可以为SPE 120-134加载小程序或线程,将各SPE链接在一起以处理复杂操作中的每个步骤。例如,并入CBE 100的机顶盒可以记载用于读取DVD、视频和音频解码和显示的程序,并且数据将从一个SPE排出到另一SPE,直到其最后在输出显示上终止。在4GHz,每个SPE 120-134为具有类似性能等级的PPE 110给出理论上32GFLOP的性能。
存储器流程控制单元(MFC)155-162起到用于SPU到剩余的系统和其它元件的接口的作用。MFC 155-162为主存储和局部存储160-174之间的数据传输、保护和同步提供主要的机制。逻辑上,MFC用于处理器中的每个SPU。一些实现方式可以在多个SPU之间共享单个MFC的资源。在这种情况下,为MFC限定的所有功能程序(facility)和命令必须表现为独立于用于每个SPU的软件。共享MFC的效果限制于依赖于实施的功能程序和命令。
图2是根据本公开的示例性实施例的典型的存储器流程控制(MFC)单元200的示例性框图。在该示例性实施例中,MFC 200具有两个到协同处理单元(SPU)的接口210和212、两个到总线接口单元(BIU)220的接口214和216、以及两个到可选的SL 1高速缓存230的接口222和224。SPU接口210和212是SPU信道接口210和SPU局部存储接口212。SPU信道接口210允许SPU访问MFC功能程序和发布MFC命令。SPU局部存储接口212由MFC 200使用以访问SPU中的局部存储。一个到BIU 220的接口216允许存储器映射I/O(MMIO)访问MFC功能程序。这个接口216还允许其它处理器发布MFC命令。使用MMIO发布的命令称为MFC代理(proxy)命令。
到SL 1高速缓存的接口222和224主要用于数据传输。一个接口222由MFC 200使用以访问在主存储中的地址转换表,而另一个接口224用于在主存储和局部存储之间数据的传输。
如图2所示,在典型MFC中的主单元包括存储器映射输入/输出(MMIO)接口240、MFC寄存器250和DMA引擎260。MMIO接口240将SPU的MFC功能程序映射到系统的真实地址空间。这允许从系统中的任何处理器或任何设备来访问MFC功能程序。此外,MMIO接口240可以配置为将SPU的局部存储映射到真实地址空间。这允许从系统中的任何处理器或任何设备直接访问局部存储,从而实现局部存储至局部存储的传输,以及I/O设备直接访问SPU的局部存储域的能力。
MFC寄存器单元250包含大部分MFC功能程序。对于本公开尤其重要的是,MFC寄存器单元250包括SPU局部存储限制寄存器功能程序。使用该功能程序,特权软件可以对SPE的局部存储的大小设置限制,如将在下面更详细的描述的。
数据的同步和传输通常上是MFC 200内的DMA引擎260的职责。DMA引擎260可以在SPU的局部存储和主存储区域之间移动数据。可选地,数据可以缓存在SL 1高速缓存中。
通过将DMA命令请求通过命令队列270和280之一排列到MFC,SPE和电源处理器元件(PPE)指令MFC 200执行这些DMA操作。由SPE发布的命令排列到MFC SPU命令队列270。由PPE发布的命令排列到MFC代理命令队列280。MFC使用存储器映射单元(MMU)290执行所有的MFC地址转换和DMA传输所需的MFC访问保护检查。
MFC命令提供了主要的方法,该方法使得在SPU中执行的代码能够访问主存储,并且保持与系统中的其它处理器和设备的同步。还提供管理可选高速缓存的命令。MFC命令可以由SPU上运行的代码来发布,也可以由在另一处理器或设备(如PPE)上运行的代码来发布。在相关联的SPU上运行的代码执行一系列的信道指令来发布MFC命令。在其它处理器或设备上运行的代码执行一系列的存储器映射输入/输出(MMIO)传输以将MFC命令发布到SPE。所发布的命令被排列到命令队列270和280之一。
通常,可以使用MFC寄存器单元250的MMIO寄存器,或者通过由相关联的SPU执行的信道指令来排列命令。MMIO方法旨在由PPE使用以控制主存储和代表SPE的相关联的局部存储之间的数据传输。传输数据的MFC命令称为MFC DMA命令。MFC DMA命令的数据传输方向总是SPE的观点(perspective)参照。因此,认为将数据传输到SPE(从主存储到局部存储)的命令是取得命令,而认为将数据从SPE输出(从局部存储到主存储)的命令是存放命令。
传输数据的命令称为MFC DMA命令。这些命令转换成局部存储域和主存储域之间的DMA传输。每个MFC可以典型地同时支持多个DMA传输,并且能够保持和处理多个MFC命令。每个MFC DMA数据传输命令请求涉及局部存储地址(LSA)和有效地址(EA)。局部存储地址可以仅直接寻址其相关联的SPU的局部存储区域。有效地址具有更普通的应用,这是由于如果所有的SPU局部存储区域混入真实地址空间,有效地址可以引用包括所有的SPU局部存储区域的主存储。
重新参照图1和2,使用上面的架构,操作系统在PPE 110上运行,其目的是控制和配合(orchestrate)SPE 120-134的操作。在执行操作系统时,PPE 110将要在每个SPE 120-134上运行的程序、或部分程序(例如线程)初始化。当PPE 110使SPE 120-134执行上下文切换,即改变由SPE 120-134正在执行的程序或部分程序时,PPE 110将SPE 120-134初始化以执行新的程序或部分程序。这种初始化例如可以涉及在多个SPU控制寄存器(即,图2中的MFC寄存器单元250)中设置值,该寄存器储存用于控制SPE 120-134的各种操作特性的值。
通过本发明,在SPE 120-134中提供功能程序,用于限定局部存储163-170的大小限制。该功能程序是特权功能程序,即该功能程序仅能够由在PPE 110或SPE 120-134上运行的特权软件访问。尤其是,该功能程序仅可以由在PPE 110上运行的操作系统或其它特权软件写入。该功能程序可以由PPE 110以及SPE 120-134本身(例如存储器流程控制器(MFC))上运行的操作系统或其它特权软件读取,以访问局部存储163-170。
具体地,本公开的功能程序包括局部存储限制寄存器(LSLR),该局部存储限制寄存器可以是MFC寄存器单元250中的MMIO寄存器,和用于写入以及从LSLR读取的对应电路的一部分。PPE 110可以经由MMIO接口240将值写入该LSLR,从而控制与SPE 120-134相关联的局部存储的大小。例如,该值可以是来自基址的用于为局部存储识别最大可访问地址的偏移值、实际最大可访问地址本身、实际容量值等。每个SPE 120-134可以包含这种LSLR,并且每个LSLR可以用相同或不同值编程。也就是说,LSLR对每个SPE是唯一的,并且包含多个SPE的系统可以在每个SPE中具有不同的值。
每次在SPE 120-134中上下文切换时,PPE 110具有为那个SPE设置储存在LSLR中的值的能力。LSLR的默认值可以是局部存储163-170的最大大小。上下文切换是正在由SPE 120-134的SPU 140-154执行的程序或部分程序(例如线程)中的任何变化。这允许PPE 110设置容易受到局部存储163-170的大小影响的程序或部分程序的局部存储163-170的大小。
储存在LSLR中的大小限制值与局部存储163-170的每个访问共同使用,无论该访问是来自与局部存储163-170相关联的SPU 140-154,或者来自外部处理器(即PPE 110或其它SPE 120-134)。如果从SPU 140-150访问局部存储163-170,则利用局部存储地址。如果从外部设备(如PPE 110或另一SPU 140-154)访问局部存储163-170,则将有效地址转换成局部存储地址,然后该局部存储地址用于访问局部存储163-170。对于下面的公开目标,为了避免关于正在使用的是哪个地址的任何混淆,术语“请求地址”将用于指在访问请求中接收的局部存储地址或有效地址,这取决于正在试图访问局部存储的是哪个单元(即相关联的SPU或外部设备)。然而,应当注意,在任何情况下,最终与在LSLR中储存的大小限制值比较的地址是局部存储地址,该局部存储地址由SPU140-150提供,或者是有效地址转换的结果。
作为使用大小限制值限定局部存储的大小的一个示例,当与局部存储(例如,局部存储163)相关联的SPU(例如,SPU 140)使用请求地址访问局部存储163时,将对应于请求地址的局部存储地址与储存在LSLR中的局部存储限制大小值比较。如果局部存储地址小于局部存储限制大小,则局部存储地址用于访问局部存储163的适当部分。如果局部存储地址等于或大于局部存储限制容大小,则局部存储地址相对于局部存储限制大小的模数(模)用于访问局部存储163的适当部分。实际上,当达到局部存储限制大小时,局部存储163绕回到开始的地址,并且访问预先储存在局部存储163中的指令/数据。
本领域技术人员应当理解,图1-2中的硬件可以依据实现方式变化。除了图1-2所示的硬件或者作为替代,可以使用其它的外部硬件或外围设备(如闪存、等效的非易失性存储器或光盘驱动器等)。同样,在不背离本公开的精神和范围的情况下,除了前面提到的对称多处理(SMP)系统外,说明性实施例的处理可以应用到多处理器数据处理系统。
此外,数据处理系统100可以采取多种不同的数据处理系统的任何一种的形式,这些数据处理系统包括客户端计算设备、服务器计算设备、桌面计算机、膝上型计算机、电话或其它通信设备、个人数字助理(PDA)等。在一些说明性示例中,例如,数据处理系统100可以是便携计算设备,该便携计算设备配置有闪存,以提供用于储存操作系统文件和/或用户生成数据的非易失存储器。本质上,数据处理系统100可以是任何已知的或今后开发的数据处理系统而没有架构上的限制。
说明性示例提供了一种用于增强的、包括复杂指令集的直接存储器存取(DMA)引擎的机制。来自协同处理单元(SPU)的DMA请求可以被编码在程序中,该程序写入修改在链表中的数据的DMA指令集中。整个DMA指令集随后可以由DMA引擎执行而没有主机处理器的干预(intervention)。
图3图示了根据说明性实施例,通过将储存在存储器中的数据传输到存储器中的不同位置或局部存储,在链表中修改数据的当前处理的示例。当数据传输到存储器时,主机处理器302(如协同处理器单元(SPU)、电源处理器元件(PPE)等)与直接存储器存取(DMA)引擎304相互作用,以便将存储器306内的链表中的数据传输到存储器306内的另一位置或局部存储。伪代码(pseudo code)308描述了主机处理器302和DMA引擎304之间的相互作用的示例。在伪代码308中,在步骤310,主机处理器302设置数据的当前指针等于headptr。headptr是到链表中第一元素的指针。在步骤312,主机处理器302然后设置存储器中数据的预期的位置等于的第一位置指针。
在步骤314,主机处理器302执行do函数,其中主机处理器302在步骤316请求从当前指针到存储器中的位置的记录传输。在步骤318,DMA引擎304将数据从当前指针移动到存储器中的位置,并且将完成状态通知(post)回主机处理器302。在步骤320,主机处理器302等待来自DMA引擎304的完成状态,并且一旦接收到完成状态,就从现在储存在存储器中的记录中得到下一指针。主机处理器302然后在步骤322使当前指针等于下一指针,并且在步骤324使存储器中的位置等于下一位置。持续进行do函数,直到在步骤326下一指针指示结尾。
在步骤318,一旦DMA引擎304将完成状态通知回主机处理器302,来自链表的数据现在处于存储器306中的一系列数据缓冲器中。主机处理器302的相互作用可以由DMA完成命令上的中断来驱动。然而,驱动通过主机处理器302的数据传输的处理请求多个主机循环。
图4示出了根据一个说明性实施例,通过使用增强的直接存储器存取(DMA)引擎,将储存在存储器中的数据传输到存储器中的不同位置或局部存储,传输或修改在链表中的数据的处理的示例。在该示例中,当数据传输到存储器时,主机处理器402(如协同处理器单元(SPU)、电源处理器元件(PPE)等)可以将程序储存在局部存储407中,该局部存储407可以是在增强的DMA引擎404内的或者可由增强的DMA引擎直接访问(如虚线框所示)的存储器。伪代码408描述了主机处理器402和增强的DMA引擎404之间的相互作用的示例。
在伪代码408中,在步骤410,主机处理器402将程序412储存在局部存储407或存储器406中,并且在步骤411用参数初始化DMA引擎404内的寄存器。主机处理器402初始化的参数可以是头部指针(headptr)和第一位置指针。headptr和第一位置指针可以指向局部存储407中的局部存储器地址(LSA)或存储器406中的有效地址(EA)。因此,不是如在传统DMA引擎操作中的仅访问存储器406,本说明性实施例的DMA引擎404使用如由主机处理器402初始化的LSA或EA访问局部存储407和存储器406。DMA引擎404然后可以使用丰富的指令集加载、储存或移动数据到存储器406和局部存储407,或者从存储器406和局部存储407加载、储存或移动数据,DMA引擎404使用该指令集编程。
程序412在步骤414将数据的当前指针设置成等于headptr,并且在步骤416将存储器中的数据预期的位置指针设置成等于第一位置指针,该程序412将由增强的DMA引擎404全部执行,并且没有受到主机处理器402的干预。在步骤418,增强的DMA引擎404执行do功能。在步骤420,增强的DMA引擎404将数据从由当前指针指示的地址移动到由预期的位置指针指示的地址,然后在步骤422从当前储存在存储器中的记录获得下一指针。增强的DMA引擎404然后在步骤424使当前指针等于下一指针,并且在步骤426使预期的位置指针等于下一位置。持续进行do功能,直到在步骤428下一指针指向结尾。如果在步骤428下一指针指向结尾,则增强的DMA引擎404在步骤430将完成状态通知回主机处理器402。
在步骤432,不由增强的DMA引擎404执行程序412,直到伪代码408中主机处理器402请求增强的DMA引擎404执行局部存储407中的程序412。然后,主机处理器402在步骤434等待来自增强的DMA引擎404的完成状态,并且来自链表的数据现在处于存储器406的一系列数据缓冲器中。主机处理器402的相互作用可以再次由DMA完成命令上的中断来驱动。然而,通过单独执行程序412的增强的DMA引擎404,主机处理器402现在可以在正在处理程序412的同时处理其它任务。也就是说,主机处理器402需要为驱动数据传输做非常少的事情,并且可以集中精力在数据处理上,该数据处理在链表中的数据在存储器406中可获得后是必要的。
为了使增强的DMA引擎404执行程序412,增强的DMA引擎404需要丰富的指令集。例如,可以编程增强的DMA引擎404以执行如下指令:
·条件分支;
·比较;
·加、减、乘、除、旋转、移位、逻辑和、逻辑或、逻辑异或、或逻辑反转;
·浮点加、浮点乘、浮点除、或浮点比较;
·加载中间值;
·从存储器加载值;
·将值储存到存储器;
·从存储加载值;
·将值储存到存储;
·将数据从存储器移动到存储;
·将数据从存储移动到存储器;
·完成和返回状态;
·获得传输状态;
·原子锁定(atomic locking)操作,如测试和设置、加载和保存/储存条件的,或开始临界的;
·段(section)/结束临界段;
·同步(sync),该同步确保在下一指令开始前所有先前的指令已经完成;
·eieio,其确保在主存储器中以由程序指定的顺序执行禁止高速缓存的存储访问;或者
·在处理器架构中执行的其它指令,如在指令架构中包括的那些指令,如在复杂指令集计算机(CISC)架构、减少的指令集计算(RISC)架构、非常长的指令语言(VLIW)架构、最小指令集计算机(MISC)结构、明确并行指令计算(EPIC)架构单个指令、多个数据(SIMD)架构等中的那些指令。
同步指令提供了排序功能,其确保所有指令在同步指令完成前开始,并且在同步指令完成前没有随后的指令开始。当同步指令完成时,在同步指令完成前所有的存储访问开始。作为同步指令使用的示例,以下的代码使得处理器等待直到数据高速缓存块刷新(flush)(dcbf)指令的结果写入主存储器:
·#Assume that GPR 4holds 0x00003000.
·dcbf 1,4
·sync
·#Wait for memory to be updated.
eieio指令提供了排序功能,其确保在eieio指令访问存储器之后的任何加载或储存之前,所有加载和存储指令先于eieio指令在主存储器中完成而开始。如果eieio指令从程序中省略,并且存储器位置是唯一的,则到主存储器的访问可以以任何次序执行。作为eieio指令使用的示例,以下的代码确保,如果存储器位置处于禁止高速缓存的存储器中,在提取位置CC的内容或更新位置DD的内容之前,在主存储器中完成从位置AA的加载和到位置BB的存储:
·load word and zero(lwz)r4,AA(rl)
·store(stw)r4,BB(rl)
·eieio
·lwz r5,CC(rl)
·stw r5,DD(rl)
应当注意,如果AA、BB、CC和DD的存储器位置没有在禁止高速缓存的存储器中,则eieio指令不会对指令访问存储器的次序产生影响。
为了执行这些指令,增强的DMA引擎404可以包括功能程序以便利指令的执行,DMA引擎404由该指令编程,例如:
·指向要执行的下一指令的指针,该指令可以是两个存储器之一的;
·用于可能具有特定用途的中间结果的一组寄存器;
·用于过程参数和中间结果的堆栈;
·一组数据缓冲器;或者
·指示各种状态和条件的一组标志。
也可以编程增强的DMA引擎404以支持某些预定的子例程,从而实现分散、聚集、跨距访问、或其它通用数据传输范例。
在另一说明性实施例中,支持多个同时命令的增强的DMA引擎(如图4的增强的DMA引擎404)通过为增强的DMA引擎能够支持的每个命令包括一组程序计数器和一组专用状态组,可以改进它们的支持。通过为每个由增强的DMA引擎支持的DMA命令项提供专用状态和程序计数器组,增强的DMA引擎本质上作为多线程处理器工作,其以并行或交叉存取的方式来同时处理一个或多个程序。因此,DMA引擎可以支持前面提到的若干组功能程序,以便便利指令的执行,用该指令编程DMA引擎。作为多线程处理器工作在异种处理系统(如图1的数据处理系统100)中是尤其有利的,该异种处理系统的特征是一个或多个处理器优化成运行单个的、长的运行线程。在该说明性实施例中,DMA命令项成为轻量线程并且增强的DMA引擎成为多线程处理器。具有大量存储器访问的轻量线程可以由单个线程处理器派生(fork)到增强的DMA引擎,以便不用线程切换事件打击(thrash)单线程处理器。
因此,说明性实施例提供了用于增强的直接存储器存取(DMA)引擎的机制,该引擎包括复杂的指令集并且可以作为单线程处理器或多线程处理器工作。来自主机处理器的DMA请求被编码到写入DMA指令集的程序中。整个DMA指令集然后由DMA引擎用有限的主机处理器监督(supervision)来执行,主机处理器可以为驱动数据传输做非常少的事情,并且可以集中精力在数据处理上,该数据处理在链表中的数据在存储器中可获得后是必要的。
图5描述了根据一个说明性实施例,通过与增强的直接存储器存取(DMA)引擎相互作用的主机处理器执行的示例操作。在操作开始时,主机处理器将程序储存在局部存储或存储器中,用于传输或修改数据结构中的数据(步骤502)。主机处理器用参数初始化增强的DMA引擎内的寄存器,该参数指向局部存储中的局部存储地址(LSA)或存储器中的有效地址(EA)(步骤504)。然后主机处理器请求增强的DMA引擎执行程序(步骤506)。最后,主机处理器等待由增强的DMA引擎返回的完成状态(步骤508),随后结束处理。
图6描述了根据一个典型实施例,通过与主机处理器相互作用的增强的直接存储器存取(DMA)引擎执行的示例操作。在操作开始时,增强的DMA引擎从主机处理器接收请求,以执行位于局部存储或存储器中的程序(步骤602)。然后增强的DMA引擎执行传输或修改数据结构中的数据的程序(步骤604)。由增强的DMA引擎执行的程序中的指令可以包括一个或多个上述的指令。一旦增强的DMA引擎执行全部程序时,增强的DMA引擎将完成状态通知回请求主机处理器(步骤606),随后结束处理。
因此,说明性实施例提供了用于增强的直接存储器存取(DMA)引擎的机制,该引擎包括复杂指令集并且可以作为单线程处理器或多线程处理器工作。来自主机处理器的DMA请求编码到写入DMA指令集的程序中。全部DMA指令集然后由DMA引擎用有限的主机处理器监督来执行,主机处理器为驱动数据传输做非常少的事情,并且可以集中精力在数据处理上,该数据处理在数据结构中的数据在局部存储或存储器中可获得后是必要的。
如上所述,应当理解,说明性实施例可以采取完全硬件实施例、完全软件实施例、或包含硬件和软件元件的实施例的形式。在一个示例实施例中,说明性实施例的机制在软件或程序代码中实现,该软件或程序代码包括但不限于固件、驻留软件、微代码等。
适用于储存和/或执行程序代码的数据处理系统将包括至少一个通过系统总线直接或间接耦合到存储器元件的处理器。存储器元件可以包括在程序代码的实际执行期间使用的局部存储器、大容量存储、以及高速缓冲存储器,上述存储器为至少一些程序代码提供临时存储,以便减少在代码执行期间必须从大容量存储取回代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指示设备等)可以直接或通过介入I/O控制器耦合到系统。网络适配器也可以耦合到系统,使得数据处理系统能够通过介入的私人或公共网络耦合到其它数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器和以太网卡正是几个目前可用的网络适配器的类型。
已经为了阐释和说明的目的对本公开进行了描述,该描述不旨在穷举或将本发明限制成所公开的形式。许多修改和变化对于本领域技术人员是显而易见的。选择和描述了实施例以便最好地解释本发明的原理、实际应用,并且使本领域技术人员能够理解本发明的各种实施例,这些实施例具有适合可预见的特定用途的各种修改。
Claims (18)
1.一种用于在数据处理系统中,对作为单线程处理器操作的直接存储器存取引擎进行编程的方法,所述方法包括:
从主机处理器接收与所述直接存储器存取引擎相关联的局部存储或存储器中的程序;
从所述主机处理器接收在所述直接存储器存取引擎中的请求,以使用一组参数执行位于所述局部存储或存储器中的所述程序;
通过所述直接存储器存取引擎并且在没有主机处理器干预的情况下执行所述程序;以及
响应于所述程序完成执行,通过所述直接存储器存取引擎,将完成通知发送到所述主机处理器,所述通知指示所述程序已经完成执行。
2.根据权利要求1所述的方法,还包括:
从所述主机处理器接收参数组,所述主机处理器用到数据结构的指针和第一位置指针初始化所述直接存储器存取引擎内的寄存器,其中所述到数据结构的指针指向局部存储中的局部存储地址或存储器中的有效地址中的至少一个,并且其中所述第一位置指针指向局部存储中的局部存储地址或存储器中的有效地址中的至少一个;
将要存取的数据的当前指针设置为等于所述到数据结构的指针;
将数据预期的位置设置为等于所述第一位置指针;以及
使用所述当前指针和所述预期的位置指针对数据执行多个指令之一。
3.根据权利要求1所述的方法,其中所述主机处理器在所述直接存储器存取引擎正在执行所述程序的时间期间能够执行其它指令。
4.根据权利要求1所述的方法,其中所述主机处理器是协同处理单元。
5.根据权利要求4所述的方法,其中所述协同处理单元驻留在异种多核处理器内的协同处理元件内。
6.根据权利要求5所述的方法,其中所述异种多核处理器包括8个协同处理元件和一个电源处理器元件。
7.根据权利要求1所述的方法,其中所述直接存储器存取引擎编程为支持某些预定的子例程,以实现分散访问、聚集访问或跨距访问的至少一个。
8.根据权利要求1所述的方法,其中所述直接存储器存取引擎用从指令集选择的至少一个指令编程,以修改数据结构内的数据,所述指令集包括:条件分支、比较、加、减、乘、除、旋转、移位、逻辑和、逻辑或、逻辑异或、逻辑反转、浮点加、浮点乘、浮点除、以及浮点比较。
9.根据权利要求1所述的方法,其中所述直接存储器存取引擎用从指令集选择的至少一个指令编程,以修改数据结构内的数据,所述指令集包括:加载中间值、从存储器加载值、将值储存到存储器、从存储加载值、将值储存到存储、将数据从存储器移动到存储、以及将数据从存储移动到存储器。
10.根据权利要求1所述的方法,其中所述直接存储器存取引擎用从指令集选择的至少一个指令编程,以修改数据结构内的数据,所述指令集包括:完成和返回状态、获得传输状态、原子锁定、段/结束临界段、同步和eieio。
11.一种包括计算机可记录介质的计算机程序产品,所述计算机可记录介质具有在其上记录的计算机可读程序,其中所述计算机可读程序当在计算设备上执行时,使得计算设备实现权利要求1-10的任一方法。
12.一种装置,包括:
直接存储器存取引擎;
耦合到所述直接存储器存取引擎的局部存储;以及
耦合到所述直接存储器存取引擎的存储器,其中所述局部存储或所述存储器从主机处理器接收包括指令的程序,所述指令在由所述直接存储器存取引擎执行时,使得所述直接存储器存取引擎:
从所述主机处理器接收请求,以使用一组参数来执行位于所述局部存储或所述存储器中的程序;
在不受主机处理器干预的情况下,执行所述程序;以及
响应于所述程序完成执行,将完成通知发送到所述主机处理器,所述通知指示所述程序已经完成执行。
13.根据权利要求12所述的装置,其中所述指令还使得所述处理器:
从所述主机处理器接收参数组,所述主机处理器用到数据结构的指针和第一位置指针初始化所述直接存储器存取引擎内的寄存器,其中所述到数据结构的指针指向局部存储中的局部存储地址或存储器中的有效地址中的至少一个,并且其中所述第一位置指针指向局部存储中的局部存储地址或存储器中的有效地址中的至少一个;
将要存取的数据的当前指针设置为等于所述到数据结构的指针;
将数据预期的位置设置为等于所述第一位置指针;以及
使用所述当前指针和所述预期的位置指针对数据执行多个指令之一。
14.根据权利要求12所述的装置,其中所述主机处理器在所述直接存储器存取引擎正在执行所述程序的时间期间能够执行其它指令。
15.根据权利要求12的装置,其中所述直接存储器存取引擎编程为支持某些预定的子例程,以实现分散访问、聚集访问或跨距访问的至少一个。
16.根据权利要求12的装置,其中所述直接存储器存取引擎用从指令集选择的至少一个指令编程,以修改数据结构内的数据,所述指令集包括:条件分支、比较、加、减、乘、除、旋转、移位、逻辑和、逻辑或、逻辑异或、逻辑反转、浮点加、浮点乘、浮点除、以及浮点比较。
17.根据权利要求12的装置,其中所述直接存储器存取引擎用从指令集选择的至少一个指令编程,以修改数据结构内的数据,所述指令集包括:加载中间值、从存储器加载值、将值储存到存储器、从存储加载值、将值储存到存储、将数据从存储器移动到存储、以及将数据从存储移动到存储器。
18.根据权利要求12的装置,其中所述直接存储器存取引擎用从指令集选择的至少一个指令编程,以修改数据结构内的数据,所述指令集包括:完成和返回状态、获得传输状态、原子锁定、段/结束临界段、同步和eieio。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/342,280 US7870308B2 (en) | 2008-12-23 | 2008-12-23 | Programmable direct memory access engine |
US12/342,280 | 2008-12-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101763245A true CN101763245A (zh) | 2010-06-30 |
CN101763245B CN101763245B (zh) | 2013-04-24 |
Family
ID=42267738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910222068.3A Expired - Fee Related CN101763245B (zh) | 2008-12-23 | 2009-11-13 | 用于对直接存储器存取引擎进行编程的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7870308B2 (zh) |
KR (1) | KR101119298B1 (zh) |
CN (1) | CN101763245B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729267A (zh) * | 2011-05-20 | 2018-02-23 | 英特尔公司 | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 |
CN108334464A (zh) * | 2017-01-18 | 2018-07-27 | 恩智浦美国有限公司 | 具有支持三个dma模式的命令队列结构的多信道dma系统 |
CN108345550A (zh) * | 2017-01-23 | 2018-07-31 | 爱思开海力士有限公司 | 存储器系统 |
CN108388527A (zh) * | 2018-02-02 | 2018-08-10 | 上海兆芯集成电路有限公司 | 直接存储器存取引擎及其方法 |
US10740126B2 (en) | 2013-03-15 | 2020-08-11 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
CN112673351A (zh) * | 2018-07-04 | 2021-04-16 | 图核有限公司 | 流式传输引擎 |
US11163720B2 (en) | 2006-04-12 | 2021-11-02 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US11204769B2 (en) | 2011-03-25 | 2021-12-21 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US11656875B2 (en) | 2013-03-15 | 2023-05-23 | Intel Corporation | Method and system for instruction block to execution unit grouping |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7870309B2 (en) * | 2008-12-23 | 2011-01-11 | International Business Machines Corporation | Multithreaded programmable direct memory access engine |
US8855194B2 (en) * | 2011-05-09 | 2014-10-07 | Texas Instruments Incorporated | Updating non-shadow registers in video encoder |
US11775467B2 (en) * | 2021-01-14 | 2023-10-03 | Nxp Usa, Inc. | System and method for ordering transactions in system-on-chips |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2135505C (en) * | 1994-11-09 | 1999-11-09 | Patrick K. Kam | Dma emulation for non-dma capable interface cards |
US7224701B2 (en) | 2002-06-27 | 2007-05-29 | International Business Machines Corporation | Method and apparatus for implementing frame header alterations using byte-wise arithmetic logic units |
US7218647B2 (en) | 2002-06-27 | 2007-05-15 | International Business Machines Corporation | Method and apparatus for implementing frame header alterations |
US7239635B2 (en) | 2002-06-27 | 2007-07-03 | International Business Machines Corporation | Method and apparatus for implementing alterations on multiple concurrent frames |
US7617332B2 (en) | 2003-05-01 | 2009-11-10 | International Business Machines Corporation | Method and apparatus for implementing packet command instructions for network processing |
KR100919920B1 (ko) * | 2004-12-29 | 2009-10-07 | 엔비디아 코포레이션 | 로컬 버스 트래픽이 감소된 디스크 드라이브 동작들을 위한지능형 스토리지 엔진 |
US7617338B2 (en) * | 2005-02-03 | 2009-11-10 | International Business Machines Corporation | Memory with combined line and word access |
US7778271B2 (en) * | 2005-08-19 | 2010-08-17 | International Business Machines Corporation | Method for communicating instructions and data between a processor and external devices |
US7734827B2 (en) * | 2005-09-27 | 2010-06-08 | Sony Computer Entertainment, Inc. | Operation of cell processors |
US7523228B2 (en) * | 2006-09-18 | 2009-04-21 | International Business Machines Corporation | Method for performing a direct memory access block move in a direct memory access device |
US7620749B2 (en) * | 2007-01-10 | 2009-11-17 | International Business Machines Corporation | Descriptor prefetch mechanism for high latency and out of order DMA device |
US7647483B2 (en) * | 2007-02-20 | 2010-01-12 | Sony Computer Entertainment Inc. | Multi-threaded parallel processor methods and apparatus |
US7870309B2 (en) | 2008-12-23 | 2011-01-11 | International Business Machines Corporation | Multithreaded programmable direct memory access engine |
-
2008
- 2008-12-23 US US12/342,280 patent/US7870308B2/en not_active Expired - Fee Related
-
2009
- 2009-11-13 CN CN200910222068.3A patent/CN101763245B/zh not_active Expired - Fee Related
- 2009-11-27 KR KR1020090115941A patent/KR101119298B1/ko not_active IP Right Cessation
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11163720B2 (en) | 2006-04-12 | 2021-11-02 | Intel Corporation | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US11204769B2 (en) | 2011-03-25 | 2021-12-21 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
CN107729267A (zh) * | 2011-05-20 | 2018-02-23 | 英特尔公司 | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 |
CN107729267B (zh) * | 2011-05-20 | 2022-01-25 | 英特尔公司 | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 |
US10740126B2 (en) | 2013-03-15 | 2020-08-11 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US11656875B2 (en) | 2013-03-15 | 2023-05-23 | Intel Corporation | Method and system for instruction block to execution unit grouping |
CN108334464A (zh) * | 2017-01-18 | 2018-07-27 | 恩智浦美国有限公司 | 具有支持三个dma模式的命令队列结构的多信道dma系统 |
CN108345550A (zh) * | 2017-01-23 | 2018-07-31 | 爱思开海力士有限公司 | 存储器系统 |
CN108345550B (zh) * | 2017-01-23 | 2023-06-20 | 爱思开海力士有限公司 | 存储器系统 |
CN108388527A (zh) * | 2018-02-02 | 2018-08-10 | 上海兆芯集成电路有限公司 | 直接存储器存取引擎及其方法 |
CN112673351A (zh) * | 2018-07-04 | 2021-04-16 | 图核有限公司 | 流式传输引擎 |
Also Published As
Publication number | Publication date |
---|---|
KR101119298B1 (ko) | 2012-03-16 |
US7870308B2 (en) | 2011-01-11 |
US20100161848A1 (en) | 2010-06-24 |
KR20100073986A (ko) | 2010-07-01 |
CN101763245B (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101763246B (zh) | 用于对直接存储器存取引擎进行编程的方法和装置 | |
CN101763245B (zh) | 用于对直接存储器存取引擎进行编程的方法和装置 | |
CN108475193B (zh) | 用于字节排序指令和用于四位组排序的处理器、方法和系统 | |
US11720365B2 (en) | Path prediction method used for instruction cache, access control unit, and instruction processing apparatus | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
TWI551986B (zh) | 用於自較低特殊權限狀態控制執行階段檢測設施之操作之電腦程式產品、方法及其系統 | |
KR101594090B1 (ko) | 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들 | |
US20080250227A1 (en) | General Purpose Multiprocessor Programming Apparatus And Method | |
CN108027767A (zh) | 寄存器读取/写入排序 | |
CN108027769A (zh) | 使用寄存器访问指令发起指令块执行 | |
TWI533126B (zh) | 執行階段檢測報告 | |
CN108027750A (zh) | 乱序提交 | |
CN108027732A (zh) | 与断言的加载指令相关联的预取 | |
CN108369511A (zh) | 用于基于通道的跨步存储操作的指令和逻辑 | |
CN108027729A (zh) | 分段式指令块 | |
CN108027778A (zh) | 与断言的存储指令相关联的预取 | |
CN107810478A (zh) | 具有连续块的并行执行的基于块的架构 | |
CN108369513A (zh) | 用于加载-索引-和-收集操作的指令和逻辑 | |
CN108027731A (zh) | 针对基于块的处理器的调试支持 | |
CN104011681A (zh) | 向逻辑分区提供反映处理器核的独占使用的硬件线程特定信息 | |
CN108112269A (zh) | 多重无效 | |
CN104205064A (zh) | 将程序事件记录事件向运行时间检测事件的变换 | |
CN102713838B (zh) | 无停顿键设置工具 | |
CN104205088A (zh) | 用于实现页级自动二进制转换的硬件剖析机制 | |
CN109564552A (zh) | 增强基于每页当前特权等级的存储器访问许可 |
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 |
Granted publication date: 20130424 Termination date: 20201113 |
|
CF01 | Termination of patent right due to non-payment of annual fee |