80486的輕微改善
80286增加了段設內存管理,和保護模式。80386增加了頁式內存管理。這些都對現代操作系統產生了非常大的影響。由於386改後,這樣重大的變化不在發生,80386成為了一個永恆的經典。以致於64位CPU出現之前,386之後CPU,大家都是當成386去用的。
封裝
玩過單片機的同學可能覺得80486跟現在流行的單片機的封裝是差不多的,實際上他們的性能也相關不多。
80486有多個不同型號,各型號的封裝也不太一樣,具體可以參考多圖的這裡: http://www.mynikko.com/CPU/80486.html
製程: 1 μm, 800 nm, 600 nm
內部節構
型號差別
引自:https://zh.wikipedia.org/wiki/Intel_80486
Intel 80486SX - 沒有FPU支援的i486。由於早期的i486的FPU具有缺陷而將FPU功能關起來,但後期為了降低成本和減少晶片面積而將FPU完整拿掉。
Intel 80486DX - 具有FPU的i486。
Intel 80486DX2 - 以2倍倍頻來運行的處理器。
Intel 80486SX2 - 與i486DX2相同,但是沒有FPU功能。
Intel 80486SL - 低耗電的i486DX,主要用於可攜式電腦。
Intel 80486SL-NM - 低耗電的i486SX。
Intel 80487 - 給予i486SX使用的運算處理器,實際上80487就是一顆完全的i486DX處理器。當插上487時,487會屏蔽i486SX並接管所有處理器工作。這個笑點要get
Intel 80486 OverDrive - 內部運算速度比較快的處理器。 Intel 80486DX4 - 以3倍倍頻來運行的處理器(不是4倍)。
i486的時脈有16、20、25、33、40、50、66、75、100MHz.
指令的增加
80486相對於386隻增加了幾條指令。它們是:
XADD:加法操作的一個原子指令,即fetch and add
BSWAP: 轉換位元組序指令,即將一個32位數據的位元組序反轉,原來的0,1,2,3位元組變成3,2,1,0。參考:https://c9x.me/x86/html/file_module_x86_id_21.html
CMPXCHG: compare and swap原子指令,http://x86.renejeschke.de/html/file_module_x86_id_41.html
INVD: 使內部緩存失效,80486在cpu內部集成了Level 1 cache。該指令用於清空cache內容。
WBINVD: write back and invalidate data。使內部緩存失效,在失效前將修改過的數據寫回到內存。
INVLPG: 使TLB數據失效。這個指令與直接載入CR3的區別在於CR3是整個TLB都失效,並重新載入。INVLPG則是指定去失效某個頁的TLB。它是一個更細粒度的控制。關於它與CR3的區別參考這個討論:https://stackoverflow.com/questions/28384234/when-to-do-or-not-do-invlpg-mov-to-cr3-to-minimize-tlb-flushing
頻率
80486使用的時鐘頻率依舊很慢,最低20MHz,最高100MHz。但80486實現了倍頻,即用一種特殊的電路使得大多數內部部件以輸人時鐘的2倍或3倍(那時候最高支持到3倍)的速度來運行。
現代的台式機CPU通常時鐘頻率是200MHz,但CPU的主頻一般3GHz上下,也是使用了倍頻技術。
Level 1 cache和浮點計算協處理器的集成
80386就打算集成L1 cache,結果因為某些原因沒能做到。80486終於做到了這一點。內置了8KB的L1 cache,並且不區分數據和指令,都往這一個cache上緩存。
浮點計算協處理器一做為x87型號的器件單獨出售的,到80486終於集成在了一起。但是有一個問題是有些批次的產品浮點運算協議處理器有故障,於是intel關閉了這些批次cpu的浮點運算協處理器,做為不支持內置x87的版本來售賣。有些用戶的確不需要協處理器就會去買,如果使用的過程中發現又需要協處理器了,就再買一個x87裝在外面。
80486的性能比帶有80387的80386提高了4倍。早期的486分為有協處理器的486DX和無協處理器的486SX兩種,其價格也相差許多。
引自百度百科
多重管線(流水線) multi-pipeline
多重管線是一個RISC CPU架構上先使用的技術,因而當80486使用了多重管線的時候,有人說它支持RISC。 80386中,一條指令的執行需要兩個時種周期。使用了多重管線之後,80486中,某些指令僅需一個時鐘周期。主要是ALU中的寄存存-寄存器、寄存器-Cache的指令。
多重管線就是CPU在取址的時候有一個流水線,80486的四個部件(匯流排部件、解碼部件、執行部件、寫回部件)可以分別同時流水線化的操作,即同一時間有一條指令在執行、上一條指令在被寫回、下一條指令在被解碼、下下一條指令在被匯流排讀取。具體就是這樣:
推薦閱讀:
※在 AMD 工作是怎樣的體驗?
※x86架構能做到的arm架構也能做到嗎?
※圖拉丁吧是根據什麼命名的?有什麼故事?
※如何評價AMD在CES2018公布的桌面版Ryzen APU?
※中國的商用IC設計廠商為何不推出自己的架構?