x64

Các xã によるAMD64 hỗ hoán mệnh lệnh セットの tổng xưng

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 セット, 続けてインテルが thải dụng したIntel 64Mệnh lệnh セット ( かつてIA-32eまたはEM64Tと hô ばれていた ) などを hàm む, các xã のAMD64 hỗ hoán mệnh lệnh セットの tổng xưng である. x86 mệnh lệnh セットと hỗ hoán tính を trì っていることから, quảng nghĩa にはx86にx64を hàm む tràng hợp がある.

なお, インテルはIntel 64の tha にIA-64の danh tiền で64ビット mệnh lệnh セットアーキテクチャを khai phát ・ triển khai していたが, これは toàn くの biệt vật であり, x64 mệnh lệnh セット, x86 mệnh lệnh セットのいずれとも hỗ hoán tính がない.

2023 niên 4 nguyệt にはIntelが, x64のLegacyモードを thiết り xá てることによりLongモードのみにしてサブセット hóa することで hồi lộ をシンプルにして tính năng hướng thượng するうえで vấn đề になっているボトルネックを giải tiêu することを mục tiêu にしたX86-Sの đề án の văn thư を công biểu した[1].もっとも, cấu tưởng が phát biểu されただけで, cụ thể đích な chế phẩm hóa に quan する tình báo は phát biểu されていない.

2023 niên 7 nguyệt にはIntelが, x64にr16-r31の16 bổn のレジスタを truy gia することを 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 しない. レジスタを truy gia したことでレジスタへのロードやレジスタからメモリへのストアの phụ đam が10% dĩ thượng giảm ると kỳ đãi され tính năng hướng thượng ができ, それに đối して hồi lộ の truy gia は thiếu なくて tế むとされている. そのため, đối ứng するCPUとOSとコンパイラがあれば, スタックサイズを điều chỉnh してリコンパイルするだけで tính năng hướng thượng する. Kim hậu, 32bit bản のx86が64bitのx64へと thôi di していったように, x64からAPXにアーキテクチャを thiết り thế えていくことが kế họa されている. Khai phát hoàn cảnh としてIntelが khai phát エミュレータsde (Software Development Emulator)を đề cung しており, Windowsに quan しては vị phát biểu であるものの, すでにGCCやLLVM CLangといったコンパイラやLinuxなどでソフトウェア trắc の khai phát が khai thủy され, kí に sơ kỳ バージョンでの động tác が xác nhận されている. (LLVM CLangについては, ver.18.1-rc1でAVX10とAPXに đối ứng してリリース tế み). Sổ niên dĩ nội に chế phẩm hóa される dư định になっている.

Đại nguyên のAMD64は, AMDのOpteron,Athlon 64,Turion 64など tối sơ に thật trang されたK8マイクロアーキテクチャ[3][4]とその hậu 継 chế phẩm のRyzenなどに thật trang されている.

Khai phát kinh vĩ

Biên tập

PC dụng アーキテクチャとして quảng く phổ cập したx86は,Bán đạo thểの chế tạo kỹ thuật とマイクロアーキテクチャの cách tân とともに tính năng の hướng thượng を続け, サーバやワークステーションといったエントリークラスのエンタープライズ thị tràng でも quảng く thụ け nhập れられるに chí った. しかし,IA-32の tính năng hướng thượng によって tự xã khai phát の64ビットアーキテクチャであるIA-64との cạnh hợp を huyền niệm したインテルは, x86の拡 trương を32ビットアーキテクチャの phạm 囲に lưu めてIA-64との tê み phân けを đồ った. これに đối し, thị tràng からは quảng く phổ cập したIA-32アーキテクチャと hỗ hoán tính を bảo ちつつ64ビットに拡 trương した, よりコストパフォーマンスに ưu れたエンタープライズ chế phẩm の đăng tràng が đãi ち vọng まれていた. Cao thâu ích を vọng めるエンタープライズ thị tràng への tiến xuất を đồ っていたAMDはそうした nhu yếu に ứng えて, x86の64ビット拡 trương アーキテクチャとして, 従 lai のIA-32のソフトウェアも lợi dụng が khả năng な mệnh lệnh セットとしてx86-64を phát biểu した[5].その hậu の thật tế の chế phẩm phát biểu でAMD64と cải xưng された[6].この kế họa は, 2000 niên 8 nguyệt に phát biểu され, tối sơ のプロセッサは2003 niên 4 nguyệt に xuất hà された[3].

Sĩ dạng

Biên tập

64ビットのPhiếm dụng レジスタを trì ち,32ビットのx86より quảng いアドレス không gianをサポートするため, đại きいデータをより dung dịch に tráp うことができる. またx64は32ビットのプログラムコードと hoàn toàn なHậu phương hỗ hoánTính を trì つ[7].Toàn ての32ビットの mệnh lệnh セットが thật trang されているため, 32ビットのx86Thật hành ファイルは, hỗ hoán tính あるいは tính năng の tổn thất なしに động tác させられる[8].ただし,アプリケーションソフトウェアがx64の tính năng を hoạt かすには, x64ネイティブコードを xuất lực するコンパイラを dụng いることが tất yếu である.

アーキテクチャの đặc trưng

Biên tập

AMDがx86 mệnh lệnh セットを64ビット hóa する tế に sử ったのは, x86 mệnh lệnh の tiên đầu にプリフィックスをつけるという thủ pháp である (REXプリフィックスと hô ばれる ). プリフィックスを sử うのは, インテルが16ビットCPU80286を32ビット hóa (80386)するときに sử った thủ pháp でもある. DEC Alphaの thiết kế giả の nhất nhânダーク・メイヤーが AMD64 sĩ dạng の tác thành に quan わり, bỉ をはじめとするDECXuất thân giả の kinh nghiệm がこのプロジェクトに hoạt かされた. Đặc bút すべき điểm は dĩ hạ のようなものである.

レジスタの truy gia と拡 trương
Phiếm dụng レジスタ (GPR) sổ はIA-32の8 bổn (EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP) に canh にR8〜R15の8 bổn を truy gia して16 bổn に tăng やされ, các レジスタのビット phúc も32ビットから64ビットに拡 trương された. IA-32は phiếm dụng レジスタが thiếu ないことからコンパイラによる tối thích hóa に hạn giới があり, これが tối も đại きな khiếm điểm とされた. AMD64に tối thích hóa されたアプリケーションでは, レジスタ bổn sổ の tăng gia によって tính năng hướng thượng が kiến 込まれ, đặc に thâm いループを trì った diễn toán chủ thể のソフトウェアでその khuynh hướng が cường いと kiến 込まれる. さらに128ビットのXMMレジスタの bổn sổ も8 bổn から16 bổn に tăng やされた (Streaming SIMDMệnh lệnh で sử われる ).Hô xuất quy ướcにおいても, dẫn sổ độ しがIA-32では nguyên tắc としてスタックのみを sử dụng していたのが nhất bộ の dẫn sổ についてレジスタ độ しに変 canh されたり, hô xuất に tế して nhất bộ のレジスタの thượng thư きを dung nhận するなど hiệu suất が thượng がっている.[9]
アドレス không gian の拡 trương
AMD64アーキテクチャでは, sơ kỳ の sĩ dạng で48ビット(仮 tưởng アドレス không gian サイズで256テラバイト), truy gia cơ năng で57ビット(仮 tưởng アドレス không gian サイズで512ペタバイト)の仮 tưởng アドレス phúc を trì つ. IA-32アーキテクチャにおいて sơ kỳ のプロセッサでは, 仮 tưởng アドレス không gian は32ビットで biểu hiện できる4GiBに chế ước され,Pentium ProDĩ hàng の thật trang で truy gia された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 tiếp đầu từ
RIP tương đối データアクセス
プログラムカウンタ (RIP) tương đối でデータにアクセスすることができ,リロケータブルな cộng hữu ライブラリのコードを tác thành できる. また, cộng hữu ライブラリを仮 tưởng アドレス không gian のどこにでも phối trí することができる (Vị trí độc lập コード).
SSE mệnh lệnh
AMD64アーキテクチャでは minh xác にインテルのSSESSE2を cơ bổn mệnh lệnh セットに tổ み込んでいる. SSE2はx87の80ビット phù động tiểu sổ điểm sổ から 32ビット/64ビットの phù động tiểu sổ điểm sổ に trí き hoán えたものである. SSE/SSE2 mệnh lệnh セットは truy gia の8 bổn のXMMレジスタを tráp えるように拡 trương された. SSEとSSE2がAMD64 mệnh lệnh セットに tổ み込まれており, それが従 lai のx87FPUMMX3DNow!の 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 hành bất khả かを chỉ định することができる. NXビットがセットされたページにあるコードを thật hành しようとするとメモリアクセス vi phản となり, thật hành できない. これは, リードオンリーページへの thư き込みを thật hành しようとしてもできないことと tự ている. No-Execute cơ năng は, ウイルスなどがバッファーオーバランなどを sử dụng して, オペレーティングシステムを thừa っ thủ ろうとすることを nan しくする.
Loại tự の cơ năng は, セグメントの chúc tính として80286 dĩ hàng のプロセッサーに tồn tại している. しかし, cận đại đích なオペレーティングシステムではセグメント cơ năng は cổ いものと kiến なされ, セグメントのベースを0, リミットを4Gバイト(32ビットOSの tràng hợp )に thiết định することにより, thật chất đích にセグメントを sử dụng していない.
AMDはリニアアドレッシングモードでNo-Execute cơ năng を thật trang した tối sơ のx86ベンダーである. No-Execute cơ năng は, PAEを hữu hiệu にすれば, 32ビットOSでも sử dụng khả năng である.
Cổ い cơ năng の tước trừ
x86アーキテクチャーにある đa くのシステムプログラミング cơ năng は cận đại đích なオペレーティングシステムでは 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モードでは y nhiên として, 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 Tái コンパイルの tất yếu tính アドレスサイズの kí định trị オペランドサイズの kí định trị レジスタの拡 trương Điển hình đích な phiếm dụng レジスタの phúc
Longモード 64ビット モード Tân しい 64ビットOS Tất yếu 64 32 Hữu り 64
Hỗ hoán モード Bất yếu 32 32 なし 32
16 16 16
Legacyモード プロテクト モード 従 lai の 16/32ビットOS Bất yếu 32 32 なし 32
16 16
仮 tưởng 8086 モード 16 16 16
リアル モード 従 lai の 16ビットOS

このアーキテクチャは, LongモードとLegacyモードという nhị つの động tác モードを trì つ.

Longモード

Biên tập

AMD64で拡 trương された bộ phân に đối ứng する động tác モードである. これにはネイティブの64ビットモードと hỗ hoán のための32ビットモードが hàm まれる.IA-32でのマイナーな động tác モードはサポートされない. このモードは64ビットのOSで sử dụng される.

Cơ bổn đích な mệnh lệnh セットは đồng じなので, x86コードを thật hành しても tính năng が đê hạ することはない. インテルのIA-64では32ビットコードの tính năng đê hạ が vấn đề となったが, これは mệnh lệnh セットが toàn く vi うためにエミュレート thật hành していたためである.

Longモードを sử うと, 64ビットOSは 32ビットアプリケーションと64ビットアプリケーションを tịnh hành して thật hành できる. また, AMD64は 16ビットのアプリケーションも thật hành することができる. しかし, Windowsの16ビットアプリケーション (Win16) のサポートに khiếm かせない仮 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 VistaDĩ hàng のx64 bản にも dẫn き継がれる chế hạn となっている.

Legacyモード

Biên tập

このモードは, 16ビットOS (MS-DOS-Windows 3.1Đẳng ) や32ビットOS (Windows 95- Windows XP đẳng ) で sử dụng される. このモードにおいて, プロセッサは cơ bổn đích に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 の thượng hạn がある[7].64ビットのプログラムは, Legacyモードで khởi động することができない.

AMD64を thải dụng するCPU

Biên tập

Thứ のプロセッサは, AMD64を thật trang する:

Intel 64は,IA-32アーキテクチャの64ビット拡 trương であり,インテルによるAMD64の thật trang である.

Khai phát kinh vĩ

Biên tập

従 lai, AMDはインテルがオリジナルであるx86の hỗ hoán プロセッサを khai phát ・ sinh sản していた. しかし, x64では lập tràng が nghịch 転し, インテルはAMDが khai phát したAMD64アーキテクチャ ( x86プロセッサの64ビット拡 trương アーキテクチャ ) を thải dụng した.

Đương sơ プロジェクトは,Yamhill[12]という khai phátコードネームで thủy まった. このプロジェクトの tồn tại を phủ định し続けて sổ niên が kinh ち, 2004 niên 2 nguyệt のIDFで, インテルはプロジェクトが tiến hành trung であることを phát biểu した. インテルの đương thời の hội trường クレイグ・バレットは, これが trọng yếu な cơ mật の nhất つであったことを nhận めた[13][14].

インテルは, AMD64 hỗ hoán mệnh lệnh セットの danh xưng を sổ hồi 変 canh した.IDFで dụng いられた danh tiền はCT(Clackamas Technology[15]), その sổ chu gian hậu にIA-32e(IA-32 extensions)と hô xưng を変 canh し, 2004 niên 4 nguyệt にはこれをEM64T(Extended Memory 64 Technology)という danh tiền で công thức に phát biểu した. Chế phẩm リリース hậu の2006 niên 7 nguyệt 27 nhật には, インテルはEM64TをIntel 64と cải xưng している[16].

Intel 64を thải dụng するCPU

Biên tập

インテルで tối sơ にIntel 64を thật trang したのは,Noconaというコード danh で2004 niên 6 nguyệt に phát biểu されたマルチソケットのXeonプロセッサである. Xeonはデスクトップ hướng けPentium 4をベースにしているため, đồng thời kỳ のPentium 4もIntel 64を thật trang しているはずだが,ハイパースレッディング・テクノロジーのときと đồng dạng, この cơ năng はPrescottでは tối sơ は động かないようになっていた. これはおそらく sơ kỳ の thật trang が hoàn toàn ではなかったためで, インテルはその hậu Intel 64を sử dụng khả năng にしたPrescottのE0バージョンをmodel Fとして phiến mại し 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 2Intel AtomでもIntel 64が thải dụng された.

Intel 64を thật trang しているCPUは dĩ hạ のものがある.

AMD64とIntel 64の soa dị

Biên tập

AMD64とIntel 64は, ほとんど đồng じである[17]が, cận かながら vi いはある. これらの vi いはオペレーティングシステム, コンパイラなどの khai phát giả のみが ý thức しなければならない. アプリケーションプログラムの khai phát giả がこれらの vi いを ý thức する tất yếu は, ほぼない[18].

  • 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と đồng dạng にデスティネーションは bất định (undefined)であるが, AMD64はデスティネーションを変 canh しない.
  • ハードウェア仮 tưởng hóa chi viện cơ năng のIntel VT-xとAMD-Vは hỗ hoán tính がない. 仮 tưởng hóa ソフトウェアはそれぞれに đối ứng する tất yếu がある.
  • Second Level Address TranslationCơ năng のIntel EPTとAMD RVIは hỗ hoán tính がない. 仮 tưởng hóa ソフトウェアはそれぞれに đối ứng する tất yếu がある.

Dĩ tiền あった soa dị

Biên tập
  • AMD64には, nguyên 々はCMPXCHG16B mệnh lệnh はなかった. この mệnh lệnh は16バイト(128ビット)のメモリ lĩnh vực を phục sổ のCPUコアでBài tha đích に cộng hữuすることに sử dụng される. この mệnh lệnh はWindowsで16TB dĩ thượng の仮 tưởng メモリを sử うために tất yếu である. Socket AM2 dĩ hàng のAMD64で đối ứng[19].
  • Sơ kỳ のAMD64, Intel 64は, 64ビットモードでLAHF, SAHF mệnh lệnh をサポートしていない. この2つの mệnh lệnh はAHレジスタとフラグ gian の転 tống mệnh lệnh で, nguyên 々は8ビットCPUである8080のプログラムを8086へ di thực するのを dung dịch にするために đề cung されていた[20].64ビットモードでは, sử い đạo があまりない mệnh lệnh のように kiến える. しかし, PUSH/POP mệnh lệnh の tổ み hợp わせと bỉ giác して, メモリにアクセスせず cao tốc にフラグをコピーできるため, VMwareなどの仮 tưởng hóa ソフトウェアがこの2つの mệnh lệnh に y tồn している[21].また,x87のステータスワードをフラグにコピーすることにも sử dụng される.
  • Sơ kỳ のIntel 64には, PREFETCHW mệnh lệnh はなかった[22].この mệnh lệnh は, nguyên 々はAMDの3DNow!で đạo nhập されたキャッシュの tối 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 と biểu kỳ する. 2013 niên のSilvermont,2014 niên のBroadwellよりPREFETCHW mệnh lệnh に chính thức に đối ứng している.
    ( thượng ký 3つは,Windows 8.1,Windows 10の64ビット bản が sơ kỳ のAMD64, Intel 64CPUにインストールできない chế ước sự hạng となる[25][26])
  • Sơ kỳ のIntel 64は, XDビット ( AMD64におけるNXビット ) をサポートしていない. したがってWindows 8 ( 32ビット bản, 64ビット bản とも ) がインストールできない chế ước sự hạng となる.

その tha

Biên tập
  • POPFQ mệnh lệnh には, REXプリフィックスは tất yếu ない. Intel xã のドキュメントにはこのことが chính しく ký tái されていなかった.
  • Đồng じオペコードに đối するMOVDとMOVQの cát り đương てがIntel 64のドキュメントとAMD64のドキュメントで dị なる. Nhất phương のドキュメント thông りのアセンブリソースがアセンブルできない[27],Nghịch アセンブル kết quả が tưởng định と dị なる[28]といったことが khởi こり đắc る.

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レジスタ, truy gia されたXMMレジスタなどへのアクセス
  • 64ビットレジスタであるRSP, RBP, RDI, RSIのビット0から7を, 8ビットレジスタSPL, BPL, DIL, SILとしてアクセス. Nhất phương でREXプリフィックスを phó けると8ビットレジスタとして AH, BH, CH, DHにアクセスできない. これにより trực giao tính が cao まった.
また, dĩ hạ の 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)はゼロになる.
これは, コードサイズの tối thích hóa に sử dụng できる.
Nhất phương, 16ビットレジスタや8ビットレジスタにデータを thư き込んでも, このゼロ拡 trương は khởi きない.
NOP(No Operation:オペコード90h) mệnh lệnh は, かつてはXCHG EAX, EAXと đẳng 価であったが[29]64ビットモードではこの mệnh lệnh を đặc biệt に tráp い, ám mặc のゼロ拡 trương を thích 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ビットに phù hào 拡 trương されて sử dụng される. ただし, MOV mệnh lệnh のみ64ビットの tức trị が sử dụng できる.
変 vị
64ビットモードであっても, 変 vị (displacement)は, 32ビットのままであり, 64ビットに phù hào 拡 trương されて sử dụng される. ただし, RAXレジスタに đối してのMOV mệnh lệnh のみ64ビットの変 vị が sử dụng できる.
64ビットモードで廃 chỉ されたx86 mệnh lệnh
Dĩ hạ のx86 mệnh lệnh は64ビットモードでは廃 chỉ されたため, 64ビットモードで thật hành すると bất chính mệnh lệnh lệ ngoại が 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 は, sơ kỳ のAMD64, Intel 64では64ビットモードで廃 chỉ されたx86 mệnh lệnh であった.
64ビットモードで tá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プリフィックスになった. Nhất phương, 2バイトのINC, DEC mệnh lệnh は, 64ビットモードでも sử dụng khả năng である.
  • 64ビットモードで廃 chỉ された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ô び xuất しに sử dụng していた[30].AVXは仮 tưởng 86モード, リアルモードには đối ứng していない.
  • 64ビットモードで廃 chỉ された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)ビットのみが hữu hiệu である. L=1の tràng hợp, 64ビットモードでプロセッサーが động tác することを ý vị する. それ dĩ ngoại のベースアドレス, リミットなどは vô thị される.

コードセグメントディスクリプタのフォーマット

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)ビットのみが hữu hiệu である. それ dĩ ngoại のベースアドレス, リミットなどは vô thị される. ただし, FS,GSセグメントレジスタのみベースアドレスは hữu hiệu で, MSRを sử dụng して64ビットのベースアドレスを chỉ định することもできる.
のちにインテルは, đặc 権レベル0 dĩ ngoại でもFS,GSのベースアドレスを thao tác khả năng にするRDFSBASE, RDGSBASE, WRFSBASE, WRGSBASE mệnh lệnh を truy gia した.

データセグメントディスクリプタのフォーマット

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 できるようにはなっていない. ほとんどのオペレーティングシステム, アプリケーションは, cận い tương lai も hàm めて, そのような đại きなアドレス không gian を sử dụng しない. フル64ビットという đại きなアドレス không gian のサポートは, phục tạp さとアドレス変 hoán のコストを tăng やすだけでメリットはない. そのため, AMDは tối sơ のAMD64の thật trang では, 48ビットの仮 tưởng アドレス không gian のみを sử dụng することにした. さらに仮 tưởng アドレスのビット48から63は,Phù hào 拡 trươngによりビット47の trị がコピーされなければならないことにした. そうでない仮 tưởng アドレスを sử dụng した tràng hợp は, プロセッサーは lệ ngoại エラーを 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 囲であり, hợp kế で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 になったときに trọng yếu な ý vị を trì つ. Chính quy hình ではないアドレスを sử dụng した tràng hợp, lệ ngoại エラーが phát sinh するので, アプリケーションやOSが, vị sử dụng の thượng vị 16ビットを biệt の dụng đồ に sử dụng できない. そのため, tương lai, 仮 tưởng アドレス không gian が48ビットから拡 trương されたときに vấn đề が khởi こらない[31][32].
2020 niên khoảnh までに, truy gia 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 き続き vị sử dụng となり, chính quy hình の仮 tưởng アドレスではビット56からの phù hào 拡 trương が tất yếu となる.
Longモードでのページ変 hoán (page translation)
Longモードでのページ変 hoán にはVật lý アドレス拡 trương(PAE)が tất tu である. Longモードに nhập る tiền に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)を truy gia した. いずれのページテーブルも, 仮 tưởng アドレスのうち9ビット phân を変 hoán する. PAEが hữu hiệu になっているため, CR4のPSE(page-size extensions)ビットは vô thị される. CPUIDのファンクション8000_0001hで, EDXのビット26がセットされていると, そのCPUは, 1Gbyteページ変 hoán に đối ứng している.
仮 tưởng アドレスの57ビットへの拡 trương に tế しては, PML4のさらに thượng vị にPML5(page-map level-5)を truy gia した. ページテーブルのビット phúc は tha のページテーブルと đồng じく9ビット phân となる. なお, これに bạn うページサイズの truy gia および変 canh はない.
4Kbyteページ変 hoán: PML5(*), PML4, PDPE, PDE, PTEによって変 hoán される. ページのサイズは4Kbyteである.
2Mbyteページ変 hoán: PML5(*), PML4, PDPE, PDEによって変 hoán される. ページのサイズは2Mbyteである.
1Gbyteページ変 hoán (*): PML5(*), PML4, PDPEによって変 hoán される. ページのサイズは1Gbyteである.
(*) CPUがサポートしている tràng hợp にのみ sử dụng khả năng.

Đặc 権レベル

Biên tập

Đặc 権レベルは80286のプロテクトモードでx86に đạo nhập され, レベル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ổ みとして đạo nhập された. 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で truy gia されたSYSENTER, SYSEXIT mệnh lệnh を sử dụng していた.
Cao tốc システムコール(SYSCALL, SYSRET)
Đặc 権レベル3 ( ユーザーモード ) と đặc 権レベル0 ( カーネルモード ) を cao tốc に thiết り hoán える mệnh lệnh として, AMDは64ビットモードではx86にあるSYSENTER, SYSEXIT mệnh lệnh は thật trang せず, AMD độc tự の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 do でカーネルモードのRSPをロードする.
なお, SYSCALLのオペコードは0Fh 05h, SYSRETのオペコードは0Fh 07hであり, これらはかつてx86に tồn tại していた phi công khai mệnh lệnhLOADALLのオペコードを tái cát り đương てしている.

マイクロアーキテクチャの thế đại

Biên tập

Cơ năng 拡 trương によりマイクロアーキテクチャの thế đại を phân けて khảo える tất yếu がある tràng hợp がある. 2020 niên には, 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 された.

CPU microarchitecture levels
Level CPU features Example instruction Supported processors
x86-64
(x86-64-v1)
CMOV cmov

2003 niên khoảnh の sơ kỳ のAMD K8 dĩ hàng など
すべてのx86-64 CPU

CX8 cmpxchg8b
FPU fld
FXSR fxsave
MMX emms
OSFXSR fxsave
SCE syscall
SSE cvtss2si
SSE2 cvtpi2pd
x86-64-v2 CMPXCHG16B cmpxchg16b

Chủ に2008 niên khoảnh のIntel Nehalem thế đại dĩ hàng
IntelNehalemand newer Intel "big" cores
Intel (Atom)Silvermontand newer Intel "small" cores
AMDBulldozerand newer AMD "big" cores
AMDJaguar
VIANano and Eden "C"

LAHF-SAHF lahf
POPCNT popcnt
SSE3 addsubpd
SSE4_1 blendpd
SSE4_2 pcmpestri
SSSE3 pshufb
x86-64-v3 AVX vzeroall

Chủ に2013 niên khoảnh のIntel Haswell thế đại dĩ hàng
IntelHaswellDĩ hàng
Intel (Atom)GracemontDĩ hàng
AMDExcavatorDĩ 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 niên khoảnh のIntel Intel Skylake-X thế đại dĩ hàng でAVX512が hữu hiệu な tràng hợp
IntelSkylakeDĩ hàng
AMDZen 4Dĩ hàng

AVX512BW vdbpsadbw
AVX512CD vplzcntd
AVX512DQ vpmullq
AVX512VL N/A

オペレーティングシステムの hỗ hoán tính と tráp い

Biên tập

Thứ のオペレーティングシステムは, x64アーキテクチャのLongモードをサポートする.

FreeBSDは, 2003 niên 6 nguyệt の5.1-RELEASEで thật nghiệm đích なアーキテクチャーとして, amd64という danh tiền でx64をサポートした. 2004 niên 1 nguyệt の5.2-RELEASEでは công thức なアーキテクチャーとして đối ứng した. それ dĩ lai, FreeBSDでは, amd64をTier 1プラットフォームとしている.

x64アーキテクチャーのサポートは2001 niên 6 nguyệt 19 nhật にNetBSDのソースツリーに sơ めてコミットされた. 2004 niên 12 nguyệt 9 nhật にリリースされたNetBSD 2.0では, NetBSD/amd64としてソースツリーに hoàn toàn に thống hợp され, công thức なポートになった. 32ビットのシステムコールのためのnetbsd-32カーネル hỗ hoán レイヤーを thông して, 64ビットモードでの32ビットコードの thật hành がサポートされている. NXビットは, thật hành bất khả のスタックとヒープを đề cung するために, sử dụng されている.

OpenBSDは2004 niên 5 nguyệt 1 nhật にリリースされたOpenBSD 3.5でAMD64をサポートした. ソースツリー nội でのAMD64サポートの hoàn toàn な thật trang は, thật tế のAMD64のハードウェアのリリースより tiền に hành われていた. これはhackathonプロジェクトのためにAMDがいくつかのハードウェアを thải し xuất したためである. OpenBSDの khai phát giả は, W^X (Write XOR Execute)[34]Cơ năng が dung dịch に thật trang できるNXビットがあるため, AMD64プラットフォームを khí に nhập った. OpenBSDのAMD64ポートは, Intel 64でも tẩu る. しかし, sơ kỳ のIntel 64にはNXビットがないため, これらのIntelのCPUではW^X cơ năng は sử えない. Hậu にIntelはXDビットの danh tiền で, NXビットを truy gia している.

LinuxはLongモードでx64アーキテクチャを động tác させる sơ めてのオペレーティングシステム・カーネルとなった. これは, thật tế のAMD64のハードウェアのリリースより tiền の2001 niên, kernel 2.4にて thủy められた. Linuxは32ビット thật hành khả năng ファイルの thật hành に quan して hậu phương hỗ hoán を bảo っている. これにより, 32ビットプログラムの sử dụng を継続しながらLongモード dụng にプログラムを tái コンパイルすることが khả năng になった.

64ビット bản Linuxでは, cá 々のプロセスで128TBの仮 tưởng アドレス không gian と64TBの vật lý メモリが sử dụng できる. ( ただし, これは, CPUやPCシステムにより chế hạn される )

Mac OS X v10.4のうちv10.4.7 cập びそれ dĩ hàng のバージョンは, 64ビットのインテルベースマシン thượng でPOSIX cập び sổ học ライブラリを dụng いて64ビットコマンドラインツールが khởi động する. Mac OS X v10.4において, これ dĩ ngoại のライブラリ, フレームワークは, 64ビットアプリケーションをサポートしない. このカーネル, およびカーネル拡 trương は32ビットのみである.

Mac OS X v10.5は, 64ビットのPowerPCマシン đồ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の tối sơ のバージョンである. しかし, tối sơ のリリース(v10.6.0)では, toàn ての64ビットコンピュータがサポートされたわけではなかった. 64ビットカーネルは, 32ビットカーネル đồng dạng に32ビットアプリケーションをサポートし, それぞれのカーネルも đồng dạng に64ビットアプリケーションをサポートした. 32ビットアプリケーションは, いずれのカーネルにおいても仮 tưởng アドレス không gian が4GBであるという chế hạn があった. 64ビットカーネルは32ビットカーネル拡 trương をサポートせず, đồng dạng に32ビットカーネルは64ビットカーネル拡 trương をサポートしない.

OS X Mountain Lionは, 64ビットカーネルのみサポートするが, 32ビット, 64ビットの lạng phương のアプリケーションをサポートする.

Macは, x86/x64の32ビット・64ビットだけでなく, PowerPCとインテル・アーキテクチャのサポートなど, アーキテクチャの hỗ hoán tính vấn đề が phục tạp に nhập り tổ んでいた vi, ユーザが hỗn loạn しない vi にOSレベルでユニバーサルバイナリなどの sĩ tổ みが chỉnh えられた. これは, nhất つのアプリケーションファイル, またはライブラリファイルに đối して phục sổ のコードをパッケージし, thật hành thời に tối thích なバージョンが tuyển 択されるというものである.

Microsoft Windowsは, 2005 niên 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 lai のx86 bản において, Windows XP の nội bộ バージョンは 5.1.2600, Windows Server は 5.2.3790 であったが, x64 bản においてはビルド phiên hào が đồng nhất であり ( 5.2.3790.1830 SP1 ), システムアップデートも thống nhất された.

Windows Vistaは2007 niên 1 nguyệt に,Windows 7は2009 niên 7 nguyệt に,Windows 8は2012 niên 10 nguyệt にリリースされた. いずれのOSも, x86 に gia えて, 64ビット(x64) bản としてx64をサポートするが, Itanium をサポートしない.

Windows Server 2008は2008 niên 2 nguyệt にリリースされ, x86 bản, x64 bản に gia えて,IA-64ItaniumBản としてサポートした.Windows Server 2008 R2では x86 bản のリリースが đả ち thiết られ, x64 bản と Itanium bản のみリリースした. Itanium bản はこの bản が tối chung リリースとなり,Windows Server 2012では x64 bản だけがリリースされた.

x64 bản Windowsには dĩ hạ のような cơ năng がある.

  • 1プロセスあたり8TB ( Windows 8まで ) hựu は128TB ( Windows 8.1 dĩ hàng ) のユーザーモード仮 tưởng アドレス không gian. x64のプログラムは, "large address aware" オプションを phó けてリンクされていれば, これらのすべてを sử dụng できる. ただし, bổ trợ ký ức trang trí ( すなわち, ハードディスク ) の dung lượng により sử dụng できる tối đại trị は, chế hạn される. Nhất phương, 32ビット bản Windowsで đề cung されているユーザーモード仮 tưởng アドレス không gian は2GBである.
  • オペレーティングシステム dụng の8TB ( Windows 8まで ) hựu は128TB ( Windows 8.1 dĩ hàng ) のカーネルモード仮 tưởng アドレス không gian. Nhất phương, 32ビット bản Windowsで đề cung されているカーネルモードアドレス không gian は2GBである. この tăng gia した không gian のメリットは, ファイルシステムのキャッシュやカーネルモードヒープに sử dụng できる. Windows 8までのWindowsはプロセッサーで thật trang されている256TBのアドレス không gian のうち hợp kế 16TBしか sử dụng できない. これは, sơ kỳ のAMD64がCMPXCHG16B mệnh lệnh をサポートしていないためである[36].
  • WOW64を sử dụng して, kí 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 できる. Nhấ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 に tá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データモデルを thải dụng. intとlongは32ビット, long longは64ビット, ポインタとポインタから phái sinh したデータ 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)を tước trừ したためである.
  • 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はスレッドインフォメーションブロックの tối sơ のメンバーのアドレスである. この quy tắc を duy trì することによりx64 bản Windowsの khai phát が dung dịch になった. しかし, AMDに đối して, LongモードでFS, GSセグメントの cơ năng を bảo trì することを yếu cầu することになった. ( ただし, セグメントアドレッシング tự thể は, cận đại đích なオペレーティングシステムで sử われるものではない )
  • Microsoft Visual Studio2005 dĩ 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].

Cước chú

Biên tập
  1. ^Đại học などHọc thuậtの thế giới や,オープンソースのプロジェクトなどでは, ( hỗ hoán quan hệ が minh bạch で, đặc định メーカー danh も nhập っていない danh xưng なので ) “x86-64” と hô ぶことを hảo み, AMD xã やAMDと quan liên が thâm い hội xã では “AMD64” と hô ぶことを hảo み, マイクロソフト xã やサン・マイクロシステムズ( hậu にオラクルに mãi thâu された hội xã ) は đoản く “x64” と hô ぶことを hảo む[1][2].
  1. ^Chu thức hội xã インプレス (2023 niên 5 nguyệt 22 nhật ). “Intel, tân “X86-S” アーキテクチャで8086 hỗ hoán を thiết り xá て”.PC Watch.2023 niên 6 nguyệt 4 nhậtDuyệt lãm.
  2. ^Introducing Intel® Advanced Performance Extensions (Intel® APX)”.Intel(2024 niên 3 nguyệt 5 nhật ).2024 niên 3 nguyệt 5 nhậtDuyệt lãm.
  3. ^abNhật bổn AMD, Opteronの phát biểu hội を khai thôi”.pc.watch.impress.co.jp.2023 niên 6 nguyệt 4 nhậtDuyệt lãm.
  4. ^Nhật bổn AMD, Athlon 64の phát biểu hội を khai thôi”.pc.watch.impress.co.jp.2023 niên 6 nguyệt 4 nhậtDuyệt lãm.
  5. ^AMD, X86-64アーキテクチャのプログラミングガイドを công khai”.pc.watch.impress.co.jp.2023 niên 6 nguyệt 4 nhậtDuyệt lãm.
  6. ^Hậu đằng hoằng mậu のWeekly hải ngoại ニュース”.pc.watch.impress.co.jp.2023 niên 6 nguyệt 4 nhậtDuyệt lãm.
  7. ^abAMD Corporation (2011 niên 5 nguyệt ). “Volume 2: System Programming”(pdf).AMD64 Architecture Programmer's Manual.AMD Corporation.2011 niên 10 nguyệt 29 nhậtDuyệt lãm.
  8. ^IBM Corporation (2007 niên 9 nguyệt 6 nhật ). “IBM WebSphere Application Server 64-bit Performance Demystified”.p. 14.2010 niên 4 nguyệt 9 nhậtDuyệ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. "”
  9. ^これらの tân しい hô xuất quy ước は, đương sơ からレジスタ bổn sổ が đa いRISC hệ CPUではすでに thật tích があった sĩ dạng である.
  10. ^Tường tế についてはWindows NT hệBiểuを tham chiếu のこと.
  11. ^Cựu hình thức のコードのための phù động tiểu sổ điểm サポート (Visual C++)”.MSDNライブラリ.マイクロソフト.2016 niên 1 nguyệt 16 nhậtDuyệt lãm.
  12. ^オレゴン châuウィラメットバレー(Willamette Valley)を lưu れるYamhill xuyên から lai た danh tiền である.
  13. ^"Craig Barrett confirms 64 bit address extensions for Xeon. And Prescott", from The Inquirer
  14. ^"A Roundup of 64-Bit Computing", from internetnews.com
  15. ^オレゴン châu を lưu れるクラッカマス xuyên (Clackamas River)の danh tiền に do lai し,ウィラメット xuyên(Willamette River)の chi lưu である.
  16. ^"Intel® 64 Architecture"
  17. ^Hậu đằng hoằng mậu のWeekly hải ngoại ニュース Intelの64bit拡 trương kỹ thuật “Clackamas” がAMD64と hỗ hoán である mê”.pc.watch.impress.co.jp.2023 niên 6 nguyệt 4 nhậtDuyệt lãm.
  18. ^Intel, 64bit拡 trương はAMD64 hỗ hoán と phát biểu”.pc.watch.impress.co.jp.2023 niên 6 nguyệt 4 nhậtDuyệt lãm.
  19. ^“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 ) の変 canh điểm として “CPUID Fn[0000_0001]_ECX CMPXCHG16B (bit 13) added.” と ký tái されている.
  20. ^8080のPUSH PSW mệnh lệnh をLAHF / XCHG AL, AH / PUSH AXとエミュレートできる.
  21. ^VMware Player 5.0 インストール yếu kiện
  22. ^PREFETCHW mệnh lệnh はメモリからデータをキャッシュラインにプリフェッチし, そのデータがあとで thư き hoán えられることを tưởng định してあらかじめキャッシュラインの trạng thái をModified( thư き hoán えあり ) にする mệnh lệnh である. データが thư き込まれた thời điểm でModifiedに変 canh するよりも tốc く động tác することが kỳ đãi できる.
  23. ^AMDのドキュメント “Cross-Vendor Migration” のPrefetch Instructionsにfamily 15/model 6/stepping 1 dĩ hàng のCPU, すなわちCedarMillコアからこの mệnh lệnh をNOPとして処 lý するようになったと thuyết minh がある.
  24. ^Microsoft xã のCoreinfoツールでこれらの mệnh lệnh のサポート trạng huống を xác nhận できる.
  25. ^MS công thức サイトのWindows 8 のシステム yếu kiệnページにあるWindows 8.1 tiết に “64 ビット PC に 64 ビット bản OS をインストールする tràng hợp, プロセッサが CMPXCHG16b, PrefetchW, LAHF/SAHF をサポートしている tất yếu があります” と ký tái されている.
  26. ^Windows 10 システム yếu kiện
  27. ^JWasm / Feature Requests / #10 MOVD/MOVQ in 64-bit (was: Another MMX code problem)”.2020 niên 6 nguyệt 9 nhậtDuyệt lãm.
  28. ^43215 – x86-64: Nonstandard instruction "movd %xmm0, %rax"”.2020 niên 6 nguyệt 9 nhậtDuyệt lãm.
  29. ^AMD64 Architecture Programmer's Manual
  30. ^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.
  31. ^AMD・インテル hệ アーキテクチャではないが,モトローラMC68000ではアドレス không gian が24ビットだったがアドレスレジスタは32ビットだった. そのためアプリケーションなどが thượng vị 8ビットを thắng thủ に sử dụng していたケースがあり, のちにMC68020でアドレス không gian が32ビット hóa された tế に vấn đề になったことがあった.
  32. ^しかし thật tế のところ, OS khai phát giả はそのような sự tình を tri っていてもアプリケーション khai phát giả は tri らないのが hiện thật である.5level-paging.txt”.2020 niên 4 nguyệt 5 nhậtDuyệ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.”
  33. ^ Belousov, Konstantin (2020 niên 8 nguyệt 23 nhật ). “amd64 pmap: LA57 AKA 5-level paging”.FreeBSD Git repositories.The FreeBSD Project.2024 niên 7 nguyệt 14 nhậtDuyệt lãm. “Since LA57 was moved to the main SDM document with revision 072,...”FreeBSDへLA57のサポートを truy gia するコミットログ.
  34. ^ある tràng sở のメモリを thư き込み khả năng かつ thật hành khả năng の trạng thái に trí かず, thư き込みのみか thật hành のみかどちらか nhất phương だけに chế hạn すること.
  35. ^Thanh thủy lý sử の “イニシャルB” đệ 145 hồi: 64bit bản Windows “Windows XP Professional x64 Edition” đăng tràng”.bb.watch.impress.co.jp.2023 niên 6 nguyệt 4 nhậtDuyệt lãm.
  36. ^Windows Internals FIFTH EDITION p.750, Mark E. Runssinovich, David A. Solomon, Microsoft PressISBN 978-0-7356-2530-3
  37. ^『 đồ giải 64ビットがわかる』 kỹ thuật bình luận xã, 2006 niên.ISBN 4774127353.162 hiệt

Tham khảo văn hiến

Biên tập

Quan liên hạng mục

Biên tập

Ngoại bộ リンク

Biên tập