x64

Các xã によるAMD64 trao đổi 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 セット, 続けてインテルが 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 になっている.

Đạ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ập

PC 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ập

64ビット の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ập

AMDが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 にインテル のSSESSE2を 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 の 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 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ập

AMD64で拡 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ậ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

従 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 2Intel AtomでもIntel 64が chọn dùng された.

Intel 64を thật trang しているCPUは dưới の も の がある.

AMD64とIntel 64 の sai biệt

Biên tập

AMD64と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ập

Cơ 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 された.

CPU microarchitecture levels
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 など
すべて の 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 năm khoảnh の Intel Nehalem nhiều thế hệ lấy 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 năm khoảnh の Intel Haswell nhiều thế hệ lấy hàng
IntelHaswellLấy hàng
Intel (Atom)GracemontLấy hàng
AMDExcavatorLấ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
IntelSkylakeLấy hàng
AMDZen 4Lấy hàng

AVX512BW vdbpsadbw
AVX512CD vplzcntd
AVX512DQ vpmullq
AVX512VL N/A

オペレーティングシステム の trao đổi tính と tráp い

Biên tập

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

FreeBSDは, 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プラットフォームとしている.

x64アーキテクチャー の サポートは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は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は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 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 択されるというも の である.

Microsoft 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-64ItaniumBả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
  1. ^Đạ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].
  1. ^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.
  2. ^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.
  3. ^abNhậ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.
  4. ^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.
  5. ^AMD, X86-64アーキテクチャ の プログラミングガイドを công khai”.pc.watch.impress.co.jp.2023 năm 6 nguyệt 4 ngàyDuyệt lãm.
  6. ^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.
  7. ^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.
  8. ^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. "”
  9. ^これら の 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 である.
  10. ^Kỹ càng tỉ mỉ についてはWindows NT hệBiểuを tham chiếu の こと.
  11. ^Cũ hình thức の コード の ため の di động số lẻ サポート (Visual C++)”.MSDNライブラリ.マイクロソフト.2016 năm 1 nguyệt 16 ngàyDuyệt lãm.
  12. ^オレゴン châuウィラメットバレー(Willamette Valley)を lưu れるYamhill xuyên から tới た danh trước である.
  13. ^"Craig Barrett confirms 64 bit address extensions for Xeon. And Prescott", from The Inquirer
  14. ^"A Roundup of 64-Bit Computing", from internetnews
  15. ^オレゴン châu を lưu れるクラッカマス xuyên (Clackamas River) の danh trước に ngọn nguồn し,ウィラメット xuyên(Willamette River) の nhánh sông である.
  16. ^"Intel® 64 Architecture"
  17. ^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.
  18. ^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.
  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 ) の 変 càng điểm として “CPUID Fn[0000_0001]_ECX CMPXCHG16B (bit 13) added.” と ghi lại されている.
  20. ^8080 の PUSH PSW mệnh lệnh をLAHF / XCHG AL, AH / PUSH AXとエミュレートできる.
  21. ^VMware Player 5.0 インストール văn kiện quan trọng
  22. ^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 できる.
  23. ^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 がある.
  24. ^Microsoft xã の Coreinfoツールでこれら の mệnh lệnh の サポート trạng huống を xác nhận できる.
  25. ^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 されている.
  26. ^Windows 10 システム văn kiện quan trọng
  27. ^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.
  28. ^43215 – x86-64: Nonstandard instruction "movd %xmm0, %rax"”.2020 năm 6 nguyệt 9 ngàyDuyệ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 tay に 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 を 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.”
  33. ^ 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 するコミットログ.
  34. ^ある 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 すること.
  35. ^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.
  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 năm.ISBN 4774127353.162 trang

Tham khảo văn hiến

Biên tập

Quan liền hạng mục

Biên tập

Phần ngoài リンク

Biên tập