微架构(英语:microarchitecture),也被叫做计算机组织,微架构使得指令集架构(ISA)可以在处理器上被运行。指令集架构可以在不同的微架构上运行。计算机结构是一门探讨微架构与指令集两者交互的一门学问。
指令集架构是指在处理器内被处理的程序,指令集架构为汇编语言的设计师和编译器所见。指令集架构包含execution model,寄存器,地址以及数据格式。微架构包含处理器内部的构成以及这些构成起来的部分如何运行指令集架构。微架构通常被表示成流程图,以描述机器内部组件的链接状况,从一个闸或是寄存器,到算术逻辑单元(ALU)。图上分布着数据路径(可以显示数据在微架构的位置)以及控制路径(显示数据该被什么指令所处理)。
每个微架构的的组件都被表示成藉数个逻辑门所建构而成的工具。每个逻辑门都被表示成藉晶体管建构成的零件。拥有不同微架构的机器可能拥有相同的指令集架构,因此可以运行相同的程序。由于半导体科技的进步,新型的处理器可以以较快的速度运行相同的指令集架构。
现时,流水线数据路径是微架构中最常被使用的数据路径。这种作法也被普遍的用于微处理器,微控制器,以及数字信号处理器。流水线的结构允许多个指令在同一时间运行,不同的指令在微架构不同的位置运行。流水线分有好几个不同的阶段(stage),这些阶段是微架构的基础。这些阶段包含取指令,译码,运行指令,以及将数据写回。一些结构还包含其他阶段,像是对存储器做访问的动作。流水线是微架构其中一项主要的工作。运行单元也是微架构的基本组件。运行单元包含算术逻辑单元(ALU),浮点运算器(FPU),load/store单元,分支预测,以及SIMD。这些单元在处理器内进行计算。运行单元的数量,他们的延迟(存储器访问数据的时间)及吞吐量(将数据存到或是读取出存储器的速度)影响微架构的性能。
所有的中央处理器,微处理器借由以下的步骤来运行程序:
指令周期将会不断循环,直到电力用尽。
上面的步骤看起来简单,但层次结构存储器使这些步骤变得复杂,层次结构存储器包含缓存,主存,以及非易失性的存储器,例如硬盘(这是指令和数据存储的地方),总是比处理器处理数据的速度慢。步骤(2)常常导致lengthy(在CPU内)delay,这种延迟是在数据通过总线时产生。一直以来,一个不变的目标是在同一时间内运行更多指令,以提升程序运行的效率。这导致逻辑和电路设计变得更复杂。一开始,只有大型机和超级电脑使用这种技术,因为这种技术需要大量的电路。当半导体产业发展起来后,这样的技术被加装在单一的半导体芯片上。详见摩尔定律(集成电路可容纳的晶体管数量,每二年增加一倍)。
指令集从过去以来不断的变化,从一开始的简单到后来的复杂。最近,load-store结构,VLIW以及EPIC是最普遍的指令集。结构处理data parallelism的方法包括SIMD以及向量。一些指令集,例如CISC;多早期的设备使用"CISC"。
然而,对指令集架构的选择可能会对实现高性能的机器产生大的影响。发展RISC处理器是一个好的策略,可以将指令给简化。这样的指令容易在管线内被截取,解码与运行,由于指令频繁的被使用,缓存便被频繁的使用,这样就使存储器访问的时间降低。
在目前,能够最有效的提升性能的方法就是流水线。早期的处理器是等一个指令运行完所有步骤后,然后才轮到下一个指令运行。大部分的电路在某一个步骤结束后就处在闲置的状态,例如,对指令进行解码的电路在指令进入运行阶段后就处于闲置状态。
流水线化的电路借由允许多个指令在同一时间,在电路上不同的位置进行不同的工作。例如,处理器可以在最后一个指令等待结果写回时对另一个指令解码。这使得处理器在同一时间可以处理四个指令,使处理器的性能增加了四倍。
RISC借由将每个阶段分割清楚并让每个阶段都花费一样的时间运行来让流水线变小和变得容易建构—每个阶段花费1个cycle的时间。处理器使用了有如工厂流水线的设计,当指令由一边进来的同时就有另一个指令从另一边出去。由于RISC流水线是降低复杂度的设计,使得流水线核心跟指令缓存可以被设备在同一个芯片内,这是精简指令集较为快速的原因。早期的设备,例如SPARC和MIPS比Intel和Motorola的CISC还快10倍。
指令集架构大致上和处理器的程序设计模型(programming model)一样。指令集架构包括运行模型(execution model),寄存器(Processor register),地址和数据格式等。微架构包括处理器的组成部分和对指令集架构的连接和操作。一个系统的微架构通常以描述不同微架构组成部分如何互相连接的平面图代表,而这些微架构组成部分可以是简单的逻辑门(Logic gates),电阻,或是算术逻辑单元(Arithmetic logic unit ,ALU)等大型组件。这些平面图通常把数据路径(Data path)和控制路径(control path)分开。每个组成部分会以示意图表达他们和运行他们的逻辑门之间的连系。