蜂鸟E200处理器笔记

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-01

关于处理器的乱序问题,这里是有关于Tomasulo算法的问题,以我目前的理解
保留站 :数据的源操作数未准备好的时候,在保留站等待,当准备好就开始执行。
ROB :ROB保证了乱序执行的问题,实际的乱序执行,并不是指令乱序结束,是执行的时候,即EX段是乱序的,但最后的WB还是通过ROB保证了顺序。

三种数据冲突为WAW,WAR,RAW,关于数据冲突解决的方法依然是Tomasulo算法。
==RAW==:
是真的数据相关,必须在前一个数据计算后才能进行使用,此处使用“动态调度”的方法来解决

==WAW、WAR==:
通过ROB的存在控制WB部分,保证了WAW和WAR的正确。

蜂鸟 E200 处理器核的流水线的按序主体是位于第一级的“取指”和位于第二级的“执行”和“写回”,因此我们非严谨地定义蜂鸟 E200 处理器核的流水线深度为二级。

==如何进行快速寻址:==
即使是片上的SRAM也需要几个周期取指令,为了加快速度,通常使用ITCM和I-cache的方法

ITCM Clnstruction Tightly Coupled Memory)

==如何处理非对齐指令==
SRAM取指一次是32位,所以如果没有对齐,需要取两次然后拼接。

对于BPB,如果两条条件分支指向同一个条目(因为无法覆盖全部地址),则称为:别名重合(Aliasing)

这个部分有篇博客讲的非常清楚:
https://blog.csdn.net/edonlii/article/details/8754724
或者 https://www.cnblogs.com/TaigaCon/p/7791303.html
摘取其中一段介绍BHT:

假定,例如条件跳转每隔2次执行就发生一次,即分支情况的历史串行是001001001...。在这种情况下,00对应的饱和计数器将是状态“强选择”(strongly taken),表明在两个0之后必然是出现一个1。01对应的饱和计数器将是状态“强不选择”(strongly not taken),表示在01之后必然是出现一个0。这也同样适用于10状态。而11状态从未使用,因为不可能出现连续两个1。

2级自适应预测器的一般规则是n位分支历史寄存器,可以预测在所有n周期以内出现的所有的重复串行的模式。

==关于BTB==:是指使用 容量有限 的缓存保存 最近执行过的分支指 PC 值 ,以及它们的 跳转目标地址
对于后续要取指的 每条PC值 ,将其与 BTB 中存储的各个 PC 值进行比较,如果出现匹配,则预测这是分支指令,并使用其对应存储的跳转目标地址作为预测的跳转地址

一共八条

jal用于子程序调用,然后jalr用于从子程序返回



  • 蜂鸟E200处理器笔记
    答:蜂鸟 E200 处理器核的流水线的按序主体是位于第一级的“取指”和位于第二级的“执行”和“写回”,因此我们非严谨地定义蜂鸟 E200 处理器核的流水线深度为二级。==如何进行快速寻址:== 即使是片上的SRAM也需要几个周期取指令,为了加快速度,通常使用ITCM和I-cache的方法 ITCM Clnstruction Tig...