กลับไปหน้าบทความ

อ่าน 2 นาที

ทะเบียนสถานะ

ใน หน่วยประมวลผลกลาง รี จิสเตอร์สถานะ รี จิสเตอร์แฟล็ก หรือ รีจิสเตอร์รหัสเงื่อนไข ( CCR ) คือ รีจิสเตอร์ ที่ประกอบด้วยชุด บิต แฟล็ก สถานะ ตัวอย่างของรีจิสเตอร์ดังกล่าว ได้แก่...

ทะเบียนสถานะ

ในหน่วยประมวลผลกลางรีจิสเตอร์สถานะรีจิสเตอร์แฟล็กหรือรีจิสเตอร์รหัสเงื่อนไข ( CCR ) คือรีจิสเตอร์ที่ประกอบด้วยชุดบิตแฟล็ก สถานะ ตัวอย่างของรีจิสเตอร์ดังกล่าว ได้แก่รีจิสเตอร์ FLAGSในสถาปัตยกรรม x86 รีจิสเตอร์ คำสถานะโปรแกรม (PSW) ในสถาปัตยกรรม IBM System/360ถึงz/Architecture และรีจิสเตอร์สถานะโปรแกรมแอปพลิเคชัน (APSR) ใน สถาปัตยกรรม ARM (32 บิต) [ 1 ] และรีจิสเตอร์ระบบ NCSV ใน สถาปัตยกรรม ARM AArch64 64 บิต[ 2 ]

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

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

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

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

ธงทั่วไป

ต่อไปนี้คือรายการของแฟล็กในรีจิสเตอร์สถานะ CPU ที่ใช้กันทั่วไปในโปรเซสเซอร์สมัยใหม่:

ธง ชื่อ คำอธิบาย
ธงศูนย์แสดงว่าผลลัพธ์ของการดำเนินการทางคณิตศาสตร์หรือตรรกะ (หรือบางครั้ง การโหลด) เป็นศูนย์
ซีถือธงฟังก์ชันนี้ช่วยให้สามารถบวก/ลบตัวเลขที่มากกว่าหนึ่งเวิร์ดได้ โดยการทดเลขฐานสองจากเวิร์ดที่มีค่าน้อยกว่าไปยังบิตที่มีค่าน้อยที่สุดของเวิร์ดที่มีค่ามากกว่าตามความจำเป็น นอกจากนี้ยังใช้เพื่อขยายการเลื่อนบิตและการหมุนบิตในลักษณะเดียวกันบนโปรเซสเซอร์หลายตัว (บางครั้งทำผ่าน แฟล็ก X เฉพาะ )
เลขประจำตัวป้ายธง ป้าย ปฏิเสธระบุว่าผลลัพธ์ของการดำเนินการทางคณิตศาสตร์เป็นค่าลบ ในโปรเซสเซอร์บางตัว[ 3 ]แฟล็ก N และ S แตกต่างกันโดยมีความหมายและการใช้งานที่แตกต่างกัน: แฟล็กหนึ่งระบุว่าผลลัพธ์สุดท้ายเป็นค่าลบ ในขณะที่แฟล็กอีกอันระบุว่ามีการลบหรือบวกเกิดขึ้น
V / O / Wแฟล็กโอเวอร์โฟลว์แสดงว่าผลลัพธ์ที่มีเครื่องหมายของการดำเนินการนั้นมีขนาดใหญ่เกินกว่าจะพอดีกับความกว้างของรีจิสเตอร์โดยใช้การแสดงผล แบบสองคอมพลีเมนต์

ธงอื่นๆ

ในโปรเซสเซอร์บางตัว รีจิสเตอร์สถานะอาจมีแฟล็กต่างๆ เช่นนี้:

ธง ชื่อ คำอธิบาย
เอช / เอ / ดีซีธงการทดครึ่งทาง ธงเสริมการทดเลขหลักเดียวธงปรับทศนิยม บ่งชี้ว่าเกิดการทดบิตขึ้นระหว่างนิบเบิล (โดยทั่วไปคือระหว่างครึ่ง 4 บิตของไบต์ตัวถูกดำเนินการ) อันเป็นผลมาจากการดำเนินการทางคณิตศาสตร์ครั้งล่าสุด แฟล็กดังกล่าวมีประโยชน์โดยทั่วไปสำหรับการใช้ งานการคำนวณเลขคณิต BCD แบบแพ็คบนฮาร์ดแวร์ไบนารี
พีธงความเท่าเทียมกันระบุว่าจำนวนบิตที่ตั้งค่าไว้ในผลลัพธ์สุดท้ายเป็นเลขคี่หรือเลขคู่
ฉันธงขัดจังหวะบนโปรเซสเซอร์บางตัว บิตนี้จะระบุว่าการขัดจังหวะเปิดใช้งานหรือถูกปิดกั้น[ 4 ]หากโปรเซสเซอร์มี ระดับความสำคัญของ การขัดจังหวะ หลายระดับ เช่นPDP-11อาจใช้บิตหลายบิตเพื่อระบุลำดับความสำคัญของเธรดปัจจุบัน ทำให้สามารถขัดจังหวะได้เฉพาะโดยฮาร์ดแวร์ที่ตั้งค่าไว้ที่ลำดับความสำคัญสูงกว่าเท่านั้น บนสถาปัตยกรรมอื่นๆ บิตอาจระบุว่าการขัดจังหวะกำลังทำงานอยู่ และเธรดปัจจุบันเป็นส่วนหนึ่งของ ตัว จัดการ การขัดจังหวะ
เอสธงหัวหน้างาน ในโปรเซสเซอร์ที่มีวงแหวนป้องกัน สองวงขึ้นไป บิตอย่างน้อยหนึ่งบิตในรีจิสเตอร์สถานะจะระบุวงแหวนของเธรดปัจจุบัน (ว่ามีความน่าเชื่อถือมากน้อยเพียงใด หรือต้องใช้ระบบปฏิบัติการสำหรับคำขอที่อาจขัดขวางเธรดอื่นหรือไม่) ในโปรเซสเซอร์ที่มีวงแหวนเพียงสองวง บิตเดียวอาจใช้เพื่อแยกแยะโหมดผู้ดูแลระบบออกจากโหมดผู้ใช้
คิวธงความอิ่มตัว เช่น บนสถาปัตยกรรม ARM (32 บิต) (ARMv5TE, ARMv6 และรุ่นต่อมา) "แฟล็ก Q จะถูกตั้งค่าเป็น 1 เมื่อเกิดการอิ่มตัวใน คำสั่ง คำนวณเลขคณิตแบบอิ่มตัวหรือเมื่อเกิดการโอเวอร์โฟลว์ในคำสั่งคูณบางคำสั่ง"

ธง Q เป็นธงเหนียว" [ 5 ]

สถาปัตยกรรม CPU ที่ไม่มีแฟล็กทางคณิตศาสตร์

แฟล็กสถานะช่วยให้คำสั่งสามารถดำเนินการตามผลลัพธ์ของคำสั่งก่อนหน้าได้ ใน โปรเซสเซอร์ แบบไปป์ไลน์เช่น โปรเซสเซอร์ แบบซูเปอร์สเกลาร์และ โปรเซสเซอร์ แบบคาดการณ์ล่วงหน้าสิ่งนี้สามารถสร้างอันตรายที่ทำให้การประมวลผลช้าลงหรือต้องใช้ฮาร์ดแวร์เพิ่มเติมเพื่อแก้ไขปัญหา[ 6 ]

โปรแกรมประมวล ผลคำที่มีคำสั่งยาวมากบางโปรแกรมจะละเว้นการใช้แฟล็กสถานะ คำสั่งเดียวจะทำการทดสอบและระบุผลลัพธ์ของการทดสอบนั้นว่าควรดำเนินการอย่างไร เช่น เปรียบเทียบaกับbและกระโดดไปยังcถ้าเท่ากัน ผลลัพธ์ของการทดสอบจะไม่ถูกบันทึกไว้สำหรับคำสั่งถัดไป

อีกทางเลือกหนึ่งนอกเหนือจากรีจิสเตอร์สถานะคือ การที่คำสั่งประมวลผลจะบันทึกข้อมูลสถานะลงในรีจิสเตอร์อเนกประสงค์เมื่อโปรแกรมร้องขอ สถาปัตยกรรมMIPS , AMD 29000 , DEC AlphaและRISC-Vเป็นตัวอย่างของสถาปัตยกรรมที่ให้คำสั่งเปรียบเทียบซึ่งเก็บผลลัพธ์การเปรียบเทียบไว้ในรีจิสเตอร์อเนกประสงค์ ในรูปแบบบิตเดียวหรือค่าตัวเลข 0 หรือ 1 การกระโดดแบบมีเงื่อนไขจะทำงานโดยอิงจากค่าในรีจิสเตอร์อเนกประสงค์

โดยปกติ คำสั่งเปรียบเทียบจะทดสอบความเท่าเทียมกันหรือขนาดที่มีเครื่องหมาย/ไม่มีเครื่องหมาย ในการทดสอบเงื่อนไขอื่นๆ โปรแกรมจะใช้สูตรความเท่าเทียมกัน ตัวอย่างเช่น MIPS ไม่มี "บิตตัวทด" แต่โปรแกรมที่ทำการบวกหลายเวิร์ดสามารถทดสอบได้ว่าการบวกเวิร์ดเดียวของรีจิสเตอร์เกิดการล้นหรือไม่ โดยการทดสอบว่าผลรวมต่ำกว่าตัวถูกดำเนินการหรือไม่: [ 6 ]

# alow = blow + clow addu alow , blow , clow # set tmp = 1 if alow < clow, else 0 sltu tmp , alow , clow addu ahigh , bhigh , chigh addu ahigh , ahigh , tmp

คำสั่ง นี้sltuจะกำหนดtmpค่าเป็น 1 หรือ 0 โดยขึ้นอยู่กับการเปรียบเทียบที่ระบุไว้ของตัวถูกดำเนินการอีกสองตัว (ในที่นี้ รีจิสเตอร์อเนกประสงค์tmpไม่ได้ถูกใช้เป็นรีจิสเตอร์สถานะเพื่อควบคุมการกระโดดแบบมีเงื่อนไข แต่ค่าที่เป็นไปได้คือ 1 ซึ่งบ่งชี้ถึงตัวทดจากการบวกแบบลำดับต่ำ จะถูกบวกเข้ากับเวิร์ดแบบลำดับสูง)

วิธีการนี้จะใช้งานได้ไม่สะดวกนักเมื่อบวกคำสามคำขึ้นไป เนื่องจากมีการบวกสองครั้งในการคำนวณb + c + tmpซึ่งแต่ละครั้งอาจทำให้เกิดตัวทด (carry) ที่ต้องตรวจจับด้วยsltuคำสั่งสองคำสั่ง โชคดีที่ตัวทดทั้งสองสามารถบวกกันได้โดยไม่เสี่ยงต่อการเกิดโอเวอร์โฟลว์ ดังนั้นสถานการณ์จึงคงที่ที่ห้าคำสั่งต่อคำที่บวกเพิ่ม

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Status_register&oldid=1355299837 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ทะเบียนสถานะ

ใน หน่วยประมวลผลกลาง รี จิสเตอร์สถานะ รี จิสเตอร์แฟล็ก หรือ รีจิสเตอร์รหัสเงื่อนไข ( CCR ) คือ รีจิสเตอร์ ที่ประกอบด้วยชุด บิต แฟล็ก สถานะ ตัวอย่างของรีจิสเตอร์ดังกล่าว ได้แก่...

ธงทั่วไป

ต่อไปนี้คือรายการของแฟล็กในรีจิสเตอร์สถานะ CPU ที่ใช้กันทั่วไปในโปรเซสเซอร์สมัยใหม่:

ธงอื่นๆ

ในโปรเซสเซอร์บางตัว รีจิสเตอร์สถานะอาจมีแฟล็กต่างๆ เช่นนี้:

สถาปัตยกรรม CPU ที่ไม่มีแฟล็กทางคณิตศาสตร์

แฟล็กสถานะช่วยให้คำสั่งสามารถดำเนินการตามผลลัพธ์ของคำสั่งก่อนหน้าได้ ใน โปรเซสเซอร์ แบบไปป์ไลน์ เช่น โปรเซสเซอร์ แบบซูเปอร์สเกลาร์ และ โปรเซสเซอร์ แบบคาดการณ์ล่วงหน้า สิ่งนี้สามารถสร้าง อันตราย...