数据高速缓存虚拟提示路线预测及其应用.pdf

上传人:n****g 文档编号:971268 上传时间:2018-03-22 格式:PDF 页数:55 大小:2.55MB
返回 下载 相关 举报
摘要
申请专利号:

CN200780042526.4

申请日:

2007.09.28

公开号:

CN101558388A

公开日:

2009.10.14

当前法律状态:

授权

有效性:

有权

法律详情:

专利权的转移IPC(主分类):G06F 12/00变更事项:专利权人变更前权利人:跨线桥有限责任公司变更后权利人:ARM海外金融有限公司变更事项:地址变更前权利人:美国新泽西变更后权利人:英国剑桥登记生效日:20141208|||专利权的转移IPC(主分类):G06F 12/00变更事项:专利权人变更前权利人:MIPS技术公司变更后权利人:跨线桥有限责任公司变更事项:地址变更前权利人:美国加利福尼亚变更后权利人:美国新泽西登记生效日:20141208|||授权|||实质审查的生效|||公开

IPC分类号:

G06F12/00

主分类号:

G06F12/00

申请人:

MIPS技术公司

发明人:

梦冰·于; E·K·南贾; M·尼; V·拉杰戈帕兰

地址:

美国加利福尼亚

优先权:

2006.9.29 US 60/848,047; 2006.10.11 US 11/545,706

专利代理机构:

中国国际贸易促进委员会专利商标事务所

代理人:

屠长存

PDF下载: PDF下载
内容摘要

本发明提供一种基于数据高速缓存路线预测方案的虚拟提示及其应用。在一个实施例中,处理器基于虚拟提示值或混叠路线预测值从数据高速缓存取出数据,并且在用于该数据的物理地址可用之前将该数据转送到相关的指令。在物理地址可用之后,将物理地址与转送的数据的物理地址标记值进行比较,以验证该转送的数据是正确数据。如果该转送的数据是正确数据,则生成命中信号。如果该转送的数据不是正确数据,则生成未中信号。对不正确的数据进行运算的任何指令被无效和/或重放。

权利要求书

1.  一种处理器,包括:
多个第一存储器,被配置用于存储虚拟地址标记位和物理地址标记位;
多个第二存储器,被配置用于存储数据位,每个所述第二存储器与所述多个第一存储器之一对应;以及
第三存储器,被配置用于存储混叠路线预测值,
其中,从由存储在所述第三存储器中的混叠路线预测值所指定的特定第二存储器取出数据位,并且如果在虚拟地址的选择的位和虚拟地址标记位之间不存在匹配,则将该数据位转送到执行单元,所述虚拟地址标记位存储在所述多个第一存储器中在由所述虚拟地址的位索引的位置处。

2.
  根据权利要求1的处理器,其中,如果与所述虚拟地址相关联的物理地址的选择的位与物理地址标记位不匹配,则将未中信号提供到所述执行单元,所述物理地址标记位存储在与所述特定第二存储器相关联的特定第一存储器中在由所述虚拟地址的位所索引的位置处。

3.
  根据权利要求2的处理器,其中,如果所述执行单元接收到所述未中信号,则对转送的数据位进行操作的指令被重放。

4.
  根据权利要求1的处理器,其中,如果与所述虚拟地址相关联的物理地址的选择的位与物理地址标记位匹配,则将命中信号提供到所述执行单元,所述物理地址标记位存储在与所述特定第二存储器相关联的特定第一存储器中在由虚拟地址的位所索引的位置处。

5.
  一种系统,包括:
处理器,其包括
多个第一存储器,被配置用于存储虚拟地址标记位和物理地址标记位,
多个第二存储器,被配置用于存储数据位,每个所述第二存储器与所述多个第一存储器之一对应,以及
第三存储器,被配置用于存储混叠路线预测值,
其中,从由存储在所述第三存储器中的混叠路线预测值指定的特定第二存储器取出数据位,并且如果在虚拟地址的选择的位和虚拟地址标记位之间不存在匹配,则将所述数据位转送到执行单元,所述虚拟地址标记位存储在所述多个第一存储器中在由所述虚拟地址的位索引的位置处;以及
耦合到所述处理器的主存储器。

6.
  根据权利要求5的系统,其中,如果与所述虚拟地址相关联的物理地址的选择的位与物理地址标记位不匹配,则将未中信号提供到所述执行单元,所述物理地址标记位存储在与所述特定第二存储器相关联的特定第一存储器中在由所述虚拟地址的位索引的位置处。

7.
  根据权利要求6的系统,其中,如果所述执行单元接收到所述未中信号,则对所转送的数据位进行操作的指令被重放。

8.
  根据权利要求5的系统,其中,如果与所述虚拟地址相关联的物理地址的选择的位与物理地址标记位匹配,则将命中信号提供到所述执行单元,所述物理地址标记位存储在与所述特定第二存储器相关联的特定第一存储器中在由所述虚拟地址的位所索引的位置处。

9.
  一种有形的计算机可读存储介质,包括以软件实施的处理器,该处理器包括:
多个第一存储器,被配置用于存储虚拟地址标记位和物理地址标记位;
多个第二存储器,被配置用于存储数据位,每个所述第二存储器与所述多个第一存储器之一对应;以及
第三存储器,被配置用于存储混叠路线预测值,
其中,从由存储在所述第三存储器中的混叠路线预测值指定的特定第二存储器取出数据位,并且如果在虚拟地址的选择的位和虚拟地址标记位之间不存在匹配,则将该数据位转送到执行单元,所述虚拟地址标记位存储在所述多个第一存储器中在由所述虚拟地址的位索引的位置处。

10.
  根据权利要求9的有形的计算机可读存储介质,其中,如果与所述虚拟地址相关联的物理地址的选择的位与物理地址标记位不匹配,则将未中信号提供到所述执行单元,所述物理地址标记位存储在与所述特定第二存储器相关联的特定第一存储器中在由所述虚拟地址的位所索引的位置处。

11.
  根据权利要求10的有形的计算机可读存储介质,其中,如果所述执行单元接收到所述未中信号,则对转送的数据位进行操作的指令被重放。

12.
  根据权利要求9的有形的计算机可读存储介质,其中,如果与所述虚拟地址相关联的物理地址的选择的位与物理地址标记位匹配,则将命中信号提供到所述执行单元,所述物理地址标记位存储在与所述特定第二存储器相关联的特定第一存储器中在由所述虚拟地址的位所索引的位置处。

13.
  根据权利要求9的有形的计算机可读存储介质,其中,所述处理器以硬件描述语言软件实施。

14.
  根据权利要求9的有形的计算机可读存储介质,其中,所述处理器以Verilog硬件描述语言软件和VHDL硬件描述语言软件之一实施。

15.
  一种从数据高速缓存取出由存储器访问指令指定的数据的方法,包括:
将与所述存储器访问指令相关联的虚拟地址的选择的位与存储在标记存储器中、在由所述虚拟地址的位索引的位置处的虚拟地址标记位进行比较;
如果所述虚拟地址的所述选择的位与存储在标记存储器中、在由所述虚拟地址的位索引的位置处的虚拟地址标记位不匹配,则从由混叠路线预测值指定的数据存储器取出数据;以及
将与所述虚拟地址相关联的物理地址的选择的位与用于所取出的数据的物理地址标记位进行比较,以确定所取出的数据是否是由所述存储器访问指令指定的数据。

16.
  根据权利要求15的方法,还包括:
如果与所述虚拟地址相关联的所述物理地址的选择的位与用于所取出的数据的物理地址标记位匹配,则生成高速缓存命中信号。

17.
  根据权利要求15的方法,还包括:
如果与所述虚拟地址相关联的所述物理地址的选择的位与用于所取出的数据的物理地址标记位不匹配,则生成高速缓存未中信号。

18.
  一种将由存储器访问指令指定的数据转送到处理器的执行单元的方法,包括:
如果虚拟地址的选择的位与存储在标记存储器中、在由所述虚拟地址的位所索引的位置处的虚拟地址标记位不匹配,则从由混叠路线预测值指定的数据存储器取出数据;
将所取出的数据转送到所述执行单元;以及
将与所述虚拟地址相关联的物理地址的选择的位与用于所转送的数据的物理地址标记位进行比较,以确定所转送的数据是否是由所述存储器访问指令指定的数据。

19.
  根据权利要求18的方法,还包括:
如果与所述虚拟地址相关联的所述物理地址的选择的位与用于所转送的数据的物理地址标记位匹配,则将高速缓存命中信号提供到所述执行单元。

20.
  根据权利要求18的方法,还包括:
如果与所述虚拟地址相关联的所述物理地址的选择的位与用于所转送的数据的物理地址标记位不匹配,则将高速缓存未中信号提供到所述执行单元。

21.
  一种系统,包括:
处理器,其包括存储器,所述存储器被配置用于在第一部分中存储虚拟地址标记位和物理地址标记位,在第二部分中存储数据位,以及在第三部分中存储混叠路线预测值,其中,如果在虚拟地址的选择的位和存储在所述存储器中、由所述虚拟地址的位所索引的位置处的虚拟地址标记位之间不存在匹配,则使用指定的混叠路线预测值取出数据位并且将所述数据位转送到执行单元;以及
耦合到所述处理器的主存储器。

22.
  根据权利要求21的系统,其中,如果与所述虚拟地址相关联的物理地址的选择的位与在由所述虚拟地址的位所索引的存储器位置处的物理地址标记位不匹配,则将未中信号提供到所述执行单元。

说明书

数据高速缓存虚拟提示路线预测及其应用
相关申请的交叉引用
[0001]本申请要求对在2006年9月29日提交的题目为“DataCache Virtual Hint Way Prediction,And Applications Thereof”的美国临时专利申请No.60/848,047(代理人案号No.1778.2410000)的优先权,并且本申请涉及在2006年9月29日提交的题目为“Load/Store Unit For A Processor,And Applications Thereof”的共同拥有的美国临时专利申请No.11/529,728(代理人案号No.1778.2420000),以及在2006年9月29日提交的题目为“Detection AndPrevention Of Write-After-Write Hazards,And ApplicationsThereof”的共同拥有的美国临时专利申请No.11/529,710(代理人案号No.1778.2430000),在此通过引用将其中的每个申请整体并入。
技术领域
[0002]本发明一般涉及处理器。
背景技术
[0003]处理器流水线是已知的用于使处理器更快速工作的技术。这种技术使处理器能够在指令的不同步骤上同时工作,从而利用存在于执行指令所需的步骤之间的并行性。结果,处理器可以在较短时期内执行更多的指令。
[0004]许多处理器,尤其是那些用在嵌入式市场中的处理器,是相对简单的有序(in-order)机器。结果,它们易遭受例如数据故障停滞(data hazard stall)。更加复杂的处理器具有无序(out-of-order)的流水线,无序的流水线允许绕过会使有序处理器流水线停滞的故障调度指令的执行。
[0005]需要的是提高处理器性能的处理器的新技术和结构。
发明内容
[0006]本发明提供基于虚拟提示的数据高速缓存路线预测方案及其应用。在一个实施例中,基于虚拟提示值或混叠(alias)路线预测值,处理器从数据高速缓存取出(retrieve)数据,并且在该数据的物理地址可用之前将该数据转送到相关的指令。在物理地址可用之后,将物理地址与用于转送的数据的物理地址标记(tag)值进行比较,以验证转送的数据是正确数据。如果转送的数据是正确数据,则生成命中信号。如果该转送的数据不是正确数据,则生成未中信号。对不正确的数据进行操作的任何指令被无效和/或重放(replay)。
[0007]下面参考附图详细描述本发明的其它实施例、特征和优点,以及本发明的各种实施例的结构和操作。
附图说明
[0008]被合并于此并且组成说明书一部分的附图和说明书一起示出本发明,还用来解释本发明的原理以及使本领域技术人员能够制造和使用本发明。
[0009]图1A是示出根据本发明一个实施例的处理器的示意图。
[0010]图1B是进一步示出图1A的处理器的示意图。
[0011]图2示出根据本发明一个实施例的示例加载/存储单元。
[0012]图3A示出根据本发明一个实施例的示例加载/存储队列。
[0013]图3B示出根据本发明一个实施例的示例加载数据队列。
[0014]图3C示出根据本发明一个实施例的示例填充/存储缓存器。
[0015]图3D示出根据本发明一个实施例的示例加载/存储完毕(graduation)缓存器。
[0016]图3E示出根据本发明一个实施例的示例数据高速缓存。
[0017]图3F示出虚拟地址混叠的示例情形。
[0018]图3G示出根据本发明一个实施例的数据高速缓存路线的选择。
[0019]图3H示出根据本发明一个实施例的高速缓存命中/未中信号的产生以及怎样更新混叠路线预测值。
[0020]图4A示出加载/存储队列中条目(entries)的分配。
[0021]图4B示出指令的完毕以及加载/存储完毕缓存器中条目的分配。
[0022]图4C示出在填充/存储缓存器中和在加载数据队列中条目的分配以及加载/存储队列中条目的解除分配(de-allocation)。
[0023]图5A示出根据本发明一个实施例的写入后写入故障(write-after-write hazard)的检测。
[0024]图5B示出根据本发明一个实施例的写入后写入故障的防止。
[0025]图5C1示出在加载/存储队列中多个加载条目中写入后写入故障的检测。
[0026]图5C2示出在加载数据队列中多个加载条目中写入后写入故障的检测。
[0027]图5D示出根据本发明一个实施例的多个写入后写入故障的防止。
[0028]图6是根据本发明一个实施例的示例系统的示意图。
[0029]参考附图描述本发明。元件首次出现的附图典型地由相应的附图标记中最左边的数字指示。
具体实施方式
[0030]本发明提供用于执行给予虚拟提示的数据高速缓存路线预测方案及其应用。在本发明以下的具体说明中,“一个实施例”、“实施例”、“示范实施例”、等等的引述表示:所描述的实施例可以包括具体的特征、结构、或特性,但是可以不是每个实施例都必须包括该具体的特征、结构或特性。而且,这样的短语并不必然指相同的实施例。此外,在结合实施例描述具体的特征、结构或特性时,认为结合其它实施例(不管是否被明确地描述)实现这样的特征、结构或特性是在本领域技术人员的认识范围之内的。
[0031]图1是示出根据本发明一个实施例的处理器100的示意图。优选地,处理器100实现加载-存储、精简指令集计算机(RISC)结构。下面描述在图1中示出的处理器100的各种部件和特征。
[0032]尽管本文中将处理器100描述为包括几个分离部件,但是这些部件中许多是可选部件,不是在本发明的每个实施例中都存在,或者可以是组合的元件,以使得两个部件的功能性存在于单个部件中。因此,例如在图1中示出的独立部件是说明性的而不是为了限制本发明。
[0033]如图1A所示,处理器100包括一个或多个执行单元102。在一个实施例中,执行单元102包括整数执行单元(IEU)118和加载/存储单元(LSU)108。IEU 118处理算术运算,例如逻辑运算、移位运算、加法运算和/或减法运算。LSU 108处理加载/存储运算。在其它实施例中,执行单元102还包括例如乘法/除法单元(MDU)120以执行乘法和除法运算。
[0034]在一个实施例中,执行单元102与在寄存器堆(RF)130中的32位寄存器中存储的数据交互。另外,执行单元102可以在一个或多个完成缓存器(CB)128中存储数据。在一个实施例中,第一完成缓存器128包括用于存储来自整数执行单元118和乘法/除法单元120的数据的64位寄存器。第二完成缓存器128包括用于存储来自加载/存储单元108的数据的32位寄存器。可选地,可以包括一个或多个另外的寄存器堆组以使在例如中断和/或异常处理期间上下文(context)切换开销(overhead)最小化。
[0035]执行单元102与指令分派单元(IDU)106、完毕单元(GRU)126、存储器管理单元(MMU)110、寄存器堆130、完成缓存器128以及可选的协处理器124接口连接。
[0036]指令取出单元(IFU)104负责将指令提供到指令分派单元106。在一个实施例中,指令取出单元104包括用于指令高速缓存112的控制逻辑、用于重编码压缩格式指令的可选的重编码器、对来自执行单元102的指令取出单元104进行去耦操作的指令缓存器、和到便笺存储器(scratch pad)(未示出)的接口。在一个实施例中,指令取出单元104执行动态分支预测。指令取出单元104与指令分派单元106、存储器管理单元110、指令高速缓存112和总线接口单元(BIU)116接口连接。
[0037]指令分派单元106负责对从指令取出单元104接收的指令解码,并且在它们的操作数(operand)和所需要的资源可用时将它们分派到执行单元102。在一个实施例中,指令分派单元106可以每个周期按次序从指令取出单元104接收多达两个指令。指令被分配指令标识值和完成缓存器值(CBID)。完成缓存器标识值标识在完成缓存器128中、可用于在通过将结果写入到寄存器堆130而将结果提交给处理器100的结构状态前暂时保存结果的缓存器位置或条目。
[0038]指令分派单元106也执行操作数重命名以便于数据的转送。重命名的指令被写入到被解码指令缓存器(DIB)113中(见图1B)。存储在被解码指令缓存器113中使其所有操作数就绪并且满足所有资源要求的最旧的指令被分派到适当的执行单元用于执行。可以将指令不按程序次序地(out-of-program-order)分派到执行单元102。分派的指令在执行管道中不停滞,并且它们将其结果写入到完成缓存器128中。
[0039]在一个实施例中,指令分派单元106还通过例如执行单元102之内的流水线级(stage)追踪指令的进展,并且更新在重命名映射(map)中以及在被解码指令缓存器113中的所有相关(dependent)指令中操作数的有效性。指令分派单元106还将指令标识、完成缓存器标识和有关的信息值写入到完毕单元126中的结构中。
[0040]加载/存储单元108负责处理加载/存储指令以读取/写入来自数据高速缓存和/或存储器的数据。加载/存储单元108能够处理以不同于程序次序地发出的加载和存储。加载/存储单元还包括数据高速缓存114(见图1B)。数据高速缓存114是被组织为多路设置的关联高速缓存的片上存储器阵列,该多路设置的关联高速缓存例如2路设置的关联高速缓存或4路设置的关联高速缓存。优选地,虚拟地索引数据高速缓存114并且对数据高速缓存114物理地加以标记,由此允许虚拟到物理地址的转换与高速缓存访问并行发生。
[0041]在一个实施例中,加载/存储单元108包括加载/存储队列(LSQ)202和加载存储完毕缓存器(LSGB)204(见图2)。在一个实施例中,加载/存储队列202和加载/存储完毕缓存器204具有相同的条目数目。
[0042]存储器管理单元110将虚拟地址转译为物理地址以用于存储器访问。在一个实施例中,存储器管理单元110包括转译后备缓存器(TLB),并且可以包括分开的指令TLB和分开的数据TLB。存储器管理单元110与指令取出单元104以及加载/存储单元108接口连接。
[0043]指令高速缓存112是被组织为多路设置的关联高速缓存的片上存储器阵列,该多路设置的关联高速缓存例如2路设置的关联高速缓存或4路设置的关联高速缓存。优选地,虚拟地索引指令高速缓存112并且对指令高速缓存112物理地加以标记,由此允许虚拟到物理的地址转换与高速缓存存取并行发生。在一个实施例中,标记包括有效位和除物理地址位之外的可选奇偶位。指令高速缓存112与指令取出单元104连接。
[0044]总线接口单元116控制用于处理器100的外部接口信号。在一个实施例中,总线接口单元116包括用于合并连续写通(write-through)事务和集中来自未缓存的存储的写入的崩溃写入缓存器。
[0045]整数执行单元118执行整数指令。它能够处理不按程序次序地发出的指令。整数执行单元118包括用于执行诸如加法、减法、移位和逻辑运算的算术运算的算术逻辑单元。整数执行单元118与存储在完成缓存器128和寄存器堆130中的数据接口连接并且对该数据进行运算。
[0046]乘法/除法单元120包含用于整数乘法和除法运算的流水线。优选地,该流水线与整数执行单元118中的整数执行流水线并行工作,并且具有到完成缓存器128中的单独的写入端口。在一个实施例中,乘法/除法单元120前瞻(look ahead)并且通知指令分派单元106除法运算即将完成,从而在乘法/除法单元流水线中没有气泡(bubble)。
[0047]协处理器124耦合到执行单元102。在实施例中,协处理器124包含例如用于标识和管理诸如外部事件和/或程序错误的异常的状态信息。在其它实施例中,协处理器124是浮点协处理器,图形协处理器,或负责虚拟到物理地址转换、高速缓存协议、等等的协处理器。在实施例中,处理器100包括多于一个协处理器124。
[0048]完毕单元126负责确保指令完毕并且按程序次序改变处理器100的结构状态。完毕单元126在指令完毕之前还释放指令所使用的缓存器和资源。
[0049]图1B还示出处理器100的操作。如图1B所示,处理器100执行四种基本功能:指令取出;指令解码和分派;指令执行;以及指令完毕。这四种基本功能是说明性的而不是为了限制本发明。
[0050]在PC选择器101在各种程序计数器值中间选择并且确定用于从指令高速缓存112取出指令的值时,指令取出(在图1A中由指令取出单元104表示)开始。在一个实施例中,选择的程序计数器值是新程序线程的程序计数器值、用于现有程序线程的下一个顺序的程序计数器值、或与分支指令或跳转指令相关的重定向程序计数器值。在每个指令被取出之后,PC选择器101选择新值以便取出下一指令。
[0051]在指令取出期间,检查与要从指令高速缓存112取出的指令相关的标记。在一个实施例中,标记包含为每个指令指示指令类型的预编码位。如果这些预编码位指示指令是控制转移指令,则分支历史表被访问并且被用于确定该控制转移指令可能分支还是可能不分支。
[0052]在一个实施例中,取出的任何压缩格式的指令由可选的指令重编码器103重编码为可以由处理器100解码并且执行的格式。例如,在处理器100实现16位指令和32位指令的实施例中,任何16位压缩格式的指令由指令重编码器103重编码以形成具有32位的指令。在另一实施例中,指令重编码器103将16位指令和32位指令重编码为具有超过32位的格式。
[0053]在可选的重编码之后,指令被写入指令缓存器105。在一个实施例中,这个阶段可以被旁路并且指令可以被直接分派到指令解码器107。
[0054]例如在一个或多个指令被从指令缓存器105接收并且由指令解码器107解码时,指令解码和分派(在图1A中由指令分派单元106表示)开始。在一个实施例中,按照分支误预测的解决方案,从指令缓存器105接收指令的能力可以被暂时中止,直到驻留于处理器100的指令执行部分和/或指令完毕部分内的选择的指令被清除为止。
[0055]与指令解码并行地,重命名操作数。位于指令标识(ID)发生器和操作数重命名器109之内的寄存器重命名映射被更新,并且被用于确定所需要的源操作数例如在寄存器堆130和/或完成缓存器128中是否可用。寄存器重命名映射是一种保持在处理器100的程序员可见的结构寄存器和内部的物理寄存器之间的映射信息的结构。寄存器重命名映射指示数据是否可用以及数据在哪里可用。对于此处给出的说明,本领域技术人员将理解,寄存器重命名用于去除指令输出依赖性(dependencies)以及用于确保在任何给定时间在处理器100中存在给定寄存器的单个产生者。重命名源寄存器使得从产生者尽早获得数据而不是等待处理器的结构状态被更新。
[0056]还与指令解码并行地,指令标识(ID)发生器和操作数重命名器109生成指令标识标记并且将其分配到每个指令。使用分配给指令的指令标识标记以例如确定该指令相对于其它指令的程序次序。在一个实施例中,每个指令标识标记是唯一地确定指令的程序次序的线程专用的顺序生成的值。指令标识标记可用于帮助来以程序次序使被不按程序次序执行的指令完毕。
[0057]每个被解码指令由完成缓冲分配器111分配完成缓存器标识值或标记。完成缓存器标识值确定在完成缓存器128中、指令执行单元102可以写入对指令的计算结果的位置。在一个实施例中,使用自由表(free list)实现完成缓存器标识值的分配。自由表包含与完成缓存器128中条目的数目相同数量的条目。可以使用例如位图实现该自由表。位图的第一位可用于指示完成缓存器条目是可用的(如该位具有一的值)还是不可用的(如该位具有零的值)。
[0058]分配的完成缓存器标识值被写入到完毕缓存器121中。在一个实施例中,与新被重命名的指令相关的完成缓存器完成位被重置/清除以指示未完成的结果。当指令完成执行时,设置它们的相应的完成缓存器完成位,由此使指令能够完毕并且释放其关联的完成缓存器标识值。在一个实施例中,控制逻辑(未示出)确保一个程序线程不占用超过其份额的完成缓存器条目。
[0059]如果指令由执行单元102执行,则解码的指令被写入被解码指令缓存器113,如果指令由协处理器124执行,则解码的指令被写入协处理器接口单元122。指令分派器115选择驻留在被解码指令缓存器113中的指令,以便分派到执行单元102。在实施例中,指令可以被分派到执行单元102,以用于不按程序次序的执行。在一个实施例中,假定指令的操作数已被确定为就绪,则例如基于其“年龄(age)”(ID标记),选择并且分派指令。在一个实施例中,协处理器124以程序次序执行指令。
[0060]由于指令被分派,指令执行单元102执行该指令。在执行期间,视情况而定从数据高速缓存114、寄存器堆130和/或完成缓存器128获得操作数数据。由指令执行单元102计算的用于特定指令的结果被写入由指令的关联的完成缓存器标识值指定的完成缓存器128的位置/条目。
[0061]由完毕控制器119控制指令完毕(在图1A中由指令完毕单元126表示)。完毕控制器119根据存储在完毕缓存器121中的完成缓存器标识值使指令完毕。在指令完毕时,将其关联的结果从完成缓存器128传送到寄存器堆130。结合指令完毕,完毕控制器119更新例如完成缓存器分配器111的自由表,以指示在完毕指令的分配的完成缓存器标识值的可用性状态方面的变化。
[0062]图2进一步示出根据本发明一个实施例的示例加载/存储单元108。优选地,加载/存储单元108包括加载/存储单元控制逻辑(LSU Control Logic)200、加载/存储队列(LSQ)202、加载/存储完毕缓存器(LSGB)204、填充/存储缓存器(FSB)206、加载数据队列(LDQ)208和数据高速缓存114。如图2所示,在一个实施例中,加载/存储单元108耦合到指令分派单元106、完毕单元126、分支接口单元116和寄存器堆130。
[0063]加载/存储单元108可以不按程序次序处理例如32位或64位加载指令和存储指令。在实施例中,加载/存储单元108可以处理多达四个向分支接口单元116的独特的未中请求,支持16KB、32KB和/或64KB数据高速缓存存储器请求,实现最近最少使用的高速缓存替代方案,提供硬件虚拟混叠支持,支持标记和数据奇偶性,并且实现基于虚拟标记的路线预测。借助于加载/存储单元控制逻辑200实现这些特征。
[0064]在本发明的实施例中,加载/存储单元控制逻辑200控制加载/存储单元108中的所有队列的分配(allocation)和解除分配(de-allocation)。加载/存储单元控制逻辑200与完毕单元126、指令分派单元106、数据高速缓存114、总线接口单元116和寄存器堆130通信。如下面更具体地描述,加载/存储单元控制逻辑200例如通过如下方式防止在处理器100中的写入后写入故障,所述方式即存储与加载/存储队列202和/或加载数据队列208中的加载指令相关的寄存器目的地值,对完毕加载指令的寄存器目的地值和存储在加载/存储队列202和/或加载数据队列208中的值进行比较,并且在它们写入相同的目的地寄存器作为完毕加载指令时,防止与高速缓存未中相关的任何先前已完毕的加载指令改变该处理器的结构状态。
[0065]加载/存储队列202保持用于特定类别指令的地址值、状态值以及数据,所述指令例如由加载/存储单元108执行的加载和存储指令以及存储器访问指令。可以将在加载/存储队列202中存储的数据旁路(bypass)到使用加载/存储单元控制逻辑200的相关指令。在实施例中,用于由加载/存储单元108执行的指令的信息,包括完毕的加载/存储指令,被保持在加载/存储队列202中,直到指令完成或用于该指令的信息被移动到加载/存储单元108的另一个源为止,该另一个源例如填充/存储缓存器206和/或加载数据队列208。
[0066]优选地,加载/存储完毕缓存器204是用于追踪由加载/存储单元108执行的完毕的指令的先进先出缓存器。加载/存储完毕缓存器204确保由加载/存储单元108执行的指令按程序次序访问加载/存储单元108的共享资源。在一个实施例中,加载/存储完毕缓存器204具有与加载/存储队列202相同的条目数目。在一个实施例中,条目数目是十四。
[0067]填充/存储缓存器206用于处理存储器读取请求。在一个实施例中,填充/存储缓存器206处理达四个向总线接口单元116的独特的未中请求。向总线接口单元116的每个请求要求可能的收回(eviction),随后是返回的数据的填充。填充/存储缓存器206存储与未中的完毕的存储指令相关的数据,直到该数据被填充到数据高速缓存114中。填充/存储缓存器206能够将来自多个存储未中的存储数据与返回的数据合并。填充/存储缓存器206也是用于加载数据值的旁路点(bypass point)。来自填充/存储缓存器206、加载/存储队列202或高速便笺式随机存取存储器(未示出)的数据可以被合并在一起以及被旁路。在一个实施例中,该合并以字节粒度(granularity)发生。
[0068]加载数据队列208用于管理未完成的加载未中的返回。在一个实施例中,加载数据队列208为四个条目深(deep)。在满足加载数据队列请求时,对于对寄存器堆130的访问,加载数据队列208用完毕单元126进行仲裁。
[0069]优选地,数据高速缓存114是被组织为多路设置的关联高速缓存的片上存储器阵列,该多路设置的关联高速缓存例如2路设置的关联高速缓存或4路设置的关联高速缓存。虚拟地索引数据高速缓存114并且对数据高速缓存114物理地加以标记,由此允许虚拟到物理地址转换与高速缓存存取并行地发生。
[0070]在操作中,可以不按程序次序地将指令从被解码指令缓存器113发布到加载/存储单元108。发布的指令被分配了加载/存储队列202中的条目。在一个实施例中,基于由指令分派单元106分配给指令的完成缓存器标识值(CBID),加载/存储单元控制逻辑200分配加载/存储队列202条目。
[0071]在发布的指令被加载/存储单元108接收时,加载/存储单元控制逻辑200确定指令类型,并且用于该指令的虚拟地址(如果适用的话)被计算。该虚拟地址被存储在加载/存储队列202中。加载/存储队列202也存储用于每个指令的状态信息和数据。该状态信息包括例如加载或存储指令是命中还是未中。
[0072]加载/存储单元控制逻辑200对于对数据高速缓存114的访问进行仲裁。数据高速缓存114和标记信息被读取,并且信息被存储在加载/存储队列202中。在数据高速缓存114中命中的加载和存储更新数据高速缓存114的路线选择线324(见图3E)。在一个实施例中,数据高速缓存114的每条标记线320包含物理地址标记和虚拟地址标记(虚拟提示)两者。虚拟地址标记用于生成初期高速缓存路线预测,该初期高速缓存路线预测在随后的处理器时钟周期中被利用物理地址比较进行支持,并且基于该比较,加载未中/命中信号被提供到执行单元102和完毕单元126,从而在必要时可以重放任何相关的指令。可以基于虚拟地址选择驻留于加载/存储队列202、填充/存储缓存器206、数据高速缓存114和/或便笺式随机存取存储器中的数据,并且在可用时旁路该数据。在一个实施例中,来自加载/存储队列202的数据具有被选择并且旁路的最高优先权,接着依次是来自填充/存储缓存器206的数据、来自数据高速缓存114的数据、以及来自便笺式随机存取存储器的数据。来自加载/存储队列202的部分数据也可以与来自填充/存储缓存器206的数据组合,以及被旁路到处理器100的一个或多个流水线级。
[0073]在实施例中,在可用数据被旁路到相关的指令之后,任何产生的异常被区分优先次序。加载/存储单元控制逻辑200异常信息和加载命中数据写入到完成缓存器128中。在关联的指令完毕时,不确切的(imprecise)异常被登录到加载/存储队列202中,并且被通知到完毕单元126。
[0074]在一个实施例中,完毕单元126可以使每个周期多达两个加载/存储指令完毕。接收到来自完毕单元126的完毕指令的指示时,加载/存储单元控制逻辑200基于用于在加载/存储队列202中存储的指令的状态信息来确定完毕指令与高速缓存命中相关联还是与高速缓存未中相关联。如果该指令是加载指令,并且如果状态信息指示该指令与命中相关联,则在加载/存储队列202中与完毕指令相关联的条目被解除分配。完毕指令完成,并且(如果适用的话)允许指令的结果改变处理器100的结构状态。如果完毕指令与未中相关联,则在加载/存储完毕缓存器204中分配用于该完毕指令的条目。在一个实施例中,加载/存储完毕缓存器204中的条目存储指向该加载/存储队列202中与完毕指令相关联的条目的指针。如下面更具体地描述的,为了释放加载/存储队列202条目以便可以被其它指令使用,存储在加载/存储队列202中与未中的指令相关联的信息最后被转送到填充/存储缓存器206和/或加载数据队列208。
[0075]如上所述,优选地,加载/存储完毕缓存器204是先进先出缓存器(队列),因而其按完毕或程序次序处理存储的条目。在条目到达加载/存储完毕缓存器204的顶部时,由加载/存储单元控制逻辑200检查在加载/存储队列202中被指向的相应条目,以确定关联的指令是否还是未中或所需要的数据是否已经从例如主存储器返回并且在填充/存储缓存器206中或在数据高速缓存114中可用。如果所需要的数据可用,则访问该数据,并且在加载/存储队列202和加载/存储完毕缓存器204中的条目被解除分配。如果所需要的数据还不是可用的,则加载/存储单元控制逻辑200分配在填充/存储缓存器206和/或加载数据队列208中的条目,并且加载/存储队列202中相应的条目被解除分配。
[0076]要求经由总线接口单元116的存储器访问的加载未中被分配了在填充/存储缓存器206和加载数据队列208两者中的条目。填充/存储缓存器206负责从总线接口单元116请求数据以及将经由总线接口单元116接收的数据转送到加载数据队列208。到它们由加载/存储完毕缓存器204提供服务时在数据高速缓存114中具有命中的加载未中不要求在填充/存储缓存器206中的条目分配。对于这样的情形,在加载数据队列208中分配条目,并且探针(probe)由加载/存储单元控制逻辑200发送到数据高速缓存114以取出需要的数据。在需要的数据被返回到加载数据队列208时,加载数据队列208对寄存器堆130的控制进行仲裁,并且将该数据写入到寄存器堆130中的寄存器。
[0077]如此处描述的,本发明的一个特征是检测并且防止写入后写入故障。当第一加载指令未中并且第二加载指令命中时,写入后写入故障发生,其中第二加载指令按程序次序跟随第一加载指令,并且两个加载指令写入到相同的目的地寄存器。在该情形下,第二(命中)加载指令在第一(未中)加载指令之前将其数据写入到目的地寄存器。如果不被阻止,当用于第一(未中)指令的数据从存储器返回时,第一加载指令将覆写由第二加载指令写入的数据,由此导致写入后写入故障。本发明检测该故障并且防止第一加载指令写入到公共寄存器。在本发明的一个实施例中,加载/存储单元控制逻辑200通过在与第一加载指令相关联的加载/存储队列202中寄存器目的地字段中设置位,来防止第一加载指令写入到公共目的地寄存器,该位使第一加载指令将其数据写入到只读寄存器(如寄存器堆130寄存器R0,其在一个实施例中是总返回零值的只读寄存器)。在一个实施例中,如果第一加载指令在加载数据队列208中已经被分配了条目,则通过在对应于第一加载指令的加载数据队列208的条目中设置写回(write-back)位(如,设为零值)可以防止第一加载指令写入到公共目的地寄存器。
[0078]图3A示出根据本发明一个实施例的示例加载/存储队列202。如图3A所示,加载/存储队列202是N条目的存储器结构。在一个实施例中,加载/存储队列202是14条目的存储器结构。每个条目被配置用于存储加载存储队列标识(LSQID)值300、虚拟标记(VTAG)信息302、物理标记(PTAG)信息304、数据信息(DATAINF)306以及异常信息(EXC INF)308。优选地,加载/存储队列202包括多个读取端口以及多个写入端口以读取和写入描述的信息。
[0079]优选地,基于指令的完成缓存器标识值分配加载/存储队列标识值300。在一个实施例中,加载/存储队列标识值300与在指令解码和分派期间分配的完成缓存器标识值相同。在另一实施例中,在加载/存储队列标识值300和在指令解码和分派期间分配的完成缓存器标识值之间存在一一对应,从而完成缓存器标识值的一部分用作加载/存储队列标识值300(例如,完成缓存器标识值的一定数目的最低有效位可以用作加载/存储队列标识值300)。
[0080]虚拟标记信息302包括与指令有关的几个状态值。这些状态值被用于例如将数据旁路到相关的加载指令,分配加载/存储单元108资源,以及防止写入后写入故障。在一个实施例中,包括在虚拟标记信息302内的状态值包括(但不局限于)指令标识(INSTID)值、线程上下文标识(TCID)值、虚拟地址(VADD)值、完毕(GRAD)值以及寄存器目的地(RD)值。也可以包括其它值。指令标识值用于指示指令的“年龄(age)”或程序次序。线程上下文标识值标识指令所属的程序线程。虚拟地址值是指令的虚拟地址。在实施例中,存储在加载/存储队列108中的虚拟地址位可以少于全部虚拟地址位(如,可以忽略一些最低有效位)。完毕值指示该指令是否已经完毕。在一个实施例中,在接收到来自完毕单元126的用于相关联的指令的完毕广播时,将完毕值设置为一。寄存器目标值被用于例如指示加载指令值将被写入到寄存器堆130中的哪里。
[0081]物理标记信息304包括物理地址(PADD)值、状态(STATUS)值、同名异物(homonym)(H)值以及命中路线(HW)值。在实施例中,存储在加载/存储队列108中的物理地址位可以少于所有物理地址位(如,可以忽略一些最低有效位)。该状态值用于指示关联的高速缓存线的状态。在一个实施例中,状态值对关联的高速缓存线是否存在于数据高速缓存114中以及例如在加载指令的情况下数据是否已经被旁路进行编码。物理标记信息304的同名异物值指示虚拟同名异物存在(即,一个虚拟地址映射到两个物理地址的情形)。命中路线值标识关联的高速缓存线存在于哪路高速缓存中。基于高速缓存线填充,更新命中路线值以反映高速缓存线被写入的路线。
[0082]在本发明的实施例中,当指向指令的指针到达加载/存储完毕缓存器204的顶部时,为了作出资源分配决定以及为了获得高速缓存线状态更新,物理标记信息304被读取,例如来做出未中/命中的确定。例如在高速缓存线填充以及收回期间写入物理标记信息304。
[0083]数据信息306包括数据有效(DV)值以及数据(DATA)值。数据有效值指示该数据值是否有效。还可以包括用于该数据值的可选的奇偶值。在一个实施例中,存储在加载/存储队列202中的数据值是双字(如,64位)数据。
[0084]异常信息308包括例如调试异常(DBG)值。也可以包括其它异常值。在一个实施例中,当关联的异常被获得时,异常信息308存储需要被转送到协处理器寄存器的异常专用信息。
[0085]加载/存储单元控制逻辑200控制加载/存储队列202中的条目的分配以及解除分配。在实施例中,可以基于每个线程清刷(flush)加载/存储队列202,并且将加载/存储队列202压缩以移除清刷掉的(flush out)条目。虚拟标记信息302的线程上下文标识值用于支持这些功能性。当完毕单元126遇到管道清刷情况时,线程上下文标识值被与指令杀死(instruction kill)信号一起广播到加载/存储单元108。作为响应,加载/存储队列202清刷用于该线程的所有未完毕的加载存储队列条目。
[0086]图3B示出根据本发明一个实施例的示例加载数据队列(LDQ)208。加载数据队列208是N条目的存储器结构。在一个实施例中,加载数据队列208是4条目的存储器结构。在加载数据队列208中的每个条目被配置用于存储数据(DATA)值、数据有效(DV)值、写回(WB)值、有效信息(VALID)值、填充/存储缓存器标识(FSBID)值、以及寄存器目的地(RD)值。如此处描述的,在一个实施例中,加载数据队列208的写回值可用于防止写入后写入故障。这是通过如下实现的,例如,将写回值设置为零,由此在请求的数据返回之后阻止加载数据队列208将数据写入到寄存器堆130。
[0087]加载数据队列208保持用于未完成的加载指令的信息,并且在数据返回时将指令的数据返回到由加载数据队列208的寄存器目的地字段指定的寄存器。在一个实施例中,数据可以来自总线接口单元116(如,对于加载未中)、填充/存储缓存器206(如,对于在填充/存储缓存器206中命中的数据高速缓存未中)、或数据高速缓存114(如,未中到命中情形)。当到达加载/存储完毕缓存器204的顶部时,条目被分配用于与未中相关联的指令。
[0088]在一个实施例中,加载数据队列208的条目每次一个(如依次)仲裁以便访问回到寄存器堆130的返回数据。数据一旦可用就可以做出访问请求。因为加载数据队列208中的数据是基于地址的,所以在数据被发送到寄存器堆130之前数据通过对准器(aligner)。如果数据的大小是双字,则双字数据将被放置在64位数据条目中。如果数据的大小是一个字或更少,则数据将被放置在数据条目的较下的字(lower word)中(如位0到31)。在一个实施例中,响应于填充较上数据字的适当指令,数据可以被合并到加载数据队列对准器中。
[0089]加载/存储单元控制逻辑200控制加载数据队列208中的条目的分配以及解除分配。在实施例中,可以基于每个线程清刷加载数据队列208,并且将其压缩以移除清刷掉的条目。线程上下文标识值用于支持该功能性。
[0090]图3C示出根据本发明一个实施例的示例填充/存储缓存器(FSB)206。填充/存储缓存器206是N个条目的存储器结构。在一个实施例中,填充/存储缓存器206具有四个条目。填充/存储缓存器206中的每个条目被配置用于存储填充/存储缓存器标识(FSBID)值310、虚拟标记(VTAG)信息312、物理标记(PTAG)信息314、以及数据(DATA)316。虚拟标记信息312包括(但不局限于)线程上下文标识(TCID)值、虚拟地址(VADD)值、数据请求(DR)值、以及数据高速缓存探针请求(PB)值。物理标记信息314包括物理地址(PADD)值以及总线接口单元数据返回(BIU DR)值。
[0091]可能因加载或存储高速缓存未中以及高速缓存操作而分配填充/存储缓存器206条目。每个条目保持属于高速缓存操作的未完成的线、存储数据和信息。填充/存储缓存器206将数据转送到高速缓存(填充)、到加载/存储单元108流水线级(加载,填充/存储缓存器206命中)以及到加载数据队列208(具有部分的填充/存储缓存器206命中的加载未中,或加载未中而不转送数据)。填充/存储缓存器206取该存储数据并且将其与总线接口单元116返回数据合并,以及在填充完成之前将该线转送到数据高速缓存114。填充/存储缓存器206存储用以执行高速缓存操作的信息。虚拟地址和物理地址的分配并不发生在相同的处理器周期中,并且在一个实施例中,物理地址被分配在虚拟地址之后的几个周期。物理地址的退弃(retiring)也比填充/存储缓存器206的条目中的虚拟地址的退弃例如晚几个周期才发生。
[0092]加载/存储单元控制逻辑200控制填充/存储缓存器206中的条目的分配以及解除分配。在实施例中,可以基于每个线程清刷填充/存储缓存器206,并且例如使用加载/存储单元控制逻辑200压缩填充/存储缓存器206以移除清刷掉的条目。线程上下文标识值用于支持该功能。
[0093]图3D示出根据本发明一个实施例的示例加载/存储完毕缓存器(LSGB)204。加载/存储完毕缓存器204是N个条目存储器结构。优选地,加载/存储完毕缓存器204具有与完成缓存器128的可以用来分配给由加载/存储单元108执行的指令的条目相同数目的条目。例如,在一个实施例中,完成缓存器128的14个条目由加载/存储单元108专用。因而,在这个例子中,加载/存储完毕缓存器204也具有14个条目。加载/存储完毕缓存器204中的每个条目被配置用于存储加载/存储队列标识(LSQED)值和异常信息(EXC INF)。
[0094]优选地,加载/存储完毕缓存器204是循环先进先出(FIFO)缓存器。加载/存储完毕缓存器204用于追踪经过了指令完毕的加载/存储指令。按程序次序分配以及退弃在加载/存储完毕缓存器204中的条目。如此处描述的,每个加载/存储完毕缓存器204条目包含指向与完毕的指令相关的加载/存储队列202的条目的指针。
[0095]在一个实施例中,加载/存储完毕缓存器204在一个周期中退弃达两个条目。当指令的指针到达加载/存储完毕缓存器204的顶部时,与存储在加载/存储完毕缓存器中的指针相关的指令被退弃。在退弃加载和存储指令时,加载/存储完毕缓存器204释放与这些指令相关的完成缓存器标识值。这空出相应的完成缓存器条目以便再分配。
[0096]加载/存储单元控制逻辑200控制在加载/存储完毕缓存器204中的条目的分配以及解除分配。在实施例中,可以基于每个线程清刷加载/存储完毕缓存器204,并且对其压缩以移除清刷掉的条目。线程上下文标识值用于支持该功能。
[0097]图3E示出根据本发明一个实施例的示例数据高速缓存114。优选地,数据高速缓存114是多路设置关联高速缓存,取决于路数目可将其配置为例如16KB、32KB或64KB高速缓存。每个高速缓存路包括标记ram和数据ram。
[0098]在本发明的一个实施例中,每个标记ram条目存储标记线(TAG LINE)信息320。标记线信息320包括(但不局限于)奇偶(PARITY)值、虚拟提示或地址(VHINT)标记值、物理地址(PADD)标记值、以及有效(V)值。奇偶值是可选的。虚拟提示(地址)标记值包括虚拟地址的选定数目的最高有效位。在一个实施例中,使用的最高有效位的数目等于虚拟地址位减去用作对数据高速缓存114的索引值(index value)的最低有效位的数目。在一个实施例中,使用虚拟地址位[31:12]。物理地址标记值也包括物理地址的选定数目的最高有效位。在一个实施例中,使用物理地址的位[31:12]。标记ram是线宽可写的。
[0099]在本发明的一个实施例中,每个数据ram条目存储数据线(DATA LINE)信息322。数据线信息322包括奇偶(PARITY)值以及数据(DATA)值。奇偶值是可选的。在一个实施例中,每个数据值是32字节宽并且是字节可写的。读取粒度是64位。
[0100]对于所有与数据高速缓存114中的索引条目对应的路线,存在相应的路线选择线(WAY SELECT LINE)324和相应的“脏线”(DIRTY LINE)326。
[0101]路线选择线324被存储在路线选择阵列中。每根路线选择线324包括奇偶(PARITY)值、锁定(LOCK)值、以及最近最少使用的(LRU)值。奇偶值是可选的。在一个实施例中,锁定值对于每一路线包括一位,以指示哪些路线被锁定(如果有的话)。最近最少使用的值指示选择哪种路线用于收回。更新路线选择阵列的最近最少使用的值以用于在数据高速缓存114中命中的加载和存储。路线选择阵列是位可写的。
[0102]脏线326被存储在脏阵列(dirty array)中。每个脏线326包括路线预测(PRED)值、奇偶(PARITY)值以及脏(DIRTY)值。脏线326保持数据高速缓存114的每个数据ram路线的脏状态(dirty status)。在一个实施例中,每个脏线的脏值(dirty value)对于每个路线存储一个脏状态位并且该脏值是位可写的。预测值存储用于标识虚拟地址同物异名(synonyms)以及从数据高速缓存114取出需要的数据的混叠路线预测。
[0103]在本发明的一个实施例中,处理器100实现基于虚拟提示的路线预测方案,其允许从数据高速缓存114取出来自数据高速缓存114的数据,并且在该数据的物理地址可用之前将其提供到相关的指令。如下实现该方案。用虚拟提示(地址)值和物理地址值两者标记数据高速缓存114的每个高速缓存线。将所需数据的虚拟地址与存储在标记ram中的虚拟提示值进行比较。如果匹配发生,则该匹配路线的数据被转送到适当的执行单元102,例如整数执行单元118。在随后的处理器时钟周期中,在物理地址可用之后,将物理地址与标记ram物理标记值进行比较以验证正确数据被转送。如果正确数据被转送,则将命中通知到执行单元和完毕单元,并且不要求进一步的动作。如果正确数据没有被转送,则将未中通知到执行单元以及完毕单元,并且对不正确的数据进行操作的任何指令被无效和/或重放。当指令被重放时,其被提供以正确数据。由此,该方案使虚拟地址标记能够用于生成初期高速缓存路线预测,该初期高速缓存路线预测在随后的处理器时钟周期中利用物理地址比较进行支持。
[0104]在本发明的一个实施例中,当在虚拟提示值和虚拟地址之间没有匹配发生时,返回混叠路线。混叠路线是关于所需数据在数据高速缓存114中哪里(如在混叠地址处)是物理可用的另外的预测。另外的预测或混叠路线是存储在脏阵列中的预测值。在高速缓存的初始化期间,混叠路线默认到选定的路线,例如路线零。在数据高速缓存的初始化之后,混叠路线始终跟上具有虚拟同物异名的最后高速缓存线的命中路线。在一个实施例中,当指向指令的指针到达加载/存储完毕缓存器204的顶部时,混叠路线预测的更新发生。如被基于虚拟提示匹配转送的数据那样,利用物理地址比较来支持基于混叠路线预测转送的数据的正确性。如果正确数据基于混叠路线预测被转送,则将命中通知到执行单元以及完毕单元,并且不要求进一步的动作。如果正确数据没有被转送,则将未中通知到执行单元和完毕单元,并且对不正确的数据进行操作的任何指令被无效和/或重放。当指令被重放时,其被提供以正确数据。
[0105]如此处描述的,本发明的特征之一是:在实施例中,可以检测虚拟地址混叠或虚拟同物异名的情形,并且使用混叠路线预测值取出所需数据。如图3F所示,虚拟地址混叠可以发生在例如两个进程(processes)使用不同的虚拟地址访问相同的物理存储器时。如图3F所示,物理存储器的页面301被存储在高速缓存中。物理存储器的该页面301由进程1映射到虚拟存储器的页面311。物理存储器的相同的页面301由进行2映射到虚拟存储器的不同页面313。由此,进程1和进程2使用不同虚拟地址访问存储在高速缓存中的物理存储器的页面301。
[0106]在传统的处理器中,执行物理地址标记比较以进行路线选择。然而,使用物理标记执行路线选择损害(hurt)频率,因为必须在物理标记可用之前执行虚拟到物理地址转换。使用物理标记还在处理器设计中产生关键路径。典型地,虚拟地址标记比较在传统的处理器中不用于路线选择。不使用它们的一个原因是因为虚拟标记比较不能有效地处理虚拟同物异名并且导致退化的性能。然而,对于根据本发明的处理器,情况不是这样。如此处描述的,这样的处理器能够每个高速缓存索引容纳一个同物异名,而不会降低性能,并且在虚拟同物异名的情况下精确地预测命中路线信息。
[0107]图3G示出本发明的实施例怎样预测/生成命中路线信息。如图3G所示,虚拟地址319用于从数据高速缓存取出数据。虚拟地址319包括虚拟标记位321、索引位323以及块(偏移)位325。索引位323用于从标记ram 320a-320n取出虚拟提示标记位以及有效位。使用比较器331将取出的虚拟提示标记位与虚拟地址319的虚拟标记位321进行比较。使用逻辑333将比较器331的输出与取出的有效位组合以生成提供到路线选择逻辑327的命中/未中信息。
[0108]除由逻辑333生成的命中/未中信息之外,脏阵列326的混叠路线预测值也被提供到路线选择逻辑327。提供到路线选择逻辑327的混叠路线预测值是由索引位323指向的脏阵列326中的预测值。在控制逻辑333没有生成命中信号时的情况下,由路线选择逻辑327使用混叠路线预测值以生成选择的路线信号。
[0109]如果虚拟标记位321与存储在标记ram 320中的虚拟提示标记值之一匹配,则路线选择逻辑327生成选择的路线信号,该选择的路线信号用于取出与该命中相关联的数据。该数据被转送到例如此处描述的执行单元102。然而,如果逻辑333没有生成命中信号,则来自与混叠路线预测值相关联的路线的数据被取出并且转送到执行单元。与混叠路线预测值相关联的路线可以被认为是默认路线。
[0110]如图3H所示,当与虚拟地址319相关联的物理地址可用时,使用比较器335将相应的物理地址标记位与存储在标记ram 320中的物理地址标记位进行比较。使用逻辑337将比较器335的输出与取出的有效位组合以生成命中/未中信息。命中/未中信息被提供到验证和预测更新逻辑329。如果用于取出和转送的数据的物理地址标记位和与虚拟地址319相关联的物理地址标记位匹配,则验证和预测更新逻辑329生成提供到例如执行单元102和完毕单元126的高速缓存命中信号。如果用于取出和转送的数据的物理地址标记位和与虚拟地址319相关的物理地址标记位不匹配,则验证和预测更新逻辑329生成提供到例如执行单元102和完毕单元126的高速缓存未中信号。
[0111]如图3H所示,从逻辑337被提供到验证和预测更新逻辑329的命中和未中信号用于更新存储在脏阵列326中的混叠路线预测值。例如,如果逻辑337n输出命中(匹配)信号,则存储在脏阵列326中的相应混叠路线预测值被更新以指向与标记ram 320n相关的路线。由此,标识虚拟同物异名情形,并且训练处理器即使在虚拟同物异名的情况下也精确地预测命中路线信息。
[0112]图4A示出根据本发明一个实施例怎样分配加载/存储队列202中的条目。在图4A中示出的例子自指令402从指令分派单元106的被解码指令缓存器113到加载/存储单元108的分派开始。将指令402不按程序次序地分派到加载/存储单元108。
[0113]加载/存储单元108中的加载/存储单元控制逻辑200接收指令402的指令类型信息(对该例子来说,指令402是加载指令),并且计算用于所需要的加载数据的虚拟地址。如图4A所示,加载/存储单元控制逻辑200分配加载/存储队列202中的条目404,用于存储与指令402相关联的信息。
[0114]如图4A所示,指令402被分配了加载/存储队列标识值10。指令402的指令标识值是一。指令标识值用于指示指令402相对于其它程序指令的“年龄(age)”或程序次序。在一个实施例中,具有较高的指令标识值的指令按程序次序在具有较低的指令标识值的指令之后。加载/存储队列202中的完毕值被重置为零,因为该指令还没有完毕。寄存器目标值被设置为四,由此指示寄存器堆130中的寄存器R4是最终将存储加载指令402的结果的目的地寄存器。状态字段的最低有效位被置为零以指示加载是未中。状态字段的最高有效位被置为零以指示将被加载的值不存在于数据高速缓存114中。数据有效位被置为零以指示由于加载未中,没有有效数据存在于该数据字段中。
[0115]图4B继续图4A的例子。图4B示出指令402的完毕以及在加载/存储完毕缓存器204中条目406的分配,加载/存储完毕缓存器204保持指向加载/存储队列202的条目404的指针。如此处描述的,完毕单元126按程序次序使加载指令402完毕。
[0116]在加载指令402的完毕后,完毕单元126广播传达指令402的指令标识值(10)以及寄存器目标值(4)的信号。基于该指令标识值,加载/存储单元控制逻辑200在加载/存储队列202中读取对应于指令402的条目404,并且确定加载指令402的状态。因为指令402与加载未中相关联,所以加载/存储单元控制逻辑200在加载/存储完毕缓存器204中分配条目406以保持指向加载/存储队列202中的条目404的指针。在示出的例子中,加载/存储队列标识值与在指令解码和分派期间分配给指令402的完成缓存器标识值相同。
[0117]如图4B所示,加载/存储单元控制逻辑200将加载/存储队列202的条目404中的完毕值更新到一,以指示指令402已经完毕。如果例如由于存储指令,所需要的加载数据在数据高速缓存114中变得可用,则加载/存储队列202中的状态字段的最高有效位将被更新到一,以指示所需数据是可用的。状态的改变也指示需要将探针发送到数据高速缓存114以取出所需数据。
[0118]图4C示出填充/存储缓存器206中条目408的分配以及加载数据队列208中条目410的分配。图4B也示出加载/存储队列202中条目404的解除分配。响应于到达加载/存储完毕缓存器204的顶部并且正在被服务的指针10(存储在加载/存储完毕缓存器204的条目406中),采取这些行动。当指针到达加载/存储完毕缓存器204的顶部时,与加载/存储完毕缓存器204中的指针相关联的指令被服务。
[0119]基于存储在加载/存储队列202中的用于指令的信息,加载/存储单元控制逻辑200可以分配加载数据队列208中的条目用于该指令,分配填充/存储缓存器206中的条目用于该指令,和/或发送探针到数据高速缓存114。对于图4C中示出的例子,状态值指示指令402所需要的加载数据是在位于处理器100外部的存储器中。由此,将不得不使用总线接口单元116请求所需数据。因为填充/存储缓存器206用于从总线接口单元116请求数据,所以与用于指令402的在加载数据队列208中的条目410一起,在填充/存储缓存器206中分配条目408。
[0120]在到与加载/存储完毕缓存器204中的指针相关联的指令被服务时所需的加载数据在数据高速缓存114中变得可用的情况下,所需的是分配加载数据队列208中的条目用于该指令,以及发送探针到数据高速缓存114以取出该数据。在填充/存储缓存器206中没有条目被要求,因为所需数据将被从数据高速缓存114转送到加载数据队列208。
[0121]在所需数据在填充/存储缓存器206的条目中可用的情况下,所需数据由填充/存储缓存器206转送到加载/存储队列202和/或加载数据队列208,而不需要分配填充/存储缓存器206中的条目。如果在填充/存储缓存器206已经分配了条目,则加载/存储单元控制逻辑200在加载数据队列208的相应的条目(如,条目410)中存储填充/存储缓存器标识值(如,条目408中示出的值三)作为在填充/存储缓存器206和加载数据队列208之间的指针。
[0122]当用于指令402的所需数据被从总线接口单元116返回时,总线接口单元116数据有效(BIU DV)位被设置为一,并且该数据被转送到加载数据队列208的条目410(如,使用FSBED作为到加载数据队列208中的索引以指示数据应该存储在哪里)。在加载数据队列208接收指令402的未中的加载数据之后,当且仅当写回(WB)值被设置为一时,其将该数据写回到由寄存器目的地(RD)值指示的寄存器。
[0123]在本发明的一个实施例中,在已经在加载数据队列208和填充/存储缓存器206中分配了用于指令402的条目之后,加载/存储队列202中条目404以及加载/存储完毕缓存器204中的条目406由加载/存储单元控制逻辑200解除分配,以产生用于其它指令的空间(space)。在一个实施例中,条目404和406的解除分配可能需要若干处理器时钟周期,并且在此期间,条目404、406、408和410可以同时存在。
[0124]图5A示出根据本发明一个实施例对写入后写入故障的检测。当完毕单元126广播加载指令401的完毕(按程序次序跟随指令402之后)时,加载/存储单元控制逻辑200将加载指令401的寄存器目的地值与存储在加载/存储队列202和/或加载数据队列208中的任何完毕的加载指令条目的寄存器目的地值进行比较。为了确定与加载/存储队列202中的条目相关联的指令是否已经完毕,在加载/存储队列202中检查其完毕位。如果在加载/存储队列202中条目的完毕位被设置为一,并且如果用于完毕的指令的关联的指令寄存器目的地值与正在完毕加载指令401的匹配,则写入后写入故障存在,因为较旧的完毕的加载指令可以覆写由寄存器堆130中的加载指令401写入的值(如,假定指令401与数据未中不相关联)。
[0125]在图5A示出的例子中,条目404和410中的寄存器目的地值与由完毕单元126广播的用于加载指令401的寄存器目的地值匹配。由此,比较器500a和500b被示出为将匹配信号输出到加载/存储单元控制逻辑200,这指示写入后写入故障的检测。在一个实施例中,匹配信号值等于一指示匹配,而匹配信号值等于零指示不匹配。
[0126]图5B示出根据本发明一个实施例加载/存储单元控制逻辑200怎样防止检测的写入后写入故障发生。如图5B所示,在检测到写入后写入故障存在之后,如果指令402写回到寄存器堆130,则加载/存储单元控制逻辑200通过将加载/存储队列202的条目404中的寄存器目的地值设置为与只读寄存器(如,寄存器堆130中的寄存器R0)对应的值,以及通过将加载数据队列208的条目410中的写回值设置为零,来防止该故障发生。如上所述,在加载数据队列208的条目410中将写回值设置为的零防止存储在加载数据队列208中的数据被写回到寄存器堆130。
[0127]应当理解,即使用于指令402的条目在加载/存储队列202和加载数据队列208中被示出,但是在第一情形中,仅条目404可以存在于加载/存储队列202,因为加载/存储完毕缓存器204可能还没有分配加载数据队列208条目410。在第二情形中,仅条目410可以存在,因为条目404可能已经被解除分配。如上所述,条目404和条目410都可以存在(如所示)直到条目404被加载/存储单元控制逻辑200解除分配为止,是可能的。如果仅条目404存在,仅条目404的寄存器目的地值被置零。如果仅条目410存在,仅条目410的写回值被置零。如果条目404和410两者都存在,则如上所述,条目404的寄存器目的地值被置零并且条目410的写回值被置零。
[0128]图5C1和5C2还示出根据本发明一个实施例怎样检测写入后写入故障。如图5C1和5C2所示,完毕单元126广播用于正在完毕的加载指令的信息。广播包括正在完毕的指令的寄存器目的地值。使用比较器502将该值与存储在加载/存储队列202中的用于之前完毕的指令的寄存器目的地值进行比较。任何匹配被传达到加载/存储单元控制逻辑200。类似地,使用比较器508将用于正在完毕的指令的广播的寄存器目的地值与存储在加载数据队列208中的寄存器目的地值进行比较,并且任何匹配被传达到加载/存储单元控制逻辑200。优选地,在图5C1和5C2中描述的操作并行发生。
[0129]图5D示出根据本发明一个实施例怎样防止在图5C1和5C2中检测的写入后写入故障。如图5D所示,在检测到例如由于加载/存储队列202中的条目和/或加载数据队列208中的条目的写入后写入故障后,加载/存储单元控制逻辑200防止故障发生。如图5D所示,加载/存储单元控制逻辑200将被标识为潜在地导致写入后写入故障的、加载/存储队列202中的条目的寄存器目的地值设置为与只读寄存器相关联的值。类似地,加载/存储单元控制逻辑200将被标识为潜在地导致写入后写入故障的、加载数据队列208中的条目的寄存器目的地值设置为防止与写回值相关联的数据写回的值(如,零)。可以使用不同于本文中描述的方法来防止写入后写入故障的发生。
[0130]图6是示出根据本发明一个实施例的示例系统600的示意图。系统600包括处理器602、存储器604、输入/输出(I/O)控制器606、时钟308、和自定义硬件610。在一个实施例中,系统600是在专用集成电路(ASIC)中的芯片上系统(SOC)。
[0131]处理器602是包括本文中描述的本发明的特征的和/或实现本发明的方法实施例的任何处理器,在一个实施例中,与上述处理器100类似,处理器602包括指令取出单元、指令高速缓存、指令解码和分派单元、一个或多个指令执行单元、数据高速缓存、寄存器堆、以及总线接口单元。
[0132]存储器604可以是能够存储指令和/或数据的任何存储器。存储器604可以包括例如随机存取存储器和/或只读存储器。
[0133]输入/输出(I/O)控制器606用于使系统600的部件能够接收信息和/或发送信息到外围设备。I/O控制器606可以包括例如模数转换器和/或数模转换器。
[0134]时钟608用于确定系统600的时序系统何时改变状态。例如,每次时钟608时钟信号滴嗒(tick)时,系统600的状态寄存器捕捉由组合逻辑生成的信号。在一个实施例中,可以改变时钟608的时钟信号。例如在时钟信号被提供到系统600的选定部件前,还可以将时钟信号分频。
[0135]自定义硬件610是加入到系统600以使系统600适应专门应用的任何硬件。自定义硬件610可以包括例如解码音频和/或视频信号、加速图形操作和/或实现智能传感器所需的硬件。本领域技术人员将理解怎样实现自定义硬件610以使系统600适应专门应用。
[0136]虽然已经在上面描述了本发明的各种实施例,应当理解这些实施例是以示例的方式描述的,而不是限制本发明。可以在其中做出各种改变而不偏离本发明的范围,这对于相关计算机领域的技术人员是显而易见的。此外,应当理解,本文中提供的本发明的具体实施方式部分,而不是发明内容和摘要部分,意图是用于解释权利要求。如发明人所预期的,发明内容和摘要部分可以阐明本发明的一个或多个示范实施例,但不是所有示范实施例。
[0137]例如,除使用硬件(如,在中央处理单元(″CPU″)、微处理器、微控制器、数字信号处理器、处理器内核、片上系统(″SOC″)或任何其它可编程或电子器件内,或耦合到这些器件)的实施方式之外,也可以以软件(如,用诸如源、对象或机器语言的任何形式部署的计算机可读代码、程序代码和/或指令)来实现多种实施方式,该软件例如设置在被配置用于存储该软件的计算机可用(如可读)介质中。该软件可以使得能够实现例如本文中描述的装置和方法的功能、制造、建模、模拟、描述和/或测试。例如,这可以通过使用通用编程语言(如C、C++),包括Verilog HDL、VHDL、SystemC寄存器传送级(RTL)等等的硬件描述语言(HDL),或其它可用的程序、数据库和/或电路(即,示意图的)获取工具来实现。该软件可以设置在任何已知计算机可用介质中,包括半导体、磁盘、光盘(如CD-ROM、DVD-ROM等等),并且可以被部署作为用计算机可用(如可读)传输介质(如,载波或包括数字的、光学的或基于模拟的介质的任何其它介质)来实施的计算机数据信号。如此,可以在包括因特网和内部网的通信网络上传输软件。
[0138]应当明白,本文中描述的装置和方法实施例可以被包括在半导体知识产权核内,例如微处理器核(如,以HDL实现),并且在集成电路生产中被转换为硬件。另外,本文中描述的装置和方法可以被实现为硬件和软件的组合。因此,本发明不应受任何上述示范实施例限制,而应该仅根据下面的权利要求及其等同物来限定。

数据高速缓存虚拟提示路线预测及其应用.pdf_第1页
第1页 / 共55页
数据高速缓存虚拟提示路线预测及其应用.pdf_第2页
第2页 / 共55页
数据高速缓存虚拟提示路线预测及其应用.pdf_第3页
第3页 / 共55页
点击查看更多>>
资源描述

《数据高速缓存虚拟提示路线预测及其应用.pdf》由会员分享,可在线阅读,更多相关《数据高速缓存虚拟提示路线预测及其应用.pdf(55页珍藏版)》请在专利查询网上搜索。

本发明提供一种基于数据高速缓存路线预测方案的虚拟提示及其应用。在一个实施例中,处理器基于虚拟提示值或混叠路线预测值从数据高速缓存取出数据,并且在用于该数据的物理地址可用之前将该数据转送到相关的指令。在物理地址可用之后,将物理地址与转送的数据的物理地址标记值进行比较,以验证该转送的数据是正确数据。如果该转送的数据是正确数据,则生成命中信号。如果该转送的数据不是正确数据,则生成未中信号。对不正确的数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


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