تبلیغات :
خرید شارژ ایرانسل
دستگاه جوجه کشی حرفه ای
تبلت لنوو
دستگاه جوجه کشی
[ سفارش آگهی متنی ]



+ جواب دادن به اين بحث
صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 20

نام تاپيک: [اختصاصی P30World] توضیح مراحل پردازش گرافیکی از شروع تا پایان

  1. #1
    حـــــرفـه ای Erfan.'s Avatar
    تاريخ عضويت
    Jun 2010
    محل سكونت
    Solar System
    پست ها
    5,351

    پيش فرض [اختصاصی P30World] توضیح مراحل پردازش گرافیکی از شروع تا پایان

    درود فراوان خدمت دوستان.


    جمع کردن یک سیستم به طور منطقی با انتخاب قطعات مختلف و تحقیق در اینترنت برای آگاهی از کیفیت و کارایی اون ها شروع میشه و برای هر سیستم با توجه به کاربرد کاربر باید قطعات متفاوت انتخاب بشن، و هر کاربردی نیازمند یک کانفیگ مجزا از کاربرد دیگه هست.
    این مقاله برای اطلاع یافتن از نحوه تاثیر گذاری هر قطعه در کارایی سیستم نوشته شده و در طول مقاله به مسیر پردازش گرافیکی توسط قطعات مختلف، انواع Bottleneck (گلوگاه) های موجود در مسیر و موارد با اهمیت زیادی که در کارایی یک کامپیوتر تاثیر میگذارند خواهیم پرداخت.
    به دلیل کامل بودن پردازش بازی و کاربردی بودن آن، در طول تاپیک به کار ها و پردازش هایی که در طول اجرای یک بازی انجام میشود میپردازیم.




    یکی از مهم ترین عواملی که در بنچمارک ها و به طور کلی، پرفرمنس سیستم تاثیر میزاره بحث Bottleneck هست که لازم دونستم قبل از این که بحث رو شروع کنم توضیحی کلی از "گلوگاه" ارائه کنم:

    Bottleneck یا گلوگاه چیست؟
    یک ساختمان که در حال ساخت هست رو در نظر بگیرید. برای ساخت ساختمان به منابع و عوامل متعددی از جمله مصالح مورد نیاز، کارگران، و... نیاز است.
    اگه ما تعداد معدودی کارگر داشته باشیم(برای مثال 10 کارگر) که با مصالحی که در اختیار دارن شدیدا مشغول انجام کار هستند، هر چه قدر مصالح رو افزایش بدهیم پیشرفتی در کار مشاهده نمیشود، چون میزان مصالح فراتر از توان کاری کارگران است. در صورتی که اگه مقدار کمی مصالح و تعدادی کارگر به مجموعه اضافه کنیم شاهد افزایش سرعت در انجام کار هستیم.

    در این جا تعداد و قدرت کارگران Bottleneck یا گلوگاه مجموعه مورد نظر است.


    در بنچمارک گیری و به طور کلی، پرفرمنس یک کامپیوتر نیز بحث Bottleneck دقیقا به همین صورت وجود دارد که در ادامه به آن پرداخته خواهد شد.




    توضیحی کلی و مختصر از نحوه پردازش یک فریم

    هنگامی که یک بازی رو اجرا میکنیم، داده ها و اطلاعات از هارد درایور سیستم لود میشوند و به RAM منتقل میشوند، سپس اطلاعاتی که CPU به آنها نیاز دارد فراخوانده و پردازش میشوند. سپس داده ها به کارت گرافیک فرستاده شده، پردازش های لازم بر روی آنها صورت گرفته و در نهایت تصویر مورد نظر از طریق پورت تصویر کارت گرافیک به نمایشگر منتقل و نمایش داده میشود.


    حال به طور جزیی تر به تک تک این مراحل و گلوگاه های موجود در مسیر میپردازم:


    Storage

    هارد درایور اگر از نوع مکانیکی و مدل های کم سرعت باشد میتواند در پردازش وقفه ایجاد کند، معمولا هنگام لود شدن مناطق جدید در بازی ها احساس تیک و افت فریم شدید کرده اید که این ناشی از وقفه ایست که انتقال اطلاعات از هارد به رم به وجود می‌آید.
    در صورت استفاده از SSD های پرسرعت، این مشکلات کم تر به وجود می‌آیند و همچنین سرعت Loading بازی ها و نرم افزار ها به طرز قابل توجهی کاهش پیدا میکند.

    RAM

    رم سیستم نیز اگر دارای حجم کافی نباشد میتواند مشکلی مشابه را به وجود بیاورد و باعث ایجاد تیک و کند شدن سیستم گردد، البته رم های با سرعت بالاتر(Bus و Timing) میتونن سرعت انتقال داده ها رو افزایش بدن و در فریم ریت اثر مثبت ایجاد کنند.
    در سیستم های بسیار گرون قیمت بهتره از رم با Bus و Timing مناسب استفاده بشه تا فریم ریت بالاتری از سیستم دریافت بشود. البته تاثیر این مورد بسته به گیم و نرم افزار مورد نظر میتواند کم یا زیاد باشد، همچنین پلتفرم سیستم نیز اهمیت زیادی دارد چون نحوه اثر گذاری این موارد وابستگی بسیار زیادی به CPU و Memory Controller آن دارد.






    همان طور که مشاهده میکنید اورکلاک CPU نیز در تاثیر رم بر فریم ریت تاثیر میگذارد.




    CPU Bottleneck و به طور دقیق تر، شرایط Compute Bound


    هنگامی که پردازنده در حالت نهایت پتانسیل خود مشغول به کار است و به عبارتی، پردازش های بعدی نمیتوانند بلافاصله پردازش شوند (به دلایل مختلف اعم از مشغول بودن تمامی واحد ها، فرمان های I/O و...)، در این حالت وضعیت Compute Bound صورت گرفته و CPU کامپیوتر نوعی Bottleneck ایجاد کرده است.

    این وضعیت معمولا در گیم هایی پیش میاد که نیازمند Allocation شدید Data ها به GPU برای پردازش هستند یا گیم هایی که نیازمند پردازش های خاص در خود CPU به مقدار فراوان هستند مثل سیستم های هوش مصنوعی پیچیده یا پردازش های فیزیکی.

    به طور دقیق تر، این وضعیت هنگامی پیش میاید که CPU نتواند به مقدار کافی GPU رو تغذیه کند که در این حالت بخشی از توان GPU نیز به هدر میرود. نوع تنظیمات گرافیکی بازی ها هم در این مورد بسیار مهم است برای مثال در رزولوشن و تنظیمات پایین این اتفاق بیشتر می‌افتد زیرا بار پردازشی GPU کمتر شده، میتواند تعداد فریم بسیار بیشتری تولید کند وبه عبارتی GPU به دیتا های بیشتری از CPU نیاز دارد زیرا GPU عامل محدود کننده نیست و تا حد توان خودش فریم تولید میکند.

    اما در رزولوشن و تنظیمات بالا معمولا عامل محدود کننده GPU هست زیرا پردازش های گرافیکی سنگین تر شده و تعداد فریم ها هم کمتر میشوند که به این معناست که تخصیص داده ها نسبت به تعداد فریم های خیلی زیاد، کمتر میشود. البته در این نوع تنظیمات بعضی پردازش های اضافه ممکن است به گردن CPU افزوده شوند و حتی در برخی گیم ها در این تنظیمات نیز CPU عامل محدود کننده باشد، ولی صورت کلی مسئله به این صورت است.

    به این بنچمارک از بازی Dirt 3 دقت کنید که در شرایط Compute Bound گرفته شده:


    و همان بنچمارک در شرایط GPU Bound:



    [Data Allocation یا "تخصیص داده ها" به چه معنی است؟]

    GPU باید به وسیله دستوراتی که CPU براش ترجمه کرده تغذیه بشه، به فرستادن داده ها دستورالعمل های ترجمه شده توسط CPU به GPU تخصیص داده ها یا Data Allocation گفته میشود.

    دستورات مورد نظر توسط PCI-Express Controller که معمولا داخل خود CPU قرار دارد به سمت GPU فرستاده میشوند.





    PCI-Express Bottleneck
    این درگاه میتواند برای داده های در حال گذر گلوگاه ایجاد کند، PCI-Express با توجه به ورژن و تعداد Lane اون میتونه پهنای باند متفاوتی داشته باشد که در تصویر مشاهده میکنید:




    توجهتون رو به بنچمارک های سایت Anandtech که در رزولوشن 1680X1050 و با کارت AMD Radeon HD7970 گرفته شدن جلب میکنم:





    همون طور که مشاهده میکنید برای اکثر گیم ها اسلات PCI-Express 3.0 4X یا معادل اون PCI-Express 2.0 8X برای اکثر گیم ها کفایت میکنه. ولی برای رکورد های اورکلاک یا کاربرد های محاسباتی کارت گرافیک قطعا این پهنای باند Bottleneck (هر چند اندک) ایجاد میکنه و در اون شرایط بهتره حداکثر پهنای باند برای کارت گرافیک فراهم بشود.





    Video RAM
    بعد از اسلات به کارت گرافیک میرسیم، اطلاعات معمولا پس از ترد بندی GPU(که در ادامه به آن میپردازیم) و قبل از نمایش داده شدن بر روی Display در حافظه‌ای به اسم Video RAM ذخیره میشوند. تفاوت اساسی VRAM با DRAM های معمول، Dual Port بودن اون هست که باعث میشود همزمان بتواند با 2 Device ارتباط برقرار کند و عمل Read/Write رو انجام بدهد بدون این که تداخلی به وجود بیاید(چیزی که در کارت گرافیک و رابطه بین GPU/VRAM بسیار نیاز هست)



    VRAM کارت گرافیک ها با توجه به نیاز GPU اون ها تعبیه میشود، و برای مثال یک کارت Low End نیازی به VRAM با حجم 2GB که کارت HD6970 از همین مقدار VRAM استفاده میکند، ندارد! البته برخی تولید کنندگان کارت های ارزان قیمتی مثل HD5450 که جزو ضعیف ترین کارت های این نسل حساب میشوند را با حجم مموری بالا عرضه میکنند و به دلیل این که معمولا در بازار و به دلیل ناآگاهی خریداران، ملاک اصلی قدرت VGA رو حجم رم اون فرض میکنند(!)، مصرف کننده های بی اطلاع به این وسیله دچار گمراهی فراوان میشوند.

    اصولا VRAM به هیچ عنوان نمیتونه ملاک قدرت یک کارت گرافیک باشه، به همان دلیل که هیچ گاه قدرت و سرعت یک ماشین رو با حجم باک بنزین اون نمیسنجند!


    VRAM یک کارت میتونه از انواع مختلف DDR3,GDDR4,GDDR5,XDR2 و ... باشه که سرعت، پهنای باند، مصرف برق، نوع سیگنال و ... اون ها با هم متفاوت است.



    در چه زمانی VRAM به Bottleneck تبدیل میشود؟

    به طور کلی در گیم ها عناصری که بیشترین حجم VRAM را استفاده میکنند Texture ها، رزولوشن بالا(به علت ذخیره فریم ها در این رزولوشن)، Anti Aliasing (مخصوصا حالت هایی که از روش Up-Scale,Down-Scale استفاده میکنند) و برخی عوامل دیگه هستند، و این به آن معناست که در گیم هایی که از این قابلیت های به وفور استفاده میکنند نیاز به VRAM بالاتر هست.





    Memory Interface
    اطلاعات برای رسیدن به منابع GPU باید از گذرگاه(هایی) در GPU به نام Memory Interface یا Memory Controller عبور کنند.

    یک GPU دارای تعدادی گذرگاه هست و هر گذرگاه دارای عرض مشخصی است که از جمع اون ها، عرض کلی یا Bus Width میرسیم.

    برای مثال کارت GTX 580 که از GPU GF110 بهره میبرد دارای 6 عدد Memory Controller 64 بیتی هست که جمعا دارای 384bit Bus Width میشود.

    اما پهنای باند مموری یک کارت که از مموری DDR (با هر ورژنی غیر از GDDR5) استفاده میکند به این صورت محاسبه میشود:

    فرکانس مموری پایه*2(به خاطر Double Data Rate بودن)*Bus Width تقسیم بر 8(تبدیل بیت به بایت)

    در GDDR5 :

    فرکانس مموری پایه*2(به خاطر DDR بودن)*2(به خاطر مموری GDDR5 (توضیح در [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] داده شده))*Bus Width تقسیم بر 8(تبدیل بیت به بایت)




    صورت کلی پردازش در GPU
    این قسمت ارتباط چندانی به موضوع بحث تاپیک ندارد ولی لازم دونستم که این موضوعات رو مطرح کنم، چون پیش زمینه بحث های تخصصی تر در این زمینه ها هستند.





    این تصویر صورت کلی پردازش گرافیکی یک گیم را در GPU نشان میدهد، ابتدا مثلث های 3 بعدی وارد GPU شده، پس از اتمام مراحل Geometry Processing به صورت 2 بعدی و سپس به صورت پیکسل های در کنار هم قرار گرفته درمی‌آیند.



    پردازش گرافیکی در GPU از دید فنی

    قسمتی از GPU که مستقیما داده ها رو از CPU دریافت میکند Thread Scheduler نام دارد، در Thread Scheduler (که در GPU های AMD به نام Command Processor و در GPU های Nvidia به نام Giga Thread Engine شناخته میشود) ترد هایی که از CPU به GPU رسیده دوباره و از نو زمان بندی میشوند و به سوی Execution Unit ها(یا در برخی مواقع VRAM) فرستاده میشوند.(از این مرحله به بعد، Nvidia و AMD و دیگر شرکت ها تفاوت های فراوانی با هم دارند که در صورت اشتیاق دوستان بعدا به توضیح آن موارد نیز خواهم پرداخت)

    در ضمن در پردازش، واحد موتور گرافیکی GPU نیز به طور مرتب با هسته ها تعامل دارد و مرحله به مرحله به هسته ها دستورات را ابلاغ میکند، لازم به ذکر است که دستورات معمولا از Vertex Fetching (مراحل جای گذاری رئوس مثلث ها) شروع شده و با Stream Output اتمام میابند و مراحل دیگری نیز در این میان وجود دارند(از جمله Tessellation در کارت های با پشتیبانی از DirectX11)


    دقت کنید که پردازش موازی گرافیکی در AMD و Nvidia تفاوت های زیادی دارند از جمله متد پردازشی که در Nvidia بر اساس Thread Level Parallelism و در AMD بر اساس Instruction Level Paralellism هست و بسیاری از عوامل دیگه که بهشون در این جا نمیپردازم.


    پس از مراحل مختلف نوبت به عملیات Rasterization میرسه که باید فضای 2D رو به صورت پیکسل ها در بیاورند تا قابل نمایش بر روی Display باشد، و پس از اعمال Texture ها و Rasterization نوبت به Post Processing Effects میرسد که به معنی افکت ها و قابلیت های گرافیکی هست که بعد از Pixelated شدن قابل اجرا هست مانند Anti Aliasing، Motion Blur و ...


    پس از این که تمامی پردازش ها انجام شدند، تصویر نهایی به صورت یک فریم به Framebuffer فرستاده شده و در آنجا ذخیره میشوند، سپس فریم ها پشت سر هم از طریق پورت کارت گرافیک(DVI,VGA,HDMI) به صفحه نمایش فرستاده و نمایش داده میشوند.

    در این قسمت اگه به تبدیل آنالوگ به دیجیتال نیاز باشد مثل زمانی که از پورت VGA به مانیتور LCD/CRT استفاده میشود، داده ها باید از طریق RAMDAC (Random Access Memory Digital to Analog Convertor) تبدیل و سپس نمایش داده شوند.


    GPU Bottlenecks
    در GPU عوامل متعددی میتوانند به گلوگاه تبدیل شوند:

    • واحد های ROP(Render Output) در رزولوشن های بالا
    • واحد های TMU(Texture Mapping Unit) در گیم های با تعداد تکستچر بسیار بالا
    • واحد های Graphics Engine که اکثرا در پردازش Tessellation محدودیت ایجاد میکنند
    • واحد های Tessellator در عنوان هایی که از تسلیشن با فاکتور بالا و به طور وسیع استفاده میکنند در صورتی که این قسمت در GPU نتواند جوابگو آن حجم دستوردهی باشد (این مورد و مورد بالایی به هم بسیار مربوط هستند)
    • و در نهایت واحد های پردازشی ALU,FPU ها یا همون هسته ها


    که مجموعا اگر یک یا تعدادی از این عوامل رخ دهند، پردازش GPU Bound نام میگیرد.

    البته لازم به ذکر است که عملیات های درون GPU بسیار پیچیده هستند و خیلی از موارد ناگفته مانده، و مواردی که در بالا ذکر شد عمده مواردی هست که باعث افت فریم و موراد مشابه میشوند.


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

    منابعی که از آن ها برای نوشتن این مقاله استفاده شده است:

    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] (صفحات مختلف)


    [NVIDIA’s Next Generation CUDA Compute Architecture:Fermi [Whitepaper
    Tri Do Dinh, GPUs - Graphics Processing Units,Institute of Computer Science, University of Innsbruck ,July 7, 2008

    و برخی منابع دیگر.

    پیروز باشید.
    Last edited by Erfan.; 12-03-2012 at 22:40.



  2. #2
    اگه نباشه جاش خالی می مونه ramincybran's Avatar
    تاريخ عضويت
    Oct 2009
    پست ها
    293

    پيش فرض ...

    یک مقاله خارقلاده و بی نظیر.

    دیگه گمون نمیکنم دوستان با خوندن این مقاله در مباحث پایه ای و کلی مشکلی داشته باشن و توضیحات در سطح تخصصی هم به طور تمام و کمال وجود داره.

    با تشکر ویژه از عرفان عزیز بابت زحمتی که برای این مقاله کشیدن

    موفق باشید

  3. 16 کاربر از ramincybran بخاطر این مطلب مفید تشکر کرده اند


  4. #3
    آخر فروم باز PC_Expert's Avatar
    تاريخ عضويت
    Nov 2010
    محل سكونت
    کرج
    پست ها
    1,563

    پيش فرض

    بسیار عالی، سپاس فراوان...

  5. 10 کاربر از PC_Expert بخاطر این مطلب مفید تشکر کرده اند


  6. #4
    اگه نباشه جاش خالی می مونه ALI&SOAP's Avatar
    تاريخ عضويت
    Jun 2010
    پست ها
    431

    پيش فرض

    داداش دمت گرم ترکوندی.
    خدا ازت راضی باشه
    واقعا کمکم کرد یه دنیا ممنون

  7. 8 کاربر از ALI&SOAP بخاطر این مطلب مفید تشکر کرده اند


  8. #5
    حـــــرفـه ای mjorh's Avatar
    تاريخ عضويت
    Jul 2009
    محل سكونت
    !Arkham City
    پست ها
    5,011

    پيش فرض

    با تشکر از آقا عرفان ...خیلی مفید واقع شد


    به طور دقیق تر، این وضعیت هنگامی پیش میاید که CPU نتواند به مقدار کافی GPU رو تغذیه کند که در این حالت بخشی از توان GPU نیز به هدر میرود. نوع تنظیمات گرافیکی بازی ها هم در این مورد بسیار مهم است برای مثال در رزولوشن و تنظیمات پایین این اتفاق بیشتر می‌افتد زیرا بار پردازشی GPU کمتر شده، میتواند تعداد فریم بسیار بیشتری تولید کند وبه عبارتی GPU به دیتا های بیشتری از CPU نیاز دارد زیرا GPU عامل محدود کننده نیست و تا حد توان خودش فریم تولید میکند.
    الان یعنی وقتی با رزولوشن پایین پلی می کنیم ،عامل محدود کننده cpu هسش و تو رزولوشنای بالا عامل محدود کننده GPU ...
    درسه ؟

  9. 7 کاربر از mjorh بخاطر این مطلب مفید تشکر کرده اند


  10. #6
    حـــــرفـه ای Erfan.'s Avatar
    تاريخ عضويت
    Jun 2010
    محل سكونت
    Solar System
    پست ها
    5,351

    پيش فرض

    الان یعنی وقتی با رزولوشن پایین پلی می کنیم ،عامل محدود کننده cpu هسش و تو رزولوشنای بالا عامل محدود کننده GPU ...
    درسه ؟
    بله، در اکثر گیم ها شرایط به این صورت هست. البته دقت کنید که فقط رزولوشن نیست و باقی تنظیمات گرافیکی هم در این امر نقش دارن.

    و نکته دیگه این که همیشه و در همه کانفیگ ها این وضعیت به یک شکل نیست و برای مثال یک CPU ضعیف در تنظیمات و رزولوشن بالا نیز برای سیستم محدودیت ایجاد میکنه و شرایط های متفاوت دیگر...

    پیروز باشید.


  11. #7
    داره خودمونی میشه
    تاريخ عضويت
    Jan 2013
    پست ها
    26

    پيش فرض

    عرفان سلام باتشكر از توضيحات `پردازش گرافيك كه اطلاعات كاملي بود اگر درباره openGL كه برخي بازي ها لازم دارند ومربوط به كارت گرافيك ميشود ,وظاهرا كاربازكردن و يارندر بازي انجام ميدهد راهنمائي بفرمائيد بسيار ممنون خواهم بود . با تشكر babarany
    Last edited by babarany; 29-07-2013 at 18:17.

  12. #8
    Banned
    تاريخ عضويت
    Jun 2013
    محل سكونت
    تو خونمون
    پست ها
    304

    پيش فرض

    عرفان سلام باتشكر از توضيحات `پردازش گرافيك كه اطلاعات كاملي بود اگر درباره openGL كه برخي بازي ها لازم دارند ومربوط به كارت گرافيك ميشود ,وظاهرا كاربازكردن و يارندر بازي انجام ميدهد راهنمائي بفرمائيد بسيار ممنون خواهم بود . با تشكر babarany
    سلام.این مشکل با آپدیت کارت گرافیک به راحتی حل میشه.

  13. #9
    داره خودمونی میشه
    تاريخ عضويت
    Aug 2013
    پست ها
    62

    پيش فرض

    دستت درد نکنه عالی بود ولی کمی پیچیده بود. ممنون میشم اگه کسی بگه که میزانgpu را ازکچا باید فهمید؟

  14. #10
    در آغاز فعالیت
    تاريخ عضويت
    Nov 2013
    پست ها
    1

    پيش فرض

    سلام
    من تازه در اینجا عضو شدم و فقط چند تا سوال دارم
    ببینید دوستان من سیستم کامپیوترم اینه که با این سیستم بعضی بازی های سنگین روش کم سرعته
    رم:4gb
    سی پی یو:intel hd grafics 2020 2cpus 2.90gh
    'گرافیک:intel hd grafics میزانش 2gb

+ جواب دادن به اين بحث
صفحه 1 از 2 12 آخرآخر

جواب سريع جواب سريع


* چنانچه از قبل در انجمن ثبت نام کرده اید و دارای نام کاربری هستید ، ابتدا وارد سایت شوید ( این فرم مخصوص ارسال پاسخ توسط کاربران میهمان است )
همچنین با داشتن اکانت گوگل ( جی میل ) میتوانید از لینک بالای سایت استفاده کنید و سریعا در سایت وارد شوید

پایتخت ایران چه نام دارد ؟

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

برچسب های این موضوع

قوانين ايجاد تاپيک در انجمن

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