เอกซ์86-64 (x86-64) เป็นชื่อของสถาปัตยกรรมคอมพิวเตอร์สำหรับไมโครโพรเซสเซอร์แบบ 64 บิต และชุดคำสั่งที่ใช้งานด้วยกัน x86-64 เป็นส่วนขยายของสถาปัตยกรรมแบบ x86 ออกแบบโดยบริษัท AMD และใช้ชื่อทางการค้าว่า AMD64 ในภายหลังบริษัทอินเทลได้นำสถาปัตยกรรมนี้ไปใช้ใต้ชื่อการค้าว่า Intel 64 หรือ EM64T ซึ่งชื่อทั่วไปที่ใช้กันโดยไม่อิงกับชื่อการค้าคือ x86-64 หรือ x64
ชุดคำสั่ง AMD64 ถูกนำไปใช้ในไมโครโพรเซสเซอร์ของ AMD ดังนี้ Athlon 64, Athlon 64 FX, Athlon 64 X2, Turion 64, Turion 64 X2, Opteron และ Sempron (เฉพาะรุ่นที่ผลิตในช่วงหลัง)
คุณสมบัติของสถาปัตยกรรม
AMD64 ถูกสร้างมาเพื่อเป็นคู่แข่งกับสถาปัตยกรรม IA64 ของบริษัทอินเทลและเอชพี ข้อแตกต่างที่สำคัญมีดังนี้
- สนับสนุนจำนวนตัวเลข (integer) ขนาด 64 บิต โดยขยายขนาดของเรจิสเตอร์สำหรับงานทั่วไป general-purpose registers (GPRs) จาก 32 บิตเป็น 64 บิต และปรับปรุงส่วนคำสั่งอื่น ๆ ให้สนับสนุนตัวเลขแบบ 64 บิตด้วย
- เพิ่มจำนวนเรจิสเตอร์ เพิ่มจำนวนเรจิสเตอร์ทำงานทั่วไปจาก 8 ตัวในสถาปัตยกรรม x86 เดิม เป็น 16 ตัว ซึ่งทำให้เก็บค่าตัวแปรไว้ในเรจิสเตอร์ได้มากขึ้น และส่งผลให้การทำงานของระบบรวดเร็วขึ้น
- เพิ่มเรจิสเตอร์สำหรับ XMM (SSE) เพิ่มจำนวนของเรจิสเตอร์สำหรับงาน XMM จาก 8 ตัวเป็น 16 ตัว
- ขยายขนาดตำแหน่งหน่วยความจำแบบ virtual ตามทฤษฎีแล้วสถาปัตยกรรมแบบ AMD64 สนับสนุนการอ้างตำแหน่งหน่วยความจำแบบ virtual ได้มากถึง 16 exbibyte (264 ไบต์) เมื่อเทียบกับ x86 แบบเดิมที่อ้างได้เพียง 4 gibibyte (ซีพียูแบบ AMD64 ที่วางขายในปัจจุบัน ยังอ้างได้เพียง 256 tebibyte หรือ 248 ไบต์ แต่สามารถปรับเพิ่มได้ในอนาคต)
- ขยายขนาดตำแหน่งหน่วยความจำแบบ physical ตามทฤษฎีแล้วสถาปัตยกรรมแบบ AMD64 สนับสนุนการอ้างตำแหน่งหน่วยความจำแบบ physcial ได้มากถึง 4 petibyte (252 ไบต์) (ซีพียูแบบ AMD64 ที่วางขายในปัจจุบัน ยังอ้างได้เพียง 1 tebibyte หรือ 240 ไบต์ แต่สามารถปรับเพิ่มได้ในอนาคต)
- พอยเตอร์ของชุดคำสั่งสามารถอ้างตำแหน่งข้อมูลแบบสัมพัทธ์ (relative) ทำให้ชุดคำสั่งสามารถเป็นอิสระจากตำแหน่งอ้างอิงแบบคงที่ได้
- สนับสนุนชุดคำสั่ง SSE เดิม AMD64 สนับสนุนเฉพาะ SSE และ SSE2 เท่านั้น ในภายหลังได้สนับสนุนชุดคำสั่ง SSE3 เพิ่มเติม
- No-Execute bit หรือชื่อย่อ NX บิต (บิตที่ 63 ตามตาราง) จะช่วยบอกระบบปฏิบัติการว่าตำแหน่งใดบนหน่วยความจำสามารถทำงาน (execute) ได้ ถ้า NX บิตไม่ทำงาน ตำแหน่งนั้นจะสามารถอ่านได้อย่างเดียว ซึ่งจะช่วยป้องกันการเขียนโปรแกรมที่ทำความเสียหายให้ระบบด้วยวิธี Buffer overflow ได้
Operating modes
ข้อมูลเพิ่มเติม โหมดการทำงาน, ระบบปฏิบัติการ ที่ต้องการ ...
โหมดการทำงาน |
ระบบปฏิบัติการ ที่ต้องการ |
แปลงโปรแกรมใหม่ |
ขนาดของตำแหน่ง |
ขนาดตัว operand |
ขยายขนาดเรจิสเตอร์ |
ขนาด GPR ปกติ |
Long mode |
โหมด 64 บิต |
ระบบปํฎิบัติการรุ่นใหม่ที่สนับสนุน 64 บิต |
ต้อง |
64 |
32 |
ต้อง |
64 |
เข้ากันได้กับระบบเดิม |
ไม่ต้อง |
32 |
32 |
ไม่ต้อง |
32 |
16 |
16 |
16 |
Legacy mode |
Protected mode |
ระบบปฏิบัติการเดิมแบบ 16 หรือ 32 บิต |
ไม่ต้อง |
32 |
32 |
ไม่ต้อง |
32 |
16 |
16 |
16 |
จำลอง 8086 |
16 |
16 |
16 |
Real mode |
ระบบปฏิบัติการเดิมแบบ 16 บิต |
ปิด
อธิบายการทำงานของโหมด
โหมดหลัก ๆ แบ่งเป็น 2 ประเภท ดังนี้
- Long mode
- เป็นโหมดการทำงานหลักของสถาปัตยกรรมนี้ โดยแบ่งเป็นโหมดย่อยคือ 64 บิตล้วน และสนับสนุนทั้ง 32/64 บิต โหมดนี้จะใช้ในระบบปฏิบัติการแบบ 64 บิต
- เนื่องจากว่าชุดคำสั่งพื้นฐานของ x86 กับ x86-64 ไม่ต่างกัน ดังนั้นโปรแกรมที่เป็น x86 เดิมจะไม่เสียประสิทธิภาพในการทำงานไป ซึ่งต่างจากสถาปัตยกรรมแบบ IA-64 ที่การรันโปรแกรม 32 บิตจะเทียบเท่าการทำงานบนโพรเซสเซอร์ตัวอื่น
- Legacy mode
- โหมดนี้จะใช้สำหรับระบบปฏิบัติการแบบ 16 และ 32 บิตเดิม ซึ่งโพรเซสเซอร์จะทำงานเสมือนโพรเซสเซอร์แบบ 32 บิต และไม่สามารถนำโปรแกรมที่เป็น 64 บิตมาใช้งานได้ สนับสนุนเฉพาะโปรแกรมที่เป็น 16 หรือ 32 บิตเท่านั้น
- DOS สามารถทำงานใน long mode ได้ผ่าน DOS extender
- BSD
- FreeBSD เริ่มสนับสนุนใน FreeBSD 5.1-RELEASE เมื่อปี 2003
- NetBSD เริ่มสนับสนุนใน NetBSD 2.0 ปี 2004
- OpenBSD เริ่มสนับสนุนใน OpenBSD 3.5 ปี 2004
- ลินุกซ์ เป็นระบบปฏิบัติการตัวแรกที่สนับสนุน AMD64 โดยเริ่มในรุ่น Kernel 2.4 ก่อนที่โพรเซสเซอร์จริงจะวางจำหน่าย
- Mac OS X บริษัทแอปเปิลระบุว่า Mac OS X v10.5 จะสนับสนุนสถาปัตยกรรม Intel 64
- MenuetOS MenuetOS เริ่มสนับสนุนปี 2005
- Solaris สนับสนุนตั้งแต่ Solaris 10 เป็นต้นมา
- วินโดวส์ เริ่มสนับสนุนใน Windows XP Professional x64 Edition และ Windows Server 2003 SP1 x64 Edition ซึ่งวางจำหน่ายในปี 2005 วินโดวส์วิสตา x64 ทุก Edition ยกเว้น รุ่น Starter และ Windows Server 2008