x86-64

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา

AMD Opteronซีพียูตัวแรกที่แนะนำส่วนขยาย x86-64 ในปี 2003
ชุดห้าโวลุ่มของx86-64 Architecture Programmer's Guideซึ่งเผยแพร่และจัดจำหน่ายโดย AMD ในปี 2545

x86-64 (หรือเรียกว่าx64 , x86_64 , AMD64และIntel 64 ) [หมายเหตุ 1]เป็น64 บิตรุ่นของx 86 ชุดการเรียนการสอนได้รับการปล่อยตัวครั้งแรกในปี 1999 มันแนะนำสองโหมดใหม่ของการดำเนินงานโหมด 64 บิต และโหมดความเข้ากันได้ พร้อมด้วยโหมดการเพจ 4 ระดับใหม่

ด้วยโหมด 64 บิตและโหมดการเพจใหม่ ทำให้รองรับหน่วยความจำเสมือนและหน่วยความจำกายภาพในปริมาณที่มากกว่ามากเมื่อเทียบกับรุ่นก่อนแบบ 32 บิต ทำให้โปรแกรมสามารถจัดเก็บข้อมูลจำนวนมากในหน่วยความจำได้ x86-64 ยังขยายรีจิสเตอร์เอนกประสงค์เป็น 64 บิต และขยายจำนวนจาก 8 (ซึ่งบางรายการมีฟังก์ชันจำกัดหรือตายตัว เช่น สำหรับการจัดการสแต็ก) เป็น 16 (ทั่วไปทั้งหมด) และให้การปรับปรุงอื่นๆ มากมายรองรับการทำงานของจุดทศนิยมผ่านคำสั่งบังคับเหมือนSSE2และโดยทั่วไปจะไม่ใช้การลงทะเบียนรูปแบบx87 / MMX (แต่ยังคงใช้งานได้แม้ในโหมด 64 บิต) แทน ชุด 16ใช้เวกเตอร์รีจิสเตอร์แต่ละ 128 บิต (แต่ละคนลงทะเบียนสามารถเก็บหนึ่งหรือสองแม่นยำสองตัวเลขหรือ 1-4 แม่นยำเดียวตัวเลขหรือรูปแบบต่างๆจำนวนเต็ม.) ในโหมด 64 บิต, คำแนะนำจะปรับเปลี่ยนให้การสนับสนุน 64 บิตตัวถูกดำเนินการและ 64 บิตโหมด

โหมดความเข้ากันได้ที่กำหนดไว้ในสถาปัตยกรรมช่วยให้แอปพลิเคชันผู้ใช้แบบ 16 และ 32 บิตสามารถเรียกใช้แบบไม่แก้ไข โดยอยู่ร่วมกับแอปพลิเคชัน 64 บิตได้หากระบบปฏิบัติการ 64 บิตรองรับ[11] [หมายเหตุ 2]เนื่องจากชุดคำสั่ง x86 16 บิตและ 32 บิตแบบเต็มยังคงใช้งานในฮาร์ดแวร์โดยไม่มีการจำลองแบบแทรกแซงไฟล์เรียกทำงานที่เก่ากว่าเหล่านี้สามารถทำงานโดยมีการปรับประสิทธิภาพเพียงเล็กน้อยหรือไม่มีเลย[13] ในขณะที่แอพพลิเคชั่นที่ใหม่กว่าหรือที่แก้ไขแล้วสามารถทำได้ ใช้ประโยชน์จากคุณลักษณะใหม่ของการออกแบบโปรเซสเซอร์เพื่อให้ได้รับการปรับปรุงประสิทธิภาพ นอกจากนี้ โปรเซสเซอร์ที่สนับสนุน x86-64 ยังคงเปิดทำงานในโหมดจริงเพื่อความเข้ากันได้กับ8086เป็น x86 โปรเซสเซอร์สนับสนุนโหมดการป้องกันได้กระทำตั้งแต่80286

ข้อกำหนดเดิมที่สร้างขึ้นโดยเอเอ็มดีและปล่อยออกมาในปี 2000 ได้รับการดำเนินการโดยเอเอ็มดีอินเทลและVIA AMD K8 สถาปัตยกรรมในOpteronและAthlon 64โปรเซสเซอร์เป็นครั้งแรกที่จะใช้มัน นี่เป็นส่วนเสริมที่สำคัญครั้งแรกของสถาปัตยกรรมx86 ที่ออกแบบโดยบริษัทอื่นที่ไม่ใช่ Intel Intel ถูกบังคับให้ปฏิบัติตามและแนะนำตระกูลNetBurstที่ได้รับการดัดแปลงซึ่งเข้ากันได้กับซอฟต์แวร์ที่เข้ากันได้กับข้อกำหนดของ AMD VIA เทคโนโลยีแนะนำ x86-64 สถาปัตยกรรม VIA อิสยาห์ของพวกเขากับVIA Nano

สถาปัตยกรรม x86-64 แตกต่างจากสถาปัตยกรรมIntel Itanium (เดิมคือIA-64 ) สถาปัตยกรรมเข้ากันไม่ได้กับระดับชุดคำสั่งดั้งเดิม และระบบปฏิบัติการและแอปพลิเคชันที่คอมไพล์สำหรับตัวใดตัวหนึ่งไม่สามารถเรียกใช้ในอีกระบบหนึ่งได้

AMD64

โลโก้ AMD64

ประวัติ

AMD64 (หรือที่AMDเรียกกันอย่างหลากหลายในเอกสารและเอกสารประกอบว่า “AMD 64-bit Technology” และ “AMD x86-64 Architecture”) ถูกสร้างขึ้นเพื่อเป็นทางเลือกให้กับสถาปัตยกรรม IA-64 ที่แตกต่างกันอย่างสิ้นเชิงซึ่งออกแบบโดยIntelและHewlett-Packardซึ่งเข้ากันไม่ได้กับIA-32ซึ่งเป็นสถาปัตยกรรมx86 รุ่น 32 บิตเดิมทีประกาศในปี 2542 [14]โดยมีคุณสมบัติครบถ้วนในเดือนสิงหาคม พ.ศ. 2543 [15]สถาปัตยกรรม AMD64 ถูกวางตำแหน่งโดย AMD ตั้งแต่เริ่มแรกว่าเป็นวิธีการวิวัฒนาการในการเพิ่มการประมวลผลแบบ 64 บิตความสามารถสำหรับสถาปัตยกรรม x86 ที่มีอยู่ในขณะที่สนับสนุนรหัส x86 แบบ 32 บิต แบบเดิมซึ่งต่างจากแนวทางของ Intel ในการสร้างสถาปัตยกรรม 64 บิตใหม่ทั้งหมดด้วย IA-64

ครั้งแรก AMD64 ได้ตามความOpteronได้รับการปล่อยตัวในเมษายน 2003

การใช้งาน

โปรเซสเซอร์ของ AMD ที่ใช้สถาปัตยกรรม AMD64 ได้แก่Opteron , Athlon 64 , Athlon 64 X2 , Athlon 64 FX , Athlon II (ตามด้วย "X2", "X3" หรือ "X4" เพื่อระบุจำนวนคอร์ และรุ่น XLT), Turion 64 , Turion 64 X2 , Sempron (ก้าว "Palermo" E6 และรุ่น "Manila" ทั้งหมด), Phenom (ตามด้วย "X3" หรือ "X4" เพื่อระบุจำนวนคอร์), Phenom II (ตามด้วย "X2", " X3", "X4" หรือ "X6" เพื่อระบุจำนวนคอร์), FX ,Fusion/APUและRyzen / Epyc . [ต้องการการอ้างอิง ]

ลักษณะทางสถาปัตยกรรม

การกำหนดลักษณะหลักของ AMD64 คือการมี 64 บิตทั่วไปวัตถุประสงค์ลงทะเบียนหน่วยประมวลผล (เช่น Rax และ RBX) 64 บิตจำนวนเต็มดำเนินการทางคณิตศาสตร์และตรรกะและ 64 บิตที่อยู่เสมือน [ ต้องการอ้างอิง ] นักออกแบบใช้โอกาสนี้ในการปรับปรุงด้านอื่นๆ เช่นกัน

การเปลี่ยนแปลงที่สำคัญที่สุดบางอย่าง[ ตามใคร? ]อธิบายไว้ด้านล่าง: [ ต้องการการอ้างอิง ]

ความสามารถจำนวนเต็ม 64 บิต
ทั้งหมดลงทะเบียนเพื่อใช้งานทั่วไป (GPRS) จะขยายจาก 32  บิตเป็น 64 บิตและดำเนินการทางคณิตศาสตร์และตรรกะที่ทุกหน่วยความจำในการลงทะเบียนและลงทะเบียนเพื่อการดำเนินงานหน่วยความจำ ฯลฯ สามารถทำงานได้โดยตรงบนจำนวนเต็ม 64 บิต พุชและป๊อปอัพบนสแต็กเริ่มต้นเป็นก้าวย่าง 8 ไบต์ และพอยน์เตอร์กว้าง 8 ไบต์
ทะเบียนเพิ่มเติม
นอกเหนือจากการเพิ่มขนาดของรีจิสเตอร์เอนกประสงค์แล้ว จำนวนรีจิสเตอร์เอนกประสงค์ที่มีชื่อยังเพิ่มขึ้นจากแปดรายการ (เช่นeax , ecx , edx , ebx , esp , ebp , esi , edi ) ใน x86 เป็น 16 (เช่นrax , RCX , RDX , RBX , RSP , RBP , RSI , RDI , R8 , R9 , R10 , R11 , R12 , R13 ,r14 , r15 ). ดังนั้นจึงเป็นไปได้ที่จะเก็บตัวแปรโลคัลไว้ในรีจิสเตอร์มากกว่าสแต็ก และให้รีจิสเตอร์มีค่าคงที่ที่เข้าถึงบ่อย อาร์กิวเมนต์สำหรับรูทีนย่อยที่เล็กและรวดเร็วอาจถูกส่งผ่านในรีจิสเตอร์ในระดับที่มากขึ้น
AMD64 ยังคงมีการลงทะเบียนน้อยกว่าชุดคำสั่งRISC จำนวนมาก(เช่นPA-RISC , Power ISAและMIPSมี 32 GPRs; Alpha , 64-bit ARMและSPARCมี 31) หรือเครื่องคล้ายVLIWเช่นIA-64 (ซึ่ง มี 128 ทะเบียน) อย่างไรก็ตาม การใช้งาน AMD64 อาจมีรีจิสเตอร์ภายในมากกว่าจำนวนรีจิสเตอร์สถาปัตยกรรมที่เปิดเผยโดยชุดคำสั่ง (ดูการเปลี่ยนชื่อรีจิสเตอร์ ) (ตัวอย่างเช่น คอร์ AMD Zen มี 168 64 บิตจำนวนเต็มและ 160 128 บิตเวกเตอร์ทศนิยมทางกายภาพรีจิสเตอร์ภายใน)
การลงทะเบียน XMM (SSE) เพิ่มเติม
ในทำนองเดียวกัน จำนวนการลงทะเบียน XMM 128 บิต (ใช้สำหรับคำสั่งStreaming SIMD ) ก็เพิ่มขึ้นจาก 8 เป็น 16 เช่นกัน
สแต็กรีจิสเตอร์ x87 FPU ดั้งเดิมไม่รวมอยู่ในส่วนขยายขนาดไฟล์รีจิสเตอร์ในโหมด 64 บิต เมื่อเทียบกับรีจิสเตอร์ XMM ที่ใช้โดย SSE2 ซึ่งขยายออกไปแล้ว x87ทะเบียนสแต็คไม่ได้เป็นไฟล์ลงทะเบียนง่ายแม้ว่าจะไม่อนุญาตให้มีการเข้าถึงโดยตรงไปยังบุคคลที่ลงทะเบียนโดยการดำเนินการแลกเปลี่ยนค่าใช้จ่ายต่ำ
พื้นที่ที่อยู่เสมือนที่ใหญ่ขึ้น
สถาปัตยกรรม AMD64 กำหนดรูปแบบที่อยู่เสมือน 64 บิต ซึ่งใช้ 48 บิตลำดับต่ำในการใช้งานปัจจุบัน[11] : 120 อนุญาตให้มีพื้นที่ที่อยู่เสมือนสูงสุด 256  TiB (2 48 ไบต์ ) คำจำกัดความสถาปัตยกรรมอนุญาตให้เพิ่มขีดจำกัดนี้ในการใช้งานในอนาคตเป็น 64 บิตเต็ม[11] : 2  : 3  : 13  : 117  : 120 ขยายพื้นที่ที่อยู่เสมือนเป็น 16  EiB (2 64ไบต์) [16]นี่เทียบกับเพียง 4  GiB (2 32ไบต์) สำหรับ x86 [17]
This means that very large files can be operated on by mapping the entire file into the process's address space (which is often much faster than working with file read/write calls), rather than having to map regions of the file into and out of the address space.
Larger physical address space
The original implementation of the AMD64 architecture implemented 40-bit physical addresses and so could address up to 1 TiB (240 bytes) of RAM.[11]: 24  Current implementations of the AMD64 architecture (starting from AMD 10h microarchitecture) extend this to 48-bit physical addresses[18] and therefore can address up to 256 TiB (248 bytes) of RAM. The architecture permits extending this to 52 bits in the future[11]: 24 [19] (limited by the page table entry format);[11]: 131 สิ่งนี้จะช่วยให้สามารถกำหนดแอดเดรสของ RAM ได้สูงสุด 4 PiB สำหรับการเปรียบเทียบ โปรเซสเซอร์ 32 บิต x86 จำกัด RAM ไว้ที่ 64 GiB ในโหมดPhysical Address Extension (PAE), [20]หรือ 4 GiB ของ RAM ที่ไม่มีโหมด PAE [11] : 4 
พื้นที่ที่อยู่ทางกายภาพที่ใหญ่ขึ้นในโหมดดั้งเดิม
เมื่อทำงานในโหมดดั้งเดิมสถาปัตยกรรม AMD64 รองรับโหมดPhysical Address Extension (PAE) เช่นเดียวกับโปรเซสเซอร์ x86 ในปัจจุบันส่วนใหญ่ แต่ AMD64 ขยาย PAE จาก 36 บิตเป็นขีดจำกัดทางสถาปัตยกรรมที่ 52 บิตของที่อยู่จริง การดำเนินการใด ๆ จึงช่วยให้ขีด จำกัด อยู่เดียวกันทางกายภาพเช่นภายใต้โหมดยาว [11] : 24 
การเข้าถึงข้อมูลสัมพัทธ์ของตัวชี้คำสั่ง
Instructions can now reference data relative to the instruction pointer (RIP register). This makes position-independent code, as is often used in shared libraries and code loaded at run time, more efficient.
SSE instructions
The original AMD64 architecture adopted Intel's SSE and SSE2 as core instructions. These instruction sets provide a vector supplement to the scalar x87 FPU, for the single-precision and double-precision data types. SSE2 also offers integer vector operations, for data types ranging from 8bit to 64bit precision. This makes the vector capabilities of the architecture on par with those of the most advanced x86 processors of its time. These instructions can also be used in 32-bit mode. The proliferation of 64-bit processors has made these vector capabilities ubiquitous in home computers, allowing the improvement of the standards of 32-bit applications. The 32-bit edition of Windows 8, for example, requires the presence of SSE2 instructions.[21] SSE3 instructions and later Streaming SIMD Extensions instruction sets are not standard features of the architecture.
No-Execute bit
No-Execute bit หรือNX bit (บิต 63 ของรายการตารางหน้า) ช่วยให้ระบบปฏิบัติการระบุได้ว่าหน้าใดของพื้นที่ที่อยู่เสมือนสามารถมีโค้ดปฏิบัติการได้และไม่สามารถทำได้ ความพยายามที่จะรันโค้ดจากหน้าที่แท็กว่า "ไม่ดำเนินการ" จะส่งผลให้เกิดการละเมิดการเข้าถึงหน่วยความจำ คล้ายกับการพยายามเขียนไปยังเพจแบบอ่านอย่างเดียว ซึ่งจะทำให้โค้ดที่เป็นอันตรายเข้าควบคุมระบบได้ยากขึ้นผ่านการโจมตีแบบ" buffer overrun " หรือ "Unchecked buffer" คุณลักษณะที่คล้ายกันได้รับการบริการเกี่ยวกับการประมวลผล x86 ตั้งแต่80286เป็นแอตทริบิวต์ของอธิบายส่วน ; อย่างไรก็ตาม วิธีนี้ใช้ได้เฉพาะกับทั้งกลุ่มในแต่ละครั้ง
การกำหนดแอดเดรสแบบแบ่งกลุ่มถือเป็นโหมดการทำงานที่ล้าสมัยมาช้านาน และระบบปฏิบัติการพีซีปัจจุบันทั้งหมดก็เลี่ยงผ่าน โดยการตั้งค่าเซ็กเมนต์ทั้งหมดเป็นที่อยู่ฐานเป็นศูนย์และ (ในการใช้งานแบบ 32 บิต) ให้มีขนาด 4 GiB เอเอ็มดีเป็นผู้จำหน่าย x86 ตระกูลแรกที่ปรับใช้การไม่ดำเนินการในโหมดการกำหนดแอดเดรสเชิงเส้น คุณลักษณะนี้ยังมีให้ในโหมดดั้งเดิมบนโปรเซสเซอร์ AMD64 และโปรเซสเซอร์ Intel x86 ล่าสุด เมื่อใช้ PAE
การลบคุณสมบัติที่เก่ากว่า
คุณสมบัติ "การเขียนโปรแกรมระบบ" บางประการของสถาปัตยกรรม x86 นั้นไม่ได้ใช้หรือใช้งานน้อยเกินไปในระบบปฏิบัติการสมัยใหม่ และไม่มีให้ใช้งานบน AMD64 ในโหมดยาว (64 บิตและความเข้ากันได้) หรือมีอยู่ในรูปแบบที่จำกัดเท่านั้น เหล่านี้รวมถึงการแบ่งกลุ่มที่อยู่ (แม้ว่า FS และ GS ส่วนจะถูกเก็บไว้ในรูปแบบร่องรอยเพื่อใช้เป็นตัวชี้เสริมฐานการดำเนินงานโครงสร้างระบบ) [11] : 70 งานสวิทช์รัฐกลไกและเสมือน 8086 โหมด. These features remain fully implemented in "legacy mode", allowing these processors to run 32-bit and 16-bit operating systems without modifications. Some instructions that proved to be rarely useful are not supported in 64-bit mode, including saving/restoring of segment registers on the stack, saving/restoring of all registers (PUSHA/POPA), decimal arithmetic, BOUND and INTO instructions, and "far" jumps and calls with immediate operands.

Virtual address space details

Canonical form addresses

Canonical address space implementations (diagrams not to scale)
Current 48-bit implementation
57-bit implementation
64-bit implementation

แม้ว่าที่อยู่เสมือนจะกว้าง 64 บิตในโหมด 64 บิต แต่การใช้งานปัจจุบัน (และชิปทั้งหมดที่ทราบว่าอยู่ในขั้นตอนการวางแผน) ไม่อนุญาตให้ใช้พื้นที่ที่อยู่เสมือนทั้งหมด 2 64ไบต์ (16  EiB ) ซึ่งจะมีขนาดประมาณสี่พันล้านเท่าของพื้นที่ที่อยู่เสมือนบนเครื่อง 32 บิต ระบบปฏิบัติการและแอปพลิเคชันส่วนใหญ่ไม่ต้องการพื้นที่ที่อยู่ขนาดใหญ่เช่นนี้สำหรับอนาคตอันใกล้ ดังนั้นการใช้ที่อยู่เสมือนที่กว้างดังกล่าวจะเพิ่มความซับซ้อนและค่าใช้จ่ายในการแปลที่อยู่โดยไม่เกิดประโยชน์อย่างแท้จริง AMD จึงตัดสินใจว่าในการใช้งานครั้งแรกของสถาปัตยกรรม จะมีการใช้ที่อยู่เสมือนเพียง 48 บิตที่มีนัยสำคัญน้อยที่สุดเท่านั้นในการแปลที่อยู่ ( ตารางหน้าค้นหา) [11] : 120 

นอกจากนี้ ข้อกำหนดของ AMD กำหนดให้ 16 บิตที่สำคัญที่สุดของที่อยู่เสมือนใดๆ บิต 48 ถึง 63 ต้องเป็นสำเนาของบิต 47 (ในลักษณะที่คล้ายกับการลงนามในส่วนขยาย ) หากไม่เป็นไปตามข้อกำหนด โปรเซสเซอร์จะยกข้อยกเว้น [11] : 131 ที่อยู่ที่ปฏิบัติตามกฎนี้เรียกว่า "รูปแบบบัญญัติ" [11] : 130 ที่อยู่แบบฟอร์ม Canonical เรียกใช้จาก 0 ถึง 00007FFF'FFFFFFFF และจาก FFFF8000'00000000 ถึง FFFFFFFF'FFFFFFFF สำหรับพื้นที่ที่อยู่เสมือนที่ใช้งานได้ทั้งหมด 256  TiB ซึ่งยังคงมีขนาดใหญ่กว่าพื้นที่ที่อยู่เสมือน 4 GiB ของเครื่อง 32 บิต 65,536 เท่า

This feature eases later scalability to true 64-bit addressing. Many operating systems (including, but not limited to, the Windows NT family) take the higher-addressed half of the address space (named kernel space) for themselves and leave the lower-addressed half (user space) for application code, user mode stacks, heaps, and other data regions.[22]การออกแบบ "ที่อยู่ตามรูปแบบบัญญัติ" ช่วยให้มั่นใจได้ว่าทุกการใช้งานที่สอดคล้องกับ AMD64 มีหน่วยความจำสองส่วน: ครึ่งล่างเริ่มต้นที่ 00000000'00000000 และ "เพิ่มขึ้น" เมื่อมีบิตที่อยู่เสมือนมากขึ้น ในขณะที่ครึ่งหนึ่งที่สูงกว่าจะ "เชื่อมต่อ" ไปที่ด้านบนของพื้นที่ที่อยู่และขยายลงมา นอกจากนี้ การบังคับใช้ "รูปแบบบัญญัติ" ของที่อยู่โดยการตรวจสอบบิตที่อยู่ที่ไม่ได้ใช้จะป้องกันการใช้งานโดยระบบปฏิบัติการในพอยน์เตอร์ที่ติดแท็กเช่น แฟล็ก เครื่องหมายสิทธิพิเศษ ฯลฯ เนื่องจากการใช้งานดังกล่าวอาจกลายเป็นปัญหาได้เมื่อสถาปัตยกรรมถูกขยายเพื่อปรับใช้เสมือนมากขึ้น บิตที่อยู่

Windows เวอร์ชันแรกสำหรับ x64 ไม่ได้ใช้ 256 TiB แบบเต็มด้วยซ้ำ พวกเขาถูก จำกัด ไว้เพียง 8 TiB ของพื้นที่ผู้ใช้และ 8 TiB ของพื้นที่เคอร์เนล [22] Windows ไม่รองรับพื้นที่ที่อยู่ 48 บิตทั้งหมดจนกระทั่งWindows 8.1ซึ่งเปิดตัวในเดือนตุลาคม 2556 [22]

โครงสร้างตารางหน้า

โหมดการกำหนดแอดเดรส 64 บิต (" โหมดยาว ") เป็นซูเปอร์เซ็ตของส่วนขยายที่อยู่ทางกายภาพ (PAE); ด้วยเหตุนี้ขนาดหน้าอาจเป็น 4  KiB (2 12ไบต์) หรือ 2  MiB (2 21ไบต์) [11] :โหมดยาว120 โหมดยังรองรับขนาดหน้า 1  GiB (2 30ไบต์) [11] : 120 แทนที่จะเป็นระบบตารางเพจสามระดับที่ใช้โดยระบบในโหมด PAE ระบบที่ทำงานในโหมดยาวใช้ตารางเพจสี่ระดับ: ตารางตัวชี้ไดเรกทอรีหน้าของ PAE is extended from four entries to 512, and an additional Page-Map Level 4 (PML4) Table is added, containing 512 entries in 48-bit implementations.[11]: 131  A full mapping hierarchy of 4 KiB pages for the whole 48-bit space would take a bit more than 512 GiB of memory (about 0.195% of the 256 TiB virtual space).

Intel has implemented a scheme with a 5-level page table, which allows Intel 64 processors to support a 57-bit virtual address space.[23] Further extensions may allow full 64-bit virtual address space and physical memory by expanding the page table entry size to 128-bit, and reduce page walks in the 5-level hierarchy by using a larger 64 KiB page allocation size that still supports 4 KiB page operations for backward compatibility.[24]

Operating system limits

The operating system can also limit the virtual address space. Details, where applicable, are given in the "Operating system compatibility and characteristics" section.

รายละเอียดพื้นที่ที่อยู่ทางกายภาพ

โพรเซสเซอร์ AMD64 ปัจจุบันสนับสนุนพื้นที่ที่อยู่ทางกายภาพของถึง 2 48ไบต์ของแรมหรือ 256  TiB [18]อย่างไรก็ตาม ณ ปี 2020 ยังไม่มีมาเธอร์บอร์ด x86-64 ที่รองรับ RAM 256 TiB [25] [26] [27] [28] [ การตรวจสอบล้มเหลว ]ระบบปฏิบัติการอาจกำหนดข้อจำกัดเพิ่มเติมเกี่ยวกับจำนวน RAM ที่ใช้งานได้หรือรองรับ รายละเอียดเกี่ยวกับประเด็นนี้อยู่ในส่วน " ความเข้ากันได้ของระบบปฏิบัติการและคุณลักษณะ " ของบทความนี้

โหมดการทำงาน

สถาปัตยกรรมมีโหมดการทำงานหลักสามโหมด โหมดยาว โหมดดั้งเดิม และโหมดจริง

ปฏิบัติการ ระบบปฏิบัติการที่จำเป็น ประเภทของรหัสที่กำลังเรียกใช้ ขนาด
โหมด โหมดย่อย ที่อยู่ (ค่าเริ่มต้น) ตัวถูกดำเนินการ (ค่าเริ่มต้น) ตัวถูกดำเนินการ (รองรับประเภท) ไฟล์ลงทะเบียน

โหมดยาว
โหมด 64 บิต OS 64 บิต รหัส 64 บิต 64-บิต 32 บิต 8, 16, 32 หรือ 64 บิต 16 การลงทะเบียนต่อไฟล์
โหมดความเข้ากันได้ รหัส 32 บิต 32 บิต 32 บิต 8, 16 หรือ 32 บิต 8 การลงทะเบียนต่อไฟล์
รหัสโหมดป้องกัน 16 บิต 16 บิต 16 บิต 8, 16 หรือ 32 บิต 8 การลงทะเบียนต่อไฟล์

โหมด เลกาซี่
โหมดป้องกัน Bootloaderหรือ OS แบบ 32 บิต รหัส 32 บิต 32 บิต 32 บิต 8, 16 หรือ 32 บิต 8 การลงทะเบียนต่อไฟล์
OS . โหมดป้องกัน 16 บิต รหัสโหมดป้องกัน 16 บิต 16 บิต 16 บิต 8, 16 หรือ 32 บิต[m 1] 8 การลงทะเบียนต่อไฟล์
โหมดเสมือน 8086 OS . โหมดป้องกัน 16 บิตหรือ 32 บิต โค้ดโหมดจริงบางส่วน 16 บิต 16 บิต 8, 16 หรือ 32 บิต[m 1] 8 การลงทะเบียนต่อไฟล์
โหมดไม่จริง Bootloaderหรือ OS จริงโหมด รหัสโหมดจริง 16, 20 หรือ 32 บิต 16 บิต 8, 16 หรือ 32 บิต[m 1] 8 การลงทะเบียนต่อไฟล์
โหมดจริง Bootloader , ระบบปฏิบัติการโหมดจริง หรือ OS ใดๆ ที่เชื่อมต่อกับอินเทอร์เฟซสไตล์BIOSกับเฟิร์มแวร์[29] รหัสโหมดจริง 16, 20 หรือ21บิต 16 บิต 8, 16 หรือ 32 บิต[m 1] 8 การลงทะเบียนต่อไฟล์
  1. ^ a b c d โปรดทราบว่าโค้ด 16 บิตที่เขียนขึ้นสำหรับ 80286 และต่ำกว่าไม่ได้ใช้คำสั่งตัวถูกดำเนินการแบบ 32 บิต รหัสที่เขียนขึ้นสำหรับ 80386 ขึ้นไปสามารถใช้คำนำหน้าการแทนที่ขนาดตัวถูกดำเนินการ (0x66) โดยปกติคำนำหน้านี้จะใช้โดยโค้ดโหมดที่มีการป้องกันและยาวเพื่อวัตถุประสงค์ในการใช้ตัวถูกดำเนินการ 16 บิต เนื่องจากโค้ดดังกล่าวจะทำงานในส่วนโค้ดที่มีขนาดตัวถูกดำเนินการเริ่มต้นที่ 32 บิต ในโหมดจริง ขนาดตัวถูกดำเนินการเริ่มต้นคือ 16 บิต ดังนั้นคำนำหน้า 0x66 จะถูกตีความต่างกัน โดยเปลี่ยนขนาดตัวถูกดำเนินการเป็น 32 บิต
แผนภาพสถานะของโหมดการทำงาน x86-64

โหมดยาว

โหมดแบบยาวคือโหมดการทำงานหลักที่ตั้งใจไว้ของสถาปัตยกรรม เป็นการผสมผสานระหว่างโหมดเนทีฟ 64 บิตของโปรเซสเซอร์และโหมดความเข้ากันได้แบบ 32 บิตและ 16 บิต มันถูกใช้งานโดยระบบปฏิบัติการ 64 บิต ภายใต้ระบบปฏิบัติการ 64 บิต โปรแกรม 64 บิตทำงานภายใต้โหมด 64 บิต และแอปพลิเคชันโหมดป้องกัน 32 บิตและ 16 บิต (ที่ไม่จำเป็นต้องใช้โหมดจริงหรือโหมดเสมือน 8086 เพื่อดำเนินการใดๆ เวลา) ทำงานภายใต้โหมดความเข้ากันได้ โปรแกรมโหมดจริงและโปรแกรมที่ใช้โหมด 8086 เสมือนเมื่อใดก็ได้ไม่สามารถเรียกใช้ในโหมดยาวได้ เว้นแต่โหมดเหล่านั้นจะถูกจำลองในซอฟต์แวร์[11] : 11 อย่างไรก็ตาม โปรแกรมดังกล่าวอาจเริ่มต้นจากระบบปฏิบัติการที่ทำงานในโหมดยาวบนโปรเซสเซอร์ที่รองรับVT-xหรือAMD-V by creating a virtual processor running in the desired mode.

Since the basic instruction set is the same, there is almost no performance penalty for executing protected mode x86 code. This is unlike Intel's IA-64, where differences in the underlying instruction set mean that running 32-bit code must be done either in emulation of x86 (making the process slower) or with a dedicated x86 coprocessor. However, on the x86-64 platform, many x86 applications could benefit from a 64-bit recompile, due to the additional registers in 64-bit code and guaranteed SSE2-based FPU support, which a compilerสามารถใช้เพื่อการเพิ่มประสิทธิภาพ อย่างไรก็ตาม แอปพลิเคชันที่จัดการจำนวนเต็มที่มากกว่า 32 บิตเป็นประจำ เช่น อัลกอริธึมการเข้ารหัส จะต้องเขียนโค้ดใหม่เพื่อจัดการกับจำนวนเต็มขนาดใหญ่ เพื่อใช้ประโยชน์จากรีจิสเตอร์ 64 บิต

โหมดดั้งเดิม

โหมดดั้งเดิมคือโหมดที่โปรเซสเซอร์อยู่ในเมื่อไม่ได้อยู่ในโหมดยาว [11] : 14 ในโหมดนี้ ตัวประมวลผลจะทำหน้าที่เหมือนตัวประมวลผล x86 ที่เก่ากว่า และสามารถทำงานได้เฉพาะรหัส 16 บิตและ 32 บิต โหมด Legacy อนุญาตให้มีการกำหนดแอดเดรสเสมือนสูงสุด 32 บิต ซึ่งจำกัดพื้นที่ที่อยู่เสมือนไว้ที่ 4 GiB [11] : 14  : 24  : 118 โปรแกรม 64 บิตไม่สามารถเรียกใช้จากโหมดดั้งเดิมได้

โหมดป้องกัน

โหมดป้องกันถูกสร้างเป็นโหมดย่อยของโหมดดั้งเดิม [11] : 14 เป็นโหมดย่อยที่ระบบปฏิบัติการ 32 บิตและระบบปฏิบัติการโหมดป้องกัน 16 บิตทำงานเมื่อทำงานบนซีพียู x86-64 [11] : 14 

โหมดจริง

โหมดจริงคือโหมดเริ่มต้นของการทำงานเมื่อโปรเซสเซอร์ถูกเตรียมใช้งาน มันเข้ากันได้กับโปรเซสเซอร์ 8086และ8088ดั้งเดิม โหมดจริงถูกใช้เป็นหลักโดยระบบปฏิบัติการ bootloaders ซึ่งสถาปัตยกรรมต้องการการกำหนดค่ารายละเอียดหน่วยความจำเสมือนก่อนที่จะเปลี่ยนเป็นโหมดที่สูงขึ้น โหมดนี้ยังใช้โดยระบบปฏิบัติการใดๆ ที่ต้องการสื่อสารกับเฟิร์มแวร์ระบบด้วยอินเทอร์เฟซแบบBIOSแบบเดิม [29]

อินเทล 64

Intel 64คือการใช้งาน x86-64 ของ Intel ซึ่งใช้และนำไปใช้กับโปรเซสเซอร์ต่างๆ ที่ผลิตโดย Intel

ประวัติ

ในอดีต AMD ได้พัฒนาและผลิตโปรเซสเซอร์ด้วยชุดคำสั่งที่มีลวดลายตามการออกแบบดั้งเดิมของ Intel แต่ด้วย x86-64 บทบาทกลับตรงกันข้าม: Intel พบว่าตัวเองอยู่ในตำแหน่งการนำISAที่ AMD สร้างขึ้นเพื่อขยายไปยังสายโปรเซสเซอร์ x86 ของ Intel

โครงการของ Intel เดิมมีชื่อรหัสว่า Yamhill (หลังจากแม่น้ำ Yamhillใน Willamette Valley ของรัฐโอเรกอน) [ อ้างจำเป็น ]หลังจากหลายปีของการปฏิเสธการดำรงอยู่ของมัน Intel ประกาศในเดือนกุมภาพันธ์ 2547 IDFว่าโครงการกำลังดำเนินการอยู่Craig Barrettประธานของ Intel ในขณะนั้นยอมรับว่านี่เป็นหนึ่งในความลับที่แย่ที่สุดของพวกเขา[30] [31]

Intel's name for this instruction set has changed several times. The name used at the IDF was CT[32] (presumably[original research?] for Clackamas Technology, another codename from an Oregon river); within weeks they began referring to it as IA-32e (for IA-32 extensions) and in March 2004 unveiled the "official" name EM64T (Extended Memory 64 Technology). In late 2006 Intel began instead using the name Intel 64 for its implementation, paralleling AMD's use of the name AMD64.[33]

โปรเซสเซอร์ตัวแรกที่ใช้ Intel 64 คือโปรเซสเซอร์Xeonแบบหลายซ็อกเก็ตที่มีชื่อรหัสว่าNoconaในเดือนมิถุนายน 2547 ในทางตรงกันข้าม ชิป Prescott รุ่นแรก (กุมภาพันธ์ 2547) ไม่ได้เปิดใช้งานคุณสมบัตินี้ ต่อมา Intel เริ่มขาย Pentium 4s ที่เปิดใช้งาน Intel 64 โดยใช้รุ่น E0 ของ Prescott core ซึ่งขายในตลาด OEM ในชื่อ Pentium 4 รุ่น F การแก้ไข E0 ยังเพิ่ม eXecute Disable (XD) (ชื่อของ Intel สำหรับบิต NX ) กับ Intel 64 และได้รับการรวมอยู่ในปัจจุบันแล้ว Xeon ชื่อรหัสIrwindaleการเปิดตัว Intel 64 อย่างเป็นทางการของ Intel (ภายใต้ชื่อ EM64T ในขณะนั้น) ในโปรเซสเซอร์เดสก์ท็อปหลักคือ N0 stepping Prescott-2M

โปรเซสเซอร์โมบายล์ตัวแรกของ Intel ที่ใช้ Intel 64 คือรุ่นMeromของโปรเซสเซอร์ Core 2ซึ่งเปิดตัวเมื่อวันที่ 27 กรกฎาคม 2549 ไม่มีซีพียูโน้ตบุ๊กรุ่นก่อนหน้าของ Intel ( Core Duo , Pentium M , Celeron M , Mobile Pentium 4 ) ที่ใช้ Intel 64 .

การใช้งาน

โปรเซสเซอร์ของ Intel ที่ใช้สถาปัตยกรรม Intel64 ได้แก่Pentium 4 F-series/5x1 series, 506 และ 516, Celeron D models 3x1, 3x6, 355, 347, 352, 360 และ 365 และใหม่กว่าCeleronsทุกรุ่นของXeonตั้งแต่ " Nocona ", โปรเซสเซอร์ Pentium Dual-Core ทุกรุ่นตั้งแต่ " Merom-2M ", Atom 230, 330, D410, D425, D510, D525, N450, N455, N470, N475, N550, N570, N2600 และ N2800 ทุกรุ่น ของPentium D , Pentium Extreme Edition , Core 2 , Core i9 , Core i7 , Core i5และโปรเซสเซอร์ Core i3และโปรเซสเซอร์ Xeon Phi 7200 series

การใช้งาน x86-64 ของ VIA

VIA เทคโนโลยีที่นำมาดำเนินการครั้งแรกของพวกเขาของสถาปัตยกรรม x86-64 ในปี 2008 หลังจากห้าปีของการพัฒนาตามหมวดซีพียูCentaur เทคโนโลยี [34] ชื่อรหัสว่า "อิสยาห์" สถาปัตยกรรม 64 บิตเปิดตัวเมื่อวันที่ 24 มกราคม พ.ศ. 2551 [35]และเปิดตัวเมื่อวันที่ 29 พฤษภาคมภายใต้ชื่อแบรนด์VIA Nano (36)

โปรเซสเซอร์รองรับส่วนขยาย x86 เฉพาะของ VIA ที่ออกแบบมาเพื่อเพิ่มประสิทธิภาพในอุปกรณ์ที่ใช้พลังงานต่ำ เป็นที่คาดว่าสถาปัตยกรรมอิสยาห์จะเป็นสองเท่าที่รวดเร็วในการทำงานจำนวนเต็มและสี่ครั้งเร็วในจุดลอยตัวประสิทธิภาพเป็นรุ่นก่อนหน้าVIA เอสเธอร์ที่เทียบเท่าความเร็วสัญญาณนาฬิกาการใช้พลังงานคาดว่าจะเทียบเท่ากับซีพียู VIA รุ่นก่อน ด้วยพลังการออกแบบความร้อนตั้งแต่ 5 W ถึง 25 W [37] ด้วยการออกแบบใหม่ทั้งหมด สถาปัตยกรรม Isaiah ถูกสร้างขึ้นด้วยการสนับสนุนคุณสมบัติเช่น x86 -64 ชุดคำสั่งและx86 virtualizationซึ่งไม่มีในรุ่นก่อนVIA C7 line, while retaining their encryption extensions.

Microarchitecture levels

In 2020, through a cross-vendor collaboration, a few microarchitecture levels were defined, x86-64-v2, x86-64-v3 and x86-64-v4.[38] These levels define specific features that can be targeted by programmers to provide compile-time optimizations. The features exposed by each level are as follows:[39]

CPU microarchitecture levels
Level CPU features Example instruction
x86-64
(baseline: all x86-64 CPUs)
CMOV cmov
CX8 cmpxchg8b
FPU fld
FXSR fxsave
MMX emms
OSFXSR fxsave
SCE syscall
SSE cvtss2si
SSE2 cvtpi2pd
x86-64-v2
(circa 2009: Nehalem and Jaguar)

Also:

CMPXCHG16B cmpxchg16b
LAHF-SAHF lahf
POPCNT popcnt
SSE3 addsubpd
SSE4_1 Blendpd
SSE4_2 pcmpestri
SSSE3 ฟัดด์
x86-64-v3
(ประมาณปี 2015: Haswell และ Excavator)

อีกด้วย:

AVX vzeroall
AVX2 vpermd
BMI1 และน
BMI2 bzhi
F16C vcvtph2ps
FMA vfmadd132pd
LZCNT lzcnt
MOVBE movbe
OSXSAVE xgetbv
x86-64-v4
( ชุดย่อยเอนกประสงค์ของAVX-512 )
AVX512F kmovw
AVX512BW vdbpsadbw
AVX512CD vplzcntd
AVX512DQ vpmullq
AVX512VL n/a

ทุกระดับมีคุณสมบัติที่พบในระดับก่อนหน้า ส่วนขยายชุดคำสั่งที่ไม่เกี่ยวข้องกับการคำนวณเอนกประสงค์ รวมถึงAES-NIและRDRANDจะไม่รวมอยู่ในข้อกำหนดระดับ

ความแตกต่างระหว่าง AMD64 และ Intel 64

แม้ว่าเกือบเหมือนมีความแตกต่างระหว่างทั้งสองชุดการเรียนการสอนในความหมายของการไม่กี่คำแนะนำไม่ค่อยมีใครใช้เครื่อง (หรือสถานการณ์) ซึ่งส่วนใหญ่จะใช้สำหรับการเขียนโปรแกรมระบบ [40]โดยทั่วไปแล้ว คอมไพเลอร์จะสร้างไฟล์สั่งการ (เช่นรหัสเครื่อง ) ที่หลีกเลี่ยงความแตกต่างใดๆ อย่างน้อยก็สำหรับโปรแกรมแอปพลิเคชันทั่วไป ดังนั้นจึงเป็นที่สนใจของนักพัฒนาคอมไพเลอร์ ระบบปฏิบัติการ และอื่นๆ ที่คล้ายคลึงกันเป็นหลัก ซึ่งต้องจัดการกับคำแนะนำเฉพาะบุคคลและระบบพิเศษ

การใช้งานล่าสุด

  • Intel 64 BSFและBSRคำสั่งต่างจาก AMD64 เมื่อแหล่งที่มาเป็นศูนย์และขนาดตัวถูกดำเนินการคือ 32 บิต หน่วยประมวลผลชุดธงและใบศูนย์บน 32 บิตปลายทาง undefined [ ต้องการอ้างอิง ]โปรดทราบว่าเอกสารของ Intel ระบุว่าการลงทะเบียนปลายทางมีค่าที่ไม่ได้กำหนดไว้ในกรณีนี้ แต่ในทางปฏิบัติในซิลิคอนนั้นใช้ลักษณะการทำงานเดียวกันกับ AMD (ปลายทางไม่ได้แก้ไข) การอ้างสิทธิ์แยกต่างหากเกี่ยวกับอาจจะไม่รักษาบิตใน 32 ตัวบนยังไม่ได้รับการยืนยัน แต่ถูกตัดออกสำหรับ Core 2 และ Skylake เท่านั้น[41]ไม่ใช่สถาปัตยกรรมไมโคร Intel ทั้งหมดเช่น 64- บิต Pentium 4 หรือ Atom ที่ใช้พลังงานต่ำ
  • AMD64 ต้องการรูปแบบการอัปเดตไมโครโค้ดที่แตกต่างกันและควบคุม MSR (การลงทะเบียนเฉพาะรุ่น) ในขณะที่ Intel 64 ใช้การอัปเดตไมโครโค้ดที่ไม่เปลี่ยนแปลงจากโปรเซสเซอร์ 32 บิตเท่านั้น
  • Intel 64 ไม่มี MSR บางตัวที่ถือว่าเป็นสถาปัตยกรรมใน AMD64 ได้แก่SYSCFG, TOP_MEM, และTOP_MEM2.
  • Intel 64 อนุญาตSYSCALL/ SYSRETเฉพาะในโหมด 64 บิต (ไม่ใช่ในโหมดความเข้ากันได้), [42]และอนุญาตSYSENTER/ SYSEXITในทั้งสองโหมด [43] AMD64 ขาดSYSENTER/ SYSEXITทั้งในโหมดย่อยของโหมดยาว [11] : 33 
  • ในโหมด 64 บิต ใกล้กับสาขาที่มีคำนำหน้า 66H (การแทนที่ขนาดตัวถูกดำเนินการ) จะทำงานแตกต่างกัน Intel 64 ละเว้นคำนำหน้านี้: คำสั่งมีออฟเซ็ตขยายสัญญาณ 32 บิต และตัวชี้คำสั่งจะไม่ถูกตัดทอน AMD64 ใช้ฟิลด์ออฟเซ็ต 16 บิตในคำสั่ง และล้างตัวชี้คำสั่ง 48 บิตบนสุด
  • โปรเซสเซอร์ AMD ทำให้เกิดข้อยกเว้นที่ไม่ถูกต้องเมื่อดำเนินการFLDหรือFSTPส่งสัญญาณ NaN แบบ 80 บิต ในขณะที่โปรเซสเซอร์ Intel ไม่ทำเช่นนั้น
  • Intel 64 ขาดความสามารถในการบันทึกและกู้คืนสถานะจุดลอยตัวที่ลดลง (และเร็วกว่าด้วยเหตุนี้) (เกี่ยวข้องกับคำสั่งFXSAVEและFXRSTORคำสั่ง) [ ต้องการคำชี้แจง ]
  • AMD processors ever since Opteron Rev. E and Athlon 64 Rev. D have reintroduced limited support for segmentation, via the Long Mode Segment Limit Enable (LMSLE) bit, to ease virtualization of 64-bit guests.[44][45]
  • When returning to a non-canonical address using SYSRET, AMD64 processors execute the general protection fault handler in privilege level 3,[46] while on Intel 64 processors it is executed in privilege level 0.[47]

Older implementations

  • โปรเซสเซอร์ AMD64 รุ่นแรก (โดยทั่วไปบนซ็อกเก็ต 939 และ 940) ไม่มีCMPXCHG16Bคำสั่ง ซึ่งเป็นส่วนเสริมของCMPXCHG8Bคำสั่งที่มีอยู่ในโปรเซสเซอร์รุ่นหลัง80486ส่วนใหญ่เพื่อที่คล้ายกันCMPXCHG8B, CMPXCHG16Bช่วยให้การดำเนินงานของอะตอมใน octa คำ (ค่า 128 บิต) สิ่งนี้มีประโยชน์สำหรับอัลกอริธึมคู่ขนานที่ใช้การเปรียบเทียบและสลับกับข้อมูลที่ใหญ่กว่าขนาดของตัวชี้ ซึ่งพบได้ทั่วไปในอัลกอริธึมที่ไม่มีการล็อกและไม่ต้องรอโดยไม่มีCMPXCHG16Bใครต้องใช้วิธีแก้ไขปัญหาชั่วคราว เช่นส่วนที่สำคัญหรือแนวทางอื่นที่ไม่ต้องมีการล็อก[48]ขาดมันยังช่วยป้องกัน 64 บิตของ Windowsก่อนที่จะใช้ Windows 8.1 จากการมีโหมดผู้ใช้พื้นที่ที่อยู่มีขนาดใหญ่กว่า 8  TiB [49] Windows 8.1รุ่น 64 บิตต้องการคำแนะนำ [50]
  • ซีพียู AMD64 และ Intel 64 รุ่นแรกขาดLAHFและSAHFคำแนะนำในโหมด 64 บิต AMD แนะนำคำสั่งเหล่านี้ (เช่นในโหมด 64 บิตด้วย) กับโปรเซสเซอร์ Athlon 64, Opteron และ Turion 64 revision D ในเดือนมีนาคม 2548 [51] [52] [53]ในขณะที่ Intel แนะนำคำแนะนำด้วย Pentium 4 G1 stepping ในเดือนธันวาคม 2548 . Windows 8.1 รุ่น 64 บิตต้องการคุณสมบัตินี้ [50]
  • ซีพียู Intel รุ่นแรกที่มี Intel 64 ยังขาดบิต NXของสถาปัตยกรรม AMD64 คุณลักษณะนี้จำเป็นสำหรับ Windows 8.x ทุกเวอร์ชัน
  • Early Intel 64 implementations (Prescott and Cedar Mill) only allowed access to 64 GiB of physical memory while original AMD64 implementations allowed access to 1 TiB of physical memory. Recent[when?] AMD64 implementations provide 256 TiB of physical address space (and AMD plans an expansion to 4 PiB),[citation needed] while some Intel 64 implementations could address up to 64 TiB.[54] Physical memory capacities of this size are appropriate for large-scale applications (such as large databases), and high-performance computing (centrally oriented applications and scientific computing).

การรับบุตรบุญธรรม

แผนภูมิพื้นที่แสดงการเป็นตัวแทนของตระกูลไมโครโปรเซสเซอร์ต่างๆ ในรายการจัดอันดับซูเปอร์คอมพิวเตอร์ TOP500 ตั้งแต่ปี 1993 ถึง 2019 [55]

ในซูเปอร์คอมพิวเตอร์ที่ติดตามโดยTOP500การปรากฏตัวของส่วนขยาย 64 บิตสำหรับสถาปัตยกรรม x86 เปิดใช้งานโปรเซสเซอร์ 64 บิต x86 โดย AMD และ Intel เพื่อแทนที่สถาปัตยกรรมโปรเซสเซอร์ RISC ส่วนใหญ่ที่ใช้ก่อนหน้านี้ในระบบดังกล่าว (รวมถึงPA-RISC , SPARC , Alphaและอื่นๆ) เช่นเดียวกับ 32 บิต x86 แม้ว่าในตอนแรก Intel เองจะพยายามแทนที่ x86 ด้วยสถาปัตยกรรม 64 บิตที่เข้ากันไม่ได้ใหม่ในโปรเซสเซอร์ Itanium

ในฐานะที่เป็น 2020 เป็นฟูจิตสึ A64FXเบสซูเปอร์คอมพิวเตอร์ที่เรียกว่าFugakuเป็นหนึ่งในจำนวน ซูเปอร์คอมพิวเตอร์ที่ใช้ ARM ตัวแรกปรากฏในรายการในปี 2018 [56]และในช่วงไม่กี่ปีที่ผ่านมา โปรเซสเซอร์ร่วมสถาปัตยกรรมที่ไม่ใช่ CPU ( GPGPU ) ก็มีบทบาทสำคัญในประสิทธิภาพเช่นกัน โปรเซสเซอร์ร่วมXeon Phi "Knights Corner"ของ Intel ซึ่งใช้ชุดย่อยของ x86-64 พร้อมส่วนขยายเวกเตอร์[57]ยังใช้ร่วมกับโปรเซสเซอร์ x86-64 ในซูเปอร์คอมพิวเตอร์Tianhe-2 [58]

ความเข้ากันได้และคุณสมบัติของระบบปฏิบัติการ

ระบบปฏิบัติการต่อไปและรุ่นรองรับสถาปัตยกรรม x86-64 ในโหมดยาว

บีเอสดี

ดราก้อนฟลาย บีเอสดี

งานโครงสร้างพื้นฐานเบื้องต้นเริ่มในเดือนกุมภาพันธ์ 2547 สำหรับพอร์ต x86-64 [59]การพัฒนานี้จนตรอกในภายหลัง การพัฒนาเริ่มขึ้นอีกครั้งในเดือนกรกฎาคม 2550 [60] และดำเนินต่อไปในช่วงGoogle Summer of Code 2008 และ SoC 2009 [61] [62]การเปิดตัวอย่างเป็นทางการครั้งแรกที่มีการสนับสนุน x86-64 คือเวอร์ชัน 2.4 [63]

FreeBSD

FreeBSD ได้เพิ่มการรองรับ x86-64 เป็นครั้งแรกภายใต้ชื่อ "amd64" เป็นสถาปัตยกรรมทดลองใน 5.1-RELEASE ในเดือนมิถุนายน 2546 มันถูกรวมเป็นสถาปัตยกรรมการกระจายมาตรฐาน ณ 5.2-RELEASE ในเดือนมกราคม 2547 ตั้งแต่นั้นมา FreeBSD ได้กำหนดให้เป็น แพลตฟอร์มระดับ 1 เวอร์ชัน 6.0-RELEASE ทำความสะอาดสิ่งผิดปกติบางอย่างด้วยการรัน x86 executables ภายใต้ amd64 และไดรเวอร์ส่วนใหญ่ทำงานเหมือนกับที่ทำกับสถาปัตยกรรม x86 ขณะนี้กำลังดำเนินการเพื่อรวมอินเทอร์เฟซไบนารีของแอปพลิเคชัน x86 (ABI) อย่างสมบูรณ์ยิ่งขึ้นในลักษณะเดียวกับที่ความเข้ากันได้ของ ABI ของ Linux 32 บิตในปัจจุบันทำงาน

เน็ตบีเอสดี

การสนับสนุนสถาปัตยกรรม x86-64 เกิดขึ้นครั้งแรกกับทรีต้นทางของNetBSDเมื่อวันที่ 19 มิถุนายน พ.ศ. 2544 ณ NetBSD 2.0 ซึ่งเผยแพร่เมื่อวันที่ 9 ธันวาคม พ.ศ. 2547 NetBSD/amd64เป็นพอร์ตที่ผสานรวมและสนับสนุนอย่างสมบูรณ์ โค้ด 32 บิตยังคงได้รับการสนับสนุนในโหมด 64 บิต โดยมีเลเยอร์ความเข้ากันได้ของเคอร์เนล netbsd-32 สำหรับ syscall แบบ 32 บิต บิต NX ใช้เพื่อจัดเตรียมสแต็กและฮีปที่ไม่สามารถเรียกทำงานได้โดยมีความละเอียดต่อหน้า (การแบ่งส่วนที่ใช้กับ x86 แบบ 32 บิต)

OpenBSD

OpenBSDรองรับ AMD64 ตั้งแต่ OpenBSD 3.5 ซึ่งเปิดตัวเมื่อวันที่ 1 พฤษภาคม พ.ศ. 2547 การนำการสนับสนุน AMD64 มาใช้ในแผนผังเสร็จสมบูรณ์ก่อนที่จะมีการเปิดตัวฮาร์ดแวร์ครั้งแรก เนื่องจาก AMD ได้ให้ยืมเครื่องหลายเครื่องสำหรับแฮกกาธอนของโครงการในปีนั้น นักพัฒนาซอฟต์แวร์ OpenBSD ได้ใช้แพลตฟอร์มนี้เนื่องจากรองรับบิต NXซึ่งอนุญาตให้ใช้งานคุณลักษณะW^Xได้ง่าย

รหัสสำหรับพอร์ต AMD64 ของ OpenBSD ยังทำงานบนโปรเซสเซอร์ Intel 64 ซึ่งมีการใช้ส่วนขยาย AMD64 แบบโคลน แต่เนื่องจาก Intel ละเว้นบิต NX ของตารางหน้าในโปรเซสเซอร์ Intel 64 รุ่นแรกจึงไม่มีความสามารถ W^X บนซีพียู Intel เหล่านั้น ; ต่อมาโปรเซสเซอร์ Intel 64 ได้เพิ่มบิต NX ภายใต้ชื่อ "XD bit" Symmetric multiprocessing (SMP) ทำงานบนพอร์ต AMD64 ของ OpenBSD โดยเริ่มตั้งแต่รุ่น 3.6 ในวันที่ 1 พฤศจิกายน 2547

ดอส

เป็นไปได้ที่จะเข้าสู่โหมดยาวภายใต้DOSโดยไม่ต้องใช้ตัวขยาย DOS [64]แต่ผู้ใช้ต้องกลับสู่โหมดจริงเพื่อเรียก BIOS หรือ DOS ขัดจังหวะ

นอกจากนี้ยังอาจเป็นไปได้ที่จะเข้าสู่โหมดยาวกับDOS ขยายคล้ายกับดอส / 4GWแต่ที่ซับซ้อนมากขึ้นตั้งแต่ x86-64 ขาดเสมือนโหมด 8086 ตัว DOS เองไม่ทราบ และไม่ควรคาดหวังประโยชน์ใด ๆ เว้นแต่จะเรียกใช้ DOS ในการจำลองที่มีแบ็กเอนด์ของไดรเวอร์การจำลองเสมือนที่เพียงพอ เช่น: อินเทอร์เฟซที่เก็บข้อมูลขนาดใหญ่

ลินุกซ์

Linux was the first operating system kernel to run the x86-64 architecture in long mode, starting with the 2.4 version in 2001 (preceding the hardware's availability).[65][66] Linux also provides backward compatibility for running 32-bit executables. This permits programs to be recompiled into long mode while retaining the use of 32-bit programs. Several Linux distributions currently ship with x86-64-native kernels and userlands. Some, such as Arch Linux,[67] SUSE, Mandriva, and Debian allow users to install a set of 32-bit components and libraries when installing off a 64-bit DVD, thus allowing most existing 32-bit applications to run alongside the 64-bit OS. Other distributions, such as Fedora, Slackware and Ubuntu, are available in one version compiled for a 32-bit architecture and another compiled for a 64-bit architecture. Fedora and Red Hat Enterprise Linux allow concurrent installation of all userland components in both 32 and 64-bit versions on a 64-bit system.

x32 ABI (Application Binary Interface), introduced in Linux 3.4, allows programs compiled for the x32 ABI to run in the 64-bit mode of x86-64 while only using 32-bit pointers and data fields.[68][69][70] Though this limits the program to a virtual address space of 4 GiB it also decreases the memory footprint of the program and in some cases can allow it to run faster.[68][69][70]

64-bit Linux allows up to 128 TiB of virtual address space for individual processes, and can address approximately 64 TiB of physical memory, subject to processor and system limitations.[71]

macOS

Mac OS X 10.4.7 และเวอร์ชันที่สูงกว่าของMac OS X 10.4เรียกใช้เครื่องมือบรรทัดคำสั่ง 64 บิตโดยใช้ POSIX และไลบรารีคณิตศาสตร์บนเครื่องที่ใช้ Intel 64 บิต เช่นเดียวกับ Mac OS X 10.4 และ 10.5 เวอร์ชันทั้งหมด บนเครื่อง PowerPC 64 บิต ไม่มีไลบรารีหรือเฟรมเวิร์กอื่นใดที่ทำงานกับแอปพลิเคชัน 64 บิตใน Mac OS X 10.4 [72] เคอร์เนลและส่วนขยายเคอร์เนลทั้งหมดเป็นแบบ 32 บิตเท่านั้น

Mac OS X 10.5รองรับแอปพลิเคชัน GUI แบบ 64 บิตโดยใช้Cocoa , Quartz , OpenGLและX11บนเครื่องที่ใช้ Intel 64 บิต เช่นเดียวกับเครื่องPowerPC 64 บิต[73] ไลบรารีและเฟรมเวิร์กที่ไม่ใช่ GUI ทั้งหมดยังสนับสนุนแอปพลิเคชัน 64 บิตบนแพลตฟอร์มเหล่านั้นด้วย เคอร์เนลและส่วนขยายเคอร์เนลทั้งหมดเป็นแบบ 32 บิตเท่านั้น

Mac OS X 10.6เป็นรุ่นแรกของMacOSที่สนับสนุน 64 บิตเคอร์เนลอย่างไรก็ตาม คอมพิวเตอร์ 64 บิตบางเครื่องไม่สามารถเรียกใช้เคอร์เนล 64 บิตได้ และไม่ใช่คอมพิวเตอร์ 64 บิตทุกเครื่องที่สามารถเรียกใช้เคอร์เนล 64 บิตได้เป็นค่าเริ่มต้น[74] เคอร์เนล 64 บิต เช่นเดียวกับเคอร์เนล 32 บิต รองรับแอพพลิเคชั่น 32 บิต; เมล็ดทั้งสองยังรองรับแอปพลิเคชัน 64 บิต แอปพลิเคชัน 32 บิตมีขีด จำกัด พื้นที่ที่อยู่เสมือนที่ 4 GiB ภายใต้เคอร์เนล[75] [76] เคอร์เนล 64 บิตไม่รองรับส่วนขยายเคอร์เนล 32 บิต และเคอร์เนล 32 บิตไม่รองรับส่วนขยายเคอร์เนล 64 บิต

OS X 10.8มีเฉพาะเคอร์เนล 64 บิต แต่ยังคงสนับสนุนแอปพลิเคชัน 32 บิตต่อไป อย่างไรก็ตามไม่รองรับส่วนขยายเคอร์เนลแบบ 32 บิต

macOS 10.15มีเฉพาะเคอร์เนล 64 บิตและไม่รองรับแอพพลิเคชั่น 32 บิตอีกต่อไป การยกเลิกการสนับสนุนนี้ทำให้เกิดปัญหาสำหรับWineHQ (และเวอร์ชันเชิงพาณิชย์CrossOver ) เนื่องจากยังคงต้องสามารถเรียกใช้แอปพลิเคชัน Windows แบบ 32 บิตได้ วิธีแก้ปัญหาที่เรียกว่าwine32on64คือการเพิ่มthunkที่นำ CPU เข้าและออกจากโหมดความเข้ากันได้แบบ 32 บิตในแอปพลิเคชัน 64 บิตในนาม [77] [78]

macOS ใช้รูปแบบไบนารีสากลเพื่อจัดแพ็คเกจแอปพลิเคชันและรหัสไลบรารีเวอร์ชัน 32 และ 64 บิตเป็นไฟล์เดียว เวอร์ชันที่เหมาะสมที่สุดจะถูกเลือกโดยอัตโนมัติเมื่อโหลด ใน Mac OS X 10.6 รูปแบบไบนารีสากลยังใช้สำหรับเคอร์เนลและสำหรับส่วนขยายเคอร์เนลที่รองรับทั้งเคอร์เนล 32 บิตและ 64 บิต

โซลาริส

Solaris 10 และรุ่นที่ใหม่กว่ารองรับสถาปัตยกรรม x86-64

สำหรับ Solaris 10 เช่นเดียวกับสถาปัตยกรรมSPARCมีอิมเมจระบบปฏิบัติการเพียงภาพเดียว ซึ่งประกอบด้วยเคอร์เนล 32 บิตและเคอร์เนล 64 บิต ซึ่งมีป้ายกำกับว่าอิมเมจดีวีดีรอม "x64/x86" ลักษณะการทำงานเริ่มต้นคือการบูตเคอร์เนล 64 บิต โดยอนุญาตให้เรียกใช้ทั้งโปรแกรมเรียกทำงานแบบ 64 บิตและที่มีอยู่หรือใหม่แบบ 32 บิต คุณสามารถเลือกเคอร์เนลแบบ 32 บิตได้ด้วยตนเอง ซึ่งในกรณีนี้จะเรียกใช้เฉพาะไฟล์เรียกทำงานแบบ 32 บิตเท่านั้น isainfoคำสั่งที่สามารถใช้เพื่อตรวจสอบว่าระบบทำงานเคอร์เนล 64 บิต

สำหรับ Solaris 11 จะมีเฉพาะเคอร์เนล 64 บิตเท่านั้น อย่างไรก็ตาม เคอร์เนล 64 บิตรองรับไฟล์เรียกทำงาน ไลบรารี และการเรียกระบบทั้งแบบ 32 และ 64 บิต

วินโดว์

ไคลเอนต์และเซิร์ฟเวอร์ Microsoft Windows รุ่น x64— Windows XP Professional รุ่น x64และWindows Server 2003รุ่น x64— วางจำหน่ายในเดือนมีนาคม 2548 [79]ภายในเป็นรุ่นเดียวกัน (5.2.3790.1830 SP1), [80] [81]เนื่องจากใช้ฐานต้นทางและไบนารีของระบบปฏิบัติการเดียวกัน ดังนั้นแม้แต่การอัปเดตระบบก็ยังถูกเผยแพร่ในแพ็คเกจแบบรวม ในลักษณะเดียวกับ Windows 2000 Professional และรุ่นเซิร์ฟเวอร์สำหรับ x86 Windows Vistaซึ่งมีรุ่นต่างๆ มากมาย วางจำหน่ายในเดือนมกราคม 2550 Windows 7เปิดตัวในเดือนกรกฎาคม 2552 Windows Server 2008 R2จำหน่ายในรุ่น x64 และ Itanium เท่านั้น Windows Server รุ่นที่ใหม่กว่ามีรุ่น x64 เท่านั้น

รุ่นของ Windows สำหรับ x64 ก่อน Windows 8.1 และ Windows Server 2012 R2 มีดังต่อไปนี้:

  • 8 TiB ของพื้นที่ที่อยู่เสมือนต่อกระบวนการ สามารถเข้าถึงได้จากทั้งโหมดผู้ใช้และโหมดเคอร์เนล เรียกว่าพื้นที่ที่อยู่โหมดผู้ใช้ โปรแกรม x64 สามารถใช้สิ่งเหล่านี้ได้ทั้งหมด โดยขึ้นอยู่กับข้อจำกัดของร้านสำรองในระบบ และให้เชื่อมโยงกับตัวเลือก "ทราบที่อยู่ขนาดใหญ่" [82]นี่เป็นการเพิ่มขึ้น 4096 เท่าจากพื้นที่ที่อยู่เสมือนของโหมดผู้ใช้ 2 GiB ที่เป็นค่าเริ่มต้นซึ่งนำเสนอโดย Windows รุ่น 32 บิต [83] [84]
  • 8 TiB of kernel mode virtual address space for the operating system.[83] As with the user mode address space, this is a 4096-fold increase over 32-bit Windows versions. The increased space primarily benefits the file system cache and kernel mode "heaps" (non-paged pool and paged pool). Windows only uses a total of 16 TiB out of the 256 TiB implemented by the processors because early AMD64 processors lacked a CMPXCHG16B instruction.[85]

Under Windows 8.1 and Windows Server 2012 R2, both user mode and kernel mode virtual address spaces have been extended to 128 TiB.[22] These versions of Windows will not install on processors that lack the CMPXCHG16B instruction.

The following additional characteristics apply to all x64 versions of Windows:

  • Ability to run existing 32-bit applications (.exe programs) and dynamic link libraries (.dlls) using WoW64 if WoW64 is supported on that version. Furthermore, a 32-bit program, if it was linked with the "large address aware" option,[82] can use up to 4 GiB of virtual address space in 64-bit Windows, instead of the default 2 GiB (optional 3 GiB with /3GB boot option and "large address aware" link option) offered by 32-bit Windows.[86] Unlike the use of the /3GB boot option on x86, this does not reduce the kernel mode virtual address space available to the operating system. 32-bit applications can, therefore, benefit from running on x64 Windows even if they are not recompiled for x86-64.
  • ทั้งแอปพลิเคชันแบบ 32 บิตและ 64 บิต หากไม่ได้เชื่อมโยงกับ "การรับรู้ที่อยู่ขนาดใหญ่" จะถูกจำกัดที่ 2 GiB ของพื้นที่ที่อยู่เสมือน
  • ความสามารถในการใช้งานสูงสุด 128 GiB (Windows XP/Vista), 192 GiB (Windows 7), 512 GiB (Windows 8), 1 TiB (Windows Server 2003), 2 TiB (Windows Server 2008/Windows 10), 4 TiB ( Windows Server 2012) หรือ 24 TiB (Windows Server 2016/2019) ของหน่วยความจำเข้าถึงโดยสุ่ม (RAM) [87]
  • โมเดลข้อมูลLLP64 : ประเภท "int" และ "long" มีความกว้าง 32 บิต ความยาวแบบยาวคือ 64 บิต ในขณะที่พอยน์เตอร์และประเภทที่ได้รับจากพอยน์เตอร์จะมีความกว้าง 64 บิต
  • ไดรเวอร์อุปกรณ์โหมดเคอร์เนลต้องเป็นเวอร์ชัน 64 บิต ไม่มีวิธีเรียกใช้โปรแกรมสั่งการโหมดเคอร์เนลแบบ 32 บิตภายในระบบปฏิบัติการ 64 บิต ไดรเวอร์อุปกรณ์ในโหมดผู้ใช้สามารถเป็นได้ทั้งแบบ 32 บิตหรือ 64 บิต
  • 16-bit Windows (Win16) and DOS applications will not run on x86-64 versions of Windows due to the removal of the virtual DOS machine subsystem (NTVDM) which relied upon the ability to use virtual 8086 mode. Virtual 8086 mode cannot be entered while running in long mode.
  • Full implementation of the NX (No Execute) page protection feature. This is also implemented on recent 32-bit versions of Windows when they are started in PAE mode.
  • แทนที่จะใช้ตัวบอกเซ็กเมนต์ FS ในเวอร์ชัน x86 ของตระกูลWindows NT ตัวระบุเซ็กเมนต์ GS ถูกใช้เพื่อชี้ไปที่โครงสร้างที่กำหนดโดยระบบปฏิบัติการสองโครงสร้าง: Thread Information Block (NT_TIB) ในโหมดผู้ใช้และ Processor Control Region (KPCR) ในโหมดเคอร์เนล ตัวอย่างเช่น ในโหมดผู้ใช้GS:0คือที่อยู่ของสมาชิกคนแรกของบล็อกข้อมูลเธรด การดูแลรักษาการประชุมนี้ทำพอร์ต x86-64 ง่ายขึ้น แต่จำเป็นต้องใช้เอเอ็มดีจะรักษาหน้าที่ของ FS และ GS ส่วนในโหมดยาว - แม้ว่าแบ่ง addressing ต่อ seไม่ได้ใช้จริงๆโดยระบบปฏิบัติการใด ๆ ที่ทันสมัย[83]
  • รายงานก่อนหน้านี้อ้างว่าตัวกำหนดเวลาระบบปฏิบัติการจะไม่บันทึกและกู้คืนสถานะเครื่อง x87 FPU ข้ามสวิตช์บริบทของเธรด พฤติกรรมที่สังเกตพบว่าไม่ใช่กรณีนี้: สถานะ x87 ถูกบันทึกและกู้คืน ยกเว้นสำหรับเธรดในโหมดเคอร์เนลเท่านั้น (ข้อจำกัดที่มีอยู่ในเวอร์ชัน 32 บิตด้วย) เอกสารล่าสุดจาก Microsoft ระบุว่า x87/MMX/3DNow! คำแนะนำอาจใช้ในโหมดยาว แต่จะเลิกใช้แล้วและอาจทำให้เกิดปัญหาความเข้ากันได้ในอนาคต [86]
  • ส่วนประกอบบางอย่าง เช่นMicrosoft Jet Database EngineและData Access Objectsจะไม่ถูกย้ายไปยังสถาปัตยกรรม 64 บิต เช่น x86-64 และ IA-64 [88] [89]
  • Microsoft Visual Studioสามารถคอมไพล์แอปพลิเคชันดั้งเดิมเพื่อกำหนดเป้าหมายสถาปัตยกรรม x86-64 ซึ่งสามารถทำงานบน Microsoft Windows แบบ 64 บิตหรือสถาปัตยกรรม IA-32ซึ่งสามารถเรียกใช้เป็นแอปพลิเคชันแบบ 32 บิตบน Microsoft Windows รุ่น 32 บิตหรือ Microsoft Windows 64 บิตในโหมดการจำลองWoW64 แอปพลิเคชันที่มีการจัดการสามารถคอมไพล์ในโหมด IA-32, x86-64 หรือ AnyCPU ซอฟต์แวร์ที่สร้างขึ้นในสองโหมดแรกจะทำงานเหมือนกับรหัสดั้งเดิมของ IA-32 หรือ x86-64 ตามลำดับ อย่างไรก็ตาม เมื่อใช้โหมด AnyCPU แอปพลิเคชันใน Microsoft Windows รุ่น 32 บิตจะทำงานเป็นแอปพลิเคชันแบบ 32 บิต ในขณะที่ทำงานเป็นแอปพลิเคชันแบบ 64 บิตใน Microsoft Windows รุ่น 64 บิต

วิดีโอเกมคอนโซล

ทั้งPlayStation 4และXbox Oneและสายพันธุ์ของพวกเขารวม AMD x86-64 ประมวลผลบนพื้นฐานของจากัวร์ microarchitecture [90] [91]เฟิร์มแวร์และเกมเขียนด้วยรหัส x86-64; ไม่มีรหัส x86 ดั้งเดิมที่เกี่ยวข้อง

รุ่นต่อไปของพวกเขาPlayStation 5และXbox Series X และ Series Sตามลำดับยังรวมโปรเซสเซอร์ AMD x86-64 ที่ใช้สถาปัตยกรรมไมโครZen 2 [92] [93]

ข้อตกลงการตั้งชื่ออุตสาหกรรม

เนื่องจาก AMD64 และ Intel 64 มีความคล้ายคลึงกันอย่างมาก ผลิตภัณฑ์ซอฟต์แวร์และฮาร์ดแวร์จำนวนมากจึงใช้คำศัพท์ที่เป็นกลางจากผู้ขายเพียงคำเดียวเพื่อระบุความเข้ากันได้กับการใช้งานทั้งสองแบบ การกำหนดเดิมของ AMD สำหรับสถาปัตยกรรมโปรเซสเซอร์นี้คือ "x86-64" บางครั้งยังคงใช้เพื่อจุดประสงค์นี้[2]เช่นเดียวกับตัวแปร "x86_64" [3] [4]บริษัท อื่น ๆ เช่นไมโครซอฟท์[6]และซันไมโครซิสเต็มส์ / ออราเคิลคอร์ปอเรชั่น , [5]ใช้หด "x 64" ในตลาดวัสดุ

คำว่าIA-64หมายถึงโปรเซสเซอร์Itaniumและไม่ควรสับสนกับ x86-64 เนื่องจากเป็นชุดคำสั่งที่ต่างไปจากเดิมอย่างสิ้นเชิง

ระบบปฏิบัติการและผลิตภัณฑ์จำนวนมาก โดยเฉพาะอย่างยิ่งที่เปิดตัว x86-64 รองรับก่อนการเข้าสู่ตลาดของ Intel ใช้คำว่า "AMD64" หรือ "amd64" เพื่ออ้างถึงทั้ง AMD64 และ Intel 64

  • amd64
    • ระบบBSDส่วนใหญ่เช่นFreeBSD , MidnightBSD , NetBSDและOpenBSDอ้างถึงทั้ง AMD64 และ Intel 64 ภายใต้ชื่อสถาปัตยกรรม "amd64"
    • ลีนุกซ์รุ่นบางรุ่นเช่นDebian , Ubuntu , Gentoo Linuxอ้างถึงทั้ง AMD64 และ Intel 64 ภายใต้ชื่อสถาปัตยกรรม "amd64"
    • เวอร์ชัน x64 ของ Microsoft Windowsใช้ชื่อเล่น AMD64 ภายในเพื่อกำหนดส่วนประกอบต่างๆ ที่ใช้หรือเข้ากันได้กับสถาปัตยกรรมนี้ ตัวอย่างเช่นตัวแปรสภาพแวดล้อม PROCESSOR_ARCHITECTURE ถูกกำหนดเป็น "AMD64" แทนที่จะเป็น "x86" ในเวอร์ชัน 32 บิต และไดเร็กทอรีระบบบนซีดีรอมการติดตั้ง Windows x64 Edition จะมีชื่อว่า "AMD64" ซึ่งแตกต่างจาก "i386" " ในเวอร์ชัน 32 บิต [94]
    • ดวงอาทิตย์Solaris 's isalistระบุคำสั่งทั้งระบบ AMD64- และ Intel 64- เป็น 'amd64'
    • Java Development Kit (JDK): ชื่อ "amd64" ใช้ในชื่อไดเร็กทอรีที่มีไฟล์ x86-64
  • x86_64
    • ลินุกซ์เคอร์เนล[95]และเก็บสะสม GNUหมายถึงสถาปัตยกรรม 64 บิตเป็น "x86_64"
    • ลีนุกซ์รุ่นบางรุ่น เช่นFedora , openSUSE , Arch Linux , Gentoo Linuxอ้างถึงสถาปัตยกรรม 64 บิตนี้ว่า "x86_64"
    • Apple macOSอ้างถึงสถาปัตยกรรม 64 บิตเป็น "x86-64" หรือ "x86_64" ดังที่เห็นในคำสั่ง Terminal arch[3]และในเอกสารประกอบสำหรับนักพัฒนา [2] [4]
    • ทำลายระบบ BSD อื่น ๆ ส่วนใหญ่DragonFly BSDอ้างถึงสถาปัตยกรรม 64 บิตเป็น "x86_64"
    • ไฮกุอ้างถึงสถาปัตยกรรม 64 บิตว่า "x86_64"

ใบอนุญาต

x86-64/AMD64 ได้รับการพัฒนาโดย AMD แต่เพียงผู้เดียว AMD ถือสิทธิบัตรเทคนิคที่ใช้ใน AMD64; [96] [97] [98]สิทธิบัตรเหล่านั้นต้องได้รับอนุญาตจาก AMD เพื่อใช้งาน AMD64 Intel ได้ลงนามในข้อตกลงการอนุญาตให้ใช้สิทธิร่วมกับ AMD โดยให้สิทธิ์การใช้งานแก่ AMD ในสิทธิบัตรของตนเกี่ยวกับเทคนิค x86 ที่มีอยู่ และอนุญาตสิทธิ์ใช้งานจาก AMD เกี่ยวกับเทคนิคที่ใช้ใน x86-64 [99]ในปี 2552 เอเอ็มดีและอินเทลได้ตัดสินคดีความหลายคดีและความขัดแย้งในการอนุญาตให้ใช้สิทธิ [100] [101] [102]

ดูเพิ่มเติม

หมายเหตุ

  1. ^ ชื่อต่างๆ ใช้สำหรับชุดคำสั่ง ก่อนการเปิดตัว x86-64 และ x86_64 ถูกใช้ ในขณะที่ AMD ออกวางจำหน่ายเมื่อได้รับการตั้งชื่อว่า AMD64 [1] ตอนแรก Intel ใช้ชื่อ IA-32eและ EM64Tก่อนตัดสินใจใช้ "Intel 64" เพื่อนำไปปฏิบัติในที่สุด ในอุตสาหกรรมบางแห่ง รวมถึง Apple , [2] [3] [4]ใช้ x86-64 และ x86_64 ในขณะที่รุ่นอื่นๆ โดยเฉพาะ Sun Microsystems [5] (ปัจจุบันคือ Oracle Corporation ) และ Microsoft , [6] ใช้ x64 BSDครอบครัวของระบบปฏิบัติการและอีกหลายลินุกซ์[7] [8] use AMD64, as does Microsoft Windows internally.[9][10]
  2. ^ In practice, 64-bit operating systems generally do not support 16-bit applications, although modern versions of Microsoft Windows contain a limited workaround that effectively supports 16-bit InstallShield and Microsoft ACME installers by silently substituting them with 32-bit code.[12]

References

  1. ^ "Debian AMD64 FAQ". Debian Wiki. Retrieved May 3, 2012.
  2. ^ a b c "x86-64 Code Model". Apple. Retrieved November 23, 2012.
  3. ^ a b c arch(1)  –  คู่มือคำสั่งทั่วไปของดาร์วินและmacOS
  4. a b c Kevin Van Vechten (9 สิงหาคม 2549). "เรื่องการรายงานข้อผิดพลาดของ Intel XNU" รายชื่อผู้รับจดหมายของดาร์วิน-เดแอปเปิล คอมพิวเตอร์. สืบค้นเมื่อ5 ตุลาคม 2549 . เครื่องมือเคอร์เนลและนักพัฒนาได้รับมาตรฐานบน "x86_64" สำหรับชื่อของสถาปัตยกรรม Mach-O
  5. ^ a b "Solaris 10 บน AMD Opteron" . ออราเคิล. สืบค้นเมื่อ9 ธันวาคม 2010 .
  6. ^ a b "Microsoft 64-Bit Computing". Microsoft. Archived from the original on December 12, 2010. Retrieved December 9, 2010.
  7. ^ "AMD64 Port". Debian. Retrieved November 23, 2012.
  8. ^ "Gentoo/AMD64 Project". Gentoo Project. Retrieved May 27, 2013.
  9. ^ "WOW64 Implementation Details".
  10. ^ "ProcessorArchitecture Class".
  11. a b c d e f g h i j k l m n o p q r s t u AMD Corporation (ธันวาคม 2016). "เล่มที่ 2: การเขียนโปรแกรมระบบ" (PDF) . คู่มือการใช้งานสถาปัตยกรรม AMD64 โปรแกรมเมอร์ เอเอ็มดี คอร์ปอเรชั่น. สืบค้นเมื่อ25 มีนาคม 2017 .
  12. ^ เรย์มอนด์ เฉิน (31 ตุลาคม 2556). "หากไม่มีเลเยอร์การจำลองแบบ 16 บิตใน Windows รุ่น 64 บิต เหตุใดจึงอนุญาตให้เรียกใช้ตัวติดตั้งแบบ 16 บิตบางตัวได้" .
  13. ^ IBM Corporation (September 6, 2007). "IBM WebSphere Application Server 64-bit Performance Demystified" (PDF). p. 14. Retrieved April 9, 2010. 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.
  14. ^ "AMD เปิดเผยเทคโนโลยีใหม่ที่ Microporcessor Forum" (ข่าวประชาสัมพันธ์) เอเอ็มดี. 5 ตุลาคม 2542 เก็บถาวรจากต้นฉบับเมื่อ 8 มีนาคม 2555 . สืบค้นเมื่อ9 พฤศจิกายน 2010 .
  15. ^ "AMD Releases x86-64 Architectural Specifications; Enables Market Driven Migration to 64-Bit Computing" (ข่าวประชาสัมพันธ์) เอเอ็มดี. 10 สิงหาคม 2543 เก็บถาวรจากต้นฉบับเมื่อ 8 มีนาคม 2555 . สืบค้นเมื่อ9 พฤศจิกายน 2010 .
  16. ^ Mauerer, W. (2010) สถาปัตยกรรมเคอร์เนล Linux ระดับมืออาชีพ จอห์น ไวลีย์ แอนด์ ซันส์.
  17. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3A: System Programming Guide, Part 1" (PDF). pp. 4–7. Retrieved July 10, 2019.
  18. ^ a b "BIOS and Kernel Developer's Guide (BKDG) For AMD Family 10h Processors" (PDF). p. 24. Retrieved February 27, 2016. Physical address space increased to 48 bits.
  19. ^ "Myth and facts about 64-bit Linux" (PDF). March 2, 2008. p. 7. Archived from the original (PDF) on October 10, 2010. Retrieved May 30, 2010. Physical address space increased to 48 bits
  20. ^ Shanley, Tom (1998). Pentium Pro and Pentium II System Architecture. PC System Architecture Series (Second ed.). Addison-Wesley. p. 445. ISBN 0-201-30973-4.
  21. ^ Microsoft Corporation. "What is PAE, NX, and SSE2 and why does my PC need to support them to run Windows 8 ?". Retrieved March 19, 2013.
  22. ^ a b c d "Memory Limits for Windows Releases". MSDN. Microsoft. November 16, 2013. Retrieved January 20, 2014.
  23. ^ "5-Level Paging and 5-Level EPT" (PDF). Intel. May 2017. Retrieved June 17, 2017.
  24. ^ US patent 9858198, Larry Seiler, "64KB page system that supports 4KB page operation", published 2016-12-29, issued 2018-01-02, assigned to Intel Corp. 
  25. ^ "Opteron 6100 Series Motherboards". Supermicro Corporation. Retrieved June 22, 2010.
  26. ^ "Supermicro XeonSolutions". Supermicro Corporation. Retrieved June 20, 2010.
  27. ^ "Opteron 8000 Series Motherboards". Supermicro Corporation. Retrieved June 20, 2010.
  28. ^ "Tyan Product Matrix". MiTEC International Corporation. Retrieved June 21, 2010.
  29. ^ a b ""From the AMI Archives: AMIBIOS 8 and the Transition to EFI"". American Megatrends. Retrieved October 25, 2021.
  30. ^ "Craig Barrett confirms 64 bit address extensions for Xeon. And Prescott". The Inquirer. February 17, 2004. Archived from the original on January 12, 2013.CS1 maint: unfit URL (link)
  31. ^ "A Roundup of 64-Bit Computing", from internetnews.com
  32. ^ Lapedus, Mark. "Intel to demo 'CT' 64-bit processor line at IDF". EDN. AspenCore Media. Retrieved May 25, 2021.
  33. ^ "Intel 64 Architecture". Intel. Retrieved June 29, 2007.
  34. ^ "VIA to launch new processor architecture in 1Q08" (subscription required). DigiTimes. Retrieved July 25, 2007.
  35. ^ Stokes, Jon (January 23, 2008). "Isaiah revealed: VIA's new low-power architecture". Ars Technica. Retrieved January 24, 2008.
  36. ^ "VIA Launches VIA Nano Processor Family" (Press release). VIA. May 29, 2008. Retrieved May 25, 2017.
  37. ^ "VIA Isaiah Architecture Introduction" (PDF). VIA. January 23, 2008. Archived from the original (PDF) on September 7, 2008. Retrieved July 31, 2013.
  38. ^ Weimer, Florian (July 10, 2020). "New x86-64 micro-architecture levels". llvm-dev (at) lists.llvm.org mailing list.
  39. ^ "System V Application Binary Interface Low Level System Information". x86-64 psABI repo. January 29, 2021 – via GitLab.
  40. ^ Wasson, Scott. "64-bit computing in theory and practice". The Tech Report. The Tech Report. Retrieved March 22, 2011.
  41. ^ "Discussion on Stack Overflow". March 2021. Retrieved March 2, 2021.
  42. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A-Z" (PDF). Intel. September 2013. pp. 4–397. Retrieved January 21, 2014.
  43. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A-Z" (PDF). Intel. September 2013. pp. 4–400. Retrieved January 21, 2014.
  44. ^ "How retiring segmentation in AMD64 long mode broke VMware". Pagetable.com. November 9, 2006. Retrieved May 2, 2010.
  45. ^ "VMware and CPU Virtualization Technology" (PDF). VMware. Retrieved September 8, 2010.
  46. ^ "AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions" (PDF). AMD. May 2018. p. 419. Retrieved August 2, 2018.
  47. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2 (2A, 2B & 2C): Instruction Set Reference, A-Z" (PDF). Intel. September 2014. pp. 4–412. Retrieved December 28, 2014.
  48. ^ Maged M. Michael. "Practical Lock-Free and Wait-Free LL/SC/VL Implementations Using 64-Bit CAS" (PDF). IBM. Retrieved January 21, 2014.
  49. ^ darwou (August 20, 2004). "Why is the virtual address space 4GB anyway?". The Old New Thing. Microsoft.
  50. ^ a b "System Requirements—Windows 8.1". Retrieved April 27, 2014. To install a 64-bit OS on a 64-bit PC, your processor needs to support CMPXCHG16b, PrefetchW, and LAHF/SAHF.
  51. ^ "Revision Guide for AMD Athlon 64 and AMD Opteron Processors", from AMD
  52. ^ "AMD Turion 64 pictured up and running". The Inquirer. Archived from the original on February 22, 2013.CS1 maint: unfit URL (link)
  53. ^ "Athlon 64 revision E won't work on some Nforce 3/4 boards". The Inquirer. Archived from the original on September 14, 2012.CS1 maint: unfit URL (link)
  54. ^ "Intel 64 architecture increases the linear address space for software to 64 bits and supports physical address space up to 46 bits." on page Vol. 1 2-21 of Intel 64 and IA-32 Architectures Software Developer's Manual September 2014
  55. ^ "Statistics | TOP500 Supercomputer Sites". Top500.org. Retrieved March 22, 2014.
  56. ^ "Sublist Generator | TOP500 Supercomputer Sites". www.top500.org. Retrieved December 6, 2018.
  57. ^ "Intel® Xeon PhiTM Coprocessor Instruction Set Architecture Reference Manual" (PDF). Intel. September 7, 2012. section B.2 Intel Xeon Phi coprocessor 64 bit Mode Limitations.
  58. ^ "Intel Powers the World's Fastest Supercomputer, Reveals New and Future High Performance Computing Technologies". Retrieved June 21, 2013.
  59. ^ "cvs commit: src/sys/amd64/amd64 genassym.c src/sys/amd64/include asm.h atomic.h bootinfo.h coredump.h cpufunc.h elf.h endian.h exec.h float.h fpu.h frame.h globaldata.h ieeefp.h limits.h lock.h md_var.h param.h pcb.h pcb_ext.h pmap.h proc.h profile.h psl.h ..." Retrieved May 3, 2009.
  60. ^ "AMD64 port". Retrieved May 3, 2009.
  61. ^ "DragonFlyBSD: GoogleSoC2008". Retrieved May 3, 2009.
  62. ^ "Summer of Code accepted students". Retrieved May 3, 2009.
  63. ^ "DragonFlyBSD: release24". Retrieved May 3, 2009.
  64. ^ "Tutorial for entering protected and long mode from DOS". Archived from the original on February 22, 2017. Retrieved July 6, 2008.
  65. ^ Andi Kleen (June 26, 2001). "Porting Linux to x86-64". Archived from the original on September 10, 2010. Status: The kernel, compiler, tool chain work. The kernel boots and work on simulator and is used for porting of userland and running programs
  66. ^ Andi Kleen. "Andi Kleen's Page". This was the original paper describing the Linux x86-64 kernel port back when x86-64 was only available on simulators.
  67. ^ "Arch64 FAQ". April 23, 2012. You can either use the multilib packages or a i686 chroot.
  68. ^ a b Thorsten Leemhuis (September 13, 2011). "Kernel Log: x32 ABI gets around 64-bit drawbacks". www.h-online.com. Archived from the original on October 28, 2011. Retrieved November 1, 2011.
  69. ^ a b "x32 - a native 32-bit ABI for x86-64". linuxplumbersconf.org. Retrieved November 1, 2011.
  70. ^ a b "x32-abi". Google Sites. Retrieved November 1, 2011.
  71. ^ "AMD64 Port". debian.org. Retrieved October 29, 2011.
  72. ^ "Apple – Mac OS X Xcode 2.4 Release Notes: Compiler Tools". Apple Inc. April 11, 2007. Archived from the original on April 22, 2009. Retrieved November 19, 2012.
  73. ^ "Apple – Mac OS X Leopard – Technology - 64-bit". Apple Inc. Archived from the original on January 12, 2009. Retrieved November 19, 2012.
  74. ^ "Mac OS X v10.6: Macs that use the 64-bit kernel". Apple Inc. Retrieved November 29, 2012.
  75. ^ John Siracusa. "Mac OS X 10.6 Snow Leopard: the Ars Technica review". Ars Technica LLC. Retrieved June 20, 2010.
  76. ^ "Mac OS X Technology". Apple Inc. Archived from the original on March 28, 2011. Retrieved November 19, 2012.
  77. ^ "So We Don't Have a Solution for Catalina...Yet". CodeWeavers Blog.
  78. ^ Thomases, Ken (December 11, 2019). "win32 on macOS".
  79. ^ "Microsoft Raises the Speed Limit with the Availability of 64-Bit Editions of Windows Server 2003 and Windows XP Professional | News Center". news.microsoft.com. Retrieved August 14, 2016.
  80. ^ "A description of the x64-based versions of Windows Server 2003 and of Windows XP Professional x64 Edition". Microsoft Support. Retrieved August 14, 2016.
  81. ^ "Windows Server 2003 SP1 Administration Tools Pack". Microsoft Download Center. Archived from the original on August 27, 2016. Retrieved August 14, 2016.
  82. ^ a b "/LARGEADDRESSAWARE (Handle Large Addresses)". Visual Studio 2005 Documentation – Visual C++ – Linker Options. Microsoft. Retrieved June 19, 2010. The /LARGEADDRESSAWARE option tells the linker that the application can handle addresses larger than 2 gigabytes.
  83. ^ a b c Matt Pietrek (May 2006). "Everything You Need To Know To Start Programming 64-Bit Windows Systems". Microsoft. Retrieved May 24, 2010.
  84. ^ Chris St. Amand (January 2006). "Making the Move to x64". Microsoft. Retrieved May 24, 2010.
  85. ^ "Behind Windows x86-64's 44-bit Virtual Memory Addressing Limit". Retrieved July 2, 2009.
  86. ^ a b "64-bit programming for Game Developers". Retrieved August 21, 2013.
  87. ^ "Memory Limits for Windows Releases". Microsoft. Retrieved February 20, 2013.
  88. ^ Microsoft Developer Network – General Porting Guidelines (64-bit Windows Programming)
  89. ^ Microsoft Developer Network – Data Access Road Map[permanent dead link]
  90. ^ Anand Lal Shimpi (May 21, 2013). "The Xbox One: Hardware Analysis & Comparison to PlayStation 4". Anandtech. Retrieved May 22, 2013.
  91. ^ "The Tech Spec Test: Xbox One Vs. PlayStation 4". Game Informer. May 21, 2013. Retrieved May 22, 2013.
  92. ^ "What to expect from Sony 'PlayStation 5' launch in November". The Indian Express. August 31, 2020. Retrieved September 14, 2020.
  93. ^ Cutress, Dr Ian. "Hot Chips 2020 Live Blog: Microsoft Xbox Series X System Architecture (6:00pm PT)". www.anandtech.com. Retrieved September 14, 2020.
  94. ^ ProcessorArchitecture Fields
  95. ^ "An example file from Linux 3.7.8 kernel source tree displaying the usage of the term x86_64". Archived from the original on September 23, 2005. Retrieved February 17, 2013.
  96. ^ US 6877084 
  97. ^ US 6889312 
  98. ^ US 6732258 
  99. ^ "Patent Cross License Agreement Between AMD and Intel". January 1, 2001. Archived from the original on June 21, 2007. Retrieved August 23, 2009.
  100. ^ "AMD Intel Settlement Agreement".
  101. ^ Stephen Shankland and Jonathan E. Skillings (November 12, 2009). "Intel to pay AMD $1.25 billion in antitrust settlement". CNET. Retrieved April 24, 2012.
  102. ^ Smith, Ryan (November 12, 2009). "AMD and Intel Settle Their Differences: AMD Gets To Go Fabless". AnandTech. Archived from the original on May 13, 2010.

External links