قابل توجه کاربران گرامی: تاپیک معرفی اعضاء برای آشنایی بیشتر با یکدیگر (حتما شرکت کنید) لینک
صفحه 3 از 3 نخستنخست 123
نمایش نتایج: از 21 به 21 از 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. #21
    Active Member
    golabettruter آواتار ها
    تاریخ عضویت
    Mar 2013
    سن
    39
    نوشته ها
    348
    تشکر شده 1,245 بار در 299 پست
    golabettruter آنلاین نیست.
    درود محمد علی جان بسیار مفید بود
    منتها اگر امکانش هست نحوه درایور نویسی 2 شرکت و تاثیر کارایی اونها بر بازدهی معماریهاشون رو اگه ممکنه یه مقاله هم راجع بهش بنویسید
    باتشکر


    Motherboard Processor
    Main Memory Graphics Card
    Cooling Power Supply

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

    asdaf (28th November 2016),mohammad72 (1st December 2016),Olesius (28th November 2016),Optimus Prime (29th November 2016)



صفحه 3 از 3 نخستنخست 123

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

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

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