การวางท่อ: สถาปัตยกรรมข้อดีและข้อเสีย

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





การเพิ่มความเร็วในการทำงานของโปรแกรมจึงทำให้ความเร็วของ โปรเซสเซอร์ มีหลายวิธีที่คิดค้นขึ้นทั้งการใช้ฮาร์ดแวร์และสถาปัตยกรรมซอฟต์แวร์เพื่อเพิ่มความเร็วในการดำเนินการ เป็นที่สังเกตว่าการดำเนินการตามคำสั่งพร้อมกันเวลาที่ต้องใช้ในการดำเนินการสามารถลดลงได้ แนวคิดของ Parallelism ใน การเขียนโปรแกรม ถูกเสนอ ตามนี้สามารถดำเนินการได้มากกว่าหนึ่งคำสั่งต่อรอบสัญญาณนาฬิกา แนวคิดนี้สามารถฝึกฝนได้โดยโปรแกรมเมอร์ผ่านเทคนิคต่างๆเช่น การวางท่อหน่วยประมวลผลหลายหน่วยและหลายแกน . ในบรรดาวิธีการแบบขนานเหล่านี้การวางท่อเป็นสิ่งที่ปฏิบัติกันมากที่สุด ดังนั้นคำสั่งสามารถดำเนินการในวิธีการไปป์ไลน์ได้อย่างไร? มันเพิ่มความเร็วในการดำเนินการอย่างไร?

Pipelining คืออะไร?

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




ลำดับการดำเนินการคำสั่ง

ลำดับการดำเนินการคำสั่ง

  • IF: ดึงคำสั่งลงในทะเบียนคำสั่ง
  • ID: Instruction Decode, ถอดรหัสคำสั่งสำหรับ opcode
  • AG: Address Generator สร้างที่อยู่
  • DF: Data Fetch ดึงตัวถูกดำเนินการลงในทะเบียนข้อมูล
  • EX: Execution ดำเนินการตามที่ระบุ
  • WB: เขียนกลับเขียนผลลัพธ์กลับไปที่ การลงทะเบียน

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



คำสั่ง Pipelining

ให้เราดูวิธีการประมวลผลคำแนะนำในการวางท่อ สิ่งนี้สามารถเข้าใจได้ง่ายจากแผนภาพด้านล่าง

คำสั่ง Pipelining

คำสั่ง Pipelining

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

สำหรับรอบที่สามการดำเนินการแรกจะอยู่ในเฟส AG การดำเนินการที่สองจะอยู่ในเฟส ID และการดำเนินการที่สามจะอยู่ในเฟส IF ด้วยวิธีนี้คำสั่งจะดำเนินการพร้อมกันและหลังจากหกรอบโปรเซสเซอร์จะส่งออกคำสั่งที่ดำเนินการอย่างสมบูรณ์ต่อรอบสัญญาณนาฬิกา


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

สถาปัตยกรรมการวางท่อ

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

หน่วยประมวลผลแบบท่อ

หน่วยประมวลผลแบบท่อ

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

การวางท่อในโปรเซสเซอร์ RISC

ได้รับความนิยมมากที่สุด สถาปัตยกรรม RISC โปรเซสเซอร์ ARM ทำตามขั้นตอนการวางท่อ 3 ขั้นตอนและ 5 ขั้นตอน ในขั้นตอนการไปป์ไลน์ 3 ขั้นตอน ได้แก่ Fetch, Decode และ Execute การไปป์ไลน์นี้มีเวลาแฝง 3 รอบเนื่องจากแต่ละคำสั่งใช้เวลา 3 รอบนาฬิกาจึงจะเสร็จสมบูรณ์

การวางท่อ ARM 3 ขั้นตอน

การวางท่อ ARM 3 ขั้นตอน

สำหรับการนำสถาปัตยกรรมฮาร์ดแวร์ไปท่ออย่างเหมาะสมควรได้รับการอัพเกรด ฮาร์ดแวร์สำหรับการไปป์ไลน์แบบ 3 ขั้นตอนประกอบด้วยธนาคารทะเบียน ALU ตัวเปลี่ยนบาร์เรลตัวสร้างที่อยู่ตัวเพิ่มตัวถอดรหัสคำสั่งและการลงทะเบียนข้อมูล

ฐานข้อมูลการวางท่อแบบ ARM 3 ขั้นตอน

ฐานข้อมูลการวางท่อแบบ ARM 3 ขั้นตอน

ใน 5 ขั้นตอนการวางท่อขั้นตอนคือ: Fetch, Decode, Execute, Buffer / data และ Write back

อันตรายจากการวางท่อ

ในโปรแกรมคอมพิวเตอร์ทั่วไปนอกจากคำสั่งง่ายๆแล้วยังมีคำสั่งสาขาการขัดจังหวะการทำงานคำสั่งอ่านและเขียน การวางท่อไม่เหมาะสำหรับคำแนะนำทุกประเภท เมื่อมีการดำเนินการตามคำสั่งบางอย่างในการวางท่อพวกเขาสามารถถ่วงท่อหรือล้างออกทั้งหมด ปัญหาประเภทนี้ที่เกิดระหว่างการวางท่อเรียกว่า Pipelining Hazards

ในโปรแกรมคอมพิวเตอร์ส่วนใหญ่ผลลัพธ์จากคำสั่งหนึ่งจะถูกใช้เป็นตัวถูกดำเนินการโดยคำสั่งอื่น ๆ เมื่อคำสั่งดังกล่าวดำเนินการในการไปป์ไลน์การแยกย่อยจะเกิดขึ้นเนื่องจากผลลัพธ์ของคำสั่งแรกไม่พร้อมใช้งานเมื่อคำสั่งที่สองเริ่มรวบรวมตัวถูกดำเนินการ ดังนั้นคำสั่งที่สองจะต้องหยุดทำงานจนกว่าคำสั่งหนึ่งจะถูกดำเนินการและผลลัพธ์จะถูกสร้างขึ้น อันตรายประเภทนี้เรียกว่า Read –after-write pipelining hazard

อ่านหลังจากเขียน Pipelining Hazard

อ่านหลังจากเขียน Pipelining Hazard

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

พฤติกรรมของสาขาแบบท่อ

พฤติกรรมของสาขาแบบท่อ

ข้อดีของการวางท่อ

  • ปริมาณงานคำสั่งเพิ่มขึ้น
  • การเพิ่มจำนวนขั้นตอนไปป์ไลน์จะเพิ่มจำนวนคำสั่งที่ดำเนินการพร้อมกัน
  • สามารถออกแบบ ALU ได้เร็วขึ้นเมื่อใช้ท่อ
  • Pipelined CPU ทำงานที่ความถี่สัญญาณนาฬิกาสูงกว่า RAM
  • Pipelining เพิ่มประสิทธิภาพโดยรวมของ CPU

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

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

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