موضوع مقاله: واحد پردازش گرافیکی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # واحد پردازش گرافیکی | مقدمه: ویژگی‌های واحدهای پردازش گرافیکی جدید برای پردازش و ارائه دادن کارهای دیداری (گرافیکی)، آن‌ها را بسیار کارآمدتر از واحدهای پردازش مرکزی یا CPU در پردازش الگوریتم‌های پیچیده کرده‌است. | ## بخش 1: واحد پردازش گرافیکی | در واقع واحد پردازش گرافیکی همانند واحد پردازش مرکزی در کامپیوتر است ولی وظیفهٔ اصلی آن پردازش اطلاعات مرتبط با تصاویر است. یک GPU معمولاً بر روی کارت‌های گرافیک قرار می‌گیرد اما کارت‌های گرافیک غیر حرفه‌ای مستقیماً بر روی مادربورد به‌صورت (OnBoard) قرار می‌گیرند. GPU ابزاری است شامل تعدادی عملگر ابتدایی گرافیکی، که باعث می‌شود نسبت به CPU در خلق تصاویر بر صفحهٔ نمایشگر بسیار سریع‌تر عمل کنند. رایج‌ترین عملگرها برای گرافیک دوبعدی کامپیوترها شامل عملگر بیت بلیت است که معمولاً در سخت‌افزارهای مخصوص یک "Biltter" نامیده می‌شود. پردازنده‌های گرافیکی جدید، پردازش گرافیک کامپیوتری سه‌بعدی را نیز در رایانه‌ها انجام می‌دهند. تاریخچه دههٔ ۱۹۷۰ تراشه‌های ANTIC و CTIA امکان کنترل سخت‌افزاری حالات گرافیکی و متنی و سایر تأثیرات را بر روی آتاری ۸-بیتی را فراهم می‌کردند. تراشهٔ ANTIC پردازشگری مخصوص برای نگاشت (در حالت برنامه‌نویسی) متن و دادهٔ گرافیکی به خروجی تصویری بود. طراح تراشهٔ ANTIC جی مینر، طراحی تراشهٔ گرافیکی را برای کمودور آمیگا نیز بر عهده داشت. دههٔ ۱۹۸۰ شاید بتوان ایدهٔ اولیهٔ شکل‌گیری مفهوم GPU را به دههٔ ۱۹۸۰ و کومودور آمیگا نسبت داد. این کامپیوتر اولین دستگاهی بود که با یک واحد پردازش گرافیکی استاندارد ارائه می‌شد و از ویژگی‌های گرافیکی قابل ملاحظه‌ای در زمان خود بهره می‌برد. در همین دهه و در سال ۱۹۸۷ کمپانی تگزاس اینسترومنتس اولین ریزپردازندهٔ دارای قابلیت‌های گرافیکی را با نام TMS34010 ارائه کرد. دههٔ ۱۹۹۰ در دههٔ ۱۹۹۰ روند رشد کارت‌های گرافیکی و پردازنده‌های دارای قابلیت‌های گرافیکی به شکل روزافزونی پیش رفت و برای اولین بار پردازنده‌ها و کارت‌های گرافیکی با قابلیت رندر تصاویر و ویدیوهای سه‌بعدی ارائه شدند. ولی نقطهٔ آغاز آنچه که امروز آن را GPU می‌نامیم به سال ۱۹۹۹ و محصول متفاوت کمپانی انویدیا بازمی‌گردد. Nvidia GeForce 256 (که به آن NV10 نیز می‌گویند) اولین کارت گرافیک تجاری بود که توانست قابلیت‌های سه‌بعدی و انتقال و نوردهی را در یک سخت‌افزار تجاری برای مصرف‌کننده ارائه دهد و از آنجا که بعدها قابلیت سایه‌زنی پیکسلی و برداری به آن اضافه شد، بسیار انعطاف‌پذیرتر و قابل‌برنامه‌ریزی‌تر از کارت‌های گرافیکی سه‌بعدی هم‌دورهٔ خود بود. سال‌های ۲۰۰۰ تا ۲۰۰۵ پس از ارائهٔ NV10 و با وجود رابط برنامه‌ای چون اوپن‌جی‌ال و قابلیت‌های مشابه آن در دایرکت‌اکس، مسیر رشد پردازنده‌های گرافیکی به سمت قابلیت‌های بیشتر برنامه‌پذیری پیش می‌رفت. پردازش هر پیکسل توسط یک برنامهٔ کوتاه که ورودی‌های آن بافت تصویر را مشخص می‌کرد، امکان‌پذیر بود و هر شکل هندسی پیش از آنکه بر روی نمایشگر پدیدار شود، می‌توانست توسط یک برنامهٔ کوتاه به شکل دلخواه پردازش گردد. اما در اکتبر ۲۰۰۲ کمپانی رقیب انویدیا یعنی ای‌تی‌آی محصول جدیدی به نام Radeon 9700 یا R300 را معرفی کرد که اولین پردازندهٔ گرافیکی مبتنی بر دایرکت‌تری‌دی ۹٫۰ در دنیا بود. سایه‌زن‌های پیکسل و شکل این پردازندهٔ گرافیکی، قادر بودند محاسبات ممیز شناور طولانی و حلقوی را پیاده‌سازی نمایند و به سرعت، انعطاف‌پذیری در حد یک CPU را پیدا کردند. سایه‌زنی پیکسل معمولاً در مواردی چون ایجاد پستی و بلندی بر روی سطح اجسام (Bump Mapping) کاربرد دارد که منجر به ایجاد یک بافت بر روی یک شکل می‌گردد تا آن جسم براق، کدر، زبر، صاف یا حتی کنده‌کاری شده به نظر برسد. ۲۰۰۶ تا ۲۰۱۰ کارت گرافیک rx 580 با معرفی جی‌فورس سری ۸، پردازنده‌های گرافیکی به دستگاه‌های محاسباتی عمومی‌تری تبدیل شدند. امروزه GPUهای موازی در مقابل CPUها قد علم کرده‌اند و به همین دلیل یکی از زمینه‌های پژوهشی مهم کنونی، یعنی GPUهای همه‌منظوره (GPGPU) (رایانش و محاسبات عمومی بر روی GPU) توانسته در بسیاری از حوزه‌ها مثل فراگیری ماشین (یادگیری ماشین)، هوش مصنوعی، اکتشاف نفت، پردازش تصویر، جبر خطی، آمار، بازسازی سه‌بعدی و حتی تعیین قیمت در بازار سهام، به یکی از پرکاربردترین زمینه‌های تحقیقاتی و صنعتی تبدیل گردد. پلتفرم کودا که شرکت انویدیا آن را توسعه داده‌است، یکی از قدیمی‌ترین مدل‌های رایانش موازی برای GPU است که از اوپن‌سی‌ال نیز پشتیبانی می‌کند. کارت‌های سری اچ‌دی ۶۰۰۰ رادئون ای‌ام‌دی در سال ۲۰۱۰ منتشر شدند و ای‌ام‌دی در سال ۲۰۱۱ پردازنده‌های گرافیکی سری 6000M خود را معرفی کرد. سری کارت‌های گرافیک Kepler توسط انویدیا در سال ۲۰۱۲ عرضه شد و در کارت‌های سری ۶۰۰ و ۷۰۰ انویدیا استفاده شد. این فناوری سرعت کلاک یک کارت گرافیک را تنظیم می‌کند تا سرعت آن را با توجه به مصرف انرژی آن افزایش یا کاهش دهد. هر دو دستگاه از پردازنده‌های گرافیکی مبتنی بر رادئون اچ‌دی ۷۸۵۰ و ای‌ام‌دی ۷۷۹۰ استفاده می‌کنند. تراشه‌های ۲۸ نانومتری انویدیا توسط تی‌اس‌ام‌سی در تایوان با استفاده از فرایند ۲۸ نانومتری تولید شدند. این فناوری در مقایسه با فرایند ۴۰ نانومتری پیشین، با افزایش ۲۰ درصدی عملکرد و در عین حال کاهش مصرف انرژی همراه بود. | ## بخش 2: واحد پردازش گرافیکی | سازندگان این هدست‌ها در زمان عرضه، مدل‌های کارت گرافیک جی‌تی‌ایکس ۹۷۰ و R9 290X یا بالاتر از آن‌ها را توصیه کردند. در سال ۲۰۱۸، انویدیا پردازنده‌های گرافیکی سری آرتی‌ایکس ۲۰ (RTX 20) را تولید کرد که با افزودن هسته‌های ردیابی پرتو به پردازنده‌های گرافیکی، عملکرد آن‌ها را در جلوه‌های نوری بهبود می‌بخشید. پردازنده‌های گرافیکی پُلاریس۱۰ و پُلاریس ۱۱ توسط ای‌ام‌دی با فرایند ۱۴ نانومتری ساخته شدند. این کارت‌ها افزایش قابل توجهی در «عملکرد به ازای مصرف هر وات» در مقایسه با مدل‌های پیشین از خود نشان دادند. ای‌ام‌دی همچنین سری وگا را به‌عنوان رقیبی برای کارت‌های پاسکال رده بالای انویدیا، عرضه کرد. در سال ۲۰۱۹، ای‌ام‌دی سری کارت‌های گرافیک رادئون سری ۵۰۰۰ را معرفی کرد.AMD press release: این شرکت سپس سری رادئون آر ایکس ۶۰۰۰ خود را با پشتیبانی از ردیابی پرتو با شتاب سخت‌افزاری رونمایی کرد. هر دوی آن‌ها از GPUهای مبتنی بر ریزمعماری RDNA 2 با پیشرفت‌های تدریجی و پیکربندی‌های مختلف استفاده می‌کنند. اینتل نخستین بار در اواخر دههٔ ۱۹۹۰ وارد بازار پردازنده گرافیکی شد، اما شتاب‌دهنده‌های سه‌بعدی ضعیفی را در مقایسه با رقبای آن زمان خود تولید کرد. اینتل به‌جای تلاش برای رقابت با سازندگان رده بالای انویدیا و ای‌تی‌آی/ای‌ام‌دی، ادغام پردازنده‌های گرافیکی تکنولوژی گرافیک اینتل در چیپست‌های مادربرد را آغاز کرد. این راهبرد، منجر به سهم اسمی زیادی از بازار پردازنده‌های گرافیکی برای اینتل شد، زیرا بیشتر رایانه‌های دارای سی‌پی‌یوی اینتل نیز دارای این پردازندهٔ گرافیکی مجتمع بودند. این پردازنده‌های گرافیکی عموماً از نظر عملکرد از پردازنده‌های گرافیکی مستقل ضعیف‌تر بودند. اینتل در سال ۲۰۲۲ با معرفی پردازنده‌های گرافیکی مستقل سری آرک خود وارد رقابت با کارت‌های کنونی جی‌فورس و سری رادئون شد و با ارائهٔ قیمت‌های رقابتی، دوباره وارد بازار پردازنده‌های مستقل شد. دههٔ ۲۰۲۰ در دههٔ ۲۰۲۰، پردازنده‌های گرافیکی به‌طور فزاینده‌ای برای محاسبات مربوط به آموزش شبکه‌های عصبی بر روی مجموعه داده‌های عظیمی که برای مدل‌های زبانی بزرگ مورد نیاز هستند، استفاده شده‌اند. هسته‌های پردازش تخصصی در برخی از پردازنده‌های گرافیکی ایستگاه‌های کاری مدرن برای یادگیری عمیق اختصاص داده شده‌اند، زیرا با استفاده از ضرب و تقسیم ماتریس ۴×۴، عملکرد FLOPS قابل‌توجهی افزایش می‌یابند که منجر به عملکرد سخت‌افزار تا 128 TFLOPS در برخی از برنامه‌ها می‌شود. شرکت‌های تولیدکنندهٔ پردازندهٔ گرافیکی شرکت‌های بسیاری در زمینهٔ تولید پردازندهٔ گرافیکی فعالند. در سال ۲۰۰۸، اینتل، انویدیا و ای‌ام‌دی/ای‌تی‌آی به ترتیب با ۴۹٫۵٪ و ۲۷٫۸٪ و ۲۰٫۶٪ از سهم بازار در صدر تولیدکنندگان پردازندهٔ گرافیکی بودند. تلفن‌های هوشمند کنونی عموماً از پردازنده‌های گرافیکی آدرنو تولید شرکت کوالکام، پاور وی‌آر تولید شرکت ایمجینیشن تکنولوجیز و مالی تولید شرکت آرم استفاده می‌کنند. توابع محاسباتی پردازنده‌های گرافیکی مدرن از بیشتر قدرت خود برای محاسبات مربوط به گرافیک سه‌بعدی در کامپیوتر بهره می‌برند. پیشرفت‌های اخیر در GPUها باعث شده تا بتوانند از سایه‌زن‌های قابل‌برنامه‌ریزی بهره گیرند. بدین ترتیب با استفاده از این ویژگی می‌توان تصاویر را در سطح هندسی و بافت دستکاری نمود. از آنجا که بیشتر این محاسبات نیاز به محاسبات ماتریسی و برداری دارند، مهندسین و دانشمندان مطالعات خود بر روی کاربردهای غیرگرافیکی GPU را افزایش داده‌اند. یک نمونه از کاربردهای غیرگرافیکی پردازنده گرافیکی، تولید بیت‌کوین است، که برای حل معماها از یک واحد پردازش گرافیکی استفاده می‌گردد. رمزگشایی ویدئویی با GPU بیشتر GPUهای تولید شده از سال ۱۹۹۵ تاکنون از فواصل رنگی YUV که برای پخش ویدئوهای دیجیتالی بسیار مهم است، پشتیبانی می‌کنند، و بسیاری از GPUهای تولید شده از سال ۲۰۰۰ نیز از فرمت‌های MPEG پشتیبانی می‌کنند. این روند رمزگشایی ویدئو توسط سخت‌افزار که از دوبخش رمزگشایی و پردازش ویدئو تشکیل شده و توسط یک GPU انجام می‌گیرد را «رمزگشایی ویدئو توسط GPU» یا «رمزگشایی سخت‌افزاری ویدئو با GPU» می‌نامند. کارت‌های گرافیکی جدیدتر حتی می‌توانند ویدئوهای کیفیت بالای HD را نیز به صورت سخت‌افزاری بر روی خود کارت رمزگشایی نمایند، تا پردازنده درگیر آن نشود. بدین ترتیب به راحتی می‌توان آن‌ها را تعویض نموده یا در صورتی که مادربورد از مدل‌های جدیدتر پشتیبانی کند آن‌ها را ارتقا داد. یک پردازنده گرافیکی اختصاصی لزوماً جداشدنی نیست و حتی می‌تواند از طریق درگاه‌های دیگری به غیر از موارد استاندارد مذکور به بورد اصلی متصل گردد. کلمه «اختصاصی» برای این استفاده می‌شود که در این نوع GPUها یک حافظه RAM اختصاصی برای استفاده کارت گرافیک در نظر گرفته شده‌است. | ## بخش 3: واحد پردازش گرافیکی | در کامپیوترهای شخصی کوچکتر مثل لپ‌تاپ‌ها معمولاً برای اتصال GPU اختصاصی به بورد اصلی از رابط‌های غیر استاندارد استفاده می‌شود تا حجم کمتری اشغال کنند، ولی اغلب آن‌ها با وجود تفاوتی که در شکل و اندازه دارند از همان منطق ارتباطی PCIe و AGP بهره می‌برند. این نوع پردازنده‌های گرافیکی نسبت به نوع اختصاصی باعث کاهش هزینه سیستم می‌شوند ولی از سویی قابلیت‌های آن‌ها نیز کمتر است. سابقاً این نوع GPUها در اجرای بازی‌های سه‌بعدی و ویدئوهای HD با مشکل مواجه می‌شدند ولی با رشد تکنولوژی و معرفی نسل‌های جدیدتر، این پردازنده‌های گرافیکی نیز بهبود یافته و قدرتمندتر شدند. با این حال هنوز هم کاربران حرفه‌ای گرافیک و علاقه‌مندان به بازی‌های سنگین کامپیوتری باید یک پردازنده گرافیکی اختصاصی برای رایانه خود تهیه کنند. از آنجا که GPUها میزان ارجاع به حافظه بالایی دارند، ممکن است نوع مجتمع آن‌ها در مواقعی که فضای خالی حافظه رم کاهش می‌یابد، برای استفاده از آن با CPU وارد رقابت شود. IGPها می‌توانند تا ۲۹٫۸۵۶ گیگابایت بر ثانیه از پهنای باند حافظه را به خود اختصاص دهند. این در حالی است که کارت‌های گرافیکی اختصاصی می‌توانند تا ۲۶۴ گیگابایت از پهنای باند حافظه اختصاصی خود بهره گیرند. در مدل‌های قدیمی پردازنده‌های گرافیکی مجتمع امکان انتقال و نوردهی تصویر به صورت سخت‌افزاری وجود نداشت، اما مدل‌های جدیدتر این قابلیت‌ها را دارا می‌باشند. پردازنده‌های گرافیکی مرکب یا هیبریدی طبقه جدیدی از GPUها وجود دارد که مابین دو نوع قبلی قرار می‌گیرد. کارت‌های گرافیک هیبریدی نسبت به IGPها قیمت بالاتری دارند و از کارت‌های گرافیک اختصاصی ارزان‌تر هستند. این نوع GPUها از حافظه مشترک با سیستم استفاده می‌کنند و در کنار آن یک حافظه کش اختصاصی نیز برای خود دارند، تا با استفاده از آن تأخیر بالای ناشی از دسترسی به حافظه رم را جبران کنند. در تبلیغات این نوع محصولات گاهی گفته می‌شود که حجم حافظه رم آن‌ها ۷۶۸ مگابایت است، ولی در واقع این میزان حجمی از رم سیستم است که این نوع پردازنده گرافیکی می‌تواند از حافظه اصلی رایانه اشغال کند. پردازش جریانی و پردازنده‌های گرافیکی همه‌منظوره استفاده از پردازنده‌های گرافیکی همه‌منظوره (GPGPU) به عنوان پردازنده جریانی رشد روزافزونی دارد و هر روز فراگیرتر می‌شود. این نوع واحدهای پردازش گرافیکی، به جای آن که صرفاً برای عملیات گرافیکی طراحی شده باشند، قدرت محاسباتی یک سایه‌زن گرافیکی مدرن را برای محاسبات و رایانش‌های عمومی به کار می‌گیرند. در برخی کاربردهای خاص که نیاز به عملیات برداری پیچیده دارند، این نوع پردازنده گرافیکی می‌تواند عملکرد بسیار بهتری نسبت به یک CPU داشته باشد. در برخی موارد ویژه پیش می‌آید که یک پردازنده گرافیکی، ۴۰ برابر سریع‌تر از یک پردازنده معمولی عمل می‌کند. GPGPU می‌تواند در بسیاری از وظایف موازی مثل ردیابی اشعه، دینامیک سیال محاسباتی و مدل‌سازی آب‌وهوا مورد استفاده قرار گیرد. عموماً این ابزار برای رایانش‌های نیازمند به قدرت محاسباتی بالا استفاده می‌شود، چرا که GPUها به خاطر معماری ویژه‌ای که دارند، قابلیت‌های موازی‌سازی بالایی دارند. به علاوه امروزه کامپیوترهای قدرتمند مبتنی بر GPU نقش مهمی در مدل‌سازی‌های بزرگ دارند. کارت‌های انویدیا از APIهای برنامه‌نویسی به زبان سی مثل کودا (معماری دستگاه محاسبه یکپارچه) و اوپن‌سی‌ال پشتیبانی می‌کنند. این فناوری‌ها به شما این امکان را می‌دهند تا از توابع مشخص یک برنامه معمولی C برای اجرا در پردازنده‌های جریانی استفاده کنید. این موضوع باعث می‌شود که برنامه‌های C از قابلیت‌های GPU استفاده کرده و بر روی ماتریس‌های بزرگ به صورت موازی اجرا شوند، در حالی که هنوز هم می‌توانند هنگام نیاز از CPU نیز استفاده نمایند. در اکثر موارد، برنامه‌های خطی یا درختی بر روی رایانه میزبان کامپایل می‌شوند و فایل اجرایی برای اجرا در GPU ارسال می‌شود. ایده کلی استفاده از GPU در این موارد بدین شکل است که یک برنامه مشخص به چند بخش کوچک شکسته می‌شود و سپس با استفاده از معماری اس‌آی‌ام‌دی پردازنده‌های گرافیکی به صورت موازی اجرا می‌گردد. در این روش از همان ابتدا، پیش از کامپایل، برنامه به بخش‌های کوچکتر تقسیم شده و به‌طور موازی تفسیر می‌شوند. این برنامه تمام جوانب کارت گرافیک را بررسی و تست می‌کند و به کارت گرافیک امتیاز می‌دهد.زیمابی , نکاتی در رابطه با تهیه کارت گرافیک ابداعات Nvidia هسته تنسور به‌طور ساده می‌توان گفت هسته‌های تنسور از قسمت‌های کوچکی تشکیل شده‌اند که برای انجام کار پردازشی سنگین به کارت گرافیک کمک می‌کنند. کاربرد هسته تنسور، هسته تنسوردر فیزیک و مهندسی و در ریاضیات کاربرد فراوانی دارد یکی از کابرد مهم آن این است که می‌تواند کار پیچیده الکترومغناطیس و نجوم و مکانیک سیالات را حل کند. | ## جمع‌بندی | هستهٔ کودا هستهٔ کودا جزئی از کارت گرافیک است که مسئولیت پردازش تصاویر را بر عهده دارد با مقدار اندکی تفاوت دارای پیچیدگی معماری کمتری است اما در مقدار گسترده‌تری در کارت گرافیک قرار می‌گیرد به‌طور طبیعی پردازنده‌های معمولی دارای ۲ الی ۱۶ هسته است اما این تعداد در هسته‌های کودا به عدد ۱۰۰ تا می‌رسد که عدد قابل توجهی برای یک هسته کارت گرافیک است.