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