【CPU】關(guān)于x86执俩、x86_64/x64、amd64和arm64/aarch64

為什么叫x86和x86_64和AMD64?

為什么大家叫x86為32位系統(tǒng)癌刽?

為什么軟件版本會(huì)注明 for amd64版本役首,不是intel64呢?




x86是指intel的開發(fā)的一種32位指令集显拜,從386開始時(shí)代開始的衡奥,一直沿用至今,是一種cisc指令集远荠,所有intel早期的cpu矮固,amd早期的cpu都支持這種指令集,intel官方文檔里面稱為“IA-32”


x84_64是x86 CPU開始邁向64位的時(shí)候,有2選擇:

1档址、向下兼容x86盹兢。

2、完全重新設(shè)計(jì)指令集守伸,不兼容x86绎秒。

AMD搶跑了,比Intel率先制造出了商用的兼容x86的CPU尼摹,AMD稱之為AMD64见芹,搶了64位PC的第一桶金,得到了用戶的認(rèn)同蠢涝。

Intel選擇了設(shè)計(jì)一種不兼容x86的全新64為指令集玄呛,稱之為IA-64(這玩意似乎就是安騰),但是比amd晚了一步和二,而且IA-64也挺慘淡的把鉴,因?yàn)槭侨略O(shè)計(jì)的CPU,沒有編譯器儿咱,也不支持windows(微軟把intel給忽悠了庭砍,承諾了會(huì)出安騰版windows server版,但是遲遲拿不出東西)混埠。后來(lái)不得不在時(shí)機(jī)落后的情況下也開始支持AMD64的指令集怠缸,但是換了個(gè)名字,叫x86_64钳宪,表示是x86指令集的64擴(kuò)展揭北,大概是不愿意承認(rèn)這玩意是AMD設(shè)計(jì)出來(lái)的。

實(shí)際上吏颖,x86_64,x64,AMD64基本上是同一個(gè)東西搔体,我們現(xiàn)在用的intel/amd的桌面級(jí)CPU基本上都是x86_64,與之相對(duì)的arm,ppc等都不是x86_64半醉。

x86疚俱、x86_64主要的區(qū)別就是32位和64位的問題,x86中只有8個(gè)32位通用寄存器缩多,eax,ebx,ecx呆奕,edx, ebp, esp, esi, edi。

x86_64把這8個(gè)通用寄存器擴(kuò)展成了64位的衬吆,并且比x86增加了若干個(gè)寄存器(好像增加了8個(gè)梁钾,變成了總共16個(gè)通用寄存器)。同樣的MMX的寄存器的位數(shù)和數(shù)量也進(jìn)行了擴(kuò)展逊抡。此外cpu擴(kuò)展到64位后也能支持更多的內(nèi)存了姆泻,等等許多好處。

對(duì)于普通程序來(lái)說(shuō),CPU位數(shù)的擴(kuò)展拇勃、寄存器數(shù)量的增加不會(huì)帶來(lái)明顯的性能提升蛾娶,比如IE瀏覽器、Office辦公這類的軟件潜秋。特定的程序很能夠充分利用64位CPU蛔琅、更多的寄存器帶來(lái)的優(yōu)勢(shì),比如MMX除了能提升多媒體程序的性能峻呛,對(duì)矩陣罗售、多項(xiàng)式、向量計(jì)算都能帶來(lái)提升钩述,更多的MMX寄存器寨躁、更大的寄存器字長(zhǎng)都有利于SIMD指令的執(zhí)行,能夠提升CPU對(duì)數(shù)據(jù)的吞吐量(RISC指令集的CPU動(dòng)不動(dòng)就有數(shù)百個(gè)寄存器牙勘,可以有效的緩存中間計(jì)算結(jié)果职恳,不需要把中間結(jié)果寫入內(nèi)存,從而減少內(nèi)存訪問次數(shù)方面,顯著提升性能)


x86


x86架構(gòu)(The x86 architecture)是微處理器執(zhí)行的計(jì)算機(jī)語(yǔ)言指令集放钦,指一個(gè)intel通用計(jì)算機(jī)系列的標(biāo)準(zhǔn)編號(hào)縮寫,也標(biāo)識(shí)一套通用的計(jì)算機(jī)指令集合恭金。

1978年6月8日操禀,Intel發(fā)布了新款16位微處理器“8086”,也同時(shí)開創(chuàng)了一個(gè)新時(shí)代:x86架構(gòu)誕生了横腿。

在40年的發(fā)展史中颓屑,x86家族不斷壯大,從桌面轉(zhuǎn)戰(zhàn)筆記本耿焊、服務(wù)器揪惦、超級(jí)計(jì)算機(jī)、編寫設(shè)備罗侯,期間還挫敗或者限制了很多競(jìng)爭(zhēng)對(duì)手的發(fā)展器腋,讓不少處理器廠商及其架構(gòu)技術(shù)成為歷史名字,即使有些封閉發(fā)展的也難以為繼歇父,比如蘋果就已經(jīng)放棄PowerPC了蒂培。


AMD64/x86-64


x86-64有時(shí)會(huì)簡(jiǎn)稱為“x64”再愈,是64位微處理器架構(gòu)及其相應(yīng)指令集的一種榜苫,也是Intel x86架構(gòu)的延伸產(chǎn)品。

“x86-64”1999由AMD設(shè)計(jì)翎冲,AMD 首次公開 64 位集以擴(kuò)充給 IA-32垂睬,稱為 x86-64(后來(lái)改名為 AMD64)。 AMD64架構(gòu)在IA-32上新增了64位寄存器,并兼容早期的16位和32位軟件驹饺,可使現(xiàn)有以x86為對(duì)象的編譯器容易轉(zhuǎn)為AMD64版本钳枕。

由于AMD64和Intel64基本上一致,很多軟硬件產(chǎn)品都使用一種不傾向任何一方的詞匯來(lái)表明它們對(duì)兩種架構(gòu)的同時(shí)兼容赏壹。出于這個(gè)目的鱼炒,AMD對(duì)這種CPU架構(gòu)的原始稱呼 - “x86-64”被不時(shí)地使用,還有變體“x86_64”蝌借。其他公司如微軟和Sun在營(yíng)銷資料中使用“x64”作為對(duì)“x86-64”的縮寫昔瞧。

許多操作系統(tǒng)及產(chǎn)品,尤其那些是在Intel進(jìn)入這塊市場(chǎng)之前就引入“x86-64”支持的菩佑,使用“AMD64”或“amd64”同時(shí)指代AMD64和Intel64自晰。


現(xiàn)在的x86 CPU在位數(shù)上有32/64bit之分,在ARCH上有又x86/x86_64/x64/i386/IA32/IA64/amd64

最近又新出來(lái)一個(gè)x32稍坯,還好不是ARCH酬荞,只是ABI,沒有那么混亂瞧哟。

先說(shuō)一下x86的這些arch混巧,不要求很嚴(yán)格的話,基本上可以用下面的公式來(lái)表達(dá):

x86=i386=IA32

amd64=x86_64=x64!=IA64

其實(shí)這兩個(gè)等式里很多都是別名勤揩,嚴(yán)格說(shuō)的話牲剃,x86的世界里只存在x86/x86_64/IA64三種架構(gòu)。


當(dāng)年AMD先于Intel推出向下兼容的amd64 CPU雄可,而Intel推出的不兼容32位系統(tǒng)的IA64慘淡收?qǐng)?被MS放了鴿子)凿傅,后來(lái)Intel在指令上支持了amd64,不過不愿意叫amd64数苫,改了個(gè)名字x86_64聪舒。


再說(shuō)64bit/32bit的兼容性問題:

現(xiàn)在的64bit CPU實(shí)際上都做了兼容32bit的特殊設(shè)計(jì),所以64bit的CPU上運(yùn)行32bit的軟件(包括kernel/app虐急, driver除外)是沒有問題箱残。反過來(lái),32bit的CPU上運(yùn)行64bit的軟件是不可以的止吁。


最后說(shuō)重點(diǎn)被辑,64bit相比32bit的性能優(yōu)勢(shì):

這里不考慮64bit硬件上運(yùn)行32bit軟件的這種過度方式。

從架構(gòu)上來(lái)說(shuō)敬惦,64bit擁有64bit 的register和64bit的bus盼理,在數(shù)據(jù)傳輸效率上比32bit要高不少;另外俄删,64bit地址總線的尋址空間突破了4G的限制宏怔。

所以奏路,對(duì)于大內(nèi)存,密集數(shù)據(jù)運(yùn)算的應(yīng)用場(chǎng)景臊诊,64bit的優(yōu)勢(shì)是非常明顯的鸽粉。網(wǎng)上有一些benchmark,這里不貼了抓艳。

但是触机,對(duì)于小內(nèi)存系統(tǒng),64bit的CPU在某些狀況下可能比32bit CPU的效率更低玷或。

因?yàn)?4 bit的CPU的地址是64位的威兜,指針是64位的,編譯生成的二進(jìn)制文件更大庐椒,運(yùn)行時(shí)占用的內(nèi)存更多;另一方面椒舵,因?yàn)?4位地址的問題,cache中能存放的指令就更少约谈,所以更容易導(dǎo)致cache的miss笔宿。

所以在某些應(yīng)用場(chǎng)景,64 bitCPU的更大的尋址空間棱诱,更快的數(shù)據(jù)傳遞泼橘,更快的浮點(diǎn)運(yùn)算的特性, 與其64 bit的地址/指針?biāo)鶎?dǎo)致的cache miss的特性迈勋,始終并存炬灭。


為了充分利用64的優(yōu)勢(shì),又避免64bit地址導(dǎo)致的cache miss的問題靡菇,Intel提出了x32 ABI的概念重归。

x32不是一個(gè)ARCH,是一個(gè)ABI厦凤。

x32可以充分的使用64 bit硬件的64 bit寄存器鼻吮,64bit總線,以及64bit新增的指令较鼓,從而獲得更快的數(shù)據(jù)處理速度椎木。

同時(shí)x32又使用32bit的地址/pointer,32bit的C數(shù)據(jù)類型博烂,因此cache miss并不會(huì)增加香椎。

x32是一個(gè)ABI,其設(shè)計(jì)到的部分包括:kernel的support禽篱,toolchain的support畜伐,system lib的support。現(xiàn)在kernel(from 3.4)和toolchain的support都已經(jīng)OK谆级。



ARM,AMD,X86烤礁,AArch64的概念


AMD讼积,中文名(超威)超微半導(dǎo)體肥照,是除了英特爾以外最大的x86架構(gòu)微處理供應(yīng)商脚仔,也是除了英偉達(dá)以外僅有的獨(dú)立圖形處理供應(yīng)商。

x86泛指一系列由英特爾公司開發(fā)的處理器的架構(gòu)舆绎,最早為1978年面世的“Intel 8086”CPU鲤脏。早期的處理器均是以此格式來(lái)命名,如Intel 8086,80186,80286,80386,80486,這些架構(gòu)被統(tǒng)稱為x86吕朵。由于數(shù)字不能被注冊(cè)成為商標(biāo)猎醇,因此公司每當(dāng)有新的處理器使用,均會(huì)采用可注冊(cè)的名稱努溃,如Pentium硫嘶。

基于x86的32位架構(gòu)(常被稱為i386,x86),IA-32,而基于x86的64位架構(gòu)梧税,x86-64常稱為AMD64或Intel64沦疾。最早是由AMD公司首先根據(jù)x86的架構(gòu)生產(chǎn)出了64位的處理器,但是由于是競(jìng)爭(zhēng)關(guān)系第队,Intel公司不愿意承認(rèn)AMD64,近些年才推出了Intel64

ARM(英文為Advanced RISC Machine哮塞,或Acorn RISC Machine)也是一個(gè)架構(gòu),非常適用于移動(dòng)通信這種低成本凳谦,高性能忆畅,低耗電的領(lǐng)域。ARM的公司為安謀控股(ARM Holding plc),又稱為ARM公司尸执,總部位于劍橋的設(shè)計(jì)與軟件公司家凯,現(xiàn)在已被日本的軟銀公司收購(gòu),后者同時(shí)也是國(guó)內(nèi)互聯(lián)網(wǎng)巨頭阿里巴巴的最大股東如失。

AArch64是ARMv8的一種執(zhí)行狀態(tài)肆饶。

為了更廣泛地向企業(yè)領(lǐng)域推進(jìn),需要引入 64 位構(gòu)架岖常,同時(shí)也需要在 ARMv8 架構(gòu)中引入新的 AArch64 執(zhí)行狀態(tài)驯镊。

AArch64 不是一個(gè)單純的 32 位 ARM 構(gòu)架擴(kuò)展,而是 ARMv8 內(nèi)全新的構(gòu)架竭鞍,完全使用全新的 A64 指令集板惑。這些都源自于多年對(duì)現(xiàn)代構(gòu)架設(shè)計(jì)的深入研究。更重要的是偎快, AArch64 作為一個(gè)分離出的執(zhí)行狀態(tài)冯乘,意味著一些未來(lái)的處理器可能不支持舊的 AArch32 執(zhí)行狀態(tài)。

雖然最初的 64 位 ARM 處理器將會(huì)完全向后兼容晒夹,但我們大膽且前瞻性地將 AArch64 作為在 ARMv8 處理器中唯一的執(zhí)行狀態(tài)裆馒。我們?cè)谶@些系統(tǒng)中將不支持 32 位執(zhí)行狀態(tài)姊氓, 這將使許多有益的實(shí)現(xiàn)得到權(quán)衡,如默認(rèn)情況下喷好,使用一個(gè)較大的 64K 大小的頁(yè)面翔横,并會(huì)使得純凈的 64 位 ARM 服務(wù)器系統(tǒng)不受遺留代碼的影響。立即進(jìn)行這種劃分是很重要的梗搅,因?yàn)橛锌赡茉谖磥?lái)幾年內(nèi)將出現(xiàn)僅支持 64 位的服務(wù)器系統(tǒng)禾唁。沒有必要在新的 64 位架構(gòu)中去實(shí)現(xiàn)一個(gè)完整的 32 位流水線,這將會(huì)提高未來(lái) ARM 服務(wù)器系統(tǒng)的能效无切。

這樣回想起來(lái)荡短, AArch64 作為在 Fedora ARM 項(xiàng)目中被支持的 ARM 構(gòu)架是一個(gè)很自然的過程: armv5tel、armv7hl哆键、aarch64掘托。新的架構(gòu)被命名為:aarch64,這同 ARM 自己選擇的主線命名方式保持一致籍嘹,同時(shí)也考慮到了 ARM 架構(gòu)名與 ARM 商標(biāo)分開的期望闪盔。


ARMv8-A 將 64 位架構(gòu)支持引入 ARM 架構(gòu)中,其中包括:

64 位通用寄存器噩峦、SP(堆棧指針)和 PC(程序計(jì)數(shù)器)

64 位數(shù)據(jù)處理和擴(kuò)展的虛擬尋址


兩種主要執(zhí)行狀態(tài):

AArch64 - 64 位執(zhí)行狀態(tài)锭沟,包括該狀態(tài)的異常模型、內(nèi)存模型识补、程序員模型和指令集支持

AArch32 — 32 位執(zhí)行狀態(tài)族淮,包括該狀態(tài)的異常模型、內(nèi)存模型凭涂、程序員模型和指令集支持


這些執(zhí)行狀態(tài)支持三個(gè)主要指令集:

A32(或 ARM):32 位固定長(zhǎng)度指令集祝辣,通過不同架構(gòu)變體增強(qiáng)部分 32 位架構(gòu)執(zhí)行環(huán)境現(xiàn)在稱為 AArch32。

T32 (Thumb) 是以 16 位固定長(zhǎng)度指令集的形式引入的切油,隨后在引入 Thumb-2 技術(shù)時(shí)增強(qiáng)為 16 位和 32 位混合長(zhǎng)度指令集蝙斜。部分 32 位架構(gòu)執(zhí)行環(huán)境現(xiàn)在稱為 AArch32。

A64:提供與 ARM 和 Thumb 指令集類似功能的 32 位固定長(zhǎng)度指令集澎胡。隨 ARMv8-A 一起引入孕荠,它是一種 AArch64 指令集。

ARM ISA 不斷改進(jìn)攻谁,以滿足前沿應(yīng)用程序開發(fā)人員日益增長(zhǎng)的要求稚伍,同時(shí)保留了必要的向后兼容性,以保護(hù)軟件開發(fā)投資戚宦。在 ARMv8-A 中个曙,對(duì) A32 和 T32 進(jìn)行了一些增補(bǔ),以保持與 A64 指令集一致受楼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末垦搬,一起剝皮案震驚了整個(gè)濱河市呼寸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猴贰,老刑警劉巖对雪,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異糟趾,居然都是意外死亡慌植,警方通過查閱死者的電腦和手機(jī)甚牲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門义郑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人丈钙,你說(shuō)我怎么就攤上這事非驮。” “怎么了雏赦?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵劫笙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我星岗,道長(zhǎng)填大,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任俏橘,我火速辦了婚禮允华,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寥掐。我一直安慰自己靴寂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布召耘。 她就那樣靜靜地躺著百炬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪污它。 梳的紋絲不亂的頭發(fā)上剖踊,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音衫贬,去河邊找鬼德澈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛祥山,可吹牛的內(nèi)容都是我干的圃验。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼缝呕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼澳窑!你這毒婦竟也來(lái)了斧散?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤摊聋,失蹤者是張志新(化名)和其女友劉穎鸡捐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體麻裁,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡箍镜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了煎源。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片色迂。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖手销,靈堂內(nèi)的尸體忽然破棺而出歇僧,到底是詐尸還是另有隱情,我是刑警寧澤锋拖,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布诈悍,位于F島的核電站,受9級(jí)特大地震影響兽埃,放射性物質(zhì)發(fā)生泄漏侥钳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一柄错、第九天 我趴在偏房一處隱蔽的房頂上張望舷夺。 院中可真熱鬧,春花似錦鄙陡、人聲如沸冕房。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)耙册。三九已至,卻和暖如春毫捣,著一層夾襖步出監(jiān)牢的瞬間详拙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工蔓同, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饶辙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓斑粱,卻偏偏與公主長(zhǎng)得像弃揽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容