微架構(英語: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處理器是一個好的策略,可以將指令給簡化。這樣的指令容易在流水線內被截取,解碼與執行,由於指令頻繁的被使用,緩存便被頻繁的使用,這樣就使存儲器訪問的時間降低。
流水線(pipeline)
在目前,能夠最有效的提升性能的方法就是流水線。早期的處理器是等一個指令執行完所有步驟后,然后才輪到下一個指令執行。大部分的電路在某一個步驟結束后就處在閑置的狀態,例如,對指令進行解碼的電路在指令進入執行階段后就處於閑置狀態。
流水線化的電路借由允許多個指令在同一時間,在電路上不同的位置進行不同的工作。例如,處理器可以在最后一個指令等待結果寫回時對另一個指令解碼。這使得處理器在同一時間可以處理四個指令,使處理器的性能增加了四倍。
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)分開。每個組成部分會以示意圖表達他們和執行他們的邏輯門之間的連系。
幾種典型的微架構
Intel
- P5
- P6
- NetBurst
- Core
- Nehalem/Westmere
- Sandy Bridge/Ivy Bridge
- Haswell/Broadwell
- Skylake
- Kaby Lake
- Coffee Lake
- Comet Lake
- Ice Lake
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)。
參考文獻
- 《計算機科學技術百科全書》(第二版). 作者:張效祥. 出版社:清華大學出版社,2005年. ISBN:7302105944, 9787302105947