ท่อส่งคำสั่งคืออะไร?

click fraud protection

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

ตัวประมวลผลในการสั่งซื้อในอดีต

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

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

มีปัญหาแฝงอยู่แม้ว่าเมื่อรันคำสั่งที่สมบูรณ์ก่อนที่จะสามารถไปยังคำสั่งถัดไปได้ ปัญหาคือแคชพลาด CPU เก็บข้อมูลที่กำลังประมวลผลอยู่ในรีจิสเตอร์ สามารถเข้าถึงได้โดยมีเวลาแฝงหนึ่งรอบ ปัญหาคือรีจิสเตอร์มีขนาดเล็กเนื่องจากมีอยู่ในคอร์ของโปรเซสเซอร์ CPU จะต้องไปที่แคช L1 ที่ใหญ่กว่าแต่ช้ากว่าหากยังไม่ได้โหลดข้อมูล หากไม่มี จะต้องไปที่แคช L2 ที่ใหญ่ขึ้นและช้าลงอีกครั้ง ขั้นตอนต่อไปคือแคช L3; ตัวเลือกสุดท้ายคือ RAM ของระบบ แต่ละตัวเลือกเหล่านี้ใช้เวลาตรวจสอบ CPU มากขึ้นเรื่อยๆ

ตอนนี้ เวลาแฝงที่เพิ่มพิเศษนี้อาจเป็นปัญหาใหญ่ในระบบที่ต้องดำเนินการแต่ละคำสั่งให้ครบถ้วนก่อนที่จะเริ่มคำสั่งถัดไป สิ่งที่เคยเป็นโปรเซสเซอร์ 5 รอบต่อหนึ่งคำสั่ง ทันใดนั้นก็สามารถหยุดการทำงานกับคำสั่งเดียวเป็นเวลาหลายสิบหรือหลายร้อยรอบนาฬิกา ในขณะที่ไม่มีอะไรสามารถเกิดขึ้นบนคอมพิวเตอร์ได้ ในทางเทคนิค สิ่งนี้สามารถบรรเทาได้บ้างโดยมีสองคอร์ที่เป็นอิสระ อย่างไรก็ตาม ไม่มีอะไรหยุดพวกเขาทั้งสองจากการทำสิ่งเดียวกัน ที่อาจเกิดขึ้นพร้อมกัน ดังนั้นการลงเส้นทางแบบมัลติคอร์ไม่ได้แก้ไขปัญหานี้

ไปป์ไลน์ RISC สุดคลาสสิก

RISC ย่อมาจาก Reduced Instruction Set Computer. เป็นรูปแบบของการออกแบบโปรเซสเซอร์ที่เพิ่มประสิทธิภาพโดยทำให้การถอดรหัสแต่ละคำสั่งง่ายขึ้น นี่เป็นการเปรียบเทียบกับ CISC หรือคอมพิวเตอร์ชุดคำสั่งที่ซับซ้อน ซึ่งออกแบบชุดคำสั่งที่ซับซ้อนมากขึ้น ทำให้มีคำสั่งน้อยลงที่จำเป็นในการทำงานเดียวกัน

การออกแบบ RISC แบบคลาสสิกรวมถึงไปป์ไลน์คำสั่ง แทนที่จะรันขั้นตอนคำสั่งห้าขั้นตอนใดๆ ในรอบที่กำหนด ไปป์ไลน์อนุญาตให้ดำเนินการทั้งห้าขั้นตอน แน่นอน คุณไม่สามารถเรียกใช้คำสั่งเดียวทั้งห้าขั้นตอนในหนึ่งรอบได้ แต่คุณสามารถจัดลำดับคำสั่งได้ห้าคำสั่งติดต่อกันโดยมีการชดเชยหนึ่งขั้นตอนในแต่ละขั้นตอน ด้วยวิธีนี้ คำสั่งใหม่สามารถทำได้ในแต่ละรอบนาฬิกา นำเสนอประสิทธิภาพที่เพิ่มขึ้น 5 เท่าสำหรับความซับซ้อนหลักที่เพิ่มขึ้นค่อนข้างต่ำ

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

โปรเซสเซอร์ที่ไม่มีไปป์ไลน์สามารถเป็น sub-scalar ได้เท่านั้น เนื่องจากไม่สามารถดำเนินการคำสั่งที่สมบูรณ์ได้เพียงคำสั่งเดียวต่อรอบ ด้วยไปป์ไลน์ห้าขั้นตอนหลักนี้ คุณสามารถสร้างซีพียูแบบสเกลาร์ที่สามารถทำตามคำแนะนำสำหรับทุกกระบวนการ ด้วยการสร้างไปป์ไลน์ที่กว้างขวางยิ่งขึ้นไปอีก คุณสามารถสร้างซีพียู superscalar ที่สามารถดำเนินการได้มากกว่าหนึ่งคำสั่งต่อรอบสัญญาณนาฬิกา แน่นอนว่ายังมีปัญหาที่อาจเกิดขึ้น

ยังคงต่อเนื่อง

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

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

บทสรุป

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