پردازنده گرافیکی چیست؛ هر آنچه باید درباره GPU بدانید
واحد پردازش گرافیکی (GPU)، مدار الکترونیکی تخصصی برای مدیریت و تغییر حافظه برای تسریع در ایجاد و نمایش تصاویر خروجی در مانیتور محسوب میشود. پردازندهی گرافیکی از تعدادی عملگر ابتدایی گرافیکی تشکیل شده که در ابتداییترین حالت خود برای کشیدن مستطیل، مثلث، دایره و قوس بهکار میروند و در خلق تصاویر، بسیار سریعتر از پردازندهها عمل میکنند.
- پردازنده گرافیکی (GPU) چیست؟
- تصویر سهبعدی
- گرافیک بیتمپ شده (BMP.)
- گرافیک برداری
- رندرینگ
- API گرافیکی
- GDDR چیست
- تاریخچه گرافیک سه بعدی
- نحوه تولید گرافیک سهبعدی
- مدلسازی سه بعدی
- چیدمان و انیمیشن
- رندرینگ
- تکنیک سایهزنی
- سایهزنهای پیکسل
- سایهزنهای رأس
- تفاوت GPU و CPU
- آشنایی با معماری پردازنده گرافیکی
- هستههای تنسور
- موتور رهگیری پرتو
- GPGPU چیست
- CUDA چیست؟
- مزایای هستههای CUDA
- معایب هستههای CUDA
- OpenCL؛ جایگزین CUDA
- CUDA و OpenCL درمقابل OpenGL
- OpenCL یا CUDA
- مطرحترین برندها
- اینتل
- انویدیا
- AMD
- فرق پردازندهی گرافیکی و کارت گرافیک
- اجزای کارت گرافیک
- حافظهی ویدئویی
- برد مدار چاپی
- کانکتورهای نمایشگر
- پل
- رابط گرافیک
- مدار تنظیمکننده ولتاژ
- سیستم خنککننده
- انواع پردازندهی گرافیکی
- iGPU
- dGPU
- Cloud GPU
- eGPU
- پردازنده گرافیکی موبایل
- انواع پردازنده گرافیکی موبایل
- کاربردهای دیگر پردازندههای گرافیکی
- ویرایش ویدئو
- رندر گرافیک سهبعدی
- فراگیری ماشین
- بلاک چین و استخراج ارزهای دیجیتال
درواقع آنچه که به صورت ظاهری در نمایشگرها مشاهده میکنیم، خروجی حاصل از عملکرد پردازندههای گرافیکی است که در سیستمهای زیادی مانند گوشی، کامپیوتر، ورکاستیشن و کنسول بازی استفاده میشوند.
پردازنده گرافیکی (GPU) چیست؟
اگر واحد پردازش مرکزی یا پردازنده (CPU) را بهعنوان مغز کامپیوتر در نظر بگیریم که تمامی محاسبات و دستورها منطقی را مدیریت میکند، واحد پردازش گرافیکی یا پردازندهی گرافیکی (GPU) را میتوان بهعنوان واحدی برای مدیریت خروجی بصری و گرافیکی محاسبات و دستورها و اطلاعات مرتبط با تصاویر دانست که ساختار موازی آنها برای پردازش الگوریتم بلوکهای بزرگ داده، بهینهتر از واحدهای پردازش مرکزی یا همان پردازندهها عمل میکند؛ در واقع GPU، رابطی گرافیکی برای تبدیل محاسبات صورتگرفته توسط پردازنده به شکلی قابل فهم برای کاربر به حساب میآید و میتوان با اطمینان گفت هر دستگاهی که به نحوی خروجی گرافیکی را نمایش میدهد، به نوعی از پردازندهی گرافیکی مجهز است.
واحد پردازش گرافیکی در یک کامپیوتر، میتواند روی کارت گرافیک یا روی مادربرد تعبیه شده باشد یا همراه با پردازنده در تراشهی مجتمع (برای مثال APUهای AMD) عرضه شود. تشخیص مدل کارت گرافیک در ویندوز با سریعترین روش نیز امکان پذیر است کافی است به مقاله لینک شده مراجعه کرده و آن را مطالعه کنید.
تراشههای مجتمع نمیتوانند خروجی گرافیکی آنچنان چشمگیری تولید کنند و قطعاً خروجی آنها هیچ گیمری را راضی نمیکند؛ برای بهرهمندی از جلوههای بصری با کیفیتتر باید کارت گرافیکی (در ادامه با تفاوتهای پردازندهی گرافیکی و کارت گرافیک بیشتر آشنا خواهیم شد) مجزا با قابلیتهایی فراتر از یک پردازندهی گرافیکیِ ساده تهیه کرد. در ادامه با چند مفهوم اولیهی پرکاربرد در بحث گرافیکها، بهطور خلاصه آشنا میشویم.
تصویر سهبعدی
به تصویری که علاوه بر طول و عرض، عمق هم داشته باشد، تصویری سهبعدی گفته میشود که در مقایسه با تصاویر دوبعدی مفاهیم بیشتری را به مخاطب منتقل میکند و اطلاعات بیشتری دارد. برای مثال اگر به مثلثی نگاه کنید، تنها سه خط و سه زاویه مشاهده میکنید، اما اگر جسمی هرمیشکل داشته باشید، ساختاری سهبعدی خواهید دید که از چهار مثلث، پنج خط و شش زاویه تشکیل شده است.
گرافیک بیتمپ شده (BMP.)
گرافیک بیتمپشده یا همان گرافیک شطرنجیشده (Rasterized)، تصویری دیجیتالی است که در آن هر پیکسل با تعدادی بیت نمایش داده میشود؛ این گرافیک با تقسیم تصویر به چهارخانههای کوچک یا پیکسل ساخته میشود که هرکدام حاوی اطلاعاتی مانند کنترل شفافیت و رنگ هستند؛ بنابراین در گرافیک شطرنجی هر پیکسل مربوط به یک ارزش محاسبهشده و از پیش تعیینشده است که میتواند با دقت زیاد مشخص شود.
وضوح تصویر گرافیک شطرنجی به وضوح تصویر وابستگی دارد، بدین معنی که مقیاس تصاویر تولیدشده با این گرافیک را نمیتوان بدون از دست دادن کیفیت ظاهری، افزایش داد.
گرافیک برداری
گرافیک برداری (فرمتهای ai. یا eps. یا pdf. یا svg.) نیز تصویری است که مسیرهایی با نقطهی شروع و پایان را ایجاد میکند. این مسیرها همگی براساس عبارات ریاضی بوده و از اشکال هندسی پایهای مانند خطوط، چندضلعیها و منحنیها تشکیل شدهاند. مزیت اصلی استفاده از گرافیک برداری به جای گرافیک بیتمپ شده (شطرنجی)، توانایی آنها در مقیاسبندی بدون از دست دادن کیفیت است. مقیاس تصاویر تولیدشده با گرافیک برداری را میتوان بهراحتی، بدون افت کیفیت و به اندازهی توانایی دستگاهی که آنها را رندر میکند، افزایش داد.
همانطورکه گفته شد برخلاف گرافیکهای برداری که به کمک فرمولهای ریاضی به هر اندازه مقیاس میشوند، گرافیک بیتمپشده با مقیاسبندی کیفیت خود را از دست میدهد. پیکسلهای یک گرافیک بیتمپشده هنگام افزایش ابعاد، باید درونیابی شوند که این امر تصویر را تار میکند و هنگام کاهش ابعاد نیز باید دوباره نمونهبرداری شوند، که این کار باعث از دست دادن دادههای تصویر میشود.
بهطور کلی، گرافیکهای برداری برای خلق آثار هنری تشکیلشده از اشکال هندسی، مانند لوگو یا نقشههای دیجیتال، حروفچینی یا طراحیهای گرافیکی بهترین گزینه هستند و گرافیکهای شطرنجی نیز بیشتر با عکسها و تصاویر واقعی سروکار دارند و برای تصاویر عکاسی مناسب هستند.
از گرافیک برداری میتوان برای ساخت بنر یا لوگو استفاده کرد؛ چراکه تصاویر با این روش هم در ابعاد کوچک هم در ابعاد بزرگ با کیفیتی یکسان نمایش داده میشوند. یکی از محبوبترین برنامههایی که برای مشاهده و ایجاد تصاویر برداری استفاده میشود Adobe Illustrator است.
رندرینگ
به فرایند تولید تصاویر سهبعدی از نرمافزاری بر پایهی مدلهای محاسباتی و نمایش آن بهعنوان خروجی روی نمایشگر دو بعدی، رندرینگ (Rendering) گفته میشود.
API گرافیکی
رابط برنامهنویسی نرمافزاری (Application Programming Interface) یا API، پروتکلی برای ارتباط میان بخشهای مختلف برنامههای کامپیوتری و ابزاری مهم برای تعامل نرمافزار با سختافزار گرافیکی بهجساب میآید؛ این پروتکل ممکن است مبتنی بر وب، سیستمعامل، مرکز داده، سختافزار یا کتابخانههای نرمافزاری باشد. امروزه برای تصویرسازی و رندرینگ مدلهای سهبعدی، ابزارها و نرمافزارهای فراوانی توسعه داده شدهاند و یکی از کابردهای مهم API-های گرافیکی نیز آسانکردن فرایند تصویرسازی و رندرینگ برای توسعهدهنگان بهشمار میرود. درواقع API-های گرافیکی دسترسی مجازی به برخی پلتفرمها را برای توسعهدهندگان برنامههای گرافیکی خود و تست آنها فراهم میکنند. در ادامه برخی از شناختهشدهترین APIهای گرافیکی را معرفی میکنیم:
OpenGL (مخفف Open Graphics Library) کتابخانهای از توابع مختلف برای ترسیم تصاویر سهبعدی است که استاندارد بین پلتفرمی و واسط برنامهنویسی کاربردی (API) برای گرافیکها و رندرهای دو بعدی و سه بعدی و شتابدهندهی گرافیکی در بازیهای ویدئویی، طراحی، واقعیت مجازی و سایر برنامهها به حساب میآید. این کتابخانه بیش از ۲۵۰ تابع فراخوانی مختلف برای ترسیم تصاویر سهبعدی دارد و در دو نوع Microsoft (اغلب در ویندوز یا نرمافزار نصب کارت گرافیک) و Cosmo (برای سیستمهایی که شتابدهندهی گرافیکی ندارند) طراحی شده است.
رابط گرافیکی OpenGL برای اولین بار توسط Silicon Graphics در سال ۱۹۹۱ طراحی شد و در سال ۱۹۹۲ بهبازار آمد؛ جدیدترین سری این API، یعنی 4.6 OpenGL نیز در جولای ۲۰۱۷ معرفی شد.
مجموعهای از رابطهای برنامهنویسی کاربردی (API) که توسط مایکروسافت برای فراهمسازی امکان ارتباط دستورالعملها با سختافزارهای صوتی و تصویری توسعه داده شده است. بازیهایی که به DirectX مجهز هستند، این قابلیت را دارند که از ویژگیهای چندرسانهای و شتابدهندههای گرافیکی بهطور کارآمدتری استفاده کنند و عملکرد کلی بهبودیافتهتری داشته باشند.
زمانی که مایکروسافت در اواخر سال ۱۹۹۴، خود را برای انتشار ویندوز 95 آماده میکرد، الکس سنت جان، یکی از کارمند مایکروسافت، دربارهی توسعهی بازیهای سازگار با MS-DOS تحقیق کرد. برنامهنویسان این بازیها اغلب امکان انتقال آنها را به ویندوز 95 رد کردند و توسعهی بازیها را برای محیط ویندوز دشوار خواندند. به همین منظور تیم سهنفرهای تشکیل شد و این تیم در عرض چهار ماه توانست اولین مجموعه از رابطهای برنامهنویسی کاربردی (API) را به نام DirectX برای حل این مشکل توسعه دهد.
اولین نسخهی DirectX سپتامبر ۱۹۹۵ با عنوان Windows Games SDK منتشر شد و جایگزین Win32 برای DCI و API-های WinG برای ویندوز 3.1 بود. DirectX برای ویندوز 95 و همه نسخههای ویندوز مایکروسافت بعد از آن، امکان داد که محتوای چند رسانهای با کارایی بالا را در خود جای دهند.
مایکروسافت برای پذیرش هرچه بیشتر DirectX از سوی توسعهدهندگان، به جان کارمَک (John Carmack)، توسعهدهندهی بازیهای Doom و Doom 2 پیشنهاد داد که این دو بازی را از MS-DOS به صورت رایگان و با DirectX به ویندوز 95 منتقل و شناسه تمامی حقوق انتشار بازی را نیز حفظ کند. کارمک موافقت کرد و اولین نسخه از بازیها به نام Doom 95 در آگوست ۱۹۹۶ بهعنوان اولین بازی توسعه داده شده روی DirectX منتشر شد. DirectX 2.0 با انتشار نسخهی بعدی Windows 95 و Windows NT 4.0 در اواسط سال ۱۹۹۶ به یکی از اجزای خود ویندوز تبدیل شد.
ازآنجاکه در آن زمان ویندوز 95 هنوز در ابتدای راه خود بود و بازیهای منتشرشدهی کمی برای آن وجود داشت، مایکروسافت برای این رابط برنامهنویسی دست به تبلیغات گسترده زد و در طی رویدادی برای اولین بار Direct3D و DirectPlay را در دموی آنلاین بازی چندنفرهی MechWarrior 2 معرفی کرد. تیم توسعهدهندهی DirectX با چالش آزمایش هر نسخه از این رابط برنامهنویسی برای هر مجموعه سختافزار و نرمافزار کامپیوتر روبهرو شد و در همین راستا نیز انواع کارتهای گرافیک مختلف، کارتهای صوتی، مادربردها، پردازندهها، ورودیها، بازیها و سایر برنامههای چندرسانهای با هر نسخهی بتا و نهایی آزمایش شدند و حتی آزمایشهایی تولید و توزیع شد تا صنعت سختافزار، سازگاری طراحیهای جدید و نسخههای درایور خود با DirectX را بررسی کند.
جدیدترین نسخهی DirectX، یعنی DirectX 12 در سال ۲۰۱۴ رونمایی شد و یک سال بعد از آن نیز همراه با نسخهی ۱۰ ویندوز بهطور رسمی به بازار آمد. این API گرافیکی از آداپتور چندگانهی خاصی پشتیبانی کرده و امکان استفادهی همزمان از چند گرافیک را روی یک سیستم فراهم میکند.
قبل از DirectX، مایکروسافت OpenGL را در پلتفرم ویندوز NT خود گنجانده بود و حالا Direct3D قرار بود جایگزینی برای OpenGL تحت کنترل مایکروسافت باشد که در ابتدا روی گیمینگ متمرکز بود. در این مدت OpenGL هم توسعه داده شده بود و تکنیکهای برنامهنویسی برای برنامههای چندرسانهای تعاملی مانند بازیها را بهتر پشتیبانی میکرد، اما ازآنجاکه OpenGL در مایکروسافت توسط تیم DirectX پشتیبانی میشد، کمکم از میدان رقابت کناره گرفت.
Vulkan
Vulkan یک API گرافیکی کمهزینه و چندپلتفرمی است که برای کاربردهای گرافیکی مانند گیمینگ و تولید محتوا به کار میرود. وجه تمایز این API گرافیکی با DirectX و OpenGL، توانایی آن در رندرینگ گرافیکهای دوبعدی و مصرف برق کمتر است.
در ابتدا بسیاری تصور میکردند که Vulkan میتواند OpenGL بهبودیافتهی آینده و ادامهدهندهی مسیر آن باشد، اما گذشت زمان نشان داد که این پیشبینی درست نبود. جدول زیر تفاوتهای عملکرد این دو API گرافیکی را نشان میدهد.
OpenGL | Vulkan |
---|---|
تنها یک ماشین global state دارد | مبتنی بر شیء است و فاقد global state |
state تنها به یک محتوا منحصر میشود | مفهوم تمامی stateها در بافر دستورها قرار گرفته است |
عملکردها فقط بهصورت ترتیبی انجام میشوند | قابلیت برنامهنویسی چندرشتهای دارد |
حافظه و همگامسازی GPU معمولاً مخفی است | کنترل و مدیریت همگامسازی و حافظه مقدور است |
بررسی خطا بهصورت مداوم انجام میشود | درایورها حین اجرا، بررسی خطا انجام نمیدهند. در عوض برای سازندگان، یک لایه اعتبارسنجی در نظر گرفته شده است. |
Mantle
API گرافیکی Mantle، رابطی ارزانقیمت برای رندر بازیهای ویدیویی سهبعدی است که اولین بار توسط AMD و شرکت تولیدکنندهی بازیهای ویدیویی DICE در سال ۲۰۱۳ طراحی شد. هدف از این مشارکت رقابت با Direct3D و OpenGL در کامپیوترهای خانگی بود، بااینحال Mantle در سال ۲۰۱۹ رسما متوقف شد و API گرافیکی Vulkan جای آن را گرفت. Mantle میتوانست بهصورت بهینه بار کاری پردازنده را کاهش داده و گرههای ایجاد شده در فرایند پردازش را از بین ببرد.
Metal
Metal رابط گرافیکی اختصاصی اپل است که مبتنی بر زبان ++C نوشته شده و اولینبار در iOS 8 بهکار گرفته شد. Metal را میتوان ترکیب رابط گرافیکی OpenGL و فریمورک OpenCL دانست که هدف از طراحی آن شبیهسازی APIهای گرافیکی دیگر پلتفرمها مانند Vulkan و DirectX 12 برای سیستمعامل iOS، Mac و tvOS بود. در سال ۲۰۱۷ دومین نسخهی API گرافیکی Metal با پشتیبانی از سیستمهای عامل macOS High Sierra، iOS 11 و tvOS 11 منتشر شد. این نسخه در مقایسه با نسخهی قبلی کارایی بالاتر و بهینهتری داشت.
GDDR چیست
به حافظهی DDR که در واحد پردازش گرافیکی قرار دارد، GDDR یا رم پردازندهی گرافیکی گفته میشود. DDR (مخفف Double Data Rate) یا نرخ انتقال دوگانه، نسخهی پیشرفتهی رم داینامیک همزمان (SDRAM) است و از فرکانسهای مشابه با آن استفاده میکند. تفاوت DDR با SDRAM در تعداد دفعات ارسال داده در هر چرخه است؛ DDR دادهها را دو بار در هر چرخه انتقال میدهد و سرعت حافظه را دو برابر میکند، درحالیکه SDRAM سیگنالها را تنها یک بار در هر چرخه ارسال میکند. DDRها خیلی سریع محبوبیت پیدا کردند، چراکه علاوه بر سرعت انتقال دوبرابری، از SDRAM ارزانتر بوده و همچنین انرژی کمتری نسبت به ماژولهای SDRAM قدیمی مصرف میکنند.
GDDR در سال ۲۰۰۶ برای رندر سریع روی پردازندهی گرافیکی معرفی شد، این حافظه درمقایسهبا DDR معمولی، فرکانس بیشتر و گرمای کمتری دارد و جایگزینی برای VRAM و WRAM محسوب میشود که تا امروز ۶ نسل از آن عرضه شده و هر نسل سریعتر و پیشرفتهتر از نسل قبلی است.
GDDR5 بهعنوان رم ویدئویی نسل قبلی شناخته میشود و ده سال از معرفی آخرین استاندارد فعلی GDDR (یعنی GDDR6) میگذرد؛ GDDR6 با سرعت انتقال ۱۶ گیگابایتبرثانیه (دو برابر GDDR5) و دسترسی خواندن/نوشتن ۳۲ بایتی (برابر با GDDR5) در سری RTX30 انویدیا و جدیدترین کارتهای گرافیک سری 6000 ایامدی به کار میرود؛ نسخههای GDDR از نظر عددی با DDR مطابقت ندارند و GDDR5 مانند GDDR3 و GDDR4 براساس فناوری DDR3 و GDDR6 نیز براساس فناوری DDR4 تولید شدهاند؛ درواقع میتوان گفت GDDR از لحاظ تفاوت در عملکرد، مسیری نسبتاً مستقلتر از DDR طی میکند.
وظیفهی اصلی پردازندهی گرافیکی رندر کردن تصاویر است، بااینحال، برای انجام این کار، به فضایی برای نگهداری اطلاعات مورد نیاز برای ایجاد تصویر کاملشده نیاز دارد، این واحد گرافیکی برای ذخیرهی دادهها از رم (یا همان حافظهی دسترسی تصادفی) استفاده میکند؛ دادههایی که شامل اطلاعات هر پیکسل مرتبط با تصویر و همچنین رنگ و مکان آن روی نمایشگر است. یک پیکسل را میتوان بهعنوان یک نقطهی فیزیکی در یک تصویر شطرنجی تعریف کرد که ساختار دادهی ماتریس نقطهای از شبکهی مستطیلی از پیکسلها را نشان میدهد. رم همچنین میتواند تصاویر تکمیلشده را تا رسیدن زمان نمایش آنها نگه دارد که به آن بافر فریم گفته میشود.
قبل از توسعهی پردازندههای گرافیکی، مسئولیت پردازش تصاویر برای ایجاد خروجی و رندرینگ آنها را پردازنده یا همان CPU بر عهده داشت؛ این کار فشار زیادی به پردازندهها وارد میکرد و باعث کندی سیستم میشد. در واقع جرقههای پیدایش گرافیکهای سهبعدی امروزی با توسعهی بیشتر بازیهای آرکید (Arcade)، کنسولهای گیمینگ، شبیهسازهای نظامی، رباتیک و فضایی و همچنین تصویربرداری پزشکی روشن شد، البته در ابتدای این راه، چالشهای زیادی هم مانند نحوهی پیادهسازی سختافزار، استفاده از تکنیکهای مختلف رندر و کاربردهای آنها و همچنین نحوهی نامگذاریها مطرح بود.
در ادامه و قبل از بررسی تاریخچهی پیدایش واحد پردازش گرافیکی، به معرفی مفاهیمی که در این صنعت مطرح هستند میپردازیم:
تاریخچه گرافیک سه بعدی
اصطلاح GPU برای اولین بار در دههی ۱۹۷۰، بهعنوان مخففی برای واحد پردازش گرافیکی (Graphic Processor Unit) معرفی شد و یک واحد پردازش قابلبرنامهریزی را توصیف میکرد که عملکردی مستقل از واحد پردازندهی مرکزی یا همان پردازنده داشت و مسئولیت تنظیم و خروجی گرافیکی را عهدهدار بود؛ البته در آن زمان این اصطلاح آنگونه که امروزه تعبیر میشود، تعریف نشده بود.
IBM در سال ۱۹۸۱ برای اولین بار دو کارت گرافیک خود از نوع MDA (آداپتور نمایشگر تکرنگ) و CGA (آداپتور گرافیک رنگی) را توسعه داد. MDA از چهار کیلوبایت حافظهی ویدئویی بهرهمند بود و تنها از نمایش متنی پشتیبانی میکرد؛ این گرافیک امروزه دیگر کاربردی ندارد، اما ممکن است در برخی از سیستمهای قدیمی یافت شود.
CGA نیز اولین گرافیک برای کامپیوترها محسوب میشد که تنها به شانزده کیلوبایت حافظه ویدئویی مجهز بود و قابلیت تولید ۱۶ رنگ با وضوح ۱۶۰ در ۲۰۰ پیکسل را داشت. یک سال پس از این اتفاق شرکت فناوری کامپیوتری هرکول (Hercules Graphics) برای پاسخ به کارتهای گرافیکی IBM، گرافیک HGC (کارت گرافیکی هرکول) را با ۶۴ کیلوبایت حافظهی ویدئویی توسعه داد که ترکیبی از MDA با گرافیک بیتمپ شده بود.
در سال ۱۹۸۳ اینتل با معرفی گرافیک iSBX 275 Video Graphics Multimodule وارد بازار کارت گرافیک شد. این کارت میتوانست هشت رنگ را با وضوح ۲۵۶ در ۲۵۶ نمایش دهد. IBM یک سال پس از این اتفاق گرافیکهای PGC یا کنترلکنندهی گرافیک حرفهای (Professional Graphic Controller) و EGA یا آداپتور گرافیکی پیشرفته (Enhanced Graphic Adapter) را معرفی کرد که ۱۶ رنگ را با وضوح ۶۴۰ در ۳۵۰ پیکسل نمایش میدادند.
استاندارد VGA یا آرايهی گرافیکی ویدئویی (Video Graphics Array) در سال ۱۹۸۷ معرفی شد، این استاندارد وضوح تصویر ۶۴۰ در ۴۸۰ را با ۱۶ رنگ و حداکثر ۲۵۶ کیلوبایت حافظهی ویدئویی ارائه میداد. ATI همان سال اولین کارت گرافیک VGA خود را با نام ATI VGA Wonder معرفی کرد؛ برخی از مدلهای این کارت گرافیک حتی به پورتی برای اتصال ماوس مجهز بودند. تا اینجا کارتهای ویدئویی حافظههای کمی داشتند و پردازندهها، پردازشهای گرافیکی را به این حافظههای ویدئویی انتقال میدادند و پس از انجام محاسبات و تبدیل سیگنال، آنها را روی دستگاه خروجی نمایش میدادند.
پس از اینکه اولین بازیهای ویدئویی سهبعدی منتشر شدند، دیگر امکان پردازش سریع ورودیهای گرافیکی روی پردازندهها وجود نداشت؛ در چنین شرایطی مفهوم ابتدایی واحد پردازش گرافیکی شکل گرفت. این مفهوم در ابتدا با معرفی شتابدهندهی گرافیکی توسعه پیدا کرد؛ شتابدهندهی گرافیکی برای تقویت عملکرد سیستم، انجام محاسبات و پردازشهای گرافیکی و سبکتر کردن حجم کاری پردازنده استفاده میشد و تأثیر قابلتوجهی بر عملکرد کامپیوتر و بهویژه پردازشهای گرافیکی فشرده داشت. Silicon Graphics در سال ۱۹۹۲ OpenGL را منتشر کرد که اولین کتابخانهی توابع مختلف برای ترسیم تصاویر سهبعدی است.
پردازندهی گرافیکی از ابتدا بهعنوان مکملی برای پردازنده و سبکتر کردن بار کاری این واحد، تکامل پیدا کرد
۴ سال بعد Voodoo اولین کارت گرافیک خود را توسط شرکتی به نام 3dfx معرفی کرد. این گرافیک Voodoo1 نام داشت و برای رندر گرافیک سهبعدی به نصب کارت گرافیک دوبعدی نیاز داشت و خیلی سریع در میان گیمرها محبوب شد.
انویدیا در سال ۱۹۹۷ در پاسخ به Voodoo شتابدهندهی گرافیکی RIVA 128 را عرضه کرد. RIVA 128 مانند Voodoo1 امکان استفاده از شتابدهندههای گرافیکی را همراه با گرافیکهای دو بعدی برای سازندگان کارتهای ویدئویی فراهم میکرد، اما در مقایسه با Voodoo1 رندر گرافیکی ضعیفتری داشت.
پس از RIVA 128 شرکت 3dfx گرافیک Voodoo2 را بهعنوان جایگزینی برای Voodoo1 عرضه کرد. این اولین کارت گرافیکی بود که از SLI پشتیبانی میکرد و امکان اتصال دو یا چند گرافیک را برای تولید یک خروجی فراهم میکرد. SLI یا رابط پیوند مقیاسپذیر (Scalable Link Interface) نام تجاری فناوری منسوخشدهای است که توسط انویدیا برای پردازش موازی و به منظور افزایش قدرت پردازش گرافیکی توسعه داده شد.
اصطلاح GPU در سال ۱۹۹۹ همزمان با عرضهی جهانی GeForce 256 بهعنوان اولین پردازندهی گرافیکی جهان توسط انویدیا رواج داده شد. انویدیا این GPU را بهعنوان پردازندهای تک تراشه با تبدیل یکپارچهی نمای دو بعدی از صحنهای سهبعدی، نورپردازی و تغییر رنگ سطوح و قابلیت ترسیم بخشهایی از تصویر پس از رندر معرفی کرد. ATI Technologies نیز برای رقابت با انویدیا در سال ۲۰۰۲ گرافیک Radeon 9700 را با اصطلاح واحد پردازش بصری یا VPU منتشر کرد.
با گذشت زمان و پیشرفت تکنولوژی، GPUها به قابلیت برنامهریزی مجهز شدند و همین امر باعث شد انویدیا و ATI نیز به صحنهی رقابت وارد شوند و اولین پردازندههای گرافیکی خود را (GeForce برای انویدیا و Radeon برای ATI) معرفی کنند.
انویدیا در سال ۱۹۹۹ با عرضهی گرافیک GeForce 256 رسماً به بازار کارت گرافیک وارد شد. این گرافیک اولین پردازندهی گرافیکی واقعی در جهان شناخته میشود که ۳۲ مگابایت حافظهی DDR (همان GDDR) داشت و بهطور کامل از DirectX 7 پشتیبانی میکرد.
همزمان با تلاشها برای سرعت بخشیدن به انجام محاسبات و پردازشهای گرافیکی کامپیوترها و بهبود کیفیت آنها، شرکتهای تولیدکنندهی بازیهای ویدئویی و کنسولهای گیمینگ نیز هرکدام به نحوی (سِگا با Dreamcast، سونی با PS1 و نینتندو با Nintendo 64) سعی کردند تا در این حوزه به رقابت بپردازند.
نحوه تولید گرافیک سهبعدی
فرایند تولید گرافیک سه بعدی به سه مرحلهی اصلی تقسیم میشود:
مدلسازی سه بعدی
فرایند توسعهی آرایهای مبتنی بر مختصات ریاضی از رویه یا سطح جسمی (بیجان یا جاندار) به صورت سهبعدی است که ازطریق نرمافزارهای تخصصی با دستکاری اضلاع، رئوس و چندضلعیهایی که در فضای سهبعدی شبیهسازی شدهاند، انجام میگیرد.
اجسام فیزیکی با استفاده از مجموعهای نقاط در فضای سهبعدی نشان داده میشوند که توسط عناصر هندسی مختلف مانند مثلثها، خطوط، سطوح منحنی و غیره به هم متصل میشوند. اساساً مدلهای سهبعدی در ابتدا با اتصال نقاط و تشکیل چندضلعی ایجاد میشوند. چندضلعی، ناحیهای است که از حداقل سه رأس (مثلث) تشکیل شده باشد و یکپارچگی کلی مدل و مناسب بودن آن برای استفاده در انیمیشن به ساختار این چند ضلعیها بستگی دارد.
مدلهای سهبعدی (3D) از دو روش مدلسازی چندضلعی (Vertex) و با اتصال خطوط شبکهای از بردارها یا مدلسازی منحنی (Pixel) با وزندهی به هر نقطه ساخته میشوند؛ امروزه به دلیل انعطافپذیری بیشتر و امکان رندر سریعتر فرایند مدلسازی سهبعدی در روش اول، اکثریت قریب به اتفاق مدلهای سهبعدی، به روش چندضلعی و بافتدار تولید میشوند. یکی از اصلیترین وظایف کارتهای گرافیکی نگاشت بافت (Texture Mapping) است که به یک تصویر یا مدل سهبعدی، بافت اضافه میکند. برای مثال، با اضافه کردن بافت سنگی به یک مدل آن را به تصویر سنگی واقعی شبیه میکند یا با اضافه کردن بافتی شبیه به صورت انسان، برای مدل سهبعدی اسکنشدهای، چهره طراحی میکند.
در روش دوم نیز مدلسازی با کنترل وزنی نقاط منحنی به دست میآیند، البته نقاط درونیابی نمیشوند، بلکه تنها میتوان سطوح منحنی را با استفاده از ازدیاد نسبی چندضلعیها ایجاد کرد. در این روش افزایش وزن برای یک نقطه، منحنی را به آن نقطه نزدیک میکند.
چیدمان و انیمیشن
پس از مدلسازی باید نحوهی قرار دادن و تعیین حرکت اشیا (مدلها، نورها و غیره) در یک صحنه پیش از پرداخت اجسام و ایجاد تصویر مشخص شود؛ بدین معنی که قبل از رندر شدن تصاویر، اجسام باید طرحبندی و درون صحنه چیده شوند. در واقع با تعریف مکان و اندازهی هر جسم، رابطهی فضایی بین اجسام شکل میگیرد. حرکت یا انیمیشن نیز به توصیف زمانی یک جسم اشاره دارد (نحوهی حرکت و تغییر شکل در طول زمان). روشهای رایج طرحبندی و انیمیشن عبارتاند از: فریمبندی (قاببندی) کلیدی، حرکتشناسی معکوس و ضبط حرکت. البته این تکنیکها اغلب به صورت ترکیبی استفاده میشوند.
رندرینگ
در مرحلهی آخر براساس نحوهی قرارگیری نور، انواع سطوح و سایر عوامل مشخصشده، محاسبات کامپیوتری برای تولید و پرداخت تصویر انجام میشود. در این قسمت متریالها و بافتها دادههایی هستند که برای رندر کردن استفاده میشوند.
میزان انتقال نور از سطحی به سطح دیگر و میزان پخش و تعامل آن روی سطوح، دو عمل اساسی در رندرینگ هستند که اغلب با استفاده از نرمافزارهای گرافیکی سهبعدی اجرا میشوند. در واقع رندرینگ فرایند نهایی ایجاد تصویر یا انیمیشن دوبعدی از مدلی سهبعدی و صحنهای آماده به کمک چندین روش مختلف و اغلب تخصصی است که شاید تنها کسری از ثانیه یا گاهی تا چند روز برای یک تصویر/فریم منفرد طول بکشد.
تکنیک سایهزنی
پس از توسعهی پردازندههای گرافیکی برای کم کردن حجم کاری پردازندهها و فراهم کردن بستری برای تولید تصاویر با کیفیتی بسیار چشمگیرتر از قبل، انویدیا و ATI کمکم به بازیگرهای اصلی دنیای گرافیکهای کامپیوتری تبدیل شدند. این دو رقیب برای پیشی گرفتن از یکدیگر سخت تلاش میکردند و هر کدام سعی داشتند تا با افزایش تعداد سطوح در مدلسازی و رندرینگ و بهبود تکنیکها با هم رقابت کنند. تکنیک سایهزنی را میتوان زادهی رقابت آنها دانست.
در صنعت گرافیک کامپیوتری، سایهزنی به فرایند تغییر رنگ جسم/سطح/چندضلعی در صحنهای سهبعدی، براساس مواردی مانند فاصلهی آن از نور، زاویهی آن نسبت به نور یا زاویه سطح نسبت به نور اشاره دارد.
سایهزنها سطوح مناسب نور، تاریکی و رنگ را در حین رندر صحنهای سهبعدی محاسبه میکنند
سایهزنی در طول فرایند رندر توسط برنامهای به نام سایهزن (Shader) انجام میشود که سطوح مناسب نور، تاریکی و رنگ را حین رندر صحنهای سه بعدی محاسبه میکند. در واقع شیدرها برای انجام انواع عملکردهای تخصصی در جلوههای ویژهی گرافیکی، پسپردازش ویدئو و همچنین محاسبات همهمنظوره روی واحدهای پردازش گرافیکی تکامل یافتهاند.
سایهزنی رنگ سطوح را در مدلی سهبعدی براساس زاویهی سطح نسبت به منبع نور یا منابع نور تغییر میدهد.
- در تصویر اولی که در زیر مشاهده میکنید تمام سطوح جعبه با یک رنگ رندر شدهاند و تنها خطوط لبهها برای بهتر دیده شدن تصویر، مشخص شدهاند.
- تصویر دوم همان مدل را بدون خطوط لبهها نشان میدهد؛ در این حالت تشخیص اینکه یک وجه جعبه به کجا ختم میشود و بعد دوباره از کجا شروع میشود، کمی دشوار است.
- در تصویر سوم، تکنیک سایهزنی اعمال شده است؛ تصویر نهایی واقعیتر دیده میشود و سطوح نیز آسانتر تشخیص داده میشوند.
سایهزنها بهطور گسترده در پردازش سینما، تصاویر کامپیوتری و بازیهای ویدئویی برای تولید طیف وسیعی از افکتها استفاده میشوند. سایهزنها یا شیدرها برنامههای سادهای هستند که یک رأس (Vertex) یا پیکسل (Pixel) را توصیف میکنند. سایهزنهای رأس مشخصاتی مانند موقعیت، مختصات بافت، رنگها و… مربوط به هر رأس را توصیف میکنند، درحالیکه سایهزنهای پیکسل ویژگیهای رنگ، عمق z و مقدار آلفای هر پیکسل را توصیف میکنند.
در کل سه نوع سایهزن در استفادهی متداول وجود دارد (شیدرهای پیکسلی، رأسی و هندسی). کارتهای گرافیک قدیمیتر از واحدهای پردازش جداگانهای برای هر سایهزنی استفاده میکنند، اما کارتهای جدیدتر به سایهزنهای یکپارچهای مجهز هستند که هر نوع تکنیکی را میتوانند اجرا کنند و پردازشی بهینهتر ارائه دهند.
سایهزنهای پیکسل
سایهزنهای پیکسل، رنگ و سایر ویژگیهای هر منطقهی پیکسل را محاسبه و رندر میکنند. سادهترین انواع سایهزنهای پیکسل، تنها یک پیکسل صفحهنمایش را بهعنوان رنگ خروجی تولید میکنند. سایهزنهای پیکسل علاوه بر مدلهای سادهی نورپردازی، خروجیهای پیچیدهتری مانند تغییر فضای رنگی، اشباع رنگی، روشنایی (HSL/HSV) یا کنتراست تصویر، تولید تاری، شکوفایی نور، نورپردازی حجمی، نگاشت معمولی (برای جلوهی عمق)، بوکه، سایهزنی سلولی، پوسترسازی، نگاشت برآمدگیها، اعوجاج، افکتهای صفحهی آبی یا صفحهی سبز، مشخص کردن لبهها و حرکات و شبیهسازی افکتهای سایکدلیک نیز ممکن است داشته باشند.
البته در گرافیک سهبعدی، سایهزن پیکسل به تنهایی نمیتواند جلوههای پیچیده ایجاد کند، چراکه تنها روی یک منطقه کار میکند و به اطلاعات مربوط به رأسها دسترسی ندارند، اما اگر محتویات کل صفحه بهعنوان بافت به سایهزن منتقل شود، این شیدرها میتوانند از صفحه و پیکسلهای اطراف نمونهبرداری کنند و طیف گستردهای از افکتهای پسپردازش دو بعدی مانند محو کردن یا تشخیص/افزایش لبهها را برای سایهزنها فعال کنند.
سایهزنهای رأس
سایهزنهای رأس (Vertex) رایجترین نوع سایهزنهای سهبعدی هستند و روی هر رأس دادهشده به پردازندهی گرافیکی یک بار اجرا میشوند. هدف استفاده از این شیدرها، تبدیل موقعیت سهبعدی هر رأس در فضای مجازی به مختصات دو بعدی برای نمایش در مانیتور است. سایهزنهای رأس میتوانند ویژگیهایی مانند مختصات موقعیت، رنگ و بافت را دستکاری کنند، اما نمیتوانند رأسهای جدیدی ایجاد کنند.
سایهزنها برای انجام سریع محاسبات و رندرها به موازیسازی نیاز داشتند؛ مفهوم ترد یا رشته از اینجا متولد شد
ATI در سال ۲۰۰۰ کارتهای گرافیکی سری Radeon R100 را معرفی و با این کار میراثی ماندگار از سری کارتهای گرافیک Radeon را به بازار عرضه کرد. اولین کارتهای گرافیک Radeon با DirectX 7 بهطور کامل سازگار بودند و از فناوری HyperZ ATI بهره میبردند که در واقع از سه تکنولوژی فشردهسازی Z، پاکسازی سریع Z و بافر سلسله مراتبی Z برای حفظ بیشتر پهنای باند و بهبود بهرهوری رندرینگ استفاده میکرد.
انویدیا نیز در سال ۲۰۰۱ سری کارتهای گرافیکی GeForce 3 را عرضه کرد؛ این سری اولین کارتهای گرافیکی در جهان بودند که سایهزنهای پیکسلی قابل برنامهریزی داشتند. پنج سال پس از این اتفاق ATI توسط AMD خریداری شد و از آن پس سری کارتهای گرافیک Radeon با برند ایامدی به فروش میرسیدند. برنامههای سایهزنی برای انجام سریع محاسبات و رندرها به موازیسازی احتیاج داشتند، برای حل این مشکل انویدیا مفهوم ترد یا همان رشته را برای پردازندههای گرافیکی مطرح کرد که در ادامه بیشتر در مورد آن توضیح میدهیم.
تفاوت GPU و CPU
پردازندهی گرافیکی از ابتدا بهعنوان مکملی برای پردازنده و سبکتر کردن بار کاری این واحد، تکامل پیدا کرد. امروزه عملکرد پردازندهها با دستاوردهای جدید در معماری ساخت آنها، افزایش فرکانس و تعداد هستهها، روزبهروز قدرتمندتر میشود، درمقابل پردازندههای گرافیکی بهطور خاص برای سرعت بخشیدن به پردازشهای گرافیکی توسعه داده شدهاند.
پردازندهها به صورتی برنامهریزی شدهاند که بتوانند علاوه بر اینکه یک کار را با کمترین تأخیر و بالاترین سرعت انجام میدهند، خیلی سریع هم بین عملیات جابهجا شوند. در واقع نحوهی پردازش در CPUها، سریالی است.
درمقابل، پردازندهی گرافیکی بهطور خاص برای بهینهسازی توان عملیاتی پردازشهای گرافیکی توسعه داده شده است و امکان انجام کارها بهطور همزمان و موازی را فراهم میکند. در تصویر زیر تعداد هستههای یک پردازنده و تعداد هستههای یک پردازندهی گرافیکی را مشاهده میکنید؛ این تصویر نشان میدهد که تفاوت اصلی بین CPU و GPU در تعداد هستههای آنها برای پردازش یک وظیفه است.
از مقایسهی معماری کلی پردازندهها و پردزاندههای گرافیکی میتوان شباهتهای زیادی بین این دو واحد نیز پیدا کرد. هر دو از ساختارهای مشابهی در لایههای کش بهره میبرند و هردو از کنترلری برای حافظه و یک رم اصلی استفاده میکنند. نمای کلی از معماری پردازندههای مدرن حاکی از آن است که در این واحد با تمرکز بر حافظه و لایههای کش، دسترسی به حافظه با تأخیر کم مهمترین عامل در طراحی پردازندهها است (چیدمان دقیق به فروشنده و مدل پردازنده بستگی دارد).
هر پردازنده از چندین لایه کش تشکیل شده است:
- حافظهی کش سطح یک (L1) سریعترین، کمظرفیتترین و نزدیکترین حافظه به پردازنده است و مهمترین دادههای مورد نیاز برای پردازش را در خود ذخیره میکند.
- لایهی بعدی حافظهی کش سطح دو (L2) یا حافظهی کش خارجی است که نسبت به L1 سرعت کمتر و حجم بیشتری دارد.
- حافظهی کش L3 در پردازنده بین تمام هستهها مشترک است و از لحاظ ظرفیت نسبت به حافظهی کش L1 و L2 حجم بیشتری و سرعت پایینتری دارد؛ حافظهی کش L4 هم مانند L3، نسبت به L1 و L2 حجم بیشتر و سرعت کمتری دارد؛ این دو معمولاً بهصورت اشتراکی استفاده میشوند. اگر دادهها در لایههای کش قرار نگرفته باشند از رم اصلی (DDR) فراخوانی میشوند.
با نگاه به نمای کلی معماری پردازندهی گرافیکی (چیدمان دقیق به تولیدکننده و مدل بستگی دارد) متوجه میشویم که ماهیت این واحد به جای دسترسی سریع به حافظه کش یا کاهش تأخیر، روی به کار انداختن هستههای موجود تمرکز دارد. در واقع پردازندهی گرافیکی از چندین گروه هسته تشکیل شده است که در حافظهی کش سطح یک قرار دارند.
پردازندهی گرافیکی در مقایسه با پردازنده، لایههای حافظهی کش کمتر و کمظرفیتتری دارد، این واحد به ترانزیستورهای بیشتر مختصِ محاسبات مجهز است و کمتر به بازیابی دادهها از حافظه اهمیت میدهد؛ پردازندهی گرافیکی با رویکرد انجام محاسبات موازی توسعه داده شده است.
محاسبات با کارایی بالا (High Performance Computing) یکی از موارد استفادهی مؤثر و قابلاعتماد پردازشهای موازی برای اجرای برنامههای کاربردی پیشرفته است؛ دقیقاً به همین دلیل پردازندههای گرافیکی برای این دست از محاسبات مناسب هستند.
به زبان ساده، فرض کنید برای انجام نوعی از محاسبات سنگین، دو راه پیش رو داشته باشید:
- استفاده از تعداد کمی هستهی قدرتمند که پردازشها را به صورت سریالی انجام میدهند.
- استفاده از تعداد بالای هستههایی نهچندان قدرتمند که میتوانند چندین پردازش را به صورت همزمان انجام دهند.
در سناریوی اول اگر یکی از هستهها را از دست بدهیم با مشکلی جدی روبهرو خواهیم شد؛ عملکرد دو هستهی دیگر تحت تأثیر قرار خواهد گرفت و قدرت پردازشی بهشدت کاهش خواهد یافت، درمقابل اگر در سناریوی دوم هستهای را از دست بدهیم، تغییر محسوسی در روند پردازش به وجود نمیآید و باقی هستهها به کار خود ادامه میدهند.
پردازنده گرافیکی چندین کار را به صورت همزمان و پردازنده یک کار را با سرعت بسیار بالا انجام میدهد
پهنای باند پردازندهی گرافیکی از پهنای باند پردازنده بسیار بالاتر است و به همین دلیل پردازشهای موازی با حجم بالا را خیلی بهتر انجام میدهد. مهمترین مسئله دربارهی پردازندههای گرافیکی این است که این واحد پردازشی، برای پردازش موازی توسعه داده شده و در صورتی که الگوریتم یا محاسبات، سرّی باشند و قابلیت موازیسازی نداشته باشند، اصلاً اجرا نشده و باعث کندی سیستم میشوند. هستههای پردازنده از هستههای پردازندههای گرافیکی قدرتمندتر هستند و پهنای باند این واحد نیز از پهنای باند GPU بسیار کمتر است.
آشنایی با معماری پردازنده گرافیکی
در نگاه اول، پردازندهی مرکزی نسبت به پردازندهی گرافیکی، واحدهای محاسباتی بزرگتر اما کمتری دارد. البته در نظر داشته باشید که یک هسته در پردازنده، سریعتر و هوشمندتر از یک هسته در پردازندهی گرافیکی عمل میکند.
در طول زمان، فرکانس هستههای پردازنده برای بهبود عملکرد به تدریج افزایش پیدا کرد و برخلاف آن، فرکانس هستههای پردازندهی گرافیکی برای بهینه کردن مصرف و تطبیق نصب در گوشیها یا دستگاههای دیگر، کاهش داده شد.
قابلیت انجام غیرمنظم پردازشها را میتوان گواهی بر هوشمند بودن هستههای پردازنده دانست. همانطورکه گفته شد، واحد پردازش مرکزی میتواند دستورالعملها را با ترتیبی متفاوت از آنچه برایش تعریف شده، اجرا کند یا دستورالعملهای مورد نیاز در آیندهای نزدیک را پیشبینی کرده و عملوندها را برای بهینهسازی هرچه بیشتر سیستم و صرفهجویی در زمان، قبل از اجرا، آماده کند.
درمقابل، هستهی یک پردازندهی گرافیکی مسئولیت پیچیدهای بر عهده ندارد و برای پردازشی خارج از دستور و برنامه، آنچنان کار زیادی انجام نمیدهد. بهطور کلی، تخصص اصلی هستههای پردازندههای گرافیکی انجام عملیات ممیز شناور مانند ضرب دو عدد و جمع کردن عددی سوم (A x B + C = Result) با گرد کردن نتیجه به عددی صحیح بود که به اختصار آن را multiply-add یا MAD مینامند یا همان نتیجه را با دقت کامل (بدون کوتاهسازی) در مرحلهی ضرب استفاده میکند که به آن Fused Multiplay-Add یا FMA میگویند.
جدیدترین ریزمعماریهای پردازندههای گرافیکی دیگر امروزه به FMA هم محدود نیستند و عملیات پیچیدهتری مانند رهگیری پرتو یا پردازشهای هستههای تنسور را انجام میدهند. هستههای تنسور (Tensore Cores) و هستههای رهگیری پرتو نیز برای ارائهی رندرهایی بیش از حد واقعگرایانه طراحی شدهاند.
هستههای تنسور
انویدیا در سال ۲۰۲۰، پردازندههای گرافیکی مجهز به هستههای افزودهای را تولید کرد که علاوه بر قابلیت سایهزنی (Shader)، برای پردازشهای هوش مصنوعی، یادگیری عمیق و شبکهی عصبی نیز کاربرد داشتند. این هستهها، تنسور (Tensor) نام دارند. تنسور مفهومی ریاضیاتی است که کوچکترین واحد تصورپذیر آن، صفر بُعد (ساختار صفر در صفر) دارد و تنها یک مقدار را شامل میشود. با افزایش تعداد بُعدها، ساختارهای دیگر تنسور عبارتاند از:
- تنسور یکبُعدی: برداری (Vector با ساختار صفر در یک)
- تنسور دوبُعدی: ماتریسی (Matrix با ساختار یک در یک)
هستههای تنسور در دستهی SIMD یا «دستورالعمل تکی برای چندین داده» قرار میگیرند و استفاده از آنها در پردازندههای گرافیکی با فراهم کردن تمامی نیازهای محاسباتی و پردازشی موازی، تراشهای بسیار باهوشتر از ماشینحساب برای جلوههای گرافیکی به وجود آورد. انویدیا در سال ۲۰۱۷ گرافیکی را با معماری کاملاً جدید بهنام ولتا (Volta) معرفی کرد که با هدفگیری بازارهای حرفهای طراحی و ساخته شده بود؛ این گرافیک به هستههایی مخصوص محاسبههای تنسور مجهز بود، اما پردازندههای گرافیکی GeForce از آن بیبهره بودند.
در آن زمان هستههای تنسور قابلیت انجام ضرب اعداد اعشاری تا ابعاد ۱۶ بیتی (FP16) و جمع با ابعاد ۳۲ بیتی (FP32) را داشتند. کمتر از یک سال بعد، انویدیا معماری تورینگ را معرفی کرد؛ که تنها تفاوتش با معماری قبلی فراهم کردن پشتیبانی از هستههای تنسور برای پردازندههای گرافیکی GeForce و فرمتهای دادهای مانند اعداد صحیح هشت بیتی بود.
در سال ۲۰۲۰ معماری امپر در پردازندههای گرافیکی A100 برای دیتاسنترها معرفی شد؛ در این معماری بهرهوری و قدرت هستهها افزایش پیدا کرده، تعداد عملیات در هر چرخه چهار برابر شد و فرمتهای دادهای جدیدی هم به مجموعهی پشتیبانیشده، اضافه شده بود. امروزه هستههای تنسور قطعات سختافزاری خاص و محدودی هستند که در تعداد کمی از گرافیکهای مختص مصرفکننده استفاده میشوند. اینتل و AMD (دو بازیگر دیگر در دنیای گرافیکهای کامپیوتری) در پردازندههای گرافیکی خود هستههای تنسور ندارند؛ اما شاید در آینده فناوری مشابهی عرضه کنند.
- هستههای تنسور در فیزیک و مهندسی و در ریاضیات کاربرد فراوانی دارند: میتوانند محاسبات پیچیده الکترومغناطیس و نجوم و مکانیک سیالات را انجام دهند.
- هستههای تنسور میتوانند وضوح تصاویر را افزایش دهند: این هستهها تصاویر را در سطح گرافیک پایینتری (یا رزولوشن پایینتر) استخراج کرده و بعد از اتمام رندرگیری کیفیت تصاویر را بالا میبرند.
- هستههای تنسور نرخ فریم را بالا میبرند: هستههای تنسور میتوانند بعد از فعال کردن قابلیت رهگیری پرتو در بازیها، نرخفریم را در بازی افزایش دهند.
موتور رهگیری پرتو
پردازندههای گرافیکی علاوه بر هستهها و لایههای حافظهی کش ممکن است شامل سختافزاری برای تسریع رهگیری پرتو (Ray Tracing) نیز باشند، که تابیدن منبع نور روی اجسام را شبیهسازی کرده و منطقهبندیهای مختلفی را از لحاظ تابش نور ایجاد میکند. رهگیری پرتوهای سریع در بازیهای ویدئویی میتواند تصاویر واقعیتر و باکیفیتتری را به نمایش بگذارد.
قابلیت رهگیری پرتو یکی از بزرگترین پیشرفتهای سالهای اخیر در گرافیک کامپیوترها و صنعت گیمینگ است. این قابلیت در ابتدا تنها در صنعت فیلمسازی، تولید تصاویر کامپیوتری و در انیمیشن و افکتهای بصری بهکار گرفته میشد، اما امروزه کنسولهای گیمینگ PS5 و XBOX سری X نیز از قابلیت رهگیری پرتو پشتیبانی میکنند.
در دنیای واقعی هر آنچه میبینیم نتیجه برخورد نور به اجسام و بازتاب آن به چشم ما است؛ رهگیری پرتو همین کار را به صورت برعکس و با شناسایی منابع نور، مسیر پرتوهای نور، متریال، نوع سایه و میزان انعکاس هنگام برخورد با اجسام انجام میدهد. الگوریتم رهگیری پرتو بازتاب نور از اجسام با جنسهای متفاوت را به شکلهای متفاوت و واقعیتری نمایش میدهد، سایهی اجسامی را که در مسیر پرتو نوری قرار دارند بسته به شفاف یا نیمهشفاف بودن آنها ترسیم میکند و از قوانین فیزیک پیروی میکند. به همین دلیل تصاویر تولیدشده با این قابلیت تا حد زیادی به واقعیت نزدیک هستند.
موتور رهگیری پرتو خاموش (سمت راست) درمقابل موتور رهگیری پرتو روشن (سمت چپ)
انویدیا برای اولین بار قابلیت رهگیری پرتو را در سال ۲۰۱۸ و در گرافیکهای سری RTX تحت معماری Turing منتشر کرد و پس از آن هم درایور جدیدی معرفی کرد که پشتیبانی از رهگیری پرتو را برای برخی از گرافیکهای سری GTX فراهم میکرد که عملکردی ضعیفتر نسبت به سری RTX دارند.
AMD نیز با معرفی معماری RDNA 2 رهگیری پرتو را به کنسولهای PS5 و Xbox سری XS وارد کرد. فعال شدن این قابلیت در بازیها به دلیل بار پردازشی سنگین، نرخفریم را کاهش میدهد؛ برای مثال اگر یک بازی در حالت عادی با نرخ ۶۰ فریمبرثانیه روی سیستمی اجرا شود ممکن است با قابلیت رهگیری پرتو تنها ۳۰ فریمبرثانیه ارائه دهد.
نرخ فریم که بر حسب فریمبرثانیه (FPS) اندازهگیری میشود، معیاری مناسب برای نشان دادن عملکرد پردازندهی گرافیکی به حساب میآید که نشاندهندهی تعداد تصاویر تکمیلشدهای است که در هر ثانیه میتوان نمایش داد؛ برای مقایسه، چشم انسان میتواند حدود ۲۵ فریمبرثانیه را پردازش کند، بااینحال بازیهای اکشن سریع باید حداقل ۶۰ فریمبرثانیه پردازش کنند تا یک جریان بازی به شکل روان نمایش داده شود.
GPGPU چیست
کاربران زیادی از قابلیت پردازش موازی و سریع پردازندههای گرافیکی به نحوی سوءاستفاده کردند و پردازشهایی با امکان محاسبات موازی را بدون در نظر گرفتن وظیفهی سنتی پردازندهی گرافیکی به این واحد منتقل میکردند. GPGPU یا پردازندهی گرافیکی همهمنظوره راهکاری بود که انویدیا برای رفع این مشکل معرفی کرد.
GPGPU (مخفف General Purpose Graphics Processing Unit) همان واحد پردازش گرافیکی است که محاسبات غیرتخصصی (یا همان وظایف CPU) را نیز انجام میدهد.
در واقع GPGPUها برای انجام کارهایی که قبلاً توسط پردازندههای پرقدرت صورت میگرفتند، مانند محاسبات فیزیک، رمزگذاری/رمزگشایی، محاسبات علمی و تولید ارزهای دیجیتال مانند بیت کوین استفاده میشوند. ازآنجاکه پردازندهها گرافیکی برای موازیسازیهای عظیم ساخته شدهاند، میتوانند از بار محاسبهای که بر دوش قدرتمندترین پردازندهها است، بکاهند. یعنی همان هستههایی که برای سایهزدن چندین پیکسل بهطور همزمان به کار میروند، میتوانند بهطور مشابه چندین جریان داده را نیز به صورت همزمان پردازش کنند. البته این هستهها به اندازهی هستههای پردازنده پیچیده نیستند.
GeForce 3 اولین پردازندهی گرافیکی انویدیا بود که سایهزنهای قابل برنامهریزی داشت. در آن زمان، هدف برنامهنویسان واقعیتر کردن گرافیکهای سهبعدی شطرنجیشده یا بیتمپشده بود و این پردازنده گرافیکی انویدیا، قابلیتهایی مانند تبدیل سهبعدی، نقشهبرداری ناهمواریها و محاسبات نورپردازی را فراهم میکرد.
پس از GeForce 3، پردازنده گرافیکی 9700 ATI، مجهز به DirectX 9، با تواناییهای بیشتری برای برنامهنویسی مشابه پردازندهها معرفی شد. با معرفی ویندوز ویستا، همراه با DirectX 10، هستههای سایهزن یکپارچه دیگر بهعنوان استاندارد شناخته شدند. این قابلیت کشفشدهی جدید پردازندههای گرافیکی، محاسبات بیشتر مبتنی بر پردازندهها را امکانپذیر میکرد.
از زمان انتشار DirectX 10 که به سایهزنهای یکپارچه برای ویندوز ویستا مجهز بود، تمرکز بیشتری روی GPGPUها صورت گرفت و زبانهای سطح بالاتری برای تسهیل برنامهنویسی برای محاسبات روی پردازندههای گرافیکی توسعه داده شدند. ایامدی و انویدیا، هر دو با رابطهای برنامهنویسی (OpenCL متنباز و CUDA مخصوص انویدیا) رویکردهایی برای توسعهی GPGPU داشتند.
CUDA چیست؟
به زبان ساده CUDA به برنامهها اجازه میدهد از مغز کارت گرافیک یا همان پردازندهی گرافیکی بهعنوان پردازندهای فرعی استفاده کنند. پردازنده وظایف خاصی را به گرافیکِ مجهز به هستهی CUDA منتقل میکند، این گرافیک برای پردازش و محاسبهی مواردی مانند نور، حرکت و تعامل در سریعترین زمان ممکن بهینهسازی شده است و حتی در مواقع لازم پردازشها را از چندین مسیر بهطور همزمان انجام میدهد. دادههای پردازششده سپس به پردازنده بازگردانده میشوند و پردازنده از آنها برای محاسبات بزرگتر و مهمتری استفاده میکند.
مزایای هستههای CUDA
سیستمهای کامپیوتری مبتنی بر نرمافزارها هستند، بنابراین بخش اعظمی از پردازشها باید در کد برنامهها، برنامهریزی شود و ازآنجاکه عملکرد اصلی CUDA در محاسبه، تولید داده و دستکاری تصویر نهفته است، استفاده از هستههای CUDA به برنامهنویسان کمک میکند تا زمان پردازش افکتها، رندر و خروجیها را بهویژه در تغییرات مقیاسها و همچنین شبیهسازیهایی مانند دینامیک سیالات و فرایندهای پیشبینی به میزان بالایی کاهش دهند. CUDA همچنین در منابع نور و ردیابی اشعه عالی عمل میکند و عملکردهایی شبیه به افکتهای رندر، رمزگذاری، تبدیل ویدئو و… به کمک آن بسیار سریعتر پردازش میشوند.
CUDA برای کار با زبانهای برنامهنویسی مانند C، C++ و Fortran طراحی شده است و همین امر استفاده از پردازندهی گرافیکی را برای متخصصان در برنامهنویسی موازی آسانتر میکند. درمقابل، APIهای قبلی مانند Direct3D و OpenGL به مهارتهای پیشرفته در برنامهنویسی گرافیکی نیاز داشتند.
این طراحی برای پردازش موازی بلوکهای بزرگ داده، مانند مثالهای زیر، نسبت به پردازندههای مرکزی مؤثرتر عمل میکند:
- توابع هش رمزنگاری
- یادگیری ماشینی
- شبیهسازی دینامیک مولکولی
- موتورهای فیزیک
- الگوریتمهای مرتبسازی
- تواناییهای برنامهنویسی
معایب هستههای CUDA
CUDA رویکرد اختصاصی انویدیا برای معرفی پردازندهای گرافیکی شبیه به پردازندهی مرکزی (GPGPU) است، به همین دلیل برای بهرهمندی از مزایای آن باید فقط از محصولات این شرکت استفاده کنید. برای مثال، اگر مک پرو داشته باشید، امکان استفاده از قابلیتهای هستههای CUDA را ندارید، چراکه این دستگاه از گرافیک AMD برای پردازشهای گرافیکی استفاده میکند؛ علاوه بر این، برنامههای کمتری از CUDA نسبت به جایگزین آن پشتیبانی میکنند.
OpenCL؛ جایگزین CUDA
OpenCL سیستم نسبتاً جدید و متنبازی است که جایگزینی برای CUDA در نظر گرفته میشود. هر کسی میتواند بدون پرداخت هزینهای برای فناوری یا مجوز اختصاصی از عملکرد این استاندارد در سختافزار یا نرمافزار خود بهره ببرد. CUDA از گرافیک بهعنوان پردازندهای مشترک استفاده میکند، درحالیکه OpenCL اطلاعات را بهطور کامل منتقل میکند و از گرافیک بیشتر بهعنوان پردازندهای مجزا استفاده میکند. این تفاوت در نحوهی بهکارگیری گرافیک را شاید نتوان بهطور دقیق اندازهگیری کرد، اما تفاوت قابل سنجش دیگری را که بین این دو استاندارد وجود دارد، میتوان دشواری کدنویسی برای OpenCL نسبت به CUDA دانست؛ بهعنوان یک کاربر، شما به هیچ فروشندهای وابسته نیستید و پشتیبانی آنقدر گسترده است که اکثر برنامهها حتی به پذیرش آن اشاره نمیکنند.
CUDA و OpenCL درمقابل OpenGL
همانطورکه قبلاً اشاره شد، OpenGL را میتوان شروع داستان این رقابت دانست؛ البته هدف از توسعهی این واسط برنامهنویسی استفاده از گرافیک بهعنوان پردازندهای همهمنظوره نیست و در عوض بهسادگی برای ترسیم پیکسلها یا رئوس روی صفحه به کار میرود. OpenGL سیستمی است که به گرافیک اجازه میدهد تصاویر دو بعدی و سهبعدی را بسیار سریعتر از پردازنده ایجاد کند. همانطورکه CUDA و OpenCL جایگزین یکدیگر هستند، OpenGL نیز جایگزینی برای سیستمهایی مانند DirectX در ویندوز است.
به زبان ساده، OpenGL تصاویر را بسیار سریع ترسیم میکند، OpenCL و CUDA محاسبات لازم را هنگام تعامل ویدئوها با جلوهها و رسانههای دیگر پردازش میکنند؛ OpenGL ممکن است محتوایی را در رابط ویرایش قرار دهد و آن را پخش کند، اما وقتی صحبت از تصحیح رنگ برای این محتوا به میان میآید، CUDA یا OpenCL محاسبات لازم را برای تغییر پیکسلها انجام میدهند. هم OpenCL و هم CUDA میتوانند از سیستم OpenGL استفاده کنند و سیستمی مجهز به گرافیکی با آخرین پشتیبانی OpenGL همیشه سریعتر از کامپیوتری با پردازنده و گرافیک یکپارچه عمل خواهد کرد.
OpenCL یا CUDA
تفاوت اصلی بین CUDA و OpenCL در اختصاصی بودن چارچوب CUDA است که توسط انویدیا ایجاد شده و درمقابل OpenCL متنباز است. با فرض اینکه نرمافزار و سختافزار سیستمی از هر دو گزینه پشتیبانی کند، توصیه میشود در صورت وجود گرافیک انویدیا از CUDA استفاده کنید؛ این استاندارد در بیشتر مواقع سریعتر از OpenCL عمل میکند. علاوه بر این گرافیکهای انویدیا از OpenCL هم پشتیبانی میکنند، البته بهرهوری گرافیکهای AMD از OpenCL بیشتر است. انتخاب بین CUDA یا OpenCL به نیازهای فرد، نوع کار، نوع سیستم و حجم کاری و عملکرد آن بستگی دارد.
برای مثال، ادوبی در وبسایت خود توضیح داده است که با استثنائات بسیار کمی، هر کاری که CUDA برای Premiere Pro انجام میدهد، میتواند توسط OpenCL نیز انجام شود. بااینحال اکثر کاربرانی که این دو استاندارد را مقایسه کردهاند، معتقدند که CUDA با محصولات ادوبی سریعتر عمل میکند.
مطرحترین برندها
در بازار پردازندههای گرافیکی، AMD و انویدیا نامهای شناختهشده و مطرح هستند. اولی قبلاً ATI بود و در ابتدا با نام تجاری Radeon برای پردازندههای گرافیکی خود در سال ۱۹۸۵ شروع به کار کرد؛ سپس انویدیا با عرضهی اولین پردازندهی گرافیکی خود در سال ۱۹۹۹ بهعنوان رقیب ATI شناخته شد. AMD در سال ۲۰۰۶، ATI را خریداری کرد و اکنون در دو جبههی مختلف با انویدیا و اینتل رقابت میکند. در واقع، سلیقهی شخصی و وفاداری به برند، مهمترین عواملی هستند که ایامدی و انویدیا را از هم متمایز میکنند.
انویدیا اخیراً گرافیک سری GTX 10 عرضه کرده است، اما گزینههای همردهی AMD معمولاً انتخابهای مقرونبهصرفهتری هستند. رقیبهای دیگر مانند اینتل نیز در بازی هستند و راهحلهای گرافیکی خود را روی تراشه پیادهسازی میکنند، اما در حال حاضر AMD و انویدیا را میتوان بهعنوان مطرحترین برندها در این حوزه معرفی کرد. سرعت پردازشی گرافیکهای انویدیا از گرافیکهای AMD پایینتر است. گرافیکهای انویدیا با تعداد هستههای بیشتر و فرکانسهای بالاتر برای گیمینگ مناسب هستند، اما ازآنجاکه کش پایینتری دارند، برای انجام برخی پردازشهای موازی مانند ماینینگ و استخراج ارزهای دیجیتال به پای پردازندههای AMD نمیرسند. در ادامه سه برند مطرح در دنیای گرافیک و معماری گرافیکهای آنها را بهطور خلاصه معرفی میکنیم و در آیندهای نزدیک در مقالهای جداگانه این رقیبها، معماریها و محصولاتشان را به تفصیل بررسی خواهیم کرد.
اینتل
اینتل (Intel) یکی از بزرگترین تولیدکنندههای تجهیزات کامپیوتری در جهان است که در زمینهی تولید سختافزار، انواع مختلف ریزپردازنده، نیمرسانا، مدار مجتمع، پردازنده و پردازندهی گرافیکی فعالیت میکند. AMD و انویدیا دو رقیب مطرح اینتل هستند و هرکدام نیز طرفداران مخصوص به خود را دارند. اولین تلاش اینتل برای عرضهی کارت گرافیک اختصاصی Intel740 بود که در سال ۱۹۹۸ منتشر شد، اما به دلیل عملکردی ضعیفتر از انتظارات بازار، ناموفق جلوه کرد و اینتل را مجبور کرد تا توسعه محصولات گرافیکی گسسته را متوقف کند. بااینحال، فناوری این گرافیک در خط تولید Intel Extreme Graphics زنده ماند. اینتل پس از این تلاش ناموفق، با معماری Larrabee یک بار دیگر در سال ۲۰۰۹ شانس خود را در دنیای گرافیک امتحان کرد. این بار، فناوری توسعهیافتهی قبلی در معماری Xeon Phi استفاده شد.
در آوریل ۲۰۱۸، خبری مبنی بر جمعآوری تیمی برای توسعهی واحدهای پردازش گرافیکی گسسته توسط اینتل منتشر شد که هم دیتاسنترها و هم بازار گیمینگ را هدف قرار داده بود و در همین راستا نیز راجا کودوری، مدیر سابق گروه فناوریهای Radeon از ایامدی را جذب کرد. اینتل خیلی زود اعلام کرد که قصد دارد در سال ۲۰۲۰ پردازندهی گرافیکی مجزایی را معرفی کند. اولین پردازندهی گرافیکی گسستهی Xe با نام رمز DG1 در اکتبر ۲۰۱۹ به صورت آزمایشی عرضه شد و انتظار میرفت از آن بهعنوان GPGPU برای کاربردهای دیتاسنترها و رانندگی خودکار نیز استفاده شود. این محصول در ابتدا با لیتوگرافی ۱۰ نانومتری و سپس در سال ۲۰۲۱ با لیتوگرافی ۷ نانومتری ساخته شد و از فناوری بستهبندی انباشت سهبعدی (قالببندی Foveros مخصوص اینتل) استفاده میکرد.
Intel Xe یا به اختصار Xe، نام معماری گرافیک اینتل است که از نسل ۱۲ در پردازندههای اینتل بهکار میرود، این شرکت توسعهی گرافیک مجزا و کارت گرافیک دسکتاپ را نیز براساس معماری Xe و نام تجاری Arc Alchemist آغاز کرده است. Xe خانوادهای از معماریها محسوب میشود که هر کدام تفاوتهای قابلتوجهی با یکدیگر دارند و از ریزمعماری های Xe-LP، Xe-HP، Xe-HPC و Xe-HPG تشکیل شده است.
بر خلاف واحدهای پردازش گرافیک قبلی اینتل که از واحدهای اجرایی (EU) بهعنوان واحد محاسباتی استفاده میکردند، Xe-HPG و Xe-HPC از هستههای Xe استفاده میکنند. هستههای Xe واحدهای منطق محاسباتی برداری و ماتریسی دارند و به آنها موتورهای برداری و ماتریسی گفته میشود و علاوه بر این واحدها، به حافظهی کش L1 و سایر سختافزارها نیز مجهز هستند.
- Xe-LP (توان کم): Xe-LP نوع کم مصرف معماری Xe است و بهعنوان گرافیک یکپارچه در پردازندههای نسل یازدهم اینتل (Core)، پردازندههای گرافیکی مجزای موبایل Iris Xe MAX (با اسم رمز DG1) و پردازندههای گرافیکی سرور H3C XG310 (با اسم رمز SG1) استفاده میشوند. این سری پردازندههای گرافیکی، با ولتاژی مشابه نسل قبل، فرکانس پردازشی بیشتری ارائه میدهند. Xe-LP در بزرگترین پیکربندی خود، ۵۰ درصد واحد اجرایی (EU) بیشتری نسبت به ۶۴ واحد اجرایی نسل یازدهم معماری گرافیکی در سری آیسلیک دارد و به همین دلیل منابع محاسباتی آن بهطرز چشمگیری افزایش یافتهاند. در کنار افزایش ۵۰ درصدی واحدهای اجرایی، اینتل معماری پردازندههای گرافیکی Xe-LP را بهبود داده و به جای دو واحد محاسبه و منطق (ALU) با چهار مسیر در نسل قبلی از هشت مسیر به ازای هر واحد محاسبه و منطق بهره میبرد. علاوه بر این در معماری Xe LP، یک حافظهی کش سطح یک نیز اضافه شده که تأخیر در ارسال داده را کاهش میدهد و از فشردهسازی داده بهروش end-to-end نیز پشتیبانی میکند که پهنای باند را افزایش داده و و انجام کارهایی مانند استریم بازی، ضبط چت ویدئویی و... را سرعت میبخشد.
- Xe-HP (عملکرد بالا): Xe-HP گرافیک دیتاسنترها و با کارایی بالا به حساب میآید که برای عملکرد FP64 و مقیاسپذیری چند کاشی بهینه شده است.
- Xe-HPC (محاسبات با عملکرد بالا): Xe-HPC نوع محاسباتی با کارایی بالا در معماری Xe است. هر هسته در Xe-HPC شامل ۸ موتور برداری و ۸ موتور ماتریسی، به همراه یک حافظهی کش L1 بزرگ ۵۱۲ کیلوبایتی است.
- Xe-HPG (گرافیک با کارایی بالا): Xe-HPG نوع گرافیکی با کارایی بالا معماری Xe است که از ریزمعماری مبتنی بر Xe-LP استفاده میکند و با بهبودهای Xe-HP و Xe-HPC همراه است. Xe-HPG همواره بر عملکرد گرافیکی متمرکز بوده و از ردیابی پرتوی شتابدهندهی سختافزاری، DisplayPort 2.0، سوپرنمونهبرداری مبتنی بر شبکههای عصبی (XeSS) مشابه DLSS انویدیا و DirectX 12 Ultimate پشتیبانی میکند. هر هستهی Xe-HPG شامل ۱۶ موتور برداری و ۱۶ موتور ماتریسی است.
انویدیا
انویدیا (Nvidia) در سال ۱۹۹۳ تأسیس شد و یکی از سازندگان اصلی کارتهای گرافیک و پردازندههای گرافیکی (GPU) به حساب میآید. انویدیا انواع مختلف واحدهای گرافیکی را تولید میکند که هر کدام قابلیتهای منحصربهفردی ارائه میدهند. در ادامه به صورت مختصر ریزمعماریهای واحدهای گرافیکی انویدیا و بهبودهای هرکدام نسبت به نسل قبل را خیلی خلاصه معرفی میکنیم:
- کلوین: ریزمعماری کلوین (Kelvin) در سال ۲۰۰۱ منتشر شد و در پردازنده گرافیکی کنسول بازی اصلی Xbox به کار رفت. واحدهای گرافیکی سری GeForce 3 و GeForce 4 با این ریزمعماری عرضه شدند.
- رانکین: انویدیا ریزمعماری رانکین (Rankine) را در سال ۲۰۰۳ و بهعنوان نسخهی بهبودیافتهی ریزمعماری کلوین معرفی کرد. این ریزمعماری در سری گرافیکهای GeForce 5 استفاده شد. ظرفیت حافظهی ویدئویی در این ریزمعماری ۲۵۶ مگابایت بود و از برنامههای سایهزنی vertex و fragment پشتیبانی میکرد. سایهزنهای Vertex هندسهی صحنه را تغییر میدهند و طرحبندی سهبعدی ایجاد میکنند. شیدرهای Fragment نیز در فرایند رندر، رنگ هر پیکسل را مشخص میکنند.
- کوری: کوری (Curie) ریزمعماری بهکاررفته در گرافیکهای سری 6 و 7 GeForce در سال ۲۰۰۴ بهعنوان جانشین Rankine منتشر شد. ظرفیت حافظهی ویدئویی در کوری ۵۱۲ مگابایت بود و اولین نسل از پردازندههای گرافیکی انویدیا محسوب میشد که از قابلیت رمزگشایی ویدئوی PureVideo پشتیبانی میکرد.
- تسلا: ریزمعماری گرافیکی تسلا (Tesla) در سال ۲۰۰۶ معرفی شد و چندین تغییر مهم در خط تولید پردازندههای گرافیکی انویدیا ایجاد کرد. معماری تسلا علاوه بر اینکه در واحدهای گرافیکی سری 8، 9، 100، 200 و 300 GeForce به کار میرفت، در محصولات گرافیکی Quadro نیز برای مواردی غیر از پردازشهای گرافیکی نیز استفاده میشود. انویدیا در سال ۲۰۲۰ و بعد از معرفی خودروی الکتریکی تسلا توسط ایلان ماسک، برای جلوگیری از سردرگمی بیشتر، استفاده از نام تسلا را متوقف کرد.
- فِرمی: فرمی (Fermi) در سال ۲۰۱۰ منتشر شد و قابلیتهایی مانند پشتیبانی از ۵۱۲ هستهی CUDA، پارتیشنبندی حافظهی کش L1/حافظه اشتراکی، ظرفیت ۶۴ کیلوبایتی برای رم و پشتیبانی از کد تصحیح خطا (ECC) را ارائه میکرد. برخی گرافیکهای سری GeForce 8، GeForce 500 و GeForce 400 مبتنی بر این ریزمعماری تولید شدند.
- کِپلر: ریزمعماری گرافیکی کپلر (Kepler) پس از فرمی در سال ۲۰۱۲ معرفی شد و با پیشرفتهایی کلیدی نسبت به نسل قبل همراه بود. این ریزمعماری به هستههای اجرایی جدیدی با قابلیت پردازشهای همزمان (SMX) مجهز بود و از TXAA (روش ضد آلیاسینگ) پشتیبانی میکرد. در تکنیک ضد آلیاسینگ در ویدئوهای کامپیوتری، اطلاعات فریمهای گذشته و فریم فعلی برای حذف ناهمواریها در فریم فعلی با هم ترکیب میشوند و هر پیکسل یک بار در هر فریم نمونهبرداری میشود، اما در هر فریم، نمونه در مکان متفاوتی در پیکسل قرار دارد. پیکسلهای نمونهگیری شده در فریمهای گذشته با پیکسلهای نمونهگیری شده در قاب فعلی ترکیب میشوند تا تصویری با کیفیت بهتر ایجاد کنند. ریزمعماری کپلر برق کمتری مصرف میکند و تعداد هستههای CUDA در آن به ۱۵۳۶ افزایش پیدا کرده است. این ریزمعماری با تقویت پردازندهی گرافیکی قابلیت اورکلاک خودکار دارد و به قابلیت GPUDirect که امکان برقراری ارتباط واحدهای گرافیکی را بدون نیاز به دسترسی به پردازنده فراهم میکند، مجهز است. انویدیا در برخی از واحدهای گرافیکی سری GeForce 600، GeForce 700 و GeForce 800M از این ریزمعماری بهره گرفته است.
- مکسول: ریزمعماری مکسول (Maxwell) در سال ۲۰۱۴ منتشر شد و نسل اول پردازندههای گرافیکی مبتنی بر این ریزمعماری نسبت به فِرمی، پردازندههای کارآمدتر درنتیجهی پیشرفتهای مربوط به کنترل پارتیشنبندی منطقی، کاهش اتلاف توان دینامیکی با حذف فرکانس زمانی که مدار در حال استفاده نیست، زمانبندی دستورالعملها و متعادلسازی حجم کاری، ۶۴ کیلوبایت حافظهی مشترک اختصاصی برای هر واحد اجرایی، بهبود عملکرد با کمک حافظهی مشترک بومی، پشتیبانی از موازی کاری پویا را نوید میدادند. برخی از واحدهای گرافیکی سری GeForce 700، GeForce 800M، GeForce 900 و Quadro Mxxx با ریزمعماری مکسول به بازار عرضه شدند.
- پاسکال: پاسکال (Pascal) در سال ۲۰۱۶ جانشین ریزمعماری مکسول شد. گرافیکهای مبتنی بر این ریزمعماری (سری GeForce 10) در مقایسه با نسل قبلی از پیشرفتهایی مانند پشتیبانی از ارتباطات NVLink، برای سرعت بالاتری نسبت به رابط PCIe، حافظه با پهنای باند بالا 2 (HBM2) برابر با ۷۲۰ گیگابایت، قابلیت پردازش پیشاجرایی (Preemption) یا بازپسگیری (که با ایجاد وقفهی موقتی در یک پردازش درحالاجرا، پردازش دیگری با اولویت بالاتر انجام میدهد) و متعادلسازی فعال برای بهینهسازی استفاده از منابع پردازندهی گرافیکی بهره میبرند.
- ولتا: ولتا (Volta) تکرار ریزمعماری منحصربهفردی بود که در سال ۲۰۱۷ منتشر شد. تا قبل از ولتا اکثر ریزمعماریهای قبلی پردازندههای گرافیکی انویدیا برای مصارف عادی توسعه داده شده بودند، اما پردازندههای گرافیکی ولتا کاملاً برای کاربردهای حرفهای مناسب بودند؛ علاوه بر این، هستههای تنسور (Tensor Cores) نیز اولین بار در این ریزمعماری به کار گرفته شدند. همانطور که پیشتر اشاره شد، هستههای تنسور نوع جدیدی از هستههای پردازشی هستند که محاسبات ریاضی تخصصی و عملیات ماتریسی را انجام میدهند و بهطور خاص در هوش مصنوعی و یادگیری عمیق کاربرد دارند. واحدهای گرافیکی سری Tesla V100، Tesla V100S، Titan V و Quadro GV100 مبتنی بر ریزمعماری ولتا توسعه داده شدهاند.
- تورینگ: ریزمعماری تورینگ (Turing) در سال ۲۰۱۸ معرفی شد و علاوه بر پشتیبانی از هستههای تنسور به تعدادی پردازندهی گرافیکی متمرکز بر مصرفکننده نیز مجهز بود. انویدیا از این ریزمعماری در پردازندههای گرافیکی سری Quadro RTX و GeForce RTX استفاده میکند. تورینگ از ردیابی پرتوهای بلادرنگ یا همان RTX (مخفف Real-Time Ray Tracing) پشتیبانی میکند و برای انجام محاسبات سنگین مانند واقعیت مجازی (VR) کاربرد دارد. انویدیا برای واحدهای گرافیکی سری GeForce 16، GeForce 20، Quadro RTX و Tesla T4 از این ریزمعماری بهره گرفته است.
- امپر: امپر (Ampere) جدیدترین ریزمعماری انویدیا است که بیشتر برای محاسبات با عملکرد بالا (HPC) و کاربردهای هوش مصنوعی به کار میرود. هستههای موجود در این ریزمعماری از نوع تنسور هستند و به رابط نسل سوم NVLink، قابلیت پراکندگی ساختاری (تبدیل پارامترهای غیرضروری به صفر برای فعال کردن آموزش مدلهای هوش مصنوعی)، ردیابی پرتوهای نسل دوم، قابلیت MIG (مخفف Multi-Instance GPU) برای فعال کردن پارتیشنبندی جداگانه و بهینهسازی عملکرد هستههای CUDA مجهز هستند. واحدها گرافیکی سری GeForce 30، ورک استیشنها و دیتا سنترهای انویدیا مبتنی بر این ریزمعماری توسعه داده شدهاند.
بهطور کلی شاید بتوان تورینگ را محبوبترین ریزمعماری انویدیا دانست، زیرا قابلیتهای رهگیری پرتو و رندرینگ ترکیبی در تورینگ، انیمیشنهای سهبعدی چشمگیر و تصاویری واقعگرایانه خلق میکند که با واقعیت شباهت بسیاری دارند. به ادعای انویدیا، قابلیت ردیابی بیدرنگ پرتو (Real-Time Ray Tracing) در واحدهای گرافیکی مبتنی بر ریزمعماری تورینگ میتواند یک میلیارد پرتو در هر ثانیه را برای خلق تصاویر گرافیکی محاسبه کند.
AMD
AMD (مخفف Advanced Micro Devices) در سال ۱۹۶۹ تأسیس شد و حالا بهعنوان رقیبی مطرح برای انویدیا و اینتل در زمینه تولید پردازنده و پردازندههای گرافیکی فعالیت میکند. این شرکت بعد از خرید ATI در سال ۲۰۰۶، محصولات این برند را تحت نام تجاری خود توسعه میدهد. واحدهای گرافیکی AMD در چند سری مختلف زیر تولید میشوند:
- سری Radeon: سری رایج و معمولی که همان یادگار ATI هستند.
- سری Mobility Radeon: گرافیکهای کممصرف AMD را شامل میشوند که بیشتر در لپتاپها به کار میروند.
- سری Fire pro: گرافیکهای قدرتمند ایامدی که برای ورکاستیشنها طراحی شدهاند.
- سری Radeon pro: بهعنوان نسل جدید گرافیکهای Fire Pro شناخته میشوند.
گرافیکهای AMD قبلاً چهار رقمی شمارهگذاری میشدند: Radeon HD 7750.
در این گرافیکها هرچه شماره مدل بزرگتر باشد، گرافیک قویتر و جدیدتر است. برای مثال گرافیک HD 8770 از HD 8750 قویتر و بهروزتر است؛ البته این موضوع دربارهی نسلهای مختلف صدق نمیکند. به این معنی که لزوماً گرافیکی از نسل ۷ را نمیتوان بدون بررسی و تنها از روی عدد نسل با گرافیکی از نسل ۸ مقایسه کرد و آن را ضعیفتر دانست. ایامدی پس از گرافیک سری Radeon RX 5700، روند نامگذاری محصولات خود را تغییر داد؛ RX 5700 XT و RX 5700 نخستین کارتهای گرافیکی هستند که با روش نامگذاری جدید ایامدی به بازار عرضه شدند. واحدهای گرافیکی AMD درحالحاضر در سه دستهبندی کلی ارائه میشوند: سری R5 و سری R7 و سری R9.
- سری R5 و R6: گرافیکهای پایینرده و نسبتاً ضعیف ایامدی هستند.
- سری R7 و R8: گرافیکهای متوسط AMD را تشکیل میدهند و برای ویرایش در برنامههایی مانند فتوشاپ و افترافکت مناسب هستند.
- سری R9: قویترین گرافیکهای ایامدی به این خانواده تعلق دارند و برای گیمینگ عملکردی قابلقبول ارائه میدهند؛ تا جایی که برخی از گرافیکهای سری R9، مخصوص دستگاههای واقعیت مجازی یا VR طراحی شدهاند.
درحالحاضر تنها پسوند فعال برای واحدهای گرافیکی AMD، پسوند XT است که ردهبالا بودن، عملکرد بهتر و فرکانس بالاتر آن محصول را نشان میدهد.
فرق پردازندهی گرافیکی و کارت گرافیک
ازآنجاکه پردازندهی گرافیکی، واحدی تخصصی برای پردازش و طراحی گرافیکهای کامپیوتری بوده و با همین هدف هم بهینهسازی شده است، این وظیفه را بسیار کارآمدتر از یک پردازندهی مرکزی انجام میدهد. این تراشه بیشترین محاسبات گرافیکهای درون بازی، رندر کردن تصاویر، مدیریت رنگها و… را بر عهده دارد و تکنیکهای پیشرفتهی گرافیکی مانند رهگیری پرتو (ray tracing) یا سایهزنی برای آن تعریف شده؛ درمقابل کارت گرافیک (Graphics Card) قطعهی فیزیکی و سختافزاری در سیستمهای کامپیوتری است که تعداد زیادی قطعهی الکترونیکی روی آن قرار دارد.
فناوری تولید کارتهای گرافیک از گذشته تا امروز، با تغییرات بسیار زیادی همراه بوده است و دو یا سه دهه قبل این قطعات با عنوانهایی مانند کارت نمایش (display card) یا کارت ویدئویی (video Card) شناخته میشدند. در آن دوره کارتهای گرافیک پیچیدگیهای امروزی را نداشتند و تنها کاری که انجام میدادند نمایش تصاویر و ویدئو روی نمایشگر بود. با افزایش قابلیتهای گرافیکی و پشتیبانی کارتها از انواع شتابدهندههای سختافزاری برای ارائهی تکنیکهای مختلف گرافیکی، بهتدریج نام کارت گرافیکی برای این قطعات به کار برده شد.
اجزای کارت گرافیک
امروزه این قطعات قدرتمندتر از قبل هستند و ممکن است سیستم مورد نیاز برای مصارف مختلف مانند گیمینگ را با فناوریهای متفاوتی ارائه دهند. بنابراین تمام کارتهای گرافیکها اجزای تشکیلدهندهی کاملاً یکسانی ندارند، اما قطعات کلیدی در آنها یکسان است. برای استفاده از این قطعه نیاز خواهید داشت تا درایور گرافیکی (Graphics Driver) متناسب با کارت گرافیک خود را روی سیستم نصب کنید؛ این درایور حاوی دستورالعملهایی در مورد نحوهی شناسایی و عملکرد کارت گرافیک است و مشخصههای مختلفی را برای اجرای انواع بازیها و برنامهها تعیین میکند. کارت گرافیک علاوه بر پردازندهی گرافیکی، به قطعات دیگری مانند حافظهی ویدئویی، برد مدار چاپی (PCB)، کانکتورها و خنککننده مجهز است. در تصویر بعد میتوانید با این قطعات آشنا شوید.
حافظهی ویدئویی
حافظهی ویدئویی (Video Memory) به محلی برای ذخیرهی دادههای پردازششده گفته میشود که با رم یا GDDR متفاوت است. این واحد بسته به استفاده میتواند در ظرفیتهای مختلفی ارائه شوند.
برد مدار چاپی
برد مدار چاپی (PCB)، بردی است که قطعات کارت گرافیک روی آن قرار داده میشود و ممکن است از لایههای مختلفی تشکیل شده باشد. جنس این بردها در کیفیت کار کارت گرافیک مؤثر خواهد بود.
کانکتورهای نمایشگر
دادهها پس از پردازش و انجام محاسبات و… برای نمایش روی نمایشگر به کابل و کانکتور نمایشگر (Display Connectors) نیاز دارند. این کابلها در انواع مختلف و بسته به نوع کاربری محصول از کانکتورهای مختلفی استفاده میکنند. برای مثال برای نمایش وضوح ۴K و نرخ فریم بسیار بالا، از پورتهای HDMI و DVI با پینهای بیشتر، استفاده میشود و برای نشان دادن تصاویر با رزولوشنهای پایینتر نیز پورت VGA بهکار میرود؛ امروزه بیشتر کارتهای گرافیکی، حداقل از یک پورت HDMI بهرهمند هستند.
پل
برای برخی از کارتهای گرافیکی بالارده این قابلیت وجود دارد که با کارتهای گرافیک بالاردهی دیگر، در کنار هم بهکار روند. چنین قابلیتی (Bridge)، الگوریتم پردازش موازی برای گرافیکهای کامپیوتری است که به منظور افزایش قدرت پردازش استفاده میشود و در کارتهای گرافیکی انویدیا با SLI (مخفف Scalable Link Interface) و در کارتهای گرافیکی AMD نیز با عبارت Crossfire نشان داده میشود.
- SLI برای اولین بار توسط 3dfx و در خط کارت گرافیک Voodoo2 استفاده شد؛ پس از خرید 3dfx، انویدیا این فناوری را به دست آورد اما از آن استفاده نکرد. انویدیا در سال ۲۰۰۴ نام SLI را دوباره معرفی کرد و قصد داشت از آن در سیستمهای کامپیوتری مدرن مبتنی بر گذرگاه PCIe استفاده کند؛ اما استفاده از آن در سیستمهای مدرن امروزی به مادربردهای سازگاری نیاز داشت.
- Crossfire نیز فناوری معرفیشده توسط ATI بود که امکان استفادهی همزمان از چند کارت گرافیکی را برای مادربرد فراهم میکرد. به واسطهی این فناوری، تراشهی کنترلکنندهای روی برد اصلی نصب میشد که وظیفهی کنترل کانالهای واسطه و ادغام اطلاعات آنها برای نمایش روی نمایشگر را بر عهده داشت؛ بهطور رسمی تا ۴ کارت گرافیک را میتوان به صورت Crossfire نصب کرد که در این صورت به آن Quad-Crossfire میگویند. این فناوری برای اولین بار به صورت رسمی در سپتامبر ۲۰۰۵ و برای رقابت با SLI، معرفی شد.
رابط گرافیک
اسلات متصلکنندهی کارت گرافیک به مادربرد یا پایهی نگهدارنده در گذشته APG نام داشت.؛ پس از APG، رابط دیگری به نام PCI معرفی شد و در نهایت امروزه آنچه بهعنوان رابط کارت گرافیک و مادربرد شناخته میشود PCIe یا PCI Express است که نقش متصلکننده، برقرسانی به برد و انتقال اطلاعات را برای کارت گرافیک ایفا میکند. در واقع PCI مخفف Peripheral Component Interconnet و به معنی رابط اجزای جانبی است.کنسریوم PCI-SIG در سال ۲۰۱۸ اهداف کلی نسل ششم درگاه ارتباطی PCIe را منتشر کرد؛ دو سال بعد این درگاه در سال ۲۰۲۰ در حالی عرضه شد که هنوز نسل چهارم آن بهطور گسترده فراگیر نشده و کارتهای گرافیک برای کاربری عادی نیز از تمام ظرفیت PCIe 3.0 بهره نمیبرند.
درگاه PCIe 6.0، بدون نیاز به افزایش پهنای باند یا فرکانسهای کاری بیشتر و با استفاده از روشهای فعلی میتواند دو برابر داده بیشتر از PCIe 5.0، یعنی ۲۵۶ گیگابایتبرثانیه داده را ازطریق ۱۶ مسیر منتقل کند و با نسلهای قبلی خود نیز سازگار است تا امکان استفاده از کارتهای قدیمیتر در درگاههای جدید دردسترس باشد.
پهنای باند PCI Express بر مبنای نرخ انتقال داده بهازای هرجهت (GB/second/direction) | ||||||
---|---|---|---|---|---|---|
پهنای باند اسلات | PCIe 1.0 (۲۰۰۳) | PCIe 2.0 (۲۰۰۷) | PCIe 3.0 (۲۰۱۰) | PCIe 4.0 (۲۰۱۷) | PCIe 5.0 (۲۰۱۹) | PCIe 6.0 (۲۰۲۲) |
x1 | ۰٫۲۵ گیگابایت بر ثانیه | ۰٫۵ گیگابایت بر ثانیه | ۱ گیگابایت بر ثانیه | ۲ گیگابایت بر ثانیه | ۴ گیگابایت بر ثانیه | ۸ گیگابایت بر ثانیه |
x2 | ۰٫۵ گیگابایت بر ثانیه | ۱ گیگابایت بر ثانیه | ۲ گیگابایت بر ثانیه | ۴ گیگابایت بر ثانیه | ۸ گیگابایت بر ثانیه | ۱۶ گیگابایت بر ثانیه |
x4 | ۱ گیگابایت بر ثانیه | ۲ گیگابایت بر ثانیه | ۴ گیگابایت بر ثانیه | ۸ گیگابایت بر ثانیه | ۱۶ گیگابایت بر ثانیه | ۳۲ گیگابایت بر ثانیه |
x8 | ۲ گیگابیتبرثانیه | ۴ گیگابایت بر ثانیه | ۸ گیگابایت بر ثانیه | ۱۶ گیگابایت بر ثانیه | ۳۲ گیگابایت بر ثانیه | ۶۴ گیگابایت بر ثانیه |
x16 | ۴ گیگابایت بر ثانیه | ۸ گیگابایت بر ثانیه | ۱۶ گیگابایت بر ثانیه | ۳۲ گیگابایت بر ثانیه | ۶۴ گیگابایت بر ثانیه | ۱۲۸ گیگابایت بر ثانیه |
مدار تنظیمکننده ولتاژ
پس از برقرسانی اولیه توسط رابط PCIe، جریان واردشده به کارت گرافیکی باید بازنگری و تعدیل شود. این وظیفه به عهدهی مدار تنظیمکنندهی ولتاژ (VRM) بوده که جريان الکتریکی موردنياز بخشهای مختلف مانند حافظه و پردازندهی گرافیکی را تأمین میکند. عملکرد صحيح و اعمال ولتاژهای منظم، به اندازه و بهموقع این مدار میتواند دوام کارت گرافیک را افزایش داده و مصرف انرژی را بهینه کند. درواقع مدار تنظیمکنندهی ولتاژ تصميم میگيرد برقرسانی چگونه انجام شود. این مدار از چهار بخش خازن ورودی، ماسفت، چوک و خازن خروجی تشکیل شده است.
- خازنهای ورودی: جریان ازطریق خازنهای ورودی به مدار وارد و ذخیره شده و در مواقع لزوم به سایر قسمتهای مدار ارسال میشود.
- ماسفتها: ماسفتها مانند پل عمل کرده و جریان ذخیرهشده در خازنهای ورودی را از خود عبور میدهند. در مدار کنترلکنندهی ولتاژ دو ماسفت Low-Side و High-Side وجود دارد؛ زمانی که گرافیک به جریان نیاز دارد، این جریان از ماسفت High عبور میکند و زمانی که گرافیک به جریان نیازی ندارد، جریان در ماسفت Low ذخیره میشود.
- چوکها: چوکها قطعات الکترونیکی هستند که نویز جریان تا حد امکان کاهش میدهند. گرافیک برای عملکرد صحیح به جریان صاف و پایداری نیاز دارد و چوکها با حذف نویز این امکان را فراهم میکنند.
- خازنهای خروجی: پس از تصفیهی جریان توسط چوکها و قبل از ارسال جریان مورد نیاز به بخشهای مورد نظر، خازنهای خروجی جریان را از مدار خارج میکنند.
سیستم خنککننده
هر کارت گرافیک برای اینکه به بهترین شکل ممکن خود عمل کند باید در دمایی بهینه قرار بگیرد. سیستم خنککننده در کارت گرافیک علاوه بر اینکه دمای کاری محصول را کاهش میدهد، باعث افزایش دوام طول عمر قطعات بهکاررفته در آن میشود. این سیستم از دو بخش هیتسینک و فن تشکیل شده است: هیت سینک معمولاً از مس یا آلومینیوم ساخته شده و در شرایط ایدئال غیرفعال است. هدف اصلی این بخش، گرفتن گرما از پردازندهی گرافیکی و پخش آن در محیط اطراف است؛ درمقابل، فن بخشی فعال در سیستم خنککنندهی گرافیک است که با دمیدن هوا به هیتسینک، آن را برای خارج کردن گرما آماده نگه دارد. برخی کارتهای گرافیک پایینرده تنها هیتسینک دارند، اما تقریباً همهی کارتهای میانرده و بالارده به ترکیبی از هیتسینک و فن برای خنکسازی مناسب و کارآمد مجهز هستند.
انواع پردازندهی گرافیکی
پردازندههای گرافیکی در انواع مختلفی برای سیستمها وظیفهی انجام محاسبات و پردازشهای گرافیکی را انجام میدهند؛ در ادامه با انواع این واحدهای گرافیکی، نحوهی عملکرد و مزایا و معایب هرکدام آشنا میشویم:
iGPU
iGPU (مخفف Integrated Graphics Processing Unit)، واحد پردازش گرافیکی یکپارچه است که روی تراشهی پردازنده مرکزی یا CPU قرار داده میشود. iGPU هم ممکن است روی مادربرد نصب شود هم در کنار پردازنده قرار بگیرد (که در این صورت همان واحد پردازش گرافیکی در تراشهی مجتمع به حساب میآید). این واحدهای گرافیکی عموماً قدرت پردازشی زیادی نداشته و برای نمایش گرافیک بازیها و انیمیشنهای سهبعدی پیشرفته مناسب نیستند؛ درواقع برای پردازشهای اولیه طراحی شدهاند و امکان ارتقای آنها هم وجود ندارد. استفاده از این گرافیکها امکان نازکتر و سبکتر شدن سیستم، کاهش مصرف برق و هزینهها را فراهم میکند. AMD پردازندههای گرافیکی خود را با عنوان APU معرفی میکند.
البته امروزه پردازندههای مدرنی هم وجود دارند که با گرافیک یکپارچه میتوانند به طرز شگفتانگیزی قدرتمند باشند. همهی پردازندهها به پردازندهی گرافیکی یکپارچه مجهز نیستند؛ برای مثال پردازندههای دسکتاپ اینتل که شمارهمدل آنها به F ختم میشود یا پردازندههای سری X این شرکت، واحدی برای پردازش گرافیکی ندارند و به همین دلیل با قیمت پایینتری به فروش میرسند و برای پردازش گرافیکی تصاویر در سیستمهای مجهز به این پردازنده به گرافیک مجزایی نیاز خواهید داشت.
درحالحاضر AMD و اینتل تلاش میکنند تا قدرت عملکرد پردازندههای گرافیکی یکپارچهی خود را بهبود بخشند و اپل نیز بسیاری از مردم را با تراشههای سیلیکونی خود شگفتزده کرده است، بهویژه در تراشهی M1 Max که پردازندهی گرافیکی یکپارچهی بسیار قدرتمندی به شمار میرود و میتواند با گرافیکهای ردهبالا رقابت کند.
dGPU
dGPU (مخفف Discrete Graphics Processing Unit)، واحد پردازش گرافیکی مجزا است که به صورت تراشهای اختصاصی و مجزا در سیستمها استفاده میشود. پردازنده گرافیکی مجزا معمولاً بسیار قدرتمندتر از iGPU است و تجزیه و تحلیل دادههای گرافیکی حجیم، پیشرفته و سه بعدی را خیلی سادهتر انجام میدهد. در واقع برای استفاده از سیستمهای گیمینگ یا طراحی و رندرینگ سهبعدی پیشرفته، داشتن dGPU قدرتمند ضروری است. واحد پردازش گرافیکی مجزا را میتوان بهراحتی تعویض کرد و ارتقا داد؛ این واحدها علاوه بر قدرت بسیار بالا، به سیستم خنککنندهی اختصاصی نیز مجهز بوده و هنگام انجام پردازشهای گرافیکی سنگین بیش از حد گرم نمیشوند. میتوان گفت که dGPUها یکی از دلایل گرانتر و سنگینتر بودن لپتاپهای گیمینگ، مصرف بالای برق و طول عمر پایین باتری در این سیستمها نسبت به لپتاپهای معمولی هستند، به همین دلیل توصیه میشود تنها در صورتی که از سیستم خود برای گیمینگ، تولید محتوای گرافیکی سهبعدی یا کارهای سنگین استفاده میکنید، پردازندهی گرافیک مجزا بخرید.
در حال حاضر، بزرگترین نامها در صنعت پردازندههای گرافیکی مجزا، AMD و انویدیا هستند، البته اینتل نیز اخیراً پردازندههای گرافیکی لپتاپ خود را در قالب سری Arc راهاندازی کرده است و قصد دارد عرضه کارتهای گرافیک دسکتاپ را نیز آغاز کند.
بااینحال، پردازندههای گرافیکی گسسته به یک سیستم خنککننده اختصاصی برای جلوگیری از گرمای بیش از حد و به حداکثر رساندن عملکرد نیاز دارند، به همین دلیل است که لپتاپهای بازی بسیار سنگینتر از لپتاپهای سنتی هستند.
Cloud GPU
واحد پردازش گرافیکی ابری، امکان استفاده از بسیاری از خدمات گرافیکی را در بستر اینترنت برای کاربر فراهم میکند؛ یعنی بدون تهیهی GPU، میتوان از قدرت پردازشی پردازندهی گرافیکی بهره برد. البته قابل درک است که گرافیکهای ابری آنچنان قدرت خاصی ارائه نمیدهند، اما برای کسانی که بودجه چندانی ندارند و به پردازش گرافیکی خیلی پیشرفتهای هم نیاز ندارند، مناسب است. این دسته از افراد میتوانند براساس میزان استفاده خود، بابت پردازش ابری گرافیکی دریافتکرده به ارائهدهندههای مختلف هزینه پرداخت کنند.
eGPU
کارت گرافیک اکسترنال یا eGPU، گرافیکی است که خارج از سیستم قرار میگیرد، به درگاه PCIe و منبع تغذیه مجهز است و میتوان آن را به صورت خارجی ازطریق پورتهای USB-C یا Thunderbolt به سیستم متصل کرد. استفاده از این گرافیک برای کاربر این امکان را فراهم میکند تا از گرافیکی قدرتمند در سیستمی جمعوجور و سبک استفاده کند.
در سالهای اخیر استفاده از گرافیکهای اکسترنال افزایش پیدا کرده و ازآنجاکه عموماً قدرت پردازشهای گرافیکی و کیفیت تصاویر خروجی لپتاپها از دسکتاپها کمتر است، کاربران اخیراً این مشکل را با استفاده از گرافیک اکسترنال برطرف میکنند. گرافیکهای اکسترنال یا خارجی بیشتر برای سیستمهایی مانند لپتاپها استفاده میشوند، اما برخی شرکتها برای دسکتاپهای قدیمیتر با قدرت پردازشی پایین هم این واحدهای گرافیکی را به کار میگیرند. دقت داشته باشید که در صورت امکانپذیر بودن ارتقای گرافیک لپتاپ، استفاده از گرافیکی اکسترنال توجیهی نخواهد داشت، اما مسائلی مانند فضای زیاد مورد نیاز برای گرافیک اکسترنال، هزینهی بالای آنها و... باعث میشوند تا کاربران و بهویژه گیمرها کارتهای گرافیکی اکسترنال را به ارتقای سیستم گرافیکی دسکتاپ خود ترجیح دهند.
پردازنده گرافیکی موبایل
گرافیک موبایل، تجربهی بصری ما از گوشیها را رقم میزند و حتی میتواند برای برخی کاربرها (گیمرها) تعیینکننده و نشاندهندهی وفاداری به برندی خاص باشد.
سیستم روی تراشهی موبایل (SOC) یا به اختصار همان تراشهای که در گوشیهای امروزی وجود دارد، در کنار واحد پردازندهی مرکزی، واحدهایی برای پردازشهای هوش مصنوعی، سیگنال تصویر برای دوربین، مودم و تجهیزات مهم دیگر، واحد پردازش گرافیکی هم دارد. پردازندهی گرافیکی موبایل برای پردازش دادههای سنگین مانند بازیهای سهبعدی معرفی شد و دنیای گوشیها را بهویژه برای گیمرها دگرگون کرد. همانطورکه گفته شد هستههای پردازشی در پردازندهی گرافیکی موبایل در مقایسه با هستههای پردازشی در پردازندههای مرکزی، قدرت کمتری دارند، اما درمقابل عملکرد همزمان و سریع آنها است که نمایش محتوای سنگین و گرافیکهای پیچیده را در گوشیها امکانپذیر میکند.
انواع پردازنده گرافیکی موبایل
آرم (ARM) یکی از قطبهای اصلی تولید واحد پردازش گرافیکی برای گوشیها و صاحب امتیاز برند مطرح Mali است، کوالکام هم با پردازندههای گرافیکی Adreno، سهم گستردهای از بازار گرافیک گوشیها را دراختیار دارد، Imagination Technologies از سالها پیش پردازندههای گرافیکی Power VR را تولید میکند و اپل نیز تا قبل از توسعهی پردازندهی گرافیکی اختصاصی خود، مدتها از پردازندههای گرافیکی این شرکت استفاده میکرد. جالب است بدانید که برخلاف اپل که پردازندههای گرافیکی اختصاصی خود را دارد، سامسونگ برای پردازشها و محاسبات گرافیکی گوشیهایش از پردازندههای گرافیکی آرم یا کوالکام بهره میبرد.
- آرم؛ پردازنده گرافیکی Mali: پردازندههای گرافیکی موبایل Mali توسط آرم توسعه داده شدهاند و با ردههای قیمتی مختلفی به فروش میرسند. برای مثال پردازندهی گرافیکی استفادهشده در گوشی گلکسی S21 اولترا، Mali-G78 MP14 است و میتواند پردازشهای گرافیکی را پرسرعت و با قدرت انجام دهد
- کوالکام؛ پردازنده گرافیکی Adreno: کوالکام در کنار پردازندههای اندرویدی پرقدرتی که با نام اسنپدراگون تولید میکند، در تولید پردازندههای گرافیکی موبایل نیز عملکرد درخشانی دارد. این واحدها مانند پردازندههای گرافیکی Mali ردههای قیمتی و بازار هدف گستردهای دارند. برای مثال، پردازندهی گرافیکی Adreno 660 بهکاررفته در گوشی گیمینگ ROG Phone 5 ایسوس در سال ۲۰۲۱، بهعنوان یکی از قدرتمندترین گرافیکهای کوالکام شناخته شد.
- Imagination Technologies؛ پردازنده گرافیکی Power VR: پردازندههای گرافیکی Power VR زمانی در پرطرفدارترین آیفونها استفاده میشدند، اما اپل با تولید گرافیک اختصاصی خود برای تراشهی A Bionic، استفاده از این واحدهای گرافیکی را کنار گذاشت؛ امروز پردازندههای گرافیکی Power VR بیشتر در تراشههای مقرونبهصرفهی مدیاتک و در گوشیهای اقتصادی و میانردهی برندهایی موتورولا، نوکیا و اوپو به کار میروند.
کاربردهای دیگر پردازندههای گرافیکی
پردازندههای گرافیکی از ابتدا بهعنوان واحد تکاملیافتهی شتابدهندههای گرافیکی و برای کمک به سبکتر کردن بار کاری پردازندهها توسعه پیدا کردند. تا دو دههی گذشته نیز غالباً بهعنوان تسریعکننده برای رندر گرافیکهای سهبعدی، بهخصوص در بازیها شناخته میشدند. بااینحال، ازآنجاکه این واحدها توان پردازشی موازی بالایی دارند و میتوانند دادههای بیشتری را نسبت به واحد پردازش مرکزی (CPU) پردازش کنند، کمکم در حوزههای دیگری غیر از گیمینگ، مانند یادگیری ماشینی، استخراج ارزهای دیجیتال و… نیز به کار گرفته شدند. در ادامه با کاربردهای دیگر پردازندههای گرافیکی غیر از گیمینگ آشنا میشویم:
ویرایش ویدئو
کارتهای گرافیک مدرن به نرمافزارهایی برای رمزگذاری ویدئو مجهز هستند و میتوانند دادههای ویدئویی را قبل از پخش، آماده و فرمت کنند. رمزگذاری ویدئو، فرایندی زمانبر و پیچیده است که انجام آن به کمک واحد پردازش مرکزی به زمان بسیار زیادی برای تکمیل نیاز دارد. پردازندههای گرافیکی با قابلیت پردازش موازی بسیار سریع خود، میتوانند رمزگذاری ویدئو را نسبتاً سریع و بدون بارگذاری بیش از حد منابع سیستم انجام دهند. دقت داشته باشید که رمزگذاری ویدئوهایی با وضوح بالا هم حتی ممکن است با پردازندههای گرافیکی پرقدرت، مدتی طول بکشد، اما اگر این واحد گرافیکی از فرمتهای ویدئویی با رزولوشنهای بالاتر پشتیبانی کند، برای ویرایش ویدئوها خیلی بهتر از پردازندهی مرکزی عمل میکند.
رندر گرافیک سهبعدی
با اینکه گرافیکهای سهبعدی معمولاً بیشتر در بازیهای ویدئویی و در حوزهی گیمینگ استفاده میشوند، بهطور فزایندهای در اشکال دیگر رسانهها مانند فیلمها، نمایشهای تلویزیونی، تبلیغات و نمایشهای هنری دیجیتال نیز استفاده میشوند. ایجاد گرافیک سهبعدی با وضوح بالا، حتی با سختافزارهای پیشرفته، دقیقاً مانند ویرایش ویدئو، میتواند فرایند فشرده و وقتگیری باشد.
استودیوهای فیلمسازی مدرن اغلب به فناوری پیشرفتهی پردازندههای گرافیکی برای تولید تصاویر کامپیوتری واقعی و پویا وابسته هستند و همین امر سختافزار را به بخشی حیاتی از فرایند ساخت فیلم تبدیل میکند. هنرمندان حوزهی دیجیتال نیز برای خلق آثار انتزاعی که در فضای فیزیکی معمول قابل تولید نیستند از کامپیوترهای مجهز به پردازندههای گرافیکی پیشرفته استفاده کرده و آثار هنری متفاوتی را با آنچه تاکنون دیدهایم، تولید میکنند. پردازندههای گرافیکی با ترکیب مناسب عملکرد سختافزار و دید هنری، میتوانند منبع خلاقانه قدرتمندی برای محاسبات و پردازش محتوای رسانهای باشند.
فراگیری ماشین
یکی از کاربردهای کمتر شناختهشدهی پردازندههایگرافیکی مدرن، یادگیری ماشینی است. یادگیری ماشینی شکلی از تجزیه و تحلیل داده است که ساخت مدلهای تحلیلی را به صورت اتوماتیک و خودکار انجام میدهد. در اصل، یادگیری ماشینی از دادهها برای یادگیری، شناسایی الگوها و تصمیمگیریهایی مستقل از ورودی انسان استفاده میکند و به دلیل ماهیت بسیار پرمصرف این سیستم و نیاز به پردازشهای موازی آن، پردازندههای گرافیکی را میتوان جزئی ضروری از این فناوری دانست.
یادگیری ماشینی، پایه و اساس فناوری و استفاده از هوش مصنوعی در نظر گرفته میشود و به همین دلیل فرایند محاسباتی پیچیدهای است که نیاز به ورود حجم زیادی داده برای تجزیه و تحلیل دارد. نرمافزاری معروف به الگوریتمهای یادگیری ماشینی، تحلیلها را براساس آنچه دادههای آموزشی یا دادههای نمونه نامیده میشود، انجام داده و مدلسازی میکند، از این مدلهای بهدستآمده، برای پیشبینی یا تصمیمگیری بدون نیاز به دخالت انسان استفاده میشود. این روش در زمینههای مختلف از دنیای پزشکی گرفته تا سیستم فیلترینگ ایمیل برای جلوگیری از دریافت محتوای نامناسب، پیادهسازی گستردهای داشته و یادگیری ماشینی را به جنبهای حیاتی در زیرساختهای دادههای مدرن تبدیل کرده است.
بلاک چین و استخراج ارزهای دیجیتال
یکی از کاربردهای عمومیتر پردازندههای گرافیکی در کنار گیمینگ، استفاده از آنها در ماینینگ یا استخراج ارز دیجیتال است. در فرایند استخراج ارزهای دیجیتال یا رمزارزها، منابع سیستم دراختیار بلاکچین (یا رکوردی پیوسته از الگوریتمهای رمزگذاری پیچیده برای ذخیرهی دادههای تراکنش) قرار میگیرند؛ هر ورودی در این رکورد، بلاک نامیده میشود که برای تولید به توان محاسباتی مشخصی نیاز دارد. با اینکه فناوری بلاکچین کاربردهایی خارج از ارزهای دیجیتال نیز دارد، اما عموماً برای استخراج ارزهای دیجیتال (بهویژه بیتکوین) استفاده میشود؛ البته فرایند استخراج بسته به ارز دیجیتال موردنظر میتواند متفاوت باشد.
بهطور خاص فرایند استخراج بیتکوین شامل اختصاص منابع سختافزاری برای ایجاد بلاکها در بلاکچین بیتکوین است. هرچه بلاکهای بیشتری به بلاکچین اضافه شود، بیتکوین بیشتری نیز تولید میشود. چنین فرایندی به قیمت مصرف شدن منابع سیستم و برق تمام میشود و بهرهوری سیستم را هنگام درگیر شدن در جریان استخراج کاهش میدهد. توان عملیاتی بالا و انرژی مورد نیاز نسبتاً پایین پردازندههای گرافیکی، این واحدها را برای انجام فرایند استخراج که بهتازگی نیز طرفداران زیادی پیدا کرده است، به ابزاری مناسب تبدیل میکند.
سوالات متداول
کاربرد پردازنده گرافیکی (GPU) چیست؟
مهمترین کاربرد پردازندههای گرافیکی در حوزهی گیمینگ است؛ این واحد در ابتدا نیز با توسعهی بازیهای سهبعدی و بهعنوان مکملی برای کمک به پردازنده و کم کردن بار کاری آن توسعه داده شد؛ اما ازآنجاکه این واحدها توان پردازشی موازی بالایی دارند و میتوانند دادههای بیشتری را نسبت به پردازنده، پردازش کنند، کمکم با گذشت زمان در حوزههای دیگری غیر از گیمینگ، مانند ویرایش ویدئو، رندر گرافیک سهبعدی، یادگیری ماشینی، استخراج ارزهای دیجیتال و… نیز به کار گرفته شدند.
فرق CPU و GPU در چیست؟
پردازنده و پردازندهی گرافیکی از ساختارهای مشابهی در لایههای کش بهرهمند هستند و هردو به کنترلری برای حافظه و رم اصلی مجهز هستند. این دو واحد با وجود برخی شباهتها، از برخی جهات نیز با هم متفاوتاند؛ پردازندهها با قابلیت جابهجایی سریع، یک کار را با کمترین تأخیر و بالاترین سرعت اما پردازشها را به صورت سریالی انجام میدهند؛ درمقابل پردازندهی گرافیکی با تعداد هستههای بیشتر، لایههای حافظهی کش کمتر و کمظرفیتتر، بهطور خاص برای بهینهسازی توان عملیاتی پردازشهای گرافیکی توسعه داده شده است و پردازشها را به صورت همزمان و موازی انجام میدهد.
فرق GPU با VGA در چیست؟
پردازندهی گرافیکی، واحدی تخصصی برای پردازش و طراحی گرافیکهای کامپیوتری است و کارت گرافیک (Graphics Card) قطعهی فیزیکی و سختافزاری در سیستمهای کامپیوتری محسوب میشود که تعداد زیادی قطعهی الکترونیکی روی آن قرار دارد؛ پردازندهی گرافیکی مهمترین قطعه در میان اجزای کارت گرافیک است و از دیگر قطعات موجود در این سختافزار میتوان به حافظهی ویدئویی، برد مدار چاپی، کانکتورهای نمایشگر، پل، رابط گرافیک، مدار تنظیمکنندهی ولتاژ و سیستم خنککننده اشاره کرد.