微架构,也称为计算机组织,有时缩写为 μarch 或 uarch,是在特定处理器中实现给定指令集架构 (ISA) 的方式。给定的 ISA 可以使用不同的微架构实现;由于给定设计的不同目标或技术的变化,实现可能会有所不同。
RTL(寄存器传输层)是指数字电路设计中的一种抽象级别,其中电路的行为根据寄存器之间的数据流来描述。它通常用于设计的早期阶段,并充当高级行为描述和较低级别门级实现之间的桥梁。
Standard cells(标准单元)是一组晶体管和互连结构,这些结构经过预先设计和预表征,可用于集成电路 (IC) 设计。它们在固定布局中提供基本的逻辑功能,如AND、OR和XOR门,以及触发器和锁存器。标准单元在性能、功耗和面积利用率方面具有优势,因此广泛用于 ASIC(专用集成电路)设计。
Transistors(晶体管)是用于控制电路中电流的基本电子设备。它们是数字电路的构建块,负责实现逻辑运算。
在数字电路设计中,RTL 用于描述电路的行为,而标准单元则用于使用预先设计的晶体管和互连结构实现该行为。
Bypass
如果前一条指令的结果就是下一条指令的操作数,那么为什么还要把数据写回寄存器呢?因此就出现了Bypass(前递)通路,用于在这种情况下直接将数据重新送到运算器的输入端口。综合起来,详细一点的流水线微架构应该长这样:
CPU多发射
指令发射的主要任务包括:
- 从内存中取出指令
- 对指令进行译码,解析出操作码、操作数等信息
- 检查指令有效性,确保指令格式正确,操作数合法
- 检查资源可用性,确保指令所需的执行单元和操作数均可用
- 分配执行单元,将指令分配到合适的执行单元进行执行
CPU多发射是指在一个时钟周期内,CPU可以同时发射多条指令(前提是ALU互相之间都是没有依赖的,比如浮点运算和整数运算的指令就可以同时执行且互不干扰),为了完成这一点,取指和译码阶段的逻辑必须加强,这就出现了一个叫做调度器或者分发器的结构。多发射技术可以提高CPU的性能,因为它可以最大限度地利用CPU的资源。
多发射技术有两种实现方式:
- 静态多发射:在编译阶段,编译器将可以并行执行的指令打包成一个长指令,然后在CPU中一次性发射。静态多发射技术的优点是简单易实现,但缺点是灵活性较差。
- 动态多发射:在运行时,CPU根据指令的依赖关系,动态地选择可以并行执行的指令进行发射。动态多发射技术的优点是灵活性较强,但缺点是实现起来比较复杂。
现代CPU通常采用动态多发射技术。动态多发射技术可以通过以下方式来提高指令发射效率:
- 数据流分析:CPU使用数据流分析技术来分析指令之间的数据依赖关系,从而确定哪些指令可以并行执行。
- 分支预测:CPU使用分支预测技术来预测分支指令的执行结果,从而提高指令发射的准确性。
- 乱序执行:CPU使用乱序执行技术来不按照程序的顺序执行指令,从而提高指令发射的效率。
超标量(superscalar)是指在一个处理器内核中,可以同时发射多条指令,并在不同的执行单元中执行。
超长指令集VLIW
超长指令集(Very Long Instruction Word,简称VLIW)是一种处理器体系结构,它将多条指令组合成一个长指令,并在一个时钟周期内同时发射和执行。这种技术能够提高CPU的性能,缩短程序的执行时间。
VLIW处理器的设计思想与RISC类似,即采用简单的指令和硬件。不同之处在于,VLIW并行执行多条指令。VLIW架构中,指令级并行的发现与指令执行顺序的调度(硬件中最困难的部分)完全交由编译器完成。这样,硬件可以尽可能的保持简单,并采用流水线,从而使得CPU的设计简化,并达到较高的主频。
VLIW处理器的优点包括:
- 可以提高CPU的性能,缩短程序的执行时间。
- 可以提高CPU的能效,降低CPU的功耗。
- 可以降低CPU的复杂度,简化CPU的设计。
VLIW处理器的缺点包括:
- 对编译器的要求高,编译器需要对程序进行仔细分析,才能生成合适的VLIW指令。
- 对程序的结构有一定的限制,程序需要按照一定的规则进行编写,才能充分利用VLIW处理器的性能。
VLIW处理器在80年代末期首次出现,但由于对编译器的要求高,当时并未得到广泛应用。近年来,随着编译技术的发展,VLIW处理器逐渐得到了重视,并在一些高性能计算领域得到了应用。
VLIW处理器的实现方式
VLIW处理器的实现方式主要有两种:
- 静态VLIW:在编译阶段,编译器将可以并行执行的指令打包成一个长指令,然后在CPU中一次性发射。静态VLIW的优点是简单易实现,但缺点是灵活性较差。
- 动态VLIW:在运行时,CPU根据指令的依赖关系,动态地选择可以并行执行的指令进行发射。动态VLIW的优点是灵活性较强,但缺点是实现起来比较复杂。
现代VLIW处理器通常采用动态VLIW技术。
超长指令集处理器通常被设计成不检查依赖的,这就使得它们必须依赖编译器的魔法才能保证结果的正确,而且,如果发生了缓存缺失,那它们不得不整个处理器都停下来,而不是仅仅停止遇到缓存缺失问题的那一条指令。编译器会在指令之间插入“nops”(no operations)——即空指令,以保证有数据依赖的指令能够正确地执行。这无疑增加了编译器的设计难度和编译所需的时间,但是这同时节省了宝贵的处理器片上资源,通常也能有略好的性能。
现在仍在生产的现代处理器中并没有采用VLIW指令集的处理器。Intel曾经大力推行过的IA-64架构就是一个超长指令集(VLIW)架构,由此设计的“Itanium”系列处理器在当时也被认为是x86的继承者,但是由于市场对这个新架构并不感冒,所以最终这个系列没有发展下去。现代硬件加速最火热的方向是GPU,其实GPU也可以看作是一种VLIW架构的的处理器,只不过它将VLIW架构更进一步,使用“核函数”代替指令,大大增加了这种体系结构的可扩展性,有兴趣的读者也可以了解相关方面的内容。
Index
Max TDP:最大理论负载下的功耗
package:封装
Core VID:CPU电压标识信号
Chipset:芯片组
FSB:前端总线
memory
CAS latency(CL):CPU要读取内存的数据时,需要等待多久的时间才能真正开始读取
RAS-to-CAS Delay(tRCD):内存行地址传输到列地址的延迟时间
RAS Precharge Delay(tRP):内存行地址选通脉冲预充电时间;
Row Active Delay(tRAS):内存行地址选通延迟。
Row Refresh Cycle Time(tRFC):SDRAM行刷新周期时间,行单元刷新所需要的时钟周期数
Command Rate:片选后多少时间可以发出具体的寻址的行激活命令,单位是时钟周期