خرید بک لینک

به نام خدا

درود بر تمام دوستان لیونی

بنده یک مقاله تقریبا کامل در مورد تمامی قابلتهای سخت افزاری هر دو شرکت انودیا و AMD با هزار جستجو و گشت و گذار در نت بالاخره تونستم پیدا کنم تا این قضیه کدون پردازنده دو شرکت میتونن به خوبی DX 12 رو پوشش بدن روشن بشه و هیچ شک و شبه ای برای کسی نباشه البته با این حال هم فکر نکنم تقریبا طرفداری هر دو شرکت کاملا راضی بشن چون این مقاله بیشتر نگفته های پنهان معماری سخت افزاری هر دو شرکت رو توضیح داده که تا به این لحظه هر دو شرکت اطلاعات مفیدی راجع به اینها منتشر نکردن و فقط در حد و اندازه انتشار یک عکس بوده

خوب حالا میرم سر اصل قضیه :

طبق گفته های هر دو شرکت انودیا و AMD در گفته های اخیرشون در اجرای قابلتهای DX 12 پردازنده های هر دو شرکت دارای multi engine جهت پشتیبانی از DX 12 هستند که در معماری AMD پردازنده هایی با معماری GCN 1.0 و 1.1 و 1.2 و در معماری انودیا سری کپلر و ماکسول V.1 و ماکسول V.2 و طبق برخی یافته ها معماری فرمی هم تحت پوشش چنین قابلیتی قرار گرفته اند که طبق گفته انودیا که به صراحت هم گفته مکسول V.2 بهترین پشتیبانی رو از این قابلت میبره

حالا میرم سر توضیحات این قابلیتها :

موتور و صف چیست :

در رابطهای برنامه نویس قبل از DX 12 رابطهای کلاسیک مانند OPEN GL تنها دارای صف 3D معرض بود همه دستورات ارائه شده به یک صف که توسط نقطه هماهنگ سازی محدود میشد وجود داشت دستورات در بین دو نقطه هماهنگ سازی به شکل دسته ای سفارشی بودند که در صف تعریف نشده میتوانستند برخی از همزمانی بین دستورات با توجه به راه اندازی خط لوله و معماری فوق العاده اسکالر که باید با نظم پردازش نمایند این دستورات به صورت نردبانی در یک صف واحد برای پردازش باید منتظر میماند این عملیات نردبانی داده ها معمولا برای همزمان سازی کار بر رویه GPU با عملیات دیگر مانند ارسال دستورات از سمت CPU یا منابع انتقالی در بین داده های CPU و GPU باعث مسدود شدن این انتقالات در پردازش GPU مانند تغییر دسترسی به حافظه گرافیکی یا انتظار برای دستورات دسته ای که در صف برای پردازش میشد

ozragen60s033c1x75am.png

شکل بالا نحوه انتظار دستورات برای پرازش رو نشون میده

اما در dx 12 و با پوشش او صف محاسبه اضافی جدیدی جهت استفاده در برنامه های 3d اضافه شده هر کدام از این صفهای اضافی دستورات را به طور غیر همزمان اما در کنار یکدیگر اجرا میکنند این قابلیت با نام asynchronously یا غیر همزمانی هم نامیده میشود منظور از asynchronously یا پردازش ناهمزمان اشاره به این موضوع دارد که داده ها در ارتباط با یکدیگر تعریف نشده اند کارهای محول شده به صف های مختلف ممکن است از شروع تا کامل شدن داده ها در جهت متفاوت با یکدیگر صادرشوند هنگامی که یک صف به طور مثال توسط یک حصار مسدود شده باشد صفهای دیگر ممکن است بدون توجه و در نظر گرفتن نقاط همزمانی و موانعی بر سر راه داده ها انها را پردازش کنند

این ویژگیها از قبل در open cl و cuda وجود داشتند اما هیچ یک از انها دارای صف های اضافی (که در dx 12 وجود دارند ) نیستند و پشتیبانی نمیشوند زیرا شرایط انتظار اضافی برای داده ها نیازمند یک بافر قوی برای ارسال دستورات اضافی هستند و open cl و cuda فاقد چنین شرایطی هستند

b4570eudzz4bc573oekl.jpg

در تصویر فوق شاهد ارسال دستورات به صورت غیر همزمان ولی پردازش دستورات به صورت همزمان هستید

این صف های اضافی با صف های 3D کلاسیک (منظور OPEN GL ) متفاوت است در صف های کلاسیک تغذیه محاسبات و کپی و رسم دستورات همگی با هم انجام میشد اما در صفهای اضافی جدید فقط میتوانند محاسبات و کپی دستورات را قبول و انها را پردازش کنند به همین دلیل انها را به نام compute queues شناسایی میکنند در سخت افزار، این صف توسط موتورهای اختصاص داده شده از نوع مربوطه گرفته شده است موتور مربوطه مسئول صف 3D است که معمولا با نام graphics command processor توسط سازندگان سخت افزار نامیده میشود ویا موتور 3D در اصطلاحات مایکروسافت یاد میشود در سخت افزار شرکت AMD از این قابلیت با نام Async Compute Engines یا به اختصار ACE نام برده شده

در موتور بازیهای مدرن امروزی کار محاسبه از اهمیت ویژه ای برخوردار شده است در موتورهای بازی قدیمی تر offload work از CPU به GPU انجام میشدند مانند پردازش فیزیک ذرات به طور یکسان که این کار موجب استفاده بصری کمتر از شیدرهای محاسبه در رندر میشد در این روش در نسل geometry and classic draw calls ها تنها جند بافر 2D درگیر بودند ولی در نسل جدید و با موتور محاسبات جدید بسیاری از عملیات 2D با شیدرهای محاسبه به خوبی انجام میشود که این کار باعث کاهش استفاده از منابع و به دست اوردن سرعت بیشتر برای استفاده از ویژگی های خاص محاسبه میشود

با این حال یک صف محاسبه ممکن است سودی را در بر نداشته باشد زیرا در انتظار نگه داشتن GPU با استفاده از کار یک صف یک مسئله بدون اهمیت به شمار میرود زیرا در حالی که کارهای زمانبندی شده در صف های مختلف هنوز برای ورود در انتظار هستند ممکن است مشکلاتی را برای سخت افزار در گیر برای اجرای کار محاسبه به وجود اورد این در حالی است که فقط یک صف برای محاسبه داده ها فعال است این عملیات نمیتواند به طورمنظم در داخل یک صف رخ دهد به همین دلیل سخت افزار نیازمند پیچیده گی هایی جهت اجرای موازی دستورات است استفاده از قابلیت موازی نیازمند سخت افزار و درایور میباشد این تفاوتها در تمامی سخت افزارها با استفاده از DX 12 قابل مشاهده نیستند فقط حمایت از صف محاسبه به طور کلی نشان داده شده است. با استفاده از درایور و سیستم عاملهای مختلف سخت افزار میتواند با همان نوع از حجم کاربه انها واکنش نشان دهد این کار جزئ ویژگیهای اضافی در مورد هسته گرافیکی هستند که قدرت و انعطاف پذیری هسته گرافیکی را نشان میدهد و باعث نهایت بهره وری از ان خواهد شد

81lj3cr0dya39y7aypse.jpg

1 صف اضافی در نرم افزار برنامه ریزی شده. تنها محدودیت حافظه اعمال می شود.

2 موتور یکی 3D به علاوه تا 8 موتور محاسبات در حال اجرا به صورت همزمان.

3 از آنجا که GCN 1.1، هر موتور محاسبه یکپارچه می تواند دستورات را از 8 صف ناهمزمان در حین پردازش

4 محاسبه و موتور 3D می تواند در همان زمان فعال باشد عنوان استفاده از آنها یک واحد تابع تک.
رابط کاربری بیش از حد Q مورد استفاده برای CUDA در واقع حمایت از اجرای همزمان است، اما آن را سازگار با API DX12 نیست.
اگر از آن استفاده شد، می تواند یک حد سخت افزار 32 صف محاسبه ناهمزمان در علاوه بر این به موتور 3D وجود اورد

5 اسلات اجرای پویا بین تمام انواع دستور به اشتراک گذاشته.

6 اسلات اجرای دستورات محاسباتی

7 Execution slotsبرای استفاده توسط پردازنده دستور گرافیک محفوظ شده
با توجه به کارت گرافیک Nvidia، تراشه GM20x باید قادر به بلند کردن رزرو به صورت پویا باشد. این رفتار به نظر می رسد به CUDA و Hyper-Q محدود شود.

8 اسلات اجرای به صورت پویا بین هر 8 صف محاسبه از GCN 1.1 به اشتراک گذاشته.

9 واحد SMX / SMM تنها می توانید هر نوع جبهه موج را اجرا کند. L1 کامل، محلی به اشتراک گذاشته حافظه و زمانبندی خیط و پیت کردن مورد نیاز است به حالت دیگر تغییر دهید. این به احتمال زیاد به دلیل استفاده از یک حافظه سفال تنها به ارائه L1 و LSHM در حالت محاسبه.

بررسی معماری هر دو شرکت در استفاده از قابلیت صف های محاسباتی اضافه یا همان Compute engines :

AMD :

موتور محاسبات می توان برای اهداف مختلف و متعدد بر روی معماری GCN استفاده شود کار محاسبات طولانی در حال اجرا را می تواند به یک صف محاسبه جدید واگذار کند اگر یک کار شناخته شده باشد احتمال هدر رفت زمان جهت نگه داری داده ها پایین تر است این در دست یابی به بالاترین بهره برداری از سایه زن ها به عنوان 3D و محاسبه حجم کار در هر سطح از سخت افزار و اجرای واقعی در واحد محاسبه لایه موثر است و این اولویت انجام کاررا میتوان به یک صف محاسبه اختصاصی برنامه ریزی شده واگذار کرد

تمامی این عملیات در معماری GCN به واحد ACE واگذار شده است که با استفاده از توان SHADER ها وبا استفاده مناسب از تنظیمات صف محاسبه باعث به وجود امدن شکل بهینه در انجام محاسبات پیچیده شده است این شیدرهای محاسباتی همراه با شبکه های کوچک حداقل دارای 64 رشته در هر گروه و استفاده شده در یک انجین GPU است با استفاده از تمام 8 واحد ACE موجود در معماری GCN همراه با موتور 3D، شما می توانید به 640 شبکه های فعال در فیجی دستیابی پیدا کنید

با ارائه کار اضافی بر روی یک موتور محاسباتی، تاثیر موانع مسدود کردن در دیگر صف ها می تواند اجتناب شود. موانع و یا نرده ها قرار داده شده در دیگر صف باعث هر گونه دخالت نمیشوند

معماری GCN در ایده ال ترین حالت در قبول دستورات محاسباتی در صف 3D :

در اینجا هیچ گونه وقتی برای مخلوط شدن draw calls ها و دستورات محاسبه در صف 3D وجود ندارد در واقع دستورات محاسباتی تقریبا عملکردی مشابه proxy geometry10 دارند دستورات محاسبه هنوز هم باید برای هر گونه عملیات غیر هندسه مربوط به دلایل عملی، مانند استفاده از حافظه داخلی مشترک و افزایش همزمانی ممکن ترجیح داده شود.واگذاری دستورات محاسباتی به صف محاسبه یک فرصت خوب برای افزایش بهره برداری از GPU است

( 10 Proxy geometry یک تکنیک که در آن شما با استفاده از یک هندسه ساده، مانند یک مربع برای پر کردن صفحه نمایش، اعمال جلوه های پردازشی و به طور یکسان به بافر 2D اشاره دارد)

0o4qruhit2i55wkki3wi.png

NVIDIA :

با توجه به مشکلات کارایی ممکن از با استفاده از محاسبه دستورات به صورت همزمان با تماس های draw calls،با صف محاسبه عمدتا باید اجرای دستورات محاسباتی در دسته ای مورد استفاده قرار گیرد.

چندین نقطه برای در نظر گرفتن زمانی که انجام این کار وجود دارد:

حجم کار بر روی یک صف واحد همیشه نیازمنددستورات به اندازه کافی و به طور کامل استفاده موثر از GPU است.
هیچ محاسبه موازی بین 3D و موتور محاسبه COMPUT ENGIN وجود ندارد، بنابراین بایدراهی برای تقسیم حجم کار بین تماس draw calls با موتور COMPUT به طور منظم و محاسبه دستورات خودسرانه وجود داشته باشد. مطمئنن همیشه به درستی دسته ای برای هر دو رسم تماس و دستورات محاسباتی تعبیه شده است
توجه نزدیک احتمالی GPU با شغل محاسبه انفرادی محدود به نرخ نمونه بافت، زمان تاخیر حافظه و یا هر چیزی به طور یکسان نیست. دیگر صف می توانند به فعالیت خود تا زمانی که چنین فرمان در حال اجرا است ادامه دهند

دستورات محاسبه باید در صف 3D برنامه ریزی شود.
انجام این کار به عملکرد هسته گرافیکی به میزان قابل لطمه خواهد زد. موتور 3D نه تنها در اجرای متوالی،بلکه پیکر بندی دوباره از واحد SMM عملکرد و حتی بیشتر را مختل میکنند.
استفاده از یک تماسDRAW CALL با هندسه پروکسی به جای تخلیه دستورات گزینه مناسبی به حساب نمی اید. این را هنوز در چند میکروثانیه ذخیره دستورات به عنوان Interleaving در یک فرمان محاسبه به اندازه کافی به نظر نمی اید

سوئیچینگ بین محاسبه و صف 3D نتیجه ان استفاده کامل از تمام خطوط لوله است. GPU باید زمان کافی در یک حالت برای توجیه سوئیچینگ بین دو حالت محاسبه و 3D داشته باشد
هیچ پیش دستی فعال، سایه زن طولانی در حال اجرا در هر دو موتور انتقال وجود نخواهد داشت

با وجود این محدودیت، استفاده از shader های محاسباتی هنوز هم باید در نظر گرفته شود. با این حال هنوز هم میتوان از قابلیت proxy geometry به طور موثر و بالاتری از همزمانی نسبت به نمونه کلاسیک سود بردکه این خود نیازمند مراقبت های اضافی و دسته های جداگانه برای خط لوله های عملیات رندرینگ است

محاسبه async باید با پشتیبانی ازکارها با اولویت بالا و برنامه ریزی مستقل توسط سخت افزار صورت گیرد، مانند در نظر گرفتن استفاده از CUDA برای جایگیزینی از API DX12.

معماری GK110 و بعد از ان، CUDA وظیفه پردازندش دستورات گرافیکی است و توسط یک واحد تابع اختصاص داده شده در سخت افزار اجرا می شود که uncoupled از محاسبه و یا موتور گرافیکی به طور منظم انجام می شود. این حتی پشتیبانی از صف ناهمزمان چند IIN سخت افزار شما را به وجود می اورد

ادامه دارد .......

نکته ای هم بگم :

بنده از رویه فن بازی این مقاله رو ننوشتم اگر فکر میکنید از این بهتر میتونید ترجمه کنید لینکهای تمام مطالبی رو بهتون میدم زحمت بکشید ترجمه کنید وبزارید

دوستان بنده به خاطر این از عکسهای انتشاری AMD استفاده کردم چون از معماری انودیا عکس پیدا نکردم کسی اگر لینک عکس با توضیحات داره دریغ نکنه و به بنده ادرسش رو بده تا قرار بدهم

ویرایش شده توسط hd5870 دیروز, ۰۹:۱۰ بعد از ظهر.

- - , .

برچسب: نویسنده: محمد رضا جوادیان تاريخ: يکشنبه 9 اسفند 1394 ساعت: 12:15

صفحه بندی