قابل توجه کاربران گرامی: تاپیک معرفی اعضاء برای آشنایی بیشتر با یکدیگر (حتما شرکت کنید) لینک
صفحه 2 از 3 نخستنخست 123 آخرینآخرین
نمایش نتایج: از 11 به 20 از 21
Like Tree31Likes

موضوع: بررسی معماری گرافیک ها از نگاهی دیگر

  1. #1
    Active Member
    asdaf آواتار ها
    تاریخ عضویت
    Oct 2013
    محل سکونت
    qom
    نام واقعی
    Mohammad.Ali
    نوشته ها
    225
    تشکر شده 1,661 بار در 231 پست
    asdaf آنلاین نیست.

    بررسی معماری گرافیک ها از نگاهی دیگر

    با هر چه عشق نام تو را ميتوان نوشت


    بعد از تحقيقاتم تصميم بر ان گرفتم که نکات و تفاوت هاي اصلي معماری گرافيک ها را توضيح دهم


    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


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply

  2. 17 کاربر بابت این ارسال مفید از asdaf تشکر کرده اند:

    a.aryaiee (4th December 2016),amirsss (12th October 2016),First.Last (8th October 2016),golabettruter (14th April 2016),magiteq (14th April 2016),mahdi8063 (14th April 2016),moc (14th April 2016),mohammad72 (1st December 2016),msover (14th April 2016),Olesius (21st April 2016),Optimus Prime (14th April 2016),overclock990 (14th April 2016),rabbit94 (12th October 2016),Reza Y (14th April 2016),SaeedSYS (14th April 2016),SYNCMASTER (14th April 2016),TERRORIST (14th April 2016)



  3. #11
    OCH Member
    SYNCMASTER آواتار ها
    تاریخ عضویت
    Dec 2012
    محل سکونت
    مشهد
    نوشته ها
    275
    تشکر شده 1,015 بار در 255 پست
    SYNCMASTER آنلاین نیست.
    الان وباتوجه به معماری ریزپردازنده های پلاریس و پاسکال بههترین راه حل برای گیمرهاکدوم خواهدبود ودراصل بایدبگیم ایا amdباپلاریس میتونه اب رفته رو به جوی برگردونه یاهمچنان دنباله روخواهدبود؟
    پاسکال یاپلاریس؟کدومیک؟


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply

  4. 3 کاربر بابت این ارسال مفید از SYNCMASTER تشکر کرده اند:

    First.Last (8th October 2016),golabettruter (18th April 2016),Olesius (21st April 2016)



  5. #12
    Network Administrator
    ErfanDL آواتار ها
    تاریخ عضویت
    Aug 2012
    محل سکونت
    MikroTik RouterOS
    نام واقعی
    عرفان
    نوشته ها
    3,034
    تشکر شده 17,392 بار در 2,993 پست
    ErfanDL آنلاین نیست.
    نقل قول نوشته اصلی توسط SYNCMASTER نمایش پست ها
    الان وباتوجه به معماری ریزپردازنده های پلاریس و پاسکال بههترین راه حل برای گیمرهاکدوم خواهدبود ودراصل بایدبگیم ایا amdباپلاریس میتونه اب رفته رو به جوی برگردونه یاهمچنان دنباله روخواهدبود؟
    پاسکال یاپلاریس؟کدومیک؟
    مشخصه سوال نداره پاسکال معظم


    Motherboard : ASUS P8P67 WS Revolution - DUAL BIOS MOD Processor : Core i5 3570 @ 4.0 GHz - 1.1 V - 45° C
    Main Memory : G.Skill TridentX 8GB (2x4GB) @ 2400 MHz Graphics Card : ASUS ROG STRIX 1080Ti 11G Gaming
    Cooling : Tuniq Tower 120 Extreme V2 Power Supply : GREEN GP885-B


  6. 4 کاربر بابت این ارسال مفید از ErfanDL تشکر کرده اند:

    First.Last (8th October 2016),golabettruter (19th April 2016),Olesius (21st April 2016),VFSDF (9th May 2016)



  7. #13
    Active Member
    golabettruter آواتار ها
    تاریخ عضویت
    Mar 2013
    سن
    39
    نوشته ها
    348
    تشکر شده 1,245 بار در 299 پست
    golabettruter آنلاین نیست.
    نقل قول نوشته اصلی توسط ErfanDL نمایش پست ها
    مشخصه سوال نداره پاسکال معظم
    درود عرفان جان
    تا جایی که من متوجه شدم و محمد علی جان توضیحات مفیدی رو ارائه دادند معماری پاسکال جدید نیست و بیشتر تمرکزش رو بهبود و نحوه عملکرد SM هاش بوده و تقریبا میشه گفت صافی معماری مکسول هست خود انودیا هم گفته که بخشهایی که به معماری اضافه شده صرفا برای بالا بردن قدرت بخش محاسباتی هسته هست وکاربرد اصلیش هم صنعتیه خوب این رو همه میدونن که در گیمینگ کاربردی نداره تازه همون بخش به درد نخور Async Comput هم که کاربردش در dx 12 حیاتیه هنوز هم در پاسکال مشاهده نشده
    ولی در اون طرف AMD هنوز بلوک دیاگرامی که مثل دیاگرام پاسکال بشه تشریحش کرد رو بیرون نداده و هنوز معماریش رو ندیدیم چی هست
    ولی یه نکته ای هست اونم اینه که پولاریس در فرایند ساختش یک گام از پاسکال جلوتره استفاده از فرایند 14nm FinFET به جای 16nm FinFET پاسکال و این خودش یک امتیازه برای AMD


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply

  8. 5 کاربر بابت این ارسال مفید از golabettruter تشکر کرده اند:

    First.Last (8th October 2016),mamad67 (20th April 2016),moc (19th April 2016),Olesius (21st April 2016),Reza Y (20th April 2016)



  9. #14
    Active Member
    asdaf آواتار ها
    تاریخ عضویت
    Oct 2013
    محل سکونت
    qom
    نام واقعی
    Mohammad.Ali
    نوشته ها
    225
    تشکر شده 1,661 بار در 231 پست
    asdaf آنلاین نیست.
    برای فهم خیلی از مسائل نیاز به پیش زمینه هایی هست که هیچ کجا انها را به ترتیب و از پایه توضیح نمی دهند
    و بدون انها نمی توان چیزی را فهمید
    چندین وقت بود که مطالب پراکنده و توضیحات را مطالعه می کردم که سرانجام توانستم با کنار هم قرار دادن همه انها به یک قائده برسم
    مطالبی که در این تاپیک گفته شد یکی از بزرگترین و اولین قدم برای فهم و درک عملکرد ها و توضیحات تخصصی بود
    البته کسانی هستند که چون یک عمر اشتباه فهمیدن و گفتن نمی خواهند اینها را قبول کنند
    و مثلا با اصول خودشان چه چیزی را میخواهند توضیح دهند یا به کجا برسند؟؟؟
    توصیه من به خواننده گان این است که مطالب خارج از این تاپیک را از ذهن خودشان خارج کنند
    و می خواهیم با هم از مبتدی به پیشرفته به صورت اصلاح شده حرکت کنیم

    [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. ]


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply

  10. 9 کاربر بابت این ارسال مفید از asdaf تشکر کرده اند:

    a.aryaiee (8th October 2016),First.Last (8th October 2016),golabettruter (8th October 2016),magiteq (8th October 2016),mahdi8063 (8th October 2016),mohammad72 (1st December 2016),Olesius (8th October 2016),Reza Y (8th October 2016),TERRORIST (8th October 2016)



  11. #15
    OCH Member
    a.aryaiee آواتار ها
    تاریخ عضویت
    Aug 2016
    سن
    36
    نوشته ها
    89
    تشکر شده 380 بار در 94 پست
    a.aryaiee آنلاین نیست.
    محمد علی جان، عالی بود من فقط توصیه میکنم لطفا حتما ادامه بده این راه رو به شدت استفاده کردم و باز هم برمیگردم برای خوندن و تمرکز کافی


    Motherboard : Not Specified Processor : Not Specified
    Main Memory : Not Specified Graphics Card : Not Specified
    Cooling : Not Specified Power Supply : Not Specified

  12. 5 کاربر بابت این ارسال مفید از a.aryaiee تشکر کرده اند:

    asdaf (24th October 2016),First.Last (8th October 2016),golabettruter (8th October 2016),magiteq (8th October 2016),Olesius (8th October 2016)



  13. #16
    Active Member
    golabettruter آواتار ها
    تاریخ عضویت
    Mar 2013
    سن
    39
    نوشته ها
    348
    تشکر شده 1,245 بار در 299 پست
    golabettruter آنلاین نیست.
    درود
    محمد علی جان بسیار مفید و به جا بود چند وقت بود مطلب به این خوبی نخونده بودم دمت گرم خداوکیلی شارژ شدم


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply

  14. 5 کاربر بابت این ارسال مفید از golabettruter تشکر کرده اند:

    a.aryaiee (8th October 2016),asdaf (24th October 2016),First.Last (8th October 2016),magiteq (8th October 2016),Olesius (8th October 2016)



  15. #17
    OCH Member

    تاریخ عضویت
    Sep 2012
    سن
    36
    نوشته ها
    66
    تشکر شده 188 بار در 50 پست
    First.Last آنلاین نیست.
    آقا عالی بود . مطالب فوق سنگین


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply
    t.A.T.u سابق

  16. 5 کاربر بابت این ارسال مفید از First.Last تشکر کرده اند:

    a.aryaiee (8th October 2016),asdaf (24th October 2016),golabettruter (8th October 2016),magiteq (8th October 2016),Olesius (8th October 2016)



  17. #18
    Moderator
    magiteq آواتار ها
    تاریخ عضویت
    Sep 2012
    محل سکونت
    تهران
    نام واقعی
    عطا
    سن
    35
    نوشته ها
    3,185
    تشکر شده 16,693 بار در 3,031 پست
    magiteq آنلاین نیست.
    عالی بود


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply




  18. 4 کاربر بابت این ارسال مفید از magiteq تشکر کرده اند:

    asdaf (24th October 2016),First.Last (9th October 2016),golabettruter (9th October 2016),Olesius (10th October 2016)



  19. #19
    Active Member
    asdaf آواتار ها
    تاریخ عضویت
    Oct 2013
    محل سکونت
    qom
    نام واقعی
    Mohammad.Ali
    نوشته ها
    225
    تشکر شده 1,661 بار در 231 پست
    asdaf آنلاین نیست.
    [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. ]


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply

  20. 8 کاربر بابت این ارسال مفید از asdaf تشکر کرده اند:

    a.aryaiee (4th December 2016),golabettruter (28th November 2016),magiteq (26th November 2016),mohammad72 (1st December 2016),msover (26th November 2016),Olesius (26th November 2016),SASANOC (28th November 2016),TERRORIST (26th November 2016)



  21. #20
    Moderator
    magiteq آواتار ها
    تاریخ عضویت
    Sep 2012
    محل سکونت
    تهران
    نام واقعی
    عطا
    سن
    35
    نوشته ها
    3,185
    تشکر شده 16,693 بار در 3,031 پست
    magiteq آنلاین نیست.
    عالی بود. تشکر


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply




  22. 3 کاربر بابت این ارسال مفید از magiteq تشکر کرده اند:

    asdaf (27th November 2016),mohammad72 (1st December 2016),Olesius (28th November 2016)



صفحه 2 از 3 نخستنخست 123 آخرینآخرین

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •