微架构
微架构(英语:),也被叫做计算机组织,微架构使得指令集架构(ISA)可以在处理器上被运行。指令集架构可以在不同的微架构上运行。 计算机结构是一门探讨微架构与指令集两者交互的一门学问。

和指令集架构的关系
指令集架构是指在处理器内被处理的程序,指令集架构为汇编语言的设计师和编译器所见。指令集架构包含execution model,寄存器,地址以及数据格式。微架构包含处理器内部的构成以及这些构成起来的部分如何运行指令集架构。微架构通常被表示成流程图,以描述机器内部组件的链接状况,从一个闸或是寄存器,到算术逻辑单元(ALU)。图上分布着数据路径(可以显示数据在微架构的位置)以及控制路径(显示数据该被什么指令所处理)。
每个微架构的的组件都被表示成藉数个逻辑门所建构而成的工具。每个逻辑门都被表示成藉晶体管建构成的零件。拥有不同微架构的机器可能拥有相同的指令集架构,因此可以运行相同的程序。由于半导体科技的进步,新型的处理器可以以较快的速度运行相同的指令集架构。
微架构的概念

现时,流水线数据路径是微架构中最常被使用的数据路径。这种作法也被普遍的用于微处理器,单片机,以及数字信号处理器。流水线的结构允许多个指令在同一时间运行,不同的指令在微架构不同的位置运行。流水线分有好几个不同的阶段(stage),这些阶段是微架构的基础。这些阶段包含取指令,译码,运行指令,以及将数据写回。一些结构还包含其他阶段,像是对内存做访问的动作。流水线是微架构其中一项主要的工作。运行单元也是微架构的基本组件。运行单元包含算术逻辑单元(ALU),浮点运算器(FPU),load/store单元,分支预测,以及SIMD。这些单元在处理器内进行计算。运行单元的数量,他们的延迟(内存访问数据的时间)及吞吐量(将数据存到或是读取出内存的速度)影响微架构的性能。
运行速度
上面的步骤看起来简单,但阶层内存使这些步骤变得复杂,阶层内存包含缓存,主内存,以及非挥发性的内存,例如硬盘(这是指令和数据保存的地方),总是比处理器处理数据的速度慢。步骤(2)常常导致lengthy(在CPU内)delay,这种延迟是在数据通过总线时产生。一直以来,一个不变的目标是在同一时间内运行更多指令,以提升程序运行的效率。这导致逻辑和电路设计变得更复杂。一开始,只有大型电脑和超级电脑使用这种技术,因为这种技术需要大量的电路。当半导体产业发展起来后,这样的技术被加装在单一的半导体芯片上。详见摩尔定律(集成电路可容纳的晶体管数量,每二年增加一倍)。
指令集的选择
指令集从过去以来不断的变化,从一开始的简单到后来的复杂。最近,load-store结构,VLIW以及EPIC是最普遍的指令集。结构处理data parallelism的方法包括SIMD以及矢量。一些指令集,例如CISC;多早期的设备使用"CISC"。
然而,对指令集架构的选择可能会对实作高性能的机器产生大的影响。发展RISC处理器是一个好的策略,可以将指令给简化。这样的指令容易在管线内被截取,解码与运行,由于指令频繁的被使用,缓存便被频繁的使用,这样就使内存访问的时间降低。
流水线(pipeline)
在目前,能够最有效的提升性能的方法就是流水线。早期的处理器是等一个指令运行完所有步骤后,然后才轮到下一个指令运行。大部分的电路在某一个步骤结束后就处在闲置的状态,例如,对指令进行解码的电路在指令进入运行阶段后就处于闲置状态。
流水线化的电路借由允许多个指令在同一时间,在电路上不同的位置进行不同的工作。例如,处理器可以在最后一个指令等待结果写回时对另一个指令解码。这使得处理器在同一时间可以处理四个指令,使处理器的性能增加了四倍。
RISC借由将每个阶段分割清楚并让每个阶段都花费一样的时间运行来让流水线变小和变得容易建构—每个阶段花费1个cycle的时间。处理器使用了有如工厂流水线的设计,当指令由一边进来的同时就有另一个指令从另一边出去。由于RISC流水线是降低复杂度的设计,使得流水线内核跟指令缓存可以被设备在同一个芯片内,这是精简指令集较为快速的原因。早期的设备,例如SPARC和MIPS比Intel和Motorola的CISC还快10倍。
几种典型的微架构
Intel
AMD
- K5 - AMD的首个原创微架构。K5基于Am29000的微架构,并且添加了一个x86的解码器。即使这个设计的原理和Pentium Pro相同,而实际性能更像是Pentium。
- K6 - K6并非基于K5,而是基于当时已经被AMD所收购了的NexGen所设计的Nx686处理器,K6的针脚兼容Intel Pentium。
- K7 - 是AMD Athlon和Athlon XP的微架构。
- K8微架构 - 全球首款x86-64处理器,集成了内存控制器(Integrated Memory Controller),采用HyperTransport技术,增加了SSE指令集。后期的K8增加了SSE3。K8在2003年4月22日上市。HyperTransport取代了传统的前端总线,让CPU直接和内存链接。
- K9 - 被取消。
- K10微架构 - 代号为Barcelona ,是AMD系列的第十代微架构,最多内置四个内核,共享Level 3 Cache第三级缓存,128位浮点单元,支持AMD-V Nested Paging Virtualization和HyperTransport 3.0。
- Bulldozer - 是继K10之后,使用AMD M-SPACE模块化设计方法(modular design methodology)的微架构。Bulldozer是为功耗在10W至100W类别的处理器而设计,应用了XOP,FMA和CVT16指令集,并且部分产品集成了GPU内核(AMD APU)。
- Zen+微架构 - AMD在2018年推出的微架构,CPU芯片采用12纳米制程。
参考文献
- 《计算机科学技术百科全书》(第二版). 作者:张效祥. 出版社:清华大学出版社,2005年. ISBN:7302105944, 9787302105947