在非对称异构多处理器环境中提供原子更新原语的方法技术

技术编号:2866337 阅读:192 留言:0更新日期:2012-04-11 18:40
本发明专利技术为具有带DMA的共享存储器的非同步异构单芯片多处理器计算机系统提供原子更新原语。根据包括带保留取锁行命令、条件放锁行命令和无条件放锁行命令的集合产生至少一个锁行命令。

【技术实现步骤摘要】

本专利技术一般涉及存储器的原子更新(ATOMIC UPDATE),特别涉及通过相连的处理器单元使用直接存储器存取命令执行的原子更新。
技术介绍
在常规对称多处理器系统中,即由多个主处理器单元(MPU)组成的多处理器系统中,MPU可以使用加载/存储指令对公共共享存储器进行直接存取。为了对在多个MPU执行的程序所共享的存储器进行同步和存取控制,除了这些加载/存储指令外,还经常会提供“原子”读/改/写的能力。“原子”命令通常可以定义为这样的命令对于可能存取该数据区的其它单元而言,允许对存储器中数据的读、改、写序列象是一个单个操作。传统上利用硬件序列实现该命令,该序列或者在整个操作序列完成之前封锁其它单元对该存储区域的存取,或者使用一种更原始的保留加载和条件存储技术。一般地说,这样做是为了保证在存储区域被访问该存储器区域的另一MPU或I/O单元读或写之前,该存储器区域是完全更新和一致的,即对该存储器区域“完成”原子命令或更新序列。原子命令常常具有特别指令的形式,例如“比较和交换”、“测试和设置”、“获取和空操作”、“获取和存储”等。还有一种技术是在能够在软件中实现原子操作序列的MPU中,提供一对更基础的“加载和保留”及“条件存储”指令。在同构MPU组成的对称多处理器系统中,这些技术可以工作得很好。在非对称异构多处理器系统中,以常规的共享存储器方式安排MPU。专用处理器,APU,有其自己的专门指令和数据存储器,其通过DMA引擎启动块移动操作来实现对共享存储器的间接存取。对于作为对等方的多个MPU和使用DMA引擎存取共享存储器的APU,需要把原子更新机制扩充到DMA引擎。这通常是因为要提供一种机制来协调对共享存储器中数据的存取。在存在没有这种技术的多个APU的环境中,通过利用MPU的主/从方案(其中通过针对DMA引擎的命令每次一个地为每个APU分配工作),由于APU的空闲时间和MPU用于给各个APU分配工作的时间,导致系统在利用率和效率上都很差。因此,需要一种DMA引擎,其可被APU用来在APU本地存储器和共享系统存储器之间拷贝数据,同时作为其它MPU和APU/DMA引擎的对等方参与共享存储器的原子更新。
技术实现思路
本专利技术为具有带DMA的共享存储器的非同步异构单芯片多处理器计算机系统提供原子更新原语。根据包括带保留取锁行命令(GETLOCK LINE COMMAND WITH RESERVATION)、条件放锁行命令(PUT LOCK LINE CONDITIONAL COMMAND)和无条件放锁行命令(PUT LOCK LINE UNCONDITIONAL COMMAND)的集合产生至少一个锁行命令。附图说明为了对本专利技术有一个更完整的理解并明了其优点,参照附图以配合后面的详细说明,其中附图1示意性地描述了一个系统结构,具有连接至系统存储器的多条总线、DMA引擎、原子装置和本地存储器;附图2说明了针对高速缓存和本地存储器使用DMA带保留取锁行命令和条件放锁行命令的方法;附图3说明了使用DMA无条件放锁行命令的方法。具体实施例方式在下面的讨论中,给出了许多具体细节以提供对本专利技术的透彻理解。然而,本领域的技术人员会认识到,在没有这些具体细节的情况下也可以实施本专利技术。在其它情况下,一些公知的部分以示意图或方框图的形式加以说明,为的是不因不必要的细节而模糊本专利技术。此外,尽可能地忽略了诸如涉及网络通信、电磁信号技术之类的细节,因为这样的细节不是完整理解本专利技术所必须的,而且认为这些内容是在本领域普通技术人员知识范围之内。在本说明的其余部分,处理单元(PU)可以是一个设备中仅有的计算处理器。此时,该PU通常被称为MPU(主处理单元)。处理单元也可以是许多处理单元中的一个,它们按照为特定计算设备开发的方法或算法分担计算负载。在本说明的其余部分,凡指处理器时都使用术语MPU,不管MPU是否设备中仅有的计算件件,也不管MPU是否正与其它MPU共享计算元件。还要注意到,除非特别指明,这里所说明的所有功能既可用硬件也可用软件执行,还可通过二者的结合来执行。然而在优选实施例中,除非另有说明,例如计算机或电子数据处理器这样的处理器按照代码,例如计算机程序代码、软件和/或为执行这些功能而编码的集成电路来执行这些功能。转向附图1,其中示出了系统100,系统100允许APU 110更自治地作为对等方加入多处理器环境。这一点是利用APU 110实现的,它利用DMA引擎115的块模式对系统存储器170进行间接存取。一般来说,在系统100中,APU 110通过使用“加载和保留”(GETLLAR)锁行命令和“条件存储”(PUTLLC)或“无条件存储”(PUTLLU)锁行命令存取和锁定共享存储器170的保留区组(GRANULE),来使用原子读/改/写序列。系统100包括连接到总线接口控制器(BIC)150的一个或多个MPU复合体193,以及连接到BIC 150的一个或多个APU复合体192。BIC 150连接到存储器控制器160,后者又连接到系统/共享存储器170。至少一个APU/DMA复合体192和具有一个或多个MPU 180的至少有一个MPU单元复合体193包括系统的计算能力。APU复合体192包括连接到本地存储器105的APU 110。APU110通过一条控制总线连接到DMA队列120。DMA队列120连接到DMA引擎。DMA引擎115连接到原子装置130。原子装置130包括一个保留站(RS)135和一个原子高速缓存137。原子高速缓存137可以是一个二级(L2)高速缓存。原子装置130通过控制总线和窥探总线连接到BIC 150。MPU复合体193包括一个或多个与L2高速缓存187相连的MPU 180,而高速缓存187又与BIC 150相连。BIC 150连接到存储器控制器160,后者又连接到系统/共享存储器170。在进一步的实施例中,在系统100中使用多个APU复合体192,但是没有使用MPU复合体193,以利用DMA命令支持APU 110之间的原子更新序列。可选地,利用DMA命令支持原子更新序列的其它单元也在本专利技术的范围之内。一般说来,出于同步这样的原因,APU 110通过GETLLAR、PUTLLC和PUTLLU锁行DMA命令来使用原子操作。DMA命令是应APU 110的请求在经过DMA队列120的适当排序之后由DMA引擎115发出的。典型地,锁行DMA命令被推向DMA队列120的前端以立即执行,因为获得和释放锁一般都是与在APU 110中的程序执行相同步的。典型地,通过发出DMA命令GETLLAR来设置RS 135。在DMA引擎115执行命令时,系统存储器170中被选存储器地址的数据被传递到本地存储器105以供处理。典型地,该数据传送可以是一个高速缓存行(CACHE LINE),128字节。有时候可以在原子高速缓存137中发现该数据(如果原来发出的GETLLAR被用于存取该数据)。但是,如果在原子高速缓存137没有发现该数据,就向BIC 150发出对该数据的请求,并且从系统存储器170或者与另一个所连接单元(分别为MPU或APU)相关的高速缓存取得的数据被拷贝到本地存储器,也拷贝到原子高速缓存137。此外,在GETLLAR命令期本文档来自技高网
...

【技术保护点】
一种用于提供原子更新原语的方法,其在具有配备DMA的共享存储器的非对称单芯片异构多处理器计算机系统中使用,包括:    通过该系统产生至少一个锁行命令,该命令选自包括带保留取锁行命令、条件放锁行命令和无条件放锁行命令的集合。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:迈克尔N戴查尔斯R约翰斯詹姆斯A卡勒刘培军张光赏
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1