[閒聊] Microcode科普

PC購物

標籤:閒聊
108950

說是科普但就是我感冒在家無聊出來幹個古、帶帶風向(?
比起前幾天製程一知半解的文來說
這算是我的主戰場,但人感冒難免有錯請看官們海涵
警告:職業病的關係有些詞彙我比較喜歡原文,所以看起來會是討厭的晶晶體

1. 甚麼是Microcode
在了解為甚麼需要跟甚麼是Microcode前,先來看一下高階語言的流程

Source code→Compiler→Machine code

Machine code裡面放著很多machine language instruction(機器指令)
所謂的CISC(複雜指令集)、RISC(精簡指令集),複雜精簡指的是機器指令複雜度。
CISC特點就是指令數非常多而且複雜,指令長度也不等,這和Microcode什麼關係呢?
以前設計CPU的時候都是直接硬體實現(hard-wired),fetch、decode、execute (包含位
址計算、讀取、寫入等等),都是直接用組合邏輯+狀態機電路直接實現並控制的,優點是
硬體執行非常高效。但在後來CISC持續發展下,尋址(addressing)等複雜操作要完全用硬
體實現就越來越不現實也很難維護,所以Microcode就這樣生出來了。

講了那麼多,Microcode到底是什麼? 其實就是把一個指令拆解成很多個Microcode
(Micro-ops),這些microcode是可以直接被硬體實現(執行)的,這樣做降低了很多設計上
的難題和複雜度。Microcode就是一個執行的最小單位(low-level layer)。

Machine instruction執行的時候需要解碼(Decode),負責解碼的單元叫做Instruction
Decode Unit(IDU),IDU大略可以分成兩部分,hardware decoding和microcode decoding
,前者就是直接硬體實現(hard-wired)一些基本指令,例如加減;後者就是負責將複雜指
令轉成數個micro-ops,簡單一點的可能一個micro-ops,普通3~4個左右,複雜的4個以上

x86在80年代後就一直有用microcode,並且Intel在發生了下面要講的事件後開始思考能不
能透過維護microcode來達成出貨後的錯誤修正。

2. Intel大出包
在這次的事件前,Intel出過最大的包應該就是1994年Pentium FDIV bug了,源頭是FPU
的浮點除法指令,在1994年有個美國教授(是數學還是CS我忘了),有個研究需要用電腦做
除法運算,但是他在用電腦處理除法的時候發現答案是錯的,後來種種原因發現是Intel在
當時為了加速運算,把乘法表燒錄在CPU上,但其中有5個輸入錯誤。
其實在運算過程中是會自動修復,只有幾個數字才會完全錯誤,但這位教授很幸運地遇到
了。事後統計我記得是90億次除法才會出現一個錯誤,平均故障是700年才會發生一次(還
是800我也忘了)。後來事件的結果是全面召回有缺陷的CPU。

事件發生後Intel就開始思考出貨後要怎麼維護硬體故障了,很明顯microcode就是一個最
好的維修孔,至於實際上怎麼維修或是patch就是它們的商業機密了,但最後對使用者的方
式就是兩個BIOS更新和作業系統更新。

3. 總結
Microcode是一本基本手冊,利用這本手冊可以實現複雜的指令(CISC)
Microcode的角色是:
A. 指令執行的最小單位
B. CPU內部硬體控制
C. CPU出貨後的維修孔

Microcode其實很有趣,某種程度上RISC的誕生也有淵源,因為在1970年代中期IBM內部的
Project,他們分析了S/360還有S/370的數據得到了一個結論:Microcode的引入會導致
「執行最頻繁執行的指令」時產生很大、昂貴的開銷,這個結論其實就是RISC的源起和概
念。
突然想到補充一下這個Project就是IBM 801,由John Cocke主導,他是圖靈獎得主也被譽
為RISC架構之父,同時也是CYK Algorithm裡的C,(另外兩人是Daniel Younger、嵩忠雄)

其實還有很多能講的,為了避免過於嘮叨就暫且不提,有人有興趣的話再寫
而且如果完全不知道Microcode是甚麼我想這些應該足夠了xD
最近開始嘗試與他人交流(?
我其實不太確定這樣的文章(包含之前在板上PO的),對於小白來說能看懂多少,我是希望
能讓完全不懂的人了解到底在講什麼東西,起碼這是我在甚麼都不懂的時候,會想要得到
的知識、資訊。如果看了有點心得的人可以給我一點反饋

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.158.55 (臺灣)※ 文章網址: https://www.ptt.cc/bbs/PC_Shopping/M.1721742613.A.240.html
smallreader1樓熱心講解推 07/23 21:51
mrme9452樓推科普,這幾天電蝦水準整個都高了不少 07/23 21:54
EraKing3樓有趣文章推 07/23 21:57
cgalen19944樓長知識 07/23 22:01
zseineo5樓 07/23 22:03
a205566樓推 科普讚讚 07/23 22:05
CircusWorld7樓感謝分享 07/23 22:09
weiber828樓感謝分享,還是用arm好惹 07/23 22:13
Pchome12H9樓看到一半驚覺拉上去看ID後才繼續看完 07/23 22:15
Alllllogo10樓如果你明天有放假,能不能用個Ai生圖 07/23 22:20
Alllllogo11樓來講解.... 07/23 22:20
AI生圖xD? 你想看怎麼樣的圖片 文字太多難以下嚥嗎xD?
ctes94000812樓聽君一席話 07/23 22:21
kawa071013樓推專業文 07/23 22:24
TISH1231114樓你484想帶學術風向= = 07/23 22:25
Yatta15樓 07/23 22:29
mayolane16樓大師 07/23 22:31
Cubelia17樓以前microcode大到能從dieshot看到結構 07/23 22:32
allyourshit18樓看到中間一直覺得會跳出胡歌老公出來 07/23 22:33
阿月是不是很久沒發文了阿,好像很久沒看到了xD
cc43101519樓好文推 07/23 22:34
sdbb20樓颱風夜優文,謝謝 07/23 22:41
labbat21樓不太滿意一詞多義,雖然知道是英特爾幹法 07/23 22:47
labbat22樓然而可程式化的環節和解碼的環節要區分開 07/23 22:48
我知道你意思也確實是以Intel家為出發點寫這篇,下次改進
cutejojocat23樓先推不然等等怕被發現看不懂 07/23 22:55
jay92031424樓推 好多長知識文此風可長 07/23 22:57
proton6325樓 07/23 23:01
yymeow26樓推專業文,這幾天真的神人輩出 07/23 23:02
dos0127樓剛才把科普看成抖音...我覺得今天該早點睡 07/23 23:02
dogluckyno128樓推推 07/23 23:04
chibon199229樓 07/23 23:05
weimr30樓 07/23 23:05
延伸閱讀
[閒聊] 其實Intel cpu還是不錯吧
[閒聊] 雷蛇新鍵盤機制在國外引起爭議
Re: [閒聊] 個人Intel 12~14代CPU調整方案
[心得] GN 13、14代問題影片重點整理
[閒聊] 英特爾出了小改款CPU了!
[閒聊] 最近利民的塔散還要抽抽樂嗎
[閒聊] FD決定公開樹梅派版North的機殼3D列印檔
[閒聊] i5-12490F升級紀錄 純圖文閒聊 無測試