CN1258716C - 片内多处理器局部cache一致性的双环监听方法 - Google Patents
片内多处理器局部cache一致性的双环监听方法 Download PDFInfo
- Publication number
- CN1258716C CN1258716C CNB2003101105657A CN200310110565A CN1258716C CN 1258716 C CN1258716 C CN 1258716C CN B2003101105657 A CNB2003101105657 A CN B2003101105657A CN 200310110565 A CN200310110565 A CN 200310110565A CN 1258716 C CN1258716 C CN 1258716C
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- message
- node
- level
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种片内多处理器局部cache一致性的双环监听方法,目的在于对现有片内多处理器间局部cache一致性方案进行改进,解决访问结点个数受限和局部cache一致性造成的访问冲突等问题。技术方案是其总体结构除含有多个CPU、cache、MIU外,还含有转发总线和双环结构,且cache分为一级指令cache、一级数据cache、二级cache,同时增加专门的逻辑控制电路扩展一级cache控制器的功能,使其通过双环结构发布所属处理节点对于数据的访问信息,获取和传播其它节点对于数据的访问情况,且借助转发总线完成cache一致性维护,并对一级数据cache标志位进行了扩展。本发明充分利用了芯片内部潜在的通信能力,使访问的冲突明显降低,通过较少的硬件开销解决了局部cache一致性问题。
Description
技术领域:本发明涉及微处理器设计中片内多处理器之间局部cache一致性的解决方法,尤其是支持线程级前瞻执行(Thread LevelSpeculation)的片内多处理器结构中局部cache之间数据一致性的解决方法。
背景技术:微电子技术和加工工艺的不断发展,使得在单个芯片内放置多个处理器成为提高芯片整体性能的一个重要途径。局部cache的数据一致性(cache coherence)是传统片外多处理器系统并行执行必须解决的问题,但片内多处理器在组成、结构和通信能力等方面又具有很多新的特点,因此局部cache一致性需要采用新的解决方法。传统片外多处理器系统解决局部cache一致性的协议有以下两类,如2000年高等教育出版社出版的《计算机体系结构》一书中阐述的:总线监听(snooping)协议和目录(directory)协议,总线监听协议中每个cache除了包含物理存储器中块的数据拷贝之外,也保存着各个块的共享状态信息。Cache通常连在共享存储器的总线上,各个cache控制器通过监听总线来判断它们是否有总线上请求的数据块,从而维护cache的数据一致性。总线监听协议只能适用于处理器节点较少的通过总线相连的多处理器系统。基于目录的一致性解决方法通过目录结构记录进入cache的每个数据块的访问状态、该块在各个处理器的共享状态以及是否修改过的信息。通过处理器之间的内部互联网络(Intra-Connection Network)发布信息,维护局部cache一致性。目录可以分布在整个系统中,这种方法具有扩展能力,能够应用于处理节点较多的系统。处理器间的维护局部cache一致性的信息传递和数据交换分别通过总线或内部互联网络实现,因此处理节点间总线或者网络的带宽是影响整个系统性能的关键因素。
在单个芯片上实现多处理器系统,各个处理器之间的通信能力得到了很大的增强,片外的cache一致性维护操作需要数十个甚至数百个时钟周期(这里指CPU的时钟周期)才能完成,集中在同一个芯片上实现可以将其缩短到几个时钟周期。当前已经存在的单芯片多处理器系统中,Stanford大学在
http://www-hydra.stanford.edu/hydra.shtml网址公布的Hydra处理器模型中,采用类似总线监听协议的方法解决局部cache一致性的问题,但是总线监听的访问量与处理节点个数的平方成正比;Illinois大学在
http://www.cs.uiuc.edu公布的片内多处理器模型中,采用类目录的方法来解决cache之间的数据一致性问题,集中式的目录存储导致对该目录的访问成为瓶颈。
发明内容:本发明的目的在于对现有技术中片内多处理器间局部cache一致性方案进行改进,解决访问结点个数受限和局部cache一致性造成的访问冲突等问题,利用片内多处理器间通信高带宽、延迟易于确定的特点,采用一种双环结构解决片内多处理器的局部cache一致性问题。
本发明的技术方案是:
其总体逻辑结构包括多个处理器核CPU、cache、存储器接口单元MIU,其cache分为一级指令cache、一级数据cache、二级cache,在各一级数据cache之间设计了一个转发总线和一个双环结构,同时增加专门的逻辑控制电路扩展了一级cache控制器的功能。CPU分别通过单独的总线与一级指令cache和一级数据cache相连接,它是处理的核心部件,通过一级指令和数据cache获取指令和数据,执行程序;一级cache采用指令与数据相分离的哈佛结构,一级cache仅被它对应的CPU访问,CPU和它的一级cache构成一个处理节点;一级指令cache和数据cache的查找、替换、写回操作通过cache控制器控制完成。各个处理节点的一级cache通过共同的总线与二级cache连接,该总线是处理节点向二级cache读取指令,与二级cache进行数据交换的通路。二级cache是混合结构,同时存储指令和数据,被所有处理节点共享使用,二级cache通过总线和存储接口单元相连;存储器接口单元MIU实现与片外主存储系统的数据交换。在各一级数据cache之间设计一个转发总线,连接在各个局部一级数据cache上,用来实现局部cache一致性操作中的数据传送;转发总线包括以下几个部分:源id-发送数据的线程逻辑id,其位数由节点的个数以2为底取对数决定,目的id-接受数据的线程逻辑id,位数与源id相同,地址域——要传送的数据的地址,根据系统的寻址空间确定,数据域——传送的数据,宽度由系统的字长决定,使能、确认和忙闲信号各1位——用于传递时的控制,同时设计了一个转发仲裁逻辑解决访问冲突。
在片内各一级数据cache之间设计一个双环结构,它由连接在一级数据cache之间的两个相向传播的单向环形消息通路构成,用于传递各个节点的数据访问信息。访问的信息包括数据的地址和访问者的逻辑标识id,以消息形式在该结构上传播,每个时钟周期前进一个节点,直至被接收或回收,根据这些信息对本节点拥有的新数据进行转发、并通过CPU执行补偿代码或重新运行该线程解决本地节点的超前访问,解决处理器间的cache一致性,辅助多处理器系统高效并发运行;处理节点通过环形结构串联起来,每个处理节点运行一个线程,各个线程之间也存在逻辑关系,按照先后依次运行在环上的每个处理节点,处理节点的排列和线程的分布形成一个顺序的对应关系;同时在处理节点一级cache控制器中增加专门的逻辑控制电路,使得该控制器除了完成CPU对cache进行指令和数据访问中的失效、写回和替换的处理功能外,还通过双环结构发布自身所属处理节点对于数据的访问信息,并获取和传播其它节点对于数据的访问情况,并借助转发总线完成对局部cache一致性的维护。信息发布和新数据转发及处理节点的运行并行完成或者被访问公共存储器——二级cache的延迟所掩盖,从而达到提高整个芯片性能的目的。目前国内外尚无采用这种方法解决片内多处理器局部cache一致性的报道。
本发明定义了六个名词:逻辑标识id、双环结构、Load消息和Store消息、转发总线、cache标志位、主处理节点,它们的定义是:
(1)逻辑标识id:本发明中逻辑标识id用于指明线程的逻辑顺序,每个处理节点执行一个线程,在系统的运行过程中,线程按照逻辑顺序依次运行在由双环结构串联起来的各个节点。
(2)双环结构:本发明中用于交换对共享数据访问信息的两个相向传播的单向环形结构,即L-ring和S-ring,分别用来传递Load和Store消息,访问信息以消息形式在该结构上传播,每个时钟周期前进一个节点。
(3)Load消息和Store消息:分别含有对于cache中数据的读取和存储情况的消息,通过双环结构进行传送,Load消息通过L-ring,Store消息通过S-ring。
(4)转发总线:位于各个处理节点一级数据cache之间,用于完成不同处理节点的一级数据cache之间共享数据的传送。
(5)cache标志位:一级数据cache中的数据结构,标识其中以数据块或者以块中的字为单位的数据状态信息。
(6)主处理节点:运行逻辑顺序最前的线程的处理节点,其逻辑标识id也最小。
本发明设计的load和Store两种消息,其消息结构中都拥有的部分是:Th.id用于传递消息发起者的线程逻辑id;数据块地址用于传递该消息所涉及的数据块的地址;Wi表明消息感兴趣的某个或者某几个字。另外,Store消息中设计R位,用于传递发现了超前访问的信息。
本发明对一级数据cache标志位进行了扩展,原cache中一般设计有V和D位,以数据块为单位进行标识,其中的V位为有效位,表明数据块中的数据是否有效;D位表明数据块中的数据有没有被修改。本发明设计了RS位,表明在执行新的线程时该数据块是否需要设置为无效。U、L、S位以字为单位进行标识,U位表明本处理节点有没有修改过该字,修改过则置1;L用于标识本处理节点是否读取过该字,在第一次读取之前会发送Load消息,获得最新数据后将L位设置为1,以后的读取则不必发送Load消息;S位表明针对本节点的修改是否发送过Store消息,发送store消息是将其设置为1,当该数据被其它节点读取时,就会将它清除为0。
本发明一级cache控制器中增加了专门的逻辑控制电路后,一级cache控制器工作过程是:
1CPU在执行用户程序时,对数据的读取和写回访问都发送给本地处理节点的一级数据cache。该一级cache作如下的处理:
1.1访问时命中cache,对于读取(Load)操作,根据该数据块中相应字的L和U标志位判断本地节点是否读取或修改过该数据,判断结果为真,则将数据传送到本地处理器;否则通过L-ring向前驱节点发送Load消息,如果前驱节点中拥有更新的数据,则通过转发总线读取新的数据到数据cache,如果没有新的数据则不读取转发总线,最后将正确的数据传送给处理器,同时设置L位;对于存储(Store)操作,则将数据写入一级cache,如果S位为0,通过S-ring向后继节点的cache发送Store消息,并设置S位为1,否则不发送store消息,无论是否发送消息,数据写入后CPU都将继续执行,即消息的发送与CPU运行是并行的。
1.2访问时如果发生cache失效,相应的CPU暂停运行。
1.2.1如果需要写回,对于主处理节点,将数据写回二级cache;
对于非主处理节点,仅将数据缓冲,成为主处理节点后方能真正写回;
1.2.2不需要写回或者写回已经完成,向二级cache发送读请求,将数据所在的数据块读取到本处理节点的cache中,同时对于Load操作通过L-ring向前驱发送Load消息。对二级cache的读取完成后,对于Load操作,根据Load消息的返回结果对数据块进行更新,而后发送给CPU使它继续执行,同时设置L位;对于Store操作,将数据存入刚读进的数据块,CPU继续执行,同时通过S-ring向后继节点发送Store消息并设置S位。
2cache控制器收到消息时,根据消息的不同类型分别进行处理:
2.1从L-ring上收到来自后继节点的Load消息,根据消息中的地址信息,查找本地cache是否存在该数据的新拷贝,如果存在新的拷贝则通过转发总线将其传递给相应的处理节点,同时清除cache中该数据的S位,否则对于主处理节点发送确认信号给本消息的源节点表明各个处理节点都不存在新的数据拷贝,对于非主处理节点就将消息继续向自身的前驱节点进行传递。
2.2从S-ring上收到来自前驱节点的Store消息,根据源节点与本地节点的关系分别处理如下:
2.2.1如果本处理节点属于该消息的后继节点,则根据消息中的地址信息,检查cache的L位,判断本处理节点是否读取了该数据的旧拷贝,如果读过则进行必要的补救措施:可以执行一定的补偿代码,代码通过编译器设置或者重新执行本地的线程,同时设置消息中的R位,而后将消息向后继传递。如果没有读取过该数据的旧拷贝,如果U位为1,清除消息中对应的W位,而后发送消息,否则直接转发该消息到后继节点。
2.2.2如果本处理节点属于该消息的逻辑前驱,则将消息向后继节点传递,同时按照消息中的地址信息,检查本地cache中是否存在该数据块,如果有则设置RS位为1,表明本处理节点执行新的线程时需要将该数据块置为无效。
2.2.3如果该消息是由本节点发送,则回收该消息。
3冲突解决和优先级的设置:环形结构决定了系统中同类型的消息只能按顺序传送。如果出现冲突则优先发送来自逻辑顺序较前节点的消息,即对于L-ring上的处理是优先发送本地的Load消息,缓冲来自后继的Load消息;对于S-ring上的消息如果出现了冲突,比较逻辑顺序,发送逻辑顺序最前的消息,缓冲其他的消息。
4 如果处理节点的逻辑标识id需要改变,设计实现时,设计者有两种方法可以选择:先排空双环结构上的消息,再进行逻辑顺序号的改变;或者直接清除上面的消息,逻辑标识id更新后再重新发送这些消息。
采用本发明设计的微处理器可以达到以下技术效果:
1)每个线程读取新数据时,只需次第检查它前面的节点是否存在新的拷贝,最先遇到的新拷贝数据就是最新的,消息传递距离短;当它修改某个数据时,将消息发送给后继节点,消息发送与后续程序的执行并行完成;通过收到的store消息,判断是否进行了超前的数据访问,整个判断执行过程,硬件实现复杂度低,执行效率高。
2)对于有N个处理节点的系统,总线检测方案会使每个处理节点会受到N-1个处理节点的打扰,本地CPU访存将会受到很大的影响,本发明中消息依次向前(L-ring)和向后(S-ring)传播,每个处理节点仅响应来自两个相邻节点的消息,提高了对本地CPU的访存效率,同时减少了总线监听方法所带来的冲突。
3)本发明所提出的方案中,一级cache数据一致性维护操作可以被二级cache的访问延迟所掩盖或者与处理节点的工作并行完成,增加了操作并行性,提高了运行效率。
本发明充分利用了芯片内部潜在的通信能力,并使得访问的冲突明显降低,通过较少的硬件开销(双环结构、转发总线、cache控制器逻辑电路)解决了单芯片多处理器的局部cache一致性问题。
附图说明:
图1采用总线监听协议的系统结构图
图2采用目录协议的系统结构图
图3本发明的总体结构图
图4双环结构和转发总线结构图
图5一级数据cache的标志位结构图
图6Load和Store消息的结构图
图7cache命中时的处理流程图
图8cache失效时的处理流程图
图9收到消息时的处理流程图
具体实施方式:
图1是采用总线监听协议的系统结构图,由CPU和cache组成的部分为处理节点,通常情况下,二级cache也包含在节点内部。各个处理节点共享存储器,处理节点和存储器通过总线进行连接,各个处理节点的cache也通过监听总线上的操作完成数据一致性的维护。
图2是采用目录协议的系统结构图,CPU和cache组成处理节点,二级cache也包含在节点内部。存储器和目录分布在整个系统中,通过内部互连网络将它们连接起来,各个处理节点对数据的访问情况由目录进行记录,通过内部互连网络进行传递。
图3是本发明应用在拥有4个处理器核的片内并行处理体系结构中的总体结构图。它由4个处理器核、4个一级cache及相应控制器,二级cache,存储接口单元MIU,数据总线,转发总线和双环结构组成。
CPUi(i=0,1,2,3)为处理器核,一级cache采用指令与数据相分离的哈佛结构,L1/I和L1/D分别为指令和数据cache,CPUi分别通过单独的总线与L1/I和L1/D相连接,获取指令和数据,CPU和相应一级cache构成一个处理节点,图中用虚线框表示;一级指令cache和数据cache的查找、替换、写回操作通过cache控制器控制完成。各个处理节点的一级cache通过共同的总线与二级cache连接,该总线是处理节点向二级cache读取指令,与二级cache进行数据交换的通路。二级cache是混合结构,可以同时存储指令和数据,被所有的处理节点共享使用,二级cache通过总线和存储接口单元相连;存储器接口单元MIU实现与片外主存储系统的数据交换。在各一级cache之间设计一个转发总线,连接在各个局部一级数据cache上,用来实现局部cache一致性操作中的数据传送。在片内各处理器节点间设计一个双环结构,它由连接在一级数据cache之间的两个相向传播的单向环形消息通路构成,用于传递各个节点的数据访问信息。
图4是本发明应用在拥有4个处理器核的片内并行处理体系结构中双环结构和转发总线的结构图。两个单向环相同地连接在一级数据cache之间完成存取数据信息的发布,顺时针的为S-ring,逆时针的为L-ring,消息的传播按照各自的方向依次经过各个处理节点直至被接收或回收。每个一级数据cache通过专用的接口与转发总线相连,其接口包括以下几组信号线:源id(2位)——发送数据的线程逻辑id、目的id(2位)——接受数据的线程逻辑id、地址域(32位)——要传送的数据的地址、数据域(32位)——传送的数据、使能(1位)、确认(1位)和忙闲(1位)信号——用于传递时的控制,转发总线将需要更新的数据从拥有新拷贝的节点传递到需要该数据的节点,如果出现数据转发的冲突,源id小的数据优先发送,该判断由转发仲裁逻辑实现。
图5一级数据cache的标志位结构图。V位和D位在一般的cache中都存在,以数据块为单位进行标识,其中V位表明数据块中的数据是否有效;D位表明数据块中的数据有没有被修改;RS位表明在执行新的线程时该数据块是否需要设置为无效。Ui、Li、Si(i=0,1,2,3)位以字为单位进行标识,U位表明本处理节点有没有修改过该字,修改过则置1;L用于标识本处理节点是否读取过该字,在第一次读取之前会发送Load消息,获得最新数据后将L位设置为1,以后的读取不再发送Load消息;S位表明针对本节点的修改是否发送过Store消息,发送store消息是将其设置为1,当该数据被其它节点读取时,就会将S清除为0。
图6是Load和Store消息的结构图。其消息结构中都拥有的部分是:Th.id用于传递消息发起者的线程逻辑id;地址域用于传递该消息所涉及的数据块的地址;Wi(i=0,1,2,3)表明消息感兴趣的某个或者某几个字;Store消息中R位用于传递发现了超前访问的信息。Cache的控制器中设有专门的缓冲,当消息的传播出现冲突时,将没有及时传播的消息缓冲。
在采用了本发明的微处理器运行加载的用户程序时,工作过程是:
图7是cache命中时的处理流程图。本图说明了CPU访问本地数据cache命中时的处理流程,在实现中各种判断是同时进行。对于Load操作在一个周期内同时判断是否命中、Ui和Li是否为1以及是否主线程,Li或Ui为1、或者是主线程则下一个周期向CPU送数据,否则发送load消息,收到返回信息或新数据后再向CPU传送有效数据。对于Store操作,将数据写入一级cache后,CPU即可继续执行;同时如Si位为0,通过S-ring向后继节点的cache发送Store消息,并设置S位为1,否则不发送store消息;如果是主线程则将数据写回二级cache。
图8是cache访问失效时的处理流程图。对于Load失效,向二级cache发送读取数据的请求,如果不是主线程则同时向前驱发送load消息,Load消息在访问二级cache的同时发送,从而达到了掩盖延迟的目的,如果前驱节点有最新的数据,则将转发总线上的数据和来自二级cache的数据合并,对于主线程仅读取二级cache的数据,写入一级cache并发送给CPU。对于store失效,首先向二级cache读取该数据所在的数据块;读取完成后,将新的数据写入该块,CPU继续执行,同时通过S-ring发送Store消息,对于主线程还要将新数据写回二级cache。本发明中一级cache采用的是写分配策略,另外,为了保持对数据的访问信息,执行的不是主线程的节点不能够将数据写回二级cache,为此引入了一定数量的写缓冲,这里看作是cache一部分没有进行特殊的表示。
图9是处理load消息和store消息的流程图。对各种标志位的查询是并行完成的,整个的消息处理过程在一个周期内实现。如果存在发送冲突,按照上面提到的冲突解决方法进行解决。对于load消息,如果地址信息命中本地cache块并且该数据对应的Ui位为1,则通过转发总线转发该数据,并清除本cache中该数据块的Si位,清除消息中的Wi位,如果所有的4个Wi位均为0则清除该消息;如果本cache不存在该数据或Ui为0,则不转发数据,此时对于主线程发送确认信号,其它线程继续转发消息。
对于store消息:如果消息来自逻辑顺序低的节点,cache中存在该数据且Li位为1,如果读过则进行必要的补救措施:可以执行一定的补偿代码,代码通过编译器设置或者重新执行本地的线程,同时设置消息中的R位,而后将消息向后继传递。如果Li为0而Ui为1,则清除消息中对应的Wi位,最后将消息发送到后继节点。如果消息来自逻辑顺序高的节点,则将消息向后继节点传递,同时如果本地cache中有该数据块,则设置RS位为1。如果该消息是由本节点发送的,则回收该消息。
Claims (3)
1一种片内多处理器局部cache一致性的双环监听方法,其总体逻辑结构包括多个处理器核CPU、cache、存储器接口单元MIU,它们通过总线相连,CPU是处理的核心部件,CPU通过总线从cache获取数据和指令,cache内包含cache控制器、CPU对cache进行指令和数据访问中的失效、写回和替换的处理功能通过cache控制器控制完成,由存储器接口单元MIU实现与片外主存储系统的数据交换,其特征在于其cache分为一级指令cache、一级数据cache、二级cache,在各一级数据cache之间设计了一个转发总线和一个双环结构,同时增加专门的逻辑控制电路扩展了一级cache控制器的功能,并对一级数据cache标志位进行了扩展,从而实现局部cache一致性操作,具体方法为:
1.1CPU分别通过单独的总线与一级指令cache和一级数据cache相连接,通过一级指令cache和数据cache获取指令和数据、执行程序;一级cache采用指令与数据相分离的哈佛结构,一级cache仅被它对应的CPU访问,CPU和它的一级cache构成一个处理节点;各个处理节点的一级cache通过共同的总线与二级cache连接,该总线是处理节点向二级cache读取指令,与二级cache进行数据交换的通路;二级cache是混合结构,同时存储指令和数据,被所有处理节点共享使用,二级cache通过总线和存储接口单元MIU相连;
1.2在各一级数据cache之间设计一个转发总线,包括:源id——发送数据的线程逻辑id,其位数由节点的个数以2为底取对数决定,目的id——接受数据的线程逻辑id,位数与源id相同,地址域——要传送的数据的地址,根据系统的寻址空间确定,数据域——传送的数据,宽度由系统的字长决定,使能、确认和忙闲信号各1位——用于传递时的控制;转发总线连接在各个局部一级数据cache上,用于完成不同处理节点的一级数据cache之间共享数据的传送,同时设计一个转发仲裁逻辑依据源id解决访问冲突;
1.3在片内各处理器节点间设计一个双环结构,它由连接在一级数据cache之间的两个相向传播的单向环形消息通路L-ring和S-ring构成,用于传递各个节点的数据访问信息,访问的信息包括数据的地址和访问者的逻辑标识id,以消息形式在该结构上传播,每个时钟周期前进一个节点,直至被接收或回收,根据这些信息对本节点拥有的新数据进行转发,并通过CPU执行补偿代码或重新运行该线程解决本地节点的超前访问,解决处理器间的cache一致性,辅助多处理器系统高效并发运行;L-ring传递对于cache中数据读取情况的消息,即Load消息,S-ring传递对于cache中数据存储情况的消息,即Store消息;处理节点通过环形结构串联起来,每个处理节点运行一个线程,各个线程之间也存在逻辑关系,按照先后依次运行在环上的每个处理节点,处理节点的排列和线程的分布形成一个顺序的对应关系;
1.4增加专门的逻辑控制电路来扩展处理节点一级cache控制器的功能,使得该控制器除了完成CPU对cache进行指令和数据访问中的失效、写回和替换的处理功能外,还通过双环结构发布自身所属处理节点对于数据的访问信息,获取和传播其它节点对于数据的访问情况,并借助转发总线完成对局部cache一致性的维护;
1.5对一级数据cache标志位进行扩展:保留一般cache中设计的V和D位,添加RS位,表明在执行新的线程时该数据块是否需要设置为无效;添加U、L、S位,以字为单位进行标识,U位表明本处理节点有没有修改过该字,修改过则置1;L用于标识本处理节点是否读取过该字,在第一次读取之前会发送Load消息,获得最新数据后将L位设置为1,以后的读取则不必发送Load消息;S位表明针对本节点的修改是否发送过Store消息,发送store消息是将其设置为1,当该数据被其它节点读取时,就将它清除为0。
2根据权利要求1所述的一种片内多处理器局部cache一致性的双环监听方法,其特征在于在一级cache控制器中增加所述逻辑控制电路后,一级cache控制器工作过程是:
2.1CPU对数据的读取和写回访问都发送给本地处理节点的一级数据cache,该一级cache作如下的处理:
2.1.1访问时命中cache,对于读取操作,即Load操作,根据该数据块中相应字的L和U标志位判断本地节点是否读取或修改过该数据,判断结果为真,则将数据传送到本地处理器;否则通过L-ring向前驱节点发送Load消息,如果前驱节点中拥有更新的数据,则通过转发总线读取新的数据到数据cache,没有新数据则不读取转发总线,最后将正确的数据传送给处理器,同时设置L位;对于存储操作,即Store操作,则将数据写入一级cache,如果S位为0,通过S-ring向后继节点的cache发送Store消息,并设置S位为1,否则不发送store消息,无论是否发送消息,数据写入后CPU都继续执行,即消息的发送与CPU运行是并行的;
2.1.2访问时如果发生cache失效,相应CPU暂停;
2.1.2.1如果需要写回,对于主处理节点,将数据写回二级cache;对于非主处理节点,仅将数据缓冲,成为主处理节点后方能真正写回;
2.1.2.2不需要写回或者写回已经完成,向二级cache发送读请求,将数据所在的数据块读取到本处理节点的cache,同时对于Load操作通过L-ring向前驱发送Load消息;从二级cache的读取完成后,对于Load操作,根据Load消息的返回结果对数据块进行更新,而后发送给CPU使它继续执行,同时设置L位;对于Store操作,将数据存入刚读进的数据块,CPU继续执行,同时通过S-ring向后继节点发送Store消息并设置S位;
2.2cache控制器收到消息时,根据消息的不同类型分别进行处理:
2.2.1从L-ring上收到来自后继节点的Load消息,根据消息中的地址信息,查找本地的cache是否具有该数据的新拷贝,存在新的拷贝则通过转发总线将新的数据拷贝传递给相应的处理节点,同时清除cache中该数据的S位,否则对于主处理节点发送确认信号给本消息的源节点表明各个处理节点都不存在新的数据拷贝,对于非主处理节点就将消息继续向自身的前驱节点进行传递;
2.2.2从S-ring上收到来自前驱节点的Store消息,根据源节点与本地节点的关系分别处理如下:
2.2.2.1如果本处理节点属于该消息的后继节点,则根据消息中的地址信息,检查cache的L位,判断本处理节点是否读取了该数据的旧拷贝,如果读过则进行必要的补救措施:可以执行一定的补偿代码,代码通过编译器设置或者重新执行本地的线程,同时设置消息中的R位,而后将消息向后继传递;如果没有读取过该数据的旧拷贝,如果U位为1,清除消息中对应的W位,而后发送消息,否则直接转发该消息到后继节点;
2.2.2.2如果本处理节点属于该消息的逻辑前驱,则将消息向后继节点传递,同时按照消息中的地址信息,检查本地cache中是否具有该数据块,有则设置RS位为1,表明本处理节点执行新的线程时需要将该数据块无效;
2.2.2.3如果该消息是由本节点发送的,则回收该消息;
2.3冲突解决和优先级的设置:环形结构决定了系统中同类型的消息只能够顺序传送;如果出现冲突则优先发送来自逻辑顺序较前的节点的消息,即对于L-ring上的处理是优先发送本地的Load消息,缓冲来自后继的Load消息;对于S-ring上的消息如果出现了冲突,比较逻辑顺序,发送逻辑顺序最前的消息,缓冲其他的;
2.4如果处理节点的逻辑标识id需要改变,在设计实现时,设计者有两种方法可选:先排空双环结构上的消息,再进行逻辑顺序号的改变;或者直接清除上面的消息,id更新后再重新发送这些消息。
3根据权利要求1所述的一种片内多处理器局部cache一致性的双环监听方法,其特征在于所述load消息含有对于cache中数据的读取信息,Store消息含有对于cache存储的信息,load消息和Store消息数据结构中都拥有的部分是:Th.id用于传递消息发起者的线程逻辑id;数据块地址用于传递该消息所涉及的数据块的地址;Wi表明消息感兴趣的某个或者某几个字;另外,Store消息中设计R位,用于传递发现了超前访问的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101105657A CN1258716C (zh) | 2003-11-26 | 2003-11-26 | 片内多处理器局部cache一致性的双环监听方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101105657A CN1258716C (zh) | 2003-11-26 | 2003-11-26 | 片内多处理器局部cache一致性的双环监听方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1545034A CN1545034A (zh) | 2004-11-10 |
CN1258716C true CN1258716C (zh) | 2006-06-07 |
Family
ID=34335663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101105657A Expired - Fee Related CN1258716C (zh) | 2003-11-26 | 2003-11-26 | 片内多处理器局部cache一致性的双环监听方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1258716C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446987B (zh) * | 2007-11-27 | 2011-12-14 | 上海高性能集成电路设计中心 | 一种用于多核处理器Cache一致性实物验证的装置 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4421592B2 (ja) * | 2006-11-09 | 2010-02-24 | 株式会社ソニー・コンピュータエンタテインメント | マルチプロセッサシステム、その制御方法、プログラム及び情報記憶媒体 |
CN101676887B (zh) * | 2008-08-15 | 2012-07-25 | 北京北大众志微系统科技有限责任公司 | 一种基于ahb总线结构的总线监听方法及装置 |
CN101840356B (zh) * | 2009-12-25 | 2012-11-21 | 北京网康科技有限公司 | 一种基于ring的多核CPU负载均衡方法及系统 |
CN102103568B (zh) * | 2011-01-30 | 2012-10-10 | 中国科学院计算技术研究所 | 片上多核处理器系统的高速缓存一致性协议的实现方法 |
CN102508783B (zh) * | 2011-10-18 | 2014-04-09 | 深圳市共进电子股份有限公司 | 一种避免数据混乱的内存回收方法 |
CN102609362A (zh) * | 2012-01-30 | 2012-07-25 | 复旦大学 | 一种共享高速缓存动态划分方法与电路 |
CN102866923B (zh) * | 2012-09-07 | 2015-01-28 | 杭州中天微系统有限公司 | 对称多核的高效一致性侦听过滤装置 |
CN103279428B (zh) * | 2013-05-08 | 2016-01-27 | 中国人民解放军国防科学技术大学 | 一种显式的面向流应用的多核Cache一致性主动管理方法 |
US9367504B2 (en) * | 2013-12-20 | 2016-06-14 | International Business Machines Corporation | Coherency overcommit |
WO2016149880A1 (zh) * | 2015-03-20 | 2016-09-29 | 华为技术有限公司 | 数据读取方法、设备和系统 |
CN106649141B (zh) * | 2016-11-02 | 2019-10-18 | 郑州云海信息技术有限公司 | 一种基于ceph的存储交互装置及存储系统 |
US10120805B2 (en) * | 2017-01-18 | 2018-11-06 | Intel Corporation | Managing memory for secure enclaves |
CN110049104A (zh) * | 2019-03-15 | 2019-07-23 | 佛山市顺德区中山大学研究院 | 基于分层片上互连网络的混合缓存方法、系统及存储介质 |
CN112285627B (zh) * | 2020-09-22 | 2022-06-17 | 浙江瑞银电子有限公司 | 一种提高大电流直流电流表测量准确度的方法 |
-
2003
- 2003-11-26 CN CNB2003101105657A patent/CN1258716C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446987B (zh) * | 2007-11-27 | 2011-12-14 | 上海高性能集成电路设计中心 | 一种用于多核处理器Cache一致性实物验证的装置 |
Also Published As
Publication number | Publication date |
---|---|
CN1545034A (zh) | 2004-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1258716C (zh) | 片内多处理器局部cache一致性的双环监听方法 | |
CN1157659C (zh) | 非均匀存储器访问数据处理系统及其通信方法 | |
CN1273899C (zh) | 在非对称异构多处理器环境中提供原子更新原语的方法 | |
Karlin et al. | Competitive snoopy caching | |
JP5440067B2 (ja) | キャッシュメモリ制御装置およびキャッシュメモリ制御方法 | |
US5692149A (en) | Block replacement method in cache only memory architecture multiprocessor | |
JP3281893B2 (ja) | キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム | |
JP3470951B2 (ja) | 非一様メモリ・アクセス・コンピュータ・システム及びその操作方法 | |
US7363435B1 (en) | System and method for coherence prediction | |
CN1208723C (zh) | 处理有序数据请求到存储器的方法及设备 | |
CN1746867A (zh) | 使用核心指示符的高速缓存过滤 | |
US20060143406A1 (en) | Predictive early write-back of owned cache blocks in a shared memory computer system | |
CN101840390B (zh) | 适用于多处理器系统的硬件同步电路结构及其实现方法 | |
US7664900B2 (en) | Multiprocessor system and method for processing memory access | |
CN105183662A (zh) | 一种无cache一致性协议的分布式共享片上存储架构 | |
JP2001051959A (ja) | 少なくとも1つのnuma(non−uniformmemoryaccess)データ処理システムとして構成可能な相互接続された処理ノード | |
CN102681890B (zh) | 一种应用于线程级推测并行的限制性值传递方法和装置 | |
CN110750356A (zh) | 适用于非易失性内存的多核交互方法、系统及存储介质 | |
CN1506845A (zh) | 异构代理高速缓存一致性和限制数据传输的方法和装置 | |
CN105718242A (zh) | 多核dsp中支持软硬件数据一致性的处理方法及系统 | |
CN112527729A (zh) | 一种紧耦合异构多核处理器架构及其处理方法 | |
KR100257993B1 (ko) | 분산 공유 메모리 시스템에서 미세 통신과 대단위 통신의 병합을 위한 적응형 입도 방법 | |
CN1464415A (zh) | 一种多处理器系统 | |
CN1052562A (zh) | 具有单比特置位和复位功能的主存储器插板 | |
US20080082756A1 (en) | Mechanisms and methods of using self-reconciled data to reduce cache coherence overhead in multiprocessor systems |
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 | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |