(Translated by https://www.hiragana.jp/)
x86 - 维基百科,自由的百科全书 とべ转到内容ないよう

x86

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
重定しげさだこうIntel x86

x86
推出ねん1978ねん(16もと)、1985ねん(32もと)、2003ねん(64もと
設計せっけい公司こうしIntelAMD
開放かいほう構?部分ぶぶん
ちょう/暫存資料しりょうひろしたび32、64、128
もとぐみじょしょうはしじょ
指令しれいしゅう構設けい策略さくりゃくCISC

x86泛指いち系列けいれつもとIntel 8086且向きさきけんようてき中央ちゅうおう处理指令しれいしゅう构。最早もはやてき8086处理于1978ねんゆかりIntel推出,为16ほろ处理

系列けいれつ較早てき處理しょり名稱めいしょう數字すうじらい表示ひょうじ80x86よし於以“86”作為さくい結尾けつび包括ほうかつIntel 8086801868028680386以及80486いん此其構被しょうため“x86”。よし數字すうじなみ不能ふのう作為さくい註冊商標しょうひょういん此Intel及其競爭きょうそうしゃひとしざいしん一代處理器使用可註冊的名稱,如Pentiumらい描述x86構下てき處理しょり產品さんぴん現時げんじえいとくしかはた其稱ためIA-32ぜんめいためIntel Architecture, 32-bit”,一般情形下指代32もとてき構。

歷史れきし

[编辑]

x86構於1978ねん推出てきIntel 8086中央ちゅうおう處理しょりちゅうくび出現しゅつげん,它是したがえIntel 8008處理しょりちゅう發展はってん而來てき,而8008のり發展はってんIntel 4004てき。8086ざいさんねんためIBM PCところせんようこれx86便びんなりためりょう個人こじん電腦でんのうてき標準ひょうじゅん平台ひらだいなりためりょうれきらいさい成功せいこうてきCPU構。

其他公司こうし也有やゆう製造せいぞうx86構的處理しょりけいゆうCyrixげんためもり電子でんし所收しょしゅう購)、NEC集團しゅうだんIBMIDT以及Transmeta。Intel以外いがいさい成功せいこうてき製造せいぞうしょうためAMD,其早さき产品Athlon系列けいれつ處理しょりてき市場いちば份額僅次於Intel Pentium

808616もと處理しょりちょくいた1985ねん32もとてき80386てき開發かいはつ,這個構都維持いじ16もとせっちょ一系列的處理器表示了32もと構的細微さいびあらためすすむ,推出りょうすうしゅてき擴充かくじゅうちょくいた2003ねんAMDたい於這發展はってんりょう64もとてき擴充かくじゅう,并命名めいめいAMD64後來こうらいえいとくなんじ也推りょうあずかこれけんようてき處理しょりなみ命名めいめいためIntel 64兩者りょうしゃ一般被統稱為x86-64あるx64,开创りょうx86てき64时代。

值得注意ちゅういてきえいとくしかはやざい1990年代ねんだい就与めぐみひろし合作がっさく提出ていしゅつりょういち种用ざいやす系列けいれつ处理ちゅうてき独立どくりつてき64构,这种构被しょうIA-64。IA-64一种崭新的系统,x86構完ぜんぼつゆう相似そうじせいおう該把它与x86-64あるx64ろうこん

CPU紀元きげん朝代あさよ めん時間じかん
西元にしもと みのる
卓越たくえつてきCPUがたごう 記憶きおくたい位置いち找尋空間くうかん 引入こうのう註釋ちゅうしゃく
序列じょれつ 模擬もぎ 實體じったい
x86 だいいちだい 1978 Intel 8086, Intel 8088(1979) 16もと 20もと 16もと , IBM PC (8088), IBM PC/XTえいIBM PC/XT (8088)
1982 Intel 80186, Intel 80188
NEC V20えいNEC V20/V30(1983)
8086-2構, 嵌入かんにゅう技術ぎじゅつ(80186/80188)
だいだい Intel 80286及其かつたかし產品さんぴん 30もと 24もと 保護ほごしき(16もと), IBM PC XT 286えいIBM PC/XT#IBM XT 286, IBM PC AT
だいさんだい (IA-32) 1985 Intel 80386, AMD Am386えいAMD Am386 (1991) 32もと 46もと 32もと 32もと 保護ほごしき), ぶんぺーじ技術ぎじゅつ模擬もぎ8086しき, IBM PS/2
だいよんだい (かんせんかい記憶きおくたい) 1989 Intel 80486
Cyrix Cx486S/DLC(1992)
AMD Am486えいAMD Am486(1993)/AMD Am5x86えいAMD Am5x86(1995)
かんせん, おけあきらx87えいx87 浮點運算うんざん (486DX), おけあきらCPUかい記憶きおくたい
だいだい
(ちょう純量じゅんりょう)
1993 Intel Pentium, Pentium MMXえいP5_(microarchitecture)#MMX(1996) ちょう純量じゅんりょう, 64もと 匯流はい, さらかいてき浮點運算うんざん, MMX (Pentium MMX), すすむかいほどしき插斷ひかえせいえいAdvanced Programmable Interrupt Controller, 對等たいとう多元たげん處理しょり
1994 NexGen Nx586
AMD 5k86/K5 (1996)
分合ぶんごう式微しきび構(ほろ作業さぎょう指令しれい轉換てんかん)
1995 Cyrix Cx5x86
Cyrix 6x86/MX(1997)/MIIえいCyrix_6x86#6x86MX_/_MII(1998)
だつじょちょう純量じゅんりょう執行しっこう引擎
だいろくだい
(じつ記憶きおくたい位置いち擴充かくじゅう, ほろ作業さぎょう指令しれい轉換てんかん)
1995 Intel Pentium Pro 36もと (PAE) ほろ作業さぎょう指令しれい轉換てんかん, まちじょうがた檢索けんさく指令しれい, だつじょちょう純量じゅんりょう執行しっこう引擎, 推理すいりがた執行しっこう引擎, さんx86ちょう純量じゅんりょうかんせん, ちょう純量じゅんりょう浮點運算うんざん, じつ記憶きおくたい位置いち擴充かくじゅう, おけかた次元じげんかい
1997 Intel Pentium II, Pentium III (1999)
Celeron(1998), Xeon(1998)
おけたい(Pentium II)あるおけあきら(Celeron)次元じげんかい, SSE (Pentium III), SLOT 1, Socket 370 or SLOT 2 (Xeon)
1997 AMD K6/K6-2(1998)/K6-III(1999) 32もと 3DNow!, さん次元じげんかい系統けいとう (K6-III)
增強ぞうきょうがた平台ひらだい 1999 AMD Athlon, Athlon XP/MP(2001)
Duron(2000), Sempron(2004)
36もと MMX+, 3DNow!+, DDR技術ぎじゅつ引入ぜんはし匯流はい, Slot A or Socket A
2000 Transmeta CrusoeえいTransmeta Crusoe 32もと 變形へんけいCMS技術ぎじゅつてきx86平台ひらだい處理しょり, VLIW-128核心かくしん, おけあきら記憶きおくたいひかえせい, おけあきらPCIきょうひかえせい
Intel Pentium 4 36もと SSE2, ちょう執行しっこういとぐち (Northwood), NetBurstほろ構, QDR技術ぎじゅつ引入ぜんはし匯流はい, 執行しっこう跟蹤かい, Socket 478
2003 Intel Pentium M
Intel Core (2006), Pentium Dual-Core (2007)
ほろ作業さぎょう指令しれい融合ゆうごう, NXもと (Dothan)
Transmeta EfficeonえいTransmeta Efficeon CMS 6.0.4, VLIW-256, NXもと, HT匯流はい
IA-64 64もと過渡かと時代じだい
1999 ~ 2005
2001 Intel Itanium (2001 ~ 2017) 52もと 64もと EPIC構, 128もとVLIW指令しれい捆綁, おけあきらx86かたからだ支援しえんx86作業さぎょう系統けいとうほどしき(早期そうき版本はんぽん),軟體IA-32 EL模擬もぎx86ほどしき(Itanium 2), Itanium 通用つうよう暫存うつなりx86暫存
x64 64げんたくてん時代じだい
したがえ2001おこり
x64x86構的64げんたくてんざい它的遺留いりゅうしき中原なかはらふうりょうかんせい不變ふへんてきx86構。x64處理しょりてき真正しんせい構置於64もとしきちゅう,它沒ゆう分段ぶんだんしきてき定位ていい記憶きおくたい能力のうりょくいん此它僅擁ゆう許諾きょだくてき64もと序列じょれつ記憶きおくたい位置いち現時げんじ情況じょうきょう僅有48もと實現じつげんあずか這個64もとしき共生きょうせいてきようらい支援しえんだい部分ぶぶん32もとx86ほどしきてきしょうようしき
2003 Athlon 64/FX/X2(2005), Opteron
Sempron(2004)/X2(2008)
Turion 64(2005)/X2(2006)
40もと AMD64 (排除はいじょはやさきいち些32もとSempron處理しょり), おけあきら記憶きおくたいひかえせい, HT匯流はい, おけあきらそう核心かくしん(X2), AMD-V (Athlon 64 Orleans), Socket 754/939/940 or AM2
2004 Pentium 4 (Prescott)
Celeron D, Pentium D (2005)
36もと EM64T (僅在特定とくていがたごうてきPentium 4Celeron Dひらけけい), SSE3, だいだいNetBurstかんせん, そう核心かくしん(おけあきら: Pentium D 8xx; おけへん: Pentium D 9xx), Intel VT(Pentium 4 6x2), socket LGA 775
2006 Intel Core 2
Pentium Dual-Core (2007)
Celeron Dual-Core (2008)
Intel 64 (<<== EM64T), SSSE3(65奈米), ひろしいきだつじょちょう純量じゅんりょう執行しっこう引擎, ほろ作業さぎょう指令しれい融合ゆうごう, きょしゅう融合ゆうごう, おけかたよん核心かくしん(Core 2 Quad), 智慧ちえがたぶんとおる次元じげんかい
2007 AMD Phenom/II(2008)
Athlon II(2009), Turion II(2009)
48もと Monolithic quad-core(X4)/triple-core(X3), SSE4a, Rapid Virtualization Indexing (RVI), HT匯流はい 3, AM2+ or AM3
2008 Intel Core 2 (45奈米) 36もと SSE4.1
Intel Atom しょうふででんあるていこう智慧ちえがた裝置そうちてき處理しょり, P54C核心かくしんてき重用じゅうよう
Intel Core i7
Core i5 (2009), Core i3 (2010)
QuickPath, おけかた繪圖えず記憶きおくたい匯流はい (ClarkdaleえいClarkdale (microprocessor)), SSE4.2, 擴展ぺーじひょう (EPT), LGA 1366 (Nehalem) or LGA 1156 socket
VIA Nano もと於硬たいてきみつもとけん; 智慧ちえ適應てきおうがた電源でんげん管理かんり
2010 AMD FX 48もと はち核心かくしん, CMT(くさむらしゅう執行しっこういとぐち), せき累加るいか運算うんざん, OpenCL, AM3+
2011 AMD APU A and E Series (Llano) 40もと おけあきらGPGPU, PCI Express 2.0, Socket FM1
AMD APU C, E and Z Series (Bobcat) 36もと ていこう智慧ちえがた裝置そうちAPU
Intel Core i3, Core i5 and Core i7
(Sandy Bridge/Ivy Bridge)
內部たまきがた連接れんせつ, LGA 1155 socket.
2012 AMD APU A Series (Bulldozer, Trinity and later) 48もと AVX, Bulldozer based APU, Socket FM2 or Socket FM2+
Intel Xeon Phi (Knights Corner) 48もと 輔助處理しょり作業さぎょう系統けいとうささえ撐的PCI-E界面かいめん卡形しきてきXEON系統けいとうてき輔助處理しょり, 核心かくしんあきらへん, 順序じゅんじょP54C, ちょうひろしVPU (512もと SSE), LRBni 指令しれい(8× 64もと)
2013 AMD Jaguar
(Athlon, Sempron)
48もと SoC, 適用てきよう電子でんしゆう樂器がっきていこう智慧ちえがた裝置そうちてき處理しょり
Intel SilvermontえいSilvermont
(Atom, Celeron, Pentium)
36もと SoC, ひくあるごくていこう智慧ちえがた裝置そうちてき處理しょり
Intel Core i3, Core i5 and Core i7 (Haswell/Broadwell) 39もと AVX2, FMA3, TSX, BMI1, and BMI2えいBit Manipulation Instruction Sets instructions, LGA 1150 socket
2015 Intel Broadwell-U
(Intel Core i3, Core i5, Core i7, Core M, Pentium, Celeron)
SoC, おけかたBroadwell-U PCH-LP (あきらもとぐみ)
2015/2016 Intel Skylake/Kaby Lake/CannonlakeえいCannon Lake (microarchitecture)
(Intel Core i3, Core i5, Core i7)
46もと AVX3
2016 Intel Xeon Phi (Knights Landing) 48もと 孤立こりつけいどうがたXeon系統けいとうてき加速器かそくき, もと於Airmont (Atom)核心かくしん技術ぎじゅつ
2016 AMD Bristol Ridge
(AMD (Pro) A6/A8/A10/A12)
48もと おけあきらFCH, SoC, AM4 socket
2017 AMD Ryzen Series/AMD Epyc Series AMDてき執行しっこういとぐち技術ぎじゅつ, LGA (4094, Epyc), おけかたあきらもと, EpycはただいOpteron產品さんぴんせん
軟體模擬もぎ時代じだい
ARM64
2017 Windows 10 on ARM64 MicrosoftあずかQualcommてき合作がっさく結晶けっしょうはたWindows 10たいにゅういたりもと於ARM64てきQualcomm平台ひらだいなみはりたい32もとx86ほどしき提供ていきょうCHPE模擬もぎ有效ゆうこう支援しえんしたがえ版本はんぽん1709 (16299.15)おこり
CPU紀元きげん朝代あさよ めん時間じかん 卓越たくえつてきCPUがたごう じつ記憶きおくたい位置いち找尋空間くうかん 引入こうのう註釋ちゅうしゃく

設計せっけい

[编辑]

x86構是重要じゅうよう可變かへん指令しれいちょうてきCISC複雜ふくざつ指令しれいしゅう電腦でんのうComplex Instruction Set Computer)。ぐみ(word, 4もとぐみちょうてき記憶きおくたいそん允許いんきょたいひとし記憶きおく體位たいいぐみ以低节在まえてき順序じゅんじょもうか存在そんざい記憶きおくたいちゅう向後きょうこうあいようせいIntel量產りょうさんせいほど經常けいじょうりょうさき業界ぎょうかいいちちょくざいx86構的發展はってん背後はいごいちまた驅動くどう力量りきりょう設計せっけいてき需要じゅよう決定けっていりょう這項いんもと而常つねしるべ批評ひひょうゆう其是たい處理しょりてき擁護ようごしゃ理論りろんかい們對於一個被廣泛認為是落后設計的架構的持續成功感到不解)。ただしざい較新てきほろ構中,x86處理しょりかいはた常用じょうようてきx86指令しれいつき全力ぜんりょく以硬たい線路せんろ執行しっこう常用じょうようしゃのり轉換てんかんためさらぞうRISCてきほろ指令しれいさい执行,したがえ獲得かくとくあずかRISCなずらえてきちょう純量じゅんりょう性能せいのう,而仍しか保持ほじ向後こうごけんよう。x86構的處理しょりいち共有きょうゆうよんしゅ執行しっこうしきふん别是真實しんじつしき保護ほごしきけい管理かんりしき以及きょなずらえV86しき

ざい這篇簡短かんたんてき文章ぶんしょうちゅう出現しゅつげんてき指令しれい暫存じょ憶符ごうてき名稱めいしょうざいIntelぶんけん中有ちゅううしょ指定してい以及使用しようざいIntelぐみやくAssemblerちゅうしょうようてきほろてきMASMBorlandてきTASM、CADきゃど-ULてきas386とうとう)。いち以Intel語法ごほう指定していてき指令しれい"mov al, 30h"あずかAT&T語法ごほうてき"movb $0x30, %al"相當そうとうみやこただしかいてんやく兩個りゃんこ节的機器きき碼"B0 30"(じゅうろくしんせい)。你可以發現在げんざい這段ほどしきちゅうてき"mov"ある"al",ばららいてきIntelじょ憶符ごう。如果わが們想ようてきばなしわが們可以寫一個組譯器由程式碼move immediate byte hexadecimally encoded 30 into low half of the first register(移動いどうりつそく值位もとじゅうろくしんせいへん碼30いただい一個暫存器的低半部位),らいさんせいしょうどうてき機器きき碼。しか而,つて统上ぐみやくAssemblerいちちょく使用しようIntelてきじょ憶符ごう

x86組合くみあいげんかいざいx86組合くみあいげんえいx86 assembly language文章ぶんしょう中有ちゅううさら詳細しょうさいてき討論とうろん

うんさくしき

[编辑]

真實しんじつしき

[编辑]

ざい真實しんじつしき記憶きおくたいてきそんだんひらけらいためりょういた最後さいご20もとてき記憶きおく體位たいいようしょうだんてき往左移動いどう4もとなみ且加じょうへんうつりてきよし此,真實しんじつしき下總しもふさども以定てき空間くうかん220もとぐみあるもの1MB,於1979ねん相當そうとうゆずるじん印象いんしょう深刻しんこくてき象徵しょうちょうざい真實しんじつしきゆうりょうたねじょうしき:nearfar。ざいfarしきだん跟偏うつり需要じゅよう指定していざいnearしきただ需要じゅようへんうつりしき指定してい,而記憶きおくたいだんよし適當てきとうてきだん暫存獲得かくとく。以資料しりょう而言使用しようDS暫存ほどしき碼是CS暫存うずたかたたみSS暫存。舉個れい,如果DSA000h且SI5677h,DS:SIかい指向しこう記憶きおくたいてき絕對ぜったいDS × 16 + SI = A5677h

ざい這種構下,りょうたい不同ふどうてきだんへんうつ指向しこう一個相同的絕對位址。よし此如はてDSA111h且SI4567h,DS:SIかい指向しこう跟上いちだんしょうどうてきA5677h。じょりょう值同重複じゅうふくせいそと,這種構無ほう同時どうじいちようゆう4以上いじょうてきだん。此外,CS、DSSSためりょうほどしき正確せいかくこうのう必須ひっすてきいん此僅僅只ゆうES以被ようらい指向しこう其他てき地方ちほう。這種しき原本げんぽんためりょうあずかIntel 8085あいようしるべ致程しき設計せっけいひさしとめつきてき痛苦つうく

じょりょう以上いじょう所說しょせつてき,8086也擁ゆう16-bitてき32K(其變しゅ Intel 8088 8-bitてき64K)輸入ゆにゅう輸出ゆしゅつ空間くうかん,以及いちゆかりかたからだ支援しえんてき64K(いちだん記憶きおくたいうずたかたたみただゆうwords(2もとぐみ以被推入いたうずたかたたみちゅううずたかたたみよし記憶きおくたいてき上端じょうたん往下成長せいちょうてきそこはしよしSS:SP指向しこうゆう256中斷ちゅうだん以由かたたいある軟體同時どうじ組成そせい中斷ちゅうだん以串れんざい一起かずき使用しよううずたかたたみらいもうかそんかえしかい中斷ちゅうだんてきほどしき

16もと保護ほごしき

[编辑]

Intel 80286以在改變かいへんにんなん東西とうざい支援しえん8086てき真實しんじつしき16もと軟體,しか而它也支援しえんがく外的がいてき工作こうさくしきたたえため保護ほごしき以將じょうてき實體じったい記憶きおくたい擴充かくじゅういた16MBじょうてききょなずらえ記憶きおくたい最大さいだいいた1GB。這是使用しようぶし暫存らいもうか存在そんざいぶしひょうかくちゅうてき索引さくいん值。處理しょり中有ちゅうう兩個りゃんこ這樣てきひょうかく分別ふんべつためGDTLDTまい一個可以儲存最多8192ぶしてき描述まい一個節區可以給予最大到64KBてき記憶きおくたいそんふしひょうかく提供ていきょういち24もとてき基底きていえいBase address(base address),以用此基そこ增加ぞうかそうようてきへんうつりりょうらい創造そうぞういち絕對ぜったい。此外,まい一個節區可以被賦予四種權限等級中的一種(しょうため"rings")。

儘管這個推出てきこうのういちこう進步しんぽただし們並ぼつゆうこう泛地使用しよういんため保護ほごしきてき作業さぎょう系統けいとう無法むほう執行しっこう當時とうじてき真實しんじつしき軟體。這樣てき能力のうりょくただゆうざいずい80386處理しょりてききょなずらえ86しきちゅう出現しゅつげん

ざい同時どうじ作業さぎょう系統けいとうOS/2嘗試使用しよう類似るいじ乒乓てき方法ほうほうゆずる處理しょりざい保護ほご真實しんじつしきあいだせつかわ。這樣都會とかいゆずる電腦でんのうへん慢且安全あんぜんぞうざい真實しんじつしきてきほどしき輕易けいい使電腦でんのう當機とうき。OS/2也定義ていぎりょうげんせい性的せいてきほどしき設計せっけい規則きそく允許いんきょ"Family API"ある"bound"ほどしき以在真實しんじつしきある保護ほごしき執行しっこうしか而這きゅう原本げんぽんため保護ほごしき設計せっけいてきほどしきゆうせきたんのりしか保護ほごしきほどしきなみ支援しえんぶし選擇せんたく實體じったい記憶きおくたいあいだてき關係かんけいゆう時候じこうかい錯誤さくご地相ちそうしんじざい16もと保護ほごしき執行しっこう真實しんじつしきてきほどしきしるべ致IBM必須ひっす選擇せんたく使用しようIntel保留ほりゅうきゅうBIOSてき中斷ちゅうだんよびさけべ事實じじつじょう這類てきほどしき使用しよう任意にんいてき選擇せんたくすう值和使用しようざい上面うわつらひっさげいたてきふし運算うんざんてき方式ほうしきゆうせき

這個問題もんだい也在Windows 3.xうえ出現しゅつげん。這個推出版本はんぽんおもえようざい16もと保護ほごしき執行しっこうほどしき,而先まえてき版本はんぽんただのうざい真實しんじつしき執行しっこう理論りろんじょう,如果Windows 1.xある2.xほどしきうつしどく適當てきとう”且避めん使用しようぶし運算うんざんてき方式ほうしき,它就ゆう可能かのうざい真實しんじつ保護ほごしき兩者りょうしゃ執行しっこう。Windowsほどしき一般來說都會避免節區運算,這是いんためWindowsじつ作出さくしゅつ軟體てききょなずらえ記憶きおくたい方式ほうしき,及當ほどしき執行しっこう時候じこう,搬移記憶きおくたいちゅうてきほどしき碼和資料しりょう所以ゆえん操作そうさ絕對ぜったいてき方式ほうしき很危けんてきとうほどしき執行しっこうみとめためよう保持ほじ記憶きおくたいかたまりてき“handles”,這樣てきhandlesやめけい非常ひじょう相當そうとう保護ほごしきてき選擇せんたくざい保護ほごしきてきWindows 3.0執行しっこういちきゅうてきほどしきかい觸發しょくはついち警告けいこく對話たいわ盒,建議けんぎざい真實しんじつしき執行しっこうWindows(推測すいそくかえ仍然使用しよう擴充かくじゅう記憶きおくたい可能かのうざい80386機器ききようEMM386えいEMM386模擬もぎいん此它なみ局限きょくげん於640KB)あるしたがえしょうしょう更新こうしんいたしんてき版本はんぽんこのみてき行為こういほどしき可能かのう以使よう特別とくべつてき工具こうぐらい避免這樣てき對話たいわ盒。不可能ふかのうゆう些GUIほどしきざい16もと保護ほごしき執行しっこう,且其它GUIほどしきざい真實しんじつしき執行しっこう可能かのういんため這會需要じゅよう兩個りゃんこぶんひらきてき環境かんきょう且會於前めんしょひっさげいたてき處理しょりざい兩個りゃんこしきあいだてき乒乓こうおうしたがえWindows 3.1はん開始かいし真實しんじつしき消失しょうしつりょう

32もと保護ほごしき

[编辑]

Intel 80386推出,也許いた目前もくぜんためどめx86構的最大さいだい躍進やくしんじょりょう需要じゅよう值得注意ちゅういてきIntel 80386SXえいIntel_80386#The_80386SX_variantこれ32もと構但僅只ゆう24もとえい24-bit_computingじょう16もと資料しりょう匯流はい)。じょ此之がい其他構都32もと - 所有しょゆうてき暫存指令しれいしゅう輸出ゆしゅつ輸入ゆにゅう空間くうかん記憶きおくたいじょうためりょうのう夠在後者こうしゃ所說しょせつてきこうのう工作こうさくよう使用しよう32もと擴充かくじゅうてき保護ほごしきしか而不ぞう286,386所有しょゆうてきだん使用しよう32もとてきへんうつりりょうそく使つかい記憶きおくたい空間くうかんゆう使用しようだんただし允許いんきょ應用おうようほどしきそん超過ちょうか4GB空間くうかん而不需要じゅようだんてきぶんへだた。此外,32もと保護ほごしき提供ていきょうぶんぺーじてき支援しえんいちしゅゆずるきょなずらえ記憶きおくたいとく實現じつげんてきせい

ぼつゆうしんてき通用つうよう暫存加入かにゅう所有しょゆう16もとてき暫存じょりょうだん暫存そで擴充かくじゅうため32もと。Intelざい暫存てきすけ符號ふごうじょう加入かにゅう“E”らい表示ひょうじいん擴充かくじゅうてきAX變成へんせいEAX,SI變成へんせいESI,類推るいすい)。よしためゆうさらてき暫存數量すうりょう指令しれい運算うんざん單元たんげんいん機器ききてき格式かくしき也被擴充かくじゅうためりょうひさげ供與きょうよさきまえてき構相よう包含ほうがん執行しっこう碼的だん以被標示ひょうじため16ある32もとてき指令しれいしゅう。此外,特殊とくしゅてきまえおけ符號ふごう也可以用らいざい16もといくわだん包含ほうがん32もとてき指令しれい碼,たんまたしか

ぶんぺーじ跟區だんてき記憶きおくたいそんためりょう支援しえん現在げんざいこう作業さぎょう系統けいとうしょ必須ひっすようてきLinux386BSDえい386BSDWindows NTWindows 95いち開始かいしため386しょ發展はってんいんため它是だい一顆提供可靠地程式分離記憶體空間的支援(まいほどしきようゆう自己じこてきじょう空間くうかん)以及以在必要ひつようてき情況じょうきょうだん們程しきてき執行しっこう使用しようring,一種いっしゅx86保護ほごしき權力けんりょくぶんきゅうてき名稱めいしょう)。這種386てき基本きほん變成へんせい未來みらい所有しょゆうx86系列けいれつ發展はってんてき基礎きそ

Intel 80386數學すうがく輔助運算うんざん處理しょり也在整合せいごういた這個CPUこれてきx86系列けいれつちゅう,也就Intel 80486。しんてきFPU以幫すけ浮點すう運算うんざんたい科學かがく計算けいさん圖形ずけい設計せっけい是非ぜひつね重要じゅうよう

Intelくびざい80386SLしょう系統けいとう管理かんりしき引入x86体系たいけい结构。

きょ拟86しき

[编辑]

こうのう擴充かくじゅう

[编辑]

MMX

[编辑]

1996ねんIntelてきMMX(AMD认为这是のりじん數學すうがく擴充かくじゅうMatrix Math Extensionsてき缩写,ただしだい多数たすう時候じこうとうなりMulti-Media Extension,而Intel从来ぼつゆうかんかた宣布せんぷ过词げん技術ぎじゅつ出現しゅつげん。儘管這項しんてき科技かぎいた广泛せん传,ただし它的精髓せいずい是非ぜひつね簡單かんたんてき:MMX定義ていぎりょうはち64もとSIMD暫存あずかIntel Pentium處理しょりてきFPUうずたかたたみゆうしょう重疊ちょうじょう不幸ふこうてき,這些指令しれい無法むほう非常ひじょう簡單かんたん對應たいおういたよしばららいCへんやく所產しょさんせいてき指令しれい碼中。MMX也只局限きょくげん於整すうてき運算うんざん。這項技術ぎじゅつてき缺點けってんしるべ致MMXざい它早てき存在そんざいゆう輕微けいびてき影響えいきょう現今げんこん,MMX通常つうじょうようざいぼう些2Dかげへん應用おうようほどしきちゅう

3DNow!

[编辑]

1997ねんAMD推出3DNow!たい於MMXてきSIMDてき浮點指令しれい增強ぞうきょうはりたいしょうどうてきMMX暫存)。儘管這些也沒ゆう解決かいけつへんやくてき難題なんだいただし這項技術ぎじゅつてき推出符合ふごうりょうPCうえてき3Dきゅうあいだ娛樂ごらく應用おうようほどしき崛起。3D遊戲ゆうぎ開發かいはつしゃ3D繪圖えずかたからだ製造せいぞうしょうざいAMDてきAMD K6Athlon系列けいれつ處理しょりじょう使用しよう3DNow!らい幫助增加ぞうか們的效能こうのうほろ後來こうらい也在其開發かいはつてきDirect X7.0ちゅう加入かにゅうはりたい3DNow!てきさいけい使つかい當時とうじてきAthlon處理しょりざい3D遊戲ゆうぎ效能こうのうじょうくび全面ぜんめん超過ちょうかたいえいとくなんじてきPentium 3處理しょり

SSE

[编辑]

ざい1999ねんIntel推出SSE指令しれいしゅう增加ぞうかりょうはちしんてき128-bit暫存跟其てき暫存重疊ちょうじょう使用しよう)。這些指令しれい類似るいじ於AMDてき3DNow!,主要しゅよう增加ぞうか浮點すう運算うんざんてきSIMD指令しれい

SSE2

[编辑]

2001ねんえいとくなんじ推出SSE2指令しれいしゅう增加ぞうかりょう

  • かん整地せいち補充ほじゅうりょう整數せいすう指令しれいあずかMMX相似そうじいたげんてきSSE暫存
  • 64もとてきSIMD浮點運算うんざん指令しれいいたげんてきSSE暫存

だい一個的增加導致MMXいく乎是どき以捨棄的,だい二個則允許這些指令可以讓傳統的編譯器現實地產生。

SSE3

[编辑]

於2004ねんずいちょPentium 4處理しょりてき改版かいはんPrescott核心かくしん推出。SSE3增加ぞうか特定とくていてき記憶きおくたいthread-handling指令しれいらいひさげますIntelちょう執行しっこういとぐちてき效能こうのうざい科學かがく計算けいさん方面ほうめん也有やゆう增强ぞうきょう

SSE4

[编辑]

2007ねん1がつ,Intel公開こうかい發表はっぴょう使用しよう其45奈米せいほど"PenrynえいPenryn_(microarchitecture)"あきらかた家族かぞくてきPC伺服。"Penryn"這一系列依據英代爾Coreほろ構之筆記ひっきがた電腦でんのう、桌上がた電腦でんのう伺服あきらかた家族かぞくてきだいごうしゅ正式せいしき发布时共有きょうゆう16款处じょりょういち款Intel Core 2 Extreme QX9650针对普通ふつうだいしきつくえ场外,其余てきそうかくXeon 5200系列けいれつよんかく5400系列けいれつふく务器处理基本きほんじょうPenrynまましMeromえいMerom_(microprocessor)これてき縮小しゅくしょうばんCore 2 Duo,さいじょう47じょうしんてきSSE4指令しれいしゅうとうがくがい配備はいび。SSE4指令しれいしゅうくび發表はっぴょう時間じかんため2006ねん9がつてきえいとく開發かいはつしゃ論壇ろんだん(IDF,Intel Developer Forum)。

另外,x86處理しょり製造せいぞうしょうしょうAMD也在該公司こうしK10構的Phenom處理しょりちゅう加入かにゅう4じょうしんてきSSE4A指令しれいしゅう注意ちゅうい,SSE4あずかSSE4A無法むほう彼此ひしけんよう

AVX

[编辑]

FMA

[编辑]

AES

[编辑]

SHA

[编辑]

じょうしき

[编辑]

じょうしきざい16-bitてきx86處理しょり

32-bitじょうしきざい32-bitある64-bitてきx86處理しょり

64-bitじょうしきざい64-bitてきx86處理しょり

x86汇编指令しれいlea,Load Effective Addressてき缩写,其优势是:

  • LEA指令しれい具有ぐゆう单时钟周,执行效率こうりつ很高。
  • CPU生成せいせい单元参与さんよ运算てき,而不ALU参与さんよ运算てき所以ゆえんざい流水りゅうすい线上かいあずか上下じょうげぶんてきさん术逻辑指れい产生流水りゅうすいしょう
  • INTEL指令しれい集中しゅうちゅう存在そんざい很多RISCつくえしょ具有ぐゆうてき三操作数算术运算指令,如像ARMてき"add r0,r1,r2",而LEA指令しれい恰好かっこう提供ていきょうりょうどう样的こうのう,以模拟“三元算术逻辑指令”。れい如:lea ebx ,[eax+edx]
  • ざい汇编语言ほどじょ设计ちゅうざい需要じゅよう取得しゅとく一个变量地址时,使用しようlea很方便びんてき。而mov指令しれい常常つねづね错,いん为在ほろMASM汇编语法ちゅう,labelvariable不同ふどうてき:addr不可ふかぜんこう引用いんよう,offset则能;addr以处局部きょくぶ变量而 offset则不能ふのう

x86暫存

[编辑]

16もと

[编辑]

Intel 80868088おこりゆう1416もと暫存。其中よん(AX, BX, CX, DX)通用つうよう目的もくてき(儘管ごと暫存ゆう附加ふか目的もくてき;舉個れいただゆうCX以被ようらいとうさくloop迴圈指令しれいてき計數けいすう。)まい暫存以被とうなり兩個りゃんこぶんひらきてきもとぐみそんいん此BXてき高位こういもと以被とうなりBH,低位ていいもとのり以當なりBL)。じょりょう這些暫存かえゆうよんだん暫存(CS、DS、SS、ES)。們用らいさんせい記憶きおくたいてき絕對ぜったいかえゆう兩個りゃんこ指標しひょう暫存(SP指向しこううずたかたたみてき底部ていぶ,BP以用らい指向しこううずたかたたみある記憶きおくたいてき其它地方ちほう)。兩個りゃんこ指標しひょう暫存(SIDI)以用らい指向しこう陣列じんれつてき內部。最後さいごゆう旗標はたじるし暫存包含ほうがん狀態じょうたい旗標はたじるしすすむ溢位結果けっかためれいとうとう)。以及IPようらい指向しこう目前もくぜん執行しっこう指令しれいてき

32もと

[编辑]

Intel 80386おこりよん通用つうよう暫存(EAX, EBX, ECX, EDX),它們較低てき16もと分別ふんべつ與原よはらほん16もとてき通用つうよう暫存(AX, BX, CX, DX)重疊ちょうじょう共用きょうよう指標しひょう暫存(EIP, EBP, ESP, ESI, EDI)。だん暫存じょりょう原本げんぽんてき(CS、DS、SS、ES),另外新そとしんぞう(FS、GS),ただしだん暫存ざい32もとしきあらため做為記憶きおくたいかたまりてき選擇せんたく暫存旗標はたじるし暫存擴展ため32もと,較低てき16もと與原よはらほんざい16もとしたてき旗標はたじるし暫存重疊ちょうじょう共用きょうよう

64もと

[编辑]

MMX暫存(MM0~MM7),它們分別ふんべつあずか浮點運算うんざん〈FP0~FP7〉あい重疊ちょうじょう所以ゆえんMMXあずか浮點運算うんざん不可ふか同時どうじ使用しよう必須ひっす透過とうかせつかわ選擇せんたくよう使用しよういちしゅ

AMD64
[编辑]

えいとくなんじ原本げんぽんやめけい決定けっていざい64もとてき世代せだい推出しんてきIA-64技術ぎじゅつてきItanium處理しょり產品さんぴんせんらいせっかえだいx86,ただし它與x86てき軟體天生あもうあいよういん此藉以各種かくしゅ形式けいしきらい執行しっこうx86てき軟體,过,效率こうりつじゅうふん低下ていか處理しょり本身ほんみ軟體移植いしょくてき成本なりもとなん以控せいいん此這計畫けいかく最終さいしゅうつげ吹。

AMDくだり32もとx86(あるたたえためIA-32つぶせてんため64もとなみ命名めいめいためx86-64あるHammer構,而後さらめいためAMD64構,なみ禁止きんし使用しようまえてき名字みょうじらい稱呼しょうこ這一[1]。以這技術ぎじゅつため基礎きそてきだい一個產品是单核心的OpteronAthlon 64處理しょり家族かぞくよし於AMDてき64もと處理しょり產品さんぴんせんくびさき进入场,且ほろ也不すなお为英だいなんじだいごうためYamhillてき64もとばんx86處理しょり开发だいさん不同ふどうてき64もと作業さぎょう系統けいとうえいだいしかせりさい纳AMD64構且增加ぞうかぼう些新てき擴充かくじゅういた自己じこてき產品さんぴん命名めいめいためEM64T構(顯然けんぜん們不そう承認しょうにん這些指令しれいしゅう它的主要しゅようたい),EM64T後來こうらいえいだいしか正式せいしきさらめいためIntel 64

這個構也しょうため 64げんたくてん構,そくx64,たとえよん通用つうよう暫存(RAX, RBX, RCX, RDX)よし32もとてき(EAX, EBX, ECX, EDX)64もと擴展而來,相應そうおうてきかえゆう 指標しひょう暫存(RIP, RBP, RSP, RSI, RDI),以及增加ぞうかはち通用つうよう暫存(R8~R15)とうとう。 這些資源しげんただざいx64處理しょりてき64もとしき使用しようざいようらい支援しえんx86軟體てき遺留いりゅうしきしょうようしきちゅう不可ふかてき

128もと

[编辑]

SSEおこりSIMDてき暫存XMM0 - XMM15.

256もと

[编辑]

SIMD registers YMM0 - YMM15.

512もと

[编辑]

SIMD registers ZMM0 - ZMM31.

暫存結構けっこう

[编辑]
通用つうよう暫存(A, B, C and D)
64 56 48 40 32 24 16 8
R?X
E?X
?X
?H ?L
ざい64もとしきしんぞうてき通用つうよう暫存(R8, R9, R10, R11, R12, R13, R14, R15)
64 56 48 40 32 24 16 8
?
?D
?W
?B
だん暫存(C, D, S, E, F and G)
16 8
?S
指標しひょう暫存(S and B)
64 56 48 40 32 24 16 8
R?P
E?P
?P
?PL

Note: The ?PL registers are only available in 64-bit mode.

索引さくいん暫存(S and D)
64 56 48 40 32 24 16 8
R?I
E?I
?I
?IL

Note: The ?IL registers are only available in 64-bit mode.

指令しれい指標しひょう暫存(I)
64 56 48 40 32 24 16 8
RIP
EIP
IP


きょなずらえ

[编辑]

Intel CPUてきx86きょなずらえ技術ぎじゅつゆうVT-x、VT-dとう。AMD CPUてきx86きょなずらえ技術ぎじゅつゆうAMD-Vとう

x86指令しれい格式かくしき

[编辑]

x86あずかx86-64指令しれいしゅうてき指令しれいてき格式かくしき为:

指令しれいぜん 指令しれい ModR/M SIB へんうつり 直接ちょくせつすう
Instruction Prefixes Opcode Displacement Immediate
选。
最多さいた4个单节前缀。
にんなん顺序ひとし
单字节、そう节、さん 按需。
0-2:R/M
3-5:Reg/Opcode
6-7:Mod
按需。
0-2:Base
3-5:Index
6-7:Scale
0、1、2、4节长 0、1、2、4节长

指令しれいぜん

[编辑]

ぶん为4组,まい组用1个字节编码。まい组在指令しれいちゅういたり指定してい1个前缀值。4组的顺序任意にんい

  • だい1组锁あずかじゅう复(Lock and repeat)
    • 锁(LOCK)编码为:F0H。よう于互斥访问共とおるないそんてき操作そうさ
    • れい时重复(REPNE/REPNZ)编码为:F2H。よう于字くし操作そうさ指令しれい
    • 为零时重复(REP/REPE/REPZ)编码为:F3H。よう于字くし操作そうさ指令しれい
  • だい2组
    • だんくつがえ盖(Segment override):CS、SS、DS、ES、FS、GSてきだんくつがえ盖前缀的编码ぶん别是2EH、36H、3EH、26H、64H、65H.
    • ぶんささえ提示ていじ(Branch hints),よう条件じょうけんぶんささえ指令しれいJcc提示ていじぶんささえ发生编码为2EH;提示ていじぶんささえ发生编码为3EH。
  • だい3组操作そうさすう长度くつがえ盖(Operand-size override)编码为66H。よう于在16あずか32操作そうさすうきり换。
  • だい4组地长度くつがえ盖(Address-size override)编码为67H.よう于在16あずか32位地いちきり换。

指令しれい

[编辑]

长度为1、2ある3节,此外ModR/Mちゅう可能かのうゆう3。对于そう节指れい码或三字节指令码,其中てきだい1个字节为0FH,よう于与指令しれいぜん区分くぶん

ModR/MあずかSIB

[编辑]

许多指令しれいてきないそん操作そうさすう需要じゅよう使用しようModR/M节作为寻しき说明。其中てきmodあずかr/m组合,共有きょうゆう32个值,表示ひょうじ8个寄そんあずか24种寻しき。reg/opcode表示ひょうじよせそんごうあるもの额外てき3指令しれい码,其具体ぐたい含义依赖基本きほん指令しれい码。ModあずかR/Mてき5表示ひょうじてきだいいち操作そうさすうみなもとあずか目的もくてき操作そうさすうちゅう寻址方式ほうしきさら复杂てき操作そうさすう指令しれい码中てき方向ほうこう”direction bit(d)给出げんある目的もくてき操作そうさすう哪个だいいち操作そうさすうてき寻址方式ほうしき如下:

寻址方式ほうしき Mod R/M
[EAX] 00 000
[ECX] 001
[EDX] 002
[EBX] 003
[--][--] 004
disp32 005
[ESI] 006
[EDI] 007
[EAX]+disp8 01 000
[ECX]+disp8 001
[EDX]+disp8 002
[EBX]+disp8 003
[--][--]+disp8 004
[EBP]+disp8 005
[ESI]+disp8 006
[EDI]+disp8 007
[EAX]+disp32 10 000
[ECX]+disp32 001
[EDX]+disp32 002
[EBX]+disp32 003
[--][--]+disp32 004
[EBP]+disp32 005
[ESI]+disp32 006
[EDI]+disp32 007
EAX/AX/AL/MM0/XMM0 11 000
ECX/CX/CL/MM/XMM1 001
EDX/DX/DL/MM2/XMM2 002
EBX/BX/BL/MM3/XMM3 003
ESP/SP/AH/MM4/XMM4 004
EBP/BP/CH/MM5/XMM5 005
ESI/SI/DH/MM6/XMM6 006
EDI/DI/BH/MM7/XMM7 007
1.[--][--]表示ひょうじずいきさきてきSIB节指あかり寻址方式ほうしき
2.Mod为11B时,表示ひょうじよせそん操作そうさすう。对于R/Mてきまい个值,すえ指令しれい码与操作そうさすう长度属性ぞくせい确定具体ぐたいてきよせそんごう
3.とう指令しれい需要じゅようだい2操作そうさすう时,ゆかりReg/Opcodeてき3给出。だい2操作そうさすうただのうよせそん操作そうさすうよせそんてき指定してい方式ほうしきあずかMod为11B时指定していさく为第1操作そうさすうてきよせそんてき方式ほうしき完全かんぜんしょうどう

ぼう些ModR/M表示ひょうじてき寻找しき需要じゅようSIB节来补充寻址方式ほうしき。scale表示ひょうじ比例ひれいけいすう;index表示ひょうじ变址よせそんごう;base表示ひょうじもとよせそんごう使用しようscaleあずかindexてき5じょう比例ひれい变址よせそん如下:

比例ひれい变址 Scale Index
[EAX] 00 000
[ECX] 001
[EDX] 002
[EBX] 003
004
[EBP] 005
[ESI] 006
[EDI] 007
[EAX*2] 01 000
[ECX*2] 001
[EDX*2] 002
[EBX*2] 003
004
[EBP*2] 005
[ESI*2] 006
[EDI*2] 007
[EAX*4] 10 000
[ECX*4] 001
[EDX*4] 002
[EBX*4] 003
004
[EBP*4] 005
[ESI*4] 006
[EDI*4] 007
[EAX*8] 11 000
[ECX*8] 001
[EDX*8] 002
[EBX*8] 003
004
[EBP*8] 005
[ESI*8] 006
[EDI*8] 007

3base表示ひょうじてきもとよせそんごうてい义如

EAX ECX EDX EBX ESP [*] ESI EDI
000 001 002 003 004 005 006 007
[*]ゆう两种含义:1.如果Mod为00B,则[scaled index] + disp32,そくぼつゆうもとよせそん
2.如果Mod为01Bある10B,表示ひょうじもとよせそん为EBP。

ざい汇编ほどじょ设计ちゅう一般いっぱんだい1操作そうさすうてき寻址方式ほうしき总结为如8种:

寻址方式ほうしき 英文えいぶん术语 举例
たてそくかず)寻址 immediate addressing mov EAX, 01F2H
よせそん寻址 register addressing mov EAX, ESI
直接ちょくせつ寻址 direct addressing mov EAX, DWORD PTR [1FFA00H]
よせそん间接寻址 register indirect addressing mov EAX, DWORD PTR [EBX]
もと变址寻址 base-plus-index addressing mov EAX, DWORD PTR [EBX+ESI]
よせそんしょう对寻
あるもとしょう对寻
register relative addressing mov EAX, DWORD PTR [EDI+01F4H]
もとしょう对加变址寻址 base relative-plus-index addressing mov EAX, DWORD PTR 01F4H[EDI+EBX]
比例ひれい变址寻址 scaled-index addressing mov EAX, DWORD PTR 01F4H[EDI*8+EBX]

综合指令しれい格式かくしきちゅうてきModR/MあずかSIB两个节的语义规定,指令しれいてきだい1操作そうさすうてき寻址方式ほうしき总结为4种物理ぶつり实现:

  • たてそくすう表示ひょうじざい指令しれいてきたてそくすう部分ぶぶん包括ほうかつりょう直接ちょくせつ寻址,そくたてそくすうさく为内そんてき
  • よせそん操作そうさすう:Mod为11B,すえR/B部分ぶぶんてき值、指令しれい码、操作そうさすう长度属性ぞくせい,确定具体ぐたいてきよせそんごう
  • もとしょう对寻そく[Reg+disp8あるdisp32]。包括ほうかつりょうよせそん间接寻址。这种じょう况计さんだい1操作そうさすう使用しようりょう1个寄そん
  • もと比例ひれい变址てきしょう对寻そく[BaseReg+IndexReg*scale+disp8あるdisp32]。这种じょう况计さんだい1操作そうさすう使用しようりょう2个寄そん

くらいうつあずかたてそくすう

[编辑]

ぼう些寻方式ほうしき需要じゅよう给出うつり值。ゆう些指れい需要じゅよう出立しゅったつそくすうさく操作そうさすう

生產せいさんしょう

[编辑]

目前もくぜん仍在設計せっけい生產せいさんなみ販賣はんばいx86處理しょりてき公司こうし包括ほうかつ

曾經設計せっけい生產せいさんなみ販賣はんばいx86處理しょりただしげんやめ退出たいしゅつx86處理しょり市場いちばてき公司こうし包括ほうかつ

参考さんこう文献ぶんけん

[编辑]
  1. ^ Rust, Adamson. AMD bans use of Hammer word, X86-64. The Inquirer. 2003-04-24 [2010-10-30]. (原始げんし内容ないようそん档于2009-10-12). 

まいり

[编辑]