微架構

维基百科,自由的百科全书
跳转至: 导航搜索
Intel Core的微架構

微架構,也被叫做計算機組織,微架構使得指令集架構 (ISA)可以在處理器上被執行。指令集架構可以在不同的微架構上執行。 計算機結構是一門探討微架構與指令集兩者互動的一門學問。

和指令集架構的關係[编辑]

指令集架構是指在處理器內被處理的程式,指令集架構為組合語言的設計師和編譯器所見。指令集架構包含execution model,暫存器,地址以及資料格式。 微架構包含處理器內部的構成以及這些構成起來的部分如何執行指令集架構。 微架構通常被表示成流程圖,以描述機器內部元件的連結狀況,從一個閘或是暫存器,到算術邏輯單元(ALU)。圖上分布著資料路徑(可以顯示資料在微架構的位置)以及控制路徑(顯示資料該被什麼指令所處理)。

每個微架構的的元件都被表示成藉數個邏輯閘所建構而成的工具。 每個邏輯閘都被表示成藉電晶體建構成的零件。 擁有不同微架構的機器可能擁有相同的指令集架構,因此可以執行相同的程式。由於半導體科技的進步,新型的處理器可以以較快的速度執行相同的指令集架構。

微架構的概念[编辑]

Intel 80286微架構

在今日,管線資料路徑是微架構中最常被使用的資料路徑。 這種作法也被普遍的用於微處理器,微控制器,以及數位訊號處理器。管線化的結構允許多個指令在同一時間執行,不同的指令在微架構不同的位置執行。 管線分有好幾個不同的階段(stage),這些階段是微架構的基礎。這些階段包含擷取指令,指令解碼,執行指令,以及將資料寫回。一些結構還包含其他階段,像是對記憶體做存取的動作。管線是微架構其中一項主要的工作。 執行單元也是微架構的基本元件。執行單元包含算術邏輯單元 (ALU),浮點運算器 (FPU),load/store單元,分支預測,以及SIMD。 這些單元在處理器內進行計算。執行單元的數量,他們的 latency(記憶體存取資料的時間)及throughput(將資料存到或是讀取出記憶體的速度) 影響微架構的效能。

指令週期[编辑]

所有的中央處理器,微處理器藉由以下的步驟來執行程式:

  1. 讀取指令並將其解碼
  2. 找到需要用到的資料以執行指令
  3. 執行指令
  4. 將結果寫回

指令週期將會不斷循環,直到電力用盡。

執行速度[编辑]

上面的步驟看起來簡單,但階層記憶體使這些步驟變得複雜,階層記憶體包含快取主記憶體,以及非揮發性的記憶體,例如硬碟 (這是指令和資料儲存的地方),總是比處理器處理資料的速度慢。步驟(2)常常導致 lengthy (在CPU內) delay,這種延遲是在資料通過匯流排時產生。一直以來,一個不變的目標是在同一時間內執行更多指令,以提升程式執行的效率。這導致邏輯和電路設計變得更複雜。一開始,只有大型電腦和超級電腦使用這種技術,因為這種技術需要大量的電路。當半導體產業發展起來後,這樣的技術被加裝在單一的半導體晶片上。詳見摩爾定律(積體電路可容納的電晶體數量,每二年增加一倍)。

指令集的選擇[编辑]

指令集從過去以來不斷的變化,從一開始的簡單到後來的複雜。最近,load-store 結構VLIW以及EPIC是最普遍的指令集。結構處理data parallelism的方法包括SIMD以及向量。一些指令集,例如 CISC; 許多早期的裝置使用"CISC"。

然而,對指令集架構的選擇可能會對實作高效能的機器產生大的影響。發展RISC 處理器是一個好的策略,可以將指令給簡化。這樣的指令容易在管線內被擷取,解碼與執行,由於指令頻繁的被使用,快取便被頻繁的使用,這樣就使記憶體存取的時間降低。

流水线[编辑]

在目前,能夠最有效的提升效能的方法就是流水线。早期的處理器是等一個指令執行完所有步驟後,然後才輪到下一個指令執行。大部分的電路在某一個步驟結束後就處在閒置的狀態,例如, 對指令進行解碼的電路在指令進入執行階段後就處於閒置狀態。

流水线化的電路藉由允許多個指令在同一時間,在電路上不同的位置進行不同的工作。例如,處理器可以在最後一個指令等待結果寫回時對另一個指令解碼。這使得處理器在同一時間可以處理四個指令,使處理器的效能增加了四倍。

RISC藉由將每個階段分割清楚並讓每個階段都花費一樣的時間執行來讓管線變小和變得容易建構— 每個階段花費1個cycle的時間。處理器使用了有如工廠裝配線的設計,當指令由一邊進來的同時就有另一個指令從另一邊出去。 由於RISC流水线是降低複雜度的設計,使得流水线核心跟指令快取可以被裝置在同一個晶片內,這是精簡指令集較為快速的原因。早期的裝置,例如SPARCMIPSIntelMotorola的CISC還快10倍。

與指令集架構的關係[编辑]

指令集架構大致上和處理器的程式設計模型(programming model)一樣。指令集架構包括執行模型(execution model),暫存器(Processor register),位址和數據格式等。微架構包括處理器的組成部份和對指令集架構的連接和操作。 一個系統的微架構通常以描述不同微架構組成部份如何互相連接的平面圖代表,而這些微架構組成部份可以是簡單的邏輯閘(Logic gates),電阻,或是算術邏輯單元(Arithmetic logic unit ,ALU)等大型元件。這些平面圖通常把數據路徑(Data path)和控制路徑(control path)分開。 每個組成部份會以示意圖表達他們和執行他們的邏輯閘之間的連繫。

几種典型的微架構[编辑]

INTEL

AMD

K5 微架构

  • K5 - AMD 的首个原创微架构。 K5基于Am29000的微架构,并且添加了一个x86的解码器。 即使这个设计的原理和Pentium Pro相同,而实际性能更像是Pentium。

K6 微架构

  • K6 - K6并非基于K5, 而是基于当时已经被AMD所收购了的 NexGen 所设计的Nx686处理器,K6的针脚兼容 Intel Pentium。
  • k6-2 微架构 - 增加了 3DNow! SIMD 指令集。
  • K6-III 微架构 - 有3级缓存,64KB L1 一级缓存,256KB L2 二级全速缓存,最高可达2MB的主板装载(motherboard mounted) 3L 三级缓存。

K7 微架构

  • K7 - 是 AMD Athlon 和 Athlon XP 的微架构。

K8 微架构

  • K8 AMD的内部代号为Hammer或者SledgeHammer。K8的CPU基于K7,而计算机字增加到了64位,添加了一个集成存储器控制器(integrated memory controller),采用超线程通信结构(HyperTransport communication fabric),二级缓存L2增加到了1MB(1128 KB),增加了 SSE 指令集。后期的K8增加了 SSE3。K8是首个兼容64位Windows的微处理器,在2003年4月22日上市。超线程通信结构(HyperTransport communication fabric)取代了传统的前端总线(Font-side bus),让CUP直接和主存(main memory)链接,

Dual core K8 - 双核心 的 Athlon 64 X2 在K9被宣布取消后,被错误地称为K9。

K9

被取消。

K10 微架构

  • K10 微架构 - 代号为 Barcelona , 是AMD系列的第十代微架构,内置四个核心,共享 Level 3 Cache 第三级缓存,128位浮点单元,AMD-V Nested Paging virtualization 和 HyperTransport 3.0 。

Griffin 处理器核心

  • Griffin 处理器核心 - Griffin 的设计只是用于移动平台(AMD mobile platform),应用于Turion 64处理器。Griffin 在2008年发布于 Puma 平台(Puma platform 英语)。Griffin 基于65nm制程的K8版本G(K8 revision G),特别对移动市场的需求使用了能源最优化技术(power optimization technologies)。事实上,Griffin 的能源最优化技术超越了其他AMD系列第十代微架构。

Bulldozer 微架构

  • Bulldozer - 是继 K10 之后,使用 AMD M-SPACE 模块化设计方法(modular design methodology)的下一代微架构。Bulldozer是为功耗在10W至100W类别的处理器而设计,应用了 XOP(英语), FMA4(英语) 和 CVT16(英语) 指令集,并且能结合GPU核心(AMD Fusion)。

Bobcat 处理器核心

  • Bobcat 处理器核心 - Bobcat 是 AMD Bulldozer 能源功耗在 1W 至 10W 的版本,这个微处理器核心是一个非常精简的 x86 核心。和 Bulldozer 相同,Bobcat 属于“AMD 融合项目”(the AMD Fusion project),能够和 GPU 组合使用。

微架構的發展方向[编辑]

參見[编辑]


参考文献[编辑]

  • 《计算机科学技术百科全书》(第二版) 作者:张效祥 出版社:清华大学出版社, 2005年. ISBN:7302105944, 9787302105947