สิ่งที่เกี่ยวข้อง

วันอังคารที่ ๖ กุมภาพันธ์ พ.ศ. ๒๕๕๐

Example : Reordering Instruction


dependency อันแรก ไม่สามารถทำการ Forward ทันทีได้จึงเกิด Stall เนื่องจาก Data Hazard
ส่วนอันต่อมาคือ divf f1, f8, f7 ไม่เกิด Stall เพราะมีการสร้าง nop มาขั้นก่อน
divf f2, f9, f7 นั้นเราไม่สามารถทำ Floating Point ได้พร้อมกันจึงเกิด Stall [Structural Hazard]


หลังจาก divf f1, f8, f7 ทำงานเสร็จ divf f2, f9, f7 สามารถทำงานต่อได้ทันที [divf ใช้เวลา 19 CC] แต่บรรทัดต่อมาเกิด Data Hazard ขึ้นทำให้มันเกิด Stall รอจนกว่า divf f2, f9, f7 เสร็จ
** S-stall => Structural , R-stall => Raw [CC : Clock Cycles]


เมื่อทำงานเสร็จ addf f3, f1, f2 จึงจะทำงาน ส่วนบรรทัดต่อมาจะถูก Stall อีกครั้งเนื่องจากเกิด Data Hazard กับ f3 ส่วนเมื่อ divf f10, f3, f7 ทำงาน divf อันต่อมาก็จะทำงานไม่ได้ Structural Hazard และเป็นเช่นนี้กับ divf อันต่อมาด้วย


ส่วน multf นั้นเกิดเป็น Data Hazard ด้วย

แต่mulf ใช้ CC เพียง 5 ซึ่งน้อยว่า divf

**T-stall => Trap


ค่าทางสถิตินี้แสดงให้เห็นว่า Code นี้เกิด Stall ทั้งหมดรวมเป็น 93.08% เมื่อเทียบกับทั้งหมดโดย
มี Structural stall เป็น Stall มากที่สุด ต่อมาก็ Raw stall [Floating Point , LD] และ Trap stall ตามลำดับ




เกิด S-stall ต่อเนื่อง 4 ครั้งจนถึง divf กับ addf นั้นจะไม่เกิด S-stall ขึ้น แต่เกิด R-stall กับ multf


จน จัดการกับ f5 เสร็จจึงทำ multf ได้



ค่าทางสถิติพบว่า Code นี้มี Stall เพิ่มขึ้น [สอดคล้องกับค่า dependency ที่เพิ่มขึ้น] และมี Structural stall มากที่สุดเช่นกัน แต่ลำดับต่อมาเปลี่ยนแปลงไปเพราะ รองมาเป็น Trap stall สุดท้ายก็เป็น Raw stall ซึ่งเมื่อเทียบกับครั้งที่แล้วลดลงประมาณครึ่งหนึ่ง

ไม่มีความคิดเห็น:

ผู้สนับสนุน

จัดตามกลุ่ม