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

AMD ปิดใช้งาน loop buffer ของ Zen 4

  • บทบาทของ loop buffer: อยู่ที่ส่วน frontend ของ CPU และเก็บคำสั่งที่ดึงมาแล้วก่อนหน้าไว้ ลูปขนาดเล็กสามารถอยู่ใน loop buffer ได้ ซึ่งช่วยให้ปิดบางขั้นตอนของ frontend เพื่อประหยัดพลังงานและเพิ่มประสิทธิภาพได้ เป็นเทคโนโลยีเก่าแก่ที่ใช้ในคอร์ของ Intel, Arm และ AMD

  • loop buffer ของ Zen 4: Zen 4 เป็นคอร์ประสิทธิภาพสูงของ AMD รุ่นเดียวที่มี loop buffer จากการทดลองด้วย performance counter พบว่าเมื่อคอร์ทำงานด้วยเธรดเดียว จะมี 144 entries หากมี SMT สองเธรดทำงานอยู่ แต่ละเธรดจะได้รับ 72 entries หากมีการ call และ return ภายในลูป จะไม่ถูกจับเข้า loop buffer

  • การเปลี่ยนแปลงหลังอัปเดต BIOS: หลังอัปเดต ASRock B650 PG Lightning เป็น BIOS เวอร์ชัน 3.10 พบจากการมอนิเตอร์ประสิทธิภาพฮาร์ดแวร์ว่า frontend ไม่ dispatch micro-ops จาก loop buffer อีกต่อไป เมื่อลดกลับไปใช้ BIOS เวอร์ชัน 1.21 loop buffer จะกลับมาทำงานอีกครั้ง ดูเหมือนว่า AMD จะปิดใช้งาน loop buffer ระหว่าง BIOS 1.21 (AGESA เวอร์ชัน 1.0.0.6) กับ BIOS 3.10 (AGESA เวอร์ชัน 1.2.0.2a)

SPEC CPU2017: มองหาความแตกต่าง

  • ผลกระทบต่อประสิทธิภาพ: คะแนน SPEC CPU2017 แสดงให้เห็นว่าแทบไม่มีความแตกต่างที่สังเกตได้จากการเปิดหรือปิด loop buffer คะแนนรวมของชุดทดสอบ integer และ floating-point ต่างกันไม่ถึง 1% และการเพิ่มประสิทธิภาพจาก SMT ก็ไม่ได้รับผลกระทบ

  • บทบาทของ loop buffer: เป้าหมายหลักของ loop buffer ไม่ใช่การเพิ่มประสิทธิภาพ แต่คือช่วยให้คอร์สามารถปิดส่วนใหญ่ของ frontend ได้ ตามเอกสาร processor programming reference ของ Zen 4 นั้น performance counter สามารถตั้งค่าให้เพิ่มขึ้น 1 ทุกครั้งที่จำนวนเหตุการณ์เกินค่า threshold ได้

Cyberpunk 2077

  • การทดสอบประสิทธิภาพเกม: ใช้ benchmark ในตัวของ Cyberpunk 2077 เพื่อตรวจสอบว่าการปิด loop buffer ส่งผลต่อประสิทธิภาพเกมหรือไม่ และพบว่าแทบไม่มีผลกระทบต่อประสิทธิภาพเกม

ความพยายามในการตรวจสอบการใช้พลังงาน

  • ประสิทธิภาพด้านพลังงาน: มีความพยายามใช้ core power counter ของ Zen 4 เพื่อตรวจสอบว่า loop buffer ช่วยเพิ่มประสิทธิภาพด้านพลังงานหรือไม่ แต่ผลลัพธ์ไม่สม่ำเสมอ และใน BIOS ใหม่ก็ไม่สามารถทดสอบ loop buffer ได้

สรุป

  • เหตุผลที่ปิดใช้งาน loop buffer: ยังไม่ชัดเจนว่าเหตุใด AMD จึงปิดใช้งาน loop buffer ของ Zen 4 ฟีเจอร์ของ CPU อาจถูกปิดเพราะบั๊กระดับฮาร์ดแวร์ Zen 4 เป็นกรณีแรกที่ AMD นำ loop buffer มาใช้กับ CPU ประสิทธิภาพสูงของตน ผลกระทบต่อประสิทธิภาพแทบไม่มี และคาดว่าผลต่อการใช้พลังงานก็น่าจะเล็กน้อย

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

 
GN⁺ 2024-12-02
ความเห็นจาก Hacker News
  • เป็นไปได้ว่าฟีเจอร์นี้ถูกปิดใช้งานเพื่อป้องกันช่องโหว่ด้านฮาร์ดแวร์ ซึ่งบ่งชี้ว่า loop buffer ไม่มีข้อได้เปรียบด้านประสิทธิภาพหรือพลังงาน

    • อาจเป็นกรณีที่ทีมวิศวกรพัฒนาฟีเจอร์ใหม่มาหลายเดือน แต่สุดท้ายกลับไม่มีประโยชน์จริง และยังถูกปล่อยออกมาเพื่อรักษาหน้า
    • ฝั่งทีมซอฟต์แวร์ก็มีกรณีที่เขียน codebase ใหม่เพื่อเพิ่มประสิทธิภาพ แต่พอโปรเจกต์เสร็จกลับมีโค้ดมากขึ้นและประสิทธิภาพแย่ลง
    • ทั้งสองกรณีนี้ โปรเจกต์ไม่ควรถูกปล่อยออกมาเลย
  • loop buffer ของ Zen 4 แสดงให้เห็นว่าบริษัทมีความสามารถด้านวิศวกรรมพอจะทดลองสิ่งต่าง ๆ ได้

    • แม้ครั้งนี้จะไม่เห็นผล แต่การที่วิศวกรได้ทดลองกับฟีเจอร์ความเสี่ยงต่ำและผลกระทบต่ำก็เป็นวิธีที่ดีในการสร้างความมั่นใจ
    • คาดหวังว่าจะได้เห็นความมั่นใจมากขึ้นในอนาคต
  • กำลังใช้ 7950x3d และอัปเกรดมาจาก 6700k ของ Skylake

    • ดูเหมือนตัวเองจะเผลอชอบชิปที่มี hardware loop buffer แต่ถูกปิดใช้งานโดยซอฟต์แวร์
  • ในเกม เมื่อปิด loop buffer แล้วประสิทธิภาพจะลดลง 5% เมื่อตรึงไว้ที่ non-cache die

    • การวัดพลังงานที่ละเอียดกว่านี้น่าจะช่วยยืนยันได้ว่าเกี่ยวข้องกับข้อจำกัดด้านความร้อน/งบพลังงานหรือไม่
    • ฟังดูเหมือนว่าฟีเจอร์นี้มีไว้เพื่อประหยัดพลังงาน
  • loop buffer มีขนาดเล็กมากจนสร้างความแตกต่างได้เฉพาะบางสถานการณ์ และบัฟเฟอร์ที่ใหญ่กว่าน่าจะให้ประโยชน์ไม่คุ้มต้นทุน

    • ในบาง workload อาจมีประสิทธิภาพลดลงเล็กน้อย แต่ AMD ก็ทำให้ประสิทธิภาพดีขึ้นเล็กน้อยหลังจากเปิดตัวแล้ว
    • มันควรถูกทำเป็นตัวเลือกใน BIOS ของ Zen 4 การที่ไม่เป็นเช่นนั้นบ่งชี้ว่าอาจเป็นบั๊กหรือปัญหาด้านความปลอดภัย
  • ใน Cortex-A15 นี่เป็น "ฟีเจอร์การออกแบบหลัก"

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

    • ถ้าถูกตัดออกไป ก็สงสัยว่าในชิปรุ่นอนาคตจะเอาพื้นที่นั้นไปใช้กับสิ่งที่มีประโยชน์กว่าอย่าง L2 cache ได้หรือไม่
  • ในส่วน "พลังงาน" ไม่มีการหารด้วยจำนวนคำสั่งที่รันได้ต่อวินาที

    • เมตริกที่ควรใช้พิจารณาเพื่อดูประโยชน์ของ loop buffer ไม่ใช่พลังงานต่อวินาที แต่เป็นการใช้พลังงานต่อคำสั่ง
  • หนึ่งในความแตกต่างระหว่าง 68000 ปี 1979 กับ 68010 ปี 1982 คือการเพิ่ม "loop mode" ซึ่งเป็น loop buffer ขนาด 6 ไบต์