CN102103568B - 片上多核处理器系统的高速缓存一致性协议的实现方法 - Google Patents
片上多核处理器系统的高速缓存一致性协议的实现方法 Download PDFInfo
- Publication number
- CN102103568B CN102103568B CN201110032914A CN201110032914A CN102103568B CN 102103568 B CN102103568 B CN 102103568B CN 201110032914 A CN201110032914 A CN 201110032914A CN 201110032914 A CN201110032914 A CN 201110032914A CN 102103568 B CN102103568 B CN 102103568B
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- processor
- territory
- inefficacy
- 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.)
- Active
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明有关于一种片上多核处理器系统的高速缓存一致性协议的实现方法,包括:步骤一,将高速缓存划分为一级Cache、二级Cache,该一级Cache为处理器系统中的各处理器私有,该二级Cache为各处理器共享;步骤二,各处理器访问其私有的一级cache,访问失效时产生失效请求信息槽,并发送到所述请求信息环上,由所述请求信息环传递给其他处理器进行侦听;步骤三,数据提供者侦听到失效请求后产生数据信息槽,并发送到所述数据信息环上,由所述数据信息环传递给请求者,该请求者接收数据块,完成对应的访存操作。本发明有效提高系统的性能,降低功耗和带宽使用,避免饥饿、死锁和活锁情况的出现,提高系统的稳定性。
Description
技术领域
本发明涉及微处理器,尤其涉及片上多核处理器(Chip Multiprocessor,CMP)系统的高速缓存(Cache)一致性协议的实现方法。
背景技术
由于共享存储CMP系统中,可能出现同一数据的多个版本同时存在于内存和多个处理器的Cache中的情况,如果此时有多个处理器对该数据进行写操作,则可能出现数据不一致的情况,导致程序执行发生错误。Cache一致性协议是一种用于保证多处理器系统各处理器Cache中数据一致性的机制,是影响系统的正确性、性能、功耗和带宽的关键因素。协议可以由软件或者硬件方法来实现。本发明是一种硬件方法实现的Cache一致性协议,以下所述协议均指硬件实现的协议。
Cache一致性协议通过赋予Cache中数据块不同的状态,由数据块的状态来决定可以对该数据块进行的操作(读或写),协议规定在遇到不同的本地处理器操作或者协议消息的情况下数据块的状态转换关系和产生应答数据以及协议消息等相关动作,以达到保证写操作相对于所有的处理器以相同的顺序完成的写一致性条件,并且所写的新值能及时地传给其他使用该数据的处理器的写传递条件,从而保证多处理器系统的正确性。
根据对写操作产生的新值传递的时机不同,Cache一致性协议可以分为基于无效的协议和基于更新的协议两种。基于无效的协议是指当某个处理器发出写失效请求信号时,其他处理器需要将各自Cache中的对应数据块置为无效状态,当这些处理器再次访问该数据块时会发生Cache失效,并发出失效请求信号以得到新写入该数据块的值。基于更新的协议是指当某个处理器完成写操作时,将写入对应数据块的新值传给其他Cache中有该数据块的处理器,并对这些处理器Cache中对应数据块的值进行更新。基于无效的协议只有在处理器需要用到新写入的值时才产生数据的传递;而基于更新的协议在新值产生的同时就将数据传给拥有该数据的所有处理器,这些处理器在将来不一定会用到该数据,可能造成互连带宽的浪费。随着Cache数据块的增大,基于更新的协议会造成过多的带宽消耗。由于基于更新的协议实现写一致性条件的机制相对于基于无效的协议也更加复杂,因此大量的Cache一致性协议都采用了基于无效的值传递方式。本发明是一种采用基于无效的值传递方式的协议。以下所述协议均采用基于无效的值传递方式。
如图1所示,以一个简单的基于无效的MSI协议为例来说明上述的协议状态转换关系。图1中,实线箭头表示本处理器的访存操作引起的Cache块状态变化,虚线箭头表示其他处理器访存失效请求信号引起的状态变化。图1中的“/”前边是引起状态变化的原因,后边是状态变化时需要进行的操作,M(Modified)为已修改状态,表示本处理器拥有对该状态数据块的读和写权限。S(Shared)为共享状态,表示本处理器对该数据块拥有读权限。I(Invalid)为无效状态,表示本处理器Cache中不存在该数据块。写失效请求信号会将系统中所有其他处理器Cache中的数据置为I状态,使得系统中同一数据块的M态在同一时间仅能出现在某一个处理器的Cache中,同时该数据块在其他处理器Cache中的状态都为I,以保证写一致性和写传递条件。
协议在应用于总线等控制集中的互连结构时,对失效请求信号进行广播,各处理器对广播的信号进行侦听操作。这种各个处理器通过侦听方式来决定是否提供数据或者进行无效等操作的协议称为侦听协议。而协议在应用于分布式互连结构(如mesh、torus等)时,使用目录结构来记录各数据的所有者处理器,失效请求首先发送给目录,由目录来决定将该请求发送给对应的数据提供者处理器和是否发送无效请求给其他处理器。这种协议称为目录协议。
由于总线等控制集中的互连结构可以为所有处理器提供统一的失效信号顺序,时序简单,使得侦听协议的实现相对简单;而对失效信号的广播与侦听可以直接找到数据提供者,失效延时相对较低。但由于总线等控制集中的互连结构带宽有限,对失效信号的广播需要消耗大量带宽,侦听协议一般仅用于较小规模的系统,系统规模的可扩展性有限。
由于包交换互连结构控制功能分布,无法为失效信号提供统一的顺序,时序复杂,目录协议的实现相对复杂;对目录的访问使得失效延时增加;但目录的使用避免了对失效信号进行广播,节约了带宽,使得系统的规模可扩展。
基于环的侦听协议比侦听总线协议有更好的系统规模可扩展性,比目录协议更加简单,可以在不同程度上弥补这两种协议的不足之处。但由于环无法像总线一样给所有消息提供一个全序,环连接的多处理器系统可能出现访存失效冲突的情况。该情况是指,多个处理器同时发出对同一Cache块的失效请求,且其中至少有一个是写失效请求。为了保证数据的一致性,协议需要为冲突的访存失效请求定序。已有的基于环的侦听协议使用了一种重发和应答机制来处理冲突。该机制所使用的重发操作会使系统性能降低、功耗和带宽使用增加,甚至可能出现饥饿的情况。侦听协议本身也存在大量的不必要广播和侦听操作,这些操作会增加系统功耗。协议在应用于环连接的CMP结构时还存在可能的死锁和活锁情况。下面具体介绍该基于环的侦听协议及其存在的问题。
协议基于单向分槽环连接的多处理器系统,图2描述了该单向分槽环的结构。单向分槽环使用槽(slot)来传递信息,固定数量的槽同时在环上和处理器与环的接口中沿着单一的方向传递。环上的处理器节点只能在空的槽路过时使用它来发送信息。每个分槽环中槽的数量设置为处理器节点数量的两倍。所以在一个八处理器节点的系统中,分槽环上有16个槽同时传递。槽的具体格式由Cache一致性协议来决定。
图2中direction of slot transport指槽的传递方向,unidirectional slotted ring指单向分槽环,slot transport on the ring指正在环上传递的槽,interface ofprocessor and ring指处理器与环的接口,slot transport on the interface指正在接口中传递的槽。
图3引自文献″Cache Coherence on a Slotted Ring(L.A.B.a.M.Dubois,Proceedings of the International Conference on Parallel Processing,1991,pp.pages230-237.)″,是协议的状态转换图,其中WE表示M态,INV表示I态,RS表示S态。RP和WP是两个发出读或写请求后向RS和WE态转化过程中的暂态,当收到相应的应答确认信号后会转换为RS和WE态,而如果收到了应答否认信号,则会转换为INV态,并重新发出读或写请求。这两个状态不一定要在Cache中实现,仅用于说明该重发应答机制。该图中,R:read operation(读操作),W:write operation(写操作),Z:replacement(替换),(i):local cluster(本地群集),(j):remote cluster(远程群集),ack*:successful transport(成功传输),nack*:unsuccessful transport(失败传输)。
如图4所示,举例说明了该基于环的侦听协议的重发应答机制如何处理同时出现两个冲突的写失效请求的情况。图4中,(a)表示P9和P12同时发出写失效请求,而请求块的状态是S,在P3的一级Cache(L1)中有该块。该数据块所在的末级Cache模块或者内存模块称为该块的宿主(home),位于P6;(b)表示P12的请求先经过了P3和home(P6),将P3的L1中的该块无效掉,home将该块状态由S变成M,且向P12的请求提供应答确认信号,从home提供数据到环上;(c)P12得到应答确认信号,等待应答数据来完成写操作,而P9的请求经过home时,请求块已经处于M态,向P9的请求发出应答否认信号,P9收到应答否认信号,准备重发;(d)home对P12的应答数据来到P12,P12完成写操作,即data destination:P12write,其中,datadestination:P12是指数据要到达的目的请求者处理器为P12;write指目的请求者处理器P12会进行写操作,P9重新发出写失效请求。这样就通过先到达数据提供者的请求先应答的方式来给冲突请求排序,达到了解决冲突的目的。
从上述例子中可以看出,协议中的重发应答机制在遇到冲突失效请求时会引发大量的重发操作,这些重发又会引起许多不必要的侦听操作,从而降低系统性能,造成系统带宽和功耗的浪费。
协议中,在任意时刻对于每一个数据块的请求者来说只有一个数据提供者,可能是处于M态的某个处理器L1中的该数据块,或者是处于S态的home中的该数据块。只有数据提供者可以决定向哪个请求者提供应答确认信号和数据。提供者总是选择失效请求最早到达的请求者,然后向其他请求者发出应答否认信号。在一段时间内某个请求者的请求可能总是不能比其他的冲突请求者的请求先到达数据提供者,该请求者总是无法得到数据,从而出现饥饿的情况。
由于每个处理器在同一时间可以有多个已经发出的对不同地址数据块的失效请求,可能出现多个处理器之间互相等待,形成闭合的环形依赖关系的死锁请求。图5表示两个处理器之间发生死锁(dead lock)的情况。处理器F已经得到了M态的数据块X,同时也已经发出了对另一个数据块Y的写失效请求,但还没有得到该数据块。按照处理器F的程序顺序,对X的写操作必须等待对Y的写操作完成之后才能进行。与此同时,处理器E已经得到了数据块Y的M态,同时已经发出了对数据块X的写失效请求,但还没有得到X。而按照处理器E的程序顺序,对Y的写操作必须等待对X的写操作完成之后才能进行。如果在某个处理器对其L1中的M态数据块的写操作未完成时,侦听策略不允许对其他处理器的写失效请求进行应答确认和提供数据,上述情况中的处理器E和F会永远得不到所需要写的数据块,一直互相等待下去,形成死锁的情况。要避免该死锁情况,需要打破处理器之间闭合的环形依赖关系。
如果侦听策略允许,虽然可以避免上述的死锁情况,但会出现图6所示的活锁(live-lock)情况。图6中同时有多个处理器(A,B,C)对同一数据块发出写失效请求,每个处理器在得到该数据块但还没有完成写操作时,都收到了其他处理器对该块的写失效请求,该处理器立刻对请求者发出应答确认信号,同时提供数据,将得到的M态数据无效掉,由于该处理器还没有完成对该块的写操作,它需要重发对该数据块的写失效请求。这样所有的请求者都可以得到数据,但是都无法完成对它的写操作。可见该活锁情况同样是由于多个处理器间闭合的环形依赖关系造成的。
发明内容
本发明的一目的在于提供一种片上多核处理器系统的高速缓存一致性协议的实现方法,用于解决现有基于环的侦听协议中的重发应答机制及该机制所带来的系统性能降低、功耗较大和带宽消耗较多,不必要的侦听操作以及所出现的死锁或者活锁等情况。
为了实现上述目的,本发明提供一种片上多核处理器系统的高速缓存一致性协议的实现方法,所述片上多核处理器系统为基于单向分槽环的处理器系统,其特征在于,包括:
步骤一,将高速缓存划分为一级Cache、二级Cache,该一级Cache为处理器系统中的各处理器私有,该二级Cache为各处理器共享,并分布于各处理器,将所述单向分槽环设置于该一级Cache、该二级Cache之间,并与各处理器、该一级Cache、该二级Cache连接;所述单向分槽环包括数据信息环和请求信息环,所述数据信息环用于传递数据信息槽,所述请求信息环用于传递各处理器的失效请求信息槽;
步骤二,各处理器访问其私有的一级cache,访问失效时产生失效请求信息槽,并发送到所述请求信息环上,由所述请求信息环传递给其他处理器进行侦听;
步骤三,数据提供者侦听到失效请求后产生数据信息槽,并发送到所述数据信息环上,由所述数据信息环传递给请求者,当处理器系统中同时有多个请求者,则这些请求者按照距离数据提供者的远近顺序,由近到远依次接收数据块,完成对应的访存操作,并将数据块传给下一个请求者,最终所有的请求者都能得到数据块并完成其访存操作;当处理器系统中同时仅有一个请求者,则由该请求者接收数据块,完成对应的访存操作。
所述的高速缓存一致性协议的实现方法,其中,所述步骤二中,包括:各处理器对失效请求信息槽进行侦听时需要对槽中的各域进行设置,具体为:
在所述失效请求信息槽中加入第一域、第二域和第三域;
该第一域用于告知数据提供者是否需要提供数据,在失效请求信息槽发出时该第一域置为0;
该第二域用于在所述失效请求信息槽返回请求者时告知请求者是否可以安全地对得到的数据块进行写操作,在失效请求信息槽发出时该第二域置为0;
该第三域用于表示所述失效请求信息槽发出时按照发出该槽的请求者处理器的程序顺序,在请求者对该请求块的操作之前是否有该请求者的其他失效请求块的操作未完成,如果有,则该第三域置为1,否则该第三域置为0;
在处理器对读失效请求信息槽进行侦听时,若该处理器对该失效请求信息槽所请求的数据块发出读失效请求,且还未得到该数据块,则该处理器对该第一域置为1;
在处理器对写失效请求信息槽进行侦听时,若该写失效请求信息槽已经过数据提供者,且该处理器发出对该写失效请求信息槽所请求数据块的写失效请求,且该处理器已经得到该数据块,但还未完成写操作,则该处理器对该第二域置为1。
所述的高速缓存一致性协议的实现方法,其中,所述步骤二中,包括:
若该第一域已置位,则该第一域所在请求信息槽到达数据提供者时,数据提供者不需要提供数据,若该第一域未置位,则数据提供者需要提供数据。
所述的高速缓存一致性协议的实现方法,其中,所述步骤二中,包括:
若该第二域已置位,则请求者获知其他处理器也得到该同一数据块且准备进行写操作,并等待其他处理器完成操作传来新的数据,对该新的数据进行写操作,若该第二域未置位,请求者对该同一数据块进行写操作。
所述的高速缓存一致性协议的实现方法,其中,所述步骤二中,包括:
当所述失效请求为读失效请求时,若对该一级Cache、该二级Cache的侦听结果表明该读失效请求的数据块是M态时,接收到该读失效请求的处理器不再对该一级Cache和该二级Cache进行侦听,若对该一级Cache的侦听结果表明该读失效请求的数据块是S态时,仅对该二级Cache进行侦听。
所述的高速缓存一致性协议的实现方法,其中,所述步骤二中,包括:
当所述失效请求为写失效请求时,若对该一级Cache、该二级Cache的侦听结果表明该写失效请求的数据块是M态时,接收到该写失效请求的处理器不再对该一级Cache和该二级Cache进行侦听,若对该一级Cache的侦听结果表明该写失效请求的数据块是S态时,对该一级Cache、该二级Cache继续进行侦听。
所述的高速缓存一致性协议的实现方法,其中,所述步骤二中,包括:
当一处理器获得一个M态的数据块且未完成对该数据块的写操作,并侦听到其他处理器对该数据块的失效请求时,该处理器作为数据提供者按照其程序顺序判断在对该M态的数据块的写操作之前是否有对其他还未得到的失效数据块的未完成操作:
若有,则需要根据该第三域判断,按照请求者的程序顺序,在请求者对该请求块的操作之前是否有该请求者的其他失效请求块的操作未完成,若该第三域表明有,则请求者需要等待数据提供者,数据提供者不用立刻提供数据,若该第三域表明没有,则数据提供者立刻向请求者提供数据,并等待请求者完成对该数据块的操作后再将该数据块传回,再完成未完成的操作;
若无,则不需要根据该第三域判断在请求者对该请求块的操作之前是否有该请求者的其他失效请求块的操作未完成,等待自己的写操作完成后才向请求者提供该数据块。
所述的高速缓存一致性协议的实现方法,其中,所述步骤三中,包括:
在所述数据信息槽中加入用于表示目的处理器的第四域,用于当请求者在得到数据块时根据该第四域判断是否需要将该数据块发送回所述数据信息环继续传播。
所述的高速缓存一致性协议的实现方法,其中,所述失效请求信息槽的信息包括:消息类型、请求者ID、数据块的地址、一级Cache侦听结果、二级Cache侦听结果、第一域、第二域以及第三域;所述数据信息槽的信息包括:消息类型、请求者ID、数据块的地址、数据块和目的处理器。
所述的高速缓存一致性协议的实现方法,其中,所述数据块的基本状态包括:M、S和I,暂时状态包括:IS、IM、SM、IMT和IMTT。
与现有技术相比,本发明的有益技术效果在于:
本发明针对已有的基于单向分槽环的侦听协议存在的上述功耗、带宽、性能和稳定性方面的问题,提出了基于单向分槽环连接片上多核处理器(CMP)的Cache一致性协议,称为侦听顺序环的协议的实现方法。该协议利用环的顺序性来为冲突的失效请求排序,避免使用已有基于环的侦听协议中的重发应答机制及该机制所带来的系统性能、功耗和带宽方面的问题;同时该协议利用环的顺序性避免了大量的不必要侦听操作,降低了功耗;该协议还使用了灵活的侦听策略以避免可能的死锁或者活锁等情况,提高了系统的稳定性。
本发明相对于已有的基于环的侦听协议可以有效提高系统的性能,降低功耗和带宽使用,避免饥饿、死锁和活锁情况的出现,提高系统的稳定性。
附图说明
图1是MSI协议状态转换图;
图2是单向分槽环示意图;
图3是基于单向分槽环的侦听协议状态转换图;
图4是基于单向分槽环的侦听协议中同时有两个冲突写失效的情况描述图;
图5是死锁情况描述图;
图6是活锁情况描述图;
图7是本发明的八处理器核单向分槽环连接CMP结构图;
图8是本发明的侦听顺序环协议中同时有两个冲突写失效的情况描述图;
图9是本发明的home节点如何决定给哪些请求者提供数据方法示例图;
图10是本发明的避免多个处理器同时进行写操作的方法示例图。
具体实施方式
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
如图7所示,为八处理器核单向分槽环连接CMP结构图。该结构为协议实施时所使用的单向分槽环连接片上多核处理器结构,图7中,以8个处理器核组成的CMP为例来说明该结构,P1到P8表示8个处理器,Cache分为两级结构,分别是一级Cache(L1)和二级Cache(L2)。L1分成指令Cache(L1I)和数据Cache(L1D),对于各处理器私有。L2物理上分布于所有的处理器,逻辑上由各处理器共享。单向分槽环包括请求信息环和数据信息环,分别用于传递数据信息槽和各处理器的失效访存请求信息槽,位于L1和L2之间,连接各处理器核与L1、L2。各处理器访问其私有的一级cache,如处理器在访问L1失效时产生失效请求信息槽,发送到请求信息环上,传递给其他处理器进行侦听。数据提供者侦听到请求后产生数据信息槽,发送到数据信息环上,传递给请求者。请求者得到数据,完成对应的访存操作。
请求信息槽包括失效请求信息槽和二级cache替换M态数据块时产生的无效请求信息槽等;请求信息包括失效请求信息和二级cache替换M态数据时产生的无效请求信息;数据块是指数据在cache中以cache块为单位进行存放。
在失效请求信息槽中加入第一域、第二域和第三域。
第一域,用于告知数据提供者是否需要提供数据,在失效请求信息槽发出时第一域置为0;
第二域,用于在失效请求信息槽返回请求者时告知请求者是否可以安全地对得到的数据块进行写操作,在失效请求信息槽发出时第二域置为0;
第三域,用于表示失效请求信息槽发出时按照发出该槽的请求者处理器的程序顺序,在请求者对该请求块的操作之前是否有该请求者的其他失效请求块的操作未完成,如果有,则第三域置为1,否则第三域置为0;
在处理器对读失效请求信息槽进行侦听时,若该处理器对该失效请求信息槽所请求的数据块发出读失效请求,且还未得到该数据块,则该处理器对第一域置为1;
在处理器对写失效请求信息槽进行侦听时,若该写失效请求信息槽已经过数据提供者,且该处理器发出对该写失效请求信息槽所请求数据块的写失效请求,且该处理器已经得到该数据块,但还未完成写操作,则该处理器对第二域置为1。
利用环的顺序性为冲突的失效请求排序的方法为:在侦听顺序环协议中,任意时刻对于任意地址数据块的失效请求,只有一个数据提供者。数据提供者侦听到失效请求后,将数据块发到环上,然后数据块在环上单向传递。距离提供者最近的请求者先得到数据,在完成对该数据块的操作后,将数据块再发到环上,继续向下一个请求者传递。这样数据将按照请求者距离数据提供者的远近顺序依次到达各请求者,各请求者可以依次完成对数据的操作。当数据到达最远的请求者时,所有的请求者都得到了数据,且完成了对应的操作,都不需要进行重发操作。
如图8所示,是以同时出现对一个S态数据块的两个冲突写失效情况为例,来说明上述解决冲突的方法。图中(a)表示P9和P12同时发出写失效请求,所请求块为S态,home是P6,P3的L1中有该请求块。(b)表示P12的写失效先经过了P3,将其L1中的该块置为无效,然后到达了home P6。(c)表示home P6的对P12的写请求提供数据,且将数据的目的域置为P12,并将home中的对应块的状态改为M,然后应答数据先到达了P9,P9从环上取下该数据,等待自己的写失效请求返回后,利用对P12的应答数据完成写操作。(d)表示P9然后将写过的块无效的同时再发给P12,P12收到数据,完成写操作。这样home P6提供的数据先后满足了P9和P12发出的两个冲突写失效请求,避免了重发。
Home节点是指数据块按照地址映射的二级cache所分布于的处理器节点,目的处理器是指数据信息槽中用于表示该数据所要传递到的最远处理器。
实现上述机制需要解决下面两个问题。第一个问题是,当处于S态的数据有多个请求时,home节点如何决定给哪些请求者提供数据,以达到在使所有请求者得到数据的同时,产生最少的数据传递,降低功耗的目的。第二个问题是,当同时有同一数据块的多个数据槽在环上传递时,分别遇到了对该数据块发出了写失效请求的多个处理器,这些处理器将都能得到该数据块的M态,并同时对该块进行写操作。这显然是一种违反了Cache一致性的情况,需要采取适当的方法来避免其发生。
如图9所示,是以处理器P9和P12同时发出两个对同一数据块的读失效请求为例,表示了对上述问题一的解决方法。通过在请求信息槽中加入一个域(即上述第一域)来告诉home节点是否需要提供数据,在失效请求信息槽发出时该域置为0。该域在请求信息槽经过下述情况的处理器时置位。这种情况是,处理器已经对相同的数据块发出读失效请求,但是还没有得到数据,如图9中P9的读失效请求经过P12时,P9的失效请求的对应域置位。home节点在侦听请求信息槽时如果该域置位,表明home已经给距离home相对于当前的请求者(P9)更远的请求者(P12)提供了数据,该数据将会经过当前请求者,home不需要再提供数据。如果该域未置位,home将提供数据。其中,“passread without data”是请求信息槽中的一个域,用于表示该请求信息槽是否经过了没有得到数据应答的发出了对同一数据块的读失效请求的请求者。
图9中,(a)表示P9和P12同时对某数据块发出了读失效请求,该数据块处于S态,其home节点是P6,P3的一级cache中有S态的该数据块。(b)表示P9的失效请求经过了P12,由于P12对同一数据块发出了读失效请求并且还没有得到该数据块,所以P9的读失效请求中的pass read without data域置“1”,与此同时P12的读失效请求也经过了P3。(c)表示P12和P9的读失效请求先后到达了home节点P6,由于P12的读失效请求中的pass read withoutdata域为“0”,P6的二级cache对该请求提供数据信息槽,并将槽中的目的域设置为P12;P9的读失效请求到达P6时,其pass read without data域为“1”,所以home不对该请求提供数据应答;P6所提供的数据信息槽首先到达P9,P9取得数据槽,将对应数据块替换入自己的一级cache中置为S态,并完成读操作;由于槽的目的域为P12,且P12将要对该数据块进行读操作,P9继续将该数据信息槽在环上向后传递。(d)表示目的域为P12的数据信息槽最终到达了P12,P12将对应的数据块替换入自己的一级cache中,置为S态,并完成读操作。
如图10所示,是以处理器P9和P12同时发出了对同一数据块的写失效请求,并且同时得到了该数据块的情况为例,表示了对上述问题二的解决方法。该方法是,在请求信息槽中加入另一个域(即上述第二域),用于在该槽返回请求者时告诉它是否可以安全地对得到的数据块进行写操作,,在失效请求信息槽发出时该域置为0。该域在请求信息槽(图10中P12的请求信息槽)经过下述情况的处理器时置位。该情况是,处理器(图10中的P9)得到了同一数据块的M态,且在环上位于home(P6)和请求者(P12)之间。请求者(P12)必须等待自己发出的请求信息槽返回后,来检查该域。如果该域置位,请求者(P12)知道有其他处理器(P9)也得到了同一数据块且准备进行写操作,所以请求者必须等待其他处理器完成操作后传来新的数据,然后才能进行写操作。如果该域未置位,请求者知道自己是唯一的数据持有者,可以安全地进行写操作。通过该方法,不同处理器对同一数据块的多个写操作按顺序完成,同一数据块的多个数据信息槽逐渐合并成一个,Cache一致性得到了维护。其中,“hold data copy”指处理器发出了对某数据块的写失效请求后,从环上得到了该数据块;“pass write hold data after home”是请求信息槽中的一个域,用于表示该请求信息槽是否先后经过了home和位于home和发出该槽的处理器间的某个处理器,该处理器对该槽所请求的数据块也发出了写失效请求,并且持有该数据块,但是其写失效请求还未返回。
图10中,(a)表示处理器P9和P12在对处于S态、home在P6的某数据块发出了写失效请求后,都持有了该数据块的情况;(b)表示P12的写失效请求首先经过了P3和home(P6),P3的一级cache中的该数据块状态从S态转变为无效,P6的二级cache中的数据从S态转变为M态;(c)表示P12的写失效请求在经过P9时,因为该失效请求先后经过了home和P9,P9对同一数据块发出的写失效请求还未返回时持有了对应的数据块,所以对P12的写失效请求槽中的pass write hold data after home域置“1”,该请求槽返回P12后,P12根据该域决定需要等待P9完成写操作后将对应的数据块传给P12;(d)表示P9完成对对应数据块的写操作后,将数据再传给P12,P12得到数据后完成对该数据块的写操作。
环上的传递的数据信息需要有表示目的处理器的域(即上述第三域),请求者在得到数据时需要根据目的处理器域来判断是否还需要再将数据发送回环上继续传播。该域在数据提供者侦听到对数据的失效请求时进行更新,以便能将数据送到最远的请求者处理器。
利用环的顺序性避免部分不必要侦听操作的方法为:利用L1侦听操作的低延时特点,将L1的侦听结果与L2的侦听结果分开,随着侦听请求同时传递,使得随后的节点根据所传来的前面节点的侦听请求和结果,可以决定是否需要进行侦听操作,以减少不必要的侦听,降低功耗。根据不同的失效请求和所请求块状态具体分析如下。
失效请求为读失效(READ_SH)的情况下:侦听结果表明请求块是M态时,后面收到该请求的处理器都不需要再进行侦听L1和L2的操作;侦听结果表明请求块是S态时,仅需要侦听L2,不用侦听L1。
失效请求为写失效(READ_EX)的情况下:侦听结果表明请求块是M态时,随后的处理器不再侦听L1和L2;请求块是S态时,还需要继续侦听L1和L2。
避免死锁或活锁的方法为:当某个处理器获得了一个M态数据块,但还没有完成对该块的写操作,侦听到其他处理器对该数据块的失效请求时,作为数据提供者,该处理器根据自己的程序顺序,判断在对该M态数据的写操作之前是否有对其他还未得到的失效数据块的未完成操作。如果有,它需要根据请求信息槽中的一个域(即如上第三域)来判断,按照请求者的程序顺序,在请求者对请求块的操作之前是否有该请求者的其他失效请求块的操作未完成。如果该域表明有,请求者需要等待数据提供者,提供者不用立刻提供数据。如果该域表明没有,数据提供者必须立刻向请求者提供数据,然后等待请求者完成对该块的操作后再将数据传回,再完成未完成的操作。如果数据提供者按照其程序顺序,在未完成写操作的M态数据之前没有其他操作,则该数据提供者不需要根据请求信息槽中的该域来判断,它等待自己的写操作完成后才向请求者提供该数据。该方法可以打破多个处理器之间存在的闭合的环形依赖关系,有效地避免上述的死锁和活锁情况的发生。
本发明提供的高速缓存一致性协议是一种MSI协议,数据块的基本状态包括M、S和I三种,暂时状态包括IS、IM、SM、IMT和IMTT等。协议信息、协议操作和协议状态转换分别描述如下。
协议需要传递的信息分为两类。一类是请求信息,包括READ_SH、READ_EX、INV和UPGRADE;另一类是数据信息,包括ACK_DATA、WRITEBACK和INV_WRITEBACK。表1描述信息的产生条件。
表1
请求信息是短信息,由请求信息环上的槽进行传播,主要包含数据块的地址信息。数据信息是长信息,由数据信息环上的槽进行传播,主要包含一个整个的Cache数据块。请求信息根据信息槽中的消息类型域可取的不同的类型。
请求信息槽的格式如下:
消息类型 | 请求者ID | 数据块地址 | L1侦听结果 | L2侦听结果 | 其他域 |
数据信息槽的格式如下:
消息类型 | 请求者ID | 数据块地址 | 数据块 | 目的处理器 |
请求信息槽中的其他域包括:home节点用于判断是否需要提供数据域,即下表2中的pass_r_without_data位;用于在该槽返回请求者时告诉它是否可以安全地对得到的数据块进行写操作的信息域;以及用于避免死锁或活锁的信息域。
协议在状态转换过程中的不同操作以及状态转换关系由表2和3来描述。表2是协议操作描述表,表3是协议状态转换表。
表2
操作 | 描述 |
a | 完成load操作 |
b | 完成store操作 |
c | 发出READ_SH请求 |
d | 发出READ_EX请求 |
f | 发出UPGRADE请求 |
i | 发出数据 |
k | 从环上取下信息槽(数据或请求) |
l | 置READ_SH槽中的pass_r_without_data位 |
m | 得到数据 |
o | store forward |
p | 更新数据的目的域 |
w | 等待 |
e | 错误 |
表3
在协议状态转换表3中,行代表不同的数据块状态,其中,IS、IM、SM、IMT和IMTT代表协议状态转换过程中出现的几种暂时状态;列代表不同的处理器发出访存操作或者接收到不同的协议信息。其中,(1)为返回的请求表明可以进行写操作的情况。(2)为返回的请求表明有其他处理器正在对同一数据块进行写操作,本处理器需要等待的情况。(3)为路过数据的目的域中有发出写失效的处理器时,若按照程序,本地处理器对该失效块的load操作之前的所有操作都已经完成的情况。(4)为路过数据的目的域中只有发出读失效处理器的情况,如果本地处理器就是最远域,则还需要将该数据从环上取下,即完成k操作。(5)为路过数据的目的域中有发出写失效的处理器时,若按照程序序,本地处理器对该失效块的load操作之前还有未完成的操作的情况。(6)为UPGRADE请求返回时表明home做出了应答,该请求者得到了写权限的情况。FD_S表示在数据的目的域和本地处理器之间只有发出READ_SH的处理器,FD_M表示在数据的目的域和本地处理器之间有发出READ_EX或UPGRADE请求的处理器。表中空项表示无关或无操作项。
本发明针对已有的基于单向分槽环的侦听协议存在的上述功耗、带宽、性能和稳定性方面的问题,提出了基于单向分槽环连接片上多核处理器(CMP)的Cache一致性协议,称为侦听顺序环的协议。该协议利用环的顺序性来为冲突的失效请求排序,避免使用已有基于环的侦听协议中的重发应答机制及该机制所带来的系统性能、功耗和带宽方面的问题;同时协议利用环的顺序性避免了大量的不必要侦听操作,降低了功耗;协议还使用了灵活的侦听策略以避免可能的死锁或者活锁等情况,提高了系统的稳定性。
本发明相对于已有的基于环的侦听协议可以有效提高系统的性能,降低功耗和带宽使用,避免饥饿、死锁和活锁情况的出现,提高系统的稳定性。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (8)
1.一种片上多核处理器系统的高速缓存一致性协议的实现方法,所述片上多核处理器系统为基于单向分槽环的处理器系统,其特征在于,包括:
步骤一,将高速缓存划分为一级Cache、二级Cache,该一级Cache为处理器系统中的各处理器私有,该二级Cache为各处理器共享,并分布于各处理器,将所述单向分槽环设置于该一级Cache、该二级Cache之间,并与各处理器、该一级Cache、该二级Cache连接;所述单向分槽环包括数据信息环和请求信息环,所述数据信息环用于传递数据信息槽,所述请求信息环用于传递各处理器的失效请求信息槽;
步骤二,各处理器访问其私有的一级cache,访问失效时产生失效请求信息槽,并发送到所述请求信息环上,由所述请求信息环传递给其他处理器进行侦听;
步骤三,数据提供者侦听到失效请求后产生数据信息槽,并发送到所述数据信息环上,由所述数据信息环传递给请求者,当处理器系统中有多个请求者,则这些请求者按照距离数据提供者的远近顺序,由近到远依次接收数据块,完成对应的访存操作,并将数据块传给下一个请求者,最终所有的请求者都能得到数据块并完成其访存操作;当处理器系统中仅有一个请求者,则由该请求者接收数据块,完成对应的访存操作;
各处理器对失效请求信息槽进行侦听时需要对槽中的各域进行设置,具体为:
在所述失效请求信息槽中加入第一域、第二域和第三域;
该第一域用于告知数据提供者是否需要提供数据,在失效请求信息槽发出时该第一域置为0;
该第二域用于在所述失效请求信息槽返回请求者时告知请求者是否可以安全地对得到的数据块进行写操作,在失效请求信息槽发出时该第二域置为0;
该第三域用于表示所述失效请求信息槽发出时按照发出该槽的请求者处理器的程序顺序,在请求者对该数据块的操作之前是否有该请求者的其他失效数据块的操作未完成,如果有,则该第三域置为1,否则该第三域置为0;
在处理器对失效请求信息槽进行侦听时,若该处理器对该失效请求信息槽所请求的数据块发出读失效请求,且还未得到该数据块,则该处理器对该第一域置为1;
在处理器对失效请求信息槽进行侦听时,若该失效请求信息槽已经过数据提供者,且该处理器发出对该失效请求信息槽所请求数据块的写失效请求,且该处理器已经得到该数据块,但还未完成写操作,则该处理器对该第二域置为1;
所述步骤三中,包括:
在所述数据信息槽中加入用于表示目的处理器的第四域,用于当请求者在得到数据块时根据该第四域判断是否需要将该数据块发送回所述数据信息环继续传播。
2.根据权利要求1所述的高速缓存一致性协议的实现方法,其特征在于,所述步骤三中,包括:
若该第一域已置位,则该第一域所在请求信息槽到达数据提供者时,数据提供者不需要提供数据,若该第一域未置位,则数据提供者需要提供数据。
3.根据权利要求1所述的高速缓存一致性协议的实现方法,其特征在于,所述步骤三中,包括:
若该第二域已置位,则请求者获知其他处理器也得到该数据块且准备进行写操作,并等待其他处理器完成操作传来新的数据,对该新的数据进行写操作,若该第二域未置位,请求者对该数据块进行写操作。
4.根据权利要求1、2、3任一所述的高速缓存一致性协议的实现方法,其特征在于,所述步骤三中,包括:
当所述失效请求为读失效请求时,若对该一级Cache、该二级Cache的侦听结果表明该读失效请求的数据块是M态时,M为已修改状态,接收到该读失效请求的处理器不再对该一级Cache和该二级Cache进行侦听,若对该一级Cache的侦听结果表明该读失效请求的数据块是S态时,S为共享状态,仅对该二级Cache进行侦听。
5.根据权利要求1、2、3任一所述的高速缓存一致性协议的实现方法,其特征在于,所述步骤三中,包括:
当所述失效请求为写失效请求时,若对该一级Cache、该二级Cache的侦听结果表明该写失效请求的数据块是M态时,M为已修改状态,接收到该写失效请求的处理器不再对该一级Cache和该二级Cache进行侦听,若对该一级Cache的侦听结果表明该写失效请求的数据块是S态时,S为共享状态,对该一级Cache、该二级Cache继续进行侦听。
6.根据权利要求2、3任一所述的高速缓存一致性协议的实现方法,其特征在于,所述步骤三中,包括:
当一处理器获得一个M态的数据块且未完成对该数据块的写操作,并侦听到其他处理器对该数据块的失效请求时,该处理器作为数据提供者按照其程序顺序判断在对该M态的数据块的写操作之前是否有对其他还未得到的失效数据块的未完成操作,M为已修改状态:
若有,则需要根据该第三域判断,按照请求者的程序顺序,在请求者对该数据块的操作之前是否有该请求者的其他失效数据块的操作未完成,若该第三域表明有,则请求者需要等待数据提供者,数据提供者不用立刻提供数据,若该第三域表明没有,则数据提供者立刻向请求者提供数据,并等待请求者完成对该数据块的操作后再将该数据块传回,再完成未完成的操作;
若无,则不需要根据该第三域判断在请求者对该数据块的操作之前是否有该请求者的其他失效数据块的操作未完成,等待自己的写操作完成后才向请求者提供该数据块。
7.根据权利要求2、3任一所述的高速缓存一致性协议的实现方法,其特征在于,所述失效请求信息槽的信息包括:消息类型、请求者ID、数据块的地址、一级Cache侦听结果、二级Cache侦听结果、第一域、第二域以及第三域;所述数据信息槽的信息包括:消息类型、请求者ID、数据块的地址、数据块和目的处理器。
8.根据权利要求1、2、3任一所述的高速缓存一致性协议的实现方法,其特征在于,所述数据块的基本状态包括:M、S和I,暂时状态包括:IS、IM、SM、IMT和IMTT;其中,M为已修改状态,S为共享状态,I为无效状态,IS表示cache从无效状态I转化为共享状态S的中间状态,IM表示cache从无效状态I转化为已修改状态M的中间状态,SM表示cache从共享状态S转化为已修改状态M的中间状态,IMT表示处于所述中间状态IM的cache在从环上得到数据块后,该数据块对应的写失效信息还未从环上传回来的中间状态,IMTT表示处于所述中间状态IMT的cache在从环上收到传回的对应该cache的写失效信息,但该信息表明有其他处理器正在对同一数据块进行写操作,本处理器需要等待其他处理器完成写操作后将数据块传来的中间状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110032914A CN102103568B (zh) | 2011-01-30 | 2011-01-30 | 片上多核处理器系统的高速缓存一致性协议的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110032914A CN102103568B (zh) | 2011-01-30 | 2011-01-30 | 片上多核处理器系统的高速缓存一致性协议的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102103568A CN102103568A (zh) | 2011-06-22 |
CN102103568B true CN102103568B (zh) | 2012-10-10 |
Family
ID=44156349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110032914A Active CN102103568B (zh) | 2011-01-30 | 2011-01-30 | 片上多核处理器系统的高速缓存一致性协议的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102103568B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012109906A1 (zh) * | 2011-09-30 | 2012-08-23 | 华为技术有限公司 | 访问高速缓冲存储器的方法及非真实缓存代理 |
CN102346714B (zh) * | 2011-10-09 | 2014-07-02 | 西安交通大学 | 用于多核处理器的一致性维护装置及一致性交互方法 |
US20140032854A1 (en) * | 2012-07-30 | 2014-01-30 | Futurewei Technologies, Inc. | Coherence Management Using a Coherent Domain Table |
CN102929800B (zh) * | 2012-10-17 | 2015-07-08 | 无锡江南计算技术研究所 | Cache一致性协议派生处理方法 |
CN103034593B (zh) * | 2012-12-11 | 2015-07-22 | 中国人民解放军国防科学技术大学 | 面向众核处理器的片上锁变量全局编址存储方法及装置 |
US9311241B2 (en) * | 2012-12-29 | 2016-04-12 | Intel Corporation | Method and apparatus to write modified cache data to a backing store while retaining write permissions |
CN104252423B (zh) * | 2013-06-26 | 2017-12-15 | 华为技术有限公司 | 基于多内核处理器的一致性处理方法和装置 |
CN103488505B (zh) * | 2013-09-16 | 2016-03-30 | 杭州华为数字技术有限公司 | 补丁方法、设备及系统 |
US20150370707A1 (en) * | 2014-06-24 | 2015-12-24 | Qualcomm Incorporated | Disunited shared-information and private-information caches |
US20170242797A1 (en) * | 2014-09-25 | 2017-08-24 | Intel Corporation | Reducing interconnect traffics of multi-processor system with extended mesi protocol |
CN104360981B (zh) * | 2014-11-12 | 2017-09-29 | 浪潮(北京)电子信息产业有限公司 | 面向多核多处理器平台的Cache一致性协议的设计方法 |
WO2016092344A1 (en) * | 2014-12-13 | 2016-06-16 | Via Alliance Semiconductor Co., Ltd. | Pattern detector for detecting hangs |
CN104866457B (zh) * | 2015-06-04 | 2018-06-15 | 电子科技大学 | 一种基于共享缓存的片上多核处理器静态架构 |
CN105183662B (zh) * | 2015-07-30 | 2017-12-29 | 复旦大学 | 一种无cache一致性协议的分布式共享片上存储架构 |
CN107229593B (zh) * | 2016-03-25 | 2020-02-14 | 华为技术有限公司 | 多片多核处理器的缓存一致性操作方法及多片多核处理器 |
CN105912415B (zh) * | 2016-04-05 | 2017-12-29 | 浪潮电子信息产业股份有限公司 | 一种验证cache一致性协议的方法及装置 |
CN109062613B (zh) * | 2018-06-01 | 2020-08-28 | 杭州中天微系统有限公司 | 多核互联二级缓存访问验证方法 |
CN109246182B (zh) * | 2018-07-26 | 2022-03-25 | 郑州云海信息技术有限公司 | 一种分布式锁管理器及其实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512326A (zh) * | 2002-11-12 | 2004-07-14 | ض� | 用于串行互斥体的方法与装置 |
CN1545034A (zh) * | 2003-11-26 | 2004-11-10 | 中国人民解放军国防科学技术大学 | 片内多处理器局部cache一致性的双环监听方法 |
EP1615138A2 (en) * | 2004-05-28 | 2006-01-11 | Intel Corporation | Multiprocessor chip having bidirectional ring interconnect |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7836257B2 (en) * | 2007-12-19 | 2010-11-16 | International Business Machines Corpation | System and method for cache line replacement selection in a multiprocessor environment |
-
2011
- 2011-01-30 CN CN201110032914A patent/CN102103568B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512326A (zh) * | 2002-11-12 | 2004-07-14 | ض� | 用于串行互斥体的方法与装置 |
CN1545034A (zh) * | 2003-11-26 | 2004-11-10 | 中国人民解放军国防科学技术大学 | 片内多处理器局部cache一致性的双环监听方法 |
EP1615138A2 (en) * | 2004-05-28 | 2006-01-11 | Intel Corporation | Multiprocessor chip having bidirectional ring interconnect |
Also Published As
Publication number | Publication date |
---|---|
CN102103568A (zh) | 2011-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102103568B (zh) | 片上多核处理器系统的高速缓存一致性协议的实现方法 | |
CN101127009B (zh) | 供多处理器系统中的高速缓存一致性中使用的转发状态 | |
CN101625664B (zh) | 满足部分写和非监听存取之间的存储器排序要求 | |
CN101625663B (zh) | 满足部分读取和非监听访问之间的访存顺序要求 | |
JP3644587B2 (ja) | 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム | |
TW544589B (en) | Loosely coupled-multi processor server | |
CN103119568B (zh) | 利用目录信息扩展高速缓存一致性监听广播协议 | |
CN101354682B (zh) | 一种用于解决多处理器访问目录冲突的装置和方法 | |
US7836144B2 (en) | System and method for a 3-hop cache coherency protocol | |
CN101635679B (zh) | 路由表的动态更新 | |
US20090024688A1 (en) | Accessing Memory And Processor Caches Of Nodes In Multi-Node Configurations | |
US6950913B2 (en) | Methods and apparatus for multiple cluster locking | |
CN103440223A (zh) | 一种实现高速缓存一致性协议的分层系统及其方法 | |
US6865595B2 (en) | Methods and apparatus for speculative probing of a remote cluster | |
CN108874687A (zh) | 针对拼贴式末级高速缓存的非统一总线(nub)互连协议 | |
EP3234783B1 (en) | Pointer chasing across distributed memory | |
US20080109585A1 (en) | System and Method for Reducing Store Latency in Symmetrical Multiprocessor Systems | |
US7103636B2 (en) | Methods and apparatus for speculative probing of a remote cluster | |
TW498210B (en) | Non-uniform memory access (NUMA) data processing system that decreases latency by expediting rerun requests | |
JP7284191B2 (ja) | データ処理ネットワーク内の転送プロトコル | |
US11397625B2 (en) | Lock manager for multi-core architectures | |
CN107239432A (zh) | 一种具有新型拓扑结构的服务器 | |
CN113434290A (zh) | 基于raft协议的数据处理方法和设备,及计算机存储介质 | |
US10372638B2 (en) | Interconnect agent | |
US11868259B2 (en) | System coherency protocol |
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 |