[閒聊] Microcode科普
看板PC_Shopping (個人電腦購買)作者benmei99 (K1NG0DyR)時間1月前 (2024/07/23 21:50)推噓96(96推 0噓 53→)留言149則, 105人參與討論串1/1
說是科普但就是我感冒在家無聊出來幹個古、帶帶風向(?
比起前幾天製程一知半解的文來說
這算是我的主戰場,但人感冒難免有錯請看官們海涵
警告:職業病的關係有些詞彙我比較喜歡原文,所以看起來會是討厭的晶晶體
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
※ 編輯: benmei99 (111.248.158.55 臺灣), 07/23/2024 21:51:34
推
07/23 21:51,
1月前
, 1F
07/23 21:51, 1F
推
07/23 21:54,
1月前
, 2F
07/23 21:54, 2F
推
07/23 21:57,
1月前
, 3F
07/23 21:57, 3F
推
07/23 22:01,
1月前
, 4F
07/23 22:01, 4F
推
07/23 22:03,
1月前
, 5F
07/23 22:03, 5F
推
07/23 22:05,
1月前
, 6F
07/23 22:05, 6F
推
07/23 22:09,
1月前
, 7F
07/23 22:09, 7F
推
07/23 22:13,
1月前
, 8F
07/23 22:13, 8F
推
07/23 22:15,
1月前
, 9F
07/23 22:15, 9F
推
07/23 22:20,
1月前
, 10F
07/23 22:20, 10F
→
07/23 22:20,
1月前
, 11F
07/23 22:20, 11F
AI生圖xD? 你想看怎麼樣的圖片 文字太多難以下嚥嗎xD?
推
07/23 22:21,
1月前
, 12F
07/23 22:21, 12F
推
07/23 22:24,
1月前
, 13F
07/23 22:24, 13F
推
07/23 22:25,
1月前
, 14F
07/23 22:25, 14F
※ 編輯: benmei99 (111.248.158.55 臺灣), 07/23/2024 22:31:16
推
07/23 22:29,
1月前
, 15F
07/23 22:29, 15F
→
07/23 22:31,
1月前
, 16F
07/23 22:31, 16F
推
07/23 22:32,
1月前
, 17F
07/23 22:32, 17F
推
07/23 22:33,
1月前
, 18F
07/23 22:33, 18F
阿月是不是很久沒發文了阿,好像很久沒看到了xD
※ 編輯: benmei99 (111.248.158.55 臺灣), 07/23/2024 22:36:00
推
07/23 22:34,
1月前
, 19F
07/23 22:34, 19F
※ 編輯: benmei99 (111.248.158.55 臺灣), 07/23/2024 22:38:12
推
07/23 22:41,
1月前
, 20F
07/23 22:41, 20F
→
07/23 22:47,
1月前
, 21F
07/23 22:47, 21F
→
07/23 22:48,
1月前
, 22F
07/23 22:48, 22F
我知道你意思也確實是以Intel家為出發點寫這篇,下次改進
推
07/23 22:55,
1月前
, 23F
07/23 22:55, 23F
推
07/23 22:57,
1月前
, 24F
07/23 22:57, 24F
推
07/23 23:01,
1月前
, 25F
07/23 23:01, 25F
推
07/23 23:02,
1月前
, 26F
07/23 23:02, 26F
→
07/23 23:02,
1月前
, 27F
07/23 23:02, 27F
推
07/23 23:04,
1月前
, 28F
07/23 23:04, 28F
推
07/23 23:05,
1月前
, 29F
07/23 23:05, 29F
推
07/23 23:05,
1月前
, 30F
07/23 23:05, 30F
推
07/23 23:13,
1月前
, 31F
07/23 23:13, 31F
推
07/23 23:23,
1月前
, 32F
07/23 23:23, 32F
→
07/23 23:23,
1月前
, 33F
07/23 23:23, 33F
具體修正的細節是商業機密,我要是知道的話就不會在這邊惹
還有 77 則推文
還有 8 段內文
→
07/24 14:47,
1月前
, 111F
07/24 14:47, 111F
推
07/24 14:55,
1月前
, 112F
07/24 14:55, 112F
推
07/24 15:05,
1月前
, 113F
07/24 15:05, 113F
推
07/24 15:19,
1月前
, 114F
07/24 15:19, 114F
→
07/24 16:35,
1月前
, 115F
07/24 16:35, 115F
※ 編輯: benmei99 (111.248.158.55 臺灣), 07/24/2024 16:35:52
推
07/24 16:42,
1月前
, 116F
07/24 16:42, 116F
推
07/24 17:45,
1月前
, 117F
07/24 17:45, 117F
推
07/24 17:48,
1月前
, 118F
07/24 17:48, 118F
推
07/24 17:52,
1月前
, 119F
07/24 17:52, 119F
推
07/24 18:11,
1月前
, 120F
07/24 18:11, 120F
→
07/24 19:04,
1月前
, 121F
07/24 19:04, 121F
→
07/24 19:04,
1月前
, 122F
07/24 19:04, 122F
推
07/24 23:14,
1月前
, 123F
07/24 23:14, 123F
推
07/25 00:07,
1月前
, 124F
07/25 00:07, 124F
推
07/25 00:43,
1月前
, 125F
07/25 00:43, 125F
推
07/25 02:32,
1月前
, 126F
07/25 02:32, 126F
推
07/25 08:01,
1月前
, 127F
07/25 08:01, 127F
推
07/25 12:32,
1月前
, 128F
07/25 12:32, 128F
推
07/25 14:53,
1月前
, 129F
07/25 14:53, 129F
推
07/25 17:18,
1月前
, 130F
07/25 17:18, 130F
→
07/25 17:19,
1月前
, 131F
07/25 17:19, 131F
推
07/25 23:03,
1月前
, 132F
07/25 23:03, 132F
→
07/26 00:30,
1月前
, 133F
07/26 00:30, 133F
→
07/26 00:30,
1月前
, 134F
07/26 00:30, 134F
→
07/26 00:30,
1月前
, 135F
07/26 00:30, 135F
→
07/26 00:30,
1月前
, 136F
07/26 00:30, 136F
→
07/26 00:30,
1月前
, 137F
07/26 00:30, 137F
→
07/26 00:30,
1月前
, 138F
07/26 00:30, 138F
→
07/26 00:30,
1月前
, 139F
07/26 00:30, 139F
→
07/26 00:30,
1月前
, 140F
07/26 00:30, 140F
→
07/26 00:30,
1月前
, 141F
07/26 00:30, 141F
→
07/26 00:30,
1月前
, 142F
07/26 00:30, 142F
→
07/26 00:30,
1月前
, 143F
07/26 00:30, 143F
推
07/26 03:02,
1月前
, 144F
07/26 03:02, 144F
推
07/26 07:22,
1月前
, 145F
07/26 07:22, 145F
推
07/26 07:55,
1月前
, 146F
07/26 07:55, 146F
推
07/26 09:06,
1月前
, 147F
07/26 09:06, 147F
推
07/26 12:48,
1月前
, 148F
07/26 12:48, 148F
推
07/26 18:27,
1月前
, 149F
07/26 18:27, 149F
PC_Shopping 近期熱門文章
PTT數位生活區 即時熱門文章