هنوز دایرکت ایکس 12 به همراه ویندوز 10 وارد صحنه نشده اما بررسی تخصصی DirectX 12 و مقایسه باDirectX 11 از برتری عجیب آن در اجرای هر چه سریع‌تر بازی‌ها خبر می‌دهد. در ادامه با نگاهی عمیق به این پدیده‌ی جدید دنیای گیم با ما باشید.

تبلیغات ۷۲۰ در ۹۰

مقدمه‌ای بر بررسی تخصصی دایرکت ایکس 12

آناندتک مقاله‌ی مفصلی در این رابطه منتشر کرده که از حوصله‌ی این مطلب خارج است و تنها به خلاصه‌ای از آن اکتفا می‌کنم.

از یک طرف Mantle ای‌ام‌دی را داریم و از طرف دیگر دایرکت ایکس بعدی، هر دو می‌خواهند استفاده از پردازنده‌ی اصلی و گرافیکی را بهینه کنند، آن هم با توزیع بهتر بار پردازشی و ارتباط موثرتر. در حقیقت هنوز هم بسیاری از عناوین برتر گرافیکی مثل کرایسیس 3، فار کرای 4، Middle Earth Shadow of Mordor و Watch Dogs به خوبی از تمام هسته‌های یک پردازنده‌ی 6 هسته‌ای و بیشتر استفاده نمی‌کنند. بیشتر عناوین به پردازنده‌های 4 هسته‌ای گرایش دارند و این مهم را در بررسی‌های اخیری که انجام دادم، به وضوح دیدیم:

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

آناندتک از سیستمی با پردازنده‌های 2، 4 و 6 هسته‌ای زیر استفاده کرده است:

پردازنده‌های 2، 4 و 6 هسته‌ای برای آزمایش توان دایرکت ایکس 12
2 هسته‌ای Core i3-4370 سرعت 3.8 گیگاهرتز
4 هسته‌ای Core i5-4670K سرعت 3.8 گیگاهرتز
6 هسته‌ای Core i7-4960X سرعت 4.2 گیگاهرتز

مادربورد X79 ازراک فتالیتی X79 پروفشنال، رم 32 گیگابایتی RipjawZ جی اسکیل و دومین نسخه‌ی پیش‌نمایش تکنیکی ویندوز 10 (بیلد 9926) مشخصات اصلی سیستم تست را بیان می‌کند. درایور 15.200 بتا برای محصولات ای‌ام‌دی و درایور 349.56 بتا برای کارت گرافیک‌های انویدیا استفاده شده است.

توده‌ی ستاره‌ای Star Swarm چالشی جدی برای کارت گرافیک‌های رده اول امروزی

یکی از پیش‌نمایش‌های تکنیکی توسط موتور گرافیکی نسل بعدی Oxide Games پیاده‌سازی شده، بنچ‌مارکی به اسم Star Swarm. از نامش احتمالاً متوجه شده‌اید که با توده‌ی از ستارگان روبرو هستیم که احتمالاً به پس‌پردازش سنگین توسط پردازنده نیاز دارد. با این حساب باید منتل و دایرکت ایکس 12 خودی نشان بدهند چرا که در غیر این‌صورت، در بازی‌ها سبک‌تر و ساده‌تر، تفاوت کمتر هم می‌شود.

Star Swarm یک دموی سبک استراتژی با عناصر گرافیکی بسیار زیاد

Star Swarm یک دموی سبک استراتژی با عناصر گرافیکی بسیار زیاد

البته یادمان باشد که هنوز ویندوز 10 در ابتدای راه است و نسخه‌ی نهایی آن عرضه نشده، ای‌ام‌دی و انویدیا هم درایور کارت گرافیک‌های خود را بهینه‌سازی نکرده‌اند. مایکروسافت در ویندوز 10 از دومین نسخه‌ی درایور نمایشگر ویندوز یا به اختصار WDDM استفاده می‌کند که نسبت به WDDM 1.0 در ویندوز 8.1، تغییرات زیادی دارد.

ویندوز 10 و دومین نسخه‌ی درایور نمایشگر ویندوز

ویندوز 10 و دومین نسخه‌ی درایور نمایشگر ویندوز

 رقیب اصلی دایرکت ایکس 12 نسخه‌ی بعدی OpenGL به نام OpenGL Next یا به اختصار GLNext  است، اما با توجه به مشکل بودن استفاده از OpenGL شاید مثل گذشته بیشتر سازندگان بازی از بسته‌ی جامع مایکروسافت استفاده کنند تا سریع‌تر به نتیجه برسند و محصول بعدی خود را به دنیای گیم معرفی کنند.

مقیاس‌پذیری کارت گرافیک

اولین سوال این است که کارت گرافیک‌های مختلف با استفاده از یک پردازنده‌ی 4 هسته‌ای، چه نتایجی را ثبت می‌کنند؟ منتل بهتر است یا دایرکت ایکس 12؟

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

سرعت اجرای Star Swarm توسط کارت گرافیک‌های مختلف

سرعت اجرای Star Swarm توسط کارت گرافیک‌های مختلف

در اولین نگاه برتری عجیب GTX 980 جلب توجه می‌کند، آن هم در بنچ‌مارکی که فکر می‌کردیم R9 290X پیروز است، مخصوصاً اگر منتل فعال شود. اما دقت کنید که این بنچ‌مارک و در حقیقت موتور گرافیکی تنها یکی از موتورهای گرافیکی دنیای گیم است و نباید به استناد نتایج اولیه به این باور اشتباه برسیم که GTX 980 تا این حد قوی‌تر از R9 290X ای‌ام‌دی است.

اما نگاه دوم، سرعت اجرای بازی در تمام موارد به شدت افزایش یافته است. شاید بدترین کارت گرافیک‌ها البته از نظر درصد افزایش سرعت اجرا، GTX 750 Ti و GTX 680 انویدیا باشند. دو محصول مبتنی بر معماری Kepler و مکسول. ولیکن معماری مکسول 2 یعنی سری 900 انویدیا با کمک دایرکت ایکس 12 به اوج رسیده است. محصولات جدید ای‌ام‌دی یعنی R9 285 با تراشه‌ای که معماری GCN 1.2 را یدک می‌کشد هم به نتیجه‌ی جالب توجهی رسیده‌اند.

مقیاس‌پذیری پردازنده‌ی اصلی، آیا دایرکت ایکس 12 به بیش از 4 هسته علاقه نشان می‌دهد؟

این سوال هم موضوع بررسی بعدی آناندتک بوده و نتیجه به صورت زیر است:

اثر تعداد هسته‌های پردازنده بر سرعت اجرای بازی با استفاده از دایرکت ایکس 12

اثر تعداد هسته‌های پردازنده بر سرعت اجرای بازی با استفاده از دایرکت ایکس 12

 مشاهده می‌کنید که هم در دایرکت ایکس 11 و هم 12 عملکرد 4 هسته و 6 هسته تقریباً یکی است. دقت کنید که 6 هسته‌ای استفاده از محصولات ام‌ای‌دی نیست، یک 6 هسته‌ای اینتل است. آیوی بریج اکستریمی به اسم Core i7-4960X که تا 4.2 گیگاهرتز اورکلاک شده تا هیچ محدودیتی پیش روی کارت گرافیک باقی نماند. اما جالب است که حتی چنین پردازنده‌ی قدرتمندی هم سرعت اجرای Star Swarm را در دایرکت ایکس 12 افزایش نمی‌دهد.

اما یک نکته‌ی جالب، هیچ دقت کرده‌اید که همین پردازنده در دایرکت ایکس 11 چه اثری داشته؟ گویا دایرکت ایکس 12 با همان 4 هسته کاری می‌کند که سرعت اجرای پیش‌نمایش تکنیکی Star Swarm به حد بیشینه برسد حال آنکه دایرکت ایکس 12 با 6 هسته به این مقصود دست می‌یابد.

و بهتر است نگاهی به میزان استفاده از 4 هسته داشته باشیم و ببینیم که آیا دایرکت ایکس 12 واقعاً توزیع بار پردازشی را به شکل ایده‌آل‌تری انجام داده است یا نه؟

ادعای مایکروسافت این است:

مقایسه استفاده از هسته‌های مختلف یک پردازنده‌ی 4 هسته‌ای توسط DX12 با DX11

مقایسه استفاده از هسته‌های مختلف یک پردازنده‌ی 4 هسته‌ای توسط DX12 با DX11

در تصویر فوق می‌بینید که اولین ترد پردازشی که معمولاً توسط اولین هسته‌ی پردازنده‌ی 4 هسته‌ای اجرا می‌شود، چه قدر پیچیده‌تر و طولانی‌تر از سایر تردهاست. در دایرکت ایکس 12 باز کلیه‌ی هسته‌ها نزدیک به هم است و این یعنی دایرکت ایکس 12 استفاده از هسته‌ها را بهینه و یکنواخت می‌کند.

اما آنچه در عمل رخ داده؛ درصد استفاده از 4 هسته را بررسی کنید:

توزیع بار پردازشی روی هسته‌‎های مختلف پردازنده در DirectX 11

توزیع بار پردازشی روی هسته‌‎های مختلف پردازنده در DirectX 11

توزیع بار پردازشی روی هسته‌‎های مختلف پردازنده در DirectX 12

توزیع بار پردازشی روی هسته‌‎های مختلف پردازنده در DirectX 12

روشن است که دایرکت ایکس 12 استفاده از هسته‌ها را به نهایت رسانده و شاید علت بهره نگرفتن از تمام هسته‌های یک پردازنده‌ی 6 هسته‌ای همین باشد چرا که در دایرکت ایکس 11، استفاده از دو هسته‌ی اخر در حد 60 درصد است. طبیعی است که دو هسته‌ی اضافه‌تر مفید واقع شود.

ببینیم یک دو هسته‌ای چه قدر با یک 4 هسته‌ای متفاوت است:

اثر پردازنده‌ی دو هسته‌ای بر سرعت اجرای بازی در دایرکت ایکس 12

اثر پردازنده‌ی دو هسته‌ای بر سرعت اجرای بازی در دایرکت ایکس 12

فقط GTX 980 است که اختلافی نسبتاً زیاد را به نمایش گذاشته، باقی کارت گرافیک‌ها تفاوتی بین دو هسته و چهار هسته قائل نشده‌اند.

موضوع دیگری که عملکرد بهینه‌ی دایرکت ایکس 12 حتی با پردازنده‌ی دو هسته‌ای را آشکار می‌کند، مدت زمان ثبت بسته‌های دستوری (Batch Submission) است. نمودار زیر را بررسی کنید: 

مدت زمان ثبت بسته‌های دستوری در دایرکت ایکس 11 و 12

مدت زمان ثبت بسته‌های دستوری در دایرکت ایکس 11 و 12

همان‌طور که می‌بینید مدت زمان لازم از 100 میلی‌ثانیه به کمتر از 10 میلی‌ثانیه کاهش یافته و این یعنی انتظار سرعت عمل بسیار بالاتر را داشته باشیم. در حقیقت وقتی فراخوانی ترسیم یا Draw Call در یک بازی سنگین، به مرز 100 هزار و بالاتر می‌رسد، همین 100 میلی‌ثانیه‌ها کاری می‌کنند که پردازنده‌ی گرافیکی نتواند آن طور که باید و شاید قدرت خود را نمایان کند. نکته‌ی جالب دیگر این است که مدت زمان ثبت بسته‌ها در دایرکت ایکس 12 بهتر از منتل است و گویا برتری کلی منتل AMD، علتی به جز این مورد خاص دارد.

زمان رندر شدن فریم‌های مختلف، آیا یکنواختی سرعت اجرا هم بهتر است؟

این بار هم دو پرچم‌دار را در نمودار مدت زمان رندر شدن فریم‌ها بررسی می‌کنیم، نموداری که به ما می‌گوید سرعت اجرای بازی تا چه حد یکنواخت و از نوسانات شدید و مایکرواستاترینگ به دور است؛ بررسی کنید:

GTX 980 انویدیا و نمودار مدت زمان رندر شدن فریم‌ها

GTX 980 انویدیا و نمودار مدت زمان رندر شدن فریم‌ها

R9 290X ای‌ام‌دی و نمودار مدت زمان رندر شدن فریم‌ها

R9 290X ای‌ام‌دی و نمودار مدت زمان رندر شدن فریم‌ها

قرابت عجیبی بین منتل و دایرکت ایکس 12 وجود دارد اما به نظرتان یکنواختی سرعت اجرا چطور است؟ آناندتک می‌گوید با توجه به اینکه دایرکت ایکس 11 ثبات خوبی در این تست داشته، دایرکت ایکس 12 فقط اندکی آن را بهینه کرده است.

اما من نظر دیگری دارم، اختلاف بیشترین زمان رندر فریم و مقدار متوسط آن در این دو API را زیر ذره‌بین بگذارید.

در دایرکت ایکس 12 متوسط حدود 11 میلی‌ثانیه است و حداکثر 32 است. در حد سه برابر.

در دایرکت ایکس 11 متوسط در حد 40 است و حداکثر در حد 50 میلی‌ثانیه و این یعنی کمتر از 1.3 برابر.

بنابراین به نظر می‌رسد که در اولین آزمون‌ها، یکنواختی سرعت اجرا خوب است اما فعلاً دایرکت ایکس 11 در این بخش بهتر است.

شاید می‌گوید سرعت متوسط اجرا 3 برابر است اما دقت کنید که یکنواختی سرعت اجرا به نوسانات رندر اشاره می‌کند و به سرعت متوسط کاری ندارد. ممکن است شما با یک کارت گرافیک ضعیف و کاهش تنظیمات، سرعت اجرا را افزایش دهید و در عین حال اجرای یکنواختی را تجربه کنید اما اگر کارت قوی داشته باشید و سرعت اجرا یکنواخت نباشد، وقفه‌های نامطلوبی در بازی آشکار می‌شود که از بین بردن آن هم ساده نیست! البته جی-سینک و فری‌سینک هم برای حل همین معضل شگرف مطرح شده‌اند.

توان مصرفی سیستم

شاید تصور کنید که دایرکت ایکس 12 بهینه است و بدون پردازش سنگین‌تر، سرعت اجرا را چند برابر کرده اما به هدف اصلی منتل و دایرکت ایکس برگردیم:

 استفاده‌ی بهینه از منابع سخت‌افزار مثل هسته‌های متعدد پردازنده‌ی اصلی و ارتباط بهتر بین پردازنده و کارت گرافیک.

بنابراین روشن است که توان مصرفی نباید کم شده باشد و حتی باید بیشتر شود.

نتیجه را در مورد سیستمی با پردازنده‌ی 6 هسته‌ای بررسی کنید:

توان مصرفی سیستم با استفاده از دایرکت ایکس 11 و 12

توان مصرفی سیستم با استفاده از دایرکت ایکس 11 و 12

می‌بینید که در تمام کارت گرافیک‌ها، مصرف انرژی بیشتر شده است. اما جالب است که بیشترین افزایش توان مصرفی فقط 22درصد است و در عین حال نتیجه‌ی بنچ‌مارک کارت گرافیک‌های فوق، اختلافی بالاتر از 100 درصد را اثبات کرده‌اند.

سخن آخر و نتیجه‌گیری‌های فعلی

قبلاً به اولین اشتباهی که شاید با دیدن نمودارها رخ دهد اشاره کردم: اینکه فکر کنیم GTX 980 بسیار بهینه‌تر از R9 290X است. فعلاً برای هر نوع نتیجه‌گیری از این دست زود است چرا که این روزها درایور و سیستم عامل بهینه‌سازی نشده‌اند. 

اما دومین باور اشتباه، عملکرد منتل و دایرکت ایکس 12 در این آزمون، بسیار نزدیک است. قابلیت‌های هر دو هم مشابه است اما این به معنی یکسان بودن بازی‌های نسل بعدی که با دو واسط برنامه‌نویسی منتل و دایرکت ایکس نوشته می‌شوند نیست! ممکن است بازی خاصی برای منتل بهینه شود و بازی دیگری برای دایرکت ایکس 12. نتیجه‌گیری صحیح این است که در حالت کلی، عملکرد منتل و دایرکت ایکس 12 به هم نزدیک است. اگر یادتان باشد مدت زمان ثبت بسته‌های دستور نتیجه‌ای جز برتری DX12 نداشت ولیکن در نهایت منتل سرعت اجرای کمی بیشتر را ثبت کرده بود. همین نکته هم تفاوت عملکرد این دو API را نشان می‌دهد.

برداشت سومی که از بنچ‌مارک‌های فوق می‌شود این است که دایرکت ایکس 12 سرعت اجرای بازی‌ها را دوبرابر و حتی بیشتر می‌کند! شما به چه اعدادی فکر می‌کنید؟

10 درصد، 20 درصد و یا ارقامی به بزرگی 500 درصد؟ منظورم دقیقاً عملکرد R9 290X است که با بهره‌گیری از منتل یا دایرکت ایکس 12، سرعت اجرا را از 8 فریم بر ثانیه به 42 فریم بر ثانیه رساند، تفاوتی 6 برابری؛ این موارد خاص را ملاک ارزیابی خود قرار ندهید و بیشتر به اعدادی کمتر از 50 درصد بیاندیشید.

این هم از آن برداشت‌های اشتباهی است که شاید در برخی وب‌سایت‌های ایرانی هم خوانده باشید اما بهتر است دست نگه دارید و صبر کنید که عناوین بیشتر به بوته‌ی آزمایش گذاشته شوند و ببینیم اگر استفاده‌ی سنگین از پردازنده و ارتباط قوی پردازنده و کارت گرافیک مطرح نباشد، آن وقت برتری چند درصد خواهد بود؟ معمولاً در بازی‌های سبک RTS یا Real Time Strategy که تعداد زیادی کاراکتر مثل سفینه، تانک و نفرات نظامی در صحنه حضور به هم می‌رسانند، پردازنده هم به شدت درگیر می‌شود اما بازی‌های ساده‌تر به پردازش سبک‌تری نیاز دارند و ارتباط قوی بین پردازنده و کارت گرافیک، اهمیت کمتری پیدا می‌کند.

 شما در مورد دایرکت ایکس 12 و تحولی که مایکروسافت و سازندگان کارت گرافیک در دنیای گیم ایجاد می‌کنند، چه نظری دارید؟