Hacker News

CPU x86-64 มีการลงทะเบียนจำนวนเท่าใด (2020)

CPU x86-64 มีการลงทะเบียนจำนวนเท่าใด (2020) การสำรวจนี้จะเจาะลึกไปในหลายๆ เรื่อง โดยพิจารณาถึงความสำคัญและศักยภาพของมัน — Mewayz Business OS

1 นาทีอ่าน

Mewayz Team

Editorial Team

Hacker News

CPU x86-64 มีรีจิสเตอร์สำหรับใช้งานทั่วไป 16 รีจิสเตอร์ แต่ไฟล์รีจิสเตอร์ที่สมบูรณ์นั้นใหญ่กว่ามาก โดยครอบคลุมรีจิสเตอร์ทางสถาปัตยกรรมมากกว่า 100 รายการเมื่อคุณรวมจุดทศนิยม, SIMD, เซ็กเมนต์, การควบคุม และรีจิสเตอร์เฉพาะรุ่น การทำความเข้าใจภาพรวมมีความสำคัญไม่ว่าคุณจะเขียนโค้ดระดับต่ำ ดีบักประสิทธิภาพของระบบ หรือเพียงแค่สนองความอยากรู้อยากเห็นเกี่ยวกับสิ่งที่เกิดขึ้นภายใต้ระบบปฏิบัติการ

Registers วัตถุประสงค์ทั่วไป 16 รายการใน x86-64 คืออะไร

ส่วนขยาย 64 บิตของสถาปัตยกรรม x86 (AMD64/Intel 64) เพิ่มเป็นสองเท่าจากการลงทะเบียนใช้งานทั่วไป 8 รายการดั้งเดิมของ IA-32 เป็น 16 สิ่งเหล่านี้คือสิ่งสำคัญในการคำนวณในแต่ละวัน ซึ่งใช้สำหรับการคำนวณทางคณิตศาสตร์ การกำหนดที่อยู่หน่วยความจำ อาร์กิวเมนต์ของฟังก์ชัน และค่าที่ส่งคืน

RAX, RBX, RCX, RDX - รีจิสเตอร์ "accumulator" "base" "counter" และ "data" ดั้งเดิม ขณะนี้ขยายเป็นความกว้าง 64 บิต

RSI, RDI — ดัชนีต้นทางและดัชนีปลายทาง มักใช้สำหรับการดำเนินการสตริงและอาร์กิวเมนต์ของฟังก์ชัน

RSP, RBP — ตัวชี้สแต็กและตัวชี้ฐาน สำคัญสำหรับการจัดการสแต็กการเรียกและเฟรมสแต็ก

R8 ถึง R15 — แปดรีจิสเตอร์ใหม่ล่าสุดที่เปิดตัวใน x86-64 ซึ่งไม่มีอยู่ในสถาปัตยกรรม 32 บิต ทำให้คอมไพเลอร์มีความยืดหยุ่นมากขึ้นในการปรับแต่งให้เหมาะสมที่สุด

รีจิสเตอร์ 64 บิตเหล่านี้แต่ละตัวสามารถใช้งานร่วมกันได้แบบย้อนหลัง ซึ่งหมายความว่าคุณสามารถจัดการกับ 32 บิตที่ต่ำกว่า (เช่น EAX), 16 บิต (AX) หรือแม้แต่ 8 บิตแต่ละครึ่ง (AH, AL) ซึ่งเป็นมรดกการออกแบบที่ย้อนกลับไปถึง Intel 8086 ตั้งแต่ปี 1978

x86-64 มีผู้ลงทะเบียนทั้งหมดกี่คน?

💡 คุณรู้หรือไม่?

Mewayz ทดแทนเครื่องมือธุรกิจ 8+ รายการในแพลตฟอร์มเดียว

CRM · การออกใบแจ้งหนี้ · HR · โปรเจกต์ · การจอง · อีคอมเมิร์ซ · POS · การวิเคราะห์ แผนฟรีใช้ได้ตลอดไป

เริ่มฟรี →

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

รีจิสเตอร์ RFLAGS เป็นโค้ดเงื่อนไขการถือรีจิสเตอร์ 64 บิตเดี่ยว — แฟล็กศูนย์, แฟล็กพกพา, แฟล็กโอเวอร์โฟลว์ — ที่ควบคุมการแยกย่อยแบบมีเงื่อนไขหลังจากการดำเนินการทางคณิตศาสตร์หรือตรรกะทุกครั้ง รีจิสเตอร์ RIP (ตัวชี้คำสั่ง) ติดตามที่อยู่ของคำสั่งถัดไปเพื่อดำเนินการ และคำสั่งส่วนใหญ่ไม่สามารถแก้ไขได้โดยตรง

รีจิสเตอร์หกเซ็กเมนต์ (CS, DS, ES, FS, GS, SS) ยังคงอยู่จากโมเดลหน่วยความจำแบบเซ็กเมนต์ของสถาปัตยกรรม x86 รุ่นก่อนหน้า ในโหมด 64 บิต ส่วนใหญ่จะเหลือร่องรอย แต่ระบบปฏิบัติการ FS และ GS ยังคงใช้งานอยู่เพื่อชี้ไปที่ที่เก็บข้อมูลแบบเธรดโลคัลและโครงสร้างข้อมูลเคอร์เนลภายใน CPU

จากนั้นมีรีจิสเตอร์ XMM 16 รายการ (XMM0–XMM15) ที่นำมาใช้กับ SSE แต่ละอันมีความกว้าง 128 บิต ด้วย AVX สิ่งเหล่านี้จะกลายเป็นรีจิสเตอร์ YMM 256 บิต และด้วย AVX-512 จะขยายไปสู่รีจิสเตอร์ ZMM 512 บิต โดยเพิ่มอีก 32 รีจิสเตอร์ลงในไฟล์บนฮาร์ดแวร์ที่รองรับ รีจิสเตอร์ 8 x87 FPU แบบเดิม (ST0–ST7) ซึ่งจัดเป็นสแต็ก จัดการการคำนวณจุดทศนิยมแบบขยายความแม่นยำ 80 บิต

ข้อมูลเชิงลึกที่สำคัญ: จำนวนการลงทะเบียนทั้งหมดที่มองเห็นได้จากโค้ดพื้นที่ผู้ใช้ในกระบวนการ x86-64 โดยทั่วไปคือประมาณ 40–50 (วัตถุประสงค์ทั่วไป แฟล็ก ตัวชี้คำสั่ง เซ็กเมนต์ และการลงทะเบียน XMM) เมื่อคุณเพิ่มรีจิสเตอร์ควบคุมโหมดเคอร์เนล รีจิสเตอร์ตรวจแก้จุดบกพร่อง และรีจิสเตอร์เฉพาะรุ่น (MSR) หลายร้อยรายการ พื้นที่รีจิสเตอร์สถาปัตยกรรมทั้งหมดจะเหลือนับพัน ซึ่งส่วนใหญ่ไม่เคยถูกแตะต้องโดยซอฟต์แวร์ธรรมดา

เหตุใด x86-64 จึงเพิ่มจำนวนการลงทะเบียนวัตถุประสงค์ทั่วไปเป็นสองเท่า

การเพิ่มขึ้นจาก 8 เป็น 16 รีจิสเตอร์อเนกประสงค์ถือเป็นหนึ่งในการปรับปรุงเชิงปฏิบัติมากที่สุดที่ AMD ทำเมื่อออกแบบส่วนขยาย x86-64 ในช่วงต้นทศวรรษ 2000 การลงทะเบียน 8 ดั้งเดิมสร้างปัญหาคอขวดอย่างรุนแรง: คอมไพเลอร์ถูกบังคับให้ส่งตัวแปรไปยังหน่วยความจำ (สแต็ก) อย่างต่อเนื่องเนื่องจากมีการลงทะเบียนไม่เพียงพอที่จะเก็บค่ากลาง การหกนี้ทำให้เกิดโหลดเพิ่มเติมและคำแนะนำในการจัดเก็บ โดยเบิร์นทั้งเวลาและแบนด์วิธหน่วยความจำ

ด้วยการลงทะเบียนอเนกประสงค์ 16 รายการ รูปแบบการเรียก x86-64 (System V AMD64 ABI บน Linux/macOS, Microsoft x64 ABI บน Windows) สามารถส่งผ่านอาร์กิวเมนต์ฟังก์ชันหลายรายการแรกทั้งหมดในรีจิสเตอร์ — อาร์กิวเมนต์จำนวนเต็มหกรายการบน Linux (RDI, RSI, RDX, RCX, R8, R9) — โดยไม่ต้องแตะสแต็กเลย

Build Your Business OS Today

From freelancers to agencies, Mewayz powers 138,000+ businesses with 207 integrated modules. Start free, upgrade when you grow.

Create Free Account →

ลองใช้ Mewayz ฟรี

แพลตฟอร์มแบบออล-อิน-วันสำหรับ CRM, การออกใบแจ้งหนี้, โครงการ, HR และอื่นๆ ไม่ต้องใช้บัตรเครดิต

เริ่มจัดการธุรกิจของคุณอย่างชาญฉลาดวันนี้

เข้าร่วมธุรกิจ 30,000+ ราย แผนฟรีตลอดไป · ไม่ต้องใช้บัตรเครดิต

พบว่าสิ่งนี้มีประโยชน์หรือไม่? แบ่งปันมัน

พร้อมนำไปปฏิบัติแล้วหรือยัง?

เข้าร่วมธุรกิจ 30,000+ รายที่ใช้ Mewayz แผนฟรีตลอดไป — ไม่ต้องใช้บัตรเครดิต

เริ่มต้นทดลองใช้ฟรี →

พร้อมที่จะลงมือทำหรือยัง?

เริ่มต้นทดลองใช้ Mewayz ฟรีวันนี้

แพลตฟอร์มธุรกิจแบบครบวงจร ไม่ต้องใช้บัตรเครดิต

เริ่มฟรี →

ทดลองใช้ฟรี 14 วัน · ไม่ต้องใช้บัตรเครดิต · ยกเลิกได้ทุกเมื่อ