太阳城集团

  • / 20
  • 下载费用:30 金币  

基于位置对应关系的指令CACHE一致性的实现方法.pdf

摘要
申请专利号:

CN201611147800.1

申请日:

2016.12.13

公开号:

CN106776367A

公开日:

2017.05.31

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 12/0817申请日:20161213|||公开
IPC分类号: G06F12/0817(2016.01)I; G06F12/0808(2016.01)I 主分类号: G06F12/0817
申请人: 上海高性能集成电路设计中心
发明人: 胡向东; 李俊; 蒋生健
地址: 200120 上海市浦东新区张江高科园区毕升路399号
优先权:
专利代理机构: 上海泰能知识产权代理事务所 31233 代理人: 宋缨;钱文斌
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

太阳城集团CN201611147800.1

授权太阳城集团号:

|||

法律状态太阳城集团日:

太阳城集团2017.06.23|||2017.05.31

法律状态类型:

太阳城集团实质审查的生效|||公开

摘要

本发明涉及一种基于位置对应关系的指令Cache一致性的实现方法,在指令Cache管理部件和二级Cache管理部件设置具有相同组织结构的Itag阵列和FB装填缓冲,其中,指令Cache管理部件采用虚地址,二级Cache管理部件采用物理地址。当出现指令访问指令Cache缺失时,先申请V??FB装填缓冲的条目,再根据V??FB装填缓冲的条目申请P??FB装填缓冲的条目,当指令Cache块数据完全返回指令Cache管理部件后,V??FB装填缓冲开始装填V??Itag阵列,装填完毕后,根据装填V??Itag阵列的位置,P??FB装填缓冲将内容装填到P??Itag阵列的相应位置,最后依序将P??FB装填缓冲的条目和V??FB装填缓冲的条目置无效。本发明实现了指令Cache的一致性。

权利要求书

1.一种基于位置对应关系的指令Cache一致性的实现方法,其特征在于,在指令Cache
管理部件设置V-Itag阵列和V-FB装填缓冲,在二级Cache管理部件中设置P-Itag阵列和P-
FB装填缓冲,其中,V-FB装填缓冲和P-FB装填缓冲具有相同组织结构,V-FB装填缓冲与P-FB
装填缓冲在相同的位置上保存着同一个Cache行的太阳城集团,V-FB装填缓冲记录的是虚地址,P-
FB装填缓冲记录的物理地址;V-Itag阵列和P-Itag阵列具有相同组织结构,V-Itag阵列与
P-Itag阵列中相同的位置存放着同一个Cache行的太阳城集团,V-Itag阵列采用虚地址标记,P-
Itag阵列采用物理地址标记;
当出现指令访问指令Cache缺失时,对指令Cache缺失进行装填,具体为:先申请V-FB装
填缓冲的条目并记录所需太阳城集团,再根据V-FB装填缓冲的条目申请P-FB装填缓冲的条目并记
录所需太阳城集团,当指令Cache块数据完全返回指令Cache管理部件后,V-FB装填缓冲开始装填
V-Itag阵列,装填完毕后,根据装填V-Itag阵列的位置,P-FB装填缓冲将内容装填到P-Itag
阵列的相应位置,最后依序将P-FB装填缓冲的条目和V-FB装填缓冲的条目置无效。
2.根据权利要求1所述的基于位置对应关系的指令Cache一致性的实现方法,其特征在
于,所述申请V-FB装填缓冲的条目以及与其相应的P-FB装填缓冲的条目并记录所需太阳城集团具
体为:先申请V-FB装填缓冲的条目,并在所述V-FB装填缓冲的条目中记录所需太阳城集团,接着获
取缺失的Cache块的物理地址,然后向二级Cache管理部件发送一次请求,申请与所述先申
请V-FB装填缓冲的条目相应的P-FB装填缓冲的条目,并在所述P-FB装填缓冲的条目中记录
所需太阳城集团。
3.根据权利要求1所述的基于位置对应关系的指令Cache一致性的实现方法,其特征在
于,所述V-FB装填缓冲装填V-Itag阵列完毕后向二级Cache管理部件发送拷贝类请求,P-FB
装填缓冲将内容装填到P-Itag阵列中,其中,装填到P-Itag阵列中位置与装填到V-Itag阵
列中的位置相对应。
4.根据权利要求1所述的基于位置对应关系的指令Cache一致性的实现方法,其特征在
于,所述V-FB装填缓冲装填V-Itag阵列时,在装填Cache块的第一个Flit数据时,将原有位
置的V-Itag置无效,装填Cache块的最后一个Flit数据的时候将新的地址装填至V-Itag中
并置有效。
5.根据权利要求1所述的基于位置对应关系的指令Cache一致性的实现方法,其特征在
于,当发生数据错误时,指令Cache管理部件向二级Cache管理部件发送抛弃类请求,二级
Cache管理部件把相应的P-FB装填缓冲的条目置无效,然后向指令Cache管理部件发送响应
太阳城集团;指令Cache管理部件接收到该抛弃类请求的响应太阳城集团后,把相应的V-FB装填缓冲的条
目置无效。
6.根据权利要求1所述的基于位置对应关系的指令Cache一致性的实现方法,其特征在
于,在装填过程中,在二级Cache管理部件接收到写类请求或者外部置无效类二次请求时,
根据所述写类请求和外部置无效类二次请求的物理地址查询P-Itag阵列和P-FB装填缓冲,
当发现P-Itag阵列或P-FB装填缓冲中有所述物理地址的副本时置P-Itag阵列相应位置或
P-FB装填缓冲相应条目无效,并将P-Itag阵列所在位置或P-FB装填缓冲的条目作为太阳城集团向
指令Cache管理部件发送置无效二次请求。
7.根据权利要求6所述的基于位置对应关系的指令Cache一致性的实现方法,其特征在
于,若指令Cache管理部件收到将P-FB装填缓冲的条目作为太阳城集团的置无效二次请求时,处理
过程如下:
如果V-FB装填缓冲中的内容正处于已经发送抛弃类请求且等待二级Cache管理部件返
回响应时,不进行处理;
如果V-FB装填缓冲中的内容正处于已经发送拷贝类请求且等待二级Cache返回管理部
件响应时,对V-FB装填缓冲不进行处理,将V-Itag阵列中所对应的副本置无效;
如果V-FB装填缓冲中的内容已经装填完指令Cache,但还没有发送拷贝类请求,也没有
抛弃类请求,则将V-FB装填缓冲置无效,同时将V-Itag阵列中所对应的副本置无效;
如果V-FB装填缓冲中的内容还未装填完指令Cache,且没有发送拷贝类请求或者抛弃
类请求,则将V-FB装填缓冲置无效。
8.根据权利要求6所述的基于位置对应关系的指令Cache一致性的实现方法,其特征在
于,若指令Cache管理部件收到将P-Itag阵列所在位置作为太阳城集团的置无效二次请求时,处理
过程如下:
如果V-Itag阵列所在位置还未被V-FB装填缓冲中的内容完全覆盖,即V-FB装填缓冲中
的内容还未开始装填或者还没有完成装填指令Cache,则将V-Itag阵列所在位置的内容置
无效;
如果V-FB装填缓冲中的内容已经完成对V-Itag阵列所在位置的装填,则忽略该置无效
二次请求。

说明书

基于位置对应关系的指令Cache一致性的实现方法

技术领域

本发明涉及微处理器的Cache一致性技术领域,特别是涉及一种基于位置对应关
系的指令Cache一致性的实现方法。

背景技术

现代微处理器中,Cache已是标准配置,通常有指令Cache(简称“I-Cache”),数据
Cache(简称“D-Cache”),二级Cache(简称“L2-Cache”),三级Cache(简称“L3-Cache”)等。要
实现Cache之间的数据互通,必须要维护Cache之间的数据一致性。通常情况下,D-Cache,
L2-Cache或者L3-Cache都存有可写副本,并且是以物理地址的方式存储。而I-Cache内是只
读副本,可以以物理地址的方式存储,也可以以虚地址的方式存储。

副本要获得可写权限,需要将其他同样拥有此副本的Cache置无效。通常,判断是
否拥有同样的副本的标准是看副本的物理地址是否与正在获取可写权限的副本的物理地
址是否同属于一个Cache块。

指令地址空间中存储数据的是指令。一般情况下,指令都是事先编译好的,CPU并
不需要对指令空间中存储的内容进行修改。但是对于执行像Java这类的解释性的程序,CPU
需要执行的指令是临时生成的,而不是事先编译好的,所以CPU一边“生产”指令,一边“消
费”指令。“生产”指令的过程,实际上就是对指令空间进行写操作,在指令空间中旧的副本
需要被清除。如果旧的副本在I-Cache中,则需要从I-Cache将旧的副本置无效。对于不支持
指令Cache一致性的CPU而言,I-Cache置无效的方式通常是I-Cache全部刷新,并且需要软
件干预,不过这样做的缺点是效率较低,而且I-Cache的刷新会将一些不需要被清理的副本
也被清理出去,造成不必要的I-Cache缺失,影响性能。

硬件支持指令Cache一致性可以更好的支持Java这类解释性程序的执行,即由硬
件保证,CPU写指令空间的数据时,硬件自动将I-Cache中相应的旧的指令置无效。这样CPU
在“消费”自己“生产”的指令时,可以无需软件完成置无效的动作,就可以取到正确的新指
令。

对于以物理地址存储的I-Cache而言,硬件实现指令Cache一致性时,由于L2-
Cache也是物理地址存储,故只需按照物理地址来生成二次请求即可。不过以物理地址存储
的指令Cache在访问的时候,比直接用虚地址存储的指令Cache访问起来要多一个I-TLB的
虚实地址代换步骤。而对于用虚地址存储的I-Cache,由于L2-Cache是按照物理地址存储,
则二次请求无法直接按照地址生成,硬件实现指令Cache的一致性需要寻找新的方法。

发明内容

本发明所要解决的技术问题是提供一种基于位置对应关系的指令Cache一致性的
实现方法,使得在I-Cache为虚地址存储且L2-Cache为物理地址存储的前提下,实现指令
Cache的一致性。

本发明解决其技术问题所采用的技术方案是:提供一种基于位置对应关系的指令
Cache一致性的实现方法,在指令Cache管理部件设置V-Itag阵列和V-FB装填缓冲,在二级
Cache管理部件中设置P-Itag阵列和P-FB装填缓冲,其中,V-FB装填缓冲和P-FB装填缓冲具
有相同组织结构,V-FB装填缓冲与P-FB装填缓冲在相同的位置上保存着同一个Cache行的
太阳城集团,V-FB装填缓冲记录的是虚地址,P-FB装填缓冲记录的物理地址;V-Itag阵列和P-Itag
阵列具有相同组织结构,V-Itag阵列与P-Itag阵列中相同的位置存放着同一个Cache行的
太阳城集团,V-Itag阵列采用虚地址标记,P-Itag阵列采用物理地址标记;

当出现指令访问指令Cache缺失时,对指令Cache缺失进行装填,具体为:先申请V-
FB装填缓冲的条目并记录所需太阳城集团,再根据V-FB装填缓冲的条目申请P-FB装填缓冲的条目
并记录所需太阳城集团,当指令Cache块数据完全返回指令Cache管理部件后,V-FB装填缓冲开始
装填V-Itag阵列,装填完毕后,根据装填V-Itag阵列的位置,P-FB装填缓冲将内容装填到P-
Itag阵列的相应位置,最后依序将P-FB装填缓冲的条目和V-FB装填缓冲的条目置无效。

所述申请V-FB装填缓冲的条目以及与其相应的P-FB装填缓冲的条目并记录所需
太阳城集团具体为:先申请V-FB装填缓冲的条目,并在所述V-FB装填缓冲的条目中记录所需太阳城集团,
接着获取缺失的Cache块的物理地址,然后向二级Cache管理部件发送一次请求,申请与所
述先申请V-FB装填缓冲的条目相应的P-FB装填缓冲的条目,并在所述P-FB装填缓冲的条目
中记录所需太阳城集团。

所述V-FB装填缓冲装填V-Itag阵列完毕后向二级Cache管理部件发送拷贝类请
求,P-FB装填缓冲将内容装填到P-Itag阵列中,其中,装填到P-Itag阵列中位置与装填到V-
Itag阵列中的位置相对应。

所述V-FB装填缓冲装填V-Itag阵列时,在装填Cache块的第一个Flit数据时,将原
有位置的V-Itag置无效,装填Cache块的最后一个Flit数据的时候将新的地址装填至V-
Itag中并置有效。

当发生数据错误时,指令Cache管理部件向二级Cache管理部件发送抛弃类请求,
二级Cache管理部件把相应的P-FB装填缓冲的条目置无效,然后向指令Cache管理部件发送
响应太阳城集团;指令Cache管理部件接收到该抛弃类请求的响应太阳城集团后,把相应的V-FB装填缓冲
的条目置无效。

在装填过程中,在二级Cache管理部件接收到写类请求或者外部置无效类二次请
求时,根据所述写类请求和外部置无效类二次请求的物理地址查询P-Itag阵列和P-FB装填
缓冲,当发现P-Itag阵列或P-FB装填缓冲中有所述物理地址的副本时置P-Itag阵列相应位
置或P-FB装填缓冲相应条目无效,并将P-Itag阵列所在位置或P-FB装填缓冲的条目作为信
息向指令Cache管理部件发送置无效二次请求。

若指令Cache管理部件收到将P-FB装填缓冲的条目作为太阳城集团的置无效二次请求
时,处理过程如下:

如果V-FB装填缓冲中的内容正处于已经发送抛弃类请求且等待二级Cache管理部
件返回响应时,不进行处理;

如果V-FB装填缓冲中的内容正处于已经发送拷贝类请求且等待二级Cache返回管
理部件响应时,对V-FB装填缓冲不进行处理,将V-Itag阵列中所对应的副本置无效;

如果V-FB装填缓冲中的内容已经装填完指令Cache,但还没有发送拷贝类请求,也
没有抛弃类请求,则将V-FB装填缓冲置无效,同时将V-Itag阵列中所对应的副本置无效;

如果V-FB装填缓冲中的内容还未装填完指令Cache,且没有发送拷贝类请求或者
抛弃类请求,则将V-FB装填缓冲置无效。

若指令Cache管理部件收到将P-Itag阵列所在位置作为太阳城集团的置无效二次请求
时,处理过程如下:

如果V-Itag阵列所在位置还未被V-FB装填缓冲中的内容完全覆盖,即V-FB装填缓
冲中的内容还未开始装填或者还没有完成装填指令Cache,则将V-Itag阵列所在位置的内
容置无效;

如果V-FB装填缓冲中的内容已经完成对V-Itag阵列所在位置的装填,则忽略该置
无效二次请求。

有益效果

由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效
果:本发明不基于地址对应关系,无需TLB代换,也不需要L2-Cache与I-Cache为包含关系,
能够在I-Cache为虚地址标记且L2-Cache为物理地址标记的情况下,利用在L2-Cache管理
部件中设置的与指令Tag对应的缓冲,通过位置判别的方式,实现I-Cache与L2-Cache的一
致性。该方法对I-Cache和L2-Cache的相互约束要求少,在一边生产指令、一边消费指令的
应用模式下,可以提高微处理器的性能。

附图说明

图1是本发明所涉及的存储器层次示意图;

图2为取指请求不命中I-Cache和V-FB时,分配V-FB条目,并且申请分配编号相同
的P-FB条目示意图;

图3为V-FB条目装填V-Itag示意图;

图4为拷贝类请求CP及其响应处理流程示意图;

图5为抛弃类请求EV及其响应处理流程示意图;

图6为V-FB条目还未开始或者未完成装填V-Itag时收到置V-FB无效二次请处理流
程示意图;

图7为V-FB条目完成装填V-Itag但未发出拷贝类请求时收到置V-FB无效二次请处
理流程示意图;

图8为置V-FB无效二次请求与拷贝类请求同时存在处理流程示意图;

图9为置V-FB无效二次请求与抛弃类请求同时存在处理流程示意图;

图10为V-FB还未完成装填V-Itag时,置V-Itag无效二次请处理流程示意图;

图11为V-FB完成装填V-Itag后,置V-Itag无效二次请处理流程示意图。

具体实施方式

下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明
而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人
员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定
的范围。

本发明的实施方式涉及一种基于位置对应关系的指令Cache一致性的实现方法,
该发明涉及的存储器层次如图1所示,包括I-Cache管理部件、D-Cache管理部件、L2-Cache
管理部件、L3-Cache管理部件以及存储器等结构,在I-Cache管理部件和L2-Cache管理部件
中设置相同组织结构的Itag阵列和FB装填缓冲。V-FB装填缓冲与P-FB装填缓冲在相同的位
置上保存着同一个Cache行的太阳城集团,只是V-FB装填缓冲记录的是虚地址,P-FB装填缓冲记录
的物理地址。V-Itag阵列与P-Itag阵列中相同的位置(同索引同路)也存放着同一个Cache
行的太阳城集团,其中V-Itag阵列采用虚地址标记,P-FB阵列采用物理地址标记。在装填条目的短
暂几拍内,允许V-Itag阵列与P-Itag阵列,V-FB装填缓冲与P-FB装填缓冲存储的内容不一
致,但处理流程会保证这几拍的正确性,并最终使得L2-Cache管理部件中的记录和I-Cache
管理部件中的记录保持一致。

D-Cache的写类请求和外部置无效类二次请求都有可能命中P-FB或者P-Itag,造
成相应条目的置无效,此时需要通知I-Cache管理部件中的V-FB和V-Itag进行相应的操作。
另外,I-Cache管理部件也可以发送拷贝类请求或者抛弃类请求给L2-Cache管理部件,并得
到响应,从而维护I-Cache的一致性。

如图2所示,当取指请求不命中指令Cache,也不命中V-FB装填缓冲时,申请一个V-
FB装填缓冲的条目,如图中黑色阴影块所示;然后向L2-Cache管理部件申请与V-FB装填缓
冲的编号相同的P-FB装填缓冲的条目。在申请V-FB装填缓冲的条目时,已经确定好该条目
将来装填的V-Itag阵列的位置,如图中竖线阴影所示。此时该V-Itag阵列的位置可能无效,
也可能有效且为其他Cache行的太阳城集团。

具体地说,当出现指令访问指令Cache缺失,总是先申请V-FB装填缓冲的条目,假
设为条目i,在申请的条目i中记录好所需太阳城集团之后,再查询I-TLB,获取缺失Cache块的物理
地址,然后向L2-Cache管理部件发送一次请求,申请与V-FB装填缓冲相对应的P-FB装填缓
冲的条目i,记录所需太阳城集团。然后查询L2-Cache管理部件,等待数据返回。

如图3所示,当指令数据由L2-Cache管理部件返回到V-FB装填缓冲中时,在适当的
时机,比如指令Cache管理部件的写端口有空闲时,将V-FB装填缓冲中的数据装填到V-Itag
阵列中。装填的过程需要持续多个时钟周期。具体地说,当指令Cache块数据完全返回I-
Cache管理部件后,V-FB装填缓冲开始装填指令Cache,修改V-Itag阵列。由于装填一个
Cache块需要多个周期,所以一般的装填处理都是在装填Cache块的第一个Flit数据时,将
原有位置的V-Itag置无效,装填Cache块的最后一个Flit数据的时候将新的地址装填至V-
Itag中并置有效。

如图4所示,当V-FB装填缓冲的条目完成装填V-Itag阵列时,向L2-Cache管理部件
发送拷贝类请求CP,把P-FB装填缓冲中的内容装填到P-Itag阵列对应的条目中,装填完成
后,把该P-FB装填缓冲的条目置无效,同时向I-Cache管理部件发送拷贝类请求的响应。当
I-Cache管理部件接收到该响应时,把对应的V-FB装填缓冲的条目置无效,完成一次装填过
程。也就是说,在V-FB装填缓冲将整个Cache块的数据装填完毕之后,向L2-Cache管理部件
发出拷贝类请求CP,携带V-FB装填缓冲的条目号i,被装填的V-Itag的索引号X和路号W,通
知第i个条目的P-FB装填缓冲,将物理地址写入索引号X和路号W的P-Itag阵列中并置有效,
然后P-FB装填缓冲的条目i被删除,并向I-Cache管理部件返回完成响应,V-FB装填缓冲收
到该完成响应后,删除条目i。

如图5所示,当由于发生数据错等原因,需要抛弃某个V-FB条目时,I-Cache管理部
件向L2-Cache管理部件发送抛弃类请求EV,L2-Cache管理部件把相应的P-FB条目置无效,
然后向I-Cache管理部件发送响应太阳城集团。I-Cache管理部件接收到该抛弃类请求的响应后,
把相应的V-FB条目置无效,完成一次抛弃类请求的处理流程。

也就是说,当V-FB装填缓冲的条目i因为某种原因(装填的数据有错误或者装填的
数据是错误路径上的无效数据)无需对指令Cache进行装填时,向L2-Cache管理部件发出抛
弃类请求EV。P-FB装填缓冲收到该请求后,删除条目i,然后向V-FB装填缓冲返回完成响应,
之后V-FB装填缓冲删除条目i。

假定上述V-FB装填缓冲的条目i中存放的将要装填的新Cache块的数据为W,在V-
Itag阵列中将要被覆盖的旧Cache块的数据为D,可能收到的置无效二次请求如下:

在数据W完全装入V-FB装填缓冲的条目i之后,不论数据W是否已经装入V-Itag阵
列中,I-Cache管理部件都可能会收到L2-Cache管理部件发过来针对数据W的置无效二次请
求;在数据W还未完全装入V-FB装填缓冲的条目i之前,则L2-Cache管理部件不会发出针对W
的二次请求。

对于数据D,在V-FB装填缓冲的条目i完成对V-Itag阵列的装填,向L2-Cache管理
部件发出拷贝类请求,并且收到L2-Cache管理部件的响应之后,I-Cache管理部件不会收到
针对数据D的置无效二次请求。在收到上述L2-Cache管理部件的响应之前,都有可能收到针
对数据D的置无效二次请求。

在上述可能收到置无效二次请求的太阳城集团段中,当L2-Cache管理部件收到由D-
Cache管理部件发送的写类请求或者由存储器/三级缓存管理部件发送的外部置无效请求
时,通过写类请求或外部置无效请求的物理地址A同时查询P-Itag阵列和P-FB装填缓冲。当
符合下述任一条件时I-Cache管理部件将收到置无效二次请求:(1)若发现P-Itag阵列中有
地址A的副本,则记录地址A的副本所在的索引号X和路号W,并作为二次请求的太阳城集团发给I-
Cache管理部件;(2)若发现P-FB装填缓冲有地址A的副本,则记录地址A的副本所在的条目
号i,并作为二次请求的太阳城集团发给I-Cache管理部件。

I-Cache管理部件在不同的阶段,针对收到的数据W和数据D的置无效二次请求,有
不同的处理方式。

若I-Cache管理部件收到针对V-FB装填缓冲的条目i(即数据W)的置无效二次请求
时,处理如下:

如果数据W还未装填完指令Cache,且没有发送拷贝类请求CP或者抛弃类请求EV,
则只需要把W置无效即可。如图6所示,当写类请求或者外部置无效类二次请求命中某个P-
FB装填缓冲的条目时,需要将该P-FB装填缓冲的条目置无效,同时向I-Cache管理部件发送
置V-FB装填缓冲无效二次请求。如果对应的V-FB装填缓冲的条目还未装填完指令Cache,且
当前没有发出拷贝类请求或者抛弃类请求时,则把该V-FB装填缓冲的条目置无效。

如果数据W已经装填完指令Cache,但还没有发送拷贝类请求CP,也没有抛弃类请
求EV,则需要把数据W置无效,也需要把V-Itag中索引号X和路号W的副本置无效,因为此时
数据D所在的位置已经被数据W覆盖。如图7所示,当写类请求或者外部置无效类二次请求命
中某个P-FB装填缓冲的条目时,需要将该P-FB装填缓冲的条目置无效,同时向I-Cache管理
部件发送置V-FB装填缓冲的无效二次请求。如果对应的V-FB装填缓冲已经装填完指令
Cache,但还没有发送拷贝类请求CP,也没有抛弃类请求EV,则把该V-FB装填缓冲的条目置
无效,也要把该V-FB条目装填的V-Itag阵列所对应的索引号和路号中的内容置无效。将V-
Itag阵列置无效的动作完成之后,其对应的P-Itag阵列情况有可能:一种为无效;另一种为
有效且为旧的地址。如果该P-Itag阵列为有效,则I-Cache管理部件可能会收到置V-Itag阵
列的无效二次请求,由于此时V-Itag阵列的对应位置的内容已经无效,因此再次置无效不
会产生任何效果,不会影响正确性。

如果数据W正处于已经发送拷贝类请求CP且等待L2Cache返回管理部件响应时,对
V-FB装填缓冲不进行处理,但是要把V-Itag阵列中索引号X和路号W的副本置无效,因为此
时数据D所在的位置已经被数据W覆盖。如图8所示,当写类请求或者外部置无效类二次请求
命中某个P-FB条目时,需要将该P-FB装填缓冲的条目置无效,同时向I-Cache管理部件发送
置V-FB装填缓冲的无效二次请求。I-Cache管理部件接收到该二次请求时,发现对应的V-FB
装填缓冲的条目已经发出拷贝类请求CP,正在等待L2-Cache管理部件的响应,则把该V-FB
装填缓冲的条目装填的V-Itag阵列中的内容置无效。L2-Cache管理部件处理该拷贝类请
求,并向I-Cache管理部件发送响应。I-Cache管理部件接到该拷贝类请求的响应后才把该
V-FB装填缓冲的条目置无效。

如果数据W正处于已经发送抛弃类请求EV且等待L2-Cache管理部件返回响应时,
不进行处理。如图9所示,当写类请求或者外部置无效类二次请求命中某个P-FB装填缓冲的
条目时,需要将该P-FB装填缓冲的条目置无效,同时向I-Cache管理部件发送置V-FB装填缓
冲的无效二次请求。I-Cache管理部件接收到该二次请求时,发现对应的条目已经发出抛弃
类请求EV,正在等待L2-Cache管理部件的响应,则忽略该置V-FB装填缓冲的无效二次请求。
L2Cache管理部件处理该抛弃类请求,并向I-Cache端发送响应。I-Cache管理部件接到该抛
弃类请求的响应后才把该V-FB条目置无效。

若I-Cache管理部件收到针对V-Itag阵列中索引号X和路号W(即数据D)的副本的
置无效二次请求,处理如下:

如果此时数据D还未被数据W完全覆盖,即数据W还未开始装填或者还没有完成装
填I-Cache,则把I-Cache中的D置无效。如图10所示,当写类请求或者外部置无效类二次请
求命中某个P-Itag阵列所对应位置时,需要将该P-Itag阵列所对应的位置置无效,同时向
I-Cache管理部件发送置V-Itag阵列的无效二次请求。I-Cache管理部件接收到该二次请求
时,发现该V-Itag阵列对应的V-FB装填缓冲的条目不处于装填完成的状态,则把该V-Itag
阵列所对应的位置中的内容置无效。此时如果处于装填过程中,由于装填开始时会把该V-
Itag阵列的所对应的位置置无效,所以再次置无效不会产生任何效果,装填仍然可以继续。

如果数据W已经完成对V-Itag中索引号X和路号W的的装填,则忽略该置无效二次
请求。如图11所示,当写类请求或者外部置无效类二次请求命中某个P-Itag阵列所对应的
位置时,需要将该P-Itag所对应的位置置无效,同时向I-Cache管理部件发送置V-Itag阵列
的无效二次请求。I-Cache管理部件接收到该二次请求时,发现该V-Itag阵列对应的V-FB装
填缓冲条目处于装填完成的状态,则说明L2-Cache管理部件命中的是装填之前的条目,且
该条目已经被新的内容覆盖,因此可以直接忽略该置V-Itag阵列无效二次请求。

不难发现,本发明不基于地址对应关系,无需TLB代换,也不需要L2-Cache与I-
Cache为包含关系,能够在I-Cache为虚地址标记且L2-Cache为物理地址标记的情况下,利
用在L2-Cache管理部件中设置的与指令Tag对应的缓冲,通过位置判别的方式,实现I-
Cache与L2-Cache的一致性。该方法对I-Cache和L2-Cache的相互约束要求少,在一边生产
指令、一边消费指令的应用模式下,可以提高微处理器的性能。

关 键 词:
基于 位置 对应 关系 指令 CACHE 一致性 实现 方法
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:基于位置对应关系的指令CACHE一致性的实现方法.pdf
链接地址:http://zh228.com/p-6019676.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');