اگر بخواهیم به بیان ساده تفاوت CPU با GPU را بیان کنیم، باید بگوییم CPU یا Central Processing Unit، پردازنده مرکزی یک دستگاه محسوب میشود و GPU یا Graphics processing unit، پردازنده گرافیکی برای پردازشهای گرافیکی است.
تفاوت CPU با GPU
CPU تمام عملیات پردازشی یک دستگاه را مدیریت میکند. به بیان ساده CPU مانند مغز دستگاه کامپیوتری عمل میکند. GPU هم هر آنچه را که در نمایشگر دستگاهتان میبینید؛ پردازش میکند. CPU در تمام دستگاهها بهصورت یک پردازنده مجزا طراحی شده است و بهصورت مستقل فعالیت میکند؛ اما GPU در برخی از دستگاهها یک پردازنده مجزا است و در برخی از دستگاههای دیگر در CPU ادغام شده است و بخشی از آن محسوب میشود؛ البته قدرت پردازشی پردازنده گرافیکی ادغامشده در CPU بهمراتب کمتر قدرت پردازشی پردازنده مجزا است.
بنابراین چنانچه میخواهید با کامپیوترتان بازیهای گرافیکی سنگین را اجرا کنید یا از برخی از نرمافزارهای گرافیکی سنگین مثل نرمافزارهای مدلسازی سهبعدی استفاده کنید، باید از GPU مجزا استفاده کنید. لازم به ذکر است پردازندهای تحت عنوان شتابدهنده پردازنده گرافیکی (GPU accelerator یا Graphics Accelerator) نیز وجود دارد که در حقیقت پردازندهای برای تقویت عملکرد GPU است و دادههای بصری را پردازش میکند.
ساختار CPU و GPU در دستگاههای دسکتاپ و دستگاههای موبایل کاملاً متفاوت است. CPU مورد استفاده در دستگاههای موبایل سختافزارهای بسیار کوچک و کممصرفی هستند؛ اما در برخی از ابرکامپیوترها شبکه گستردهای از چند CPU وجود دارد که قادر به انجام فعالیتهای محاسباتی بسیار پیچیده و سنگینی هستند که انجام آنها نیازمند قدرت پردازشی بسیار بالایی است و اگر با CPUهای موبایل انجام شوند، تنها در عرض چند دقیقه آنها را منفجر و نابود میکنند.
پردازندههای گرافیکی مجزا هم معمولاً تنها در کنسولهای قدرتمند و کامپیوترها و لپتاپهایی که برای انجام کارهای گرافیکی سنگین (مثل عملیات رندرینگ سهبعدی و ویرایش حرفهای تصاویر ویدیوها) و اجرای بازیهای سنگین طراحی شدهاند، دیده میشوند.
لازم به ذکر است پردازندههای گرافیک مجزا برای استخراج ارزهای دیجیتال و کاربردهای مرتبط با یادگیری ماشینی نیز استفاده میشوند. اصلیترین موارد مرتبط با تفاوت CPU با GPU بهصورت ساده و خلاصه به شرح زیر است:
- CPU از قابلیت موازیسازی وظیفه (Task parallelism) و GPU از قابلیت موازی داده (data parallelism) برخوردار است. به بیان دیگر CPU میتواند بسیاری از فعالیتهای پردازشی را توسط واحدهای پردازنده خود بهصورت همزمان انجام دهد. GPU هم میتواند دستورالعمل یکسانی را مکرر و همزمان با سرعت بالا برای دادههای متفاوت اجرا کند.
- CPU دارای تعداد کمی هسته با قدرت پردازشی بالا است؛ اما GPU تعداد زیادی هسته است که در مقایسه با هستههای CPU بسیار کوچکتر هستند و زمانی که فعالیتهای پردازشی مرتبط با انجام وظیفه در بین آنها تقسیم میشود، آن فعالیتهای پردازشی توزیعشده را در کنار یکدیگر با سرعت بالایی انجام میدهند.
- حافظه CPU ظرفیت بالایی دارد؛ اما حافظه GPU دارای پهنای باند بالایی است و میتواند اطلاعات واردشده را با سرعت بالایی بخواند.
- در CPU تعداد زیادی از مجموعه دستورالعملها ایجاد و در بین واحدهای پردازشی مختلف این سختافزار توزیع میشوند؛ اما در GPU تعداد کمی از مجموعه دستورالعملها ایجاد میشود و در عوض آنها به میزان زیادی بهینهسازی میشوند.
مقایسه نحوه کار CPU با GPU
بدون تردید اصلیترین تفاوت CPU با GPU، نحوه کار آنهاست. یک CPU فعالیتهای پردازشی را بهترتیب بهصورت متوالی و سریالی انجام میدهد. این سختافزار دارای واحدهای پردازنده مختلفی است که هر یک از آنها برای انجام عملیات پردازشی خاصی طراحی شدهاند و CPU برای دستیابی به بهترین عملکرد ممکن، وظایف پردازشی را بین آنها تقسیم میکند.
در ضمن سیپییوهای مدرن از چند هسته تشکیل شدهاند که هر یک از آنها انجام بخشی از فعالیتهای پردازشی در حال انجام توسط CPU را بر عهده میگیرند. اکثر پردازندههای مرکزی دارای ۴ تا ۸ هسته هستند. زمانی که CPU در حال کار است، هر یک از هستههای آن یک فعالیت پردازشی را بهصورت مجزا انجام میدهند.
درحقیقت وظایف یا تسکهایی که در قسمت مدیریت وظایف یا تسک منیجر کامپیوتر خود میبینید، یا در حال انجام توسط هستههای CPU یا در صف انجام توسط این هستهها هستند. به بیان ساده، CPU مجموع قدرت پردازشی هستههای خود را برای انجام فعالیتهای پردازشی مختلف توزیع میکند و با سرعت بالایی بین فعالیتهای پردازشی مختلف سوئیچ میشود؛ البته CPU قدرت پردازشی لازم برای انجام پردازشهای گرافیکی سنگین مثل عملیات پردازشی مرتبط با گرافیک سهبعدی را ندارد و برای انجام این کار حتماً باید از GPU استفاده شود.
شیوه پردازشی مورد استفاده توسط GPU متفاوت است. زمانی که وظیفهای برای پردازششدن به این پردازنده محول میشود، پردازنده آن را به هزاران وظیفه بسیار کوچک تقسیم میکند و تمام آنها را همزمان باهم پردازش میکند.
برای مثال تصور کنید آنچه در یک بازی میبینید، اساساً یک ناحیه متشکل از تعدادی چندضلعی است. طبیعتاً برای ایجاد محیط بازی و بخشهای مختلف آن، این چندضلعیها باید با آیتمها و عناصر گرافیکی پر شوند. هر یک از این چندضلعیها توسط GPU بهصورت مجزا و همزمان پر میشوند.
با توجه به اینکه ممکن است هزاران چندضلعی در یک محیط بازی وجود داشته باشد و تمام آنها باید همزمان در مدت بسیار کوتاهی پردازش و پر شوند، GPU باید سرعت بالایی در انجام این کار داشته باشد. چنانچه این پردازنده قادر به پردازش چندضلعیها در مدتزمان مناسب نباشد، نتیجه این مشکل در نمایشگر آشکار میشود و بافتهای و چندضلعیهای پردازشنشده در محیط بازی نمایان میشوند که اصلاً تجربه خوشایندی برای گیمرها نیست.
تفاوت معماری CPU با GPU
تفاوت CPU با GPU، در معماری این دو سختافزار نیز کاملاً مشهود است. همانطور که گفتیم CPU دادهها و تسکهای دریافتشده برای پردازش را بهترتیب بهصورت متوالی و با سرعت بسیار بالا پردازش میکند. سرعت بالای کلاک هستهها، انجام پردازشها با سرعت بالا توسط آنها را امکانپذیر میکند.
CPU از نظر کاهش تأخیر در انجام فعالیتها به میزان زیادی بهینهسازی شده است و به همین دلیل میتواند بین فعالیتهای پردازشی در حال انجام با سرعت بسیار بالایی سوئیچ شود. این ساختار CPU باعث شده با وجود اینکه این سختافزار اساساً برای انجام یک فعالیت پردازشی در یک زمان ایجاد شده است، اما در زمینه پردازش و رایانش موازی نیز کاملاً موفق عمل کند.
GPU دارای هستههای زیادی است که تعداد آنها از هستههای CPU بسیار بیشتر است. دستورالعملهای در نظر گرفته شده برای این هستهها، برای انجام محاسبات مرتبط با ماتریس ابعادی و همچنین محاسبات نقطه شناور بهینهسازی شدهاند.
حافظه GPU نیز دارای رابط عریضی است که با ایجاد یک اتصال نقطهبهنقطه باعث افزایش پهنای باند حافظه و افزایش سرعت آن در انجام فعالیتهای پردازشی میشود. در ضمن حافظه این سختافزار برای دستکاری سریع بخشهای بزرگی از دادهها نیز طراحی شده است.
اگر میخواهید بهصورت تخصصیتر با معماری و آناتومی CPU و GPU آشنا شوید، توصیه میکنیم دو مقاله «آناتومی CPU» و «آناتومی کارت گرافیک» میدونی را مطالعه کنید؛ البته لازم به ذکر است که کارت گرافیک با پردازنده گرافیکی تفاوت دارد و پردازنده گرافیکی یا همان GPU درحقیقت بخشی از یک کارت گرافیک است.
مقایسه محدودیتهای CPU با GPU
یکی دیگر از موارد دیگری که باعث ایجاد تفاوت CPU با GPU شده است، محدودیتهای این دو سختافزار است. اول از همه باید بگوییم محدودیتهای CPU و GPU باعث شده در برخی از موارد CPU برای انجام برخی از فعالیتهای پردازشی مناسب باشد و در برخی دیگر از موارد استفاده از یک پردازنده گرافیکی بتواند نیاز ما را بهتر برطرف کند
محدودیتهای CPU
محدودیت در انجام دستورالعملهای سنگین
گرایش به سمت واردکردن دستورالعملهای سنگین به CPU، گرایش مدرن در حوزه طراحی پردازنده محسوب میشود، اما چنین گرایش بدون عیب نیست.
CPU گاهی اوقات برای انجام دستورالعملهای سنگین، بین صدها سیکل کلاک بهسرعت سوئیچ میکند. اگرچه اینتل با استفاده از فناوری خط لوله دستورالعمل (Instruction pipeline) این محدودیت را کاهش داده و توانسته است پردازندههای خود را طوری طراحی کند که هیچ از بخشهای پردازش دستورالعملها بیکار باقی نمانند و همزمان با پردازش یک دستورالعمل در یکی از بخشهای پنجگانه پردازش دستورالعمل، دستورالعمل دیگری در یکی از بخشهای دیگر در حال پردازش باشد؛ اما باز هم پردازش همزمان دستورالعملهای سنگین و پیچیده باعث افت عملکرد CPU میشود.
تأخیر در سوئیچ
منظور از تأخیر در سوئیچ (switch latency یا Context switch latency)، درحقیقت زمان مورد نیاز برای سوئیچشدن هسته CPU بین رشتهها است. سوئیچشدن بین رشتهها فرایند بسیار کندی است؛ زیرا CPU برای انجام این کار باید رجیسترها و متغیرهای وضعیت را ذخیره، حافظه کش را خالی کند و سایر فعالیتهای پاکسازی را نیز انجام دهد.
اگرچه در طراحی سیپییوهای مدرن تلاش شده است با تقسیمبندی وضعیت تسک در حال پردازش، این مشکل برطرف و میزان تأخیر در هنگام انجام چند تسک کمتر شود، اما میزان تأخیر همچنان قابل قبول نیست.
قانون مور
قانون مور که میگوید تعداد ترانزیستورهای هر اینچ مربع سطح مدار مجتمع، هر دو سال یکبار دو برابر میشود، در حال فراموششدن است. قطعاً برای افزایش تعداد ترانزیستورها روی یک تکه سیلیکون محدودیتی وجود دارد و نمیتوان منکر قوانین فیزیک شد!
البته مهندسین طراحی سختافزار تلاش میکنند با کمک روش توزیع محاسباتی، قدرت و کارایی محاسباتی پردازندهها را افزایش دهند. همچنین این افراد در حال آزمایش و بررسی قابلیتهای کامپیوترهای کوانتومی بوده و حتی بهدنبال یافتن جایگزینی برای سیلیکون برای ساخت CPU هستند.
محدودیتهای GPU
برخورداری از تعداد کمتری از هستههای قدرتمند در مقایسه با CPU
اگرچه تعداد هستههای GPU بیشتر از هستههای CPU است، اما قدرت آنها از نظر سرعت کلاک کمتر از هستههای CPU است. درضمن هستههای GPU تنوع کمتری از دستورالعملها را پردازش میکنند و برای پردازش دستورالعملهای خاصتر طراحی شدهاند؛ البته این ویژگی ذاتاً ویژگی بدی نیست؛ زیرا پردازندههای گرافیکی برای پردازش مجموعهای کوچک از تسکها بسیار کارآمد هستند.
برخورداری از حافظه کمتر
ظرفیت حافظههای طراحیشده برای پردازندههای گرافیکی محدود است. اگرچه عملکرد پردازندههای گرافیک در زمینه حرکت به سمت حجم بیشتری از اطلاعات در یک لحظه خاص، بهتر از سیپییوها است؛ اما میزان تأخیر در دسترسی به حافظه آن بسیار بیشتر از تأخیر برای دسترسی به حافظه CPU است.
برخورداری از واسط برنامهنویسی کاربردی (API) محدود
واسط برنامهنویسی کاربردی اوپن سیال (Open CL) و کودا (Cuda)، شناختهشدهترین واسطهای برنامهنویسی کاربردی GPU هستند که باگهای آنها بهسختی برطرف میشود و این دو API به داشتن این عیب بزرگ شهره هستند.
اگرچه اوپن سیال متنباز است؛ اما روی سختافزار انویدیا بسیار کند عمل میکند؛ البته در عین حال API اختصاصی انویدیا است و برای پردازندههای گرافیکی این شرکت بهینهسازی شده است.
مزایای استفاده از GPU نسبت به CPU
در کل GPU در مقایسه با CPU دارای قدرت پردازشی بیشتری است و سختافزار کارآمدتری محسوب میشود. استفاده از GPU علاوه بر اینکه برای انجام کارهای گرافیکی سنگین و اجرای بازیهای گرافیکی سنگین ضروری است، در حوزههایی مثل استخراج ارز دیجیتال و بهرهمندی از قابلیتهای هوش مصنوعی، نیز در مقایسه با استفاده از CPU نتیجه بسیار بهتری دارد.
پردازندههای گرافیکی که بخشی از کارتهای گرافیک هستند، به دلیل برخورداری از یکسری واحدهای پردازشگر تحت عنوان واحدهای محاسبه و منطق (Arithmetic logic units) که بهطور ویژه برای انجام محاسبات ریاضی طراحی شدهاند، برای استخراج ارزهای دیجیتال، در مقایسه با CPU بسیار بهتر هستند. استفاده از کارت گرافیک برای استخراج ارز دیجیتال بهقدری افزایش یافته که باعث کمبود آن شده است.
استفاده از GPU برای کاربردهای مرتبط با فناوری یادگیری ماشینی که با عنوان یادگیری عمیق (deep learning) شناخته میشود، نیز ضروری است؛ زیرا در هنگام بهرهمندی از فناوری یادگیری ماشینی، باید حجم زیادی از دادهها پردازش شوند که نیازمند انجام همزمان حجم زیادی از فعالیتهای پردازشی است و کارایی پردازنده گرافیکی در این زمینه بسیار بالاست.
استفاده از کارت گرافیک برای فعالیتهای مرتبط با بهرهمندی از قابلیتهای هوش مصنوعی در مقایسه با استفاده از CPU برای این کار نیز نتیجه بسیار بهتری دارد. از میان این فعالیتها میتوان به عقیده کاوی (کسب اطلاعات در مورد عقیده و نگرش افراد در مورد موضوعات مختلف بهمنظور تصمیمگیری بهتر)، پیشبینیهای مالی و پردازش تصاویر اشاره کرد.
مزایای استفاده از CPU نسبت به GPU
اگرچه استفاده از GPU مزایای زیادی نسبت به استفاده از CPU دارد؛ اما استفاده از GPU بهعنوان پردازنده مرکزی امکانپذیر نیست؛ زیرا همانطور که گفتیم این پردازنده فعالیتهای پردازشی را بهصورت همزمان انجام میدهد و در صورت استفاده از چنین پردازندهای در کامپیوترها، شاهد عملکرد خوبی از آنها نخواهیم بود.
بهعنوان مثال در صورت استفاده از GPU بهعنوان پردازنده مرکزی در کامپیوترها، تقسیمکردن برخی از فعالیتهای پردازشی مثل پردازشهای مرتبط با نوشتن یک مقاله در کامپیوتر و اجراکردن مرورگر، کار دشواری خواهد شد. در مقابل برخورداری CPU از قابلیت پردازش تسکها بهصورت متوالی و پشت سر هم، باعث شده این پردازنده بتواند پردازنده مرکزی مناسبی باشد.
در ضمن اگرچه تقسیم قدرت پردازشی CPU تنها بین تعداد معدودی از تسکها امکانپذیر است، اما در مقابل چند تسکی را در حال انجام آنها است، با سرعت بالایی پردازش میکند و انجام میدهد.