ScholarGate
ผู้ช่วย

ไปป์ไลน์และภาวะเสี่ยง

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

ค้นหาหัวข้อด้วย PaperMindเร็ว ๆ นี้Find papers & topics
Tools & resources
ดาวน์โหลดสไลด์
Learn & explore
วิดีโอเร็ว ๆ นี้

Definition

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

Scope

หัวข้อนี้ครอบคลุมไปป์ไลน์คำสั่งแบบคลาสสิกและภาวะเสี่ยงสามประเภทที่จำกัดประสิทธิภาพของไปป์ไลน์ ได้แก่ ภาวะเสี่ยงเชิงโครงสร้าง (ความขัดแย้งด้านทรัพยากร) ภาวะเสี่ยงด้านข้อมูล (การพึ่งพาระหว่างคำสั่ง) และภาวะเสี่ยงด้านการควบคุม (การแตกแขนง) รวมถึงวิธีการแก้ไขมาตรฐาน เช่น การส่งต่อ/การข้าม การหยุดชะงัก และการจัดการการแตกแขนง หัวข้อนี้ไม่รวมถึงการออกคำสั่งแบบขนานขั้นสูง (การขนานระดับคำสั่ง) การคาดการณ์ทิศทางการแตกแขนงในเชิงลึก (การคาดการณ์การแตกแขนง) และการจัดลำดับใหม่แบบไดนามิก (การประมวลผลนอกลำดับ)

Core questions

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

Key concepts

  • ขั้นตอนของไปป์ไลน์ (ดึง, ถอดรหัส, ประมวลผล, หน่วยความจำ, เขียนกลับ)
  • ปริมาณงานเทียบกับเวลาแฝง
  • ภาวะเสี่ยงเชิงโครงสร้าง
  • ภาวะเสี่ยงด้านข้อมูล
  • ภาวะเสี่ยงด้านการควบคุม
  • การส่งต่อและการข้าม
  • การหยุดชะงักและช่องว่างของไปป์ไลน์
  • ค่าปรับจากการแตกแขนง

Key theories

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

Mechanisms

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

Clinical relevance

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

History

การทำไปป์ไลน์ปรากฏในเครื่องจักรประสิทธิภาพสูงยุคแรกๆ เช่น IBM Stretch และ CDC 6600 ในช่วงต้นทศวรรษ 1960 ไปป์ไลน์ห้าขั้นตอนแบบง่ายกลายเป็นแบบจำลองการสอนและการออกแบบที่เป็นที่ยอมรับในโปรเซสเซอร์ RISC ในทศวรรษ 1980 และการจำแนกภาวะเสี่ยงและวิธีการแก้ไขอย่างเป็นระบบได้รับการประมวลผลในตำราของ Hennessy-Patterson

Key figures

  • John L. Hennessy
  • David A. Patterson
  • Seymour Cray

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

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

Methods for this concept

Related concepts