一种基于双相关链的监听应答处理方法

文档序号:6374418阅读:272来源:国知局
专利名称:一种基于双相关链的监听应答处理方法
技术领域
本发明主要涉及到多核微处理器设计领域,特指一种涉及cache —致性协议中有关监听事务的处理方法。
背景技术
在分布式计算机的设计中,它 的存储系统往往是分布式的。在分布式的cache中,无论是共享cache还是私有cache,都需要保证多个cache中的各个副本保持一致,所以需要硬件或软件来实现cache —致性协议。现有的多机cache —致性协议中,对于监听冲突的解决往往影响着协议的正确性和效率。不当的处理方式往往导致死锁或者活锁,或者多次重发监听报文。

发明内容
本发明要解决的技术问题就在于针对现有技术存在的技术问题,本发明提供一种能够解决了死锁或者活锁的情况、避免了指令重发、并可高效解决监听响应处理顺序的基于双相关链的监听应答处理方法。为解决上述技术问题,本发明采用以下技术方案
一种基于双相关链的监听应答处理方法,其特征在于
在Cache中设置不命中缓冲区MB,所述缓冲区MB中存放Cache流水线中不能一次完成的访存指令;所述访存指令包括本地访存指令和远程监听指令,所述本地访存指令是指核向Cache发出的访存指令,所述远程监听指令是指目录控制器发送过来的监听指令;
为本地访存指令建立本地相关链,具有相同地址的访存指令进入本地相关链,等待前面同地址的访存指令执行;进入缓冲区MB的监听访问建立监听链,具有相同地址的监听指令则进入监听相关链,等待前面同地址的访存指令的执行。作为本发明的进一步改进
所述本地访存指令包括取数load、存数store以及取指ifetch指令。所述远程监听指令包括共享读监听、读作废监听以及作废监听指令。所述为本地访存指令建立本地相关链是指如果新插入的本地访问指令与缓冲区MB中已有指令相关,则插入到本地相关链的尾部。所述进入缓冲区MB的监听访问建立监听链是指如果新插入的监听访问指令与缓冲区MB中已有的多条指令相关,则这些指令必定在本地相关链上,将为本地相关链链头的指令建立监听链,本地相关链的链头也成为了监听链的链头,而新插入的监听指令成为监听链的链尾。当本地访问的响应返回时,根据返回的是Nrsp还是Rsp,决定指令的唤醒顺序;具体是(1)、如果返回的响应是Nrsp,就会检查;如有监听链,激活监听指令,删除监听链,将当前指令插入到监听链的后面;如果没有监听链,重新激活当前指令;(2)、如果返回的是Rsp,则会激活当前指令,而此时监听链上的指令会挂在当前指令后执行。
如果指令是本地访问,则检查是否监听链的链头,如果是,则唤醒监听指令,且把本地相关链上的其他指令插入到监听指令后,监听指令成为本地相关链的链头;如果指令是监听指令,则唤醒监听链的链头指令继续执行。与现有技术相比,本发明的优点在于
I、本发明的基于双相关链的监听应答处理方法,为本地访存指令建立本地相关链,具有相同地址的访存指令进入本地相关链,等待前面同地址的访存指令执行;而具有相同地址的监听指令则进入监听相关链,等待前面同地址的访存指令的执行。这样,可以根据当前正在执行的相关指令的响应情况来决定后面应该执行本地指令还是监听指令。2、本发明的基于双相关链的监听应答处理方法,根据响应返回的是Nrsp还是Rsp 来决定先完成监听还是后完成监听。原理是如果返回的Nrsp,那么必定有其他的访问得到了数据的所有权,那么监听指令可能就是获占有权的请求方发出的,所以监听应该成功完成,而如果返回的是RSP,则意味着本地Cache获得了数据的所有权,理应完成本地访问后再响应监听。本发明有效解决了可能存在的死锁或者活锁,尽可能避免了指令重发,高效地解决了监听响应的处理顺序。


图I是本发明的流程示意图。图2是一种多核微处理器的存储结构示意图。图3是另一种多核微处理器的存储结构示意图。图4是一个完整带有监听的访存流程示意图。图5是本地cache访问在cache中的处理流程示意图。图6是监听访问在cache中的处理流程示意图。图7是Cache中的MB的相关链结构。图8是Cache中的MB的监听链结构。图9是MB中的相关链与监听链同时存在的情况。图10是当本地访存的Nrsp响应返回时,监听链与相关链的变化示意图。图11是当本地访存的Rsp响应返回时,监听链与相关链的变化示意图。图12是当相关链与监听链的链头因执行结束,退出MB时的唤醒和相关链变化示意图。
具体实施例方式以下将结合说明书附图和具体实施例对本发明做进一步详细说明。如图2所示,为一种多核微处理器的存储结构示意图。在多核微处理器中,每个核都有一个私有的Cache,这些私有的Cache再通过交叉开关网络与目录控制器相连接,目录控制器存放并管理数据在各个cache中的状态。目录控制器的下面连接下一级Cache或者主存控制器。当Cache遇到没有命中时,会向目录控制器发送访存请求,目录控制器会根据目前状况给出响应。目录控制器在遇到一个Cache访问的数据已经在另外一个Cache中有副本时,会向这个拥有数据副本的Cache发送监听指令。拥有数据副本的Cache接收到监听指令后,会给出监听应答。
如图3所示,为另一种多核微处理器的存储结构示意图。在多核微处理器中的两个核共享一个Cache。如图4所示,为一个完整带有监听的访存流程示意图。(I)首先,由核A向CacheO发起本地访问;(2) CacheO经过查找后发现CacheO中没有该数据的副本,于是向目录控制器发起访存请求,该访存请求经过交叉开关 网络到达目录控制器;(3)目录控制器查看该数据在各Cache中的状态,发现在Cachel中有该数据的副本,于是向Cachel发起监听请求。该监听请求通过交叉开关网络到达Cachel ; (4) Cachel将数据返回给目录控制器,称为监听应答。监听应答通过交叉开关网络到达目录控制器;(5)目录控制器将数据返回给CacheO,称为访存响应。如图5所示,为本地cache访问在cache中的处理流程示意图。本地访问请求进入cache后,首先检查访问地址是否在cache中命中。如果命中,则在cache中根据指令要求执行读、写、作废等操作,操作完成后向请求方返回数据或者响应。如果不命中,则将指令插入到MB中,并将指令加入到相关指令链的尾部。然后,判断该指令的数据是否已经存在于cache中的其他buffer结构中;如果没有,贝Ij需要向下一级cache或者主存发出读数据请求。如图I所示,本发明的基于双相关链的监听应答处理方法,为
在Cache中设置不命中缓冲区MB,MB中存放的是cache流水线中不能一次完成的访存指令,其中包括本地访存指令和远程监听指令。本地访存指令是指核向cache发出的访存指令,如取数(load),存数(store),取指(ifetch)等,而远程监听指令是指目录控制器发送过来的监听指令,如共享读监听(RDS),读作废监听(RDI)和作废监听。参见图9,为本地访存指令建立本地相关链,具有相同地址的访存指令进入本地相关链,等待前面同地址的访存指令执行;而具有相同地址的监听指令则进入监听相关链,等待前面同地址的访存指令的执行。这样做的好处是,可以根据当前正在执行的相关指令的响应情况来决定后面应该执行本地指令还是监听指令。在具体应用实例中,本发明的基于双相关链的监听应答处理方法,具体流程为
(I)、在Cache中设置不命中缓冲区MB ;MB中存放的是cache流水线中不能一次完成的
访存指令。该MB是一个CAM结构,新插入的指令可以检查是否与其中已有的指令有地址相关。(2)、进入MB的本地访问建立本地相关链;本地访问是指上面的核对cache发起的访存指令,包括如取数(load),存数(store),取指(ifetch)等。方法是,如果新插入的本地访问指令与MB中已有指令相关,则插入到本地相关链的尾部。如图7所示,为Cache中的MB的本地相关链结构。MB中存放的是在Cache中无法一遍完成的所有访存指令,其中包括了发生不命中,需要向目录控制器发送访存请求的本地指令以及监听指令。Ioad(A)是一条读地址A的取数指令,store (A, Dl)是向地址A写Dl的存储指令,store (A,D2)是向地址A写D2的存储指令。最先到达的Ioad(A)指令是链头,而最后到达的store (A,D2)指令是链尾。MB中的每一项都有一个指针,指向相关链中的下一项。(3)、进入MB的监听访问建立监听链;监听访问是指目录控制器向Cache发起的监听指令,如共享读监听,读作废监听,作废监听。如果新插入的监听访问指令与MB中已有的多条指令相关,则这些指令必定在本地相关链上,将为本地相关链链头的指令建立监听链,本地相关链的链头也成为了监听链的链头,而新插入的监听指令成为监听链的链尾。如图8所示,为Cache中的MB的监听链结构。当监听指令进入Cache, Cache发现有本地尚未完成的访问指令与监听指令相关,此时正存放在MB中。那么监听指令也会进入MB,并以相关的本地指令作为链头,如果有多条相关的本地访问指令,则选取链头指令作为监听链的链头,监听指令作为链尾。由于目录控制器对于同一地址只会发出一条监听指令,所以监听链只有链头和链尾,没有中间项。 (4)、本地访问的响应返回时,根据返回的是Nrsp(产生Nrsp的原因是所要读取的数据正在被其他的访问占用)还是Rsp,决定指令的唤醒顺序。具体是4. I、如果返回的响应是Nrsp,就会检查;如有监听链,激活监听指令,删除监听链,将当前指令插入到监听链的后面;如果没有监听链,重新激活当前指令;4. 2、如果返回的是Rsp,则会激活当前指令,而此时监听链上的指令会挂在当前指令后执行。(5)、指令从MB中退出的唤醒顺序;如果指令是本地访问,则检查是否监听链的链头,如果是,则唤醒监听指令,且把本地相关链上的其他指令插入到监听指令后,监听指令成为本地相关链的链头。如果指令是监听指令,则唤醒监听链的链头指令继续执行。如图5所示,为监听访问在cache中的处理流程示意图。监听访问进入cache后,首先检查访问地址是否在cache中命中,如果不命中,贝U返回一个监听应答NAck,指示在cache中无数据。如果命中,则进一步检查是否是第一次执行且在MB中已经有相关指令(具有同一 cache行地址的指令)。如果是,则将指令插入到MB中,并将指令加入到监听链的尾部,监听链的链头则是相关链的第一条指令;监听指令进入MB后,在这里等待唤醒事件的发生,唤醒事件包括相关指令向下一级cache或者主存的请求返回或者相关指令执行完,从MB中退出。唤醒条件满足后会重新开始执行,并删除监听链,调整相关链。如果不是第一遍执行或者无相关指令,则进行流水线操作,根据cache是否有数据以及监听类型决定监听应答是否带数据返回,最后给出监听应答NAck或者Ack。图9为MB中的相关链与监听链同时存在的情况。在监听链存在时,监听链的链头必定是相关链的链头,相关链可以有I到多项,但是监听链只有两项。Ioad(A)是最先到Cache的本地访问指令,store (A, Dl)和store (A, D2)是后续到达的本地访问指令,snoop (A)是在load后面到达的监听指令。图10为当本地访存的Nrsp响应返回时,图9中监听链与相关链的变化情况。当目录控制器返回Nrsp时,将会唤醒MB中监听链上的监听指令Snoop(A)执行,删除监听链,而snoop (A)将作为相关链的链头进入相关链,这样,snoop (A)执行完后将唤醒Ioad(A)执行。图11为当本地访存的Rsp响应返回时,图9中监听链与相关链的变化情况。当目录控制器返回Rsp时,将会唤醒MB中监听链上的监听指令Ioad(A)执行,删除监听链,将snoop (A)作为后续指令插入Ioad(A)与其他相关指令之间,这样Ioad(A)完成时,就可以唤醒snoop (A)指令执行。图12为当图9中的相关链与监听链的链头因执行结束,退出MB时的唤醒和相关链变化。当Ioad(A)执行完后,如果其监听链上存在监听指令,则要唤醒监听指令snoop (A)指令执行,同时删除监听链,将监听指令snoop (A)插入相关链,成为相关链的链头。这样snoop (A)执彳了完后才执彳了本地的相关指令。以上仅是本发明的优选实 施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
权利要求
1.一种基于双相关链的监听应答处理方法,其特征在干 在Cache中设置不命中缓冲区MB,所述缓冲区MB中存放Cache流水线中不能一次完成的访存指令;所述访存指令包括本地访存指令和远程监听指令,所述本地访存指令是指核向Cache发出的访存指令,所述远程监听指令是指目录控制器发送过来的监听指令; 为本地访存指令建立本地相关链,具有相同地址的访存指令进入本地相关链,等待前面同地址的访存指令执行;进入缓冲区MB的监听访问建立监听链,具有相同地址的监听指令则进入监听相关链,等待前面同地址的访存指令的执行。
2.根据权利要求I所述的基于双相关链的监听应答处理方法,其特征在于,所述本地访存指令包括取数load、存数store以及取指ifetch指令。
3.根据权利要求I所述的基于双相关链的监听应答处理方法,其特征在于,所述远程监听指令包括共享读监听、读作废监听以及作废监听指令。
4.根据权利要求I或2或3所述的基于双相关链的监听应答处理方法,其特征在于,所述为本地访存指令建立本地相关链是指如果新插入的本地访问指令与缓冲区MB中已有指令相关,则插入到本地相关链的尾部。
5.根据权利要求4所述的基于双相关链的监听应答处理方法,其特征在干,所述进入缓冲区MB的监听访问建立监听链是指如果新插入的监听访问指令与缓冲区MB中已有的多条指令相关,则这些指令必定在本地相关链上,将为本地相关链链头的指令建立监听链,本地相关链的链头也成为了监听链的链头,而新插入的监听指令成为监听链的链尾。
6.根据权利要求5所述的基于双相关链的监听应答处理方法,其特征在干,当本地访问的响应返回时,根据返回的是Nrsp还是Rsp,决定指令的唤醒顺序;具体是(I)、如果返回的响应是Nrsp,就会检查;如有监听链,激活监听指令,删除监听链,将当前指令插入到监听链的后面;如果没有监听链,重新激活当前指令;(2)、如果返回的是Rsp,则会激活当前指令,而此时监听链上的指令会挂在当前指令后执行。
7.根据权利要求6所述的基于双相关链的监听应答处理方法,其特征在干,如果指令是本地访问,则检查是否监听链的链头,如果是,则唤醒监听指令,且把本地相关链上的其他指令插入到监听指令后,监听指令成为本地相关链的链头;如果指令是监听指令,则唤醒监听链的链头指令继续执行。
全文摘要
一种基于双相关链的监听应答处理方法,在Cache中设置不命中缓冲区MB,缓冲区MB中存放Cache流水线中不能一次完成的访存指令;访存指令包括本地访存指令和远程监听指令,本地访存指令是指核向Cache发出的访存指令,远程监听指令是指目录控制器发送过来的监听指令;为本地访存指令建立本地相关链,具有相同地址的访存指令进入本地相关链,等待前面同地址的访存指令执行;进入缓冲区MB的监听访问建立监听链,具有相同地址的监听指令则进入监听相关链,等待前面同地址的访存指令的执行。本发明能够解决死锁或者活锁的情况,从而避免了指令重发,并可高效解决监听响应处理顺序。
文档编号G06F13/16GK102819506SQ20121027487
公开日2012年12月12日 申请日期2012年8月3日 优先权日2012年8月3日
发明者衣晓飞, 邓让钰, 李永进, 晏小波, 周宏伟, 张英, 窦强, 曾坤, 谢伦国 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1