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

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

เคาน์เตอร์ Qualcomm Adreno

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

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

เคาน์เตอร์ ARM Mali

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

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

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

การวิเคราะห์การโต้แย้ง

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

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

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

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

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

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

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

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

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