ฉันคิดว่าฉันกำลังมองหาคำตอบสำหรับคำถามเรื่องไม่สำคัญ ฉันพยายามที่จะเข้าใจว่าทำไม MIPS Architecture จึงใช้ค่า "ศูนย์" ที่ชัดเจนในการลงทะเบียนเมื่อคุณสามารถบรรลุสิ่งเดียวกันโดยเพียงแค่ XOR'ing การลงทะเบียนใด ๆ กับตัวเอง อาจกล่าวได้ว่าการดำเนินการเสร็จแล้วสำหรับคุณ อย่างไรก็ตามฉันไม่สามารถจินตนาการถึงสถานการณ์ที่คุณจะใช้ค่า "ศูนย์" จำนวนมากได้ ฉันอ่านเอกสารต้นฉบับของ Hennessey และมันแค่กำหนดค่าศูนย์ให้เป็นเรื่องจริงโดยไม่มีเหตุผลจริงใด ๆ
เหตุผลเชิงตรรกะที่มีการกำหนดเลขฐานสองแบบฮาร์ดโค้ดเป็นศูนย์หรือไม่?
ปรับปรุง: ใน 8k ของปฏิบัติการจาก xc32-gcc สำหรับแกน MIPS ใน PIC32MZ ฉันมีอินสแตนซ์เดียวของ "ศูนย์"
add t3,t1,zero
คำตอบที่แท้จริง: ฉันได้รับรางวัลสำหรับผู้ที่มีข้อมูลเกี่ยวกับ MIPS และรหัสเงื่อนไข คำตอบนั้นอยู่ในโครงสร้างของ MIPS สำหรับเงื่อนไขต่างๆ แม้ว่าในตอนแรกฉันไม่ต้องการกำหนดเวลาให้กับเรื่องนี้ แต่ฉันได้ตรวจสอบสถาปัตยกรรมสำหรับopensparc , MIPS-Vและ OpenPOWER (เอกสารนี้เป็นภายใน) และนี่คือผลสรุป การลงทะเบียน R0 จำเป็นสำหรับการเปรียบเทียบสาขาเนื่องจากสถาปัตยกรรมของไปป์ไลน์
- จำนวนเต็มเปรียบเทียบกับศูนย์และสาขา (bgez, bgtz, blez, bltz)
- จำนวนเต็มเปรียบเทียบการลงทะเบียนสองรายการและสาขา (beq, bne)
- จำนวนเต็มเปรียบเทียบการลงทะเบียนและกับดักสองรายการ (teq, tge, tlt, tne)
- จำนวนเต็มเปรียบเทียบการลงทะเบียนและทันทีและกับดัก (teqi, tgei, tlti, tnei)
มันเป็นเพียงวิธีการที่ฮาร์ดแวร์ใช้งาน จากคู่มือ MIPS-V มีคำพูดที่ไม่ได้อ้างถึงในหน้า 68:
สาขาเงื่อนไขถูกออกแบบมาเพื่อรวมการดำเนินการเปรียบเทียบทางคณิตศาสตร์ระหว่างสองรีจิสเตอร์ (เช่นเดียวกับใน PA-RISC และ Xtensa ISA) แทนที่จะใช้รหัสเงื่อนไข (x86, ARM, SPARC, PowerPC) หรือเปรียบเทียบหนึ่งทะเบียนกับศูนย์ ( อัลฟ่า MIPS) หรือสองลงทะเบียนเพื่อความเท่าเทียมกันเท่านั้น (MIPS) การออกแบบนี้ได้รับแรงบันดาลใจจากการสังเกตว่าคำสั่งเปรียบเทียบและสาขารวมเข้ากับไปป์ไลน์ปกติหลีกเลี่ยงสถานะรหัสเงื่อนไขเพิ่มเติมหรือใช้การลงทะเบียนชั่วคราวและลดขนาดรหัสคงที่ อีกจุดหนึ่งคือการเปรียบเทียบกับศูนย์ต้องการวงจรไม่หน่วงเล็กน้อย (โดยเฉพาะหลังจากการเคลื่อนที่ไปที่ตรรกะคงที่ในกระบวนการขั้นสูง) และเกือบจะมีราคาแพงเท่ากับการเปรียบเทียบขนาดทางคณิตศาสตร์ ข้อดีอีกอย่างของการสอนแบบเปรียบเทียบและแยกสาขาคือการสังเกตการแตกกิ่งก้านก่อนหน้านี้ในลำธารการเรียนการสอนส่วนหน้าและสามารถคาดการณ์ได้ก่อนหน้านี้ อาจมีข้อได้เปรียบในการออกแบบที่มีรหัสเงื่อนไขในกรณีที่สามารถนำหลายสาขาขึ้นอยู่กับรหัสเงื่อนไขเดียวกัน แต่เราเชื่อว่ากรณีนี้จะค่อนข้างหายาก
เอกสาร MIPS-V ไม่ได้ตีที่ผู้เขียนของส่วนที่ยกมา ฉันขอบคุณทุกคนสำหรับเวลาและการพิจารณาของพวกเขา