พวกเขาไม่เหมือนกัน รีจิสเตอร์เป็นที่ที่มีการใช้งาน CPU อยู่ การออกแบบซีพียูนั้นสามารถแก้ไขได้จริงหรือดำเนินการกับค่าเมื่ออยู่ในรีจิสเตอร์เท่านั้น ดังนั้นรีจิสเตอร์สามารถใช้ตรรกะในขณะที่หน่วยความจำ (รวมถึงแคช) สามารถเก็บค่าที่ CPU อ่านและเขียนไปเท่านั้น
ลองนึกภาพช่างไม้ที่ทำงาน เขามีสิ่งของสองสามอย่างอยู่ในมือ (ลงทะเบียน) จากนั้นเข้าใกล้สิ่งที่เขาปรับแต่ง (แคช) บ่อยครั้งที่เขากำลังทำงานอยู่ แต่ไม่ได้ใช้งานในเวลานี้และในการประชุมเชิงปฏิบัติการ (หน่วยความจำหลัก) ที่เกี่ยวข้องกับ โครงการในมือ แต่ไม่สำคัญพอที่จะอยู่บนโต๊ะทำงาน
แก้ไข:นี่คือคำอธิบายง่ายๆสำหรับวิธีการลงทะเบียนตรรกะทำงาน
ลองนึกภาพเรามีสี่ทะเบียนชื่อ R1..R4 หากคุณรวบรวมคำสั่งที่มีลักษณะเช่นนี้:
x = y + z * 3;
คอมไพเลอร์จะเอาท์พุทรหัสเครื่องที่ (เมื่อถอดประกอบ) มีลักษณะดังนี้:
LOAD R1, ADDRESS_Z //move the value of Z into register 1
MUL R1, 3 //multiply the value of register 1 by 3
LOAD R2, ADDRESS_Y //move the value of Y into register 2
ADD R1, R2 //adds the value in R2 to the value in R1
STORE R1, ADDRESS_X //move the value of register 1 into X
เนื่องจากซีพียูที่ทันสมัยส่วนใหญ่มีการลงทะเบียนที่มีความกว้าง 32 หรือ 64 บิตพวกเขาสามารถทำการคำนวณทางคณิตศาสตร์ตามมูลค่าใด ๆ จนถึงขนาดที่พวกเขาสามารถเก็บได้ พวกเขาไม่ต้องการการลงทะเบียนพิเศษสำหรับค่าที่น้อยลง พวกเขาเพียงแค่ใช้คำแนะนำ ASM พิเศษที่บอกให้ใช้เพียงบางส่วนของการลงทะเบียน และเช่นเดียวกับช่างไม้ที่มีเพียงสองมือการลงทะเบียนสามารถเก็บข้อมูลได้เพียงเล็กน้อยในครั้งเดียว แต่สามารถนำกลับมาใช้ซ้ำได้โดยส่งผ่านข้อมูลที่มีการใช้งานเข้าและออกซึ่งหมายความว่า "การลงทะเบียนจำนวนมาก" ไม่ ท้ายที่สุดถูกต้องการ (การมีจำนวนมากพร้อมใช้งานจะทำให้คอมไพเลอร์สามารถสร้างโค้ดได้เร็วขึ้นแน่นอน แต่ไม่จำเป็นอย่างยิ่ง)