[閒聊] Microcode科普

看板PC_Shopping (個人電腦購買)作者 (K1NG0DyR)時間1月前 (2024/07/23 21:50), 1月前編輯推噓96(96053)
留言149則, 105人參與, 1月前最新討論串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
感謝分享,還是用arm好惹
07/23 22:13, 8F

07/23 22:15, 1月前 , 9F
看到一半驚覺拉上去看ID後才繼續看完
07/23 22:15, 9F

07/23 22:20, 1月前 , 10F
如果你明天有放假,能不能用個Ai生圖
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
你484想帶學術風向= =
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
以前microcode大到能從dieshot看到結構
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
ptt是學術論壇 沒毛病
07/23 23:23, 32F

07/23 23:23, 1月前 , 33F
最重要馬口怎麼應用去修正hw沒講
07/23 23:23, 33F
具體修正的細節是商業機密,我要是知道的話就不會在這邊惹
還有 77 則推文
還有 8 段內文
07/24 14:47, 1月前 , 111F
早期灌OS還得先灌驅動更新才行
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
我對microcode的理解就是比較簡單的就算機
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
從根本上消失了,再怎麼編譯最後產生的mach
07/26 00:30, 140F

07/26 00:30, 1月前 , 141F
ine code/binary
07/26 00:30, 141F

07/26 00:30, 1月前 , 142F
對CPU來說也只是microcode拿來interpret的b
07/26 00:30, 142F

07/26 00:30, 1月前 , 143F
ytecode而已
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
文章代碼(AID): #1cdxKL90 (PC_Shopping)
文章代碼(AID): #1cdxKL90 (PC_Shopping)