ผลต่างระหว่างรุ่นของ "เอกซ์86-64"

เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
ไม่มีความย่อการแก้ไข
ป้ายระบุ: แก้ไขจากอุปกรณ์เคลื่อนที่ แก้ไขจากเว็บสำหรับอุปกรณ์เคลื่อนที่
ไม่มีความย่อการแก้ไข
บรรทัด 1:
== AMD64 ==
 
ชุดคำสั่ง AMD64 ถูกนำไปใช้ในไมโครโพรเซสเซอร์ของ AMD ดังนี้ [[Athlon 64]], [[Athlon 64|Athlon 64 FX]], [[Athlon 64 X2]], [[Turion 64]], [[Turion 64 X2]], [[Opteron]] และ [[Sempron]] (เฉพาะรุ่นที่ผลิตในช่วงหลัง)
 
=== คุณสมบัติของสถาปัตยกรรม ===
 
AMD64 ถูกสร้างมาเพื่อเป็นคู่แข่งกับสถาปัตยกรรม [[IA64]] ของบริษัทอินเทลและเอชพี ข้อแตกต่างที่สำคัญมีดังนี้
* '''สนับสนุนจำนวนตัวเลข (integer) ขนาด 64 บิต''' โดยขยายขนาดของเรจิสเตอร์สำหรับงานทั่วไป general-purpose registerจาก 32 บิตเป็น 64 บิต และปรับปรุงส่วนคำสั่งอื่นๆ ให้สนับสนุนตัวเลขแบบ 64 บิตด้วย
* '''เพิ่มจำนวนเรจิสเตอร์''' เพิ่มจำนวน[[เรจิสเตอร์]]ทำงานทั่วไปจาก 8 ตัวในสถาปัตยกรรม x86 เดิม เป็น 16 ตัว ซึ่งทำให้เก็บค่าตัวแปรไว้ในเรจิสเตอร์ได้มากขึ้น และส่งผลให้การทำงานของระบบรวดเร็วขึ้น
* '''เพิ่มเรจิสเตอร์สำหรับ XMM (SSE)''' เพิ่มจำนวนของเรจิสเตอร์สำหรับงาน XMM จาก 8 ตัวเป็น 16 ตัว
* '''ขยายขนาดตำแหน่งหน่วยความจำแบบ virtual''' ตามทฤษฎีแล้วสถาปัตยกรรมแบบ AMD64 สนับสนุนการอ้างตำแหน่งหน่วยความจำแบบ virtual ได้มากถึง 16&nbsp;[[exbibyte]] (2<sup>64</sup> ไบต์) เมื่อเทียบกับ x86 แบบเดิมที่อ้างได้เพียง 4&nbsp;[[gibibyte]] (ซีพียูแบบ AMD64 ที่วางขายในปัจจุบัน ยังอ้างได้เพียง 256&nbsp;[[tebibyte]] หรือ 2<sup>48</sup> ไบต์ แต่สามารถปรับเพิ่มได้ในอนาคต)
* '''ขยายขนาดตำแหน่งหน่วยความจำแบบ physical''' ตามทฤษฎีแล้วสถาปัตยกรรมแบบ AMD64 สนับสนุนการอ้างตำแหน่งหน่วยความจำแบบ physcial ได้มากถึง 4&nbsp;[[petibyte]] (2<sup>52</sup> ไบต์) (ซีพียูแบบ AMD64 ที่วางขายในปัจจุบัน ยังอ้างได้เพียง 1&nbsp;[[tebibyte]] หรือ 2<sup>40</sup> ไบต์ แต่สามารถปรับเพิ่มได้ในอนาคต)
* '''พอยเตอร์ของชุดคำสั่งสามารถอ้างตำแหน่งข้อมูลแบบสัมพัทธ์ (relative)''' ทำให้ชุดคำสั่งสามารถเป็นอิสระจากตำแหน่งอ้างอิงแบบคงที่ได้
* '''สนับสนุนชุดคำสั่ง SSE''' เดิม AMD64 สนับสนุนเฉพาะ [[Streaming SIMD Extensions|SSE]] และ [[SSE2]] เท่านั้น ในภายหลังได้สนับสนุนชุดคำสั่ง [[SSE3]] เพิ่มเติม
* '''[[No-Execute bit]]''' หรือชื่อย่อ '''NX บิต''' (บิตที่ 63 ตามตาราง) จะช่วยบอกระบบปฏิบัติการว่าตำแหน่งใดบนหน่วยความจำสามารถทำงาน (execute) ได้ ถ้า NX บิตไม่ทำงาน ตำแหน่งนั้นจะสามารถอ่านได้อย่างเดียว ซึ่งจะช่วยป้องกันการเขียนโปรแกรมที่ทำความเสียหายให้ระบบด้วยวิธี [[Buffer overflow]] ได้
 
=== โหมดการทำงาน ===
=== Operating modes ===
{| class="wikitable"
|- bgcolor="#cccccc"
! colspan = "2" | โหมดการทำงาน
! [[ระบบปฏิบัติการ]] ที่ต้องการ
! แปลงโปรแกรมใหม่
! ขนาดของตำแหน่ง
! ขนาดตัว operand
! ขยายขนาดเรจิสเตอร์
! ขนาด [[General Purpose Register|GPR]] ปกติ
|- align = "center"
| rowspan = "3" | [[Long mode]]
| โหมด 64 บิต
| rowspan = "3" | ระบบปํฎิบัติการรุ่นใหม่ที่สนับสนุน 64 บิต
| style="background: #ffdddd" | {{{1|ต้อง}}}
| 64
| 32
| style="background: #ddffdd" | {{{1|ต้อง}}}
| 64
|- align = "center"
| rowspan = "2" | เข้ากันได้กับระบบเดิม
| rowspan = "2" style="background: #ddffdd" | {{{1|ไม่ต้อง}}}
| 32
| 32
| rowspan = "2" style="background: #ffdddd" | {{{1|ไม่ต้อง}}}
| 32
|- align = "center"
| 16
| 16
| 16
|- align = "center"
| rowspan = "4" | Legacy mode
| rowspan = "2" | [[Protected mode]]
| rowspan = "3" | ระบบปฏิบัติการเดิมแบบ 16 หรือ 32 บิต
| rowspan = "4" style="background: #ddffdd" | {{{1|ไม่ต้อง}}}
| 32
| 32
| rowspan = "4" style="background: #ffdddd" | {{{1|ไม่ต้อง}}}
| 32
|- align = "center"
| 16
| 16
| 16
|- align = "center"
| จำลอง 8086
| rowspan = "2" | 16
| rowspan = "2" | 16
| rowspan = "2" | 16
|- align = "center"
| [[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 บิตเท่านั้น
 
== Intel 64 ==
{{โครงส่วน}}
== ความแตกต่างของ AMD64 กับ Intel 64 ==