پردازنده‌ گرافیکی چیست ؛ هر آنچه باید درباره GPU بدانید

پردازنده‌ گرافیکی چیست ؛ هر آنچه باید درباره GPU بدانید

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

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

پردازنده‌‌ گرافیکی (GPU) چیست؟

اگر واحد پردازش مرکزی یا پردازنده (CPU) را به‌عنوان مغز کامپیوتر در نظر بگیریم که تمامی محاسبات و دستورها منطقی را مدیریت می‌کند، واحد پردازش گرافیکی یا پردازنده‌ی گرافیکی (GPU) را می‌توان به‌عنوان واحدی برای مدیریت خروجی بصری و گرافیکی محاسبات و دستورها و اطلاعات مرتبط با تصاویر دانست که ساختار موازی آن‌ها برای پردازش الگوریتم‌ بلوک‌های بزرگ داده، بهینه‌تر از واحدهای پردازش مرکزی یا همان پردازنده‌ها عمل می‌کند؛ در واقع GPU، رابطی گرافیکی برای تبدیل محاسبات صورت‌گرفته توسط پردازنده به شکلی قابل فهم برای کاربر به حساب می‌آید و می‌توان با اطمینان گفت هر دستگاهی که به نحوی خروجی گرافیکی را نمایش می‌دهد، به نوعی از پردازنده‌ی گرافیکی مجهز است.

واحد پردازش گرافیکی در یک کامپیوتر، می‌تواند روی کارت گرافیک یا روی مادربرد تعبیه شده باشد یا همراه با پردازنده در تراشه‌ی مجتمع (برای مثال APUهای AMD) عرضه شود.

تراشه‌های مجتمع نمی‌توانند خروجی گرافیکی آنچنان چشمگیری تولید کنند و قطعاً خروجی آن‌ها هیچ گیمری را راضی نمی‌کند؛ برای بهره‌مندی از جلوه‌های بصری با کیفیت‌تر باید کارت گرافیکی (در ادامه با تفاوت‌های پردازنده‌ی گرافیکی و کارت گرافیک بیشتر آشنا خواهیم شد) مجزا با قابلیت‌هایی فراتر از یک پردازنده‌ی گرافیکیِ ساده تهیه کرد. در ادامه با چند مفهوم اولیه‌ی پرکاربرد در بحث گرافیک‌ها، به‌طور خلاصه آشنا می‌شویم.

تصویر سه‌بعدی

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

گرافیک بیت‌مپ‌ شده (BMP.)

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

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

گرافیک برداری

گرافیک برداری (فرمت‌های ai. یا eps. یا pdf. یا svg.) نیز تصویری است که مسیرهایی با نقطه‌ی شروع و پایان را ایجاد می‌کند. این مسیرها همگی براساس عبارات ریاضی بوده و از اشکال هندسی پایه‌ای مانند خطوط، چندضلعی‌ها و منحنی‌ها تشکیل شده‌اند. مزیت اصلی استفاده از گرافیک برداری به جای گرافیک بیت‌مپ شده (شطرنجی)، توانایی آن‌ها در مقیاس‌بندی بدون از دست دادن کیفیت است. مقیاس تصاویر تولیدشده با گرافیک برداری را می‌توان به‌راحتی، بدون افت کیفیت و به اندازه‌ی توانایی دستگاهی که آن‌ها را رندر می‌کند، افزایش داد.

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

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

از گرافیک برداری می‌توان برای ساخت بنر یا لوگو استفاده کرد؛ چراکه تصاویر با این روش هم در ابعاد کوچک هم در ابعاد بزرگ با کیفیتی یکسان نمایش داده می‌شوند. یکی از محبوب‌ترین برنامه‌هایی که برای مشاهده و ایجاد تصاویر برداری استفاده می‌شود Adobe Illustrator است.

رندرینگ

به فرایند تولید تصاویر سه‌بعدی از نرم‌افزاری بر پایه‌ی مدل‌های محاسباتی و نمایش آن به‌عنوان خروجی روی نمایشگر دو بعدی، رندرینگ (Rendering) گفته می‌شود.

API گرافیکی

رابط برنامه‌نویسی نرم‌افزاری (Application Programming Interface) یا API، پروتکلی برای ارتباط میان بخش‌های مختلف برنامه‌های کامپیوتری و ابزاری مهم برای تعامل نرم‌افزار با سخت‌افزار گرافیکی به‌جساب می‌آید؛ این پروتکل ممکن است مبتنی بر وب، سیستم‌عامل، مرکز داده، سخت‌افزار یا کتابخانه‌های نرم‌افزاری باشد. امروزه برای تصویر‌سازی و رندرینگ مدل‌های سه‌بعدی، ابزار‌ها و نرم‌افزار‌های فراوانی توسعه داده شده‌اند و یکی از کابرد‌های مهم API-های گرافیکی نیز آسان‌کردن فرایند تصویرسازی و رندرینگ برای توسعه‌دهنگان به‌شمار می‌رود. درواقع API-های گرافیکی دسترسی مجازی به برخی پلتفرم‌ها را برای توسعه‌دهندگان برنامه‌های گرافیکی خود و تست آن‌ها فراهم می‌کنند. در ادامه برخی از شناخته‌شده‌ترین APIهای گرافیکی را معرفی می‌کنیم:

OpenGL

رابط گرافیکی OpenGL برای اولین بار توسط Silicon Graphics در سال ۱۹۹۱ طراحی شد و در سال ۱۹۹۲ به‌بازار آمد؛ جدید‌ترین سری این API، یعنی 4.6 OpenGL نیز در جولای ۲۰۱۷ معرفی شد.

DirectX

مجموعه‌ای از رابط‌های برنامه‌نویسی کاربردی (API) که توسط مایکروسافت برای فراهم‌سازی امکان ارتباط دستورالعمل‌ها با سخت‌افزار‌های صوتی و تصویری توسعه داده شده است. بازی‌هایی که به DirectX مجهز هستند، این قابلیت را دارند که از ویژگی‌های چندرسانه‌ای و شتاب‌دهنده‌های گرافیکی به‌طور کارآمدتری استفاده کنند و عملکرد کلی بهبودیافته‌تری داشته باشند.

زمانی که مایکروسافت در اواخر سال ۱۹۹۴، خود را برای انتشار ویندوز 95 آماده می‌کرد، الکس سنت جان، یکی از کارمند مایکروسافت، درباره‌ی توسعه‌ی بازی‌های سازگار با MS-DOS تحقیق کرد. برنامه‌نویسان این بازی‌ها اغلب امکان انتقال آن‌ها را به ویندوز 95 رد کردند و توسعه‌ی بازی‌ها را برای محیط ویندوز دشوار خواندند. به همین منظور تیم سه‌نفره‌ای تشکیل شد و این تیم در عرض چهار ماه توانست اولین مجموعه از رابط‌های برنامه‌نویسی کاربردی (API) را به نام DirectX‌ برای حل این مشکل توسعه دهد.

اولین نسخه‌ی DirectX سپتامبر ۱۹۹۵ با عنوان Windows Games SDK منتشر شد و جایگزین Win32 برای DCI و API-های WinG برای ویندوز 3.1 بود. DirectX برای ویندوز 95 و همه نسخه‌های ویندوز مایکروسافت بعد از آن، امکان داد که محتوای چند رسانه‌ای با کارایی بالا را در خود جای دهند.

ازآنجاکه در آن زمان ویندوز 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 گرافیکی را نشان می‌دهد.

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 منتشر شد. این نسخه در مقایسه با نسخه‌ی قبلی کارایی بالاتر و بهینه‌­تری داشت.