วันอาทิตย์ที่ 25 กันยายน พ.ศ. 2554

Pipeline (ไปป์ไลน์)

Pipeline

Pipeline เป็นเทคนิคในการดำ เนินการของการประมวลผลของคำ สั่งหลายๆคำ สั่งที่คาบ
เกี่ยวกัน(Overlapped) และเป็นการเพิ่มประสิทธิภาพให้กับหน่วยประมวลผลกลาง โดยแบ่ง
Pipeline ออกเป็นขั้นตอนย่อย ๆ เวลาในการประมวลผลในแต่ละคำ สั่งของ Pipeline จะไม่ลดลง แต่
จะมีการเพิ่มคำ สั่ง Throughput แทน ก็คือการทำ งานหลาย ๆ คำ สั่งพร้อมกันในเวลาหนึ่ง ๆ
การทำ งานของ Pipeline
การทำ งานโดยใช้ Pipeline ของ CPU นั้นจะใช้วิธีส่งต่องานกันไปเป็นทอดๆ เช่น จากการ
Fetch แล้วส่งต่อให้ทำ การ Decode ลักษณะการทำ งานแบบนี้จะไม่ได้ช่วยให้ประสิทธิภาพสูงขึ้น
เพราะเมื่อมีการส่งต่องานกันแล้ว ก็จะว่างลง และรอจนกว่าจะถึงเวลาที่ต้องทำ งานหรือรับงานใหม่
อีกครั้ง ซึ่งความจริงแล้ว แต่ละขั้นของการทำ งานนั้นสามารถที่จะทำ พร้อมกันได้
Pipeline ก็คือการทำ งานโดยไม่มีการรอ เมื่อทำ งานนั้นเสร็จและส่งข้อมูลเรียบร้อยแล้ว จะ
ต้องทำ งานตามคำ สั่งต่อไปทันที ดังนั้นจึงไม่มีการว่างงานเกิดขึ้นในสัญญาณนาฬิกา
ขั้นตอนหลักๆในการทาํ งานทั้งหมดมี 5 ขนั้ ตอน คือ
•Instruction Fetch หรือ ภาครับคำ สั่ง จะทำ หน้าที่รับคำ สั่งใหม่ๆ ทั้งจากหน่วยความจำ หลัก
หรือจากใน Instruction Cache เข้ามา เพื่อส่งต่อให้ภาคต่อไปจัดการต่อ
•Instruction Decode หรือ ภาคการแปลคำ สั่ง คือ จะทำ หน้าที่แยกแยะคำ สั่งต่างๆ ของ CISC
ซึ่งในตอนที่แล้ว เราทราบแล้วว่า CISC นั้น ในแต่ละคำ สั่ง จะมีขนาดที่ไม่แน่นอน ตรง
ส่วนนี้ก็จะทำ การซอยคำ สั่งนั้นเป็นคำ สั่งย่อยๆ ให้มีความยาวเท่าๆกัน ในลักษณะเช่นเดียว
กับ RISC เรียกคำ สั่งย่อยๆ นั้นว่า Micro Operation
•Get Operands หรือ ภาครับข้อมูล คือ รับข้อมูลที่จะใช้ในการประมวลผลเข้ามาเก็บไว้ เช่น
จากขั้นตอนที่ 2 เรารู้ว่าจะใช้การ "บวก" ก็ต้องรับค่าที่จะใช้ในการบวก มาด้วยอีก 2 ค่า
บางทีขั้นตอนนี้ ก็ถูกรวมเข้ากับขั้นตอนที่ 2
•Execute หรือ ภาคประมวลผล เป็นขั้นตอนที่ทำ การประมวลผลตามคำ สั่งและ operand ที่
ได้รับมาจากขั้นที่ 2 และ 3 ซึ่ง ถ้าให้ขั้นที่ 2 เป็นการถอดรหัสว่าเป็นการบวก ขั้นที่ 3 รับ
ค่าที่จะบวก ขั้นนี้ ( ขั้นที่ 4 ) ก็จะทำ การบวกให้ได้ผลลัพธ์ออกมา
•Write Result หรือ ภาคการเขียนข้อมูลกลับ เมื่อทำ การประมวลผลเสร็จสิ้น ผลลัพธ์ที่ได้ก็
จะนำ ไปเก็บไว้ใน register หรือ ใน Data Cache ซึ่งบางที ขั้นตอนนี้ ก็ถูกมองรวมไว้กับขั้น
ที่4

การทำงาน ( ทั้งทางทฤษฎี และ ทางปฏิบัติจริง ) ของ Pipeline จะเป็นดังรูปนี้

ประสิทธิภาพของ Pipeline
ในส่วนย่อยๆ นั้น เราสามารถพัฒนาการทำ งานของ Pipeline และการเพิ่มความรวดเร็ว
ของเวลาที่ใช้ในการทำ งาน cycle time (T) ของชุดคำ สั่งที่ทำ งานโดย Pipeline คือเวลาที่
ต้องการให้เกิดการพัฒนาในขั้นตอนของ Pipeline
T = max[Ti] + d = Tm + d i ,1 <= i <= k
เมื่อ Tm- maximum stage delay
k - number of stages in the instruction pipeline
d - time delay of a latch ,
needed to advance signals and from one stage to the next
การเชื่อมต่อของ Pipeline
ปัญหาใหญ่ในการออกแบบชุดคำ สั่ง Pipeline คือการทำ ให้ผลที่ได้ออกมาได้ผลดีในขั้น
ตอนแรกของชุดคำ สั่ง ปัญหาแรกคือการปรับเปลี่ยนของชุดคำ สั่งจนกระทั่งจะมีการ execute
ซึ่งเป็นไปไม่ได้ที่จะกำ หนดสาขาของ Pipeline

ปัญหาที่เป็นอุปสรรคของ Pipeline

ปัญหาที่เกิดจาก pipeline คือ
1.Structural Hazards : เกิดจากการขัดแย้งเมื่อ hardware ไม่สามารถรองรับการรวมชุดคำ สั่งพร้อม
กันในเวลาเดียวกัน เกิดการทับซ้อนกันเมื่อมีการ execute
2. Data Hazards : เกิดจากการทีชุดคำ สั่งทับซ้อนกัน ไม่สามารถที่จะ execute
3.Control Hazard : pipe line ที่แยกชุดคำ สั่งไม่สามารถควบคุมสัญญาณได้
ปัญหา pipe line แก้ได้โดย ใช้ตัวถ่วงเวลา
-A cache miss : ชุดคำ สั่งทั้งหมดของ pipe line ทั่งก่อนและหลังขาดหายไป
-A hazard in pipe line : ชุดคำ สั่งของ pipe line จะยอมรับการ process โดยที่ตัวอื่นๆช้าลง เมอื่ มี
การถ่วงเวลาจะทำ ให้ชุดคำ สั่งช้าลงด้วย







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

แสดงความคิดเห็น