用過電腦的差友應該都知道,Windows 的兼容性好到讓人幾乎找不到不兼容的軟體。
甚至於最新的 Windows 11 系統,依然能無壓力運行 27 年前的 Office 95。
這種極端的兼容性一方面有微軟的功勞,另一方面,英特爾的 x86 處理器架構實在是。。。
太穩定了!
即使是今年最新的英特爾 i3、i5、i7,他們仍然高度兼容1987 年的 x86 開山之作——8086 處理器的指令集。
雖然後面為了新的硬體特性增加了不少新的指令集,但老的指令集也堅決不刪。
突出的就是個一脈相承,同宗同源。。。
但是看樣子,英特爾在堅持了快半個世紀之後,終於決定給它來一刀了。。。
大概是果子的 ARM 處理器給了英特爾太大的震撼,前些日子英特爾發佈了一份《構想簡化的英特爾架構》白皮書。
其中正式宣佈了英特爾未來處理器的新架構 —— x86S。
和名字暗示的一樣,這個新架構依舊和現有的 x86 同源。
但是,英特爾砍掉了一大堆舊特性,把它給精簡(Simplify)了。
最核心的一點,就是隻保留了 64 位模式,徹底砍掉了 16 位和 32 位模式的支持。
要知道,64 位處理器如果想要原生支持舊時代的 32 位程序,代價還是相當大的。
比如說在驍龍 8Gen2 裡,需要兼容 32 位的 A710 核心,能耗上比沒有兼容性包袱的 A715 核心差了 20%。
而現在,英特爾也像蘋果、高通一樣,為了產品性能,全面擁抱 64 位設計了。。。
OK,照理來說,這篇稿子說到這兒就該結束了。結果我在看英特爾這個白皮書的時候,發現裡面提到:「簡化架構依舊可以通過 64 位模式提供 32 位程序支持」。
換句話說,我們現在電腦上那堆 破爛 好用的小工具、QQ、百度網盤,以及各種網路遊戲。。。
這些處於 「32 位重災區」 的程序,就算一輩子不改用 64 位程式碼,也能在英特爾之後的 x86S 架構上直接運行。
而不是像手機上那樣,被蘋果和Google推著全面轉向 64 位開發。
我擦,英特爾這是開發了什麼劃時代的魔法???
為了搞明白英特爾到底是做了什麼,才做到了蘋果都做不到的事,我好好去找了找資料。
然後發現了一個事:
英特爾移除 32 位模式,確實不等於移除 32 位程序支持。甚至移除了 32 位模式,還能讓 32 位程序的運行速度變快。。。
話說到這塊兒,我們就得聊一聊英特爾現在是怎麼設計處理器的了。
首先,一塊最新的英特爾 i9 處理器,運行效率可以媲美蘋果 M1 處理器。
但是大家猜猜,它在運行一個最新開發的 64 位程序時,第一步執行的操作是什麼?
是把自己模擬成一顆1978 年的 8086處理器,然後以 16 位模式開始運行程序程式碼。。。
別問,問就是 「兼容性考慮」 的一部分。
但是,模擬出來的 16 位模式是肯定執行不了 64 位程序。
所以處理器會退出 16 位模擬 —— 再切換進 32 位模擬。。。
32 位模擬自然也是跑不了的,這時候處理器才會最終回到 64 位工作模式,再次開始執行。
OK,這次程序終於跑起來了。
是不是很抽象。。。
所以為什麼,處理器裡會有這麼抽象的一個 「逐級切換」 的過程呢 ——因為 1985 年,英特爾設計首顆 32 位架構處理器80386的時候,就是這麼定義 「兼容的運行規範」 的。
別問,問就是 「兼容性考慮」 的一部分。
雖然以如今處理器的性能來說,「逐級模擬」 的性能損耗也不是那麼大。
但由於作業系統的排程方式,它每秒都要發生幾十上百次!
積少成多,這得多浪費啊。。。
就這樣英特爾還能把 i9 的運行效率做到蘋果 M1 的水平,對不起英子,以前是我誤會你了。
我向你道歉!!!
咳咳,好了我們言歸正傳:
而這次的 x86S 最重要的一點變化,就是砍掉了這個 「逐級模擬」 模式,起手直接進入 64 位模式幹活。
這不簡單多了!
而且沒有了 16 位和 32 位模擬,不僅是程式碼執行流程得到了精簡,處理器設計也能得到簡化。
要知道,這些功能實現的根本,是曝光機在晶片上刻出來了相應的電路。
把這些爺爺輩電路砍掉之後,騰出來的地方自然可以給更新、更寶貴的功能模組使用。
OK,英特爾做了什麼我們搞明白了,可是另一個問題還是沒解決:
為什麼處理器裡都沒有 32 位模式了,未來的 x86S 也還是能無傷運行 32 位程序?
這件事,功勞其實在微軟。
早在 WinXP 64 位版發佈的時候,微軟的程式設計師們就在系統裡內建好了 「32 位 Windows 子系統」,能夠以近乎無損且無感的方式轉譯 32 位程序到 64 位系統中執行。
換句話說,現在我們電腦裡的 32 位程序,其實也沒用到處理器的 32 位模式。
它們一直都是被 Windows 系統自己轉譯執行的。。。
emmmm,顯得英特爾之前的兼容操作更蠢了。
假如你是個一直使用最新 Windows 系統的普通使用者,那麼英特爾接下來要推廣的 x86S 對你是百利無一害的。
等新的 x86S 處理器發佈之後,衝就完事了 。
現在大家應該能看出來,作為一個沿用了小半個世紀的架構,每一顆英特爾 x86 處理器都是一個小小的 「屎山堆」。
上面提到的 16-32-64 的兼容模式,是對處理器性能比較有影響的一個設計,但它其實還只是 x86 這坨屎山的一個側面。
事實上,英特爾這次為了列舉 x86 裡有多少 「 過時特性 」,花掉了十多頁 pdf。。。
x86S 將刪除和修改的特性列表
所以為什麼英特爾憋到現在才開始決定對 x86 架構動刀子,以前沒有人站出來過嗎?
其實是有過的,早在 1994 年的時候,32 位的 x86 處理器就已經暴露出問題了。
最主要的隱患是,它的記憶體定址最大隻支持到 4GB,再大就不支持了。
這對當時的個人電腦來說問題不大,但是對於企業和網站的伺服器來說,這相當於把性能上限給鎖死了。
那一次,英特爾給出的答案是推出全新的「安騰」架構 —— 不僅支持超大的記憶體,而且設計比 x86 架構精巧的多。
雄心勃勃的英特爾想讓大家通過「安騰」處理器重新認識電腦。
安騰電腦的貼紙
結果因為完全不兼容以前的 x86 程序,任何一個程序要想運行在安騰處理器上,都要重寫。
而且據開發過安騰程序的小夥伴說,開發安騰架構的程序,要比開發 x86 架構的程序複雜的多。
於是全世界的程式設計師們一起,給英特爾結結實實上了一課 —— 壓根沒人想給他搞開發。。。
估計就是因為這次險些把公司玩死的經歷,才讓英特爾把保證兼容這件事給寫進了祖訓裡。
但是現在,時代又不一樣了。
最近兩年,蘋果靠著 M 系列晶片瘋狂吃走市場,傳統 x86 電腦的市佔率如山體滑坡。。。
在伺服器上,同樣是 x86 節節敗退,ARM 步步緊逼。
假如大家看過行業新聞會發現,現在華為、阿里發佈的新款伺服器,幾乎都是一水的 ARM 處理器。
兼容性固然可以換來 x86 程式設計師們的肯定,但假如整個 x86 市場都要被幹穿了,兼容不兼容的。。。
還是先放一邊兒吧。
現在的市場風向,已經足夠激起英特爾的危機感了。
而 x86S,就是英特爾應對這次危機的答卷。
並且與上一次大刀闊斧,「重新做人」的安騰相比,x86S 這次的調整就像一場精妙的手術。
對普通使用者來說,原有的軟體都能正常使用,就和蘋果從英特爾轉向 ARM 時一樣 ——那處理器的變化和我們有什麼關係呢?
我對 x86S 能產生怎樣的效果,還是比較樂觀的。
畢竟前兩年就有一個現成的例子:高通和聯發科放棄 32 位支持之後,安卓手機晶片的性能瞬間飆升了一截,首次和早早放棄 32 位的蘋果 A 系列晶片站到了同一水平線上。
同樣的,對於 x86 這位拖著半個世紀包袱的老將,放下過去的重擔,想來只會讓它跑的更快。
撰文:鶴然編輯:米羅&面線封面:陽光
圖片、資料來源:
維基百科
知乎,老狼,英特爾顛覆性的純64位CPU架構x86s是什麼?
英特爾官網
新浪網