วิเคราะห์การใช้งานแบนด์วิดท์หน่วยความจำของพื้นผิว

แบนด์วิดท์หน่วยความจำของข้อมูลพื้นผิวอาจเป็นคอขวดที่อาจส่งผลต่อประสิทธิภาพของ GPU ของแอป โปรไฟล์ระบบ AGI มีตัวนับบางรายการที่ช่วยวินิจฉัยปัญหาแบนด์วิดท์หน่วยความจำของพื้นผิวได้

ตัวนับ Qualcomm Adreno

ในอุปกรณ์ที่มี GPU Qualcomm Adreno ตัวนับที่น่าสนใจบางรายการ ได้แก่

ตัวนับ คำอธิบาย
แบนด์วิดท์การอ่านหน่วยความจำของพื้นผิว (ไบต์/วินาที) แบนด์วิดท์ของข้อมูลพื้นผิวที่อ่านจากหน่วยความจำภายนอก
% การพลาดแคช L1 ของพื้นผิว ไม่พบแคช L1 จากการดึงข้อมูลพื้นผิว
% พื้นผิวระดับที่ไม่ใช่ระดับฐาน เปอร์เซ็นต์ของการดึงข้อมูลพื้นผิวที่เป็น MIP Map
% การกรองแบบแอนไอโซทรอปิก เปอร์เซ็นต์ของเทกเซลที่กรองแบบแอนไอโซทรอปิก

ตัวนับ ARM Mali

ในอุปกรณ์ที่มี GPU ARM Mali ตัวนับที่น่าสนใจบางรายการ ได้แก่

ตัวนับ คำอธิบาย
จังหวะการอ่านพื้นผิวจากหน่วยความจำภายนอก จังหวะข้อมูลที่อ่านจากหน่วยความจำภายนอกโดยหน่วยพื้นผิว โดยเฉลี่ยในคอร์ของ Shader
จังหวะการอ่านพื้นผิวจากแคช L2 จังหวะข้อมูลที่อ่านจากแคช L2 โดยหน่วยพื้นผิว โดยเฉลี่ยในคอร์ของ Shader
[เพิ่มเติม]

หากต้องการคำนวณแบนด์วิดท์โดยรวมจากจังหวะการอ่านเฉลี่ย ให้คูณค่าตัวนับด้วยความกว้างของบัส (โดยปกติคือ 16 ไบต์) และจำนวนคอร์ของ Shader ทั้งหมด

การวิเคราะห์ตัวนับ

หากต้องการวัดพฤติกรรมของตัวนับเหล่านี้ ให้วัดแบนด์วิดท์เฉลี่ยและแบนด์วิดท์สูงสุดในเฟรม GPU เดียว จากนั้นกำหนดด้วยบล็อกการใช้งาน GPU ที่ต่อเนื่องกัน

แบนด์วิดท์การอ่านหน่วยความจำของเท็กซ์เจอร์สำหรับเฟรมเดียว โดยมีค่าเฉลี่ย 565 MBps และค่าสูงสุด 2.30 GBps
รูปที่ 1. แบนด์วิดท์การอ่านหน่วยความจำของพื้นผิวสำหรับเฟรมเดียว โดยมีค่าเฉลี่ย 565 MBps และค่าสูงสุด 2.30 GBps

เราขอแนะนำให้แบนด์วิดท์การอ่านหน่วยความจำของพื้นผิวโดยเฉลี่ยไม่สูงกว่า 1 GBps และแบนด์วิดท์สูงสุดไม่สูงกว่า 3 GBps การไม่พบแคช L1 ของพื้นผิวก็ไม่ควรสูงกว่า 10% ค่าแบนด์วิดท์หรือแคช L1 ที่สูงขึ้นอาจบ่งชี้ถึงปัญหาพื้นผิวที่ลึกกว่า ซึ่งรวมถึง

  • _พื้นผิวมีขนาดใหญ่เกินไป_: พื้นผิวขนาดใหญ่จะทำให้ขนาดแพ็กเกจใหญ่ขึ้น มีค่าใช้จ่ายสูงขึ้น และอาจลดประสิทธิภาพของแคช
  • พื้นผิวไม่ได้บีบอัด: โทรศัพท์ Android ทุกรุ่นรองรับการบีบอัดพื้นผิวบางประเภท ไม่ว่าจะเป็น ETC1 หรือ ASTC คุณควรบีบอัดพื้นผิวเพื่อลดขนาดแพ็กเกจและลดแบนด์วิดท์ของพื้นผิว
  • อื่นๆ: คุณควรพิจารณาข้อกังวลอื่นๆ เกี่ยวกับพื้นผิว ซึ่งรวมถึงพื้นผิวที่เป็นกำลังสอง, MIP Mapping, การกรองแบบแอนไอโซทรอปิก และอื่นๆ คุณอาจสังเกตเห็นปัญหาบางอย่างจากโปรไฟล์ระบบตามที่กล่าวไว้ด้านล่าง แต่ปัญหาอื่นๆ อาจต้องมีการตรวจสอบที่ลึกซึ้งยิ่งขึ้น

สำหรับเกม 3 มิติที่มีกล้องอิสระ ชิ้นงานพื้นผิวควรใช้ MIP Mapping เพื่อให้วัตถุที่อยู่ไกลจากกล้องมีแบนด์วิดท์หน่วยความจำลดลง ประสิทธิภาพของแคชพื้นผิวดีขึ้น และคุณภาพของภาพดีขึ้น สำหรับอุปกรณ์ที่ใช้ GPU Qualcomm Adreno ตัวนับ % พื้นผิวระดับที่ไม่ใช่ระดับฐาน ที่ต่ำกว่า 10% โดยเฉลี่ยอาจบ่งชี้ว่า MIP Mapping ไม่เพียงพอ

พื้นผิวระดับที่ไม่ใช่ฐานสำหรับเฟรมเดียว โดยมีค่าเฉลี่ย 9.2%
รูปที่ 2 พื้นผิวระดับที่ไม่ใช่ระดับฐานสำหรับเฟรมเดียว โดยมีค่าเฉลี่ย 9.2%

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

เปอร์เซ็นต์ของตัวกรอง Anisotropic สำหรับเฟรมเดียว โดยมีค่าเฉลี่ย 10.8%
รูปที่ 3. เปอร์เซ็นต์ของการกรองแบบแอนไอโซทรอปิกสำหรับเฟรมเดียว โดยมีค่าเฉลี่ย 10.8%

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