首页> 中国专利> Cache一致性协议验证方法以及多核处理器系统

Cache一致性协议验证方法以及多核处理器系统

摘要

本发明提供了一种Cache一致性协议验证方法以及多核处理器系统。根据本发明的Cache一致性协议验证方法包括:在监视器内设置多个队列,每个队列包括多个单元,用于记录尚未处理完毕的所有一次请求;将所有地址相关的请求按照其进入一致性处理部件的顺序依次保存在同一个队列的单元内;利用每个单元独立跟踪所记录请求的行为状态。根据本发明的基于监视器的Cache一致性协议验证方法能够根据Cache一致性协议对访存地址相关的请求保证按序处理的特性,采用一个监视器对Cache一致性处理部件的协议级行为进行精准监测,可以实现对每一个请求包的行为精确监测;通过调整监视器内的内容,使得Cache一致性协议验证方法适用于各种一致性协议的验证。

著录项

  • 公开/公告号CN102880467A

    专利类型发明专利

  • 公开/公告日2013-01-16

    原文格式PDF

  • 申请/专利权人 无锡江南计算技术研究所;

    申请/专利号CN201210325660.8

  • 申请日2012-09-05

  • 分类号G06F9/44;G06F15/167;

  • 代理机构北京众合诚成知识产权代理有限公司;

  • 代理人龚燮英

  • 地址 214083 江苏省无锡市滨湖区军东新村030号

  • 入库时间 2024-02-19 17:04:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-06-08

    授权

    授权

  • 2013-02-27

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20120905

    实质审查的生效

  • 2013-01-16

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域;更具体地说,本发明涉及一种Cache一 致性协议验证方法;此外,本发明还涉及一种采用了该Cache一致性协议 验证方法的多核处理器系统。

背景技术

随着半导体制造工艺的飞速发展,单核处理器的主频已经逐渐逼近极 限,为了进一步提高处理器的运算速度,人们将多个处理器核集成在一个 芯片上形成片上多处理器(Chip Multi一Processor,CMP)。

在CMP中,多个处理器核心对单一内存空间的共享使得处理器和主 存储器之间的速度差距的矛盾更加突出,因此CMP设计必须采用多级高 速缓存(Cache),通过层次化的存储结构来缓解这一矛盾。CMP系统必须 解决由此而引发的Cache一致性问题以及一致性验证问题。采用什么样的 Cache一致性模型与它的验证方法都将对CMP的整体设计与开发产生重要 影响。

Cache一致性协议作为多核处理器中的重要组成部分,直接影响到多 核处理器的正确性设计和性能,Cache一致性协议验证技术成为多核处理 器设计验证阶段的关键技术之一。

但是,在现有技术中,多核处理器上的Cache一致性协议处理过程与 处理器结构密切相关,Cache一致性协议的验证技术与Cache一致性协议 的内容密切相关,不具备普遍性。

因此,希望能够提出一种适用于各种Cache一致性协议的验证的Cache 一致性协议验证方法。

发明内容

本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一 种基于监视器的Cache一致性协议验证方法,其根据一致性协议对访存地 址相关的请求保证按序处理的特性,采用一个监视器对Cache一致性处理 部件的协议级行为进行精准监测,可以实现对每一个请求包的行为精确监 测;通过调整监视器内的内容,使得Cache一致性协议验证方法适用于各 种一致性协议的验证。

根据本发明的第一方面,提供了一种Cache一致性协议验证方法,其 包括:在监视器内设置多个队列,每个队列包括多个单元,用于记录尚未 处理完毕的所有一次请求;将所有地址相关的请求按照其进入一致性处理 部件的顺序依次保存在同一个队列的单元内;利用每个单元独立跟踪所记 录请求的行为状态。

优选地,所述监测器只监测片上多处理器的输入和输出,监测时只考 虑片上多处理器的正常运行时的情况。

优选地,所述监视器内设置了256个256深度的一次请求队列,用于 记录片上多处理器正在处理的一次请求,其中相同Cache行地址的请求进 相同队列。

优选地,在队列中,按照一次请求进入顺序排队,每个队列还对每个 请求条目设有一个请求跟踪状态机,所述请求跟踪状态机用来跟踪请求的 处理情况。

优选地,每个队列设一个尾指针和一个实头指针,尾指针在每个新请 求写入时更新,实头指针在头指针所指请求为终止态时加一。

优选地,每个队列设有悬挂虚指针、MAQ虚指针和二次请求虚指针, 分别指向正在处于悬挂态的请求条目、刚收到MAQ请求的条目和刚收到 二次请求的条目。

优选地,处于悬挂态的请求条目包括处于地址悬挂态的请求条目以及 MAQ队列悬挂态的请求条目。

优选地,进入片上多处理器的一次请求同时进入监测器,在监测器中 根据请求的Cache行地址进入队列之一;其中队列分配方法是:当有相同 请求地址的请求登记在某个队列中时,则请求进入该队列,否则在空队列 中任选一个队列进入,并登记请求的地址于队列管理模块。

优选地,同一队列内,任何请求都不会超越处于地址悬挂态或MAQ 队列悬挂态的请求退出,任何MAQ请求都不会超越MAQ请求退出,任 何二次请求不会超越二次请求退出。

根据本发明的第二方面,提供了一种采用了根据本发明的第一方面所 述的Cache一致性协议验证方法的多核处理器系统。

根据本发明,在监视器内设置多个队列,每个队列包括多个单元,用 于记录尚未处理完毕的所有一次请求,所有地址相关的请求按照进入一致 性处理部件的顺序依次保存在同一个队列的单元内,每个单元独立跟踪所 记录请求的行为状态;根据记录的请求类型、端口信号的序列,可以精确 的判断一个请求在一致性处理中的生命期,以及处理正确与否。由此,根 据本发明的基于监视器的Cache一致性协议验证方法能够根据Cache一致 性协议对访存地址相关的请求保证按序处理的特性,采用一个监视器对 Cache一致性处理部件的协议级行为进行精准监测,可以实现对每一个请 求包的行为精确监测;通过调整监视器内的内容,使得Cache一致性协议 验证方法适用于各种一致性协议的验证。

附图说明

结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更 完整的理解并且更容易地理解其伴随的优点和特征,其中:

图1示意性地示出了根据本发明实施例的Cache一致性协议验证方法 中监视器的操作的示意图。

图2示意性地示出了根据本发明实施例采用的二维队列的示意图。

图3示意性地示出了根据本发明实施例采用的二维队列的属性的示意 图。

图4示意性地示出了根据本发明实施例采用的等待队列的示意图。

需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示 结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标 有相同或者类似的标号。

具体实施方式

为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对 本发明的内容进行详细描述。

本发明的Cache一致性协议验证方法包括:在监视器内设置多个队列, 每个队列包括多个单元,用于记录尚未处理完毕的所有一次请求;将所有 地址相关的请求按照其进入一致性处理部件的顺序依次保存在同一个队 列的单元内;利用每个单元独立跟踪所记录请求的行为状态。由此,根据 记录的请求类型、端口信号的序列,可以精确的判断一个请求在一致性处 理中的生命期,以及处理正确与否。

下面将具体描述根据本发明实施例的Cache一致性协议验证方法。

图1示意性地示出了根据本发明实施例的Cache一致性协议验证方法 中监视器的操作的示意图。

在本发明实施例中,监测器只监测片上多处理器CPM的输入和输出, 即将CPM作为一个黑盒来监测CPM行为的正确性,监测时只考虑CPM 正常运行时的情况。

如图1所示,监视器内设256个256深度的一次请求队列Q0…Q255, 用于记录CPM正在处理的一次请求,相同Cache行地址的请求进相同队 列。

并且,按照一次请求进入顺序排队,每个队列还对每个请求条目设有 一个请求跟踪状态机,该请求跟踪状态机用来跟踪请求的处理情况。

在一次请求写入时,请求跟踪状态机会处于初始态,请求跟踪状态机 通过跟踪MAQ队列输出maq、二次请求队列输出rq2、响应队列输出ack、 回答输入resp和存控输入mcack而改变。

请求在CPM中处理的生命周期将由请求跟踪状态机来标识,当请求 在CPM中完全处理完成时,跟踪状态机将进入终止态。处于终止态的请 求即为无效请求,不会被输入输出接口的命令信息所命中。

每个队列设一个尾指针和一个实头指针,尾指针在每个新请求写入时 更新(递增1,即+1),实头指针在头指针所指请求为终止态时加一,实 头指针之后的请求条目可能会先于实头指针指示条目处于终止态,因此实 头指针可能会连续更新。当尾指针追上实头指针时,队列满。

在实际应用中,在队列深度为256时,队列一般不会满;除非非常非 常极端的情况,此时,在出现队列满时,要查其原因。

每个队列还设有三个虚头指针,悬挂虚指针、MAQ虚指针和二次请 求虚指针,分别指向正在处于悬挂态(地址悬挂或MAQ悬挂)的请求条 目、刚收到MAQ请求的条目和刚收到二次请求的条目。

进入CPM的一次请求同时进入监测器,在监测器中根据请求的Cache 行地址进入队列之一(在本实施例中,256个一次请求队列之一)。其中, 队列分配方法是:当有相同请求地址的请求登记在某个队列中时,则请求 进入该队列,否则在空队列中任选一个队列进入,并登记请求的地址于队 列管理模块。

对于CPM所有外部接口上的有效输入输出,都采用其所捎带的SID (Security Identifiers,安全标识符)号与256个一次请求队列上的256个 条目进行全相连比较。正常情况下,一个输入或输出方向上的有效命令一 次会命中且只会命中256×256个条目中的一个,否则报错。两个方向可 能会同时命中同一个条目。请求的跟踪状态机可处理这种情况。此外,如 果从接口传递过来的命令信息命中256个队列中某个请求条目,但状态不 匹配,也要报错。

同一队列内,任何请求都不会超越处于地址悬挂态或MAQ队列悬挂 态的请求退出,任何MAQ请求都不会超越MAQ请求退出,任何二次请 求不会超越二次请求退出。也就是1)不会有悬挂虚指针指向之后的请求 条目被任何端口命中,悬挂虚指针只有请求条目中有被悬挂才有效,悬挂 状态通过二次请求捕获,有些CPM内部悬挂没法通过二次请求反映,则 不做检查;2)不会有MAQ请求虚指针之前的请求条目被MAQ输出命中, MAQ请求虚指针一直有效,初值等于实头指针,随MAQ输出而更新;3) 不会有二次请求虚指针之前的请求条目被二次请求输出命中,二次请求虚 指针一直有效,初值等于实头指针,随二次请求输出而更新。

测试结束时,256个队列应处于空状态,否则报错。

下面将描述具体示例。

下述表格示出了队列单元的结构的一个具体示例:

其中:

如一个ReadBlk请求,依次接监测到MAQ读、存控读响应、响应 (ReadData,有APQ),则其状态ID依次可以为:

初始:00-0000 00-0000 00-0000 00-0000 00-0000 00-0000

MAQ读:10-0000 00-0000 00-0000 00-0000 00-0000 00-0000

存控读响应:10-0000 10-1000 00-0000 00-0000 00-0000 00-0000

响应:10-0000 10-1000 11-0000 00-0000 00-0000 00-0000

图2示意性地示出了根据本发明实施例采用的二维队列的示意图。图 3示意性地示出了二维队列的属性的示意图。对于每一个队列,都具有图 3所示的属性。

如图3所示,当dealaddr的blocking=1时,禁止出现dealaddr+1的相 关信号。

具体地说,其中

cacheaddr:pa[38:7],访存地址Cache行;

tailaddr:尾指针,指向要下一个写入的地址;

headaddr:头指针,当前位置单元的rq1type变为全1则后移;

dealaddr:处理指针,当前被处理的最后一个请求的地址, [headaddr,dealaddr-1)和(dealaddr+1,tailaddr)的单元的blocking标志不 允许为1;该地址只能按照从headaddr->tailaddr的方向移动;

dealaddr的加1条件:

当前地址的blocking标志=0

&&(dealaddr,tailaddr)地址单元的id0.port_type由00变为他值;

maqdeal_addr:MAQ请求处理指针,该指针指示最后一个本地址MAQ 请求(比较{src,sid},访存地址下标相等)对应的一次请求的位置;该地址 只能按照从headaddr->tailaddr的方向移动;

maqdeal_addr的移动条件:

(maqdeal_addr,tailaddr)范围单元的监测到有对应的MAQ请求,则 需要将maqdeal_addr赋值为对应的单元地址值;

rq2deal_addr:二次请求处理指针,该指针指示最后一个输出的本地址 二次请求(比较{src,sid})对应的一次请求的位置;该地址只能按照从 headaddr->tailaddr的方向移动;

rq2deal_addr的移动条件:

(rq2deal_addr,tailaddr)范围单元的监测到有对应的rq2请求,则 需要将rq2deal_addr赋值为对应的单元地址值;

respdeal_addr:回答处理指针,该指针指示最后一个输入的本地址回 答(比较{src,sid})对应的一次请求的位置;该地址只能按照从respdeal_addr ->tailaddr的方向移动;

respdeal_addr的移动条件:

(respdeal_addr,tailaddr)范围单元的监测到有对应的回答,则需要 将respdeal_addr赋值为对应的单元地址值;

异常:以下条件可能同时成立

1)[headaddr,dealaddr-1)和(dealaddr+1,tailaddr)范围内有单元的 blocking值1

2)(dealaddr+2,tailaddr)范围内有单元的id0.port_type由00变为他值 ---------------同地址请求的处理不是顺序的

3)dealaddr单元的blocking=1时,有其他单元的blocking值1;

4)监测到[headaddr,maqdeal_addr)范围单元的请求有对应的MAQ 请求;

5)监测到[headaddr,rq2deal_addr)范围单元的请求有对应的二次请求;

6)监测到[headaddr,respdeal_addr)范围单元的请求有对应的回答;

图4示意性地示出了根据本发明实施例采用的等待队列的示意图。

如图4所示,该队列中保存的是地址无关的、返回响应、但是PA3淘 汰流程尚未结束的带有后缀*Dvic的请求。本队列中的单元只可能命中 MAQ写和回答,因此只考虑这两种信号的命中情况,命中条件和二维队 列单元一致,仍需遵循MAQ请求处理和回答的顺序性,需要指针如下:

tailaddr:尾指针,指向要下一个写入的地址;

headaddr:头指针,当前位置单元的rq1type变为全1则后移;

maqdeal_addr:MAQ请求处理指针,该指针指示最后一个本地 址MAQ请求(比较{src,sid},访存地址下标相等)对应的一次请求的位置; 该地址只能按照从headaddr->tailaddr的方向移动;

respdeal_addr:回答处理指针,该指针指示最后一个输入的本地 址回答(比较{src,sid})对应的一次请求的位置;该地址只能按照从 respdeal_addr->tailaddr的方向移动;

异常:以下条件可能同时成立

1)监测到[headaddr,maqdeal_addr)范围单元的请求有对应的MAQ 请求;

2)监测到[headaddr,respdeal_addr)范围单元的请求有对应的回答。

根据本发明实施例,通过队列机制对请求间序的行为进行监测,保证 一致性请求处理序的正确;并且,通过状态跟踪机制跟踪请求处理状态的 变化,保证请求的处理符合目标一致性协议的定义。

根据本发明实施例,通过监视器的方法,动态监测一致性处理部件的 运行,这样可以运行随机的一致性测试,并监测一致性测试的正确性。极 大地简化了一致性测试的编写,增大了一致测试的强度。

根据本发明的另一优选实施例,本发明还提供了一种采用了上述 Cache一致性协议验证方法的多核处理器系统。

可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施 例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离 本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术 方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此, 凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例 所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的 范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号