ScholarGate
ผู้ช่วย

การคาดคะเนการแยกสายงาน (Branch Prediction)

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

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

Definition

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

Scope

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

Core questions

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

Key concepts

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

Key theories

การคาดคะเนแบบไดนามิกที่อิงตามประวัติ
ผลลัพธ์ของการแยกสายงานมีความสัมพันธ์สูงกับพฤติกรรมในอดีตของตนเองและของสาขาอื่น ๆ; ตัวคาดคะเนที่บันทึกประวัติในตัวนับแบบอิ่มตัวและรวมประวัติแบบท้องถิ่นและแบบโดยรวม (ตัวคาดคะเนแบบสัมพันธ์และแบบทัวร์นาเมนต์) มีความแม่นยำสูงมาก

Mechanisms

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

Clinical relevance

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

History

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

Key figures

  • James E. Smith
  • Yale Patt
  • Tse-Yu Yeh
  • John L. Hennessy

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

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

Methods for this concept

Related concepts