CN101052954A - 不对称型异构多处理器环境中的存储器屏障原语 - Google Patents
不对称型异构多处理器环境中的存储器屏障原语 Download PDFInfo
- Publication number
- CN101052954A CN101052954A CNA2005800240466A CN200580024046A CN101052954A CN 101052954 A CN101052954 A CN 101052954A CN A2005800240466 A CNA2005800240466 A CN A2005800240466A CN 200580024046 A CN200580024046 A CN 200580024046A CN 101052954 A CN101052954 A CN 101052954A
- Authority
- CN
- China
- Prior art keywords
- memory
- order
- barrier
- command
- dma
- 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
- 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/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Cosmetics (AREA)
- Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
Abstract
本发明提供了一种用于在直接存储器存取(DMA)设备中创建存储器屏障的方法和装置。接收存储器屏障命令,并且接收存储器命令。根据该存储器屏障命令来执行存储器命令。根据该存储器屏障命令开始总线操作。根据该总线操作来接收总线操作确认。根据该总线操作确认来执行存储器屏障命令。在一个特定的方面中,存储器屏障命令是直接存储器存取同步(dmasync)命令和直接存储器存取强制按序执行输入/输出(dmaeieio)命令。
Description
技术领域
本发明通常涉及直接存储器存取(DMA)控制,并且尤其是涉及利用DMA机制来提供不对称型异构多处理器环境中的存储器屏障原语(memory barrier primitives)。
背景技术
在传统的多处理器(MP)系统中,多个处理器可对公共共享存储器进行存取。为了提高这些系统的性能,用于对存储存取进行排序的存储模型具有弱一致性。弱一致性是指处理器执行存取的顺序、在处理器总线上执行这些存取的顺序、对另一处理器或机构执行存取的顺序、以及在存储设备中执行这些存取的顺序均是不同的。
弱一致性存储模型将负责确保对在两个或更多个处理器和/或机构当中共享的存储设备的存取的排序的职责设置在软件程序上。在传统的对称型多处理器(SMP)中,提供了若干手段以便允许软件程序强制对共享存储器的存储存取进行排序。例如,在PowerPC上,提供了诸如“SYNC”(有时也称为“重量级SYNC”)、“轻量级SYNC”、以及“EIEIO”(Enforce In-order Execution of I/O,强制按序执行I/O)这样的多个存储器屏障指令。通常,SYNC指令创建存储器屏障。也就是说,在给定处理器上,在执行SYNC指令之后的任何指令之前,就所有其他处理器和机构而言,必须完成对程序序列中的SYNC指令之前的指令的任何加载或存储。
除了在位于轻量级SYNC之前的指令所引起的存储之前可执行由位于轻量级SYNC之后的指令所引起的加载之外,轻量级SYNC创建用于提供与SYNC指令相同排序功能的存储器屏障,并且该排序不适用于对I/O存储器(存储器映射的I/O)的存取。除了排序可适用于对I/O存储器的存取之外,EIEIO指令创建用于提供与SYNC指令相同排序功能的存储器屏障。EIEIO还可对存储进行排序。
在传统的MP系统中,存储器屏障指令的执行局限于紧密耦合的处理器,该紧密耦合的处理器向控制处理器(例如处理单元(PU))施加了额外工作负荷以便对异构MP系统之内的其他非对称型处理器和/或设备进行管理。在有些情况下,该局限性还限制了非对称型处理器对系统资源进行管理的能力,这是因为存储器排序没有受到控制。
因此,需要一种用于提供存储器屏障指令的、可以解决至少某些与传统系统和方法有关的问题及缺点的方法和/或系统。
发明内容
本发明提供了一种用于在直接存储器存取(DMA)设备中创建存储器屏障的方法。接收存储器屏障命令,并且接收存储器命令。根据存储器屏障命令执行存储器命令。根据存储器屏障命令开始总线操作。根据总线操作接收总线操作确认。根据总线操作确认执行存储器屏障命令。
附图说明
为了更彻底地了解本发明以及其优点,现在参考结合附图所进行的以下描述,在附图中:
图1给出了具有DMA控制器的系统的方框图;
图2给出了多处理器(MP)系统的方框图;
图3给出了直接存储器存取同步(dmasync)命令的操作的流程图;以及
图4给出了直接存储器存取强制按序执行输入/输出(dmaeieio)命令的操作的流程图。
具体实施方式
在下面的讨论中,对许多具体的细节进行了阐述以提供对本发明的彻底了解。然而,对于本领域普通技术人员来说,无需这种具体细节也可实施本发明。在其他情况下,为了不因为不必要的详述而模糊了本发明,已经依照示意图或方框图的形式对众所周知的元件进行了说明。此外,在很大程度上,已经省去了与网络通信、电磁信号传送技术等有关的细节,这是因为,这种细节不被认为是获得对本发明的彻底了解所必需的,而且这种细节被认为是在相关领域普通技术人员的知识范畴之内。
此外,应该注意的是,除非另有说明,否则在这里所描述的所有功能均可以用硬件或软件或者其某些组合来实现。然而,在优选实施例中,这些功能是通过诸如计算机或电子数据处理器这样的处理器根据诸如计算机程序代码这样的代码、软件、和/或被编码用以执行这种功能的集成电路来执行的,除非另有说明的除外。
参考附图中的图1,参考数字100总体上表示具有DMA控制器的系统。系统100包括DMA控制器110、处理单元(PU)130、本地存储器132、存储器120、以及多处理器(MP)相关总线190。DMA控制器110进一步包括DMA命令队列140、标记队列150、展开及转换逻辑160、输出数据缓冲器170、以及输入数据缓冲器180。
在具有DMA控制器110的系统100中,发布并执行命令。具有本地存储器132的PU 130向DMA命令队列140发布命令。PU 130是包括有例如主PU(Main PU,MPU)、协同PU(Synergistic PU,SPU)、或者任何其他合适的处理器这样的任何类型的处理器。本地存储器132可以是包括有但并不局限于高速缓存这样的各种存储器类型。对发送到DMA命令队列140的命令进行标记,并且在标记队列150中对相应命令的标记进行跟踪。该标记是命令独用的,或者该标记对于某个命令组而言是特定的,由此创建标记组。将写命令和读命令从DMA命令队列140发布到各个部件(未示出)。通过输出数据缓冲器170和输入数据缓冲器180进行数据传送。诸如例如解码这样的许多其他步骤可以并入到命令的执行过程中。
在传统的系统中,在严格的排序方案下按照到达顺序来执行诸如DMA命令队列140这样的DMA命令队列中的命令。然而,将DMA控制器110配置成使用弱排序(或弱一致性)方案以允许按照各种顺序来执行DMA命令队列140中的命令。尤其是,将DMA控制器110配置成使用一系列嵌入标志。该嵌入标志对于每个命令而言起相关性的作用,并且有助于顺序执行命令。还采用了嵌入标志以确保在低优先级命令之前执行高优先级命令。
尤其是,存在可嵌入到命令中的两个标志,即“屏障(barrier)”和“栅栏(fence)”。这两个标志仅影响相同标记组中的命令。通常,嵌入式栅栏标志将会允许直到位于相同标记组之内的且在具有该嵌入式栅栏标志的命令之前发布的所有命令竞争时才执行该命令。也就是说,该栅栏标志要求在执行具有该栅栏标志的命令之前、完成位于相同标记组之内的且在具有嵌入式栅栏的命令之前所发布的所有命令。该栅栏标志不影响队列中的后续命令。因此,可以在具有嵌入式栅栏标志的命令之前执行在具有该嵌入式栅栏标志的命令之后所发布的命令。
屏障标志影响相同标记组之内的所有在先及后续命令。通常,屏障标志不会允许在执行在具有屏障标志的命令之前所发布的相同标记组中的每个命令之前、执行具有屏障标志的命令或相同标记组之内的任何后续命令。例如,不能在具有屏障标志的命令之前执行位于相同标记组之内的且在具有屏障标志的命令之后所发布的命令。典型地,当完成了在具有屏障标志的命令之前所发布的位于相同标记组之内的所有命令时,执行具有屏障标志的命令以及位于相同标记组之内的后续命令。
还将PU 130配置成发布屏障命令以代替嵌入式栅栏或屏障标志。屏障命令对队列中的所有命令进行操作,而不考虑标记组。屏障命令防止在完成所有先前发布的命令之前执行所有后续命令。因此,在屏障命令之前发布的所有命令在执行队列中的任何后续命令之前完成。典型地,当完成了在屏障命令之前所发布的所有命令时,执行后续命令。
还将DMA控制器110配置成接收并执行存储器屏障命令。就该系统之内的一个或多个其他处理器和/或设备而言,存储器屏障命令在对MP相关总线上的存储器事务进行排序方面提供了控制。在所说明的实施例中,将DMA控制器110配置成接收直接存储器存取SYNC(dmasync)和直接存储器存取EIEIO(dmaeieio)命令。本领域普通技术人员应该明白的是,可将DMA控制器110配置成接收包括有例如直接存储器存取轻量级SYNC(dmalwsync)命令的其他直接存储器存取存储器屏障命令。
通常,dmasync命令提供了这样的一种机制,就系统之内的所有处理器和/或机构而言,该机制可确保完成在前的DMA命令的效果。通常,dmaeieio命令提供了用于对针对系统之内的所有处理器和/或机构的总线操作进行排序的机制。Dmasync命令还提供了用于对总线操作进行排序的机制,但是通常是以相对于dmaeieio命令而言降低了的性能率来提供的。典型地,将dmasync和dmaeieio命令配置成利用命令屏障进行操作。在所说明的实施例中,dmasync和dmaeieio命令包括隐含的标记特定屏障。本领域普通技术人员应该明白的是,可将DMA控制器110配置成接收包括有例如具有隐含栅栏的dmasync命令或者具有隐含栅栏的dmaeieio命令这样的其他形式的其他直接存储器存取存储器屏障命令。
更加特别的是,dmasync命令提供了用于软件程序的机制,以便确保对系统中的另一处理器执行所有先前发布的DMA存储器写入。当需要强排序时采用dmasync命令,并且该dmasync命令象众所周知的PowerPCSYNC指令对于处理器加载和存储那样对于DMA存取提供了相同的排序。尤其是,为了进行排序,将DMA Get命令创建的存取认为是加载,并且将DMA Put命令所创建的存取认为是存储。为了确保执行所有先前发布的DMA Put命令(即存储器写入),使屏障命令位于dmasync命令之前。在该说明的实施例中,对dmasync命令进行标记,并且其包括隐含的标记特定屏障。在替换实施例中,屏障命令位于dmasync命令之前。在另一替换实施例中,栅栏命令位于dmasync命令之前。
dmaeieio命令提供了用于软件程序的机制,以便对针对未被标记为要求直写(Write-Through Required)或者禁止高速缓存(CachingInhibited)的相关存储设备进行的DMA存储器写入进行排序。dmaeieio命令还提供了用于软件程序的机制,以便对针对既是禁止高速缓存又是受保护(Guarded)的存储设备进行的DMA存储器读写、以及针对被标记为要求直写的存储器的存储进行排序。当仅是对所声明的特定类型的存取要求排序时,采用dmaeieio命令。dmaeieio命令象众所周知的PowerPCEIEIO指令对于处理器加载和存储那样对于DMA存取提供了相同的排序。尤其是,为了进行排序,将DMAGet命令创建的存取认为是加载,并且将DMA Put命令所创建的存取认为是存储。为了保证执行所有先前发布的DMA命令,使屏障命令位于dmaeieio命令之前。在该说明的实施例中,对dmaeieio命令进行标记,并且其包括隐含的标记特定屏障。在替换实施例中,使屏障命令位于dmaeieio命令之前。在另一替换实施例中,使栅栏命令位于dmaeieio命令之前。
DMA控制器100通过展开及转换逻辑160将DMA命令(以及其相关联参数)所描述的DMA操作展开为一个或多个较小的总线事务,直至满足整个传送长度为止。在弱一致性存储器模型之内,系统之内的MP相关总线190以及任何其他处理器可以对展开及转换逻辑160所创建的、包括有来自其他命令的较小总线事务这样的较小总线事务进行无序处理。此外,为了提高性能,可按照与提供给DMA命令队列140的顺序不同的顺序来完成DMA命令。在所有情况下,所有DMA命令在软件看来像是按照与提供给DMA命令队列140的顺序相同的顺序开始的。
为了使DMA系统100进行操作,存在一系列必需的连接。PU 130通过第一通信信道(未示出)与本地存储器132相耦合。PU 130通过第二通信信道101与DMA命令队列140相耦合。本地存储器132通过第三通信信道112与存储器120相耦合。存储器120通过第四通信信道102与输出数据缓冲器170相耦合。存储器120通过第五通信信道103与输入数据缓冲器108相耦合。DMA命令队列140通过第六通信信道104并且通过第七通信信道105与展开及转换逻辑160相耦合。标记队列150通过第八通信信道106与展开及转换逻辑160相耦合。输出数据缓冲器170通过第九通信信道107与MP相关总线190相耦合。输入数据缓冲器180通过第十通信信道108与MP相关总线190相连。展开及转换逻辑160通过第十一通信信道109与MP相关总线190相耦合。
参考附图中的图2,参考数字200总体上表示MP系统。MP系统200包括共享存储器210、本地存储器212、第一PU 220、第一高速缓存222、第一DMA控制器224、第二DMA控制器226、第二PU228、以及第二高速缓存230。在所说明的实施例中,第一高速缓存222和第二高速缓存230是系统高速缓存,是众所周知的,并且作为其相应处理器的外部存储器接口进行操作。
MP系统200的多个处理器独立地或相结合地进行操作以读取来自各种存储器设备的数据和/或写入数据。将第一PU 220配置成向第一DMA控制器224发布读、写、dmasync、以及dmaeieio命令。将第二PU 228配置成向第二DMA控制器226发布读、写、dmasync、以及dmaeieio命令。将第一DMA控制器224和第二DMA控制器226配置成读取来自本地存储器212和共享存储器210的数据并写入数据。在所说明的实施例中,每个DMA控制器具有单个PU。
在操作过程中,第一DMA控制器224接收来自第一PU 220的用于使数据在共享存储器210与本地存储器212之间移动的命令。类似地,第二DMA控制器226接收来自第二PU 228的用于使数据在共享存储器210与本地存储器212之间移动的命令。因为从PU的角度来看总是参考DMA命令的数据传送方向,因此用于将数据从共享存储器210传送到本地存储器212的命令被认为是GET命令,而用于将数据从本地存储器212传送到共享存储器210的命令被认为是PUT命令。随DMA命令提供的参数提供了与数据传送有关的诸如例如数据传送大小、标记、以及寻址信息这样的附加信息。
当第一DMA控制器224遇到dmasync命令时,第一DMA控制器224完成具有与dmasync命令相同标记的且在dmasync命令之前提供给DMA命令队列的所有命令。具体地说,必须将具有与dmasync命令相同标记的所有PUT命令的写入数据传送到多处理器相关总线,并且使其经过可引起重试事件的协议中的任何点。具有与dmasync命令相同标记的所有GET命令的读取数据在本地存储器212中必须是可见的。
一旦完成了具有与dmasync相同标记的所有在先命令,DMA控制器224就开始同步(sync)总线事务。同步总线事务用作系统之内的其他处理器和/或机构的屏障点。其他处理器和/或机构必须在确认同步总线事务之前完成由发布dmasync的处理器所执行的所有操作。DMA控制器224可在系统之内的所有处理器和/或机构确认了同步总线事务之后仅完成dmasync命令。因此,dmasync命令确保了完成具有与dmasync相同标记的所有DMA命令的结果,并且该结果对于系统之内的所有处理器和/或机构而言是可见的。第二DMA控制器226按照与第一DMA控制器224相同的方式对dmasync命令进行处理。
当第一DMA控制器224遇到dmaeieio命令时,第一DMA控制器224完成具有与dmaeieio命令相同标记的且在dmaeieio命令之前提供给DMA命令队列的所有命令。具体地说,必须将具有与dmaeieio命令相同标记的所有PUT命令的写入数据传送到多处理器相关总线,并且使其经过可引起重试事件的协议中的任何点。具有与dmaeieio命令相同标记的所有GET命令的读取数据在本地存储器212中必须是可见的。
一旦完成了具有与dmaeieio相同标记的所有在先命令,DMA控制器224就开始eieio总线事务。eieio总线事务用作系统之内的其他处理器和/或机构的屏障点,以便对特定类型的存取进行排序,也就是说,对针对未被标记为要求直写或者禁止高速缓存的相关存储设备进行的DMA存储器写入、以及针对既是禁止高速缓存又是受保护的存储设备进行的DMA存储器读写进行排序。其他处理器和/或机构等待确认eieio总线事务以便确保对所有先前的总线事务进行了排序。DMA控制器224可在系统之内的所有处理器和/或机构确认了eieio总线事务之后仅完成dmaeieio命令。因此,dmaeieio命令通过强制排序而不是DMA操作的可见性,提高了系统性能。第二DMA控制器226按照与第一DMA控制器224相同的方式对dmaeieio命令进行处理。
dmasync和dmaeieio命令允许不对称型处理器和/或设备参与到传统MP系统的弱一致性存储器模型中,从而提高了其性能。此外,dmasync和dmaeieio命令允许PU承担用于确保对针对存储设备的存取进行排序这样的职责,从而将该职责从控制处理器中移除,并且允许PU按照与控制处理器相似的方式来对任何资源进行控制而无需控制处理器的支持或仅需要较少的支持。另外,减轻了控制处理器用于确保对针对存储设备的存取进行排序这样的职责,可显著地提高控制处理器和DMA控制器的利用率和性能,并且有助于防止控制处理器因多个不对称的单元而超负荷。
因此,dmasync和dmaeieio命令可将传统MP系统的弱排序的存储模型概念扩展到利用通过使用DMA机制对共享存储设备进行存取的处理器和/或设备的不对称型异构多处理器环境。此外,在其他不对称型设备以及具有本地或专用存储器的传统对称型MP系统中,可以采用dmasync和dmaeieio命令。还可在用于将数据从系统存储器中的一个位置移动到系统存储器中的另一位置的DMA控制器中采用dmasync和dmaeieio命令。
为了使MP系统200进行操作,存在一系列必要的连接。PU 220通过第十二通信信道(未示出)与第一高速缓存222相耦合。PU 220通过第十三通信信道242与第一DMA控制器224相耦合。第一高速缓存222通过第十四通信信道240与共享存储器210相耦合。第一DMA控制器224通过第十五通信信道244与共享存储器210相耦合。第一DMA控制器224还通过第十六通信信道248与本地存储器212相耦合。第二PU 228通过第十七通信信道(未示出)与第二高速缓存230相耦合。第二高速缓存230通过第十八通信信道254与本地存储器212相耦合。第二PU 228还通过第十九通信信道252与第二DMA控制器226相耦合。第二DMA控制器226通过第二十通信信道250与本地存储器212相耦合。第二DMA控制器226还通过第二十一通信信道246与共享存储器210相耦合。
参考附图中的图3,参考数字300总体上表示用于描述dmasync命令的操作的流程图。处理从步骤301开始,其中,DMA控制器接收标记了的dmasync命令。例如,由图1中的用于从图1的PU 130接收标记了的dmasync命令的DMA控制器110来执行步骤301。为了说明性的目的,由图1的DMA控制器110来执行图3中所执行的所有步骤。应该明白的是,还可由图2的第一DMA控制器224和/或第二DMA控制器226来执行图3中所执行的这些步骤。
接下来,在判断步骤305,DMA控制器在DMA命令队列中搜索在步骤301中接收到的标记了的dmasync命令之前接收到的并且具有与该命令相同标记的DMA命令。如果存在在先的具有相同标记的DMA命令,那么处理沿着YES(是)分支继续到步骤310。在步骤310,DMA控制器执行在先的具有相同标记的DMA命令,并且处理返回到步骤305。如果不存在在先的具有相同标记的DMA命令,那么处理沿着NO(否)分支继续到步骤315。
在步骤315,DMA控制器发布同步总线事务。接下来,在判断步骤320,DMA控制器确定系统之内的任何处理器或设备是否已确认了同步总线事务。如果没有接收到任何同步总线事务确认,那么处理沿着NO(否)分支继续到步骤325。在步骤325,DMA控制器进行等待。在一个实施例中,DMA控制器通过使操作暂停诸如例如0.5微秒这样的预定时段而进行等待。在另一实施例中,DMA控制器通过执行不包括与标记了的dmasync命令相同标记的DMA命令来进行等待。此后处理返回到判断步骤320。
如果在判断步骤320已接收到同步总线事务确认,那么处理沿着YES(是)分支继续到判断步骤330。在判断步骤330,DMA控制器确定系统之内的所有处理器和/或设备是否已确认了同步总线事务。如果不是系统之内的所有处理器和/或设备都确认了同步总线事务,那么处理沿着NO(否)分支继续到步骤325。
如果在判断步骤325中系统之内的所有处理器和/或设备都已确认了同步总线事务,那么处理沿着YES(是)分支继续到步骤335。在步骤335,DMA控制器完成dmasync命令并且该处理结束。现在可以执行继dmasync之后的命令。
参考附图中的图4,参考数字400总体上表示用于对dmaeieio命令的操作进行描述的流程图。处理从步骤401开始,其中,DMA控制器接收标记了的dmaeieio命令。例如,由图1中的用于从图1中的PU 130接收标记了的dmaeieio命令的DMA控制器110来执行步骤401。为了说明性的目的,由图1中的DMA控制器110执行图4中所执行的所有步骤。应该明白的是,还可由图2中的第一DMA控制器224和/或第二DMA控制器226来执行图4中所执行的这些步骤。
接下来,在判断步骤405,DMA控制器在DMA命令队列中搜索在步骤401中所接收到的标记了的dmaeieio命令之前接收到的、并且具有与该命令相同标记的DMA命令。如果存在在先的具有相同标记的DMA命令,那么处理沿着YES(是)分支继续到步骤410。在步骤410,DMA控制器执行在先的具有相同标记的DMA命令,并且处理返回到步骤405。如果不存在在先的具有相同标记的DMA命令,那么处理沿着NO(否)分支继续到步骤415。
在步骤415,DMA控制器发布eieio总线事务。接下来,在判断步骤420,DMA控制器确定系统之内的任何处理器或设备是否已确认了eieio总线事务。如果没有接收到任何eieio总线事务确认,那么处理沿着NO(否)分支继续到步骤425。在步骤425,DMA控制器进行等待。在一个实施例中,DMA控制器通过使操作暂停诸如例如0.5微秒这样的预定时段而进行等待。在另一实施例中,DMA控制器通过执行不包括与标记了的dmaeieio命令相同标记的DMA命令来进行等待。此后处理返回到判断步骤420。
如果在判断步骤420已接收到eieio总线事务确认,那么处理沿着YES(是)分支继续到判断步骤430。在判断步骤430,DMA控制器确定系统之内的所有处理器和/或设备是否都已确认了eieio总线事务。如果不是系统之内的所有处理器和/或设备都确认了eieio总线事务,那么处理沿着NO(否)分支继续到步骤425。
如果在判断步骤425中系统之内的所有处理器和/或设备都已确认了eieio总线事务,那么处理沿着YES(是)分支继续到步骤435。在步骤435,DMA控制器完成dmaeieio命令,并且该处理结束。
虽然在这里仅对两个特定的存储器屏障命令(dmasync和dmaeieio)进行了描述,但是对于本领域普通技术人员来说应该明白的是,还可定义其他存储器屏障命令或者不同的存储器屏障命令形式。例如,可将DMA控制器配置成接收直接存储器存取轻量级SYNC(dmalwsync)命令或具有隐含栅栏的dmaeieio命令。
此外,虽然在这里参考PowerPC体系结构对特定的存储器屏障命令进行了描述,但是对于本领域普通技术人员来说应该明白的是,可参考其他体系结构对其他存储器屏障命令进行描述。因此,可将DMA控制器配置成接收这样的存储器屏障命令,该存储器屏障命令用于提供与其他体系结构中的存储器屏障指令相同的DMA存取用于进行排序。
此外,虽然在不对称型异构MP环境中的弱排序的存储器模型中的操作中对特定的存储器屏障命令进行了描述,但是对于本领域普通技术人员来说应该明白的是,在其他类型的存储器模型中以及在对称型MP环境中也可以采用这些存储器屏障命令。
从上述描述中可进一步明白的是,在不脱离本发明的真正精神的情况下可对本发明的优选实施例做出各种修改和变化。该描述仅仅是说明性的,而不应当按照限制意义对其进行解释。本发明的范围仅仅受到所附权利要求的语言的限制。
Claims (26)
1、一种用于在直接存储器存取(DMA)设备中创建存储器屏障的方法,该方法包括:
接收存储器屏障命令;
接收存储器命令;
根据该存储器屏障命令来执行存储器命令;
根据该存储器屏障命令开始总线操作;
根据该总线操作来接收总线操作确认;以及
根据该总线操作确认来执行存储器屏障命令。
2、如权利要求1所述的方法,其中存储器屏障命令是dmasync命令。
3、如权利要求1所述的方法,其中存储器屏障命令是dmaeieio命令。
4、如权利要求1所述的方法,其中在存储器屏障命令之前执行存储器命令。
5、如权利要求1所述的方法,其中在存储器屏障命令之后执行存储器命令。
6、如权利要求1所述的方法,其中总线操作是同步总线事务。
7、如权利要求1所述的方法,其中总线操作是强制按序执行输入/输出(eieio)总线事务。
8、如权利要求1所述的方法,其中存储器屏障命令至少包括存储器命令屏障标记,并且存储器命令至少包括存储器命令标记。
9、如权利要求8所述的方法,其中根据存储器命令屏障标记和存储器命令标记来执行存储器命令。
10、一种用于在直接存储器存取(DMA)操作过程中创建存储器屏障的装置,该装置包括:
第一通信信道,被配置为接收存储器命令和存储器屏障命令;
展开逻辑,该展开逻辑与第一通信信道相耦合,并且被配置为根据存储器屏障命令而开始总线操作;
第二通信信道,该第二通信信道与展开逻辑相耦合,并且被配置为传送总线操作并且接收总线操作确认;以及
直接存储器存取(DMA)控制器,该直接存储器存取控制器与第一通信信道、第二通信信道以及展开逻辑相耦合,并且被配置为:
执行存储器命令;以及
根据总线操作确认来执行存储器屏障命令。
11、如权利要求10所述的装置,其中存储器屏障命令是dmasync命令。
12、如权利要求10所述的装置,其中存储器屏障命令是dmaeieio命令。
13、如权利要求10所述的装置,其中总线操作是同步总线事务。
14、如权利要求10所述的装置,其中总线操作是eieio总线事务。
15、如权利要求10所述的装置,其中存储器命令至少包括相关联的存储器命令标记,并且存储器屏障命令至少包括相关联的存储器屏障命令标记。
16、如权利要求15所述的装置,其中,DMA控制器被进一步配置为根据相关联的存储器命令标记和相关联的存储器屏障命令标记来执行存储器命令。
17、如权利要求10所述的装置,进一步包括与第一通信信道和展开逻辑相耦合的DMA命令队列,该DMA命令队列被配置为按顺序存储存储器命令和存储器屏障命令。
18、如权利要求10所述的装置,进一步包括多个数据缓冲器,其中多个数据缓冲器至少被配置为至少与一个存储器相耦合。
19、如权利要求18所述的装置,其中多个数据缓冲器至少被配置为与第二通信信道相耦合。
20、一种用于在直接存储器存取(DMA)设备中创建存储器屏障的计算机程序产品,该计算机程序产品具有其上包含有计算机程序的介质,该计算机程序包括:
用于接收存储器屏障命令的计算机程序代码;
用于接收存储器命令的计算机程序代码;
用于根据该存储器屏障命令来执行存储器命令的计算机程序代码;
用于根据该存储器屏障命令开始总线操作的计算机程序代码;
用于根据该总线操作来接收总线操作确认的计算机程序代码;以及
用于根据该总线操作确认来执行存储器屏障命令的计算机程序代码。
21、如权利要求20所述的计算机程序产品,其中存储器屏障命令是dmasync命令。
22、如权利要求20所述的计算机程序产品,其中存储器屏障命令是dmaeieio命令。
23、如权利要求20所述的计算机程序产品,其中总线操作是同步总线事务。
24、如权利要求20所述的计算机程序产品,其中总线操作是eieio总线事务。
25、如权利要求20所述的计算机程序产品,其中存储器屏障命令包括至少一个存储器命令屏障标记,并且存储器命令包括至少一个存储器命令标记。
26、如权利要求25所述的计算机程序产品,进一步包括:用于根据存储器屏障标记和存储器命令标记来执行存储器命令的计算机程序代码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/902,474 | 2004-07-29 | ||
US10/902,474 US7725618B2 (en) | 2004-07-29 | 2004-07-29 | Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment |
PCT/IB2005/003974 WO2006040692A1 (en) | 2004-07-29 | 2005-07-18 | Memory barriers primitives in an asymmetric heterogeneous mutliprocessor environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101052954A true CN101052954A (zh) | 2007-10-10 |
CN101052954B CN101052954B (zh) | 2011-10-19 |
Family
ID=35733704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800240466A Active CN101052954B (zh) | 2004-07-29 | 2005-07-18 | 直接存储器存取操作过程中创建存储器屏障的方法和设备 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7725618B2 (zh) |
EP (1) | EP1782220B1 (zh) |
JP (1) | JP4678623B2 (zh) |
KR (1) | KR100866714B1 (zh) |
CN (1) | CN101052954B (zh) |
AT (1) | ATE403905T1 (zh) |
DE (1) | DE602005008747D1 (zh) |
TW (1) | TWI391826B (zh) |
WO (1) | WO2006040692A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102449611A (zh) * | 2009-05-26 | 2012-05-09 | 高通股份有限公司 | 用于在弱排序存储系统中发布存储器障碍命令的方法与设备 |
CN105453043A (zh) * | 2013-07-23 | 2016-03-30 | 高通股份有限公司 | 在不受i/o协议或目标设备支持时提供队列屏障 |
CN108139903A (zh) * | 2015-07-21 | 2018-06-08 | Macom连接解决有限公司 | 依dmb操作用加载/存储操作实施加载撷取/存储释放指令 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7200688B2 (en) | 2003-05-29 | 2007-04-03 | International Business Machines Corporation | System and method asynchronous DMA command completion notification by accessing register via attached processing unit to determine progress of DMA command |
US7243200B2 (en) | 2004-07-15 | 2007-07-10 | International Business Machines Corporation | Establishing command order in an out of order DMA command queue |
US7725618B2 (en) | 2004-07-29 | 2010-05-25 | International Business Machines Corporation | Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment |
DE102004046438B4 (de) * | 2004-09-24 | 2006-07-06 | Infineon Technologies Ag | Vorrichtung zum Steuern des Zugriffs von Verarbeitungseinrichtungen auf Speicher in einem eingebetteten System |
US9026744B2 (en) * | 2005-03-23 | 2015-05-05 | Qualcomm Incorporated | Enforcing strongly-ordered requests in a weakly-ordered processing |
US7716387B2 (en) * | 2005-07-14 | 2010-05-11 | Canon Kabushiki Kaisha | Memory control apparatus and method |
GB2433333B (en) * | 2005-12-13 | 2011-07-13 | Advanced Risc Mach Ltd | Distributed direct memory access provision within a data processing system |
JP4446968B2 (ja) * | 2006-02-22 | 2010-04-07 | シャープ株式会社 | データ処理装置 |
US7917676B2 (en) * | 2006-03-10 | 2011-03-29 | Qualcomm, Incorporated | Efficient execution of memory barrier bus commands with order constrained memory accesses |
US7454580B2 (en) * | 2006-04-25 | 2008-11-18 | International Business Machines Corporation | Data processing system, processor and method of data processing that reduce store queue entry utilization for synchronizing operations |
US7610458B2 (en) * | 2006-04-25 | 2009-10-27 | International Business Machines Corporation | Data processing system, processor and method of data processing that support memory access according to diverse memory models |
US7783817B2 (en) * | 2006-08-31 | 2010-08-24 | Qualcomm Incorporated | Method and apparatus for conditional broadcast of barrier operations |
US8015380B2 (en) * | 2008-02-01 | 2011-09-06 | International Business Machines Corporation | Launching multiple concurrent memory moves via a fully asynchronoous memory mover |
US8245004B2 (en) * | 2008-02-01 | 2012-08-14 | International Business Machines Corporation | Mechanisms for communicating with an asynchronous memory mover to perform AMM operations |
US8356151B2 (en) * | 2008-02-01 | 2013-01-15 | International Business Machines Corporation | Reporting of partially performed memory move |
US8327101B2 (en) * | 2008-02-01 | 2012-12-04 | International Business Machines Corporation | Cache management during asynchronous memory move operations |
US8275963B2 (en) * | 2008-02-01 | 2012-09-25 | International Business Machines Corporation | Asynchronous memory move across physical nodes with dual-sided communication |
US8095758B2 (en) * | 2008-02-01 | 2012-01-10 | International Business Machines Corporation | Fully asynchronous memory mover |
US7991981B2 (en) * | 2008-02-01 | 2011-08-02 | International Business Machines Corporation | Completion of asynchronous memory move in the presence of a barrier operation |
US7941627B2 (en) * | 2008-02-01 | 2011-05-10 | International Business Machines Corporation | Specialized memory move barrier operations |
JP5187038B2 (ja) * | 2008-07-15 | 2013-04-24 | セイコーエプソン株式会社 | マルチプロセッサシステム及びそれを搭載した流体吐出装置 |
GB2469299B (en) * | 2009-04-07 | 2011-02-16 | Imagination Tech Ltd | Ensuring consistency between a data cache and a main memory |
US8997103B2 (en) * | 2009-09-25 | 2015-03-31 | Nvidia Corporation | N-way memory barrier operation coalescing |
US8832403B2 (en) * | 2009-11-13 | 2014-09-09 | International Business Machines Corporation | Generation-based memory synchronization in a multiprocessor system with weakly consistent memory accesses |
WO2012036954A2 (en) * | 2010-09-15 | 2012-03-22 | Rambus Inc. | Scheduling amongst multiple processors |
KR101892357B1 (ko) * | 2016-10-11 | 2018-08-27 | 한국과학기술원 | 실리콘 반도체를 기반으로 하는 광 빔 포밍 네트워크 칩 |
KR102262209B1 (ko) * | 2018-02-09 | 2021-06-09 | 한양대학교 산학협력단 | 더미 입출력 요청을 이용한 배리어 명령 전달 방법 및 그 장치 |
US11803380B2 (en) * | 2019-10-29 | 2023-10-31 | Nvidia Corporation | High performance synchronization mechanisms for coordinating operations on a computer system |
DE102020127704A1 (de) | 2019-10-29 | 2021-04-29 | Nvidia Corporation | Techniken zum effizienten transferieren von daten an einem prozessor |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5911051A (en) * | 1996-03-29 | 1999-06-08 | Intel Corporation | High-throughput interconnect allowing bus transactions based on partial access requests |
TW320701B (zh) * | 1996-05-16 | 1997-11-21 | Resilience Corp | |
US5887134A (en) * | 1997-06-30 | 1999-03-23 | Sun Microsystems | System and method for preserving message order while employing both programmed I/O and DMA operations |
US6209073B1 (en) * | 1998-04-27 | 2001-03-27 | International Business Machines Corp. | System and method for interlocking barrier operations in load and store queues |
US6205494B1 (en) * | 1998-12-18 | 2001-03-20 | Western Digital Corporation | Controller with automatic generation of linked list of data transfer descriptors for sequential commands, with linked list being used for execution of sequential data transfers |
US6347349B1 (en) * | 1998-12-28 | 2002-02-12 | International Business Machines Corp. | System for determining whether a subsequent transaction may be allowed or must be allowed or must not be allowed to bypass a preceding transaction |
US6647468B1 (en) * | 1999-02-26 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment |
US6609192B1 (en) * | 2000-06-06 | 2003-08-19 | International Business Machines Corporation | System and method for asynchronously overlapping storage barrier operations with old and new storage operations |
US6738836B1 (en) * | 2000-08-31 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Scalable efficient I/O port protocol |
US6658520B1 (en) * | 2000-09-26 | 2003-12-02 | Intel Corporation | Method and system for keeping two independent busses coherent following a direct memory access |
US6947049B2 (en) * | 2001-06-01 | 2005-09-20 | Nvidia Corporation | Method and system for synchronizing updates of vertex data with a graphics processor that is fetching vertex data |
US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
US8301844B2 (en) * | 2004-01-13 | 2012-10-30 | Hewlett-Packard Development Company, L.P. | Consistency evaluation of program execution across at least one memory barrier |
US7725618B2 (en) | 2004-07-29 | 2010-05-25 | International Business Machines Corporation | Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment |
-
2004
- 2004-07-29 US US10/902,474 patent/US7725618B2/en not_active Expired - Fee Related
-
2005
- 2005-07-18 DE DE602005008747T patent/DE602005008747D1/de active Active
- 2005-07-18 EP EP05823124A patent/EP1782220B1/en active Active
- 2005-07-18 JP JP2007523179A patent/JP4678623B2/ja active Active
- 2005-07-18 AT AT05823124T patent/ATE403905T1/de not_active IP Right Cessation
- 2005-07-18 WO PCT/IB2005/003974 patent/WO2006040692A1/en active IP Right Grant
- 2005-07-18 CN CN2005800240466A patent/CN101052954B/zh active Active
- 2005-07-18 KR KR1020077001629A patent/KR100866714B1/ko not_active IP Right Cessation
- 2005-07-21 TW TW094124752A patent/TWI391826B/zh active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102449611A (zh) * | 2009-05-26 | 2012-05-09 | 高通股份有限公司 | 用于在弱排序存储系统中发布存储器障碍命令的方法与设备 |
CN102449611B (zh) * | 2009-05-26 | 2015-09-23 | 高通股份有限公司 | 用于在弱排序存储系统中发布存储器障碍命令的方法与设备 |
CN105453043A (zh) * | 2013-07-23 | 2016-03-30 | 高通股份有限公司 | 在不受i/o协议或目标设备支持时提供队列屏障 |
CN108139903A (zh) * | 2015-07-21 | 2018-06-08 | Macom连接解决有限公司 | 依dmb操作用加载/存储操作实施加载撷取/存储释放指令 |
CN108139903B (zh) * | 2015-07-21 | 2019-11-15 | 安培计算有限责任公司 | 依dmb操作用加载/存储操作实施加载撷取/存储释放指令 |
Also Published As
Publication number | Publication date |
---|---|
JP4678623B2 (ja) | 2011-04-27 |
DE602005008747D1 (de) | 2008-09-18 |
WO2006040692A1 (en) | 2006-04-20 |
KR20070038518A (ko) | 2007-04-10 |
EP1782220A1 (en) | 2007-05-09 |
US7725618B2 (en) | 2010-05-25 |
TWI391826B (zh) | 2013-04-01 |
KR100866714B1 (ko) | 2008-11-03 |
US20060026309A1 (en) | 2006-02-02 |
TW200617685A (en) | 2006-06-01 |
JP2008508586A (ja) | 2008-03-21 |
EP1782220B1 (en) | 2008-08-06 |
CN101052954B (zh) | 2011-10-19 |
ATE403905T1 (de) | 2008-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101052954A (zh) | 不对称型异构多处理器环境中的存储器屏障原语 | |
JP4553936B2 (ja) | アウト・オブ・オーダーのdmaコマンドキューにおけるコマンド順序の設定に関する技術 | |
CN1294484C (zh) | 利用重新调度的重放队列中断处理器中的重放依赖关系循环 | |
CN1165840C (zh) | 计算机处理器检验指令的方法和系统及相应计算机系统 | |
CN101059783B (zh) | 事务型存储器的虚拟化 | |
CN1226690C (zh) | 数据访问环系统及采用环形总线的方法 | |
CN1511280A (zh) | 在具有限制性存储器模型的系统中多存储缓冲器转发的系统和方法 | |
KR102683728B1 (ko) | 데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법 | |
CN1226700A (zh) | 高性能推测性未对齐加载操作 | |
CN106095604A (zh) | 一种多核处理器的核间通信方法及装置 | |
WO2007020740A1 (ja) | バッファ管理方法およびバッファ管理装置 | |
CN100341012C (zh) | 总线系统及其存取命令的执行调度方法 | |
CN1529256A (zh) | 基于双环形队列、非中断式pci通信方法 | |
CN117631974A (zh) | 跨越基于存储器的通信队列的多信道接口的存取请求重新排序 | |
US7725686B2 (en) | Systems and methods for processing buffer data retirement conditions | |
CN1838103A (zh) | 减少微处理器系统中的存储器等待时间的系统和方法 | |
CN115437691B (zh) | 一种针对risc-v矢量与浮点寄存器的物理寄存器堆分配装置 | |
US12008243B2 (en) | Reducing index update messages for memory-based communication queues | |
US6453375B1 (en) | Method and apparatus for obtaining coherent accesses with posted writes from multiple software drivers | |
CN1910562A (zh) | 经由流动id方法的dmac发布机制 | |
CN1441566A (zh) | 使用三步通信缓存的通信设备 | |
WO2024007745A1 (zh) | 数据写入方法、读取方法、装置、电子设备以及存储介质 | |
US20220107754A1 (en) | Apparatus and method for data packing and ordering | |
CN1220387C (zh) | 视频编解码器系统、数据处理方法、编解码控制方法 | |
CN117453127A (zh) | 一种id资源存储系统、分配方法、回收方法及装置 |
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 |