یک واحد پردازش گرافیکی (GPU)، یک مدار الکترونیکی است که میتواند محاسبات ریاضی را با سرعت بالا انجام دهد. وظایف محاسباتی مانند رندرینگ گرافیکی، یادگیری ماشین (ML) و ویرایش ویدئو نیاز به انجام عملیات ریاضی مشابه بر روی مجموعه دادههای بزرگ دارند. بنابراین، طراحی GPU به آن اجازه میدهد تا یک عملیات را بهطور موازی بر روی چندین داده انجام دهد. این امر همچنین کارایی پردازش آنرا برای بسیاری از وظایف پردازشی سنگین، افزایش میدهد.
چرا GPUها مهم هستند؟
GPUها در انجام پردازشهای موازی عمومی بسیار عالی هستند، اما در تاریخ این موضوع همیشه بدین شکل نبوده است. همانطور که از نام GPU پیدا است، آنها در ابتدا برای یک وظیفه خاص، کنترل نمایش تصویر طراحی شده بودند.
تاریخچه GPU
قبل از GPU، ما دارای صفحهنمایشهای نقطهای (Dot Matrix screen) بودیم که در دهههای ۱۹۴۰ و ۱۹۵۰ معرفی شدند. پس از آن، نمایشگرهای وکتور (Vector) و رستر (Raster) و سپس کنسولهای بازی و رایانههای شخصی اولیه معرفی شدند. در آن زمان، یک دستگاه غیرقابل برنامهریزی به نام کنترلکننده گرافیکی، نمایش (دیسپلی) را با صفحهنمایش هماهنگ میکرد. کنترلکنندههای گرافیکی نیز بهطور سنتی به CPU برای پردازش تکیه داشتند، اگرچه برخی از آنها شامل پردازندههای درونچیپی بودند.
در همان زمان، یک پروژه تصویربرداری سهبعدی وجود داشت که به تولید یک پیکسل بر روی صفحه با یک پردازنده واحد میپرداخت. دراین راستا، هدف، تولید تصویری بود که بسیاری از پیکسلها را در مدت زمان کوتاهی ترکیب کند. علاوه بر آن، این پروژه منشاء GPU به شکلی که امروزه میشناسیم، بود. تا اواخر دهه ۱۹۹۰، اولین GPUها معرفی نشدند. این GPUها به بازار بازی و طراحی به کمک رایانه (CAD) هدفگذاری شده بودند. همچنین، GPU یک موتور رندرینگ نرمافزاری و یک موتور تبدیل و نورپردازی را با کنترلکننده گرافیکی ادغام کرد و همه اینها بر روی یک تراشه قابل برنامهریزی قرار داشتند.
تکامل فناوری GPU
Nvidia اولین شرکتی بود که در سال ۱۹۹۹، واحد پردازش گرافیکی یا همان GPU تکتراشه GeForce 256 را به بازار عرضه کرد. در ادامه، دهههای ۲۰۰۰ و ۲۰۱۰ دورهای از رشد بود که GPUها به عملکردهایی مانند ری تریسینگ (Ray tracing)، سایهزنی مش (Mesh shading) و تسیلاسیون سختافزاری (Hardware tessellation) دست یافتند. درنتیجه، این موارد به تولید تصاویر و عملکرد گرافیکی پیشرفتهتر منجر شد.
افزون بر این، تا سال ۲۰۰۷، کمپانی Nvidia، نرمافزار CUDA را منتشر کرد که پردازش موازی را بر روی GPU فراهم میآورد. در این زمان مشخص شد که GPUها در انجام وظایف بسیار خاص، بسیار مؤثر هستند. بهویژه، آنها که در وظایفی که نیاز به مقدار زیادی قدرت پردازش برای دستیابی به یک نتیجه خاص دارند، برتری دارند.
با انتشار CUDA دراین راستا، برنامهنویسی GPU به یک جمع وسیعتری از افراد عرضه شد. توسعهدهندگان نیز میتوانستند فناوری GPU را برای انواع مختلف برنامههای کاربردی پردازشی، طراحی کنند. لازم به ذکر است که محاسبات GPU بهطور فزایندهای به جریان اصلی تبدیل شد. افزون بر این، GPUها بهعنوان یک تراشه مورد تقاضا برای بلاکچین و دیگر برنامههای نوظهور شناخته میشوند. آنها بهشکل فزایندهای در زمینه هوش مصنوعی (AI) و یادگیری ماشین به کار گرفته میشوند.
کاربردهای عملی GPU چیست؟
GPUها میتوانند در دامنه وسیعی از برنامههای پردازشی سنگین ازجمله امور مالی در مقیاس بزرگ، برنامههای دفاعی و فعالیتهای تحقیقاتی مورد استفاده قرار گیرند. در اینجا برخی از رایجترین کاربردهای GPUها درحال حاضر آورده شده است.
بازی
اولین کاربردهای GPU که فراتر از اپلیکیشنهای تجسممحور بزرگ تجاری و دولتی بودند، در بازیهای شخصی نمود یافتند. آنها در کنسولهای بازی دهه ۱۹۸۰ و هنوز هم در کامپیوترها و کنسولهای بازی فعلی استفاده میشوند. GPUها همچنین برای رندرینگ گرافیکی پیچیده ضروری هستند.
تجسم حرفهای
GPUها در اپلیکیشنهای حرفهای مانند طراحی CAD، ویرایش ویدئو، نمایش محصولات و تعاملات، تصویربرداری پزشکی و تصویربرداری لرزهنگاری استفاده میشوند. آنها همچنین در سایر برنامههای پیچیده ویرایش و تجسم تصویر و ویدئو به کار میروند. برنامههای مبتنی بر مرورگر نیز حتی میتوانند از GPU ازطریق کتابخانههایی مانند WebGL بهرهبرداری کنند.
یادگیری ماشین
آموزش یک مدل یادگیری ماشین نیاز به مقدار زیادی قدرت پردازش دارد که اکنون میتوانند بر روی GPUها برای نتایج تسریعشده اجراء شوند. درحالیکه ممکن است آموزش یک مدل بر روی سختافزار خریداریشده زمانبر باشد، میتوانید با استفاده از GPU ابری (کلاود) به نتایج سریعتری دست یابید.
بلاکچین
ارزهای دیجیتال بر پایه بلاکچینها ساخته شدهاند. نوع خاصی از بلاکچین به نام اثبات کار (PoW) معمولاً به شدت به GPUها برای عملکرد خود وابسته است. مدارهای مجتمع خاص اپلیکیشن (ASIC)، یک تراشه مشابه اما متفاوت، اکنون بهعنوان جایگزینی رایج برای پردازش GPU در بلاکچین به کار میروند. از طرفی، اثباتهای الگوریتمی بلاکچین اثبات سهام نیاز به حجم عظیمی از قدرت پردازش را از بین میبرد، اما الگوریتم اثبات کار هنوز هم رایج است.
شبیهسازی
برنامههای شبیهسازی پیشرفته مانند آنهایی که در دینامیک مولکولی، پیشبینی آب و هوا و اخترفیزیک استفاده میشوند، میتوانند ازطریق GPUها انجام شوند. GPUها مضاف بر این پشت بسیاری از برنامهها در طراحی خودرو و وسایل نقلیه بزرگ ازجمله دینامیک سیالات قرار دارند.
GPU چگونه کار میکند؟
GPUهای مدرن معمولاً شامل تعدادی پردازنده چندگانه بوده که هر کدام دارای یک بلوک حافظه مشترک و تعدادی پردازنده و ثبتکنندههای مربوطه هستند. خود GPU نیز دارای حافظه دائمی و همچنین حافظه دستگاه بر روی یک برد (Board) است که در آن قرار دارد.
در ادامه، هر GPU بسته به هدف، تولیدکننده، مشخصات تراشه و نرمافزاری که برای هماهنگی GPU استفاده میشود، کمی متفاوت عمل میکند. برای مثال، نرمافزار پردازش موازی CUDA از Nvidia به توسعهدهندگان اجازه میدهد تا GPU را بهطور خاص برای تقریباً هر برنامه پردازش موازی عمومی برنامهریزی کنند.
GPUها میتوانند تراشههای مستقل که به آنها GPUهای جداگانه میگویند، با سختافزار محاسباتی دیگر یکپارچه شوند که به آنها GPUهای یکپارچه (iGPU) میگویند.
GPUهای جداگانه
GPUهای جداگانه بهعنوان یک تراشه که بهطور کامل به وظیفه فعلی اختصاص داده شده است وجود دارند. درحالیکه این وظیفه بهطور سنتی مربوط به امور گرافیکی بوده است، اکنون GPUهای جداگانه میتوانند در قالب پردازش اختصاصی برای وظایفی مانند یادگیری ماشین یا شبیهسازی پیچیده استفاده شوند. زمانیکه GPU در امور گرافیکی استفاده میشود، معمولاً بر روی یک کارت گرافیک قرار دارد که به برد اصلی (Motherboard) متصل میشود. در سایر وظایف نیز GPU ممکن است بر روی یک کارت دیگر قرار داشته باشد یا بهطور مستقیم بر روی خود مادربرد نصب شود.
GPUهای یکپارچه
در اوایل دهه ۲۰۱۰، شاهد تغییر به سمت GPUهای یکپارچه بودیم. تولیدکنندگان از معرفی CPU و GPU ترکیب شده بر روی یک تراشه که به آن iGPU میگویند، استقبال کردند. اولین iGPUها برای کامپیوترها و سریهای Celeron، Pentium و Core از شرکت اینتل (Intel) بودند. درهمین حال، این iGPUها هنوز هم در لپتاپها و رایانههای شخصی محبوب هستند. نوع دیگری از iGPU، سیستمی بهروی یک تراشه (SoC) است که شامل اجزائی مانند CPU، GPU، حافظه (مموری) و شبکه است. این نوع تراشهها معمولا در گوشیهای هوشمند یافت میشوند.
مجازیسازی
مانند سایر زیرساختهای سختافزاری محاسباتی، GPUها نیز میتوانند مجازیسازی شوند. GPUهای مجازیشده، نمایشی مبتنی بر نرمافزار از یک GPU هستند که فضای خود را با سایر GPUهای مجازی در نمونههای سرور ابری به اشتراک میگذارند. شما میتوانید از آنها بدون آنکه نگران نگهداری سختافزار پایه باشید، برای اجرای بارهای کاری خود استفاده کنید.
تفاوت بین GPU و CPU
تفاوت اصلی بین CPU و GPU در هدف آنها در یک سیستم رایانهای است. آنها نقشهای متفاوتی بسته به سیستم دارند. بهعنوان مثال، در یک دستگاه بازی دستی، یک رایانه شخصی و یک ابررایانه با چندین کابینت سرور، اهداف متفاوتی دارند.
بهطور کلی، CPU، کنترل کامل سیستم و مدیریت و وظایف عمومی را برعهده دارد. درمقابل، GPU وظایف پردازشی سنگین مانند ویرایش ویدئو یا یادگیری ماشین را انجام میدهد. قابل ذکر است که بهطور خاص، CPUها برای انجام وظایفی مانند موارد زیر بهینهسازی شدهاند:
- مدیریت سیستم
- چندوظیفگی (مالتی تسکینگ) در برنامههای مختلف
- عملیات ورودی و خروجی
- عملکردهای شبکه
- کنترل دستگاههای جانبی
- چندوظیفگی در سیستمهای مموری و ذخیرهسازی
تفاوت بین GPU و کارت گرافیک
نامهای واحد پردازش گرافیکی و کارت گرافیک اغلب بهطور متناوب استفاده میشوند، اما آنها یکسان نیستند. کارتهای گرافیک، یک برد افزونه (AIB) هستند که در یک محل بر روی مادربرد کامپیوتر قرار میگیرند. همچنین، کارتهای گرافیک در خود کامپیوتر ساخته نمیشوند، بلکه کارتهای قابلتعویض هستند. براین اساس، یک کارت گرافیک شامل یک GPU است.
گفتنی است که، GPU، جزء اصلی کارتهای گرافیک است. این جزء درکنار سایر اجزاء مانند حافظه ویدئویی (VRAM)، پورتهایی همچون HDMI یا پورت دیسپلی و اجزاء خنککننده وجود دارد. با این وجود، یک GPU میتواند بهطور مستقیم در مادربرد ساخته شود یا بهعنوان یک تراشه یکپارچه همراه با سایر اجزاء ادغام شود.