x64
こ の ký sự はKiểm chứng khả năngなTham khảo văn hiến や xuất xứが toàn く kỳ されていないか, không thập phần です.(2023 năm 2 nguyệt) |
x64またはx86-64[Chú 釈 1] とは,x86アーキテクチャを64ビットに拡 trương したMệnh lệnh セットアーキテクチャ.
Thật tế には,AMDが phát biểu したAMD64Mệnh lệnh セット, 続けてインテルが chọn dùng したIntel 64Mệnh lệnh セット ( かつてIA-32eまたはEM64Tと hô ばれていた ) などを hàm む, các xã の AMD64 trao đổi mệnh lệnh セット の tổng xưng である. x86 mệnh lệnh セットと trao đổi tính を cầm っていることから, quảng nghĩa にはx86にx64を hàm む trường hợp がある.
なお, インテルはIntel 64 の hắn にIA-64の danh trước で64ビット mệnh lệnh セットアーキテクチャを khai phát ・ triển khai していたが, これは toàn く の vật gì khác であり, x64 mệnh lệnh セット, x86 mệnh lệnh セット の いずれとも trao đổi tính がない.
2023 năm 4 nguyệt にはIntelが, x64 のLegacyモードを thiết り xá てることによりLongモード の みにしてサブセット hóa することで đường về をシンプルにして tính năng hướng về phía trước するうえで vấn đề になっているボトルネックを giải tiêu することを mục tiêu にしたX86-Sの đề án の công văn を công biểu した[1].もっとも, tư tưởng が phát biểu されただけで, cụ thể な chế phẩm hóa に quan する tình báo は phát biểu されていない.
2023 năm 7 nguyệt にはIntelが, x64にr16-r31 の 16 bổn の レジスタを thêm vào することを trung tâm としたAPXを phát biểu した[2].APX đối ứng の CPUでもx64 đối ứng の アプリケーションやOSは động tác するが, nghịch にAPX đối ứng の OSやアプリケーションはx64 đối ứng の CPUでは động tác しない. レジスタを thêm vào したことでレジスタへ の ロードやレジスタからメモリへ の ストア の gánh nặng が10% trở lên giảm ると chờ mong され tính năng hướng về phía trước ができ, それに đối して đường về の thêm vào は thiếu なくて tế むとされている. そ の ため, đối ứng するCPUとOSとコンパイラがあれば, スタックサイズを điều chỉnh してリコンパイルするだけで tính năng hướng về phía trước する. Sau này, 32bit bản の x86が64bit の x64へと chuyển dời していったように, x64からAPXにアーキテクチャを thiết り thế えていくことが kế hoạch されている. Khai phát hoàn cảnh としてIntelが khai phát エミュレータsde (Software Development Emulator)を cung cấp しており, Windowsに quan しては chưa phát biểu であるも の の, すでにGCCやLLVM CLangといったコンパイラやLinuxなどでソフトウェア sườn の khai phát が bắt đầu され, đã に lúc đầu バージョンで の động tác が xác nhận されている. (LLVM CLangについては, ver.18.1-rc1でAVX10とAPXに đối ứng してリリース tế み). Mấy năm trong vòng に chế phẩm hóa される dư định になっている.
AMD64
Biên tậpĐại nguyên の AMD64は, AMD のOpteron,Athlon 64,Turion 64など lúc ban đầu に thật trang されたK8マイクロアーキテクチャ[3][4]とそ の sau 継 chế phẩm の Ryzenなどに thật trang されている.
Khai phát kinh vĩ
Biên tậpPC dùng アーキテクチャとして quảng く phổ cập したx86は,Chất bán dẫnの chế tạo kỹ thuật とマイクロアーキテクチャの cách tân とともに tính năng の hướng về phía trước を続け, サーバやワークステーションといったエントリークラス の エンタープライズ thị trường でも quảng く chịu け nhập れられるに đến った. しかし,IA-32の tính năng hướng về phía trước によって tự xã khai phát の 64ビットアーキテクチャであるIA-64と の cạnh hợp を trì hoãn したインテルは, x86 の 拡 trương を32ビットアーキテクチャ の phạm 囲に lưu めてIA-64と の tê み phân けを đồ った. これに đối し, thị trường からは quảng く phổ cập したIA-32アーキテクチャと trao đổi tính を bảo ちつつ64ビットに拡 trương した, よりコストパフォーマンスに ưu れたエンタープライズ chế phẩm の lên sân khấu が đãi ち vọng まれていた. Cao thâu ích を vọng めるエンタープライズ thị trường へ の ra vào を đồ っていたAMDはそうした yêu cầu に ứng えて, x86 の 64ビット拡 trương アーキテクチャとして, 従 tới の IA-32 の ソフトウェアも lợi dụng が khả năng な mệnh lệnh セットとしてx86-64を phát biểu した[5].そ の sau の thật tế の chế phẩm phát biểu でAMD64と đổi tên された[6].こ の kế hoạch は, 2000 năm 8 nguyệt に phát biểu され, lúc ban đầu の プロセッサは2003 năm 4 nguyệt に ra hà された[3].
Sĩ dạng
Biên tập64ビット のPhiếm dùng レジスタを cầm ち,32ビットの x86より quảng いアドレス không gianをサポートするため, đại きいデータをより dễ dàng に tráp うことができる. またx64は32ビットの プログラムコードと hoàn toàn なPhía sau trao đổiTính を cầm つ[7].Toàn て の 32ビット の mệnh lệnh セットが thật trang されているため, 32ビット の x86Thật hành ファイルは, trao đổi tính あるいは tính năng の tổn thất なしに động tác させられる[8].ただし,アプリケーションソフトウェアがx64 の tính năng を sống かすには, x64ネイティブコードを xuất lực するコンパイラを dùng いることが tất yếu である.
アーキテクチャ の đặc trưng
Biên tậpAMDがx86 mệnh lệnh セットを64ビット hóa する tế に sử った の は, x86 mệnh lệnh の lúc đầu にプリフィックスをつけるという thủ pháp である (REXプリフィックスと hô ばれる ). プリフィックスを sử う の は, インテルが16ビットCPU80286を32ビット hóa (80386)するときに sử った thủ pháp でもある. DEC Alphaの thiết kế giả の một ngườiダーク・メイヤーが AMD64 sĩ dạng の tác thành に quan わり, bỉ をはじめとするDECXuất thân giả の kinh nghiệm がこ の プロジェクトに sống かされた. Đặc bút すべき điểm は dưới の ようなも の である.
- レジスタの thêm vào と拡 trương
- Phiếm dùng レジスタ (GPR) số はIA-32 の 8 bổn (EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP) に càng にR8〜R15 の 8 bổn を thêm vào して16 bổn に tăng やされ, các レジスタ の ビット phúc も32ビットから64ビットに拡 trương された. IA-32は phiếm dùng レジスタが thiếu ないことからコンパイラによる nhất thích hóa に giới hạn があり, これが nhất も đại きな thiếu điểm とされた. AMD64に nhất thích hóa されたアプリケーションでは, レジスタ bổn số の tăng thêm によって tính năng hướng về phía trước が thấy 込まれ, đặc に thâm いループを cầm った tính toán chủ thể の ソフトウェアでそ の khuynh hướng が cường いと thấy 込まれる. さらに128ビット の XMMレジスタ の bổn số も8 bổn から16 bổn に tăng やされた (Streaming SIMDMệnh lệnh で sử われる ).Thở ra quy ướcにおいても, dẫn số độ しがIA-32では nguyên tắc としてスタック の みを sử dụng していた の が một bộ の dẫn số についてレジスタ độ しに変 càng されたり, thở ra に tế して một bộ の レジスタ の thượng thư きを dung nhận するなど hiệu suất が thượng がっている.[9]
- アドレス không gian の 拡 trương
- AMD64アーキテクチャでは, lúc đầu の sĩ dạng で48ビット(仮 tưởng アドレス không gian サイズで256テラバイト), thêm vào cơ năng で57ビット(仮 tưởng アドレス không gian サイズで512ペタバイト) の 仮 tưởng アドレス phúc を cầm つ. IA-32アーキテクチャにおいて lúc đầu の プロセッサでは, 仮 tưởng アドレス không gian は32ビットで biểu hiện できる4GiBに chế ước され,Pentium ProLấy hàng の thật trang で thêm vào されたVật lý アドレス拡 trươngCơ năng を sử dụng することで64GiB の vật lý メモリを tiếp 続できるが, そ の trường hợp も仮 tưởng アドレス phúc は quảng がらず, 仮 tưởng アドレス không gian はやはり4GiBに chế ước された. 32bit bản Windowsシリーズにおいては, OS の sĩ dạng でアプリケーションが lợi dụng khả năng なメモリはおよそ3GiBに chế ước される[10].これに đối しAMD64 の Longモードでは, IA-32 の vật lý アドレス拡 trương をベースに, 仮 tưởng アドレス không gian をまず48ビットへ拡 trương し( hiện trạng vật lý アドレス không gian は52ビット), tương lai の 拡 trương で4エクサバイトまで の 仮 tưởng アドレス không gian をサポートできるようになっている.
- Quan liền:2 tiến chắp đầu từ
- RIP tương đối データアクセス
- プログラムカウンタ (RIP) tương đối でデータにアクセスすることができ,リロケータブルな cùng sở hữu ライブラリ の コードを tác thành できる. また, cùng sở hữu ライブラリを仮 tưởng アドレス không gian の どこにでも phối trí することができる (Vị trí độc lập コード).
- SSE mệnh lệnh
- AMD64アーキテクチャでは minh xác にインテル のSSEとSSE2を cơ bản mệnh lệnh セットに tổ み込んでいる. SSE2はx87 の 80ビット di động số lẻ số から 32ビット/64ビット の di động số lẻ số に trí き đổi えたも の である. SSE/SSE2 mệnh lệnh セットは thêm vào の 8 bổn の XMMレジスタを tráp えるように拡 trương された. SSEとSSE2がAMD64 mệnh lệnh セットに tổ み込まれており, それが従 tới の x87FPUやMMXや3DNow!の cơ năng をカバーする. x64 bản Windowsで の 64ビットプログラムでは, FPU/MMXレジスタをコンテキストスイッチの tế に bảo tồn しないようにすると tổn されたが, thật tế には bảo tồn されるようになっている[11].
- No-Executeビット
- NXビット(ページテーブルエントリ の ビット63)は仮 tưởng アドレス không gian の ど の ページが thật hành khả năng か, thật biết không nhưng かを chỉ định することができる. NXビットがセットされたページにあるコードを thật hành しようとするとメモリアクセス trái với となり, thật hành できない. これは, リードオンリーページへ の thư き込みを thật hành しようとしてもできないことと tựa ている. No-Execute cơ năng は, ウイルスなどがバッファーオーバランなどを sử dụng して, オペレーティングシステムを thừa っ lấy ろうとすることを khó しくする.
- Cùng loại の cơ năng は, セグメント の thuộc tính として80286 lấy hàng の プロセッサーに tồn tại している. しかし, cận đại なオペレーティングシステムではセグメント cơ năng は cổ いも の と thấy なされ, セグメント の ベースを0, リミットを4Gバイト(32ビットOS の trường hợp )に giả thiết することにより, thật chất にセグメントを sử dụng していない.
- AMDはリニアアドレッシングモードでNo-Execute cơ năng を thật trang した lúc ban đầu の x86ベンダーである. No-Execute cơ năng は, PAEを có hiệu にすれば, 32ビットOSでも sử dụng khả năng である.
- Cổ い cơ năng の trừ bỏ
- x86アーキテクチャーにある nhiều く の システムプログラミング cơ năng は cận đại なオペレーティングシステムでは sử dụng されておらず, それら cổ い cơ năng は, AMD64 の Longモードにはない. それらは, セグメントアドレッシング,タスクステートセグメントを sử dụng したタスクスイッチ,仮 tưởng 86モードなどである ( ただし, FS, GSセグメントは, オペレーティングシステム cấu tạo thể へ の エクストラベースポインタとして tàn されている ). これら の cổ い cơ năng は, Legacyモードでは vẫn như cũ として, hoàn toàn に thật trang されている の で, これまで の 32ビット, 16ビットオペレーティングシステムは, tu chỉnh なしにx64プロセッサー thượng で động tác する.
Động tác モード
Biên tậpĐộng tác モード | Tất yếu なOS | Lại コンパイル の sự tất yếu | アドレスサイズ の đã định trị | オペランドサイズ の đã định trị | レジスタ の 拡 trương | Điển hình な phiếm dùng レジスタ の phúc | |
---|---|---|---|---|---|---|---|
Longモード | 64ビット モード | Tân しい 64ビットOS | Tất yếu | 64 | 32 | Có り | 64 |
Trao đổi モード | Không cần | 32 | 32 | なし | 32 | ||
16 | 16 | 16 | |||||
Legacyモード | プロテクト モード | 従 tới の 16/32ビットOS | Không cần | 32 | 32 | なし | 32 |
16 | 16 | ||||||
仮 tưởng 8086 モード | 16 | 16 | 16 | ||||
リアル モード | 従 tới の 16ビットOS |
こ の アーキテクチャは, LongモードとLegacyモードという nhị つ の động tác モードを cầm つ.
Longモード
Biên tậpAMD64で拡 trương された bộ phận に đối ứng する động tác モードである. これにはネイティブ の 64ビットモードと trao đổi の ため の 32ビットモードが hàm まれる.IA-32で の マイナーな động tác モードはサポートされない. こ の モードは64ビット の OSで sử dụng される.
Cơ bản な mệnh lệnh セットは cùng じな の で, x86コードを thật hành しても tính năng が thấp hèn することはない. インテル のIA-64では32ビットコード の tính năng thấp hèn が vấn đề となったが, これは mệnh lệnh セットが toàn く vi うためにエミュレート thật hành していたためである.
Longモードを sử うと, 64ビットOSは 32ビットアプリケーションと64ビットアプリケーションを song hành して thật hành できる. また, AMD64は 16ビット の アプリケーションも thật hành することができる. しかし, Windows の 16ビットアプリケーション (Win16) の サポートに thiếu かせない仮 tưởng 86モードは sử dụng できないため, マイクロソフトはWOW64サブシステムで の 16ビットアプリケーション の thật hành cơ năng の thật trang を đoạn niệm し,Windows XPProfessional x64 Edition で の Win16アプリケーション thật hành をサポートしていない. これはWindows VistaLấy hàng の x64 bản にも dẫn き継がれる chế hạn となっている.
Legacyモード
Biên tậpこ の モードは, 16ビットOS (MS-DOS-Windows 3.1Chờ ) や32ビットOS (Windows 95- Windows XP chờ ) で sử dụng される. こ の モードにおいて, プロセッサは cơ bản にx86 の 32ビットプロセッサとして chấn る vũ い, 16ビットと32ビット の コード の みが thật hành khả năng である. Legacyモードは, 仮 tưởng アドレス không gian の 4GB chế hạn の ような32ビット の 仮 tưởng アドレッシング thượng の hạn mức cao nhất がある[7].64ビット の プログラムは, Legacyモードで khởi động することができない.
AMD64を chọn dùng するCPU
Biên tậpThứ の プロセッサは, AMD64を thật trang する:
- AMDAthlon 64
- AMDAthlon 64 X2
- AMDAthlon 64 FX
- AMDAthlon II( chở khách コア số などから, 'X2', 'X3', 'X4', XLTモデルに phân かれる )
- AMDOpteron
- AMDTurion 64
- AMDTurion 64 X2
- AMDSempron( "Palermo" E6 ステッピングと, "Manila" lấy hàng の toàn モデル )
- AMDPhenom( chở khách コア số から, 'X3', 'X4'に phân かれる )
- AMDPhenom II( chở khách コア số から, 'X2', 'X3', 'X4' 'X6'に phân かれる )
- AMDBulldozer (マイクロアーキテクチャ)FX
- AMDAPU
- AMDRyzen
- AMDEPYC
Intel 64
Biên tậpIntel 64は,IA-32アーキテクチャ の64ビット拡 trương であり,インテルによるAMD64 の thật trang である.
Khai phát kinh vĩ
Biên tập従 tới, AMDはインテルがオリジナルであるx86 の trao đổi プロセッサを khai phát ・ sinh sản していた. しかし, x64では lập trường が nghịch 転し, インテルはAMDが khai phát したAMD64アーキテクチャ ( x86プロセッサ の 64ビット拡 trương アーキテクチャ ) を chọn dùng した.
Lúc trước プロジェクトは,Yamhill[12]という khai phátコードネームで thủy まった. こ の プロジェクト の tồn tại を phủ định し続けて mấy năm が kinh ち, 2004 năm 2 nguyệt のIDFで, インテルはプロジェクトが tiến hành trung であることを phát biểu した. インテル の lúc ấy の hội trưởng クレイグ・バレットは, これが quan trọng な cơ mật の một つであったことを nhận めた[13][14].
インテルは, AMD64 trao đổi mệnh lệnh セット の tên を số hồi 変 càng した.IDFで dùng いられた danh trước はCT(Clackamas Technology[15]), そ の số chu gian sau にIA-32e(IA-32 extensions)と hô xưng を変 càng し, 2004 năm 4 nguyệt にはこれをEM64T(Extended Memory 64 Technology)という danh trước で công thức に phát biểu した. Chế phẩm リリース sau の 2006 năm 7 nguyệt 27 ngày には, インテルはEM64TをIntel 64と đổi tên している[16].
Intel 64を chọn dùng するCPU
Biên tậpインテルで lúc ban đầu にIntel 64を thật trang した の は,Noconaというコード danh で2004 năm 6 nguyệt に phát biểu されたマルチソケット のXeonプロセッサである. Xeonはデスクトップ hướng けPentium 4をベースにしているため, cùng lúc の Pentium 4もIntel 64を thật trang しているはずだが,ハイパースレッディング・テクノロジーの ときと cùng dạng, こ の cơ năng はPrescottでは lúc ban đầu は động かないようになっていた. これはおそらく lúc đầu の thật trang が hoàn toàn ではなかったためで, インテルはそ の sau Intel 64を sử dụng khả năng にしたPrescott の E0バージョンをmodel Fとして buôn bán し thủy めた. こ の バージョンではAMD64 のNXビットに tương đương する cơ năng がIntel 64でサポートされた. インテルではこれをeXecute Disable(XD)ビットと hô んでいる. こ の cơ năng はすぐにNocona (XeonHệ liệt ) にも thật trang された. 8xx/6xx/5x6/5x1/3x6/3x1シリーズ の CPUは toàn てIntel 64が sử dụng khả năng になった. また,Intel Core 2・Intel AtomでもIntel 64が chọn dùng された.
Intel 64を thật trang しているCPUは dưới の も の がある.
- Xeon(Nocona lấy hàng, Sossaman trừ, Xeon MPについてはCranford/Potomac lấy hàng )
- Intel Core 2
- Intel Core i9
- Intel Core i7
- Intel Core i5
- Intel Core i3
- Intel Core M
- Intel Core Ultra 9
- Intel Core Ultra 7
- Intel Core Ultra 5
- Intel Core 7
- Intel Core 5
- Intel Core 3
- Pentium Dual-Core
- Intel Atom(model 230/330,N450/D510/D410)
- Pentium D
- Pentium 4(Prescottはmodel F lấy hàng, model 521/531/541/551/561/571)
- Pentium Extreme Edition
- Celeron D(model 326/331/336/341/346/351/355/356)
- Celeron Dual-Core
- Celeron M(model 520/530)
- Celeron 200シリーズ(model 220)
- Celeron 400シリーズ
- Celeron 500シリーズ
- Intel Processor Uシリーズ ( デスクトップ hướng け chuyên dùng )
- Intel Processor Nシリーズ ( モバイル hướng け/ミニデスクトップ hướng け kiêm dùng )
AMD64とIntel 64 の sai biệt
Biên tậpAMD64とIntel 64は, ほとんど cùng じである[17]が, chỉ かながら vi いはある. これら の vi いはオペレーティングシステム, コンパイラなど の khai phát giả の みが ý thức しなければならない. アプリケーションプログラム の khai phát giả がこれら の vi いを ý thức する tất yếu は, ほぼない[18].
Sai biệt
Biên tập- Intel 64では, SYSCALL, SYSRET mệnh lệnh は64ビットモードにしかない. SYSENTER, SYSEXIT mệnh lệnh は32ビット, 64ビット の lạng phương にある.
- AMD64では, SYSCALL, SYSRET mệnh lệnh は32ビット, 64ビット の lạng phương にあるが, SYSENTER, SYSEXIT mệnh lệnh は32ビットモードにしかない.
- Intel 64には, AMD64で định nghĩa されたSYSCFG, TOP_MEM, TOP_MEM2がMSR(model-specific registers)にない.
- Intel 64では, 64ビットモードでニア phân kỳ mệnh lệnh に66h ( オペランドサイズ プリフィックス ) を phó けた trường hợp サポート ngoại となる. AMD64では, sĩ dạng thư thông り16ビットオペランドとして thật hành される.
- BSF, BSR mệnh lệnh はソースが0 の trường hợp, Intel 64では nguyên 々 の x86と cùng dạng にデスティネーションは không chừng (undefined)であるが, AMD64はデスティネーションを変 càng しない.
- ハードウェア仮 tưởng hóa chi viện cơ năng の Intel VT-xとAMD-Vは trao đổi tính がない. 仮 tưởng hóa ソフトウェアはそれぞれに đối ứng する tất yếu がある.
- Second Level Address TranslationCơ năng の Intel EPTとAMD RVIは trao đổi tính がない. 仮 tưởng hóa ソフトウェアはそれぞれに đối ứng する tất yếu がある.
Trước kia あった sai biệt
Biên tập- AMD64には, nguyên 々はCMPXCHG16B mệnh lệnh はなかった. こ の mệnh lệnh は16バイト(128ビット) の メモリ lĩnh vực を số nhiều の CPUコアでBài hắn に cùng sở hữuすることに sử dụng される. こ の mệnh lệnh はWindowsで16TB trở lên の 仮 tưởng メモリを sử うために tất yếu である. Socket AM2 lấy hàng の AMD64で đối ứng[19].
- Lúc đầu の AMD64, Intel 64は, 64ビットモードでLAHF, SAHF mệnh lệnh をサポートしていない. こ の 2つ の mệnh lệnh はAHレジスタとフラグ gian の 転 toi mạng lệnh で, nguyên 々は8ビットCPUである8080の プログラムを8086へ nhổ trồng する の を dễ dàng にするために cung cấp されていた[20].64ビットモードでは, sử い nói があまりない mệnh lệnh の ように thấy える. しかし, PUSH/POP mệnh lệnh の tổ み hợp わせと tương đối して, メモリにアクセスせず cao tốc にフラグをコピーできるため, VMwareなど の 仮 tưởng hóa ソフトウェアがこ の 2つ の mệnh lệnh に sống nhờ vào nhau している[21].また,x87の ステータスワードをフラグにコピーすることにも sử dụng される.
- Lúc đầu の Intel 64には, PREFETCHW mệnh lệnh はなかった[22].こ の mệnh lệnh は, nguyên 々はAMD の3DNow!で dẫn vào されたキャッシュ の nhất thích hóa mệnh lệnh である. Pentium 4 のCedarMillコアからIntel 64はこ の mệnh lệnh を単にNOP(No Operation)として処 lý するようになった[23].NOPとして処 lý するIntel 64でもMicrosoft xã の Coreinfoツール[24]は, PREFETCHWに đối ứng と tỏ vẻ する. 2013 năm のSilvermont,2014 năm のBroadwellよりPREFETCHW mệnh lệnh に chính thức に đối ứng している.
( thượng nhớ 3つは,Windows 8.1,Windows 10の 64ビット bản が lúc đầu の AMD64, Intel 64CPUにインストールできない chế ước hạng mục công việc となる[25][26]) - Lúc đầu の Intel 64は, XDビット ( AMD64におけるNXビット ) をサポートしていない. したがってWindows 8 ( 32ビット bản, 64ビット bản とも ) がインストールできない chế ước hạng mục công việc となる.
そ の hắn
Biên tập- POPFQ mệnh lệnh には, REXプリフィックスは tất yếu ない. Intel xã の ドキュメントにはこ の ことが chính しく ghi lại されていなかった.
- Cùng じオペコードに đối するMOVDとMOVQ の cắt り đương てがIntel 64 の ドキュメントとAMD64 の ドキュメントで dị なる. Một phương の ドキュメント thông り の アセンブリソースがアセンブルできない[27],Nghịch アセンブル kết quả が tưởng định と dị なる[28]といったことが khởi こり đến る.
Mệnh lệnh セット
Biên tập- REXプリフィックス
- Thứ の ような mệnh lệnh にはREXプリフィックスを sử dụng する.
- 64ビット の オペランドサイズ の chỉ định
- Tân しいR8〜R15レジスタ, thêm vào されたXMMレジスタなどへ の アクセス
- 64ビットレジスタであるRSP, RBP, RDI, RSI の ビット0から7を, 8ビットレジスタSPL, BPL, DIL, SILとしてアクセス. Một phương でREXプリフィックスを phó けると8ビットレジスタとして AH, BH, CH, DHにアクセスできない. これにより thẳng giao tính が cao まった.
- また, dưới の mệnh lệnh は, デフォルトで64ビット の オペランドサイズであり, REXプリフィックスを tất yếu としない.
- ニア phân kỳ mệnh lệnh
- PUSH, POP mệnh lệnh
- ENTER, LEAVE mệnh lệnh
- Ám mặc の ゼロ拡 trương
- 32ビットレジスタにデータを thư き込むとそ の phiếm dùng レジスタ の thượng vị 32ビット(ビット32から63)はゼロになる.
- これは, コードサイズ の nhất thích hóa に sử dụng できる.
- Một phương, 16ビットレジスタや8ビットレジスタにデータを thư き込んでも, こ の ゼロ拡 trương は khởi きない.
- NOP(No Operation:オペコード90h) mệnh lệnh は, かつてはXCHG EAX, EAXと chờ 価であったが[29]64ビットモードではこ の mệnh lệnh を đặc biệt に tráp い, ám mặc の ゼロ拡 trương を áp dụng せずRAXレジスタは変 hóa しない.
- CMOV(Conditional Move) mệnh lệnh では, 64ビットモードでオペランドが32ビット の trường hợp, điều kiện が ngụy でもデスティネーションレジスタ の thượng vị 32ビットはゼロになる.
- Tức trị
- 64ビットモードであっても, tức trị (Immediate value)は, 32ビット の ままであり, 64ビットに ký hiệu 拡 trương されて sử dụng される. ただし, MOV mệnh lệnh の み64ビット の tức trị が sử dụng できる.
- 変 vị
- 64ビットモードであっても, 変 vị (displacement)は, 32ビット の ままであり, 64ビットに ký hiệu 拡 trương されて sử dụng される. ただし, RAXレジスタに đối して の MOV mệnh lệnh の み64ビット の 変 vị が sử dụng できる.
- 64ビットモードで廃 ngăn されたx86 mệnh lệnh
- Dưới の x86 mệnh lệnh は64ビットモードでは廃 ngăn されたため, 64ビットモードで thật hành すると bất chính mệnh lệnh ngoại lệ が phát sinh する.
- AAA, AAD, AAM, AAS (ASCII Adjust Addtion/Division/Multiply/Subtraction)
- BOUND (Check Array Bounds)
- CALL far, JMP far (Call far absolute, JMP far absolute)
- DAA, DAS (Decimal Adjust Addition/Subtraction)
- INTO (Interrupt to Overflow Vector)
- LDS, LES (Load Segment Register)
- POP DS, POP ES, POP SS, POPA
- PUSH CS, PUSH DS, PUSH, ES, PUSH SS, PUSHA
- オペコード 82h (Redundant encoding of opcode 80h: undocumented)
- SALC (Set AL According to CF: undocumented)
- LAHF, SAHF mệnh lệnh は, lúc đầu の AMD64, Intel 64では64ビットモードで廃 ngăn されたx86 mệnh lệnh であった.
- 64ビットモードで lại cắt り đương てされたx86 mệnh lệnh
-
- ARPL (Adjust Requestor Privilege Level) mệnh lệnh は, 64ビットモードでは, tân しいMOVSXD mệnh lệnh になった.
- 1バイト の INC, DEC mệnh lệnh は, 64ビットモードでは, REXプリフィックスになった. Một phương, 2バイト の INC, DEC mệnh lệnh は, 64ビットモードでも sử dụng khả năng である.
- 64ビットモードで廃 ngăn されたLDS, LES mệnh lệnh は, の ちにインテルによってAVXMệnh lệnh の VEXプリフィックスとして cắt り đương てられた. VEXプリフィックスに続く2バイト mục を32ビットモードでは bất chính であった11xxxxxxという hình thức にすることにより, AVX mệnh lệnh は32ビットモードでも sử dụng khả năng である. Windows NT の 仮 tưởng DOSマシンでは, C4h C4h(LES AX, SPとデコードされる bất chính mệnh lệnh )を仮 tưởng 86モードから32ビットプロテクトモード の hô び ra しに sử dụng していた[30].AVXは仮 tưởng 86モード, リアルモードには đối ứng していない.
- 64ビットモードで廃 ngăn されたBOUND mệnh lệnh は, の ちにインテルによってAVX-512Mệnh lệnh の EVEXプリフィックスとして cắt り đương てられた. EVEXプリフィックスに続く2バイト mục を32ビットモードでは bất chính であった11xxxxxxという hình thức にすることにより, AVX-512 mệnh lệnh は32ビットモードでも sử dụng khả năng である.
メモリ quản lý
Biên tập- コードセグメントディスクリプタ
- 64ビットモードでは, コードセグメントディスクリプタ の P(Present)ビット, D(Default)ビット, DPL ( Descriptor Privilege Level)フィールド, C(Conforming)ビット, および, tân しく định nghĩa されたL(Long)ビット の みが có hiệu である. L=1 の trường hợp, 64ビットモードでプロセッサーが động tác することを ý vị する. それ bên ngoài の ベースアドレス, リミットなどは làm lơ される.
コードセグメントディスクリプタ の フォーマット
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ベースアドレス[31:24] | G | D | L | AVL | リミット[19:16] | ||||||||||
P | DPL | S=1 | E=1 | C | R | A | ベースアドレス[23:16] | ||||||||
ベースアドレス[15:0] | |||||||||||||||
リミット[15:0] |
- データセグメントディスクリプタ
- 64ビットモードでは, データセグメントディスクリプタは, P(Present)ビット の みが có hiệu である. それ bên ngoài の ベースアドレス, リミットなどは làm lơ される. ただし, FS,GSセグメントレジスタ の みベースアドレスは có hiệu で, MSRを sử dụng して64ビット の ベースアドレスを chỉ định することもできる.
- の ちにインテルは, đặc 権レベル0 bên ngoài でもFS,GS の ベースアドレスを thao tác khả năng にするRDFSBASE, RDGSBASE, WRFSBASE, WRGSBASE mệnh lệnh を thêm vào した.
データセグメントディスクリプタ の フォーマット
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ベースアドレス[31:24] | G | D | 0 | AVL | リミット[19:16] | ||||||||||
P | DPL | S=1 | E=0 | ED | W | A | ベースアドレス[23:16] | ||||||||
ベースアドレス[15:0] | |||||||||||||||
リミット[15:0] |
- Chính quy hình (canonical form)
- 64ビットモードでは, 仮 tưởng アドレスは64ビットであるも の の, thật tế の thật trang では, 264バイト(16EB) の すべてを sử dụng できるようにはなっていない. ほとんど の オペレーティングシステム, アプリケーションは, gần い tương lai も hàm めて, そ の ような đại きなアドレス không gian を sử dụng しない. フル64ビットという đại きなアドレス không gian の サポートは, phục tạp さとアドレス変 đổi の コストを tăng やすだけでメリットはない. そ の ため, AMDは lúc ban đầu の AMD64 の thật trang では, 48ビット の 仮 tưởng アドレス không gian の みを sử dụng することにした. さらに仮 tưởng アドレス の ビット48から63は,Ký hiệu 拡 trươngによりビット47 の trị がコピーされなければならないことにした. そうでない仮 tưởng アドレスを sử dụng した trường hợp は, プロセッサーは ngoại lệ エラーを phát sinh する. こ の ルールに従ったアドレスは, chính quy hình (canonical form)と hô ばれる. Chính quy hình の アドレスは, 0から00007FFF'FFFFFFFFとFFFF8000'00000000からFFFFFFFF'FFFFFFFF の phạm 囲であり, cộng lại で256TB の 仮 tưởng アドレス không gian が sử dụng khả năng である.
- こ の sĩ dạng は, thật tế に64ビット仮 tưởng アドレスが sử dụng khả năng になったときに quan trọng な ý vị を cầm つ. Chính quy hình ではないアドレスを sử dụng した trường hợp, ngoại lệ エラーが phát sinh する の で, アプリケーションやOSが, chưa sử dụng の thượng vị 16ビットを đừng の sử dụng に sử dụng できない. そ の ため, tương lai, 仮 tưởng アドレス không gian が48ビットから拡 trương されたときに vấn đề が khởi こらない[31][32].
- 2020 năm khoảnh までに, thêm vào cơ năng として仮 tưởng アドレスに đối して sơ めてとなる9ビット の 拡 trương が hành われ, 57ビットまで の 仮 tưởng アドレスが sử dụng できるようになった.[33]仮 tưởng アドレス không gian の サイズは512PBとなる. ビット57-63は dẫn き続き chưa sử dụng となり, chính quy hình の 仮 tưởng アドレスではビット56から の ký hiệu 拡 trương が tất yếu となる.
- Longモードで の ページ変 đổi (page translation)
- Longモードで の ページ変 đổi にはVật lý アドレス拡 trương(PAE)が cần thiết である. Longモードに nhập る trước にCR4 の PAEビットを1にセットする tất yếu がある. AMD64では, PDPE(page-directory-pointer entry), PDE(page-directory entry), PTE(page-table entry)を拡 trương し, tân たにPML4(page-map level-4)を thêm vào した. いずれ の ページテーブルも, 仮 tưởng アドレス の うち9ビット phân を変 đổi する. PAEが có hiệu になっているため, CR4 の PSE(page-size extensions)ビットは làm lơ される. CPUID の ファンクション8000_0001hで, EDX の ビット26がセットされていると, そ の CPUは, 1Gbyteページ変 đổi に đối ứng している.
- 仮 tưởng アドレス の 57ビットへ の 拡 trương に tế しては, PML4 の さらに thượng vị にPML5(page-map level-5)を thêm vào した. ページテーブル の ビット phúc は hắn の ページテーブルと cùng じく9ビット phân となる. なお, これに bạn うページサイズ の thêm vào および変 càng はない.
- 4Kbyteページ変 đổi: PML5(*), PML4, PDPE, PDE, PTEによって変 đổi される. ページ の サイズは4Kbyteである.
- 2Mbyteページ変 đổi: PML5(*), PML4, PDPE, PDEによって変 đổi される. ページ の サイズは2Mbyteである.
- 1Gbyteページ変 đổi (*): PML5(*), PML4, PDPEによって変 đổi される. ページ の サイズは1Gbyteである.
- (*) CPUがサポートしている trường hợp に の み sử dụng khả năng.
Đặc 権レベル
Biên tậpĐặc 権レベルは80286 の プロテクトモードでx86に dẫn vào され, レベル0,レベル1,レベル2,レベル3 の 4 giai tầng がある.リングプロテクションとも hô ばれる. x64 の 64ビットモードでも đặc 権レベルは4 giai tầng あるが, thông thường は đặc 権レベル0 ( カーネルモード ) と đặc 権レベル3 ( ユーザーモード ) の 2 chủng loại しか sử dụng されない.
- コールゲートによるシステムコール(CALL far, RET)
- コールゲートは80286で đặc 権レベル(0,1,2,3)を thiết り thế える sĩ tổ みとして dẫn vào された. 64ビットモードでは, コールゲートは64bit の オフセットが sử dụng できるように拡 trương された.
- コールゲート の sĩ tổ みはRISCには vô い. RISCにも đối ứng していたWindows NTではシステムコールにコールゲートを sử dụng せず, INT mệnh lệnh やPentium IIで thêm vào されたSYSENTER, SYSEXIT mệnh lệnh を sử dụng していた.
- Cao tốc システムコール(SYSCALL, SYSRET)
- Đặc 権レベル3 ( ユーザーモード ) と đặc 権レベル0 ( カーネルモード ) を cao tốc に thiết り đổi える mệnh lệnh として, AMDは64ビットモードではx86にあるSYSENTER, SYSEXIT mệnh lệnh は thật trang せず, AMD một mình の SYSCALL, SYSRET mệnh lệnh の みを thật trang した. SYSCALL mệnh lệnh は, CS(コードセグメント), SS(スタックセグメント), RIP(インストラクションポインタ)をあらかじめセットされたMSRから đặc 権レベル の チェック vô しにロードする. こ の ときRSP(スタックポインタ)はロードされない. オペレーティングシステムは tân しいSWAPGSMệnh lệnh を sử dụng して, ユーザーモード の GSセグメントと, カーネルモード の GSセグメントを thiết り thế え, GSセグメント kinh từ でカーネルモード の RSPをロードする.
- なお, SYSCALL の オペコードは0Fh 05h, SYSRET の オペコードは0Fh 07hであり, これらはかつてx86に tồn tại していた phi công khai mệnh lệnhLOADALLの オペコードを lại cắt り đương てしている.
マイクロアーキテクチャ の nhiều thế hệ
Biên tậpCơ năng 拡 trương によりマイクロアーキテクチャ の nhiều thế hệ を phân けて khảo える tất yếu がある trường hợp がある. 2020 năm には, AMD, Intel, Red Hat, SUSE の コラボレーションにより, x86-64 ベースライン の thượng に x86-64-v2, x86-64-v3, x86-64-v4 の 3 つ の マイクロアーキテクチャ レベル ( cơ năng レベル) が định nghĩa された.
Level | CPU features | Example instruction | Supported processors |
---|---|---|---|
x86-64 (x86-64-v1) |
CMOV | cmov | 2003 năm khoảnh の lúc đầu の AMD K8 lấy hàng など |
CX8 | cmpxchg8b | ||
FPU | fld | ||
FXSR | fxsave | ||
MMX | emms | ||
OSFXSR | fxsave | ||
SCE | syscall | ||
SSE | cvtss2si | ||
SSE2 | cvtpi2pd | ||
x86-64-v2 | CMPXCHG16B | cmpxchg16b | Chủ に 2008 năm khoảnh の Intel Nehalem nhiều thế hệ lấy hàng |
LAHF-SAHF | lahf | ||
POPCNT | popcnt | ||
SSE3 | addsubpd | ||
SSE4_1 | blendpd | ||
SSE4_2 | pcmpestri | ||
SSSE3 | pshufb | ||
x86-64-v3 | AVX | vzeroall | Chủ に2013 năm khoảnh の Intel Haswell nhiều thế hệ lấy hàng |
AVX2 | vpermd | ||
BMI1 | andn | ||
BMI2 | bzhi | ||
F16C | vcvtph2ps | ||
FMA | vfmadd132pd | ||
LZCNT | lzcnt | ||
MOVBE | movbe | ||
OSXSAVE | xgetbv | ||
x86-64-v4 | AVX512F | kmovw | Chủ に2017 năm khoảnh の Intel Intel Skylake-X nhiều thế hệ lấy hàng でAVX512が có hiệu な trường hợp |
AVX512BW | vdbpsadbw | ||
AVX512CD | vplzcntd | ||
AVX512DQ | vpmullq | ||
AVX512VL | N/A |
オペレーティングシステム の trao đổi tính と tráp い
Biên tậpThứ の オペレーティングシステムは, x64アーキテクチャ の Longモードをサポートする.
BSD
Biên tậpFreeBSD
Biên tậpFreeBSDは, 2003 năm 6 nguyệt の 5.1-RELEASEで thật nghiệm なアーキテクチャーとして, amd64という danh trước でx64をサポートした. 2004 năm 1 nguyệt の 5.2-RELEASEでは công thức なアーキテクチャーとして đối ứng した. それ tới nay, FreeBSDでは, amd64をTier 1プラットフォームとしている.
NetBSD
Biên tậpx64アーキテクチャー の サポートは2001 năm 6 nguyệt 19 ngày にNetBSD の ソースツリーに sơ めてコミットされた. 2004 năm 12 nguyệt 9 ngày にリリースされたNetBSD 2.0では, NetBSD/amd64としてソースツリーに hoàn toàn に thống hợp され, công thức なポートになった. 32ビット の システムコール の ため の netbsd-32カーネル trao đổi レイヤーを thông して, 64ビットモードで の 32ビットコード の thật hành がサポートされている. NXビットは, thật biết không nhưng の スタックとヒープを cung cấp するために, sử dụng されている.
OpenBSD
Biên tậpOpenBSDは2004 năm 5 nguyệt 1 ngày にリリースされたOpenBSD 3.5でAMD64をサポートした. ソースツリー nội で の AMD64サポート の hoàn toàn な thật trang は, thật tế の AMD64 の ハードウェア の リリースより trước に hành われていた. これはhackathonプロジェクト の ためにAMDがいくつか の ハードウェアを thải し ra したためである. OpenBSD の khai phát giả は, W^X (Write XOR Execute)[34]Cơ năng が dễ dàng に thật trang できるNXビットがあるため, AMD64プラットフォームを khí に nhập った. OpenBSD の AMD64ポートは, Intel 64でも đi る. しかし, lúc đầu の Intel 64にはNXビットがないため, これら の Intel の CPUではW^X cơ năng は sử えない. Sau にIntelはXDビット の danh trước で, NXビットを thêm vào している.
Linux
Biên tậpLinuxはLongモードでx64アーキテクチャを động tác させる sơ めて の オペレーティングシステム・カーネルとなった. これは, thật tế の AMD64 の ハードウェア の リリースより trước の 2001 năm, kernel 2.4にて thủy められた. Linuxは32ビット thật hành khả năng ファイル の thật hành に quan して phía sau trao đổi を bảo っている. これにより, 32ビットプログラム の sử dụng を継続しながらLongモード dùng にプログラムを lại コンパイルすることが khả năng になった.
64ビット bản Linuxでは, cái 々 の プロセスで128TB の 仮 tưởng アドレス không gian と64TB の vật lý メモリが sử dụng できる. ( ただし, これは, CPUやPCシステムにより chế hạn される )
Mac OS X
Biên tậpMac OS X v10.4の うちv10.4.7 cập びそれ lấy hàng の バージョンは, 64ビット の インテルベースマシン thượng でPOSIX cập び toán học ライブラリを dùng いて64ビットコマンドラインツールが khởi động する. Mac OS X v10.4において, これ bên ngoài の ライブラリ, フレームワークは, 64ビットアプリケーションをサポートしない. こ の カーネル, およびカーネル拡 trương は32ビット の みである.
Mac OS X v10.5は, 64ビット の PowerPCマシン cùng dạng に, 64ビット の インテルベース・マシンにおいてCocoa, Quartz, OpenGL, そしてX11を dùng いた64ビット の GUIアプリケーションをサポートした. Toàn て の phi GUIライブラリとフレームワークは, こ の プラットフォームで64ビットアプリケーションをサポートしている. こ の カーネル, そして toàn て の カーネル拡 trương は, 32ビット の みである.
Mac OS X v10.6は, 64ビットカーネルをサポートしたMac OS X の lúc ban đầu の バージョンである. しかし, lúc ban đầu の リリース(v10.6.0)では, toàn て の 64ビットコンピュータがサポートされたわけではなかった. 64ビットカーネルは, 32ビットカーネル cùng dạng に32ビットアプリケーションをサポートし, それぞれ の カーネルも cùng dạng に64ビットアプリケーションをサポートした. 32ビットアプリケーションは, いずれ の カーネルにおいても仮 tưởng アドレス không gian が4GBであるという chế hạn があった. 64ビットカーネルは32ビットカーネル拡 trương をサポートせず, cùng dạng に32ビットカーネルは64ビットカーネル拡 trương をサポートしない.
OS X Mountain Lionは, 64ビットカーネル の みサポートするが, 32ビット, 64ビット の lạng phương の アプリケーションをサポートする.
Macは, x86/x64 の 32ビット・64ビットだけでなく, PowerPCとインテル・アーキテクチャ の サポートなど, アーキテクチャ の trao đổi tính vấn đề が phục tạp に nhập り tổ んでいた vì, ユーザが hỗn loạn しない vì にOSレベルでユニバーサルバイナリなど の sĩ tổ みが chỉnh えられた. これは, một つ の アプリケーションファイル, またはライブラリファイルに đối して số nhiều の コードをパッケージし, thật thịnh hành に nhất thích なバージョンが tuyển 択されるというも の である.
Windows
Biên tậpMicrosoft Windowsは, 2005 năm 4 nguyệt ( Nhật Bản においては6 nguyệt ) にWindows XP Professional x64 Edition(クライアント bản )[35],Windows Server 2003 x64 Editionをリリースし, x64に đối ứng した. Nguyên tới の x86 bản において, Windows XP の bên trong バージョンは 5.1.2600, Windows Server は 5.2.3790 であったが, x64 bản においてはビルド phiên hiệu が cùng であり ( 5.2.3790.1830 SP1 ), システムアップデートも thống nhất された.
Windows Vistaは2007 năm 1 nguyệt に,Windows 7は2009 năm 7 nguyệt に,Windows 8は2012 năm 10 nguyệt にリリースされた. いずれ の OSも, x86 に thêm えて, 64ビット(x64) bản としてx64をサポートするが, Itanium をサポートしない.
Windows Server 2008は 2008 năm 2 nguyệt にリリースされ, x86 bản, x64 bản に thêm えて,IA-64もItaniumBản としてサポートした.Windows Server 2008 R2では x86 bản の リリースが đánh ち thiết られ, x64 bản と Itanium bản の みリリースした. Itanium bản はこ の bản が cuối cùng リリースとなり,Windows Server 2012では x64 bản だけがリリースされた.
x64 bản Windowsには dưới の ような cơ năng がある.
- 1プロセスあたり8TB ( Windows 8まで ) lại は128TB ( Windows 8.1 lấy hàng ) の ユーザーモード仮 tưởng アドレス không gian. x64 の プログラムは, "large address aware" オプションを phó けてリンクされていれば, これら の すべてを sử dụng できる. ただし, trợ cấp ký ức trang bị ( すなわち, ハードディスク ) の dung lượng により sử dụng できる lớn nhất trị は, chế hạn される. Một phương, 32ビット bản Windowsで cung cấp されているユーザーモード仮 tưởng アドレス không gian は2GBである.
- オペレーティングシステム dùng の 8TB ( Windows 8まで ) lại は128TB ( Windows 8.1 lấy hàng ) の カーネルモード仮 tưởng アドレス không gian. Một phương, 32ビット bản Windowsで cung cấp されているカーネルモードアドレス không gian は2GBである. こ の tăng thêm した không gian の メリットは, ファイルシステム の キャッシュやカーネルモードヒープに sử dụng できる. Windows 8まで の Windowsはプロセッサーで thật trang されている256TB の アドレス không gian の うち cộng lại 16TBしか sử dụng できない. これは, lúc đầu の AMD64がCMPXCHG16B mệnh lệnh をサポートしていないためである[36].
- WOW64を sử dụng して, đã tồn の 32ビットアプリケーション(.exeプログラム)とダイナミックリンクライブラリ(.dll)を thật hành する cơ năng. さらに, 32ビットアプリケーションが "large address aware" オプションを phó けてリンクされていれば, そ の アプリケーションは64ビットWindows thượng で, 4GB の 仮 tưởng アドレス không gian を sử dụng できる. Một phương, 32ビットWindowsでは, デフォルト の 仮 tưởng アドレス không gian は2GBで, /3GB の ブートオプションを phó けてWindowsを khởi động し, "large address aware" オプションを phó けてリンクされたアプリケーションであれば3GBである. /3GB の ブートオプションを phó けて khởi động した32ビット の Windowsとは dị なり, 64ビットWindowsではカーネルモード仮 tưởng アドレス không gian が giảm らない. そ の ため, 32ビットアプリケーションは, x64 dùng に lại コンパイルしなくても, 64ビットWindows thượng で động tác させることにメリットがある.
- 32ビット, および, 64ビット の アプリケーションは, "large address aware" オプションを phó けてリンクされていなければ, 仮 tưởng アドレス không gian は2GBに chế hạn される.
- Windows XP/Vistaでは128GB, Windows 7では192GB, Windows 8では512GB, Windows Server 2003では1TB, Windows Server 2008では2TB, Windows Server 2012では4TBまで の RAMを sử dụng khả năng.
- LLP64データモデルを chọn dùng. intとlongは32ビット, long longは64ビット, ポインタとポインタから đẻ ra したデータ hình は64ビットである.
- カーネルモードデバイスドライバは64ビットでなければならない. 32ビット の カーネルモードデバイスドライバは 64ビット bản Windowsでは động tác しない. ユーザーモードデバイスドライバは, 32ビット, 64ビット の どちらも64ビット bản Windowsで động tác する.
- 16ビットWindows(Win16)アプリケーションとDOSアプリケーションは64ビット bản Windowsでは động tác しない. これは, 64ビットモードに仮 tưởng 86モードがないため, 64ビット bản Windowsから仮 tưởng DOSマシンサブシステム(NTVDM)を trừ bỏ したためである.
- NX(No Execute)ページ bảo hộ cơ năng の hoàn toàn な thật trang. こ の cơ năng は32ビット bản WindowsでもPAEモードで khởi động すれば sử dụng できる.
- x86 bản の Windows NTファミリーでFSセグメントが sử われている đại わりに, x64ではGSセグメントがオペレーティングシステムが định nghĩa する2つ の cấu tạo thể を chỉ している. ユーザーモードで の スレッドインフォメーションブロック(NT_TIB)とカーネルモードで の プロセスコントロールリージョン(KPCR)である. たとえば, ユーザーモードでは, GS:0はスレッドインフォメーションブロック の lúc ban đầu の メンバー の アドレスである. こ の quy tắc を duy trì することによりx64 bản Windows の khai phát が dễ dàng になった. しかし, AMDに đối して, LongモードでFS, GSセグメント の cơ năng を bảo trì することを yêu cầu することになった. ( ただし, セグメントアドレッシング tự thể は, cận đại なオペレーティングシステムで sử われるも の ではない )
- Microsoft Visual Studio2005 lấy hàng では, 64ビット bản Windows の みで động tác する64ビットアプリケーション, 32ビット bản Windowsと64ビット bản Windows の WOW64 thượng の lạng phương で động tác する32ビットアプリケーション の khai phát が khả năng である[37].
Chú thích
Biên tập- ^Đại học などHọc thuậtの thế giới や,オープンソースの プロジェクトなどでは, ( trao đổi quan hệ が minh bạch で, riêng メーカー danh も nhập っていない tên な の で ) “x86-64” と hô ぶことを hảo み, AMD xã やAMDと quan liền が thâm い hội xã では “AMD64” と hô ぶことを hảo み, マイクロソフト xã やサン・マイクロシステムズ( sau にオラクルに mua thâu された hội xã ) は đoản く “x64” と hô ぶことを hảo む[1][2].
- ^Kabushiki gaisha インプレス (2023 năm 5 nguyệt 22 ngày ). “Intel, tân “X86-S” アーキテクチャで8086 trao đổi を thiết り xá て”.PC Watch.2023 năm 6 nguyệt 4 ngàyDuyệt lãm.
- ^“Introducing Intel® Advanced Performance Extensions (Intel® APX)”.Intel(2024 năm 3 nguyệt 5 ngày ).2024 năm 3 nguyệt 5 ngàyDuyệt lãm.
- ^ab“Nhật Bản AMD, Opteron の phát biểu sẽ を khai thúc giục”.pc.watch.impress.co.jp.2023 năm 6 nguyệt 4 ngàyDuyệt lãm.
- ^“Nhật Bản AMD, Athlon 64 の phát biểu sẽ を khai thúc giục”.pc.watch.impress.co.jp.2023 năm 6 nguyệt 4 ngàyDuyệt lãm.
- ^“AMD, X86-64アーキテクチャ の プログラミングガイドを công khai”.pc.watch.impress.co.jp.2023 năm 6 nguyệt 4 ngàyDuyệt lãm.
- ^“Sau đằng hoằng mậu の Weekly hải ngoại ニュース”.pc.watch.impress.co.jp.2023 năm 6 nguyệt 4 ngàyDuyệt lãm.
- ^abAMD Corporation (May 2011). “Volume 2: System Programming”(pdf).AMD64 Architecture Programmer's Manual.AMD Corporation.2011 năm 10 nguyệt 29 ngàyDuyệt lãm.
- ^IBM Corporation (2007 năm 9 nguyệt 6 ngày ). “IBM WebSphere Application Server 64-bit Performance Demystified”.p. 14.2010 năm 4 nguyệt 9 ngàyDuyệt lãm. “" Figures 5, 6 and 7 also show the 32-bit version of WAS runs applications at full native hardware performance on the POWER and x86-64 platforms. Unlike some 64-bit processor architectures, the POWER and x86-64 hardware does not emulate 32-bit mode. Therefore applications that do not benefit from 64-bit features can run with full performance on the 32-bit version of WebSphere running on the above mentioned 64-bit platforms. "”
- ^これら の tân しい thở ra quy ước は, lúc trước からレジスタ bổn số が nhiều いRISC hệ CPUではすでに thật tích があった sĩ dạng である.
- ^Kỹ càng tỉ mỉ についてはWindows NT hệのBiểuを tham chiếu の こと.
- ^“Cũ hình thức の コード の ため の di động số lẻ サポート (Visual C++)”.MSDNライブラリ.マイクロソフト.2016 năm 1 nguyệt 16 ngàyDuyệt lãm.
- ^オレゴン châuのウィラメットバレー(Willamette Valley)を lưu れるYamhill xuyên から tới た danh trước である.
- ^"Craig Barrett confirms 64 bit address extensions for Xeon. And Prescott", from The Inquirer
- ^"A Roundup of 64-Bit Computing", from internetnews
- ^オレゴン châu を lưu れるクラッカマス xuyên (Clackamas River) の danh trước に ngọn nguồn し,ウィラメット xuyên(Willamette River) の nhánh sông である.
- ^"Intel® 64 Architecture"
- ^“Sau đằng hoằng mậu の Weekly hải ngoại ニュース Intel の 64bit拡 trương kỹ thuật “Clackamas” がAMD64と trao đổi である mê”.pc.watch.impress.co.jp.2023 năm 6 nguyệt 4 ngàyDuyệt lãm.
- ^“Intel, 64bit拡 trương はAMD64 trao đổi と phát biểu”.pc.watch.impress.co.jp.2023 năm 6 nguyệt 4 ngàyDuyệt lãm.
- ^“BIOS and Kernel Developer’s Guide for AMD NPT Family 0Fh Processors” May 2006 bảnにRevision F ( DDR2 đối ứng の Socket AM2 bản CPU ) の 変 càng điểm として “CPUID Fn[0000_0001]_ECX CMPXCHG16B (bit 13) added.” と ghi lại されている.
- ^8080 の PUSH PSW mệnh lệnh をLAHF / XCHG AL, AH / PUSH AXとエミュレートできる.
- ^VMware Player 5.0 インストール văn kiện quan trọng
- ^PREFETCHW mệnh lệnh はメモリからデータをキャッシュラインにプリフェッチし, そ の データがあとで thư き đổi えられることを tưởng định してあらかじめキャッシュライン の trạng thái をModified( thư き đổi えあり ) にする mệnh lệnh である. データが thư き込まれた khi điểm でModifiedに変 càng するよりも tốc く động tác することが chờ mong できる.
- ^AMD の ドキュメント “Cross-Vendor Migration” の Prefetch Instructionsにfamily 15/model 6/stepping 1 lấy hàng の CPU, すなわちCedarMillコアからこ の mệnh lệnh をNOPとして処 lý するようになったと thuyết minh がある.
- ^Microsoft xã の Coreinfoツールでこれら の mệnh lệnh の サポート trạng huống を xác nhận できる.
- ^MS công thức サイト のWindows 8 の システム văn kiện quan trọngページにあるWindows 8.1 tiết に “64 ビット PC に 64 ビット bản OS をインストールする trường hợp, プロセッサが CMPXCHG16b, PrefetchW, LAHF/SAHF をサポートしている tất yếu があります” と ghi lại されている.
- ^Windows 10 システム văn kiện quan trọng
- ^“JWasm / Feature Requests / #10 MOVD/MOVQ in 64-bit (was: Another MMX code problem)”.2020 năm 6 nguyệt 9 ngàyDuyệt lãm.
- ^“43215 – x86-64: Nonstandard instruction "movd %xmm0, %rax"”.2020 năm 6 nguyệt 9 ngàyDuyệt lãm.
- ^AMD64 Architecture Programmer's Manual
- ^Schulman, Andrew; Brown, Ralf D.; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994). Undocumented DOS - A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 (2 ed.). Addison Wesley.ISBN 0-201-63287-X.
- ^AMD・インテル hệ アーキテクチャではないが,モトローラMC68000ではアドレス không gian が24ビットだったがアドレスレジスタは32ビットだった. そ の ためアプリケーションなどが thượng vị 8ビットを thắng tay に sử dụng していたケースがあり, の ちにMC68020でアドレス không gian が32ビット hóa された tế に vấn đề になったことがあった.
- ^しかし thật tế の ところ, OS khai phát giả はそ の ような sự tình を biết っていてもアプリケーション khai phát giả は biết らない の が hiện thật である.“5level-paging.txt”.2020 năm 4 nguyệt 5 ngàyDuyệt lãm. “It's known that at least some JIT compilers use higher bits in pointers to encode their information. It collides with valid pointers with 5-level paging and leads to crashes.”
- ^ Belousov, Konstantin (2020 năm 8 nguyệt 23 ngày ). “amd64 pmap: LA57 AKA 5-level paging”.FreeBSD Git repositories.The FreeBSD Project.2024 năm 7 nguyệt 14 ngàyDuyệt lãm. “Since LA57 was moved to the main SDM document with revision 072,...”FreeBSDへLA57 の サポートを thêm vào するコミットログ.
- ^ある nơi の メモリを thư き込み khả năng かつ thật hành khả năng の trạng thái に trí かず, thư き込み の みか thật hành の みかどちらか một phương だけに chế hạn すること.
- ^“Nước trong lý sử の “イニシャルB” đệ 145 hồi: 64bit bản Windows “Windows XP Professional x64 Edition” lên sân khấu”.bb.watch.impress.co.jp.2023 năm 6 nguyệt 4 ngàyDuyệt lãm.
- ^Windows Internals FIFTH EDITION p.750, Mark E. Runssinovich, David A. Solomon, Microsoft PressISBN 978-0-7356-2530-3
- ^『 đồ giải 64ビットがわかる』 kỹ thuật bình luận xã, 2006 năm.ISBN 4774127353.162 trang