Intel Core i7的整体操作

时间:2022-10-11 07:55:16

Intel Core i7的整体操作(我们也称呼为Nehalem,他的项目代码名)

主要分成2个部分
-指令控制单元Instruction Control Unit(ICU),负责从存储器读出指令序列,并生成基本操作
-执行单元Execution Unit(EU),执行ICU生成出来的操作

ICU从指令高速缓存(Instruction Cache)中读取指令
通常会很早之前就取值,这样才有时间对指令译码,然后把操作发送给EU
不过如果遇到分支,会有2种情况
-选择分支,控制被传递的分支目标
-不选择分支,控制被传递到指令序列的下一条指令

现代处理器有了一种新技术叫分支预测
-处理器会预测是否会选择分支,并预测好分支的目标地址
-然后用投机执行Speculative Execution来取出位于它所预测会跳到的指令,然后译码(在还没确定预测是否正确前就执行了)
-如果预测失败,就会回到分支点(重新预测)

指令译码逻辑接受实际的程序指令,并转换成基本操作(也叫微操作)
-这些基本操作就是一些简单的计算任务

EU接受来自ICU的操作
-每个周期都会接受多个操作,这些操作会被分派到一组功能单元中,然后执行
-功能单元是用来处理特定类型的操作

读写存储器是由加载和存储单元实现
-加载单元处理从存储器读数据到处理器的操作
-当使用投机执行技术时,分支操作会送到EU,如果分支预测错误,EU会丢弃分支点之后的结果,并告诉分支单元"错了",还指出正确的分支

在ICU中,退役单元Retirement Unit记录正在执行的处理,并确保它遵守机器级程序的顺序语义
-寄存器文件包含整数,浮点数,和SSE寄存器,是退役单元的一部分,退役单元控制这些寄存器的更新
-在译码时,指令的信息被放置在一个先进先出的队列中,这个信息会保持在队列中until其中一个执行了
-一旦指令执行完了,而且预测正确,那么这个指令就退役了Retired,所有对程序寄存器的更新都执行了
-如果预测错误,这条指令会被清空,丢弃计算出来的结果