// سه شنبه, ۱۲ اسفند ۹۳ ساعت ۲۲:۰۰

همانطور که می‌دانید قرار است مایکروسافت در طی برپایی کنفرانس GDC 2015 ، جلساتی را برای معرفی امکانات جدید و قابلیت‌های مورد انتظار از دایرکت‌ایکس ۱۲ و تاثیر آن در صنعت بازی‌های ویدیویی برگزار کند. این اتفاق بهانه‌‌ای شد تا نگاهی اجمالی به عملکرد دایرکت‌ایکس ۱۲ از زوایای مختلف داشته باشیم.

APIها و نقش آنها در بازیسازی

اخبار یا عناوینی مانند «ملزومات مورد نیاز بازی» یا «System Requierments» را همگی ما بارها و بارها با عجله‌ی تمام خوانده‌ایم تا ببینیم آیا سیستم  ما قادر به هماهنگی با آن هست و از پس اجرای بازی برمی آید یا خیر. اگر به ملزومات دقیق‌تر شویم معمولا اطلاعاتی مثل ملزومات اعلام شده برای بازی Witcher 3 را خواهیم دید:
ption id="attachment_20424" align="aligncenter" width="658"]ملزومات بازیها و نقش API در اجرای آنها ملزومات بازیها و نقش API در اجرای آنها
به جز مشخصات سخت‌افزاری و نرم‌افزاری مدنظر سازندگان، معمولا نسخه‌ی پشتیبانی شده‌ی دایرکت‌ایکس هم ذکر می شود. دایرکت‌ایکس (Direct X) یک API استاندارد است که همخوانی کارت گرافیکی شما با آن یکی از اصول تضمین کننده اجرای بازی بر روی سیستم شما است، در غیر این صورت شانسی برای تجربه کردن بازی نخواهید داشت.
سازندگان به واسطه ی API، قادر به دسترسی به امکانات سیستم عامل، ورودی و خروجی‌های سیستم و ارتباط با نرم افزارهای مورد نظر خواهند بود
در دنیای برنامه‌نویسی رایانه، عبارتی با عنوان Application Programming Interface یا به اختصار API وجود دارد که به مجموعه ای از توابع ، دستورات و ابزارها اطلاق می شود که برای ساخت برنامه‌ها و بازی‌ها به کار می‌رود. سازندگان به واسطه ی API، قادر به دسترسی به امکانات سیستم عامل، ورودی و خروجی‌های سیستم و ارتباط با نرم افزارهای مورد نظر خواهند بود و دسترسی به سرویس‌های مورد نظر آنها با زبانی استاندارد تسهیل می‌شود.

آغاز رقابت برای تصاحب بازار

حدود یک سال و نیم پیش شرکت اِی‌اِم‌دی رقابتی را برای بهبود وضعیت رابطه‌ای برنامه‌نویسی گرافیکی یا به اختصار APIها آغاز کرد . مَنتِل (Mantle) نام API اختصاصی اِی‌اِم‌دی برای کارتهای گرافیکی Radeon است که از ناکارآمدی و لایه های اضافی API های رایج مثل دایرکت‌ایکس ۱۱  و OpenGL 4 اجتناب کرده و در عوض راه‌هایی را برای دسترسی مستقیم به تراشه گرافیکی، آن هم در سطح پایین برای بازیسازان فرآهم آورد.
ption id="attachment_20419" align="aligncenter" width="650"]Mantle در رقابت با DirectX 12 مَنتِل در رقابت با دایرکت‌ایکس ۱۲
هر چند اِی‌اِم‌دی اولین شرکتی بود که چنین API را معرفی کرد اما آخرین آنها هم نبود. سال ۲۰۱۴ شاهد اعلام‌های رسمی APIهایی مانند دایرکت‌ایکس ۱۲ ، OpenGL Next و همینطور Metal از شرکت اَپل بودیم که همگی ایده‌های مشابهی را برای بهبود راندمان پیاده‌سازی کرده بودند. این موضوع را می توان رنسانسی در حیطه ی APIهای گرافیکی نامید که پس از سالها کندی، باعث پیشرفت در این مقوله شده بود، پیشرفتی که تا پیش از این نیازمند توسعه هماهنگ با پردازنده‌ها یا پردازنده‌ها در کنار تراشه‌های گرافیکی بود. در حوزه گرافیک کامپیوترهای شخصی، پیش از این شاهد بودیم که مَنتِل در برخی موارد افزایش راندمانی قابل توجه را ارائه می‌کند، مخصوصا در سناریوهایی که پردازنده گلوگاه و ضعیف باشد. اما طرف منفی ماجرا این است که این API تولید انحصاری اِی‌اِم‌دی بوده و در نتیجه فقط با گرافیکهای ساخت اِی‌اِم‌دی کار می کند. سوال این است که پس گرافیک‌های اِی‌اِم‌دی و اِنویدیا باید چه کنند؟ اینجا است که رابط سنتی و چند پلتفرمی مایکروسافت می تواند راه حلی ارائه کند که بتواند برای هر سازنده ی کارت گرافیکی فارغ از برند آن یک API استاندارد مبتنی بر ویندوز فرآهم کند؛ در عین اینکه مزیت‌هایی مانند مَنتِل در بهبود راندمان هم داشته باشد.
آیا دایرکت‌ایکس ۱۲ همان راندمان بهینه ای را که از مَنتِل سراغ داریم به ارمغان می آورد یا خیر؟ آیا می تواند گلوگاه شدن پردازنده را که دایرکت‌ایکس ۱۱ با آن درگیر بود برطرف سازد؟
دایرکت‌ایکس ۱۲ ابتدا در همایش توسعه‌دهندگان بازی سال گذشته میلادی رونمایی شد، جایی که مایکروسافت اهداف تعیین شده از طراحی آن، دمویی از کارکرد کد اولیه و مشخصات فنی محدودی را که می توان برای این API در نظر گرفت، برشمرد. از آن زمان تا کنون، مایکروسافت سخت مشغول توسعه ی دایرکت‌ایکس ۱۲ و توسعه و پیاده سازی آن به عنوان بخشی از ویندوز ۱۰ بوده که نمونه ی ابتدایی آن در نسخه پیش نمایش این ویندوز جدید قابل دسترس است. توسعه این API به مرحله ی نهایی نزدیک شده و می توان نگاهی نزدیک به بخش راندمان آن داشت. دایرکت‌ایکس ۱۲ به طور پیوسته پایدارتر شده و درایورهای سخت افزاری هم بهبود یافته‌اند و اولین برنامه ی دایرکت‌ایکس ۱۲ هم نوشته شده است. حالا مایکروسافت و شرکایش سرانجام برای نمایش آن آماده شده اند و اکنون می توان به راندمان بنچمارک گرافیکی بازی Star Swarm محصول استودیو اُکساید گیمز نگاهی انداخت و عملکرد واقعی دایرکت‌ایکس ۱۲ را بررسی کرد.
ption id="attachment_20397" align="aligncenter" width="650"]زمان درگیری CPU در DirectX 11  (گراف بالا) در مقابل DirectX 12 (گراف پایین) زمان درگیری پردازنده در دایرکت‌ایکس ۱۱ (گراف بالا) در مقابل دایرکت‌ایکس ۱۲ (گراف پایین)
سوال مهم این است که آیا دایرکت‌ایکس ۱۲ همان راندمان بهینه ای را که از مَنتِل سراغ داریم به ارمغان می آورد یا خیر؟ آیا می تواند گلوگاه شدن پردازنده را که دایرکت‌ایکس ۱۱ با آن درگیر بود برطرف سازد؟ و  در ادامه چقدر مفهوم یک API سطح پایین برای دایرکت‌ایکس ۱۲ در کنار سخت افزارهای متنوع موجود مصداق پیدا می کند؟ ( APIهای سطح پایین تا قبل از این فقط برای یک کنسول با سخت افزار انحصاری و مشخص نوشته می‌شدند)

وضعیت کنونی دایرکت‌ایکس ۱۲ در ویندوز ۱۰

با اینکه دایرکت‌ایکس ۱۲ در آخرین نسخه ی پیش نمایش عمومی ویندوز ۱۰ وجود دارد اما بسیاری از قابلیتهای آن هنوز در حال تکمیل است. بنابراین این نتایج را صرفا باید یک پیش نمایش زود هنگام به حساب آورد. هنوز باگ‌ها و ناسازگاری‌هایی با برخی محصولات سخت افزاری وجود دارد اما اکنون شرایط برای نگاهی معقول به چیزی که دایرکت‌ایکس ۱۲ قادر به انجام آن است مهیا شده است. طبق اعلام رسمی مایکروسافت، دایرکت‌ایکس ۱۲ فقط در ویندوز ۱۰  قابل دسترس خواهد بود و از استاندارد WDDM 2.0 تبعیت خواهد کرد. WDDM در واقع استانداردی مختص درایورهای گرافیکی سیستم عامل ویندوز است که اولین بار با ویندوز ویستا معرفی شد و اکنون نیز نسخه ی جدید آن با نام WDDM 2.0 با ویندوز ۱۰ معرفی شده و یک تغییر بزرگ محسوب می شود.
پورت کردن دایرکت‌ایکس ۱۲ به ویندوزهای قدیمی‌تر مستلزم پورت کردن WDDM 2.0  هم هست که مشکلات متعددی را به همراه دارد چرا که در WDDM 2.0 درواقع بخشی از هسته ی سیستم عامل است و بنابراین قابل پورت کردن نیست
سوالی که در اینجا ممکن است برای کاربران زیادی مطرح شود این است که چرا مایکروسافت دایرکت‌ایکس ۱۲ را فقط به ویندوز ۱۰ محدود کرده است؟ آیا این هم صرفا یکی دیگر از آن سیاست‌های تجاری برای ترغیب کاربران به ارتقا به نسخه ی جدید ویندوز به حساب می‌آید؟ پاسخ این است که نمی توان با قطعیت به این موضوع جواب داد اما حداقل از نظر فنی پاسخ روشن است؛ پورت کردن دایرکت‌ایکس ۱۲ به ویندوزهای قدیمی‌تر مستلزم پورت کردن WDDM 2.0  هم هست که مشکلات متعددی را به همراه دارد چرا که در WDDM 2.0 درواقع بخشی از هسته ی سیستم عامل است و بنابراین قابل پورت کردن نیست. حتی اگر قرار بود که امکانات آن را به ویندوزهای قدیمی‌تر هم منتقل کند، یا باید از برخی امکاناتش کم می کرد یا باید تغییرات اساسی در هسته ی ویندوزهای قدیمی‌تر ایجاد می کرد که هر دو مورد قطعا ریسک ایجاد مشکلات بسیار و ناسازگاری‌های با برنامه های دیگر که در طول سالیان قبل نوشته شده بودند را بالا می برد. در هر صورت ارتقا به ویندوز ۱۰  برای کاربران ویندوز ۷ و بالاتر رایگان است و این مطلب جای انتقاد کمی از علت پورت نشدن دایرکت‌ایکس ۱۲ به ویندوزهای قبلی باقی می‌گذارد.

بازی Star Swarm و آزمایش عملی

همانطور که گفتیم برای تست عملکرد دایرکت‌ایکس ۱۲ از دموی بازی Star Swarm استفاده خواهیم کرد. این بازی دارای موتور گرافیکی نیتروس با قابلیت پشتیبانی همزمان از مَنتِل و دایرکت‌ایکس ۱۲ بوده و در سبک مبارزات فضایی طراحی شده است. ماهیت طراحی این بازی به گونه‌ای است که می‌تواند محدودیت‌های APIهای کنونی مثل دایرکت‌ایکس ۱۱ را برجسته کند و در عین حال مزیت‌های APIهای سطح پایین مانند دایرکت‌ایکس ۱۲ را هم به نمایش گذارد. این بازی به دلیل استفاده از واحدهای فراوان و به لطف افکت‌های دیگر، می تواند تا ۱۰۰هزار درخواست ترسیم یا Draw Calls را در آنِ‌واحد تولید کند؛ رقمی که در بازی معروف Assassin's Creed" Unity حدود ۵۰ هزاردرخواست برآورد می‌شد و آن مشکلات فنی را هم برای بازی و سازندگانش رقم زد. در اینجا تعدادی از کارت‌های گرافیکی را از هر دو سازنده ی اِی‌اِم‌دی و اِنویدیا برای بررسی راندمان و سازگاری انتخاب کرده‌ و برای پردازنده ی اصلی یا پردازنده هم سه حالت مختلف شش، چهار و دو هسته ای را شبیه سازی می کنیم. برای سیستم تست مرجع نیز این قطعات را در نظر گرفته ایم:
ption id="attachment_20382" align="aligncenter" width="497"]سیستم تست مرجع برای آزمایش DirectX 12 سیستم تست مرجع برای آزمایش دایرکت‌ایکس ۱۲
در ادامه بررسی خواهیم کرد که آیا دایرکت‌ایکس ۱۲ همانگونه که تبلیغ شده کار می کند؟ پاسخ کوتاه این است: بله!

راندمان با پردازنده های مختلف

همانطور که گفتیم کلیدی‌ترین بخش آزمایش بازی Star Swarm و راندمان آن با دایرکت‌ایکس ۱۲ ، چگونگی هماهنگ شدن آن با پردازنده،  مخصوصا در شرایطی‌ است که پردازنده ی اصلی چندان قوی نیست. چرا که این بازی قادر است ناکارآمدی‌های دایرکت‌ایکس ۱۱ را همزمان با حذف گلوگاه‌های پردازنده در دایرکت‌ایکس ۱۲ بصورت عینی نمایش دهد و شرایط مقایسه ی راندمان در این دو حالت را برای ما فرآهم کند. در اینجا راندمان بازی را در حالت‌های بهره گیری از پردازنده های شش، چهار و دو هسته ای و استفاده از کارت گرافیکی قدرتمند GTX 980 می بینیم:
ption id="attachment_20383" align="aligncenter" width="650"]مقایسه ی راندمان با تعداد هسته های متفاوت CPU مقایسه ی راندمان با تعداد هسته های متفاوت پردازنده
همانطور که می‌بینید، نهایت راندمان در حالت دایرکت‌ایکس ۱۱ فقط با قویترین پردازنده به دست می‌آید ، در حالی که در دایرکت‌ایکس ۱۲ با یک پردازنده ی ۴ هسته‌ای هم می توان ۱۰۰درصد راندمان کارت GTX 980 را استفاده کرد.

راندمان با تراشه های گرافیکی مختلف

حالا اجازه دهید که راندمان را از نقطه نظر تراشه ی گرافیکی یا GPU در شرایطی بررسی کنیم که در بخش قبلی دیدیم، می توان نیاز به پردازنده قوی و گلوگاه شدن آن را تا حد زیادی در دایرکت‌ایکس ۱۲ مرتفع کرد.  
ption id="attachment_20384" align="aligncenter" width="650"]مقایسه ی راندمان با کارتهای گرافیکی مختلف مقایسه ی راندمان با کارتهای گرافیکی مختلف
در نمودار بالا نتایج تست کارت‌های گرافیکی مختلف تحت هر سه API گرافیکی موضوع بحث ما نشان داده شده است. ضعف دایرکت‌ایکس ۱۱ کاملا مشهود است و افزایش راندمان با سوییچ به دایرکت‌ایکس ۱۲ تا حدی زیاد است که می توان آن را با ارتقا به کارت گرافیکی جدیدتر مقایسه کرد.
ضعف دایرکت‌ایکس ۱۱ کاملا مشهود است و افزایش راندمان با سوییچ به دایرکت‌ایکس ۱۲ تا حدی زیاد است که می توان آن را با ارتقا به کارت گرافیکی جدیدتر مقایسه کرد
همچنین ملاحظه می کنید که راندمان کارت‌های اِنویدیا به مراتب بالاتر از همرده های اِی‌اِم‌دی آنها است که می‌تواند ناشی از کیفیت درایورهای موجود و عدم بهینه‌سازی آنها باشد. در عین حال می توان دید بیشترین درصد افزایش راندمان هم در کارتهای اِی‌اِم‌دی رخ داده است. مثلا راندمان کارت GTX 980 با سوییچ کردن API حدود ۱۵۰ درصد افزایش پیدا کرده و به ۶۶ فریم رسیده ، در حالی که راندمان کارت اِی‌اِم‌دی R9 290X با افزایشی ۴۱۶ درصدی به حدود ۴۵ فریم رسیده است!

توان مصرفی در دایرکت‌ایکس ۱۲

نگاهی گذرا به مصرف برق در کارت‌ها و APIهای مختلف نشان می‌دهد که با رفع گلوگاه پردازنده و افزایش ورودی کارت‌های گرافیکی در دایرکت‌ایکس ۱۲ ، تراشه ی گرافیکی هیچ زمانی برای بیکار بودن نخواهد داشت و در نتیجه مصرف انرژی هم تا حد مصرف ماکزیمم کارت در کل مدت تست افزایش خواهد یافت.
ption id="attachment_20392" align="aligncenter" width="650"]مقایسه ی توان مصرفی در کارتهای گرافیکی پرچم دار مقایسه ی توان مصرفی در کارتهای گرافیکی پرچم دار

جمع بندی

آنچه که با هم بررسی کردیم یک پیش نمایش ابتدایی از راندمان دایرکت‌ایکس ۱۲ و مقایسه ی آن با دایرکت‌ایکس ۱۱ بود. همچنین مقایسه با مَنتِل را هم موضوع بحث خود قرار ندادیم چرا که آن هم یک API سطح پایین و با راندمانی بهبود یافته است اما انحصار آن به کارت‌های اِی‌اِم‌دی می‌تواند از درجه اهمیت و عمومی شدن آن کم کند. علاوه بر این، کاملا مشهود است که دایرکت‌ایکس ۱۲ استعدادهای بالقوه ای را درجهت درست و شرایط بهینه خواهد داشت. تخمین ما این است که انتقال از APIهای فعلی به دایرکت‌ایکس ۱۲ به سرعت انجام نخواهد شد اما بسیار جالب خواهد بود که ببینیم بازیسازان با این API جدید چه خواهند کرد و کاهش بار کاری و محدودیت‌های فنی و از همه مهم‌تر، راه‌های بهینه شده دسترسی به سخت افزار سیستم تا چه حد می‌تواند آنها را در پیاده‌سازی ایده‌های جدید و شکوفا کردن صنعت بازیه‌های ویدیویی هدایت کند. استودیو های سازنده بازی مثل یوبی‌سافت مونترال هم دیگر بهانه ای برای راندمان پایین و مشکلات فنی بازی‌های خود نخواهند داشت.
ption id="attachment_20396" align="aligncenter" width="650"]انتشار بازی AC:Unity با مشکلات فنی زیادی همراه بود انتشار بازی AC:Unity با مشکلات فنی زیادی همراه بود
منبع: anandtech
کاراکتر باقی مانده