เรจิสเตอร์

**เรจิสเตอร์** หรือ **รีจิสเตอร์** () ในอิเล็กทรอนิกส์ดิจิทัล โดยเฉพาะอย่างยิ่งในการคำนวณ เรจิสเตอร์จะเก็บข้อมูลเป็นบิทจำนวนมากเพื่อให้ระบบต่าง ๆ สามารถเขียนเข้าไปใหม่หรืออ่านบิททั้งหมดนั้นได้พร้อมกัน เรจิสเตอร์เป็นหน่วยความจำขนาดเล็ก ที่ทำงานได้เร็วมาก ในระบบคอมพิวเตอร์ หน่วยความจำเหล่านี้ ใช้เก็บข้อมูลที่จำเป็นในการคำนวณ หรือสถานะการทำงานของหน่วยประมวลผลกลาง และมักถูกอ้างถึงบ่อย ในระหว่างการคำนวณของหน่วยประมวลผล เพื่อให้โปรแกรมที่ทำงานอยู่ สามารถเข้าถึงข้อมูลที่จำเป็นเหล่านี้ ได้อย่างรวดเร็ว

## ฟังก์ชัน

สัญญาณเรียกใช้ข้อมูลจากเครื่องคำนวณหลักจะถูกส่งไปที่อุปกรณ์ควบคุมของเรจิสเตอร์เพื่อให้เรจิสเตอร์ส่งข้อมูลไปให้หรือรับข้อมูลจากอีกเรจิสเตอร์หนึ่ง 

บางครั้งเครื่องคำนวณหลักเปลี่ยนเส้นทางข้อมูลจากเรจิสเตอร์หนึ่งไปยังอุปกรณ์ที่ทำหน้าที่บางอย่างเช่นหน่วยบวกเลข จากนั้นจึงส่งผลลัพธ์ไปเก็บไว้ที่อีกเรจิสเตอร์หนึ่ง

การใช้งานโดยทั่วไปของเรจิสเตอร์ประกอบด้วย:
*ทำการตั้งค่า configuration และการเริ่มต้นทำงานของคุณสมบัติบางอย่าง โดยเฉพาะอย่างยิ่ง ในระหว่างการ initialization
*ทำเป็นหน่วยความจำบัฟเฟอร์ชั่วคราว เช่น หน่วยความจำวิดีโอสำหรับกราฟิกการ์ด
*เป็นอินพุต/เอาต์พุต (I/O) ในงานที่แตกต่างกัน
*รายงานสถานะ เช่นเหตุการณ์บางอย่างได้เกิดขึ้นในหน่วยฮาร์ดแวร์หรือไม่ (ตัวอย่างเช่นเรจิสเตอร์ที่แสดงสถานะของโมเด็ม () หรือ เรจิสเตอร์ที่แสดงสถานะของสาย ()

การอ่านเรจิสเตอร์ใน "peripheral units" (ฮาร์ดแวร์คอมพิวเตอร์นอก CPU) เกี่ยวข้องกับการ เข้าถึง I/O address ที่หน่วยความจำหรือพอร์ตกำหนดไว้ () ที่มีคำสั่ง "โหลด" หรือ "เก็บ"ที่ออกโดยหน่วยประมวลผล เรจิสเตอร์จะถูกเรียกด้วยคำสั่ง แต่บางครั้ง ใช้เพียงไม่กี่บิตของคำสั่ง เช่น อ่านใน หรือ เขียนไป ที่เรจิสเตอร์ใด ๆ

เครื่องมือการออกแบบเชิงพาณิชย์ถูกทำให้ง่ายและโดยอัตโนมัติของการใช้ข้อกำหนดและการสร้างระหัสของเรจิสเตอร์ที่กำหนดโดยหน่วยความจำ () สำหรับฮาร์ดแวร์, เฟิร์มแวร์, การตรวจสอบ ฮาร์ดแวร์, การทดสอบ และเอกสารต่าง ๆ

เพราะเรจิสเตอร์แบบ write-only แก้จุดบกพร่องเกือบไม่ได้ นำไปสู่​​ปัญหา read-modify-write และยังทำให้เป็นเรื่องยากโดยไม่จำเป็นสำหรับ Advanced Configuration and Power Interface (ACPI) เพื่อตรวจสอบสถานะของอุปกรณ์เมื่อเข้าสู่สลีปโหมด เพื่อเรียกคืนสถานะเมื่อออกจากสลีปโหมด โปรแกรมเมอร์จำนวนมากบอกนักออกแบบฮาร์ดแวร์เพื่อให้แน่ใจว่าเรจิสเตอร์ทั้งหมดที่สามารถเขียนได้จะสามารถอ่านได้ด้วย อย่างไรก็ตาม มีบางกรณี เมื่อการอ่านบางประเภทของเรจิสเตอร์ จะไร้ประโยชน์ ตัวอย่างเช่น บิตของรีจิตเตอร์แบบ strobe ที่สร้างวงจรพัลส์หนึ่งรอบเข้ากับฮาร์ดแวร์พิเศษจะอ่านเป็นลอจิก 0 เสมอ

## ความหลากหลายของเรจิสเตอร์

เรจิสเตอร์ภายในหน่วยประมวลผลกลาง (CPU) จะเรียกว่ารึจิสเตอร์หน่วยประมวลผล

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

เรจิสเตอร์ปกติจะถูกวัดโดยจำนวนบิตที่พวกมันสามารถเก็บไว้ ตัวอย่างเช่น "8 บิตเรจิสเตอร์" หรือ "32 บิตเรจิสเตอร์"

นักออกแบบสามารถใช้งานเรจิสเตอร์ในหลากหลายวิธี รวมทั้ง:
*ไฟล์เรจิสเตอร์
*SRAM มาตรฐาน
*flip-flop เฉพาะตัว
*หน่วยความจำหลักความเร็วสูง

นอกจากนั้น เรจิสเตอร์ที่ "โปรแกรมเมอร์มองเห็น" ที่สามารถถูกอ่านและเขียนด้วยซอฟแวร์ ชิปจำนวนมากมีเรจิสเตอร์แบบ "microarchitectural ภายใน" ที่ถูกนำมาใช้สำหรับเครื่องคำนวณหลักและเครื่องอื่นที่อยู่ระหว่างการพัฒนา; ตัวอย่างเช่น registered memory

ในสถาปัตยกรรมคอมพิวเตอร์ส่วนใหญ่ จะแบ่งประเภทของเรจิสเตอร์ ไว้เป็นหมวดหมู่ เช่น

* เรจิสเตอร์สำหรับงานทั่วไป (general purpose register)
* เรจิสเตอร์สำหรับเลขทศนิยม (floating point register)
* เรจิสเตอร์สำหรับหน้าที่พิเศษ (special purpose register)
** เรจิสเตอร์ที่เก็บตำแหน่งของชุดคำสั่งที่กำลังประมวลผลอยู่ (program counter)
** เรจิสเตอร์ที่เก็บตำแหน่งของสแตก

## มาตรฐาน

SPIRIT IP- XACT และ DITA SIDSC XML เป็นตัวกำหนดรูปแบบ XML มาตรฐานสำหรับ  memory-mapped registers

## อ้างอิง

## ดูเพิ่ม
* หน่วยประมวลผลกลาง
* อุปกรณ์คอมพิวเตอร์
*Register-transfer level (RTL)
*Input/output base address

หมวดหมู่:วงจรดิจิทัล