📄️ 流水线
Frontend 阶段表示流水线中的 Fetch 和 Decode 两个阶段。这两个阶段没有必要实现乱序执行。
📄️ Cache
Cache主要由两部分组成,Tag部分和Data部分。Data部分用来保存一片连续地址的数据,Tag部分用来存储这片连续数据的公共地址。一个Tag和它对应的所有数据组成的一行称为一个Cache line,Cache line中的数据部分称为Cache data block。如果一个数据可以存储在Cache中的多个地方,这些被同一个地址找到的多个Cache line称为Cache set。
📄️ 虚拟存储器
在没有使用虚拟地址的系统中,处理器输出的地址会直接送到物理存储器中,这个过程如图所示:
📄️ 分支预测
随着处理器并行度的提高以及流水线的加深,静态分支预测算法已经不能够满足复杂处理器对性能的要求,需要更准确的分支预测方法,能够根据处理器实际的执行情况,动态地对分支指令进行预测。动态分支预测并不简单地预测分支指令一直发生跳转或者不跳转,而是会根据分支指令在过去一段时间的执行情况来决定预测的结果。
📄️ 指令集体系
精简指令集概述
📄️ 指令解码
在超标量处理器中,即使是RISC指令集,仍存在一些指令不能使用一般指令的处理方式,需要特殊处理,例如有些指令的目的寄存器个数多于一个,这会影响寄存器重命名的过程;再例如,有些RISC指令集支持每条指令都可以条件指令,这样的指令在解码时需要进行特殊处理等,因为这些特殊的指令使用的频率并不高,没有必要让后面的流水线增加硬件来对它们进行处理,这需要在解码阶段将它们转换为普通的指令,后面的流水线按照一般指令的处理方式来执行它们。
📄️ 寄存器重命名
WAW和WAR相关性最好的解决办法是使用硬件管理的寄存器重命名,处理器中实际存在的寄存器个数要多于指令集中定义的通用寄存器的个数,这些在处理器内部实际存在的寄存器称为物理寄存器,与之对应的,指令集中定义的寄存器称为逻辑寄存器。
📄️ 发射
概述