เอกซ์86-64

**เอกซ์86-64** (x86-64) เป็นชื่อของสถาปัตยกรรมคอมพิวเตอร์สำหรับไมโครโพรเซสเซอร์แบบ 64 บิต และชุดคำสั่งที่ใช้งานด้วยกัน x86-64 เป็นส่วนขยายของสถาปัตยกรรมแบบ x86 ออกแบบโดยบริษัท AMD และใช้ชื่อทางการค้าว่า **AMD64** ในภายหลังบริษัทอินเทลได้นำสถาปัตยกรรมนี้ไปใช้ใต้ชื่อการค้าว่า **Intel 64** หรือ **EM64T** ซึ่งชื่อทั่วไปที่ใช้กันโดยไม่อิงกับชื่อการค้าคือ **x86-64** หรือ **x64**

## AMD64

ชุดคำสั่ง 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&nbsp;exbibyte (264 ไบต์) เมื่อเทียบกับ x86 แบบเดิมที่อ้างได้เพียง 4&nbsp;gibibyte (ซีพียูแบบ AMD64 ที่วางขายในปัจจุบัน ยังอ้างได้เพียง 256&nbsp;tebibyte หรือ 248 ไบต์ แต่สามารถปรับเพิ่มได้ในอนาคต)
* **ขยายขนาดตำแหน่งหน่วยความจำแบบ physical** ตามทฤษฎีแล้วสถาปัตยกรรมแบบ AMD64 สนับสนุนการอ้างตำแหน่งหน่วยความจำแบบ physcial ได้มากถึง 4&nbsp;petibyte (252 ไบต์) (ซีพียูแบบ AMD64 ที่วางขายในปัจจุบัน ยังอ้างได้เพียง 1&nbsp;tebibyte หรือ 240 ไบต์ แต่สามารถปรับเพิ่มได้ในอนาคต)
* **พอยเตอร์ของชุดคำสั่งสามารถอ้างตำแหน่งข้อมูลแบบสัมพัทธ์ (relative)** ทำให้ชุดคำสั่งสามารถเป็นอิสระจากตำแหน่งอ้างอิงแบบคงที่ได้
* **สนับสนุนชุดคำสั่ง SSE** เดิม AMD64 สนับสนุนเฉพาะ SSE และ SSE2 เท่านั้น ในภายหลังได้สนับสนุนชุดคำสั่ง SSE3 เพิ่มเติม
* **[[No-Execute bit]]** หรือชื่อย่อ **NX บิต** (บิตที่ 63 ตามตาราง) จะช่วยบอกระบบปฏิบัติการว่าตำแหน่งใดบนหน่วยความจำสามารถทำงาน (execute) ได้ ถ้า NX บิตไม่ทำงาน ตำแหน่งนั้นจะสามารถอ่านได้อย่างเดียว ซึ่งจะช่วยป้องกันการเขียนโปรแกรมที่ทำความเสียหายให้ระบบด้วยวิธี Buffer overflow ได้

### โหมดการทำงาน
### Operating modes

#### อธิบายการทำงานของโหมด
โหมดหลัก ๆ แบ่งเป็น 2 ประเภท ดังนี้

;**[[Long mode]]**: เป็นโหมดการทำงานหลักของสถาปัตยกรรมนี้ โดยแบ่งเป็นโหมดย่อยคือ 64 บิตล้วน และสนับสนุนทั้ง 32/64 บิต โหมดนี้จะใช้ในระบบปฏิบัติการแบบ 64 บิต

: เนื่องจากว่าชุดคำสั่งพื้นฐานของ x86 กับ x86-64 ไม่ต่างกัน ดังนั้นโปรแกรมที่เป็น x86 เดิมจะไม่เสียประสิทธิภาพในการทำงานไป ซึ่งต่างจากสถาปัตยกรรมแบบ IA-64 ที่การรันโปรแกรม 32 บิตจะเทียบเท่าการทำงานบนโพรเซสเซอร์ตัวอื่น

;**Legacy mode**: โหมดนี้จะใช้สำหรับระบบปฏิบัติการแบบ 16 และ 32 บิตเดิม ซึ่งโพรเซสเซอร์จะทำงานเสมือนโพรเซสเซอร์แบบ 32 บิต และไม่สามารถนำโปรแกรมที่เป็น 64 บิตมาใช้งานได้ สนับสนุนเฉพาะโปรแกรมที่เป็น 16 หรือ 32 บิตเท่านั้น

## Intel 64

## ความแตกต่างของ AMD64 กับ Intel 64
## ระบบปฏิบัติการที่สนับสนุน
* **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

## อ้างอิง
* เทคโนโลยี AMD64 
* เทคโนโลยี Intel 64

หมวดหมู่:สถาปัตยกรรมคอมพิวเตอร์