انویدیا کلا زمانبندی و سازماندهی دستورالعمل هارو به دوبخش تقسیم کرده، اکثر بخش ها نرم افزاری و بر پایه درایور هستن و باقی هم در داخل تراشه و به صورت سخت افزاری. اما amd مثل معماری fermi انویدیا اکثر بخش هارو یعنی تقریبا همه بخش های سازماندهی wave front هارو داخل تراشه و به صورت سخت افزاری قرار داده. انویدیا از زمان کپلر به بعد بخشی رو به درایور و پردازنده سپرده که دلایل تکنیکی داره. میشه گفت از لحاظ ساپورت فیچر های dx12 هیچ کدوم حتی نزدیک اینتل هم نیستن. البته فیچر لول های DX12.1 که یکیش میشه VXGI موجود در
Quantum Break رو فکر کنم کارت های انویدیا نتونن به خوبی پشتیبانی کنن و پشتیبانی از فیچر لول DX12.1 لاف در غریبی بوده!
مثلا اینو ببینید: البته تایید شده نیست:»
http://www.upload.overclockingheroes.com/upload/avf3_sv2.jpg
در تست خام async compute ای که یکی از کاربرای beyond درست کرده نتایجی که گرفتن جالبه! کارت hd7950 با ٢ تا async compute از furyx هم سریعتر بوده و گام های افزایش سربارش کمتر بودن! انویدیا هم که خیلی خیلی سریعتر از amd بوده در ابتدای کار و با اضافه شدن سربار گام هاش اضافه میشده، مثل amd اما باشدت بیشتر که باید با تریک های نرم افزاری درستش کنن. Amd و nvidia هرکدمشون ازیک چیزایی پشتیبانی میکنن که یکی دیگه نمیکنه. اما فیچر لول ١ خودش ٨ تا دیگه داه که اونا پشتیبانی نمیکنن. اینتل ۶ تای اضافی پشتیبانی میکنه. یعنی میشه گفت سرعت انویدیا توی داده های سری 900 بر اساس معماریشه.
چون تعداد هسته های AMD بیشتره لزوما نمیشه گفت قدرتش بیشتره. هر کدوم در جای خودشون برتری خودشونو دارن. استدیو امسیاد دیتاهاش رو برای gcn بهینه کرده و اینو خود AMD گفته. یعنی مثلا گام های ۶۴ تایی. شما تست star swarm رو هم در نظر بگیرید که انویدیا ٢ برابر سریعتره. اون بازی هم هست که فعلا به خاطر سر صدای oxide و amd روش بحث نشده. نکته دیگه ای هم هست، اونم اینه که انویدیا با dx11 توی همین بازی از AMD در dx12 سریعتره و خود اکساید هم گفته انویدیا تمرکزش روی dx11 بوده.
http://www.extremetech.com/wp-content/uploads/2015/08/DX11-High.png
http://www.extremetech.com/wp-content/uploads/2015/08/DX12-High.png
بستگی داره شرکت ها بار پردازشی رو چجوری تقسیم کنن و داده های ارسالی async رو چجوری برنامه ریزی کنن. انویدیا کار سختی برای بهینه سازی این بازی داره چون احتمالا دیتا ها ادرس دهی های ۶۴ تایی دارن و amd favor ان و از طرفی اگر بنا باشه حرفای آناندک و گوش کنیم نتیجه میتونه اینجوری هم باشه!
http://images.anandtech.com/graphs/graph8962/71450.png
و البته اینکه انویدیا میتونه رفتار سخت افزارشو بهتر تغییر بده چون نرم افزاری هست. حالا بازی های dx12 بیشتری میان ببنیم انویدیا به جای کاهش کارایی افزایش کارایی پیدا میکنه یا نه. اما در باره لینک زیر نظر شخصیمو میگم و کاری به کسی ندارم:
Nvidia Wanted Oxide dev DX12 benchmark to disable certain DX12 Features ? (content updated)
Asynchronous Compute Engine اصولا برای کاربردهای Computing استفاده میشن. هدف اصلیشونم پذیرفتن کارها و انتقال اونها به CU هست. اما یه نکته ای وجود داره و اونم اینه که اصولا معماری GCN توانایی محدودی در اجرای دستورات نامنظم داره و یه معماری منظم محسوب میشه. پس چه طوری از Asynchronous Compute Engine پشتیبانی میکنه؟! مهمترین نکته ای که اینجا هست اسفاده از فیچر لول های DX12.1 مثل VXGI موجود در
Quantum Break هست که همین چند روز قبل یه تریلر فنی در باره روش های رندرینگ نورپردازی بازی در Siggraph 2015 پخش شد که میتونید نتیجه بررسی اونو
اینجا ببینید. سوال اصلی اینه که وقتی
Quantum Break از VXGI پشتیبانی میکنه معناش چیه؟!! برداشت من اینه که کنسول های بازی هم از فیچر لول های DX12.1 حالا چه به صورت شبیه سازی یا موتور بازی یا ... پشتیبانی میکنن! واضه اگر فیچر لول های DX12.1 ای که خود مایکروسافت اونا رو طراحی کرده، روی کارت های انویدیا کار کنن و روی کنسول Xbox One کار نکنه، کنسول های مایکروسافت فروش نمیره و این شرکت، سونی و ای ام دی متضرر اصلی هستن! پس احتمالا مواری هست که ما ازش بی خبریم.
اینطور بگم که رشته دستورالعمل ها در یک wavefront قابل منظم سازی نیست. ACE ها میتونن د اولویت بندی Task ها رو تغییر بدن و به اوناا این اجازه رو بدن تا در نوبت های دیگه اجرا بشن! ولی خوب تو معماری منظیم خیلی این موارد ممکنه پیش نیاد. لینک گورو۳دی هم به همین موراد اشاره داره. اما نکته جالب اینه که تو بررسی های بازی Ashes of the Singularity دیدیم که مکسول دو (سری ۹۰۰) تو زمینه پردازش های ناهمگام (Asynchronous Compute) از کارت های ای ام دی ضعیف تره! یعنی تو مکسول از پردازش های ناهمگام (Asynchronous Compute) به صورت سخت افزاری پشتیبانی نمیشه و یه جورایی این پردازش شبیه سازی میشه!
اما اینجا یه مشکل اصلی ایجاد میشه! اگر کارت های انویدیا نتونن سخت افزاری از Asynchronous Compute پشتیبانی کنن، یعنی اینکه تو پشتیبانی از DX12.1 هم مشکل دارن. نمونه اش هم همون بیانیه ای بوده استودیو Oxide منتشر کرده! توی تست های Ashes of the Singularity دیدم که کارت های انویدیا ضعیف بودن! دلیلشم واضحه! پشتیبانی نکردن از Asynchronous Compute که یعنی از DX12.1 هم پشتیبانی نمیکنه! اما چه طور فیچر لول های DX12.1 مثل VXGI توی
Quantum Break و کنسول Xbox One پشتیبانی میشن!؟!؟!؟ این سوالیه که با بررسی های اخیری که انجام دادم خودمم هنوز به جوابش نرسیدم!