openstack-notes

前面的知识只是一个理论基础铺垫,下面我们就结合一款真实的CPU架构进行对应分析,图6和图7分别是x86和ARM体系结构的内核架构图(都是具有OoOE特性的CPU架构),可以看到他们基本的组成都是一样的(虽然x86是CISC而ARM是RISC,但是现代x86内部也是先把CISC翻译成RISC的),因此我在这里就只分析x86结构。

1.取指令阶段(IF)

2.指令译码阶段(ID)

3、循环流检测

4.乱序执行指令阶段(OoOE)

5、执行单元

6、存取单元

  1. 如果一个对于未知地址进行操作的 Store 指令处于 in-flight 状态,那么所有的 Load 指令都要被延迟
  2. 在操作相同地址的 Store 指令之前 Load 指令不能继续执行
  3. 一个 Store 指令不能移动到另外一个 Store 指令之前(指的是在RS中不能先挑选执行后面的一条store指令,注意这只是说某一种架构不允许重排store,其实还是有很多架构如Alpha等是松散内存模型,允许不相关的store重排序的.)