1 คะแนน โดย GN⁺ 2024-07-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

หน่วย Branch Predictor แบบ 2-Ahead ของ Zen 5: แนวคิดอายุ 30 ปีเปิดทางให้กับลูกเล่นใหม่ได้อย่างไร

  • บทนำ

    • สถาปัตยกรรม Zen 5 ของ AMD เป็นการออกแบบใหม่ทั้งหมดจากสถาปัตยกรรม Zen เดิม
    • หนึ่งในการเปลี่ยนแปลงที่สำคัญที่สุดคือหน่วย Branch Predictor แบบ 2-Ahead ใหม่
    • แนวคิดนี้มีต้นกำเนิดมาจากงานวิจัยเมื่อ 30 ปีก่อน
  • ความสำคัญของ Branch Predictor

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

    • เป็นแนวคิดที่ถูกเสนอไว้ตั้งแต่ต้นทศวรรษ 1990
    • จากนั้นมีการพัฒนาวิธีที่มีประสิทธิภาพมากขึ้น เช่น TAGE predictor
    • อย่างไรก็ตาม Branch Predictor แบบ 2-Ahead กำลังกลับมาได้รับความสนใจอีกครั้งเพื่อยกระดับประสิทธิภาพของคอร์เดี่ยว
  • ข้อได้เปรียบของสถาปัตยกรรม x86

    • x86 ได้ประโยชน์จากการทำนายสาขาแบบ 2-Ahead มากกว่า ISA อื่นที่ใช้คำสั่งความยาวคงที่
    • x86 ต้องการกระบวนการที่ซับซ้อนกว่ามากในการระบุขอบเขตของคำสั่ง
    • Zen 5 ใช้ fetch pipe ขนาด 32 ไบต์สองชุด และ decode cluster แบบ 4-wide
  • การติดตั้งใช้งานตามงานวิจัยของ Seznec

    • งานวิจัยของ Seznec อธิบายวิธีการติดตั้งใช้งาน Branch Predictor แบบ 2-Ahead
    • Zen 5 ปฏิบัติตามข้อแนะนำของงานวิจัยฉบับนี้
    • ใช้ fetch pipe ขนาด 32 ไบต์สองชุด และ op cache แบบ dual-port 6-wide
    • ใช้ L1 BTB และ L2 BTB เพื่อเพิ่มความแม่นยำของการทำนาย
  • บทสรุป

    • Branch Predictor แบบ 2-Ahead ของ Zen 5 เป็นการเปลี่ยนแปลงสำคัญของสถาปัตยกรรม Zen
    • ตัวทำนายแบบใหม่นี้จะช่วยอย่างมากต่อการพัฒนาคอร์ Zen ในอนาคต

สรุปโดย GN⁺

  • Branch Predictor แบบ 2-Ahead ของ Zen 5 คือการตีความแนวคิดเมื่อ 30 ปีก่อนใหม่ให้เข้ากับยุคปัจจุบัน
  • เทคโนโลยีนี้ช่วยเพิ่มความแม่นยำในการทำนายคำสั่งของโปรเซสเซอร์และยกระดับประสิทธิภาพ
  • มีประโยชน์อย่างยิ่งในการรับมือกับความซับซ้อนของสถาปัตยกรรม x86
  • บทความนี้มีประโยชน์สำหรับผู้ที่สนใจสถาปัตยกรรม CPU และการเพิ่มประสิทธิภาพ
  • โครงการอื่นที่มีคุณสมบัติคล้ายกันคือสถาปัตยกรรม Golden Cove ของ Intel

1 ความคิดเห็น

 
GN⁺ 2024-07-28
ความคิดเห็นจาก Hacker News
  • มีคำอธิบายเรื่อง branch prediction ที่ยอดเยี่ยม
  • ประสิทธิภาพของ SMT น่าจะน่าสนใจ โดย Zen5c ให้ได้ 192 คอร์ หรือ 384 vCPU ส่วน Zen 6c อาจคาดหวังได้ที่ 256 คอร์ และในเซิร์ฟเวอร์ Dual Socket แบบ 1U ก็อาจเป็นไปได้ที่จะมี 512 คอร์และ 1024 vCPU
    • ปัญหาการสเกลเว็บแอปแบบปี 2014 อาจแก้ได้ด้วยเซิร์ฟเวอร์เครื่องเดียว ถ้าแก้ปัญหาเรื่องการระบายความร้อนได้
    • 1 RPS ต่อ vCPU ก็ทำได้ 1000 RPS โดยไม่นับกรณี cache hit
    • แม้แต่หน้าแรกของ HN ก็ยังไม่เกิน 1000 page view ต่อวินาที
  • น่าสนใจที่งานวิจัยอายุหลายสิบปีกลายมาเป็น "ล้ำสมัย" ได้เพราะฮาร์ดแวร์พัฒนาไป
    • ตัวอย่าง: Z-buffer ที่ใช้ในวิดีโอเกม 3D
    • ตอนที่ตีพิมพ์เป็นงานวิจัยครั้งแรก มันไม่ใช่ประเด็นหลัก เพราะต้องใช้หน่วยความจำมาก
    • หลายสิบปีต่อมา เมื่อเมกะไบต์มีราคาถูกลง ตัวเรนเดอร์ 3D แบบเรียลไทม์ทุกตัวก็หันมาใช้มัน
  • ตัวทำนายแบบ speculative prediction มีช่องโหว่ต่อการโจมตีหลายแบบที่ทำให้ข้อมูลส่วนตัวรั่วไหลได้ ISA ทั่วไปหลายตัวก็มีความเสี่ยง จึงสงสัยว่ามีมาตรการเพื่อลดผลกระทบจากการโจมตีเหล่านี้หรือไม่
  • ในฐานะมือใหม่ในด้านนี้ ยังไม่ชัดเจนว่า 2-ahead branch predictor คืออะไร
  • น่าจะต้องมี branch hints มากกว่านี้
    • Cold, warm, warmer แล้วข้าม hot ที่เป็นค่าปริยายไป? สงสัยว่าการตั้งทุก branch เป็น cold แล้วมีแค่ตัวเดียวที่ไม่ใช่ จะเป็นความคิดที่แย่หรือไม่
    • เมื่อมี conditional branch ทำไมถึงยากที่จะดึงทั้งสองทางที่เป็นไปได้มาเตรียมไว้ แล้วค่อยทิ้งทางที่ผิด
  • ต้องการแบนด์วิดท์หน่วยความจำมากกว่านี้ ช่องหน่วยความจำ 2 แชนเนลของซ็อกเก็ต AM5 สำหรับผู้บริโภคดูไม่พอกับระดับประสิทธิภาพ
    • เพิ่งย้ายไปใช้ M2 Max และแบนด์วิดท์หน่วยความจำที่ดีขึ้นช่วยเร่งงานด้านข้อมูลได้ การทำงานหลายอย่างหนัก ๆ พร้อมกันก็มักทำให้ท่อหน่วยความจำที่แคบของฝั่ง Zen ตันบ่อย
  • เมื่อ Zen 5 เปิดใช้งานสองเธรด decode cluster และ fetch pipe ที่จับคู่กันจะถูกแบ่งแบบคงที่
    • ดูเหมือนว่านี่จะช่วยเพิ่มประสิทธิภาพของ hyper-threading ได้มาก บน Zen1 นั้น HT ช่วยให้เร็วขึ้นราว 25% สงสัยว่ามีใครทดสอบบนรุ่นใหม่ ๆ แล้วหรือยัง
  • ก็ยังไม่เข้าใจอยู่ดีว่า 2-ahead branch predictor คืออะไร