[閒聊] Microcode科普
說是科普但就是我感冒在家無聊出來幹個古、帶帶風向(?
比起前幾天製程一知半解的文來說
這算是我的主戰場,但人感冒難免有錯請看官們海涵
警告:職業病的關係有些詞彙我比較喜歡原文,所以看起來會是討厭的晶晶體
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的),對於小白來說能看懂多少,我是希望能讓完全不懂的人了解到底在講什麼東西,起碼這是我在甚麼都不懂的時候,會想要得到的知識、資訊。如果看了有點心得的人可以給我一點反饋
--
※ 編輯: benmei99 (111.248.158.55 臺灣), 07/23/2024 21:51:34
熱心講解推
推科普,這幾天電蝦水準整個都高了不少
有趣文章推
長知識
推
推 科普讚讚
感謝分享
感謝分享,還是用arm好惹
看到一半驚覺拉上去看ID後才繼續看完
如果你明天有放假,能不能用個Ai生圖
來講解....
AI生圖xD? 你想看怎麼樣的圖片 文字太多難以下嚥嗎xD?
聽君一席話
推專業文
你484想帶學術風向= =
推
大師
以前microcode大到能從dieshot看到結構
看到中間一直覺得會跳出胡歌老公出來
阿月是不是很久沒發文了阿,好像很久沒看到了xD
※ 編輯: benmei99 (111.248.158.55 臺灣), 07/23/2024 22:36:00
好文推
颱風夜優文,謝謝
不太滿意一詞多義,雖然知道是英特爾幹法
然而可程式化的環節和解碼的環節要區分開
我知道你意思也確實是以Intel家為出發點寫這篇,下次改進
先推不然等等怕被發現看不懂
推 好多長知識文此風可長
推
推專業文,這幾天真的神人輩出
剛才把科普看成抖音...我覺得今天該早點睡
推推
推
推
推
ptt是學術論壇 沒毛病
最重要馬口怎麼應用去修正hw沒講
具體修正的細節是商業機密,我要是知道的話就不會在這邊惹
推
推
對不起我只能說你講的已經比我計算機
組織的教授好多了
樓上 幫老師上圖
推
好文推
無聊說一下,microcode後來在開發階段
可以做很多有用的事情 像是early sample
可以暫時寫到bios讓開發中的mb開機測試
量產大貨的時候可以移除掉es的支援
以前頂級玩家也會爭取mb廠先拿初期的
microcode來跑極限成績之類
懂行的xD 沒錯 感謝補充
※ 編輯: benmei99 (111.248.158.55 臺灣), 07/24/2024 00:42:17
推
classic microcode是這樣,modern "micr
ocode"包含更多,像CPU的PCU Firmware就
管理turbo,frequency,vid,power等
是的,感謝補充,這部分忘了寫,下次改進
※ 編輯: benmei99 (111.248.158.55 臺灣), 07/24/2024 00:56:28
推 滿有趣的解釋 也好奇Error hand
ling原理(逃
Error handling也是蠻多能寫的,CPU層級的interrupt、OS IPC層級、程式語言層級的ex ception
※ 編輯: benmei99 (111.248.158.55 臺灣), 07/24/2024 01:04:27
很有趣 推個
拜託續集XD
推 認真文
看不懂也推
推科普
推學術 喚醒死去的計算機概論的記憶
推 很不錯,受教了XD
長知識 推
推個˙
推科普 很好睡
推
推 PTT果然是學術論壇
死去的計結記憶在攻擊我
推。
推
推推
聽君一席話 知君是文組
推講解
感謝科普
讚讚 版上需要更多這種優質文
應該不會在這版上出現胡歌老公吧。
推推 希望能有更多深入介紹
推解說
推推,看了覺得很有趣
言簡意賅, 清楚易懂, 期待下一篇!!
而且這樣拋磚引玉的文章也讓板上很多
其他的板友出來回應/補充/討論, 我個
人覺得這樣很棒
推
小白狂喜
電蝦一片業代中難得的清流
至少能讓咱們理解下intel不是空口豪洨
推推,我一直以為微碼只有辨識cpu的功能
,原來用處這麼大
現代microcode和當初已經差很多惹 早
期指state machine 如arm push能挑哪
些reg存進stack 實際上是loop over指
令裡16個select bit 這部分到現在變
成decoder內的microcode 但microcode
更新包山包海 不論eTVB或之前spectre
meltdown改分支預測行為都和原始micr
ocode無關惹 只是當初借用名字
是的,感謝補充,這部分稍嫌瑣碎就沒寫了
借用名字描述得真好,之前想用重載或重新
定義的解釋效果都不太理想
實現這語意有點奇怪,應該是達成吧
一般情況下我會講implement xD
※ 編輯: benmei99 (111.248.158.55 臺灣), 07/24/2024 11:57:53
推專業
又學了新知識了,好文推推
計組科普
推
推專業 跪求續集
如果microcode能被永久放在cpu裡,那
一定有儲存結構 但應該沒有
所以ucode應該都是隨著os實時打上去的
其實是有的喔,有一塊ROM跟RAM,RAM是用來幫那塊ROM patch的。以Intel來說目前Microco de的讀寫都是透過Model Specific Register(MSR)
希望看續集
推
常見BIOS更新microcode是CISC架構
RISC不確定是不是當成firmware寫入O
S image
早期灌OS還得先灌驅動更新才行
推推
推,漲姿勢
推
用知識沖淡錢臭味
先推再看
手機通常出廠怎樣就怎樣 也可刷機破解
推分享謝謝
再推一下,長知識了
好文推推
這不算晶晶體啦,優質的中譯書籍也是這種
描述。
推專業教導 辛苦了
推,謝謝分享
感謝分享
稍微看的懂 先推著明天來仔細看
原來是商業機密
推
推 跟上時事
推 有些詞用原文完全沒問題 中文翻譯
不一致 閱讀起來比較頭疼
推推 長知識
實現語境會怪是因為這也是大陸人翻英文不管
語境只看字典第一個意思的結果,跟面向對向
一樣的翻法
我對microcode的理解就是比較簡單的就算機
器碼的巨集展開器,比較複雜的就是機器碼的
直譯器
反正這個時代跟編譯語言直譯語言的區別已經
從根本上消失了,再怎麼編譯最後產生的mach
ine code/binary
對CPU來說也只是microcode拿來interpret的b
ytecode而已
原來是這樣啊
推
堆
推
把學術論壇效益發揮的淋漓盡致
推 感謝科普
爆
[情報] 英特爾終於宣布CPU崩潰錯誤的解決方案Tomshardware 主編,Paul Alcorn Intel finally announces a solution for CPU crashing errors — claims elevated voltages are the root cause; patch coming by mid-August [Updated] 8月中會有新Microcode解決電壓過高的問題。62
[討論] RISC和CISC現在還真的有差別嗎?我們常常在教科書 甚至很多文章上看到 RISC就是什麼只加總 CISC有甚麼很複雜的操作阿,加減乘除之類的 在2020年的今天 他們究竟還存在那些差別呢?57
[測試] MSI更新CPU微碼簡測,14700K暴降100W最近剛好組了一台MSI B760M Project Zero的背插主機,剛好看到MSI釋出最新的BIOS簡 介寫到Update CPU Microcode,所以來測試一下效果。 測試主機 : Intel i7-14700K43
Re: [情報]勇氣可嘉!技嘉被爆造假12th超頻紀錄這個風向帶得很歪喔 這件事原本是一個自稱CPU-Z開發者的人跳出來說G排的成績有問題: 然後這人自己也說是CPU本身的問題 所以他們在CPU-Z 1.98版已經修正了這個問題 CPU的microcode也必須同時更新到0x12之後才能解決23
[情報] 新漏洞 Intel DOWNFALL影響範圍從 Skylake 到 Tigerlake / Ice Lake 主要跟 AVX2/AVX-512 有關 Linux kernel 已經有放 patch,intel 也有對應的 microcode21
[情報] INTEL又推出新微碼剛看到林董又更新影片, 說明INTEL新增0x123新微碼(MicroCode)詳解 去看了一下版廠也更新BIOS了 但搞來搞去還不如直接一開始就買K版或AMD YES...19
[情報] 新漏洞 CrossTalk CVE-2020-0543過一個晚上沒看到有人 po "CrossTalk" / SRBDS Is The Newest Side-Channel Vulnerability CrossTalk/SRBDS Shows Possibility Of Leaking Information Across Physical CPU Cores19
[閒聊] Intel 13th CPU調整MicroCode降壓降溫。前言 #1a0DK4EY(PC_Shopping) 在我之前的文章底下,有大大提到中國有個有效降溫不太減效能的調整方法 設定好來分享一下~ 留個記錄給大家參考,有誤還請鞭小力點 <__> 附一下設備:18
[情報] 推特有人挖出Intel指令可以改microcodeWow, we (+@h0t_max and @_Dmit) have found two undocumented x86 instructions in Intel CPUs which completely control microarchitectural state (yes, they can modify microcode) They're decoded in all modes (even in User Mode) but the ucode in MSROM3
[開箱] Fractal Design Lumen S36V2 FD水冷散熱。前言 機殼一路從 Antec P10flux > Antec P20CE 到現在 Montech Sky Two,看 的見機殼內後,塔散就顯得不是那麼順眼,本想 MicroCode 降壓後可以找 個順眼的ARGB塔散,看著看著就......上個水!
24
[情報] 中國製DDR4將價格砍一半 同業拉警報23
[情報] IBM新量子晶片突破100×100挑戰,正打造1
[菜單] 45k可小捏2K遊戲機1
[開箱] 君主MONTECH PLA 1200W