بعد از تحقيقاتم تصميم بر ان گرفتم که نکات و تفاوت هاي اصلي معماری گرافيک ها را توضيح دهم
ALU واحد منطقي که وظيفه عمليات رياضي را بر عهده دارد و در کنار ان يک حافظه Register براي نگه داري مقادير شناور که عمليات رياضي بر روي ان انجام مي شود احتياج داريم
ساده ترين پردازنده داراي حداقل اين قسمت ها هست . که ابتدا ورودي دريافت و بعد پردازش و بعد ارسال مي گردد و یک دور کامل از اين مراحل را يک چرخه cycle مي گويند
در اينجا ما یک چرخه داريم با یک بار عملیات پردازنده
به ALU که وظيفه انجام رياضيات عددي تکي را دارند scalar مي گويند
اما در صورتي که ورودي ها زياد باشند scalar مجبور است تا انها را يکي پس از ديگري انجام دهد که باعث مي شود که چرخه cycle هاي زيادي داشته باشيم
[Only registered and activated users can see links. ]
و نتايج انها ديرتر به دست ما خواهد رسيد . هرچه قدر که فرکانس و سرعت بيشتر باشد فقط چرخه ها را سريع تر انجام ميدهد اما در اصل موضوع که cycle هاي بيشتري داريم تفاوتي ايجاد نمي کند
در صورتي که بخواهيم عمليات هاي بيشتري را روي داده هاي بيشتر بدون افزايش چرخه ها انجام دهيم بايد از ALU هاي بيشتري هم زمان استفاده ببريم (موازي سازي)
اما استفاده از تعداد زياد scalar به صورت جدا هزينه بر خواهد بود
Single instruction, multiple data (SIMD)
ALU هايي که در کنار هم متصل باشند و تمام انها هم زمان عمليات رياضي را انجام دهند SIMD مي گويند تمام ALU هاي آن يک واحد را تشکيل مي دهند
[Only registered and activated users can see links. ]
بر خلاف scalar ها که مقادير دلخواه و مستقل را دارند يک واحد SIMD بايد داراي يک دستور العمل ورودي يکسان باشد اما نتياج هر کدام متفاوت خواهد بود
معادله رياضي را فرض کنيد که داراي چند مجهول مي باشد . و ضرايب X در SIMD X ذخيره مي شوند و ضرايب Y در SIMD Y ذخيره مي شود و ضرايب Z در SIMD Z ذخيره مي شود
يعني SIMD ها فقط يک دسته بندي را مي پذيرند . بعد نتايج همزمان پردازش مي شود
به SIMD ها پردازنده VECTOR يعني برداري هم گفته مي شود
[Only registered and activated users can see links. ]
با استفاده از SIMD مي توان مقادير زيادي را در چرخه (Cycle) هاي کمتر پردازش کرد . در صورتي که تعداد داده ها از طول SIMD بيشتر نباشد تمام انها را در یک دور چرخه انجام ميدهد
ابر کامپيوتر هاي SIMD استفاده زيادي در گذشته داشته اند
يکي از مشکلات SIMD اين هست که بايد داده هاي ورودي براي ان دسته بندي شود . به همين موضوع دستور العمل هاي خاصي مانند MMX و SSE2 و ... براي محاسبات ان توسعه يافتند
بهترين کاربرد اين نوع پردازنده ها براي کار بر روي مولتي مديا هست که سبک ان مناسب پردازنده هست
Very long instruction word
VLIW "کلمه دستور العمل خيلي طولاني" معماري سابق ATI بود که از SIMD به صورت ILP يعني "موازي سازي در سطح دستور العمل" استفاده مي برد
ورودي و خروجي SIMD هاي ان به صورتي بود که چهار SIMD طولاني که بر روي دستور العمل ها کار مي کردنند (يعني VLIW ها) در کنار هم به مرور دستور العمل ها را بيرون بدهند ILP
اين معماري بهترين بازدهي و تاکيد بر روي گرافيک خام داشت که دستور العمل هاي اجزاي تصاوير بدون هيچ گونه مشکلي و به صورت موازي پردازش مي شدند
اما در زمينه محاسبات ضعيف بود چرا که بايد محاسبات به صورت ILP دسته بندي مي شدند که يکي از سخت ترين مسائل حتي براي امروز هست [Only registered and activated users can see links. ]
Single instruction, multiple thread (SIMT)
اگر لوله هاي SIMD درون معماري RISC به صورت گروه هايي از نخ داده با دستور العمل مشترک تبديل شوند SIMT گفته مي شود
معماري RISC در پردازنده هاي ARM استفاده مي شود که شعار ان محاسبات با استفاده از دستور العمل هاي محدود هست که بازدهي بالايي دارد
يعني يک پردازنده ساده را درون يک پردازنده عمومي قرار دهيد تا وظيفه هدايت ان را بر عهده بگيرد [Only registered and activated users can see links. ]
تمام گرافيک هاي مدرن امروزي چنين معماري را دارند
تقسيم بندي و نام گزاري داده ها
[Only registered and activated users can see links. ]
thread به معناي نخ هست يعني داده هايي که از يک منبع تکي پردازش به مرور زمان توليد شده اند
thread Block بسته يا گروهي از نخ ها را مي گويند که از يک منبع نزديک توليد شده اند که ممکن است داراي ويژگي مشترکي باشند يا نباشند
در AMD اطلاعاتي که از واحد پردازشي هاي ان ايجاد مي شود را Wavefront و در انويديا ان را Warp مي گويند
در معماري GCN هر CU ان 4 عدد SIMD با ضرفيت توليد حداکثر 16 ترد دارد
که هرکدام از SIMD ها بسته هاي داده فقط از يک دستور العمل خاصي را توليد مي کند و داده ها قبل از ان توسط سخت افزار دسته بندي مي شوند و به SIMD مخصوص خودشان فرستاده مي شوند
Wavefront هايي که از اين SIMD ها بيرون مي ايد همگي داراي دستور العمل مخصوص به خود و همانند هستند
[Only registered and activated users can see links. ]
ميزان register هاي هر SIMD اجازه نگه داري 10 wavefront را مي دهد تا بر روي ان کار کنند اگر در يک چرخه داده محاسبه نشد در چرخه هاي بعدي انجام ميشود
هر CU هم 40 wavefront مي شود يعني ضرفيت ریجستر cu هاي GCN زياد هست
براي اولين بار در فرمي هسته هاي کودا معرفي شد کودا ها بر خلاف مدل GCN ارزش تکي و مستقل دارند
اما اين به ان معنا نيست که معماري ان متفاوت هست بلکه با استفاده از ترفند هاي سخت افزاري و نرم افزاري SIMD را طوري کرده اند که تصور هسته هاي مستقل همانند MIMD داشته باشد
[Only registered and activated users can see links. ]
MMID معماری خیلی پرهزینه و منعطفی هست . رابطه افزایش انعطاف و قدرت خام محاسباتی برعکس هستند و هرچقدر معماری منعطف تر باشد قدرت خام ان کاهش پیدا میکند
واحد هايي مثل SFU و ... در کنار هسته های کودا براي همين امر هستند که انويديا اولين بار نام ان را SIMT گذاشت اما کاملا متفاوت با مدل GCN
اين مدل از ترانزيستور بيشتري استفاده ميبرد مخصوصا در قسمت کنترل و منطق آن و همچنين بخش پذيري و قابليت خاموش کردن بخش هاي اضافه را دارد
ميزان داده هايي که Sm هاي انويدا توانايي کار بر روي ان را دارند ربطي به تعداد کودا هاي ان ندارد بلکه هميشه 2 عدد warp با 16 ترد بوده است
[Only registered and activated users can see links. ][Only registered and activated users can see links. ]
به صورت تئوری توانایی محاسبات GCN بیشتر است اما در برنامه های واقعی همه wavefront ها به صورت 16 ترد نیستند و بعضی از داده ها احتیاج به نتایجی دارند که هنوز پردازش نشده و stall می شوند
که در برنامه های عادی بخش های زیادی که در معماری gcn بدون استفاده می مانند باعث مصرف بیهوده و افزایش تاخیر می شوند اما در صورت استفاده از حداکثر توان تئوری مشکلی نخواهد بود
به این دلایل بازدهی و سرعت معماری انویدیا در برنامه های متوسط بیشتر است اما به همان نسبت ترانزیستور بیشتر احتیاج می برد
Cu های GCN به صورت ابکی هستند و در برنامه های متوسط تاخیر بالایی دارند و توانایی کار بر روی ترد های بیشتری به صورت همزمان و موازات بیشتری را دارند
برنامه های که برای کودا نوشته شده باشند سرعت خیلی پایینی روی GCN دارند
اما با استفاده از DX 12 و استفاده از حداکثر توان سخت افزار و موازات می بینیم که گرافیک های متوسط AMD هم رده گرافیک های گران قیمت انویدیا هستند
درصورتی که بازی های حجیم کنسول های GCN برای معماری انویدیا تقسیم و شکسته نشوند باعث Crash و هنگ کردن میشود
FRONT END یا بخش CONTROL LOGIC در SM های انویدیا بدون در نظر گرفتن اینکه حداکثر تعداد کوداهای تراشه چقدر هست حجم و مصرف بالایی دارند
که می بینیم انویدیا هر جا که پیشرفت قابل ملاحظه در بازدهی به مصرف را داشته است مربوط به این بخش می شود
[Only registered and activated users can see links. ]
از فرمی به کپلر با سه برابر بازدهی بیشتر با استفاده از کاهش حجم این قسمت و از کپلر به مکسول با استفاده از SMM یا SM های سری موبایل انویدیا که مصرف کمتری دارند
نسبت کودا ها به هر SM اهمیتی ندارد به جز اینکه هر Front end که دو warp شانزده تردی را پشتیبانی می کنند همیشه یکسان بوده و فقط بر دسترسی و موازات به هر کودا ها تاثیر دارد
یک تفاوتی که بین این گرافیک ها وجود دارد این است که
هر SM انویدیا یک poly morph Engine دارد که در ان واحد tessellator وجود دارد یعنی یکی به ازای هر SM و در بخش GPC بالاتر raster بین چند عدد از انها اشتراک شده است
معماری GCN تعداد CU خیلی زیادی دارد و گروهی از انها در گروه بندی shader engine دارای یک tessellator در Geometry engine و raster مشترک هستند
به طور مثال در معماری Hawaii با 44 عدد CU به صورت کلی چهار tessellator وجود دارد اما در معماری مکسول با شانزده عدد SMM شانزده عدد tessellator هست
نوع برنامه نویسی مغلوب و اینده انها بر معماری های بعدی خیلی تاثیر گذار هست انویدیا در حال حرکت به سمت معماری مناسب بهره گیری از ضرفیت بازی های کنسول های GCN هست
و amd نیز در صورت اینکه بخواهد بازدهی به مصرف خودش را افزایش دهد باید تقصیم پذیری و خاموش شدن بخش های اضافه را به SIMD های خودش اضافه کند که باعث افزایش ترانزیستور میشود
در صورت نیاز در اینده به روز رسانی خواهد شد
کپی فقط با ذکر منبع
ویرایش توسط asdaf : 14th April 2016 در ساعت 01:15 PM
الان وباتوجه به معماری ریزپردازنده های پلاریس و پاسکال بههترین راه حل برای گیمرهاکدوم خواهدبود ودراصل بایدبگیم ایا amdباپلاریس میتونه اب رفته رو به جوی برگردونه یاهمچنان دنباله روخواهدبود؟
پاسکال یاپلاریس؟کدومیک؟
الان وباتوجه به معماری ریزپردازنده های پلاریس و پاسکال بههترین راه حل برای گیمرهاکدوم خواهدبود ودراصل بایدبگیم ایا amdباپلاریس میتونه اب رفته رو به جوی برگردونه یاهمچنان دنباله روخواهدبود؟
پاسکال یاپلاریس؟کدومیک؟
درود عرفان جان
تا جایی که من متوجه شدم و محمد علی جان توضیحات مفیدی رو ارائه دادند معماری پاسکال جدید نیست و بیشتر تمرکزش رو بهبود و نحوه عملکرد SM هاش بوده و تقریبا میشه گفت صافی معماری مکسول هست خود انودیا هم گفته که بخشهایی که به معماری اضافه شده صرفا برای بالا بردن قدرت بخش محاسباتی هسته هست وکاربرد اصلیش هم صنعتیه خوب این رو همه میدونن که در گیمینگ کاربردی نداره تازه همون بخش به درد نخور Async Comput هم که کاربردش در dx 12 حیاتیه هنوز هم در پاسکال مشاهده نشده
ولی در اون طرف AMD هنوز بلوک دیاگرامی که مثل دیاگرام پاسکال بشه تشریحش کرد رو بیرون نداده و هنوز معماریش رو ندیدیم چی هست
ولی یه نکته ای هست اونم اینه که پولاریس در فرایند ساختش یک گام از پاسکال جلوتره استفاده از فرایند 14nm FinFET به جای 16nm FinFET پاسکال و این خودش یک امتیازه برای AMD
برای فهم خیلی از مسائل نیاز به پیش زمینه هایی هست که هیچ کجا انها را به ترتیب و از پایه توضیح نمی دهند
و بدون انها نمی توان چیزی را فهمید
چندین وقت بود که مطالب پراکنده و توضیحات را مطالعه می کردم که سرانجام توانستم با کنار هم قرار دادن همه انها به یک قائده برسم
مطالبی که در این تاپیک گفته شد یکی از بزرگترین و اولین قدم برای فهم و درک عملکرد ها و توضیحات تخصصی بود
البته کسانی هستند که چون یک عمر اشتباه فهمیدن و گفتن نمی خواهند اینها را قبول کنند
و مثلا با اصول خودشان چه چیزی را میخواهند توضیح دهند یا به کجا برسند؟؟؟
توصیه من به خواننده گان این است که مطالب خارج از این تاپیک را از ذهن خودشان خارج کنند
و می خواهیم با هم از مبتدی به پیشرفته به صورت اصلاح شده حرکت کنیم
[Only registered and activated users can see links. ]
اولین و بزرگترین سردرد برای کسانی که فقط به اسامی اهمیت می دهند و بین data و thread تفاوتی قائل نمی شوند
و به توضیحات و عملکرد اهمیت نمی دهند و این مطالب را بازی با جملات می دانند تفاوت بین SIMD و SIMT هست
اشتباه گرفتن اینها برای افراد معمولی رایج هست
ترد یک فرقی با process در زمینه CPU دارد و ان هم این است که تردها از یک مموری مشترک استفاده میکنند
داده عنوان عمومی دارد اما ترد یک حالت نرم افزاری خاص هست .همون طور که گفتم SIMT برروی سخت افزار SIMD اجرا میشوند
[Only registered and activated users can see links. ] [Only registered and activated users can see links. ]
در این تصویر SIMD را یک شناسه نرم افزاری thread اما با ضرفیت اجرای داده بالا گفته است
SIMT دارای چندین نخ و شناسه هست اما همگی به صورت قفل شده و یک دستور العمل هستند
در اطلاعات تصاویر دیگر گفته شده که از نظر نرم افزار هر بخش ان همانند یک اسکار تکی هست
معماری و GCN و انویدیا به صورت اسکالر هست هر بخش و تعداد نخ ها اهمیتی ندارد و میتواند برای نرم افزار مخفی باشد
بر خلاف ان VLIW به صورت وکتور بوده است و حجم ان همیشه ثابت و مشخص برای نرم افزار هست
در GCN یک wavefront که از تمام SIMD ها و 64 هسته CU با یک دستور العمل استفاده کند وکتور گفته می شود
گاهی اوقات به SIMT عنوان Superscalar نیز می گویند . پس هرجا دیدید یعنی یکی هستند
و حالت نرم افزاری هست و کاملا متفاوت با VLIW یا SIMD و در مقابل هم مقایسه می شوند
MIMD همانند یک اسکالر مستقل و تمام اجزای ان نیز مستقل هستند که مثال ان پردازنده های چند هسته ای هست
که خیلی پر هزینه و غیر بهینه برای موازی سازی می باشد
که به نظرم انویدیا با تبادل اطلاعات warp ها بین SM های خودش و دسته بندی برای ایجاد انعطاف استفاده میکند
هر SM می تواند همانند یک گرافیک کاملا مستقل باشد و یک هسته ازCPU اختصاصی برای خودش بگیرد
و همانند توضیح ام از شبکه هوش مصنوعی MIMD را درون SM های خودش شبیه سازی کند
در واقع SM ها همانند هر هسته یک پردازنده چند هسته ای می مانند یعنی MIMD واقعی انها هستند
نه SIMD های درون SM ها که انویدیا همیشه انها را همانند هسته نمایش و تبلیغ میکند .
که هسته واقعی بودن انها غیر ممکن و خیلی پر هزینه است
بر خلاف انویدیا که هرSM ان گرافیک مستقل هست تمام کل تراشه GCN یک گرافیک واحد را می سازند که برای دایرکت ایکس 11 تمام بار کاری و نیاز گرافیک فقط به یک هسته داده می شود که باعث ایجاد گلوگاه شده است
تمام پردازش های گرافیکی به میزان یکسان CPU نیاز دارند و هیچ چیزی نمی تواند و امکان ندارد که بگوییم فلان معماری یا نرم افزار کمتر از پردازنده اصلی استفاده می کند
بلکه تنها کاری که دایرکت ایکس 12 و انویدیا انجام میدهد پخش مساوی بار کاری بین هسته های CPU است
برخلاف قبل در دایرکت ایکس 12 هر CU از معماری GCN با SM های انویدیا برابری میکند و حتی بهتر می تواند مولتی تردینگ داشته باشد .
به همین خاطر با احتساب ساده تر بودن و تعداد هسته بیشتر GCN بازدهی بهتری در DX12 دارد
Homogeneous coordinates
مختصات همگن که برای مکان یابی در ماتریس ها به کار می رود در سال 1827 معرفی شد
ماتریس ها به خاطر ساختار حل پذیری یکسان و الگوریتمی بودم در محاسابات کامپیوتر بکار میرود
در همان ابتدایی ترین گرافیک ها از این مختصات XYZW برای مکان یابی اشیاء سه بعدی استفاده میشد
[Only registered and activated users can see links. ]
XYZ بیانگر طول و عرض و ارتفاع هستند یعنی سه بعد تمامی اجسام
اما W بعد چهارم هست که فقط در دنیای ریاضیات نظری ملموس هست اما چه احتیاجی به بعد چهارم هست؟
برای اندازه گیری ها همیشه مقیاسی و یا نسبت گیری به چیزی وجود دارد
در معادلات حرکت دو بعدی چیزی نسبت به محور با استفاده از بعد سوم که حرکت ان باشد بدون در نظر گرفتن ان در معادلات استفاده میکنیم .
حرکت یا تغییرات در سه بعدی ،بعد چهارم گفته میشود که از نظر یک بعد پنجمی فقط یک ضلع یا محور دیده می شود
در دنیای گرافیک کامپیوتری اجسام به صورت طبیعی W به مقدار 1 دارند که اگر به ضریب داده شود بزرگنمایی انجام می شود
کمتر از یک به سمت نقطه بی نهایت می رود و اگر مساوی صفر باید از مکان به وکتور یا مسیر تبدیل می شود مثلا برای نورپردازی . بدون W خیلی از معادلات غیر ممکن خواهد بود
تاریخچه و تکامل گرافیک ها [Only registered and activated users can see links. ]
نسل اول گرافیک ها دارای دو موتور اختصاصی فقط برای تغییر شکل و نور پردازی بودند و هیچ قابلیت دیگری نداشتند
[Only registered and activated users can see links. ]
Primitives به اطلاعات اولیه اشیاء سه بعدی گفته میشود
همه چیز از مثلثات تشکیل شده است که به ان triangle می گویند یک سطح بالاتر polygon به معنای شکل ساده است
رئوس انها و نقاط اصلی اشیاء را vertex می گویند
تمام اطلاعاتی که پیوسته وارد گرافیک و با CPU رد و بدل می شود اینها هستند که پیوسته در حال تغییر و حرکت هستند
نقاط رئوس دریافت میشود و مثلثات کنار هم قرار می گیرند و یک کره یا شکل دیگر سه بعدی را می سازند
که کنترل انها بر عهده geometry است
Rasterization به معنای شطرنجی کردن هست و در اصطلاح زمانی به کار می رود که بخواهند چیزی را اماده برای چاپ بنمایند
در گرافیک کامپیوتر نتایج اماده برای تسکچر گزاری و تبدیل شدن به پیکسل های قابل نمایش می شود
texturing
بر روی این شکل ها با توجه به اطلاعاتی که دارند یک تسکچر یا یک تصویر و پوسته قرار میگیرد که تصور جزئیات و شکل را ایجاد می کند .
تسکچر ها در حافظه مموری گرافیک در هر بار لودینگ ذخیره میشود
Z buffering و blending که در معماری های قدیمی اینگونه صدا می شد قسمتی بود برای حذف بخش های اضافه از تصویر
یعنی با توجه به فاصله پیکسل ها تا دوربین پیکسل هایی که در پشت بقیه قرار می گرفتند را حذف میکرد و اخرین مرحله بود
نسل دوم ظهور هسته های سایه زن وshader بود با ورود این بخش ها تنها ATI و انویدیا در گوی رقابت باقی ماندند و بقیه شرکت ها حذف شدن
[Only registered and activated users can see links. ]
این پردازنده ها فقط فضایی برای برنامه نویسی و ایجاد ازادی و توانایی بیشتر برای بخش های اختصاصی قبلی ایجاد کرد
و هر بخشی پردازنده های shader اختصاصی خودش را داشت
در این زمان سطوح و اجسام پیچیده تر و نورپردازی و افکت های پیچیده تر ایجاد شد
اما هنوز هم نقاط ضعفی داشت . و به صورت خطی و مرحله ای بود
ساختارو پردازش های گردشی وجود نداشت . توانایی کنترل جریان پویا و متغییر نداشت .
[Only registered and activated users can see links. ]
[Only registered and activated users can see links. ]
معماری شدر های جداگانه اختصاصی انویدیا که دارای Tiled rasterization و عمل Z Cull جانبی قبل از تسکچر گزاری هست
[Only registered and activated users can see links. ]
در یک صحنه که از تسکچر و پیکسل های زیادی استفاده میشد و احتیاج به شدر های پیکسل زیادی میرفت و تسکچر های جئومتری و ... بی استفاده بودند
و در صحنه ای پر از جئومتری هست بار زیادی برای جئومتری شدر ها بود و شدر های پیکسل بی استفاده می ماندند . که همیشه بار پردازشی محدودیت داشت و همیشه بخشی از سخت افزار بیکار باقی میماند
Tiled rasterization
[Only registered and activated users can see links. ]
در گرافیک های قوی دسکتاپ که قدرت و پهنای باند بالایی دارند عمل پیکسل و تسکچر سازی قبل از حذف سطوح اضافی و پنهان انجام میشود
و دلیل ان نیاز و تاکید بر روی سرعت بالای ایجاد تصویر هست .اما در این عمل بخش زیادی از پردازش اضافی انجام میشود که بیهوده به هدر میرود
در گرافیک های موبایل تکنیکی وجود دارد که قبل از ایجاد پیکسل ها اولویت انها را تشخیص می دهد
و سطوحی که پشت سطوح دیگر قرار می گیرند را حذف می کند و بعدا عمل پیکسل گذاری انجام میشود .
این کار باعث تاخیر در ایجاد تصویر میشود اما در سطح موبایل نسبت به صرفه جویی که در پهنای باند و پردازش می شود کاملا ارزش ان را دارد
Unified Shaders
بزرگترین قدمی که برای چندمنظوره شدن گرافیک ها برداشته شد و بدون ان پیشرفت های دیگر ممکن نبود و گرافیک ها را به شکل امروزی در اورد.
ظهور پردازنده های سایه زن مشترک هست .
که اولین بار توسط ATI در تراشه Xenos برای Xbox 360 ابداء شد .
[Only registered and activated users can see links. ]
پردازنده های شدر مشترک با یک استاندارد یکسان به وجود امد که تمامی پردازش ها بر روی ان انجام میگرفت
و ضرفیت بالای ان همیشه در حال استفاده بود . که بهینه گی و استفاده پذیری را افزایش میداد .
بخش های پردازشی همه یکجا جمع شدن اما بخش های ادرس دهی و دستور دهی به صورت مجزا باقی هستند
[Only registered and activated users can see links. ]
فرایند های پیچیده تر و پردازش های پویاتر قابل امکان شد و برنامه نویسان ازادی بیشتری داشتند
همچنین گرافیک ها توانایی این را یافتند که محاسبات مستقل چند پردازشی را به صورت بخشی مجزا و جداگانه انجام دهند
اولین معماری پردازنده مشترک دسکتاپ ATI معماری VLIW 5 بود که از دستور العمل ILP و هدفش تمرکز بر روی گرافیک بود
و یک دستورالعمل اضافی برای کارهای خاص داشت که بعدا از معماری حذف شد
انویدیا با پردازنده های شدر مشترک به سمت SIMT رفت و سری 8800 و فرمی و ...
بعضیا که قبلا از GCN نمی دونستند استاتر چی هست افسانه بافی میکنند که معماری Vliw پر استاتر بوده و GCN خیلی بهتر شده به خاطر منعطف تر شدن!!
اما اصلا نمی دونند که استاتر به خاطر تاخیر در گرافیک به وجود میاید و ربطی به انعطاف در محاسبات ندارد
و اتفاقا همین محاسبات و چند منظوره ترشدن هست که اخلال در گرافیک خطی به وجود میاورد و باعث استاتر میشد .
When AMD taped out Tahiti in 2011, the focus was on peak frame rates. No one seemed to care about stuttering,
as long as the cards could post a top FPS that was as competitive as possible. Did it really take until Fiji for AMD’s engineers and software teams to prioritise a ‘consistently smooth experience’? Most folks in the industry used to believe FPS averages were a good proxy for smooth animation,
but as games and graphics APIs grew more complex, gaps between high FPS averages and good user experiences became more apparent.
We didn’t always use the right quantitative language to describe these performance issues precisely
asynchronous shaders
قدم بعدی در استفاده از تمام ضرفیت پردازنده های شدر دوباره توسط شرکت ATI سابق برداشته شد
امروزه پردازش ها به دو دسته گرافیک و محاسبات تقسیم می شوند .
به تمام مراحل ایجاد شکل سه بعدی و تصویر گرافیک می گویند و به ضرفیت ازاد شدر ها که برای محاسبات ازاد استفاده میشود محاسبات میگویند .
نمایشگر یک نرخ تازه سازی تصویر دارد که تصاویر باید قبل از زمان مشخص اماده باشند که اگر زودتر یا دیرتر نمایش داده شود باعث استاتر میشود .
برای جلوگیری از هرگونه مشکلی گرافیک با استفاده از تمام ضرفیت پردازنده ها اجرا می شوند و به سرعت در یک زمان خاصی به اتمام می رسد
و اگر زمان اضافی قبل از نرخ تازه سازی تصویر داشته باشند محاسبات اجرا می شود که تا زمان نرخ تازه سازی تصویر ادامه دارد
و بعد متوقف و دوباره گرافیک و متوقف و محاسبات و ... انجام می شود یعنی تمام داده ها در دسته خودشان با تمام ضرفیت پردازنده اجرا میشوند .
همانند مثال بزرگراه و چراغ سبز و قرمز .
دلیل ان هم این است که پردازش متغییر و غیر قابل پیشبینی است و زمان یکسان و مشخصی ندارد و انها به خاطر کیفیت از خیر اجرای همزمان گرافیک و محاسبات می گزرند
اینجا بخشی از توانایی پردازنده ها بدون استفاده باقی می ماند .
مخصوصا شرایطی در گرافیک وجود دارد که فشار و گلوگاه کاری بر روی rasterization و پردازنده های شدر ازاد هستند که نمی شود برای محاسبات استفاده کرد و برعکس
در صورت حل این مشکل بازدهی شگفت انگیزی همانند صحبت های توسعه دهندگان DOOM شاهد خواهیم بود
استفاده از تکنیک شطرنجی سازی TSSAA در کنار محاسبات
برای حل این موضوع ACE که پردازنده مجزا برای دسته بندی وزمان بندی برای SIMD ها به صورت اضافه بر سازمان هستند طراحی شد .
مسئولیت انها این است که وقتی که بار پردازشی گرافیک و محاسبات به صورت مخلوط اجرا می شوند
کنترل اجرای گرافیک را نظارت داشته باشند و با تغییر اولویت استفاده از منابع مطمئن شد که حتما گرافیک در نرخ تازه سازی تصویر به انجام برسد .
برای اینکار حتما به API های نظر DX12 که ابزار های کنترل چند نخی دارند نیاز هست
تمام اینها در پتنت ان توضیح داده شده است [Only registered and activated users can see links. ]
مقایسه Vliw با GCN
[Only registered and activated users can see links. ]
همون طور که گفتم تمام شدر های vliw در هر واحد پردازشی ان 64 تا هست که همگی با هم اجرا می شوند
16 SIMD دارد که هرکدام 4 ALU در رائس اجرایی دارد و همه انها چهار تا یک دستور العمل Vliw یکسان دارند
برای اینکه هر دستورالعمل و SIMD پر شود باید 4 شدر پر گردنند
که هرکدام دستورالعمل گرافیکی مجرا دارند که هر رنگ نشان داده شده بیانگر یکی از چهار مختصات ماتریسی XYZW است
برای محاسبات باید به صورت دستورالعمل VLIW و XYZW مرتب شود تا یک SIMD را پرکند
معمولا تمام SIMD های واحد پردازشی برای محاسبات پر نمی شدند چون مرتب سازی به این روش محدودیت وابستگی و جنسیتی دارد
در GCN هر SIMT فقط یکی از مشخصات XYZW را برعهده می گیرد
از نظر گرافیک و دستور العمل مستقل محدود تر و کم ضرفیت تر است اما از نظر محاسبات محدودیت ضرفیتی دارد
یک ALU اصلی و بقیه 16 نخ دستورالعمل گرافیکی یکسان
اگر برای محاسبات استفاده نشود ضرفیت بالای GCN بی استفاده میماند و برای همین طراحی شده است
در یک زمان هر چهار SIMD بر روی یک wavefront محاسباتی مرتب شده کار نمی کنند
و برای اینکه تمام SIMD ها را مشغول نگه دارند باید حتما چهار wavefront داده شود
علت این امر در تصویر بعدی نشان داده شده است
[Only registered and activated users can see links. ]
در اینجا اجرای فقط یک wavefront را می بینید
دستورات محاسباتی احتیاج به وابسته دیگری دارند که قبل از دیگران باید اجرا شود و دستورات دیگر به دنبال ان بیایند
هر پردازش SIMD یک کلاک گفته میشود تمام wavefront ها چهار کلاک طول میکشند .
حتی اگر وابسته کمتر داشته باشند و در کلاک کمتر wavefront در کل CU اتمام شوند باز هم فقط برای همان wavefront بیکار میمانند تا کلاک چهارم برسد و دستور جدید بگیرند
تعریف چرخه در اینجا این است که SIMD ها کاملا از یک wavefront فارق شوند
که چهار کلاک طول میکشد و در این مدت 256 شدر بازنشسته می شوند
در مدتی که یک SIMD از دستورالعمل خودش از ان wavefront فارق شده است این معنی را نمیدهد که بیکار خواهد ماند
بلکه برای اینکه تمام انها حداکثر در هر کلاک فعال باشند باید چهار wavefront داده شود نه کمتر و نه بیشتر
Load Balance تکنیکی است که فقط صرفا بگویم که حافظه و رم مشترک بین چند واحد پردازشی CU است
و اگر بار اضافی بر روی یکی از انها بود میتواند به شریک بیکار خود تبادل کند تا سرعت و استفاده پذیری بالا برود
[Only registered and activated users can see links. ]
همانطور که گفتم در معماری شدر های متحد بخش های اختصاصی از خودشان فضای پردازشی ندارند بلکه فقط ادرس دهی را انجام میدهند
برای اینکه از پهنای باند و سیم کشی بهینه استفاده شود بخشهایی که مسیر داده یکسانی دارند در یک مکان کنار هم جمع شده اند
Vertex و Geometry و Tessellator با هم بخش جلویی و متصل به CPU را می سازند
تنها محدودیت بخش های اختصاصی ادرس دهی هست که فقط تعداد مشخصی از triangle را قبول میکنند
اما اینکه این دستور العمل فقط یک پیکسل باید یا 16 پیکسل فرقی نمیکند
SIMT های GCN چه از تمام حجم و ضرفیت ان استفاده شود و چه نشود از نظر زمان اجرایی هیچ فرقی ندارد
Rasterization که عمل قبل از تسکچر است فقط یک مثلث در هر چرخه قبول میکند و اگر تسلیشن و ... زیادی انجام شود
[Only registered and activated users can see links. ]
می بینیم که در هر کلاک فقط یک پیکسل نمایش داده میشود اما حالت بهینه ان این است که 16 پیکسل تصویر نمایش دهد
که گفتم این مشکلات به خاطر ساختار SIMT و طول و سرعت و کلاک ثابت شدر ها هست
Render Back End
[Only registered and activated users can see links. ]
یا Rop بخشی است که رابط بین شدر ها و تسکچر ها است و مستقیم به مموری متصل می باشد
و اطلاعات تصویری را برای ورود و خروج اماده میکند و تنها بخش اختصاصی است که دارای پردازنده خودش است
در واقع این بخش همان Z Buffer و حذف قسمت های اضافی و پنهان که پشت اشیاء قرار می گیرند می باشد
این بخش محدودیت فیزیکی در تعداد اتصالاتی دارد که از مموری به ان وصل میشود
فلسفه سابق AMD این بوده است که برای ایجاد رابط مموری با پهنای باند فیزیکی بالا تا حد ممکن ROP ها را ساده و تعداد بالا طراحی کند .
اما اخیرا متوجه شده است که اگر الگوریتم فشرده سازی رنگ برای تسکچر ها را در ان قرار دهد و ROP ها کم تعداد با رابط کم اما بزرگتر و پیشرفته تر بسازد .
پهنای باند مشابه اما با مصرف خیلی کمتری بدست خواهد اورد
به همین علت در معماری پولاریس تعداد انها کاهش و پیشرفته تر شده است
کش و ورودی دستور العمل برای شدر ها را افزایش داده تا کمی هم فضا اضافی برای دستورات ریز که سرعت یکسانی با دستورات بزرگ دارند داشته باشد .
که باعث شده کمی بازدهی و گلوگاه ورودی دایرکت ایکس 11 بهبود یابد
Discard accelerator و فراخوانی زودتر در شدر ها یعنی مثلثات ریز به جای عملیات تسلیشن و ... مستقیم به مرحله اخر در پردازش میروند .
البته جاشون که همیشه در شدرها ثابت هست
دایرکت ایکس 12 فقط میتواند چند نخی و چند هسته ای را به معماری GCN هدیه دهد
اما سرعت اجرای دستورات و مشکل دستورالعمل های ریز فقط با قابلیت SIMD با طول و کلاک های مختلف حل میشود
که مثلا یک اسکالر سرعت اجرای دو برابری و یا بیشتر نسبت به وکتور دارد که هرچه ضرفیت اجرایی بیشتر باشد سرعت کندتر است
توضیح تمام اینها و توانایی شگفت انگیزی و بهینگی در مصرف که میدهد در پتنت ان داده شده است [Only registered and activated users can see links. ]
[Only registered and activated users can see links. ]
با استفاده از مطالبی که از این تاپیک یاد گرفتیم و مطالعات بیشتر به سطح عمیق تری از بررسی معماری ها خواهیم رفت
معماری شدر های مشترک سری اولیه انویدیا 8800 و vliw از دو قسمت تشکیل شده اند
بخش شدر های چند منظوره و بخش triangle ها که برای گرافیک است و در vliw به ان setup engine می گفتند
همزمان با معرفی این دو قسمت بخش دیگری به نام ultra threaded dispatch معرفی شد که گذرگاه مرکزی برای جابجایی اطلاعات بین این دو قسمت است
معماری GCN از این لحاظ که هنوز هم این گذرگاه و بخش SETUP ENGINE را دارد مشابه vliw است
[Only registered and activated users can see links. ]
اما انویدیا با سری فرمی به سمت پخش کردن قسمت های اختصاصی کنترل مثلثات در هر قسمت Sm خودش رفت
از ultra threaded dispatch قبلی فقط چیزی با نام Giga thread engine باقی ماند
نمی تونم بگم که ایا یک بخش مرکزی با ادرس دهی بالا از چند قسمت جداگانه اما در مجموع با همان مقدار ادرس دهی ترانزیستور کمتری دارد یا اینکه مساوی هستند یا ...
همانند اینکه بگوییم ایا حجم فیزیکی دو alu 16 بیتی مساوی با یک alu 32 بیتی است یا خیر؟
از بالا تا پایین رده گرافیک های انویدیا معماری خیلی یکسان فقط با تفاوت در تعداد sm ها شده است
که ممکن است منظور از scalability در معماری NAVI در اینده amd نیز همین باشد
هدف انویدا از این تصمیم رسیدن به موازات و اجرای خارج از دستور برای sm های خودش است
[Only registered and activated users can see links. ]
Kernel به تمام داده های موازی و غیر خطی که به گرافیک داده می شوند گفته میشود
انویدیا به kernel هایی که بدون اجبار به صورت موازی در هر Sm ان اجرا می شود grid می گوید
اجرای خارج از دستور یعنی قبل از اینکه نوبت یا زمان اصلی برای ان برسد داده اجرا شود
که خطراتی همانند hazard را دارد که انویدیا در درایور خودش تعمیداتی برای ان اندیشده است
[Only registered and activated users can see links. ]
قبلا برنامه نویس خیلی با api های قبلی باید کلنجار می رفته است
و در پایان این درایور نویس بوده است که بهینه سازی ها را انجام میداده
و تمام شرکت های برنامه نویسی بزرگ ارتباط نزدیکی با شرکت سخت افزاری برای درایور داشته اند
و همیشه یک واسطه بوده است
اما هدفی که در مورد Amd خیلی ستایش میکنم ان است که ما می خواهیم با ارزان ترین و قدرمتند ترین سخت افزار
و بدون هیچ واسطه ای در هر جای جهان هر کسی خودش بتواند یک توسعه دهنده باشد
در این تصویر استفاده حداکثری از پهنای باند بین گرافیک و cpu توسط روش خارج از دستور نسبت به حالت خطی قبلی را می بینید
که خیلی وابسته به سرعت اجرایی شدر ها بود که Cpu را معطل نگه میداشته است
[Only registered and activated users can see links. ]
طبق گفته انویدیا در معماری مکسول این قابلیت ها بهبود یافته است
Improvements to control logic partitioning, workload balancing, clock-gating granularity, compiler-based scheduling
انویدیا برای مقابله با vliw در زمینه بازدهی گرافیک و پاسخ گویی سریع sfu و load/store را بکار برده است
یعنی simd های با طول کم که از طریق sfu برای محاسبات مطابق نیاز ضرفیت ان افزوده می شده است
اما gcn اینطور نیست
در مکسول انویدیا دسته بندی سخت افزاری را حذف کرده و وظیفه انرا برعهده کامپایلر قرار داده
که میتواند از طریق درایور انرا دستکاری کند . در این زمینه مشابه vliw شده است
شبکه هوش مصنوعی انویدیا این قابلیت را میدهد که محاسباتی که دستور العمل یکسانی دارند را در یک قسمت جمع اوری کند
برای بهره گیری بیشتر از ضرفیت simt ها
به جای اینکه ضرفیت بخش های خالی simt به خاطر اجرای یک دستورالعمل یکسان هدر برود
انویدیا kernel دیگری از جای دیگر که دستور العمل یکسانی دارند را در ان grid یا sm بارگزاری میکند
که بدون قابلیت موازات kernel و تحت پردازش خطی بودن قبلی غیر ممکن است .
اینکار انویدیا مشابه async از Amd است اما یک فرقی دارد و ان این است که فقط در مورد محاسبات استفاده میشود نه گرافیک
انویدیا هنوز هم جوابی برای این کمبود ندارد جز اینکه هنگامی که گرافیک تمام شد محاسبات را load balance کند
[Only registered and activated users can see links. ]
با توجه به قابلیت شبکه ای و جابه جایی اصلاعات بین sm ها و البته اسم گزاری instruction dispatch unit
ناخوداگاه یاد ultra-threaded dispatch می افتیم که باتوجه به عملکرد و شکل قرارگیری بین دو قسمت دیگر
انگار هنوز هم همان ساختمان گرافیکی قبلی پا برجاست اما فقط مینیاتوری و کوچک شده است
[Only registered and activated users can see links. ]
یک تصویر از توضیع یک مثلث بین sm های انوییدا و ترتیب مراحل اجرایی
[Only registered and activated users can see links. ]
در پایین ان هم ساختمان مموری و اولویت انهاست که طبق داده ای که دارند سرعت متفاوتی خواهند داشت
مراحل گردش نخ اطلاعات بین مموری و شدر که طبق روش معماری شدر های متحد است
[Only registered and activated users can see links. ]
یک تصویر از عملیات z buffer که همانند اسم ان مربوط به بعد z یا عمق است
[Only registered and activated users can see links. ]
انویدیا در بخش rasterization خودش می تواند Z Cull را انجام دهد
یعنی قبل از عمل پیکسل گزاری و در مرحله شطرنجی سازی بخش rop و حذف قسمت پنهان فعال میشود
انویدیا همیشه از این قابلیت بهره مند بوده است اما برای ان کار احتیاج است که خود برنامه نویس از ان با کدنویسی استفاده ببرد
اما جدیدا مشخص شده است که انویدیا در مکسول بدون نیاز به کد نویسی و بدون اینکه حتی کسی بفهمد
به صورت جزئی این روش را از طریق کامپایلر انجام میداده است
اما بهینگی مکسول به خیلی علت های دیگر نیز مربوط می شود این کار فقط بخش کوچکی از ان میتواند باشد
شطرنجی سازی دو حالت دارد یکی immediate mode یا حالت سریع که در گرافیک های pc استفاده میشود
و دیگری delay mode یا حالت تاخیر که در موبایل است .
در موبایل چون صفحه نمایش کوچک و پیکسل ها کم هستند خیلی مهم نیست که کمی تاخیر ایجاد شود
اما در pc امکان ندارد که تمام کل صفحه یکباره نمایش داده شود .
و مثلث هایی از بالای صفحه نمایش که پردازش شده اند معطل شوند تا اخرین مثلث در پایین صفحه نمایش پردازش شود تا همگی باهم خروجی دهند
روش انویدیا ترکیب این دو است یعنی نه حالت سریع و نه حالت تاخیر است بلکه تاخیری به صورت جزئی است
روش انویدیا این است که تنها اولین داده ای که برون میاید را در حالت تاخیر شطرنجی سازی می کند
اما اخرین داده گرافیکی را به روش سریع پردازش و شطرنجی سازی میکند. یکجورایی همزمانی می شود در بخش محدودی از تصویر
__________________________________
تمام پردازنده ها و کلا هرچیزی که محاسبات انجام میدهد مثل risc و cisc و vliw و simt همگی از fetch , decode ,alu
تشکیل شده اند که ممکن است به ان front end بگویند
تفاوت اینها نه در ساختمان که خیلی مشابه اند بلکه در نوع دستور العمل و شیوه اجرایی داده ان است
هدف گرافیک موازات است اما هدف cpu پردازش سریع خطی پشت سر هم
گرافیک و cpu به هیچ وجه مشابه هم نیستند و تکنیک هایی که در گرافیک استفاده میشود اصلا در cpu وجود ندارد
همانطور که قبلا گفتم برخلاف sisd یا اسکالر
این شیوه اجرای داده به صورت موازی است که نیاز به دسته بندی و شبکه بندی دارد
و اصلا یک گرافیک خوب با دسته بندی عالی به هر چیزی حتی کامپایلر و هوش مصنوعی بستگی دارد به جز cpu بودن!!!
اما وقتی که میگویند گرافیک ها به cpu نزدیک تر شده اند به خاطر این است که شیوه دستور العمل ان به simt تبدیل شده است
یا به عبارتی از وکتور به اسکالر تبدیل شده . Cpu یک اسکالر تکی است
اما simt توانایی همان اسکالر را دارد اما میتواند با همان دستور العمل نخ های مشابه در کنار خودش داشته باشد
یک simt یک نخی هیچ چیزی از یک Cpu که risc باشد کم ندارد
و در هرکلاک دستور جدید و حالت های جدید درست مثل sisd و اسکالر هست
Simt موازات را به اسکالر هدیه داده است اما نسبت به cpu سرعت کمتری دارد
گرافیک های simt در چهار کلاک نخ هایی را با چهار دستور العمل متفاوت میتوانند اجرا کنند xyzw در مورد گرافیک
یا اینکه برای branch یا شاخه و حالت های مختلف می توانند استفاده شوند
و در شاخه ها از تمام ضرفیت simt استفاده نمی شود و تاثیر منفی دارد
[Only registered and activated users can see links. ]
انویدیا نیز همانند Amd شدر های ان چهار کلاکی هستند . در تصویر به مسئله قفل بودن نخ های Simt اشاره شده
[Only registered and activated users can see links. ]
برای اینکه شاخه ها به شیوه سریع تر و تمیزتری اجرا شوند
mask که نوعی دسته بندی دقیق است ابداء شده که با کد های باینری نخ های فعال و غیر فعال را برای شاخه ها نشان میدهد
این تصویری از front end انویدیا که هر Sm و cu دارای ان هست . هرجا Alu وجود داشت اینها نیز وجود دارد
به خاطر یکسان بودن یکی از مختصات هست که داده ها دورن کش گم نمی شوند
[Only registered and activated users can see links. ]
برای ادامه مطلب یک بار دیگر با نقشه فنی معماری های گرافیک ها که در صفحه اول این تاپیک پست کردم نگاه بیندازید
[Only registered and activated users can see links. ]
البته مطالبی که در تاپیک پایه های cpu گفتم نیز بیاد داشته باشد
مکسول انویدیا sm ان خیلی مشابه کپلر است اما طبق گفته انویدیا دلیل دو بخشی بودن ان ایجاد انعطاف بیشتر است
فرق قابل توجه بین مکسول و کپلر در ان است که ریجستر تکسچر که اطلاعات تصاویر در ان ذخیره میشود و قبلا به ان TMU می گفتند
الان به جای اینکه همه بخش ها دسترسی مساوی داشته باشند به دو قسمت دسترسی تقسیم شده
اگر اطلاعاتی در یکی باشد بخش دیگری نمی تواند انرا داشته باشد البته مزیت ان این است که طبق ادعای انعطاف انویدیا
می توانند غیر وابسته و مستقل باشند و اگر مثل کپلر میخواهد باشند کافی است که در هر دو اطلاعات یکسانی پر شود
می بینیم که فقط یک دسترسی ساده به ریجستر می تواند تایین کننده یک بخشی یا دو بخشی بودن پردازنده ای شود
معماری GCN که گفتم مشابه بولدوزر است و واقعا هم اینطور است یک کش مشترک بین تمام simd ها و یک decode مشترک
بیاد دارم که سالها پیش در ترجمه خبری گفته بودم که GCN مشابه Cpu است
به این خاطر که اسلات های تسکچر که نوعی ریجستری هستند جایشان را به کش سریع تر مشابه cpu داده اند
و به جای اینکه شدر ها اطلاعات را از ان اسلات ها بگیرند از این کش دریافت میکنند که در برنامه نویسی کلاسیک تاثیر منفی بر ان دارد .
همان طور که می بینید در تسکچر معماری انویدیا و GCN متفاوت هستند
در ابتدای همین پست هم تصویری از ساختار اولویت مموری Sm گذاشته ام
در هر CU از GCN یک اسکار در کنار چهار SIMD وجود دارد که گفتم برای کارهای خاص است
و اسمی ازش برده نمی شود
همه چیز پولاریس و ادعایی که Amd از انقلابی بودن ان میکند مربوط به همین اسکالر می شود
ظاهرا amd به پتانسیل این اسکالر پی برده است و این قسمت را همانند یک cpu مستقل در کنار simd ها تبدیل کرده است
و از حالت کم استفاده قبلی به یک قدرت شاخص تبدیل شده است
فرق ان با HSA این است که به جای اینکه تنها در حافظه با گرافیک ارتباط داشته باشد در کنار Simd ها در هر CU خواهد بود
سابقا همه چیز ان با SIMD در معماری قبلی یکی بود اما الان با اضافه شدن یک DECODE مستقل عملیات های خاص را میتواند انجام دهد
طبق اطلاعات و توضیحات کاملی که در این لینک امده است که پیشنهاد میکنم حتما مطالعه کنید
[Only registered and activated users can see links. ]
با وجود اینکه با اسکالر سازی و SIMT شدن خیلی از مشکلات محاسبات حل شده است اما هنوز هم مسائلی چون
شاخه یا Branch و وابسته ها وجود دارد که در صورت استفاده از SIMD برای ان سرعت پایین
و مصرف بالا و هدر رفتن یا خالی ماندن بخش های پردازشی می شود
که گاهی اوقات برای ایجاد داده مجبور به رفتن به کلاک های بیشتر میشوند و SIMD های خالی تر
بعضی اوقات تبدیل کدنویسی به وکتور برای تولید ان داده ها بهینه تر خواهد بود
تاکنون از اسکالر و کلاک در گرافیک صحبت شده بود اما در محاسبات نیز خیلی مفید است
این اسکالر سریع و استفاده از ان در کد نویسی این قابلیت ها را میدهد
اول. Prefetch که از اسم ان مشخص هست میتواند همانند یک بخش پردازشی قبل از SIMD ها عمل کند
و دسته بندی اطلاعات را مناسب SIMD ها اصلاح نماید و نرخ گم شدن کش نیز کاهش پیدا میکند
این روش با SIMD های قبلی هیچ مزیتی ندارد جز اینکه فقط کلاک و بخش های پردازشی بی استفاده را زیاد میکند
اما اسکالر سریع اینطور نیست . مثل مراحل fetch و decode و .... در Cpu
دوم .حذف و کاهش شاخه بندی ها با استفاده از سپردن پردازش ان به اسکالر برای یافتن مسیر ها
سوم. سپردن پردازش های تک نخی به این اسکالر و انجام عملیات های مستقل متفاوت از بقیه SIMD ها
همچون رد کردن مرحله تسلیشن برای ان که در معماری قبلی غیر ممکن بود
طبق مطلب در ازمایش گاه amd بر روی معماری کپلر ازمایش هایی برای اسکالر انجام شده است
که نشان میدهد کپلر همانند GCN های سابق از توانایی اسکالر مخصوص بی بهره بوده است و مشابه هم اند
با این حساب به حرف راجا کدوری می رسیم که گفته بود از نظر زمانبندی معماری 2 تا 3 سال از انویدیا عقب هستند
همچنین در مطلب نمودار هایی از بهبود بازدهی با استفاده از کدنویسی برای اسکالر موجود است
اسکلت اصلی پولاریس با GCN های سابق خیلی مشابه است
و با وجود این مطلب به معماری Vega امیدوار شدم .
مخصوصا اگر کنترل شاخه های ان fine grained و دقیق تر و بهینه تر شده باشد
فکر می کنم تا چندین سال یا برای همیشه چیز جدیدی برای توضیح در این تاپیک یا جای دیگر وجود نداشته باشد همچنین برای جهان
شما چی فکر میکند؟
این تصاویر برای جایزه [Only registered and activated users can see links. ] [Only registered and activated users can see links. ] [Only registered and activated users can see links. ] [Only registered and activated users can see links. ]