تجزیه و تحلیل استفاده از پهنای باند حافظه بافت، تحلیل استفاده از پهنای باند حافظه بافت، تجزیه و تحلیل استفاده از پهنای باند حافظه بافت، تجزیه و تحلیل استفاده از پهنای باند حافظه بافت

پهنای باند حافظه داده‌های بافت می‌تواند یک گلوگاه بالقوه برای عملکرد GPU برنامه شما باشد. در یک پروفایل سیستم AGI تعدادی شمارنده وجود دارد که می‌توانند به تشخیص مشکلات پهنای باند حافظه بافت کمک کنند.

شمارنده‌های کوالکام آدرنو

در دستگاه‌هایی با پردازنده‌های گرافیکی Qualcomm Adreno، برخی از شمارنده‌های قابل توجه عبارتند از:

شمارنده توضیحات
حافظه بافت BW خوانده شده (بایت در ثانیه) پهنای باند داده‌های بافتی خوانده شده از حافظه خارجی.
% بافت L1 از دست رفته کش سطح ۱ (L1) به دلیل دریافت بافت‌ها از دست می‌رود.
درصد بافت‌های غیر پایه درصد واکشی‌های بافت که mipmap هستند.
% فیلتر ناهمسانگرد درصد تکسل‌هایی که ناهمسانگرد فیلتر شده‌اند.

شمارنده‌های ARM Mali

در دستگاه‌هایی با پردازنده‌های گرافیکی ARM Mali، برخی از شمارنده‌های قابل توجه عبارتند از:

شمارنده توضیحات
بافت، بیت‌ها را از حافظه خارجی می‌خواند ضربان‌های داده‌ای که توسط واحد بافت از حافظه خارجی خوانده می‌شوند، به طور میانگین روی هسته‌های سایه‌زن محاسبه می‌شوند.
بافت، بیت‌ها را از حافظه نهان L2 می‌خواند ضربان‌های داده‌ای که توسط واحد بافت از حافظه نهان L2 خوانده می‌شوند، به طور میانگین روی هسته‌های سایه‌زن محاسبه می‌شوند.
[بیشتر]

برای محاسبه پهنای باند کلی از میانگین ضربان‌های خواندن، مقدار شمارنده در پهنای گذرگاه (معمولاً ۱۶ بایت) و در تعداد کل هسته‌های سایه‌زن ضرب می‌شود.

تحلیل شمارنده

برای اندازه‌گیری رفتار این شمارنده‌ها، میانگین و اوج پهنای باند را در طول یک فریم GPU اندازه‌گیری کنید و سپس با یک بلوک پیوسته از میزان استفاده از GPU، مرزبندی کنید.

پهنای باند خواندن حافظه بافت برای یک فریم واحد، با مقدار میانگین ۵۶۵ مگابایت بر ثانیه و مقدار اوج ۲.۳۰ گیگابایت بر ثانیه
شکل ۱. پهنای باند خواندن حافظه بافت برای یک فریم واحد، با مقدار میانگین ۵۶۵ مگابایت بر ثانیه و مقدار اوج ۲.۳۰ گیگابایت بر ثانیه

ما توصیه می‌کنیم میانگین پهنای باند خواندن حافظه بافت از ۱ گیگابایت بر ثانیه و حداکثر پهنای باند از ۳ گیگابایت بر ثانیه بیشتر نباشد. خطای کش سطح ۱ بافت نیز نباید از ۱۰٪ بیشتر باشد. مقادیر بالاتر برای پهنای باند یا کش سطح ۱ ممکن است نشان‌دهنده مشکلات عمیق‌تر بافت باشد، از جمله:

  • بافت‌ها خیلی بزرگ هستند : بافت‌های بزرگ حجم بسته شما را افزایش می‌دهند، گران‌تر هستند و ممکن است کارایی حافظه پنهان را کاهش دهند.
  • بافت‌ها فشرده نشده‌اند : همه گوشی‌های اندروید از برخی انواع فشرده‌سازی بافت، چه ETC1 و چه ASTC، پشتیبانی می‌کنند. بافت‌ها باید فشرده شوند تا اندازه بسته و پهنای باند بافت کاهش یابد.
  • سایر : انواع دیگری از نگرانی‌های مربوط به بافت باید در نظر گرفته شود، از جمله بافت‌های با توان ۲، نگاشت mipm، فیلتر ناهمسانگرد و موارد دیگر. برخی از این موارد را می‌توان از طریق نمایه سیستم، همانطور که در ادامه بحث شده است، مشاهده کرد، در حالی که برخی دیگر ممکن است نیاز به بررسی عمیق‌تری داشته باشند.

برای بازی‌های سه‌بعدی با دوربین آزاد، داده‌های بافت باید از mipmapping استفاده کنند، به طوری که اشیاء در فاصله از دوربین، پهنای باند حافظه کمتری، راندمان بهتر حافظه نهان بافت و کیفیت تصویر بهتری داشته باشند. برای دستگاه‌هایی که از پردازنده‌های گرافیکی Qualcomm Adreno استفاده می‌کنند، درصد شمارنده‌های بافت‌های غیر پایه کمتر از 10٪ به طور متوسط ​​​​ممکن است نشان‌دهنده mipmapping ناکافی باشد.

بافت‌های غیر سطح پایه برای یک فریم واحد، با مقدار میانگین ۹.۲٪
شکل ۲. بافت‌های غیر سطح پایه برای یک فریم واحد، با مقدار میانگین ۹.۲٪

نکته‌ی قابل توجه دیگر، استفاده از فیلترینگ ناهمسانگرد است که با شمارنده‌ی % فیلترینگ ناهمسانگرد برای پردازنده‌های گرافیکی Qualcomm Adreno برای نسبت تکسل‌هایی که فیلترینگ ناهمسانگرد شده‌اند، توصیف می‌شود. اگرچه این روش ممکن است کیفیت بصری برخی از بازی‌ها را بهبود بخشد، اما می‌تواند بسیار گران نیز باشد و استفاده از آن باید در برابر هزینه‌ی عملکرد پردازنده‌ی گرافیکی سنجیده شود.

درصد ناهمسانگردی فیلتر شده برای یک فریم واحد، با مقدار میانگین ۱۰.۸٪
شکل ۳. درصد ناهمسانگردی فیلتر شده برای یک فریم واحد، با مقدار میانگین ۱۰.۸٪

بهترین راه برای تشخیص مشکلات خاص‌تر، گرفتن رد پروفیل فریم برای تجزیه و تحلیل بافت‌های تصویر است.