CN101751356A - 用于改进直接存储器存取传送效率的方法、系统和装置 - Google Patents
用于改进直接存储器存取传送效率的方法、系统和装置 Download PDFInfo
- Publication number
- CN101751356A CN101751356A CN200910222436A CN200910222436A CN101751356A CN 101751356 A CN101751356 A CN 101751356A CN 200910222436 A CN200910222436 A CN 200910222436A CN 200910222436 A CN200910222436 A CN 200910222436A CN 101751356 A CN101751356 A CN 101751356A
- Authority
- CN
- China
- Prior art keywords
- buffer
- dma
- memory access
- direct memory
- input
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 132
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012546 transfer Methods 0.000 title abstract description 6
- 238000004590 computer program Methods 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000002195 synergetic effect Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims 6
- 230000000977 initiatory effect Effects 0.000 claims 4
- 230000007246 mechanism Effects 0.000 abstract description 49
- 230000008569 process Effects 0.000 abstract description 20
- 230000005540 biological transmission Effects 0.000 description 25
- 230000003139 buffering effect Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000013139 quantization Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及用于改进直接存储器存取传送效率的方法、系统和装置。提供了一种用于改进多个较小直接存储器存取传送的效率的机制。该机制使用一个输入缓存和小结果缓存或一些临时变量来临时地存储计算结果。该机制对输入缓存中的数据段执行计算并且将结果存储在临时结果缓存中。该机制随后将结果复制回输入缓存中。这样,该机制将输入缓存既作为输入缓存也作为结果缓存使用。该机制随后对包含计算结果的输入缓存的段执行直接存储器存取传送并且随后对输入缓存的下一段执行计算。该机制随后重复该过程直至整个输入缓存已经被处理为止。
Description
技术领域
本发明一般地涉及改进的数据处理装置和方法并且更特别地涉及改进多个较小直接存储器存取传送的效率以便在Cell宽带引擎(CellBroadband EngineTM)处理器上编程的方法和装置。
背景技术
Cell宽带引擎体系结构将例如性能有限的通用目的PowerArchitecture内核和极大地加速多媒体和矢量处理应用的流线型共处理单元结合起来。共处理单元被称为协同处理单元(SPE),其显著加速许多形式的专门计算。Cell宽带引擎(Cell/B.E.TM)处理器是单芯片多核体系结构,其为从计算机游戏到在各种应用领域里的很多计算密集型应用,如地震数据处理、生物信息学、图形处理等广大范围的应用提供低成本和高性能。Cell宽带引擎和Cell/B.E.是索尼计算机娱乐公司在美国、其他国家或两者的商标。POWER ARCHITECTURE是IBM公司在美国、其他国家或两者的注册商标。
Cell/B.E.TM体系结构提供的一个特性是例如使用八个协同处理单元(SPE),每个单元使用其自己的本地储存器(LS)而不是高速缓存。这要求Cell/B.E.TM程序员明确地使用直接存储器存取(DMA)指令以在主共享存储器和本地储存器之间传送数据和/或结果。该特性为Cell/B.E.TM程序员提供了更高的灵活性,也带来了更多的复杂性。
于是,Cell/B.E.TM程序员必须考虑使用LS的效率,这大大影响应用的实际性能。如何有效地使用LS是Cell/B.E.TM程序员应当考虑的一个十分重要的问题。由于每个LS空间有限,在主存储器和LS之间频繁往复地执行DMA传送是寻常的。因此,用于执行DMA传送的策略对应用性能来说可能是关键的。
目前一种普遍使用的技术被称为“双缓冲”。双缓冲的基本思想是通过在两个缓存之间切换计算而隐藏DMA传送延迟,由此当在其中一个缓存上执行DMA传送的同时在另一个缓存上执行计算。对于受计算限制的应用,此技术能够有效地隐藏DMA传送延迟。
然而,有很多应用是受存储器限制的,并且在那些情况下应用的性能不是受到每个SPE的计算能力的限制,而是受到DMA传送带宽的限制。因此,任何耗费在DMA传送上的时间可能对应用的性能有不利的影响。为了获得更好的性能和效率,程序员可以尽量以尽可能大的传送大小执行尽可能少的DMA传送。然而,由于很多计算算法的性质,可能无法避免多个较小的DMA传送,使得双缓冲成为改进性能的唯一技术。
发明内容
在一个示例性实施例中,提供一种在数据处理系统中用于改进的直接存储器存取传送的方法。方法包括执行直接存储器存取传送以将数据从主存储器加载到输入缓存,对输入缓存中的第一数据段执行至少一个计算以产生第一结果数据段,将第一结果数据段存回到输入缓存中,并且发起直接存储器存取传送以将第一结果数据段从输入缓存存储到主存储器。
在另一个示例性实施例中,提供一种包括计算机可用或可读介质的计算机程序产品,该介质具有计算机可记录程序。当计算机可读程序在计算装置上被执行时,使计算装置执行上述关于方法示例性实施例的各种操作之一或其组合。
在另一个示例性实施例中,提供一种系统/装置。系统/装置可以包括一个或多个处理器以及连接到该一个或多个处理器的存储器。存储器可以包括指令,当该指令被一个或多个处理器执行时,使一个或多个处理器执行上述关于方法示例性实施例的各种操作之一或其组合。
本发明的这些以及其他特性和优点将在以下对本发明示例性实施例的详述中描述,或者本领域的普通技术人员在阅读之后将理解本发明的这些以及其他特性和优点。
附图说明
本发明,以及优选使用方式及其进一步的目的和优点,将可以通过参照附图并参照以下对本发明示例性实施例的详述而得到最好的理解。
图1是其中可以实现本发明的各个方面的数据处理系统的示例性方框图;
图2示出了直接存储器存取传送技术;
图3示出了使用双缓冲的直接存储器存取传送技术;
图4示出了根据一个示例性实施例的使用临时结果缓存的直接存储器存取传送技术;
图5A和图5B示出了使用直接存储器存取传送的代码的例子,其中直接存储器存取传送使用双缓冲;
图6示出了根据一个示例性实施例的使用直接存储器存取传送的代码的例子,其中直接存储器存取传送使用临时变量;
图7是示出根据一个示例性实施例的对各种矩阵大小和计算的性能改进的表;以及
图8是示出根据一个示例性实施例利用临时结果缓存的直接存储器存取传送操作的流程图。
具体实施方式
示例性实施例提供用于改进多个较小直接存储器存取传送的效率的机制。该机制可以用于双缓冲技术通常所应用的任何应用。该机制使用一个输入缓存和小结果缓存或一些临时变量以临时地存储计算结果。该机制对输入缓存中的数据段执行计算并且将结果或中间结果存储在结果缓存或临时变量中。该机制随后将结果复制回输入缓存或直接地将结果存储在输入缓存中。这样,该机制将输入缓存既作为输入缓存也作为结果缓存加以使用。
该机制随后对包含计算结果的输入缓存的段执行直接存储器存取传送并且随后对输入缓存的下一段执行计算。该机制随后重复该过程直至整个输入缓存已经被处理为止。该机制在计算和直接存储器存取传送过程期间不执行直接存储器存取状态检查。该机制仅当其需要重新使用输入缓存时才检查是否直接存储器存取传送已完成。
该机制在本地储存器内执行额外的复制操作;然而,在本地储存器内进行复制的开销小于对直接存储器存取传送状态进行检查并等待直接存储器存取传送完成。实际上,该机制可以不执行额外的复制,因为对于一些负杂计算,该机制可以简单地使用临时缓存以存储中间结果并且直接地将最终结果放回输入缓存而不是临时结果缓存中。因此,该机制不仅使用有限的较小的本地储存器空间,也带来更好的性能。
示例性实施例可以在许多不同类型的数据处理环境中利用,包括分布式数据处理环境,单个数据处理设备等。为了给示例性实施例的特定单元和功能性的描述提供背景,在此作为示例性环境提供图1,在其中可以实现示例性实施例的各个示例性方面。对图1的描述将主要地集中于单个数据处理设备实施方式,但这只是示例性的并且并不意在声明或暗示对有关本发明特性的任何限制。相反,示例性实施例意在包括分布式数据处理环境、网格计算环境等等。
图1是其中可以实现本发明的各个方面的数据处理系统的示例性方框图。图1中示出的示例性数据处理系统是Cell宽带引擎(Cell/B.E.TM)数据处理系统的例子。尽管Cell/B.E.TM处理器将在对本发明优选实施例的描述中使用,但本领域的普通技术人员在阅读以下描述后即可理解,本发明并不限于此。
如图1所示,Cell/B.E.TM处理器100包括主处理器单元(PPE)110,其具有处理器(PPU)116及其L1高速缓存112和L2高速缓存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 149至154以及SPE 120至134相关联。只要本地储存器并不处于操作安全模式下,系统中的任何资源都有能力从/向本地储存器163至170读/写,在操作安全模式下仅本地储存器相关联的SPU可以访问本地储存器163至170或本地储存器163至170的指定的安全部分。
Cell/B.E.TM处理器100可以是系统芯片,使得可以在单个微处理器芯片上提供图1中示出的每个单元。而且,Cell/B.E.TM处理器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在Cell/B.E.TM处理器100和其他外部总线和装置之间提供通信接口。
PPE 110是双线程PPE 110。双线程PPE 110和八个SPE 120至134的组合使Cell/B.E.TM 100能够处理10个并发线程和超过128个未完成存储器请求。PPE 110作为处理大部分计算工作量的其他八个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传递给SPE直至其最终到达输出显示器。在4GHz,每个SPE 120至134提供理论的32GFlops的性能,而PPE 110具有类似的性能水平。
存储器流控制单元(MFC)155至162作为SPU到系统其余和其他单元的接口。MFC 155至162为主储存器和本地储存器163至170之间数据传送、保护和同步提供基本机制。逻辑上在处理器上每个SPU都有MFC。一些实施例能够在多个SPU之间共享一个MFC的资源。在这种情况下,为MFC定义的全部工具和命令必须表现出独立于每个SPU的软件。共享MFC的效果被限于依赖于实现的工具和命令。
图2示出了直接存储器存取传送技术。协同处理单元(SPE)210执行直接存储器存取(DMA)传送以将数据从主存储器250加载到输入缓存220。SPE 210随后对缓存220中的数据段执行计算并且将结果存储在结果缓存230中。例如,SPE 210对数据段222执行计算以产生结果数据段232并且对数据段224执行计算以产生结果数据段234。输入缓存220和结果缓存230可以是与SPE 210相关联的本地储存器的部分。例如,SPE 210可以是SPE 120至134之一,并且输入缓存220和结果缓存230包括在图1中的本地储存器(LS)163至170之一中。
在图2示出的例子中,SPE 210随后执行DMA传送以将结果从结果缓存230传送到主存储器250中。SPE 210可以将结果数据段从结果缓存230传送到在主存储器中的不同位置以便为下一步骤的计算准备数据。因此,SPE 210可以执行多个较小DMA传送或者使用包括从结果缓存230到主存储器250的多个较小DMA传送的DMA列表执行一个DMA操作。在两种情况下都将使用相对较大的结果缓存。
Cell/B.E.TM程序员必须考虑使用LS的效率,这大大影响应用的实际性能。如何有效地使用LS是Cell/B.E.TM程序员应当考虑的一个十分重要的问题。由于每个LS的空间有限,在主存储器和LS之间频繁往复地执行DMA传送是寻常的。因此,用于执行DMA传送的策略对应用性能来说可能是关键的。
目前普遍使用的技术称为“双缓冲”。双缓冲的基本思想是通过在两个缓存之间切换计算而隐藏DMA传送延迟,由此当在其中一个缓存上执行DMA传送的同时在另一个缓存上执行计算。对于受计算限制的应用,此技术能够有效地隐藏DMA传送延迟。
图3示出了使用双缓冲的直接存储器存取传送技术。SPE 310执行DMA传送以将数据从主存储器350加载到输入缓存320。SPE 310随后对输入缓存320中的数据段执行计算。在示出的例子中,SPE 310交替将结果存储到结果缓存A 330和结果缓存B 340中。例如,SPE 310对数据段322执行计算以产生在输入缓存A 330中的结果数据段332并且对数据段324执行计算以产生在输入缓存B 340中的结果数据段334。
在图3示出的例子中,SPE 310随后执行DMA传送以将结果从结果缓存A 330和结果缓存B 340存储到主存储器350中。SPE 310可以将结果数据段从结果缓存A 330和结果缓存B 340存储到主存储器350的不同位置以便为下一步骤的计算准备数据。SPE 310在结果缓存A 330和结果缓存B 340之间交替,对数据段执行计算并且将结果存储在一个结果缓存中而同时执行DMA传送以存储来自另一结果缓存的结果数据段。例如,SPE 310可以对数据段324执行计算并且将结果数据段344存储在结果缓存B 340中而同时执行DMA传送以将来自结果缓存A 330的结果数据段332存储到主存储器350。随后,SPE 310可以对下一数据段执行下一计算并且将结果存储在结果缓存A中而同时执行DMA传送将来自结果缓存B 340的结果数据段344存储到主存储器350。由此,SPE 310从结果缓存A 330和结果缓存B 340到主存储器执行多个较小DMA传送。
有很多应用是受存储器限制的,并且在那些情况下应用的性能并不受限于每个SPE的计算能力,而是受限于DMS传送带宽。此外,双缓冲的一个缺点是SPE必须检查DMA传送的状态并且仅当DMA传送完成时才能重新使用缓存。这造成同步的额外开销。因此,根据示例性实施例,提供一种用于改进多个较小直接存储器存取传送的效率的机制。该机制可以用于双缓冲技术通常所应用的任何应用。
图4示出了根据一个示例性实施例的使用临时结果缓存的直接存储器存取传送技术。SPE 410包括输入和结果缓存420以及临时结果缓存430。SPE 410执行DMA传送以将数据从主存储器450加载到输入缓存420。SPE 410随后对输入缓存420中的数据段执行计算。在示出的例子中,SPE 410对数据段424执行计算并且临时地将结果或中间结果存储在临时结果缓存430的结果数据段434中。临时结果缓存430可以是本地储存器的一小部分或在SPE 410中的一个或多个寄存器。SPE 410随后将结果数据段434从临时结果缓存430复制回输入和结果缓存420中或对包含中间结果的数据段434执行另一计算并且将结果放入输入和结果缓存420。
在图4示出的例子中,SPE 410随后执行DMA传送以将结果从输入和结果缓存420存储到主存储器450中。由于所实现的算法或为了将准备用于下一步骤的计算的数据,SPE 410可以将结果数据段从输入和结果缓存420传送到主存储器450中的不同位置。SPE 410可以对一个数据段如数据段424执行计算,并且将结果存储回输入和结果缓存420,而同时执行DMA传送以将前一结果数据段如数据段422从输入和结果缓存420存储到主存储器450。由此,SPE 410可以从输入和结果缓存420到主存储器450执行多个较小DMA传送。
SPE 410随后重复该过程直至整个输入缓存已经被处理为止。SPE410在计算和直接存储器存取传送过程期间不执行直接存储器存取状态检查。SPE 410仅当其需要重新使用输入和结果缓存420时才检查是否直接存储器存取传送已完成。SPE 410在本地储存器内执行额外的复制操作;然而,在本地储存器内复制的开销小于对直接存储器存取传送状态进行检查并等待直接存储器存取传送完成。实际上,SPE 410可以不必执行额外的复制,因为对于一些复杂计算,SPE 410可以简单地将结果放回到输入缓存中而不是临时结果缓存中。因此,如图4示出的使用临时结果缓存的DMA传送不仅使用有限的较小的本地储存器空间,也带来更好的性能。
本领域的普通技术人员可以理解,本发明可以作为系统、方法或计算机程序产品实现。相应地,本发明可以采取完全的硬件实施例、完全的软件实施例(包括固件、驻留软件、微码等)或在本说明书中一般地可以被称为“电路”、“模块”或“系统”的组合了软件和硬件方面的实施例的形式。进而,本发明可以采取在表达的任何有形介质中包含的计算机程序产品的形式,其具有在介质中包含的计算机可读程序代码。
可以采用一个或多个计算机可用或计算机可读介质的任意组合。计算机可用或计算机可读介质可以是,例如但不限于:电子的、磁的、光学的、电磁的、红外的或半导体的系统、装置、设备或传播介质。计算机可读介质的更多特定的例子(非穷尽的列举)可以包括:具有一个或多个接线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式压缩盘只读存储器(CDROM)、光学存储设备、传送媒体如那些支持因特网或内网的介质或磁存储设备。注意计算机可用或计算机可读介质甚至可以是纸或另一种适当的介质,其上印刷有程序,因为如果需要,程序可以经由例如对纸或其他介质的光学扫描被电子地获得,随后被编辑、翻译或以适当的方式做其他处理,随后被存储在计算机存储器中。在本说明书背景下,计算机可用或计算机可读介质可以是可以包含、存储、传送、传播或传输程序供指令执行系统、装置或设备使用或与其联合使用的任何介质。计算机可用介质可以包括传播数据信号,信号中在基带或载波的部分中包含计算机可用程序代码。计算机可用程序代码可以使用任何适当介质被传送,包括但不限于:无线、有线、光缆、射频(RF)等。
用于实现本发明的操作的计算机程序代码可以被写成一种或更多程序设计语言的任意组合,包括面向对象的程序设计语言如JavaTM、SmalltalkTM、C++等以及传统的过程程序设计语言如“C”程序设计语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为独立软件包执行、部分地在用户计算机上并且部分地在远程计算机上执行或者完全地在远程计算机上或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者可以连接到外部计算机(例如,通过因特使用因特网服务提供商)。
以下参照根据本发明的示例性实施例的方法、装置(系统)和计算机程序产品的流程图和/或方框图描述示例性实施例。可以理解,流程图和/或方框图中的每个框或流程图和/或方框图中的框的组合能够被计算机程序指令实现。这些计算机程序指令可以被提供给通用目的计算机、特定目的计算机或其他可编程数据处理装置的处理器以产生机器,使得指令在经由计算机或其他可编程数据处理装置的处理器执行时,产生用于实现流程图和/或方框图中的一个框或多个框所规定的功能/动作的装置。
这些计算机程序指令也可以被存储在能够指导计算机或其他可编程数据处理装置以特定的方式发挥功能的计算机可读介质中,使得存储在计算机可读介质中的指令产生一种制品,其包括实现流程图和/或方框图中的一个框或多个框所规定的功能/动作的指令装置。
计算机程序指令也可以被加载到计算机或其他可编程数据处理装置上,以使在计算机或其他可编程数据处理装置上执行一系列可操作的步骤,以产生计算机实现的过程,使得在计算机或其他可编程数据处理装置执行的指令提供用于实现流程图和/或方框图中的一个框或多个框所规定的功能/动作的过程。
附图中的流程图和方框图示出根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的体系结构、功能性和操作。就此而言,流程图和/或方框图中每个框可以代表代码的模块、段或部分,其包括用于实现特定逻辑功能的一个或多个可执行指令。应当注意,在一些替代施例中,框中注明的功能可以按照与图示不同的顺序发生。例如,顺序示出的两个框根据涉及的功能性实际上可以基本上同时地执行,或者有时候可以以相反的顺序执行。也应当注意,流程图和/或方框图中的每个框,以及流程图和/或方框图中的框的组合,能够通过执行特定的功能或动作的基于硬件的特定目的系统或特定目的硬件和计算机指令的组合实现。
图5A和图5B示出了使用直接存储器存取传送的代码的例子,其中直接存储器存取传送使用双缓冲。图5A和图5B中示出的代码示出了用于Cell/B.E.TM体系结构的并行素因子分析快速傅立叶变换(PFAFFT)。图6示出了根据一个示例性实施例的使用直接存储器存取传送的代码的例子,其中直接存储器存取传送使用临时缓存。图6所示的代码执行用于Cell/B.E.TM体系结构的同样的并行PFAFFT功能,而图6中的代码不仅更有效而且更简短。输入缓存越长并且小DMA传送数量越大,性能改进越大。
图7是示出根据一个示例性实施例的各种矩阵大小和计算的性能改进的表。对于每种矩阵大小和计算,图7示出的表比较了用于使用双缓冲计算的时间以及相应的“新”时间,其中“新”时间使用例如图4示出的输入/结果缓存以及临时结果缓存。
在Cell/B.E.TM数据处理系统上有两种PFAFFT的实现,它们使用不同的策略:一种是“3步骤PFAFFT”并且另一种是“2步骤PFAFFT”。而且,也有两种应用PFAFFT的情况:一种是采用矢量化格式的输入数据并且另一种是采用非矢量化格式的输入数据。对于后一种情况,PFAFFT需要将输入数据从非矢量化格式转换为矢量化格式,随后执行FFT计算并且在FFT计算之后需要将输出数据从矢量化格式转换为非矢量化格式。“3SW”代表采用矢量化输入数据的3步骤PFAFFT。“3SWO”代表不采用矢量化输入数据的3步骤PFAFFT。“2SW”代表采用矢量化输入数据的2步骤PFAFFT并且类似地“2SWO”代表不采用矢量化输入数据的2步骤PFAFFT。
图8是示出根据一个示例性实施例采用临时结果缓存器的直接存储器存取传送操作的流程图。操作开始,该机制执行直接存储器存取(DMA)传送将数据从主存储器加载到输入缓存(框802)。该机制随后对输入缓存中的数据段执行计算(框804)并且将结果存储在临时结果缓存中(框806)。随后,该机制将结果复制回输入缓存中(框808)。因此,该机制将输入缓存既作为输入缓存也作为结果缓存使用。在一个替代实施例中,或者当计算允许时,该机制也可以将结果直接地存回到输入/结果缓存中而不使用临时结果缓存。
接下来,该机制将结果段传送到主存储器(框810)。该机制确定是否被传送的结果段是输入缓存中的最后一个段(框812)。如果该段不是最后一个段,操作回到框804以对下一个数据段执行计算。框810中的传送是DMA传送。因此,当框810中的DMA传送在执行的同时,该机制可以并行地执行下一个计算。仅对最后的计算,该机制必须检查回到主存储器的DMA传送的状态。
如果在框812中,输入缓存中的段是最后一个段,该机制确定其是否需要重新使用输入缓存(框814)。如果该机制不需要重新使用输入缓存,操作结束。在框814,如果该机制确定其需要重新使用输入缓存,该机制检查DMA传送的状态(框816)并且确定是否从输入/结果缓存到主存储器的所有DMA传送已经完成(框818)。如果所有DMA传送已经完成,操作回到框802以执行从主存储器到输入缓存的下一个DMA传送。否则,操作回到框816检查DMA传送的状态。
因此,示例性实施例提供用于改进多个较小直接存储器存取传送的效率的机制。该机制可以用于双缓冲技术通常所应用的任何应用。该机制使用一个输入缓存和小结果缓存或一些临时变量以临时地存储计算结果。该机制对输入缓存中的数据段执行计算并且将结果存储在临时结果缓存中。该机制随后将结果复制回输入缓存中。这样,该机制将输入缓存既作为输入缓存也作为结果缓存使用。
该机制随后对包含计算结果的输入缓存的段执行直接存储器存取传送并且随后对输入缓存的下一段执行计算(计算和直接存储器存取传送将被同时地执行)。该机制随后重复该过程直至整个输入缓存已经被处理为止。该机制在计算和直接存储器存取传送过程期间不执行直接存储器存取状态检查。该机制仅当其需要重新使用输入缓存时才检查是否直接存储器存取传送已完成。该机制在本地储存器内执行额外的复制操作;然而,在本地储存器内复制的开销小于对直接存储器存取传送状态进行检查并等待直接存储器存取传送完成。
如上所述,应当理解,示例性实施例可以采取完全的硬件实施例、完全的软件实施例或既包括硬件单元也包括软件单元的实施例的形式。在一个实施例的例子中,示例性实施例的机制以软件或程序代码实现,其包括但不限于固件、驻留软件、微码等。
适于存储和/或执行程序代码的数据处理系统将包括直接地或通过系统总线间接地连接到存储器单元的至少一个处理器。存储器单元可以包括在程序代码实际执行期间利用的本地存储器、大容量存储器以及高速缓存,高速缓存是为了降低在执行期间必须从大容量缓存检索代码的次数而为至少一些程序代码提供的临时存储空间。
输入/输出或I/O设备(包括但不限于键盘、显示器、指示设备等)能够直接地或通过居间I/O控制器连接到系统。网络适配器也可以连接到系统以允许数据处理系统通过居间私人或公共网络连接到其他数据处理系统或远程打印机或存储设备。调制解调器、线缆调制解调器以及以太网卡只是目前可用的网络适配器类型中的几种。
对本发明的描述是为了解释和描述之目的而提供,并不意在以所公开的形式穷尽或限制本发明。本领域的普通技术人员可以理解诸多变更和变型。对实施例的选择和描述是为了对本发明原则、实际应用做出最佳解释,并且为了使本领域的普通技术人员理解对本发明各种实施例的适于所预期之特定用途的各种变更。
Claims (14)
1.一种在数据处理系统中用于改进的直接存储器存取传送的方法,所述方法包括:
执行直接存储器存取传送以将数据从主存储器加载到输入缓存;
对所述输入缓存内的第一数据段执行至少一个计算以产生第一结果数据段;
将所述第一结果数据段存回到所述输入缓存中;并且
发起直接存储器存取传送以将所述第一结果数据段从所述输入缓存存储到所述主存储器。
2.根据权利要求1所述的方法,其中将所述第一结果数据段存储回所述输入缓存包括:
将所述第一结果数据段存储在临时结果缓存中;并且
将所述第一结果数据段从所述临时结果缓存复制到所述输入缓存中。
3.根据权利要求2所述的方法,其中所述临时结果缓存和所述输入缓存存储在与协同处理单元相关联的本地储存器中。
4.根据权利要求2所述的方法,其中所述临时结果缓存包括一个或多个寄存器。
5.根据权利要求1所述的方法,进一步包括:
与将前一结果数据段从所述输入缓存存储到所述主存储器的直接存储器存取传送并行地,对当前数据段执行至少一个计算以产生当前结果数据段。
6.根据权利要求5所述的方法,进一步包括:
将所述当前结果数据段存回到所述输入缓存中;并且
发起直接存储器存取传送以将所述当前结果数据段从所述输入缓存存储到所述主存储器。
7.根据权利要求6所述的方法,进一步包括:
响应于所述当前数据段是所述输入缓存中的最后一个数据段,确定是否要重新使用所述输入缓存。
8.根据权利要求7所述的方法,进一步包括:
响应于确定要重新使用所述输入缓存,检查用于存储此前结果数据段的直接存储器存取传送的状态;并且
响应于所有用于存储此前结果数据段的直接存储器存取传送已完成,执行直接存储器存取传送以将后续数据从所述主存储器加载到所述输入缓存。
9.一种包括计算机可读介质的计算机程序产品,所述介质上记录有计算机可读程序,其中当所述计算机可读程序在计算装置上被执行时,使所述计算装置实现权利要求1至8的任一方法。
10.一种计算机系统,包括用于实现权利要求1至8的任一方法的装置。
11.一种装置,包括:
处理器;以及
连接到所述处理器的存储器,其中所述存储器包括指令,当所述指令由所述处理器执行时,使处理器:
执行直接存储器存取传送以将数据从主存储器加载到输入缓存;
对所述输入缓存中的第一数据段执行至少一个计算以产生第一结果数据段;
将所述第一结果数据段存回到所述输入缓存中;并且
发起直接存储器存取传送以将所述第一结果数据段从所述输入缓存存储到所述主存储器。
12.根据权利要求11所述的装置,其中将所述第一结果数据段存储回所述输入缓存包括:
将所述第一结果数据段存储在临时结果缓存中;并且
将所述第一结果数据段从所述临时结果缓存复制到所述输入缓存中。
13.根据权利要求11所述的装置,其中所述指令进一步使处理器:
与将前一结果数据段从所述输入缓存存储到所述主存储器的直接存储器存取传送并行地,对当前数据段执行至少一个计算以产生当前结果数据段;
将所述当前结果数据段存回所述输入缓存中;并且
发起直接存储器存取传送以将所述当前结果数据段从所述输入缓存存储到所述主存储器。
14.根据权利要求13所述的装置,其中所述指令进一步使处理器:
响应于所述当前数据段是所述输入缓存中的最后一个数据段,确定是否要重新使用所述输入缓存;
响应于确定要重新使用所述输入缓存,检查用于存储此前结果数据段的直接存储器存取传送的状态;并且
响应于所有用于存储此前结果数据段的直接存储器存取传送已完成,执行直接存储器存取传送以将后续数据从所述主存储器加载到所述输入缓存。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/337,703 US8412862B2 (en) | 2008-12-18 | 2008-12-18 | Direct memory access transfer efficiency |
US12/337,703 | 2008-12-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101751356A true CN101751356A (zh) | 2010-06-23 |
CN101751356B CN101751356B (zh) | 2012-08-22 |
Family
ID=42267771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102224364A Expired - Fee Related CN101751356B (zh) | 2008-12-18 | 2009-11-13 | 用于改进直接存储器存取传送效率的方法、系统和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8412862B2 (zh) |
JP (1) | JP5528054B2 (zh) |
KR (1) | KR20100070981A (zh) |
CN (1) | CN101751356B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880472A (zh) * | 2012-09-28 | 2013-01-16 | 方正国际软件有限公司 | 流程引擎中进行数据存取的系统 |
CN103490854A (zh) * | 2013-09-03 | 2014-01-01 | 华为技术有限公司 | 一种训练窗添加方法及芯片 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012031052A (ja) | 2010-06-28 | 2012-02-16 | Asahi Glass Co Ltd | ガラス体を製造する方法及びeuvリソグラフィ用の光学部材を製造する方法 |
CN105677592A (zh) * | 2015-12-31 | 2016-06-15 | 北京经纬恒润科技有限公司 | 一种总线通信方法及系统 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6397316B2 (en) | 1997-07-24 | 2002-05-28 | Intel Corporation | System for reducing bus overhead for communication with a network interface |
JP3289661B2 (ja) * | 1997-11-07 | 2002-06-10 | 日本電気株式会社 | キャッシュメモリシステム |
US6484251B1 (en) * | 1999-10-14 | 2002-11-19 | International Business Machines Corporation | Updating condition status register based on instruction specific modification information in set/clear pair upon instruction commit in out-of-order processor |
US6681273B1 (en) * | 2000-08-31 | 2004-01-20 | Analog Devices, Inc. | High performance, variable data width FIFO buffer |
JP3878508B2 (ja) * | 2001-11-08 | 2007-02-07 | 松下電器産業株式会社 | 回路群制御システム |
US7653072B2 (en) * | 2001-11-13 | 2010-01-26 | Transwitch Corporation | Overcoming access latency inefficiency in memories for packet switched networks |
JP3934493B2 (ja) * | 2002-06-28 | 2007-06-20 | 富士通株式会社 | 集積回路及びシステム開発方法 |
US7114042B2 (en) | 2003-05-22 | 2006-09-26 | International Business Machines Corporation | Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment |
US7177982B2 (en) | 2004-01-16 | 2007-02-13 | International Business Machines Corporation | Method to maintain order between multiple queues with different ordering requirements in a high frequency system |
US20060090016A1 (en) * | 2004-10-27 | 2006-04-27 | Edirisooriya Samantha J | Mechanism to pull data into a processor cache |
US7447868B2 (en) * | 2005-06-15 | 2008-11-04 | International Business Machines Corporation | Using vector processors to accelerate cache lookups |
US7398368B2 (en) | 2005-12-01 | 2008-07-08 | Sony Computer Entertainment Inc. | Atomic operation involving processors with different memory transfer operation sizes |
US7870544B2 (en) | 2006-04-05 | 2011-01-11 | International Business Machines Corporation | Insuring maximum code motion of accesses to DMA buffers |
US7925798B2 (en) * | 2007-01-26 | 2011-04-12 | Lantiq Deutschland Gmbh | Data packet processing device |
US9131240B2 (en) * | 2007-08-23 | 2015-09-08 | Samsung Electronics Co., Ltd. | Video decoding method and apparatus which uses double buffering |
US7865631B2 (en) * | 2007-12-06 | 2011-01-04 | International Business Machines Corporation | Dynamic logical data channel assignment using time-grouped allocations |
US7689734B2 (en) * | 2007-12-18 | 2010-03-30 | International Business Machines Corporation | Method for toggling non-adjacent channel identifiers during DMA double buffering operations |
-
2008
- 2008-12-18 US US12/337,703 patent/US8412862B2/en not_active Expired - Fee Related
-
2009
- 2009-09-10 KR KR1020090085339A patent/KR20100070981A/ko active IP Right Grant
- 2009-10-22 JP JP2009243183A patent/JP5528054B2/ja not_active Expired - Fee Related
- 2009-11-13 CN CN2009102224364A patent/CN101751356B/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880472A (zh) * | 2012-09-28 | 2013-01-16 | 方正国际软件有限公司 | 流程引擎中进行数据存取的系统 |
CN102880472B (zh) * | 2012-09-28 | 2016-01-27 | 方正国际软件有限公司 | 流程引擎中进行数据存取的系统 |
CN103490854A (zh) * | 2013-09-03 | 2014-01-01 | 华为技术有限公司 | 一种训练窗添加方法及芯片 |
CN103490854B (zh) * | 2013-09-03 | 2017-08-29 | 华为技术有限公司 | 一种训练窗添加方法及芯片 |
Also Published As
Publication number | Publication date |
---|---|
KR20100070981A (ko) | 2010-06-28 |
US8412862B2 (en) | 2013-04-02 |
US20100161896A1 (en) | 2010-06-24 |
JP5528054B2 (ja) | 2014-06-25 |
CN101751356B (zh) | 2012-08-22 |
JP2010146549A (ja) | 2010-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110688157B (zh) | 一种计算装置及计算方法 | |
EP4002105B1 (en) | Systems and methods for performing 16-bit floating-point matrix dot product instructions | |
EP3629158B1 (en) | Systems and methods for performing instructions to transform matrices into row-interleaved format | |
US20200285950A1 (en) | Structured Weight Based Sparsity In An Artificial Neural Network Compiler | |
US9104532B2 (en) | Sequential location accesses in an active memory device | |
EP3391195B1 (en) | Instructions and logic for lane-based strided store operations | |
CN108268422A (zh) | 用于处理非常稀疏和超稀疏矩阵数据的硬件加速器架构 | |
EP3713093A1 (en) | Data compression for a neural network | |
US20200210516A1 (en) | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions | |
CN103777923B (zh) | Dma向量缓冲区 | |
US20200285892A1 (en) | Structured Weight Based Sparsity In An Artificial Neural Network | |
CN108268283A (zh) | 用于利用约简操作来支持数据并行循环的计算引擎架构 | |
TW299421B (zh) | ||
US20200279133A1 (en) | Structured Sparsity Guided Training In An Artificial Neural Network | |
JP2001506781A (ja) | ビデオフレームレンダリングエンジン | |
US10684824B2 (en) | Stochastic rounding of numerical values | |
US10916252B2 (en) | Accelerated data transfer for latency reduction and real-time processing | |
EP3974966A1 (en) | Large scale matrix restructuring and matrix-scalar operations | |
EP3623940A2 (en) | Systems and methods for performing horizontal tile operations | |
CN113254073B (zh) | 数据处理方法及装置 | |
CN101751356B (zh) | 用于改进直接存储器存取传送效率的方法、系统和装置 | |
EP3743821A1 (en) | Wide key hash table for a graphics processing unit | |
EP3758288A1 (en) | Digital signature verification engine for reconfigurable circuit devices | |
CN115039076A (zh) | 无障碍和无围栏共享存储器同步 | |
US20230081763A1 (en) | Conditional modular subtraction instruction |
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: 20120822 |