计算机结构:(m, n)-关联-分支预测器 — (m,n)-Korrelationsprädiktor

首先吐槽Rechnerstruktur这门课懒惰的教授:Prof. Dr. Wolfgang Karl。老头子Folien不改动直接改日期拿来用就不提了,Korrelationsprädiktor这么重要的考试内容居然在Folien上只给了个名字,Übungsblatt里面这个题让我查资料查了两个多小时才搞懂。

正文开始:

(m, n)-关联-分支预测器是由以下两个部分组成:

一个m位-全局分支历史寄存器 (BHR: Branch History Register)

由m位移位寄存器构成,用于记录当前跳转的前m个实际分支行为历史,每一位用来记录该分支是否实际被执行,1对应实际执行,0对应实际未执行。

一个含有2^m个条目(Eintrag)的模式历史表 (PHT: Pattern History Table),每个条目对应一个n位-简单预测器

若有m位的BHR,则存在2^m种不同的历史记录值。此时就需要一个含有2^m个条目的PHT来对应上述2^m种不同的历史记录值,每一个条目对应一个n位的简单预测器。

举例:m = 2,n = 2时,BHR有00、01、10、11四种不同的历史记录值。此时的PHT需要有4个条目,分别对应上述四种历史记录值,并且每一个条目代表一个2位的简单预测器。

BHR以及PHT里所有的条目对应的n位简单预测器都需要赋初始值才能够正常工作。在此处不涉及的是,由被预测的跳转命令所在地址的一部分,通常是低位的最后几个比特,来决定使用PHT里的哪一个区块,或者说哪一列。由BHR里面的历史记录值来决定应该在此次跳转处使用PHT中哪一个条目(哪一行)所对应的n位简单预测器。

举例:使用与上例相同的(2,2)-关联-分支预测器,若规定BHR里的历史记录初始值为00,则在预测第一个跳转时,使用PHT里的第0个,即编号为0的n位简单预测器。

之后的工作原理与简单预测器无异,在做题填表的时候有如下窍门:

1. 先把实际的跳转都写出来,然后把旧历史和新历史两列先填好;
2. 然后把BHR以及PHT中所有简单预测器的初始值都填进表里;
3. 最后就按照简单预测器的工作原理一步一步把所有表填好就可以了;

 

参考文章:

CSDN博客:【体系结构】转移预测器设计与比较
维基百科:     两级自适应预测器

3 回复
  1. 如密的不死人
    如密的不死人 says:

    老哥真是帮我大忙了哈哈,这Folie看了半天没看明白。
    不介意加个微信吗,我也是KIT学生哈哈

    回复

发表评论

Want to join the discussion?
Feel free to contribute!

发表评论