複製鏈接
請複製以下鏈接發送給好友

微碼

鎖定
微碼(英語:microcode),又稱微指令,是在CISC結構下,運行一些功能複雜的指令時,所分解一系列相對簡單的指令。相關的概念最早在1947年開始出現。
中文名
微碼
外文名
Microcode
別    名
微程序

微碼簡介

微指令(英語:microcode),又稱微碼,是在CISC結構下,運行一些功能複雜的指令時,所分解一系列相對簡單的指令。相關的概念最早在1947年開始出現。
微指令的作用是將機器指令與相關的電路實現分離,這樣一來機器指令可以更自由的進行設計與修改,而不用考慮到實際的電路架構。與其他方式比較起來,使用微指令架構可以在降低電路複雜度的同時,建構出複雜的多步驟機器指令。撰寫微指令一般稱為微程序設計(microprogramming),而特定架構下的處理器實做中微指令有時會稱為微程序(microprogram)。
現代的微指令通常由CPU工程師在設計階段編寫,並且存儲在只讀內存(ROM, read-only-memory)或可編程邏輯數組(PLA, programmable logic array)中。然而有些機器會將微指令存儲在靜態隨機存取內存(SRAM)或是閃存(flash memory)中。它通常對普通程序員甚至是彙編語言程序員來説是不可見的,也是無法修改的。與機器指令不同的是,機器指令必須在一系列不同的處理器之間維持兼容性,而微指令只設計成在特定的電路架構下運行,成為特定處理器設計的一部分。 [1] 

微碼微程序設計技術

微程序設計技術,指的是用軟件技術來實現硬件設計的一種技術。

微碼指令集架構

指令集架構(英語:Instruction Set Architecture,縮寫為ISA),又稱指令集指令集體系,是計算機體系結構中與程序設計有關的部分,包含了基本數據類型,指令集,寄存器尋址模式,存儲體系,中斷異常處理以及外部I/O。指令集架構包含一系列的opcode即操作碼(機器語言),以及由特定處理器執行的基本命令。
指令集體系與微架構(一套用於執行指令集的微處理器設計方法)不同。使用不同微架構的電腦可以共享一種指令集。例如,Intel的PentiumAMD的AMD Athlon,兩者幾乎採用相同版本的x86指令集體系,但是兩者在內部設計上有本質的區別。
一些虛擬機器支持基於SmalltalkJava虛擬機,微軟的公共語言運行時虛擬機所生成的字節碼,他們的指令集體系將bytecode(字節碼)從作為一般手段的代碼路徑翻譯成本地的機器語言,並通過解譯執行並不常用的代碼路徑,全美達以相同的方式開發了基於x86指令體系的VLIW處理器。

微碼指令集的分類

複雜指令集計算機包含許多應用程序中很少使用的特定指令,由此產生的缺陷是指令長度不固定。精簡指令集計算機通過只執行在程序中經常使用的指令來簡化處理器的結構,而特殊操作則以子程序的方式實現,它們的特殊使用通過處理器額外的執行時間來彌補。理論上的重要類型還包括最小指令集計算機與單指令集計算機,但都未用作商業處理器。另外一種衍生類型是超長指令字,處理器接受許多經過編碼的指令並通過檢索提取出一個指令字並執行。

微碼機器語言

機器語言是由聲明和指令所組成的。在處理結構上,一個特定指令指明瞭以下幾個部分:
  • 用於算術運算,尋址或者控制功能的特定寄存器
  • 特定存儲空間的地址或偏移量;
  • 用於解譯操作碼的特定尋址模式
複雜的操作可以藉由將簡單的指令合併而達成,可以(在馮·諾依曼體系中)連續的執行,也可以藉控制流來執行指令。 [2] 

微碼複雜指令集

複雜指令集(英文:Complex Instruction Set Computing縮寫CISC)是一種微處理器指令集架構,每個指令可執行若干低階操作,諸如從內存讀取、儲存、和計算操作,全部集於單一指令之中。與之相對的是精簡指令集
複雜指令集的特點是指令數目多而複雜,每條指令字長並不相等,電腦必須加以判讀,併為此付出了性能的代價。
精簡指令集處理器發跡以前,許多電腦架構嘗試跨越“語義鴻溝”──設計出藉由提供“高階”指令支援高階編程語言的指令集,諸如程序調用和返回,循環指令諸如“若非零則減量和分支”和複雜尋址模式以允許數據結構和陣列存取以結合至單一指令。與複雜指令集相比,精簡指令集實現更容易,指令並行執行程度更好,編譯器的效率更高。
屬於複雜指令集的處理器有CDC 6600、System/360、VAXPDP-11、Motorola 68000家族、x86等。 [3] 

微碼參見

參考資料
  • 1.    Smith, Richard E. (1988). "A Historical Overview of Computer Architecture". Annals of the History of Computing. 10 (4): 277–303. doi:10.1109/MAHC.1988.10039. Retrieved June 21, 2006.
  • 2.    Bowen, Jonathan P. Standard Microprocessor Programming Cards 9 (6): 274–290. July–August 1985. doi:10.1016/0141-9331(85)90116-4.
  • 3.    Mano, M. Morris. Computer System Architecture (3rd Edition). ISBN 978-0131755635.