X86和ARM架構的處理器能效差異為什麼會這麼大?
最近在用三星的一款i5處理器的Windows平板,和iPad,以及其他使用ARM處理器的手機相比,發熱量大很多,甚至需要藉助風扇來散熱,耗電量也大了不少。
那麼就很奇怪,在主頻相差不大,並且實際執行效果差不多的情況下,x86架構的處理器的發熱量和功耗為什麼會那麼大?這種差異到底是硬體以及處理器的指令集本身的問題,還是軟體層面的問題?
說x86和ARM處理器「實際執行效果差不多」其實有所不妥。樓主也說了比較的幾個設備主要是windows平板,ipad和智能手機。這些平台上的程序都是移動環境下的應用,大多邏輯簡單功能單一,沒什麼「計算」可言。ARM處理器本身定位於嵌入式平台,應付輕量級、目的單一明確的程序,現在應用在移動設備上正是得心應手。x86定位於桌面和伺服器,這些平台上很多應用是計算密集型的,比如多媒體編輯、科研計算、模擬等等。因此將x86和ARM在移動環境下做對比得出「差不多」是不好的。
由於定位的不同,ARM處理器基於精簡指令集(RISC)架構。指令集數量少就可以簡化硬體邏輯的設計,減少晶體管數量,也就意味著低功耗。而且由於移動平台應用通常簡單,程序的控制流不複雜,執行效率沒有必要很高,所以流水線、分支預測等硬體邏輯都比較簡單。這些都降低了晶體管總量。同時因為移動設備有電池的能源限制,ARM的電源管理是作為重要部分特別設計了的。比如移動設備的處理器在待機時通常只以極低的主頻在運行,甚至可以暫時關閉閑置的核心、協處理器來降低功耗。
x86就截然不同。x86是複雜指令集(CISC)架構,存在很多機器指令,只為了高效地完成一項專門任務(比如MMX, SSE中的指令)。這就使得硬體的邏輯很複雜,晶體管數量龐大。為了高效地進行運算,x86架構有較長的流水線以達到指令級並行(ILP)。長流水線帶來的一個弊端,就是當遇到分支時,如果預載入分支指令不是未來真實的分支,那麼要清空整個流水,代價較高。所以x86為此還必須有複雜的分支預測機構,確保流水線的效率。再加上多級cache,支持超線程、虛擬化等等,x86的複雜度其實相當高。
我工作單位的同事基本上都是開發科研計算或者模擬程序的,比如流體力學工具包,蛋白結構模擬之類的。這些軟體一啟動就是毫無意外地核心滿載,通常都是放到帶GPU加速的超算上運行。這些計算要是放到ipad上,怕是把ipad算爆了也得不到什麼結果。。。看了上面的回答,都沒抓住重點.....
lz的感覺是i5的平板和arm平板「實際執行效果差不多」...其實是因為lz不知道i5平板運行的win8系統和arm平板運行的win rt系統根本不是一回事,雖然外觀很象.....跨平台app當然外觀一致,執行效果也一致----它們都要以最慢的平台為基準,比如遊戲,你rt下正常,到了win8下快幾倍那還能玩嗎?而真正對性能或資源有要求的軟體,你win rt下根本就不可能安裝。總之強大的i5平板把自己扮成弱得多的arm平板毫無困難,但是強大的性能當然需要更大的功耗。兩者可以拿摩托和載重卡車打比方,你都可以載個妹子兜風,但是你不能嫌卡車耗油比摩托多.....i5平板和arm平板不管從軟硬體都有很大不同,可以說摩托和重卡的比喻在兩方面都是有效的。硬體層面,這兩種處理器的設計初衷可說是背道而馳的,目前看來,x86架構在移動計算站穩腳跟很困難,而ARM之類的RISC架構也無法在較複雜的應用中表現很出色,例如高性能計算等領域。
至於發熱量和功耗,確實一則因為x86處理器要包含很多指令集,這用去了不少晶體管,二則因為內部邏輯比較複雜,也用去了不少晶體管。所以它從架構上講,做到低功耗其實很困難,intel號稱可以講功耗做到數百毫瓦,但那是在CPU閑置進入C5或者C6 state的時候的功耗,相當於某些低頻ARM處理器正常工作的功耗。其實你可以觀察一下,宣稱效能差不多的x86處理器和ARM處理器,尺寸可是差不少的,製程上基本沒啥大區別,甚至x86一般還會比ARM更先進一點。看到一篇很好的文章,分享給對這個問題感興趣的人:ARM vs X86 - Key differences explained!
可以參考2013年的一片HPCA論文Power Struggles: Revisiting the RISC vs. CISC Debate
on Contemporary ARM and x86 Architectures,文章里測試的A8,ATOM等順序執行的處理器和A9,i7等亂序執行的處理器之間的性能差異是與它們之間的頻率差異和晶元面積大小差異(同等製造工藝下)正相關的。
多方位對比ARM和x86 CPU兩大架構現在發展如何?附全文隨便逮住一個人問他知不知道CPU,我想他的答案一定會是肯定的,但是如果你再問他知道ARM和X86架構么?這兩者的區別又是什麼?絕大多數的人肯定是一臉懵逼。今天小編就帶你深入了解CPU的這兩大架構:ARM和X86。以後出去裝X就靠它了!
重溫下CPU是什麼鬼
中央處理單元(CPU)主要由運算器、控制器、寄存器三部分組成,從字面意思看運算器就是起著運算的作用,控制器就是負責發出CPU每條指令所需要的信息,寄存器就是保存運算或者指令的一些臨時文件,這樣可以保證更高的速度。
CPU有著處理指令、執行操作、控制時間、處理數據四大作用,打個比喻來說,CPU就像我們的大腦,幫我們完成各種各樣的生理活動。因此如果沒有CPU,那麼電腦就是一堆廢物,無法工作。移動設備其實很複雜,這些CPU需要執行數以百萬計的指示,才能使它向我們期待的方向運行,而CPU的速度和功率效率是至關重要的。速度影響用戶體驗,而效率影響電池壽命。最完美的移動設備是高性能和低功耗相結合。
要了解X86和ARM,就得先了解複雜指令集(CISC)和精簡指令集(RISC)
從CPU發明到現在,有非常多種架構,從我們熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它們之間的差距都非常大。但是如果從最基本的邏輯角度來分類的話,它們可以被分為兩大類,即所謂的「複雜指令集」與「精簡指令集」系統,也就是經常看到的「CISC」與「RISC」。 Intel和ARM處理器的第一個區別是,前者使用複雜指令集(CISC),而後者使用精簡指令集(RISC)。屬於這兩種類中的各種架構之間最大的區別,在於它們的設計者考慮問題方式的不同。
我們可以繼續舉個例子,比如說我們要命令一個人吃飯,那麼我們應該怎麼命令呢?我們可以直接對他下達「吃飯」的命令,也可以命令他「先拿勺子,然後舀起一勺飯,然後張嘴,然後送到嘴裡,最後咽下去」。從這裡可以看到,對於命令別人做事這樣一件事情,不同的人有不同的理解,有人認為,如果我首先給接受命令的人以足夠的訓練,讓他掌握各種複雜技能(即在硬體中實現對應的複雜功能),那麼以後就可以用非常簡單的命令讓他去做很複雜的事情——比如只要說一句「吃飯」,他就會吃飯。但是也有人認為這樣會讓事情變的太複雜,畢竟接受命令的人要做的事情很複雜,如果你這時候想讓他吃菜怎麼辦?難道繼續訓練他吃菜的方法?我們為什麼不可以把事情分為許多非常基本的步驟,這樣只需要接受命令的人懂得很少的基本技能,就可以完成同樣的工作,無非是下達命令的人稍微累一點——比如現在我要他吃菜,只需要把剛剛吃飯命令里的「舀起一勺飯」改成「舀起一勺菜」,問題就解決了,多麼簡單。這就是「複雜指令集」和「精簡指令集」的邏輯區別。
從幾個方面比較ARM與X86架構
Intel和ARM的處理器除了最本質的複雜指令集(CISC)和精簡指令集(RISC)的區別之外,下面我們再從以下幾個方面對比下ARM和X86架構。
一、製造工藝
ARM和Intel處理器的一大區別是ARM從來只是設計低功耗處理器,Intel的強項是設計超高性能的台式機和伺服器處理器。
一直以來,Intel都是台式機的伺服器行業的老大。然而進入移動行業時,Intel依然使用和台式機同樣的複雜指令集架構,試圖將其硬塞入給移動設備使用的體積較小的處理器中。但是Intel i7處理器平均發熱率為45瓦。基於ARM的片上系統(其中包括圖形處理器)的發熱率最大瞬間峰值大約是3瓦,約為Intel i7處理器的1/15。其最新的Atom系列處理器採用了跟ARM處理器類似的溫度控制設計,為此Intel必須使用最新的22納米製造工藝。一般而言,製造工藝的納米數越小,能量的使用效率越高。ARM處理器使用更低的製造工藝,擁有類似的溫控效果。比如,高通曉龍805處理器使用28納米製造工藝。
二、64位計算
對於64位計算,ARM和Intel也有一些顯著區別。Intel並沒有開發64位版本的x86指令集。64位的指令集名為x86-64(有時簡稱為x64),實際上是AMD設計開發的。Intel想做64位計算,它知道如果從自己的32位x86架構進化出64位架構,新架構效率會很低,於是它搞了一個新64位處理器項目名為IA64。由此製造出了Itanium系列處理器。
同時AMD知道自己造不出能與IA64兼容的處理器,於是它把x86擴展一下,加入了64位定址和64位寄存器。最終出來的架構,就是 AMD64,成為了64位版本的x86處理器的標準。IA64項目並不算得上成功,現如今基本被放棄了。Intel最終採用了AMD64。Intel當前給出的移動方案,是採用了AMD開發的64位指令集(有些許差別)的64位處理器。
而ARM在看到移動設備對64位計算的需求後,於2011年發布了ARMv8 64位架構,這是為了下一代ARM指令集架構工作若干年後的結晶。為了基於原有的原則和指令集,開發一個簡明的64位架構,ARMv8使用了兩種執行模式,AArch32和AArch64。顧名思義,一個運行32位代碼,一個運行64位代碼。ARM設計的巧妙之處,是處理器在運行中可以無縫地在兩種模式間切換。這意味著64位指令的解碼器是全新設計的,不用兼顧32位指令,而處理器依然可以向後兼容。
三、異構計算
ARM的big.LITTLE架構是一項Intel一時無法複製的創新。在big.LITTLE架構里,處理器可以是不同類型的。傳統的雙核或者四核處理器中包含同樣的2個核或者4個核。一個雙核Atom處理器中有兩個一模一樣的核,提供一樣的性能,擁有相同的功耗。ARM通過big.LITTLE向移動設備推出了異構計算。這意味著處理器中的核可以有不同的性能和功耗。當設備正常運行時,使用低功耗核,而當你運行一款複雜的遊戲時,使用的是高性能的核。
這是什麼做到的呢?設計處理器的時候,要考慮大量的技術設計的採用與否,這些技術設計決定了處理器的性能以及功耗。在一條指令被解碼並準備執行時,Intel和ARM的處理器都使用流水線,就是說解碼的過程是並行的。
為了更快地執行指令,這些流水線可以被設計成允許指令們不按照程序的順序被執行(亂序執行)。一些巧妙的邏輯結構可以判斷下一條指令是否依賴於當前的指令執行的結果。Intel和ARM都提供亂序執行邏輯結構,可想而知,這種結構十分的複雜,複雜意味著更多的功耗。
Intel處理器由設計者們選擇是否加入亂序邏輯結構。異構計算則沒有這方便的問題。ARM Cortex-A53採用順序執行,因此功耗低一些。而ARM Cortex-A57使用亂序執行,所以更快但更耗電。採用big.LITTLE架構的處理器可以同時擁有Cortex-A53和Cortex-A57核,根據具體的需要決定如何使用這些核。在後台同步郵件的時候,不需要高速的亂序執行,僅在玩複雜遊戲的時候需要。在合適的時間使用合適的核。
此外,ARM具有其與X86架構電腦不可對比的優勢,該優勢就是:功耗。
其實它們的功耗主要是由這幾點決定的。首先,功耗和工藝製程相關。ARM的處理器不管是哪家主要是靠台積電等專業製造商生產的,而Intel是由自己的工廠製造的。一般來說後者比前者的工藝領先一代,也就是2-3年。如果同樣的設計,造出來的處理器應該是Intel的更緊湊,比如一個是22納米,一個是28納米,同樣功能肯定是22納米的耗電更少。
那為什麼反而ARM的比X86耗電少得多呢。這就和另外一個因素相關了,那就是設計。
設計又分為前端和後端設計,前端設計體現了處理器的構架,精簡指令集和複雜指令集的區別是通過前端設計體現的。後端設計處理電壓,時鐘等問題,是耗電的直接因素。先說下後端怎麼影響耗電的。我們都學過,晶體管耗電主要兩個原因,一個是動態功耗,一個是漏電功耗。動態功耗是指晶體管在輸入電壓切換的時候產生的耗電,而所有的邏輯功能的0/1切換,歸根結底都是時鐘信號的切換。如果時鐘信號保持不變,那麼這部分的功耗就為0。這就是所謂的門控時鐘(Clock Gating)。而漏電功耗可以通過關掉某個模塊的電源來控制(Power Gating)。當然,其中任何一項都會使得時鐘和電源所控制的模塊無法工作。他們的區別在於,門控時鐘的恢復時間較短,而電源控制的時間較長。此外,如果條單條指令使用多個模塊的功能,在恢復功能的時候,並不是最慢的那個模塊的時間,而可能是幾個模塊時間相加,因為這牽涉到一個上電次序(Power Sequence)的問題,也就是恢復工作時候模塊間是有先後次序的,不遵照這個次序,就無法恢復。而遵照這個次序,就會使得總恢復時間很長。所以在後端這塊,可以得到一個結論,為了省電,可以關閉一些暫時不會用到的處理器模塊。但是也不能輕易的關閉,否則一旦需要,恢復的話會讓完成某個指令的時間會很長,總體性能顯然降低。此外,子模塊的門控時鐘和電源開關通常是設計電路時就決定的,對於操作系統是透明的,無法通過軟體來優化。
再來看前端。ARM的處理器有個特點,就是亂序執行能力不如X86。換句話說,就是用戶在使用電腦的時候,他的操作是隨機的,無法預測的,造成了指令也無法預測。X86為了增強對這種情況下的處理能力,加強了亂序指令的執行。此外,X86還增強了單核的多線程能力。這樣做的缺點就是,無法很有效的關閉和恢復處理器子模塊,因為一旦關閉,恢復起來就很慢,從而造成低性能。為了保持高性能,就不得不讓大部分的模塊都保持開啟,並且時鐘也保持切換。這樣做的直接後果就是耗電高。而ARM的指令強在確定次序的執行,並且依靠多核而不是單核多線程來執行。這樣容易保持子模塊和時鐘信號的關閉,顯然就更省電。
此外,在操作系統這個級別,個人電腦上通常會開很多線程,而移動平台通常會做優化,只保持必要的線程。這樣使得耗電差距進一步加大。當然,如果X86用在移動平台,肯定也會因為線程少而省電。凌動系列(ATOM)專門為這些特性做了優化,在一定程度上降低亂序執行和多線程的處理能力,從而達到省電。
現在移動處理器都是片上系統(SoC)架構,也就是說,處理器之外,圖形,視頻,音頻,網路等功能都在一個晶元里。這些模塊的打開與關閉就容易預測的多,並且可以通過軟體來控制。這樣,整體功耗就更加取決於軟體和製造工藝而不是處理機架構。在這點上,X86的處理器佔優勢,因為Intel的工藝有很大優勢,而軟體優化只要去做肯定就可以做到。
ARM和X86現在發展如何?
關於X86架構和ARM架構這兩者誰將統一市場的爭執一直都有,但是也有人說這兩者根本不具備可比性,X86無法做到ARM的功耗,而ARM也無法做到X86的性能。現在ARM架構已經具備了進入伺服器晶元的能力,眾多晶元研發企業紛紛採用ARM架構研發伺服器晶元無疑將促進其繁榮, 2015年一款採用ARM架構的Windows 10平板現身,這也是目前曝光的全球首款非X86架構、運行Windows系統的平板產品。
同時,經過數年的努力,2016年AMD終於推出了首個基於ARM架構的處理器——Opteron A1100。AMD希望能夠憑藉這一處理器挑戰Intel在數據中心伺服器市場的霸主地位。
這樣看來,Intel在伺服器晶元市場將會逐漸失去霸主地位,而且,Intel已然錯過了移動 CPU 市場,現在它正試圖跳進千萬億的物聯網領域,具體表現如何,看時間的考驗吧。
其實目前x86和arm的能耗比已經差不多了,關鍵還是生態。現在大家都用arm指令集,自然軟體,操作系統都對arm有各種優化,現在突然來個x86,小的應用廠商已經建立起arm的開發體系和人才隊伍了,要真讓他們在支持x86,那真是太難為他們了。大廠,比如蘋果三星,都自己做處理器,也是arm指令集的,更加沒有必要用x86了。應該說x86在移動端已經很難擠進去了
1、精簡指令集就意味著更小的晶元,更少的晶體管工作。CISC相比於RISC有更多實現單一功能的晶體管結構(言外之意它們被使用的頻率並不高),而這部分晶體管在不工作的時候會提供不小的靜態功耗。2、ARM在無指令處理的時候可以休眠,而X86在無指令處理時只是降低工作頻率而已
3、ARM一般都有協處理器共同工作,比如GPU
在頻率差不多的時候,主要是上述三個原因導致了功耗上的差異。x86的性能功耗比其實不遜於ARM。參見 綜合來看,未來是屬於以 ARM 為代表的精簡指令集,還是以 x86 為代表的複雜指令集?、http://mobile.zol.com.cn/353/3538772.html
同比,x86的性能是ARM的 2-9 倍,你說性能差不多嗎。現在宣稱幾核幾核的手機你敢讓他跑個計算機級別的程序來試試看不。
所以同樣一款程序,手機上的就很需要關注性能,而在x86上就基本不需要去考慮。實際執行效果差不多只是個感受,這個也要看應用。ARM處理器的應用往往是上網,遊戲,拍照等應用,這些應用很大程度上依賴GPU等協處理器的配合,而本身的運算量相對較小。如果真的跑一些運算量很大的應用,例如一些模擬,數學計算等,ARM處理器基本上是無法勝任的,差距就非常之大了。所以基本上X86架構跟ARM架構比功耗,並不是一個公平的競爭。
性能跟功耗是非線性的關係。
看了幾個評論很受教!
這麼說來,大多數人日常生活中使用一些輕量辦公軟體、看個照片、上個網、看個視頻用arm架構的產品完全足以應付,畢竟有多少人會每天使用多媒體編輯、科研計算、模擬軟體等大型專業軟體呢。
感覺現在大多數的x86架構產品都是在「大馬拉小車」,由於功耗大又浪費了多少能源。
什麼時候行業洗牌,能夠物盡其用就好了。普通辦公全部用arm架構產品(為其開發同等功能的word/excel等常用辦公軟體),專業特殊行業辦公用x86架構,並讓兩個平台在輕量辦公與日常娛樂方面的應用同步更新,唯一的區別在於x86架構只用於專業領域。如此下來,整個世界得省多少電。轉自cnBeta:
ARM與X86不具備可比性 性能差距可大上千倍
我們要明白CPU是一個執行部件,它之所以能執行,也是因為人們在裡面製作了執行各種功能的硬體電路,然後再用一定的邏輯讓它按照一定的順序工作,這樣就能完成人們給它的任務。也就是說,如果把CPU看作一個人,首先它要有正常的工作能力(既執行能力),然後又有足夠的邏輯能力(能明白做事的順序),最後還要聽的懂別人的話(既指令集),才能正常工作。而這些集中在一起就構成了所謂的「架構」,它可以理解為一套「工具」、「方法」和「規範」的集合。不同的架構之間,工具可能不同,方法可能不同,規範也可能不同,這也造成了它們之間的不兼容——你給一個義大利泥瓦匠看一份中文寫成的烹飪指南,他當然不知道應該幹什麼了。
如果還看不懂,沒關係,我們繼續。從CPU發明到現在,有非常多種架構,從我們熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它們之間的差距都非常大。但是如果從最基本的邏輯角度來分類的話,它們可以被分為兩大類,即所謂的「複雜指令集」與「精簡指令集」系統,也就是經常看到的「CISC」與「RISC」。屬於這兩種類中的各種架構之間最大的區別,在於它們的設計者考慮問題方式的不同。我們可以繼續舉個例子,比如說我們要命令一個人吃飯,那麼我們應該怎麼命令呢?我們可以直接對他下達「吃飯」的命令,也可以命令他「先拿勺子,然後舀起一勺飯,然後張嘴,然後送到嘴裡,最後咽下去」。從這裡可以看到,對於命令別人做事這樣一件事情,不同的人有不同的理解,有人認為,如果我首先給接受命令的人以足夠的訓練,讓他掌握各種複雜技能(即在硬體中實現對應的複雜功能),那麼以後就可以用非常簡單的命令讓他去做很複雜的事情——比如只要說一句「吃飯」,他就會吃飯。但是也有人認為這樣會讓事情變的太複雜,畢竟接受命令的人要做的事情很複雜,如果你這時候想讓他吃菜怎麼辦?難道繼續訓練他吃菜的方法?我們為什麼不可以把事情分為許多非常基本的步驟,這樣只需要接受命令的人懂得很少的基本技能,就可以完成同樣的工作,無非是下達命令的人稍微累一點——比如現在我要他吃菜,只需要把剛剛吃飯命令里的「舀起一勺飯」改成「舀起一勺菜」,問題就解決了,多麼簡單。
這就是「複雜指令集」和「精簡指令集」的邏輯區別。可能有人說,明顯是精簡指令集好啊,但是我們不好去判斷它們之間到底誰好誰壞,因為目前他們兩種指令集都在蓬勃發展,而且都很成功——X86是複雜指令集(CISC)的代表,而ARM則是精簡指令集(RISC)的代表,甚至ARM的名字就直接表明了它的技術:Advanced RISC Machine——高級RISC機。
到了這裡你就應該明白為什麼RISC和CISC之間不好直接比較性能了,因為它們之間的設計思路差異太大。這樣的思路導致了CISC和RISC分道揚鑣——前者更加專註於高性能但同時高功耗的實現,而後者則專註於小尺寸低功耗領域。實際上也有很多事情CISC更加合適,而另外一些事情則是RISC更加合適,比如在執行高密度的運算任務的時候CISC就更具備優勢,而在執行簡單重複勞動的時候RISC就能佔到上風,比如假設我們是在舉辦吃飯大賽,那麼CISC只需要不停的喊「吃飯吃飯吃飯」就行了,而RISC則要一遍一遍重複吃飯流程,負責喊話的人如果嘴巴不夠快(即內存帶寬不夠大),那麼RISC就很難吃的過CISC。但是如果我們只是要兩個人把飯舀出來,那麼CISC就麻煩得多,因為CISC里沒有這麼簡單的舀飯動作,而RISC就只需要不停喊「舀飯舀飯舀飯」就OK。
這就是CISC和RISC之間的區別。但是在實際情況中問題要比這複雜許許多多,因為各個陣營的設計者都想要提升自家架構的性能。這裡面最普遍的就是所謂的「發射」概念。什麼叫發射?發射就是同時可以執行多少指令的意思,例如雙發射就意味著CPU可以同時拾取兩條指令,三發射則自然就是三條了。現代高級處理器已經很少有單發射的實現,例如Cortex A8和A9都是雙發射的RISC,而Cortex A15則是三發射。ATOM是雙發射CISC,Core系列甚至做到了四發射——這個方面大家倒是不相上下,但是不要忘了CISC的指令更加複雜,也就意味著指令更加強大,還是吃飯的例子,CISC只需要1個指令,而RISC需要5個,那麼在內存帶寬相同的情況下,CISC能達到的性能是要超過RISC的(就吃飯而言是5倍),而實際中CISC的Core i處理器內存帶寬已經超過了100GB/s,而ARM還在為10GB/s而苦苦奮鬥,一個更加吃帶寬的架構,帶寬卻只有別人的十分之一,性能自然會受到非常大的制約。為什麼說ARM和X86不好比,這也是很重要的一個原因,因為不同的應用對帶寬需求是不同的。一旦遇到帶寬瓶頸,哪怕ARM處理器已經達到了很高的運算性能,實際上根本發揮不出來,自然也就會落敗了。
說到這兒大家應該也已經明白CISC和RISC的區別和特色了。簡而言之,CISC實際上是以增加處理器本身複雜度作為代價,去換取更高的性能,而RISC則是將複雜度交給了編譯器,犧牲了程序大小和指令帶寬,換取了簡單和低功耗的硬體實現。但如果事情就這樣發展下去,為了提升性能,CISC的處理器將越來越大,而RISC需要的內存帶寬則會突破天際,這都是受到技術限制的。所以進十多年來,關於CISC和RISC的區分已經慢慢的在模糊,例如自P6體系(即Pentium Pro)以來,作為CISC代表的X86架構引入了微碼概念,與此對應的,處理器內部也增加了所謂的解碼器,負責將傳統的CISC指令「拆包」為更加短小的微碼(uOPs)。一條CISC指令進來以後,會被解碼器拆分為數量不等的微碼,然後送入處理器的執行管線——這實際上可以理解為RISC內核+CISC解碼器。而RISC也引入了指令集這個就邏輯角度而言非常不精簡的東西,來增加運算性能。正常而言,一條X86指令會被拆解為2~4個uOPs,平均來看就是3個,因此同樣的指令密度下,目前X86的實際指令執行能力應該大約是ARM的3倍左右。不過不要忘了這是基於「同樣指令密度」下的一個假設,實際上X86可以達到的指令密度是十倍甚至百倍於ARM的。
最後一個需要考慮的地方就是指令集。這個東西的引入,是為了加速處理器在某些特定應用上性能而設計的,已經有了幾十年的歷史了。而實際上在目前的應用環境內,起到決定作用的很多時候是指令集而不是CPU核心。X86架構的強大,很多時候也源於指令集的強大,比如我們知道的ATOM,雖然它的X86核心非常羸弱,但是由於它支持SSE3,在很多時候性能甚至可以超過核心性能遠遠強大於它的Pentium M,這就是指令集的威力。目前X86指令集已經從MMX,發展到了SSE,AVX,而ARM依然還只有簡單而基礎的NEON。它們之間不成比例的差距造成了實際應用中成百上千倍的性能落差,例如即便是現今最強大的ARM內核依然還在為軟解1080p H.264而奮鬥,但一顆普通的中端Core i處理器卻可以用接近十倍播放速度的速度去壓縮1080p H.264視頻。至少在這點上,說PC處理器的性能百倍於ARM是無可辯駁的,而實際中這樣的例子比比皆是。這也是為什麼我在之前說平均下來ARM只有X86幾十分之一的性能的原因。
打了這麼多字,其實就是為了說明一點,雖然現在ARM很強大,但它距離X86還是非常遙遠,並沒有因為這幾年的進步而縮短,實際上反而在被更快的拉大。畢竟它們設計的出發點不一樣,因此根本不具備多少可比性,X86無法做到ARM的功耗,而ARM也無法做到X86的性能。這也是為什麼ATOM一直以來都不成功的原因所在——Intel試圖用自己的短處去和別人的長處對抗,結果自然是不太好的,要不是Intel擁有這個星球上最先進的半導體工藝,ATOM根本都不可能出現。而ARM如果嘗試去和X86拼性能,那結果自然也好不到哪兒去,原因剛剛也解釋過了。不過這也不意味著ARM以後就只能佔據低端,畢竟任何架構都有其優點,一旦有應用針對其進行優化,那麼就可以揚長避短。X86的繁榮也正是因為整個世界的資源都針對它進行了優化所致。只要能為ARM找到合適的應用與適合的領域,未來ARM也未必不可以進入更高的層次。
1. 硬體上,發熱除了處理器,還要看電源管理晶元,這兩款是主要的源頭,電源管理晶元和處理器,是配套的。如果i5的源頭設計是PC的話,那麼無論是處理器,還是電源管理晶元,都會缺乏低功耗的處理。這個是晶元設計的時候決定的。
2. 對於軟體上,windows phone已經做了類似android的優化,問題不大ARM架構,過去稱作進階精簡指令集機器(Advanced RISC Machine,更早稱作:Acorn RISC Machine),是一個32位精簡指令集(RISC)處理器架構,其廣泛地使用在許多嵌入式系統設計。由於節能的特點,ARM處理器非常適用於移動通訊領域,符合其主要設計目標為低耗電的特性。x86是一個intel通用計算機系列的標準編號縮寫,也標識一套通用的計算機指令集合。 典型的對比ARM架構和X86架構的產品:雲終端和瘦客戶機,目前很多基於ARM A9八核處理器的雲終端(騰創TC-T2500N),而X86架構瘦客戶機的CPU類型更豐富,1037u,J1800,J1900,i3,i5。而瘦客戶機有主動風扇和被動靜音,有款瘦客戶機TC-T7600Intel BAY TRAIL-T 四核 Z3735F 1.33GHZ-1.83GH的設計和雲終端差不多!
移至主內容
首頁技術文章
深度剖析英特爾旗艦處理器-走出隧道盡頭的Itanium從來沒有一個指令集架構與相對應的處理器,能像IA-64與Itanium一樣,在技術趨勢、市場分析與應用層面,帶來如此大的期望與爭議,藉由本文的報導,重新檢視英特爾全新指令集架構的發展動機、應用現況與技術優勢,打破對Itanium的誤解與迷思。按讚加入iThome粉絲團文/劉人豪 | 2006-07-24發表
逐漸迎向曙光的Itanium
5年來,Itanium未達成外界所賦予不切實際的期望,但再長的隧道終究有其盡頭,事實上,歷代Itanium處理器與伺服器並非一團糟,雖然飽受缺乏應用程式與延期之苦,其效能表現、低耗電、可靠性和延展性卻遠超過英特爾原先的保證。Itanium的危機與轉機
回顧Itanium的危機與轉機,五年來的荊棘之路,我們將進一步瞭解進入高階伺服器市場的高門檻,與推動新架構的高風險x86真能無所不在?
AMD負責K5處理器設計的總工程師Mike Johnson,曾在1994年講過一句被後人經常引用的名言:「x86不只複雜,它根本毫無道理可尋。X86的複雜性並非不可克服......x86最大的弱點是缺乏足夠的暫存器與難以處理的複雜定址模式」,一語道破最普及的指令集架構,實際上卻充滿缺陷的設計。回顧Itanium發展史
環顧處理器發展史,很難找到像IA-64指令集和Itanium處理器一樣,被無數人前仆後繼唱衰,還視為「政治正確」,有人稍微提出正面的看法,就被抹黑成「英特爾100億美元行銷經費的成果」。英特爾前院士驚爆Itanium開發內幕
英特爾前院士Robert Colwell,今年初發表回憶錄,我們就從最後一章的附錄中,以同處於英特爾Oregon研發部門與P6計畫領導人的角度,檢視Itanium的開發過程、英特爾高層的樂觀期待、英特爾與HP不盡理想的合作關係,以及造成的後遺症。簡介IA-64指令集架構
毫無疑問的,Itanium最重要的特色,就是其「語言」:IA-64指令集,源自1980年代末期HP因併購Cydrome而進行的VLIW PA-RISC計畫,也是Itanium技術優勢的根源。現在我們就來看看,IA-64指令集究竟有何過人之處。逐漸迎向曙光的Itanium2001年5月31號,半導體巨人英特爾寄以厚望、預料即將征服RISC與大型主機市場的首款IA-64處理器-Itanium-終於站上高階伺服器的舞臺。英特爾也一口氣公布氣勢磅礡、延續至2005年與90nm製程的巨大未來時程表,企圖心之強,不言可喻。
在進軍高階伺服器的背後,更隱藏了一個更大的雄圖:毀滅英特爾一手創造的歷史包袱80x86,一統伺服器與個人電腦的指令集架構。
當時就有不少人感覺到,有如納粹德國入侵蘇聯宣稱「拯救西方文明免於共產主義侵略,實乃德國人民的歷史使命」,要消滅x86勢必付出重大犧牲,只是沒人預料到,災情竟然慘重到空前絕後的程度。RISC的凋零激發英特爾的野心
毫無疑問的,從1960年代的CDC6600萌芽,1975年John Cocke領導的IBM 801計畫逐漸成型,繼David Patterson(Berkeley的RISC I)和John Hennessy(Stanford的MIPS)兩位RISC(Reduced Instruction Set Computer,精簡指令集架構)先驅,在1980年代以雨後春筍之勢蓬勃發展的RISC處理器,是執行Unix作業系統的高階伺服器,不可或缺的心臟。RISC一詞,也有別於CISC的x86,等同於「高階」、「高效能」、「高延展性」與「高可靠度」的代名詞。綜觀1980中期至1990年代初期,大型伺服器及工作站廠商都專注於專屬系統的研發,從指令集架構、處理器、Unix作業系統、編譯器,甚至應用軟體均一以貫之,系統平臺高度垂直整合,統統綁死在一起,例如SGI的MIPS/Irix、DEC的Alpha/OpenVMS、Sun的SPARC/Solaris、HP的PA-RISC/HP-UX和IBM的Power/AIX等。高階RISC/Unix伺服器的市場生態,與CISC大型主機幾無二致,極為封閉。
1990年代以降,持續上升的半導體製程、研發及產能建置成本,製程技術與產品設計的相依性越來越大,導致開發高階處理器所費不貲,市場基礎不大的廠商紛紛撐不下去,陸續退出了RISC處理器的生產及研發工作。另外,高階動態程式語言的普及,促成了大量獨立於指令集架構之外的作業系統及應用程式,降低了更換平臺的門檻,Linux與Java就是最好的例子。
伺服器廠商自己做不了,自然留下讓「專業處理器大廠」填補市場空隙的機會。1987年,HP評估PA-RISC處理器在1992年,將會面臨難以實作四指令發出架構的瓶頸,所以決定發展超長指令集(VLIW)化的PA-RISC指令集。剛好英特爾正替HP代工PA-RISC處理器,急於尋求進軍高階伺服器市場的契機(那時替英特爾打下低階伺服器市場的P6微架構都還沒誕生),加上英特爾自己並不看好x86指令集的未來發展空間,打算另起爐灶,是最適當的合作夥伴,兩家廠商一拍即合,在1994年進行IA-64指令集與處理器研發計畫,1996年公布「Itanium」商標,經歷諸多的技術困難與數次延宕,在2001年推出代號「Merced」的第一代Itanium處理器,半導體巨人終於一嘗宿願,站上高階伺服器的舞臺。
浮載浮沈的「Itanic」號觀光郵輪
Itanium誕生之後,除了死守SPARC的Sun與後來退出市場的IBM與Dell外,其餘伺服器大廠幾乎全面採用Itanium打造高階RISC伺服器。此外,先後併購Compaq與Tandem而同時擁有PA-RISC、Alpha和MIPS伺服器的HP,為了簡化產品線,逐步將作業系統與應用程式轉移至Itanium平臺,在未來全面取而代之,從此停止自行研發生產處理器,都向英特爾購買。既然有了英特爾產能與研發能量的背書,一群不得不被迫升級的「肉票用戶」,以及眾多伺服器廠商的投靠,Itanium理應會是非常成功的產品,以秋風掃落葉之勢鯨吞市場,坐穩高階伺服器的「產業標準」。事與願違,初代Itanium歷經數次延宕(主因是x86相容性)、晚了近3年才上市,而且相較於市場上的RISC系統,不但效能、價格與系統可靠性都沒有明顯優勢,缺乏應用程式更是這艘大郵輪一頭撞上的大冰山,造就5年來在各媒體隨處可見的「Itanic」號傳奇故事。
理想和現實的差距有多大?IDC曾在1997年樂觀的預估,Itanium將完全征服高階伺服器市場,在2002年銷售規模可達「300億美元」-事後,2003年的高階伺服器市場總額也只不過280億美元,Itanium的實際營收僅10億美元,最初預測的「3%」。佔有近七成Itanium伺服器營收的HP,根據Gartner的報告,2005年第二季的Itanium銷售額1.08億美元,「應該被Itanium取代的」RA-RISC系統高達11億美元,相差十倍,極為諷刺。
挾著壓倒性製程技術優勢的英特爾,理論上應可比其他廠商更穩定的推出新產品,有著更大的出貨量,結果Itanium只有一張非常不穩定的時程表,預計2004出貨20萬顆處理器的目標也跳票了。去年底閃電宣布首款雙核心Itanium處理器「Montecito」延期半年,更讓廠商及客戶抓狂,促使老牌Unix廠商SGI破產的最後一根稻草。
經過半年延宕,英特爾在7/19日正式發表雙核心Itanium 2「Montecito」。
倒吃甘蔗,苦盡甘來
5年來,Itanic觀光郵輪的航程一路顛簸,未達成外界所賦予不切實際的期望,但再長的隧道終究有其盡頭,事實上,歷代Itanium處理器與伺服器並非一團糟,雖然飽受缺乏應用程式與延期之苦,其效能表現、低耗電、可靠性和延展性卻遠遠超過英特爾原先的保證。以去年部分客戶先期導入、4月出貨的雙核心Itanium 2「Montecito」為例,其電晶體數量超過17億,數倍於現有的RISC高階處理器,標準耗電量介於104W至72W,遠低於主流的x86處理器,僅IBM Power5+的一半強,但效能反而更好。換言之,在高密度運算環境風行,追求節能蔚為風潮之際,Itanium處理器的IA-64指令集,毋需複雜的核心設計即可實作高效能的處理器,更適合打造緊緻省電的高階與高密度伺服器,IA-64這個先進指令集架構展現真正的潛力。先前HP發表新款刀鋒伺服器機箱c-Class時即表示,他們正在開發SuperDome與NonStop的刀鋒伺服器版本,理所當然的,這些都是雙核心Itanium處理器。當初極不穩定、一再延期、讓企業用戶看不到未來的處理器時程表,在英特爾相繼承接DEC Alpha研發團隊與整個HP Itanium處理器部門後,投入更多資源推動Itanium的開發工作,效果立竿見影,時程更加穩定。由Alpha研發團隊操刀、將與Xeon共通系統架構、預定2008年上市的四核心Itanium「Tukwila」處理器,去年夏天已經首度試產晶粒(Tape Out),英特爾也著手開發下一世代的「Poulson」,兩年就推出一款新產品。從Tukwila開始,英特爾更將進一步透過CSI(Common Socket Interface)連結架構,統一Itanium與Xeon MP平臺,壓低Itanium系統的成本。
在2008年,由前DEC Alpha研發團隊操刀的4核心Itanium「Tukwila」將採用全新的系統架構,整合記憶體控制器,與Xeon MP共通平臺化。資料來源:英特爾。
微軟與Oracle加持Itanium
Itanium平臺最大的罩門-應用軟體,也獲得改善。姑且不論英特爾宣稱「超過8000個應用程式」究竟是不是有意義的數字,老早就該在五年前成立的Itanium解決方案聯盟(Itanium Solutions Alliance)能否發揮群策群力的效益,光軟體市場前兩大廠商,微軟與Oracle對Itanium採取日趨積極的態度,是最有力的強心針。尤其近來微軟展現進入高階伺服器市場的強烈企圖心,從更先進的伺服器作業系統、「企業級」應用軟體到大型主機換機潮所帶來的商機,無役不與。更重要的是,對於企業來說,採用Windows伺服器最大的好處,莫過於相關人才遠比Unix平臺易尋,擁有極為完備的應用程式資源,而Itanium是唯一擁有微軟加持的RISC平臺,僅此一家,別無分號。HP也認為越來越多企業認真考慮微軟的發展性,Windows將會攻下起碼20%的Itanium市場。
熬過慘淡經營的4年後,Itanium終於在2005年第三季開花結果,根據IDC的統計,Itanium系統的全球整體營收大幅成長,分別是兩大RISC系統IBM Power與Sun SPARC的近一半。在臺灣,Itanium系統衝上Sun SPARC的1.55倍,市場龍頭IBM Power的九成,今年第一季也達到Sun的1.09倍。因長期承受泡沫經濟破滅之苦,企業普遍節約IT支出的日本,Itanium更一口氣甩開IBM和Sun,成為全球最歡迎Itanium的市場,逼著SPARC陣營的Fujitsu,也得推出Itanium伺服器PrimeQuest。
五年來爭議不斷,但已成為高階伺服器市場的要角
樹大招風的半導體巨人、過度樂觀的營收目標、企業界對RISC的迷信與偏見,結合英特爾與HP之間不盡理想的合作模式所衍生的諸多後遺症,使得Itanium一直都扮演著「北港香爐」般的角色-眾人揶揄嘲笑外加蓄意看衰的對象。英特爾也「不負眾望」,不缺給人借題發揮的材料。但不可否認的,5年下來,事實證明Itanium的確被市場所接受,而且日漸成長,不再是昔日那個軟硬體環境五窮六絕、除指令集架構看似前瞻,其餘均一無可取的吳下阿蒙。如果企業在採購高階伺服器時,希望有多樣化的選擇,不願意被特定軟硬體廠商綁死,保留日後投奔Windows的彈性,請放下既有的成見,重新回頭檢視Itanium的歷史背景、技術特色、潛在優勢與發展軌跡,也許你將從此改變對高階伺服器的觀點及看法。文⊙劉人豪Itanium的危機與轉機
事出必有因,無風不起浪。回顧Itanium的危機與轉機,五年來的荊棘之路,我們將進一步瞭解進入高階伺服器市場的高門檻,與推動新架構的高風險。
危機1:企業對Itanium的不信任感
「很多企業與政府機關的IT部門主管過度迷信RISC這名詞,相信RISC代表最頂級的效能,因對英特爾的刻板印象,認定Itanium不是RISC,所以誤以為Itanium效能不好。」某系統整合商專案經理一語道破無數人對Itanium的誤解,從技術角度來看,IA-64是一個如假包換的RISC指令集,但英特爾與CISC一詞畫上等號,早已行之有年,至今仍難破除。迷不迷信倒還不是重點,他表示,對系統整合商來說,「不管黑貓白貓,客戶要的就是好貓」,採購過程中還會有種種因素,例如成本、與原廠的關係,以及解決方案,而就他的經驗和觀察,用戶普遍比較信賴RISC伺服器與Unix作業系統,畢竟更換高階系統風險太大,「沒人想當第一個白老鼠」,像HP的PA-RISC系統的營收仍高於Itanium,其因在此。更有人一針見血的表示,IBM的用戶會拒絕Itanium,原因很簡單,「IBM沒有Itanium產品」。
轉機1:選擇性最佳的RISC平臺
這世上沒有真正的「完全開放平臺」,使用相同處理器也不代表就可以輕易轉換系統到其他廠商的產品上,宣揚「開放 vs. 封閉」十字軍東征般的激情口號更是毫無營養的口水,不過Itanium仍是廠商最多、選擇性最佳的RISC平臺,這點倒是毋庸置疑。危機2 :對英特爾的偏見
外界對英特爾「僅生產個人電腦與低階伺服器處理器」的刻板印象讓企業裹足不前。「客戶問:用英特爾處理器打造出來的伺服器,憑什麼賣這麼貴?」臺灣Fujitsu產品經理張仲秋分析企業面對「Intel Inside」伺服器時,抱持的成見與心態,這也是英特爾進軍高階伺服器市場的心理障礙。偏見是一回事,在多核心處理器確為趨勢,軟體授權走向按實體處理器數目計價之後,英特爾遲遲無法推出雙核心Itanium處理器,就成為成本上的大弱點,尤其當遭遇像IBM這種技術實力雄厚、不惜血本都要維持效能領先的競爭對手,因為需要安裝兩倍以上的處理器才能抗衡IBM的Power系統,代表兩倍以上的軟體價格,在「效能過剩」的呼聲背後,經常被忽略的成本。
不需要頂級效能與高可靠性,又長期使用x86應用程式的企業,直接採用雙核心Xeon與Opteron,還省事許多。英特爾千呼萬喚始出來的雙核心Itanium 2「Montecito」暫時紓解燃眉之急,只是競爭對手並不因此停下腳步。IBM預定今年內將發表的Power6處理器,採取5GHz以上的超高時脈架構,號稱將有「Power5的四倍效能」-Power5目前還是地球上最強的伺服器處理器,而四核心Itanium上市卻是2008年的事情,這場爭奪效能王者的戰爭還有得打。
轉機2 :英特爾研發能量的後盾
也許「僅生產個人電腦與低階伺服器處理器」是一種偏見,但反過來說,身為最大的半導體與處理器廠商,英特爾享有壓倒性的研發能量,而且製程與產能的投資早已被龐大的個人電腦處理器出貨量吸收了。此外,優異的效能應該是選擇Itanium的理由中,最著無庸議者,Montecito正式推出後(過去一年已經不少用戶導入),Itanium單一核心效能優異、卻無雙核心版本的弱點,也從此煙消雲散。基本上,從Power4和Itanium 2出現後,僅剩IBM和英特爾兩家公司具備爭奪高階處理器效能桂冠的資格,從SPEC CPU 2000到TPC-C之類的效能指標,都可以看到極為激烈的軍備競賽。我們有充分的理由相信,挾著製程與指令集架構的雙重優勢,Itanium依舊將是效能頂尖的產品。
危機3 :缺乏明確的未來
企業要評估全新的伺服器架構,首要考量莫過於「這架構能穩定發展」,以防未來不會變成孤兒。Itanium不穩定的產品時程表,勢必打擊企業的信心。「衰話說了一千遍,也會變成真的」,多年來無數媒體與分析師組成合唱團,前仆後繼的唱衰Itanium,更是功不可沒。近期英特爾為了提振獲利,進行組織改造,出售營運表現不佳的部門,按照「慣例」,Itanium再度被預期是首波開刀的對象(英特爾近期以6億美元售出網路處理器部門)。但就算傳言都是空穴來風,Itanium仍註定是一個燒錢的部門,難有獲利挹注。數年來,IBM就一再表示,Power處理器的應用遍及各領域,有穩定的發展基礎,而Itanium除了規模有限的高階伺服器市場外,沒有業外收入。英特爾願意當散財童子到何時,沒人敢打包票,雖然當初Itanium解決方案聯盟成立看來是「1400億美元的商機,先燒個100億美元都划算」。
轉機3 :Itanium能賣給誰?
假設英特爾希望自己在企業用戶與伺服器廠商的信用徹底破產,不打伺服器市場的腦筋,大可以把Itanium賣掉。問題是:要賣給誰?哪家廠商有能力養活一條高階處理器產品線?更罔論門檻極高的製程技術。臺灣Fujitsu產品經理張仲秋就直言,英特爾真的賣掉Itanium部門,Itanium解決方案聯盟就等於宣布解體了,怎麼想,機率都不高,他也不認為有任何廠商有能力承接,起碼不包括Fujitsu。危機4 :最佳化應用程式不足
Itanium平臺上的「8000個應用程式」,到底有多少是真正跑得快又跑得好,可充分發揮IA-64指令集特長者,絕對是一個問號,這是全新指令集都會面對的問題。如果企業自行撰寫應用程式,重新最佳化恐怕免不了。菱光電子資訊室副理洪良宏回憶起當年評估時,英特爾還勞師動眾推銷自己的編譯器。此外,英特爾總是宣稱相較於「封閉」的RISC與大型主機,Itanium是「開放」平臺,企業不再是單一廠商的肉票,真是如此嗎?基於歷史因素,HP佔了近70%的Itanium營收,超過80%的Itanium伺服器使用HP-UX,處理器架構統一了,但Linux與Windows以外的專屬Unix,多半因系統架構相異,無法相容其他廠牌的產品,只要企業被特定應用程式綁死,「開放平臺」根本毫無意義。
轉機4 :唯一支援Windows的RISC
可能很少人注意到一則新聞:根據IDC的報告,去年Windows伺服器的銷售總額首度超過Unix,成為市場上第一大的伺服器作業系統,同時越來越多的Itanium伺服器安裝Windows,甚至某些企業之所以導入Itanium,就著眼未來的Windows。有別於一般人的刻板印象:Windows就只能作低階伺服器之用,Windows已非昔日吳下阿蒙,展現往高階應用發展的潛力,支援更強大高階功能(如系統不停機熱更新、更嚴密的系統核心保護機制、記憶體/處理器熱抽換與更大型的NUMA系統等)的Longhorn Server登場後,將大幅提昇Windows Server的競爭力。
無論你喜不喜歡微軟這家公司,對於企業來說,Windows伺服器最重要的好處,莫過於相關人才遠比Unix平臺易尋,擁有極為完備的應用程式開發平臺。此外,從SQL Server 2005開始,微軟的企業端應用程式終於真正到達了「企業級」的水準,這些都強化了Windows進軍高階伺服器的本錢。
一言以蔽之,應用皇帝大,如日後打算轉移至Windows者,Itanium是所有RISC中唯一的選擇。「夜奔敵營」的Fujitsu即表示,他們的Itanium伺服器就鎖定Windows與Linux用戶,而非Unix市場。
革命尚未成功,同志仍需努力
樹大招風的英特爾、惟恐天下不亂的唱衰媒體,企業對Itanium的陌生感,以及外界不切實際的過度期待,使得Itanium一直成為備受爭議的焦點,少人真正能放下偏見,以中立客觀的角度,檢視Itanium的真正價值。不可否認,Itanium歷經五年一路走來,跌跌撞撞,最後走出隧道,重見曙光。很遺憾的,事實證明Itanium平臺的現況其實並不差,但很明顯的距離廠商的宣傳還有一段不小的距離。
最起碼,英特爾標榜的「開放性」與「低成本」,幾乎都被Itanium強烈的HP色彩給抵銷大半。
企業又該如何看待Itanium的未來?據了解,有些企業從不考慮Itanium,只因公司的IT主管「完全不知道有這玩意,腦袋裡只有IBM和Sun」。姑且不論毀譽參半的評價,Itanium的確替企業帶來更多樣化的產品選擇。導入與否,多了解這個已在市場站穩腳步的新興產品,有益無害。文⊙劉人豪x86真能無所不在?
所謂的「計算機結構(Computer Architecture)」,是由IBM在1964年創造給S/360大型主機用的名詞,用來表示「程式設計者可以看到的指令集(Instruction Set)」,指令集如同「電腦的語言」,指令集架構相同的不同電腦可以執行相同的軟體,像英特爾和AMD的x86處理器都可以執行由x86指令集所撰寫出來的程式碼。
因回朔相容之故,指令集架構的良窳和新增指令的方式,深深影響著處理器與電腦整體系統架構的後繼發展。如何針對不同的需求,設計出可長可久,利於實作產品,又兼備導入新技術彈性的指令集,是計算機結構教科書的作者念茲在茲的議題。但是,十多年來這些計算機組織結構教科書中的標準錯誤示範-x86指令集,卻長期支配個人電腦與低階伺服器市場。x86先天不良,後天失調的原罪
AMD負責K5處理器設計的總工程師Mike Johnson,曾在1994年講過一句被後人經常引用的名言:「x86不只複雜,它根本毫無道理可尋。X86的複雜性並非不可克服......x86最大的弱點是缺乏足夠的暫存器與難以處理的複雜定址模式」,一語道破最普及的指令集架構,實際上卻充滿缺陷的設計。為了彌補缺陷,新型x86處理器都普遍導入了大量加速機制,暫存器更名(Register Renaming)減輕了暫存器不足的影響,大型化快取記憶體彌補了x86指令集記憶體存取密集(Memory Intensive)的行為模式,而所謂「將複雜的CISC指令轉譯為數個簡單的RISC微指令」更被視為拯救x86的「仙丹良藥」。
但這些解決問題了嗎?其實不然。指令集編碼長度不一、格式混亂與定址模式複雜,影響的並非僅限於指令解碼器及指令擷取單元。設計一顆處理器,最困難的部分是產生控制訊號的控制單元,特別是中斷(Interrupt)與例外(Exception)處理機制,例如系統外部周邊單元,藉由產生中斷讓處理器先執行輸出入動作,或者是發生算術溢位時,讓處理器產生例外,再讓作業系統的設陷(Trap)機製取得處理器控制權。發生中斷或例外之類的事件,處理器都必須事先儲存執行狀態,以確保結束後可以恢復正常的程式流程。
換言之,假如今天一個指令集架構,指令編碼長度從1到17位元組不等,定址模式極為複雜,運算元同時包含記憶體與暫存器,該指令集的控制單元就非常難設計,更罔論「追求高效能」。歷史上成功的x86處理器,清一色皆有漫長的開發時程與天文數字般的研發成本,其因在此。
指令集架構的複雜性直接影響可靠性技術的導入度
所謂的「高階伺服器」並不是處理器數量多就可了事,處理器與系統架構所需的可靠性功能(RAS,Reliability/Availability/Serviceability)才是重點,如此才能確保系統的穩定度,越高階的伺服器越沒有停止服務的本錢,這時指令集架構越單純、越易於設計製造,就有更多的空間去實作RAS機制,反之亦同。RISC指令集對高階伺服器最重要的價值,就是利於設計與製造,便於導入更完整的系統RAS功能。資料來源:Fujitsu。
像標榜「和大型主機同等級RAS」的Fujitsu SPARC64系列處理器,整顆處理器的所有電路均受到ECC/Parity保護,超過90%的面積可承受單位元錯誤,兼具指令執行錯誤重試功能,這都是任何一顆x86處理器所遠遠不及的能力。臺灣Fujitsu系統工程師吳明宗即表示,「指令集換成x86,幾乎不可能做到」,IBM和Sun也保持相同的觀點。值得一提的是,Fujitsu內負責研發SPARC64的人數,僅有三百人,隨便一顆x86處理器都遠超過這個數字,以Pentium 4為例,英特爾就動員了5000人以上。
臺灣Sun技術副總戴碧勳表示,RISC處理器因設計簡單,自然有較大的餘裕去改進可靠度,SPARC這點凌駕Opteron,後者其實並未達到「Service Grade」的等級。「曾經有某晶圓廠用x86伺服器計算光罩模擬,算出來導線竟然少兩根,最後只好購置四套來自不同廠商的同規格伺服器,用來比對執行結果」。關於Sun剛發表的8路Opteron伺服器X4600,他也表示,其產品定位仍僅限中小企業,而一年之內Sun並沒有開發更大型Opteron伺服器的計畫,高階系統仍以SPARC處理器為主力。
市場需求更是關鍵性的因素。x86處理器之所以給人「便宜」的印象,不外乎市場規模夠大,攤平天文數字般的研發成本,這是x86藉由成本優勢站穩低階伺服器市場的基礎:個人電腦所使用的桌上型處理器和伺服器處理器採用相同的核心。但這也是一把雙面刃:x86伺服器處理器就從此受制於個人電腦,不能充分滿足高階伺服器的需要。
RISC享有經過歷史驗證的大型多路處理器架構
目前市面上唯二可以見到的大型多路x86伺服器,僅有IBM X3與Unisys ES7000,數量及歷史均無法與RISC相提並論。除了x86處理器限於市場定位,遲遲未有廠商發展大型多路x86架構外,指令集的缺陷也是一個主因。在十幾年前,當時的製程技術與設計能力都無法實作大型化快取記憶體及高效率的系統連結架構,x86特別記憶體存取密集的特性,就成為一大瓶頸。會有人這樣想:那廠商大可以重新開始研發新的多路x86處理器架構,不就得了?問題是,高階伺服器的系統架構都需要漫長的時間來驗證改進,今天站上檯面的高階RISC伺服器,其系統架構無一不是擁有十多年的累積經驗,才證明是極為可靠的產品。IBM X3和Unisys ES7000也都奠基於大型主機的基礎,而且因市場規模不大,所費不貲,相較於高階RISC系統,並無價格優勢。
x86指令集甩不掉的歷史包袱
很多人應該還記得,多年前英特爾曾爆發震驚全球的Pentium處理器浮點臭蟲事件,讓不少人首度意識到,原來看似高深莫測的「高科技結晶」,也是有可能因設計上的失誤,導致程式執行錯誤。事實上,不分指令集,在處理器的電晶體數目動輒以上億為基本單位的今天,處理器技術規格資料中的勘誤表,發布數十、甚至上百個臭蟲,早已司空見慣。Itanium 2也累積了111個臭蟲,AMD K8家族則達155個。有臭蟲倒還不是大問題,修正就可以了(多數處理器都提供微碼修補能力)。問題是:為了相容「利用」這些處理器臭蟲的應用程式,無法修正,那該怎麼辦?偏偏x86累積下來的應用程式又如此之多,所以才曾有人這樣開玩笑,開發一顆x86處理器,最大的挑戰是:你要如何確定它可以相容所有的舊程式?特別是早期的x86處理器,很多未定義的運算碼並沒有遮蔽掉,假設被人發現,又拿來用了,以後的處理器就只好乖乖的作進去。由此可知,對一個指令集來說,缺乏應用程式是個問題,但應用程式太多,更是一種負擔。
最有名的案例,莫過於「Bubble Bobble(泡泡龍)」這個遊戲,在486上會因計時迴圈溢出(Timing Loop Overflow)無法執行,但又在Pentium 4「復活」了。在x86的歷史上,此類看似不可思議的案例可謂不勝枚舉。尤其x86處理器經歷過太多世代,指令集從16位元、24位元、32位元疊床架屋至64位元,連帶混亂的記憶體定址模式。另一個隨處可見的例子,很多人可以在電腦的BIOS中看到,為了相容過去8086應用程式的「A20 Gate」選項。8086處理器的定址模式,是藉由16位元的節區(Segment)位址與另一個16位元的節區內(Offset)位址,組成20位元和1MB的定址空間。在1986年,Quarterdeck與微軟的程式設計師發現,一旦打開80286/386/486的A20(第21條定址線)邏輯閘,假使將程式碼放在960kB與1024kB之間,就多出1024kB之後的一個64kB空間。簡而言之,DOS可透過特殊的設計來使用這塊多餘的64kB記憶體,就是微軟HMA(高記憶體區)與HIMEM.SYS驅動程式的由來,源自80286與更高階x86處理器的臭蟲。
問題來了,80286以後的處理器就算是8086真實模式,A20邏輯閘可能因節區和節內組成位址超過1MB而啟動,無法正常相容8086應用程式,因此IBM想到利用8042鍵盤控制器上的某訊號腳位,作為控制A20邏輯閘的開關。打開的話,就可相容8086,但不打開的話,又會因少一條定址線,讓保護模式的可定址記憶體空間少掉一半。這就是該功能的用途,導至今日的所有x86作業系統也必須保留打開該功能的程式碼。
先天架構不良的原罪,進而限制x86引進虛擬化等新技術的可能性。當初VMWare等虛擬化軟體廠商在x86上吃足苦頭,因為x86無法透過設陷機制攔截每個指令的動作,只能土法煉鋼,讓每個指令後面都接著一個中斷,代價就是犧牲效能,這到了英特爾的Vanderpool和AMD的Pacifica後才解決。當其他RISC陸續支援條件執行機制(Conditional Execution),x86卻受限幾無餘裕的指令編碼,僅能新增幾個簡單的指令。
那是不是代表,RISC指令集就沒有這些問題?答案當然是否定的,但對於同步發展處理器與作業系統的RISC/Unix廠商而言,卻容易解決。像IBM第一代的Power處理器也曾留下不少不合時宜、後來在PowerPC取消的指令,Power4以後的系統,只要執行到這些指令,即可透過處理器的設陷機制,呼叫AIX內的模擬軟體執行,毋需讓新的Power處理器繼承這些包袱,「封閉」系統的先天優勢,可見一斑。
戴碧勳坦言,一個系統的可靠度是需要軟硬體彼此高度配合,這是x86平臺的弱點。身為電腦的語言,指令集的「穩定度」也是關鍵,像SPARC V9指令集已經相當完備,數年來一直無須改版新增指令,但x86處理器廠商卻樂此不疲,從MMX、3DNow!、SSE、SSE2到SSE3,英特爾近期又增加16個SSE4指令,英特爾與AMD的新增指令集並不完全相容。同樣是虛擬化技術,英特爾的Vanterpool和AMD的Pacifica就截然不同,增加發生軟體相容性問題的機率。
臺灣Fujitsu產品經理張仲秋對此也表示,x86平臺本來就缺乏高穩定性的作業系統,又欠缺具備軟硬體整合能力的系統廠商,市場仍需要RISC處理器與Unix作業系統。
隱而不現的是,x86指令集先天的複雜性,使得實作高效能x86處理器的廠商多半都採用極為特殊的微架構(如驚世駭俗的英特爾NetBurst),效能延展性不佳,微架構的壽命也不長。但其他RISC處理器,無論IBM的Power4、Sun的UltraSPARC III和Fujitsu的SPARC64V,都是一個微架構「一路用到底」,頂多小幅改良。本來不是說RISC處理器易於設計嗎?為何如此?道理很簡單,這樣會比較穩定,避免更換微架構造成的潛在風險。
邁向未來:指令集架構將決定多核心處理器的發展潛力
在邁向多核心架構的路上,無可避免的,要縮小單一核心的晶粒面積,放棄追求高時脈的超深指令管線,進一步精簡處理器的核心複雜度。這時處理器所採用的指令集架構就扮演著舉足輕重的角色,指令集架構越易於實作與驗證,越不需要複雜的核心就可達到合理的效能,就越適合多核心處理器,導入更完善的可靠性機制與省電功能,更可縮短產品研發的時間。這也是Sun Niagara支援4執行緒的單一處理器核心,可以簡單到僅有4萬個邏輯閘,英特爾會大費周章發展IA-64指令集與Itanium處理器,IBM想用Power取代S/360的主因。在處理器與半導體製程研發成本如火箭般一飛沖天的時代,相較於CISC,RISC指令集在這裡就佔了很大的便宜。但在沒有導入極為複雜的實作加速機制之前,x86處理器的效能表現都慘不忍睹。x86在嵌入式處理器市場沒有地位,都是RISC的天下,連英特爾的嵌入式與網路處理器產品線都是ARM指令集,而不是x86,其理至明。
更重要的是,伺服器處理器逐步走向多執行緒的省電架構,開始與桌上型處理器的需求分道揚鑣,失去龐大個人電腦市場的保護傘,x86伺服器處理器是否有足夠的市場規模,去分擔開發x86核心的高昂成本與漫長時程,仍是一個問號。
回顧今日Itanium、RISC與x86伺服器處理器的現況,即可發現,多年來眾多「先賢先烈」所預期的技術發展趨勢,似乎紛紛一語成讖。我們有充分的理由相信,x86仍將在低階伺服器與個人電腦市場扮演主角,只是要站上高階市場,完全取代RISC,依舊遍地荊棘,困難重重。也許假以時日,這並非不可能的任務-但絕對不是現在。文⊙劉人豪回顧Itanium發展史
環顧處理器發展史,很難找到像IA-64指令集和Itanium處理器一樣,被無數人前仆後繼唱衰,還視為「政治正確」,有人稍微提出正面的看法,就被抹黑成「英特爾100億美元行銷經費的成果」。
最常見的情況,一手拿著某市場分析機構的統計數字,宣揚「AMD Opteron賣得比Itanium好很多,x86萬萬歲」,另一方面又同時質疑同一家機構對Itanium的樂觀預測,是與英特爾「密切合作」的不實數據。
不過,姑且不論這些批評者是否有合理的立論基礎,對Itanium的歷史有通盤的瞭解,還純粹為反對而反對,今日Itanium樹大招風的形象,有其歷史背景,英特爾本身亦難辭其咎。
不切實際的期望:順利取代x86
說英特爾發展「IA-64」,一開始不抱持日後取代「IA-32」x86指令集的動機,那絕對是騙人的。事實上,第一代Itanium處理器出師不利,因延期失去市場先機,Andy Grove時代的英特爾高層過度重視Itanium對x86的硬體相容性,要負起最大的責任。根據統計,第一代Itanium「Merced」超過30%的核心電晶體數目花在x86硬體相容性,只為了讓時脈高達800MHz的Merced,做到「介於Pentium 75MHz至200MHz」等級的x86應用程式執行效能。曾有人這樣開玩笑,英特爾為何不乾脆硬塞一個P6核心算了。
有夢最美,希望相隨。原本英特爾的如意算盤是:在1998年推出時脈600MHz的Itanium,藉由高時脈的優勢,其x86應用程式執行效能可和同時期的Pentium 2 400MHz相當,如此一來,就可以將既有的x86處理器產品線逐步轉移至全新的IA-64架構。
結果變成:一再延期的Itanium在2001年上市時,拜AMD K7的強大競爭力之所賜,x86處理器時脈都突破1GHz大關了,浪費一堆時間和成本的x86相容能力根本形同虛設。初代Itanium的效能表現也不佳,應用程式不足更是一大致命傷,兩者皆空,沒有橫掃RISC伺服器市場,取代x86的「歷史性任務」更是遙遙無期。
英特爾是到了Itanium 2才注意到硬體「硬幹」不是正本清源之道,從Montecito開始取消掉相容x86的硬體電路,完全透過IA-32EL(Execution Layer)二進位執行檔轉換器的軟體解決方案,提供x86相容能力。事後證明,成本更低,效果更好,更可保留日後支援新x86指令集的彈性。英特爾甚至預期,在2008年時,Itanium搭配IA-32EL的x86效能更可超越最高階的x86處理器,但已經來不及了。
英特爾缺乏對高階伺服器市場的認知與經驗
產品上市四年後,「終於」在去年成立Itanium解決方案聯盟。「這聯盟在四年前就成立,該有多好」恐怕是所有軟硬體廠商的共同心聲。英特爾畢竟是處理器廠商,沒有高階伺服器市場的認知與系統整合能力,這對Itanium的發展造成不利影響。就算是半導體巨人,開發高階處理器、製造大型晶片與驗證產品的經驗,也非一蹴可及。濃厚的HP色彩,則是推廣Itanium路上的大石頭,其他廠商因擔心HP「球員兼裁判」而裹足不前。最好的例子,就是當HP完全轉移Itanium研發團隊給英特爾後,過沒多久Fujitsu的PrimeQuest就出現了,軟體廠商態度也遠比過去積極。只是五年下來,享有地利之便的HP依舊佔有大多數的Itanium用戶與市場,幾乎與HP畫上等號的Itanium平臺並不見得有多「開放」。
沒有內部競爭對手
IA-64相容處理器僅英特爾Itanium一家,別無分號,不像x86同時有英特爾和AMD兩種選擇,SPARC陣營有Sun和Fujitsu兩家廠商研發產品,最封閉的IBM相容大型主機,IBM過去起碼還有Hitachi可當對手。換言之,沒有內部競爭對手的後遺症是難以出現更廉價的IA-64處理器,限制了市場規模與普及。我們有充分的理由相信,如果市場上出現第二家IA-64處理器廠商,市場上對Itanium的「雜音」一定會小很多(很諷刺的是,IA-64指令集很多概念都源自AMD的29000 RISC指令集,但AMD並沒有繼續發展下去,而是全力投入x86市場),但這一天有可能到來嗎?英特爾願意開放IA-64實作上的專利嗎?難如登天。
英特爾隨時脫手不玩的疑慮
近來英特爾急於提振公司獲利,加上Itanium的應用面遠不如IBM的Power,除了伺服器以外,沒有其他收益,所以不少惟恐天下不亂的媒體與分析師都預期英特爾最終會脫手Itanium部門,而IA-64的生父、Itanium市佔率最高的HP,自然就是呼聲最高的承接者,也有傳言指出,日本數家廠商企圖聯合接手Itanium,因為日本是全世界最歡迎Itanium的市場。回過頭來,能賣給誰?假設可以出售,買主得面對製造晶片的問題,而高階處理器有著極高的製程門檻,沒有自有高階製程與產能,難有競爭能力(這也是為何Sun UltraSPARC一直積弱不振的主因)。從這個角度來看,英特爾想賣也賣不掉。但只要脫手傳言陰魂不散,勢必動搖企業對Itanium的信心。
假如歷史可以重來,還會有Itanium嗎?
如果借給英特爾時光機,知道將會得到Alpha,而且同時又享有微軟在Alpha平臺上的巨大投資與現成的x86模擬軟體FX!32,他們還會和HP一起開發IA-64指令集與Itanium處理器嗎?連英特爾自己都承認「Alpha比我們擁有的任何東西都來得好」,延續Alpha的生命會不會比較輕鬆?或者是進一步擴展P6的成果,啟動因保護IA-64而延宕十年的「Yamhill」計畫,順勢將x86 64位元化,專心推動x86 Everywhere,大概今天AMD早就不見了。無論如何,歷史不會重來,英特爾走上一條通往高階伺服器市場的荊棘之路。也許IA-64指令集終究成功,成為高階伺服器的主流,但答案可能不是Itanium,真正的最大獲利者也不會是英特爾。時間將告訴我們最後的答案。文⊙劉人豪
溫故知新:1999年分析師對Itanium的樂觀期望
「在2002年可橫掃RISC、市場規模到達300億美元」還不是對Itanium的最樂觀預測,在1999年In-Stat/MDR在處理器論壇中,大膽預測IA-64將進入桌上市場,而且在2005年全面取代英特爾的x86處理器產品線。
英特爾前院士驚爆Itanium開發內幕
領導英特爾史上最佳x86微架構P6研發團隊的英特爾前院士Robert Colwell,今年初發表回憶錄「The Pentium Chronicles: The People, Passion, and Politics behind Intel"s Landmark Chips」,我們就從最後一章的附錄中,以同處於英特爾Oregon研發部門與P6計畫領導人的角度,檢視Itanium的開發過程、英特爾高層的樂觀期待、英特爾與HP不盡理想的合作關係,以及造成的後遺症。
首先,在1994年Itanium計畫啟動時,基於保護HP商業機密的考量,英特爾建立了公司內的「防火牆」機制隔離Itanium與x86部門,阻礙了技術與意見的交流。由於Itanium是全新架構,一切都在摸索階段,少了既有x86部門累積的資料、模擬數據與經驗,導致開發過程困難重重。
其次,英特爾高層對Itanium保持過高的期待,當時他們還被告知「在1999年,x86處理器就會開始被IA-64取代」,為了保護Itanium,「x86部門不準再提到『伺服器』這個名詞」,全力推動IA-64,限制x86的發展性。Robert Colwell本人與P6團隊卻不認為在2006年前64位元有普及的可能性,而且讓x86指令集64位元化,才是超越競爭對手的捷徑。那時英特爾內部已在爭論此事。
最後,在1999年,英特爾過度樂觀的支票都跳票了,Robert Colwell直接對英特爾高層建議,將第一代Itanium「Merced」視為純粹的研究計畫,等到第二代產品再上市,「如果我們希望新指令集是為了未來25年而生,那多出一到兩年的驗證期絕對是值得的」。結果,以「我們不能接受開發不能上市的產品」為由被打回票。事後證明,一語成讖,Itanium出師不利,Merced變成一個失敗的產品,為Itanic的悲劇搭建最華麗的舞臺。簡介IA-64指令集架構
毫無疑問的,Itanium最重要的特色,就是其「語言」:IA-64指令集,源自1980年代末期HP因併購Cydrome而進行的VLIW PA-RISC計畫,也是Itanium技術優勢的根源。現在我們就來看看,IA-64指令集究竟有何過人之處。
指令集架構的優勢直接反應在耗電量與核心電晶體數目上
雙核心Itanium 2 單核心Itanium 2 Power5+ 雙核心Xeon MP 雙核心Opteron
代碼 Montecito Madison 9M Squadron Tulsa Egypt指令集 IA-64 IA-64 Power x86 x86製程 90nm 130nm 90nm 65nm 90nm晶粒面積 596 432 245 435 199耗電量 103W 107W 160W 150W 95W電晶體 1720M 592M 276M 1328M 233M最高時脈 1.6GHz 1.6GHz 2.2GHz 3.4GHz 2.6GHzL2 cache 1.25MBx2 256kB 1.92MB 1MBx2 1MBx2L3 cache 12MBx2 9MB 外部 16MB 無核心電晶體數目 18M 20M 35M 50M 40M追求指令平行化
有別於RISC與VLIW,英特爾將兼具兩者之長的IA-64相關技術命名為「Explicitly Parallel Instruction-set Computing」,追求高度指令平行化的潛能。IA-64的單一指令包編碼長度為128位元,包含三個41位元長的指令與5位元的指令排列模板,後者定義了數種常用的指令順序,可簡化指令解碼。便於編譯器最佳化
IA-64堪稱是協助編譯器最佳化機制的集大成。首先,擁有多達128個通用暫存器與128個浮點暫存器,遠超過通用/浮點分別僅32個暫存器的RISC指令集,龐大的暫存器群降低記憶體頻寬的壓力與減少程序呼叫時暫存器的資料搬移工作。其次,為了克服分支負擔和縮短記憶體延遲,IA-64導入預測執行與預測載入機制。最後,暫存器堆疊與暫存器輪轉技術,可改善不同程序傳遞參數和迴圈攤平的效率。
IA-64的問題與缺點
雖然IA-64看似先進,卻有著程式碼體積過大的缺點,如較長的指令編碼、缺乏基底偏移載入、預測執行與預測載入增加程式碼體積,以及整數乘除法無法直接使用通用暫存器作運算元等,根據IBM估算,IA-64程式碼體積高達x86的四倍,直接反映在記憶體使用量上。此外,IA-64的設計精神在於「毋需實作複雜的微架構,即可設計出省電高效能的處理器」,但龐大的暫存器群與執行單元數,也難以提昇處理器的時脈。
為多核心鋪路
不過瑕不掩瑜,整體而言,IA-64的確遠邁既有的RISC指令集,歷代Itanium也證實IA-64的確便於打造簡單省電又高效能的核心,核心晶粒面積平均僅有同時期x86的一半,利於未來多核心的趨勢。兼顧RISC與VLIW之長:彈性化的指令包(Bundle)
解除暫存器不足的困擾:龐大的暫存器群減少分支負擔:預測執行機制(Predication)
降低記憶體延遲:預測記憶體載入機制(Speculative Load)加速程序呼叫:暫存器堆疊機制(Register Stack)
攤平程式迴圈:暫存器輪轉機制(Register Rotation)兼顧RISC與VLIW之長:彈性化的指令包(Bundle)
VLIW(超長指令集架構)雖然具備高平行化的特性,但也缺乏日後更動處理器架構的彈性,以及日後被迫重新編譯程式碼的麻煩。IA-64並未限制指令包內的三個指令型態,透過指令編碼最後5位元所定義的常用指令排序,簡化指令編碼,不同指令序列之間也可插入判斷位元,以便於處理器判定基本區塊。
解除暫存器不足的困擾:龐大的暫存器群
暫存器不足一直都是高階語言編譯器的最痛,限制程式碼最佳化的彈性與指令平行化執行的潛力(如發生暫存器相依)。IA-64定義高達128個64位元(實際65位元)通用暫存器、128個82位元浮點暫存器、64個1位元預測條件暫存器以及8個64位元分支位址暫存器,一勞永逸的解決暫存器不足的困擾。
減少分支負擔:預測執行機制(Predication)
分支與條件判斷指令會更改指令執行的流程,縮小程式碼的基本區塊(Basic Block),限制指令平行執行的空間,但硬體分支預測機制的效果亦有其限度。IA-64指令集全面支援條件執行,將分支判斷條件寫入預測條件暫存器,編譯器即可進行最佳化排程,同時執行所有程式碼,再保留所需要的結果。
降低記憶體延遲:預測記憶體載入機制(Speculative Load)
記憶體存取延遲是處理器效能的大殺手,無論是再完善的硬體預先擷取機制和快取記憶體都無法根除這個問題。IA-64指令集的預測記憶體載入機制,允許編譯器預測後面可能需要載入的記憶體位址,先行排程,再比對ALAT(Advanced Load Address Table)的位址紀錄,以確保預測的正確性。
加速程序呼叫:暫存器堆疊機制(Register Stack)
因今日程式架構均高度模組化之故,不同程序的呼叫動作與參數傳遞會消耗大量暫存器數目,製造暫存器之間的資料搬移動作。透過暫存器堆疊機制,只要修改預先建立的暫存器框架(Register Frame)的虛擬暫存器編號,即可重疊不同程序所使用的通用暫存器,毋需搬移資料即可交換不同程序的資料。
攤平程式迴圈:暫存器輪轉機制(Register Rotation)
迴圈攤平(Loop Unrolling)是編譯器經常用到的最佳化手段,避免無謂的條件判斷與分支預測錯誤,但迴圈攤平卻會因前置(Prolouge)與結尾碼(Epilouge)而大幅增加程式碼體積。IA-64無論通用和浮點暫存器均可透過暫存器輪轉機制,直接攤平迴圈,毋需付出增加程式碼體積的代價。正好前不久做過測試。4096*4096的矩陣向量乘法,用同一個BLAS庫,ARMv6 700MHz的要比筆記本的i5 1.6GHz 慢20倍左右。具體數字可能有偏差,但ARM和Core的能效比基本接近
不邀自答。
效率,不能看主頻。主頻就是周期,一條指令需要多少個周期,arm和x86是不一樣的。如果做加法,大家一個周期內完成,如果算sin呢?x86專有的模塊,我忘了是MMX還是SSE,還是浮點模塊的了,只需要2個周期;arm就sb了,用加減乘除模擬幾百個周期算個結果給你。(RISC,CISC區別)
所以反過來想,效率那麼高咋來的啊?當然是集成度(單位面積內的運算單元)換來的啊,用硬體去實現那幾百個加減乘除啊,這時候,耗電上去嘍。
而且arm天生就是省點而來的,只是現在用的人多了,好像覺得x86不行了,你讓電腦arm跑個科學運算試試,10個arm未必抵得了一個x86。
大家各司其職,不要打架,去中國,有錢一起賺。
x86設計的初衷就是性能, 為性能甚至不惜搞出當年奔騰4那樣的東西, 而arm一開始的目標就是低功耗搞移動領域
推薦閱讀:
※關於手機晶元,台積電、ARM、三星、蘋果、MTK 是什麼關係?
※ARM處理器會預取指令,那麼我們修改PC寄存器時,被預取的指令是否是被直接丟棄了?
※樹莓派 (Raspberry Pi) 的性能如何?
※如何讓樹莓派可以被外網訪問?
※我還要繼續學習51單片機嗎?----答疑貼