ممکن است CPU و GPU شبیه به هم به نظر برسند، اما تفاوتهای مهمی بین این دو وجود دارد. در این مطلب از گوشی پلازامگ قصد داریم مهمترین تفاوتهای CPU و GPU را بررسی کنیم.
گوشیهای هوشمند مدرن در واقع کامپیوترهای کوچکی هستند که اجزای پردازشی مختلفی دارند. احتمالا چیزهایی را در مورد واحد پردازش مرکزی یا CPU(Central Processing Unit) شنیدهاید، اما بین واحد پردازش گرافیکی یا GPU(Graphics Processing Unit)، پردازشگر سیگنال تصویر (ISP) و شتابدهندههای یادگیری ماشینی، قطعات بسیار تخصصی زیادی وجود دارد. همه اینها در یک سیستم روی یک چیپست (SoC) گرد هم میآیند؛ اما چه چیزی یک GPU را از یک CPU متمایز میکند و چرا گرافیک و سایر کارهای تخصصی به آن نیاز دارند؟ در ادامه همه تفاوتهای CPU و GPU آورده شده است.
CPU چگونه کار میکند؟
به زبان ساده، CPU مغز کل عملیات است و وظیفه اجرای سیستم عامل و اپلیکیشن ها را بر روی هر کامپیوتری بر عهده دارد. سی پی یو در اجرای دستورالعملها عالی است و این کار را به صورت سریالی یکی پس از دیگری انجام میدهد. کار CPU نسبتا ساده است: دستورالعمل بعدی را واکشی میکند و سپس آنچه را که باید انجام شود رمزگشایی و درنهایت اجرا میکند.
دستورالعمل دقیقا چیست؟ خب بستگی دارد! شما میتوانید دستورالعملهای حسابی مانند جمع و تفریق، عملیات منطقی مانند AND و OR و بسیاری دیگر را داشته باشید. اینها توسط واحد حساب/منطق (ALU) سی پی یو مدیریت میشود. CPU ها دارای مجموعه دستورالعملهای بزرگی هستند که به آنها اجازه میدهد تا طیف وسیعی از وظایف را انجام دهند.
CPU های مدرن بیش از یک هسته دارند، به این معنی که میتوانند چندین دستور را به طور همزمان اجرا کنند؛ اما محدودیت عمل برای تعداد هستهها وجود دارد، زیرا هر کدام باید به سرعت اجرا شوند. عملکرد CPU با استفاده از دستورالعملها در هر چرخه (IPC) اندازهگیری میشود. تعداد چرخهها در ثانیه به سرعت کلاک CPU بستگی دارد. این سرعت میتواند در پردازندههای دسکتاپ به 6 گیگاهرتز یا در چیپست های موبایلی مانند اسنپدراگون 8 نسل 2 به 3.2 گیگاهرتز برسد.
سرعت کلاک بالا و IPC مهمترین جنبههای هر CPU هستند، به طوری که اغلب میتوانید ناحیه بزرگی از قالب فیزیکی CPU را پیدا کنید که به حافظه کش سریع اختصاص داده شده است. این تضمین میکند که CPU چرخههای ارزشمندی را برای بازیابی دادهها یا دستورالعملها از RAM هدر نمیدهد.
بیشتر بخوانید
GPU چگونه کار میکند؟
یک GPU بر اساس دادههایی که از CPU دریافت میکند، محاسبات هندسی را انجام میدهد. در گذشته، بیشتر پردازندههای گرافیکی حول محوری طراحی میشدند که به عنوان خط لوله گرافیکی شناخته میشد، اما معماریهای جدیدتر در پردازش بارهای کاری غیر گرافیکی نیز انعطافپذیرتر هستند.
یکی از مهمترین تفاوتهای CPU و GPU در این است که برخلاف سی پی یو، عبور از یک صف دستورالعمل در سریعترین زمان ممکن لزوما اولویت اصلی GPU نیست. در عوض، یک GPU به حداکثر توان عملیاتی یا توانایی پردازش چندین دستورالعمل در یک زمان نیاز دارد. برای این منظور، پردازندههای گرافیکی یا GPU ها چندین برابر تعداد هستههای یک CPU را دارند. با این حال، هر کدام با سرعت کلاک پایینتری کار میکنند.
اگر به مبحث خط لوله گرافیک برگردیم، میتوانید آن را به عنوان یک خط مونتاژ کارخانه در نظر بگیرید که در آن خروجی یک مرحله به عنوان ورودی در مرحله بعدی استفاده میشود.
خط لوله با پردازش راس شروع میشود که اساسا شامل ترسیم هر راس جداگانه (نقطهای از نظر هندسی) بر روی یک صفحه دو بعدی است. در مرحله بعد، این نقاط برای تشکیل مثلث در مرحلهای به نام Rasterization جمع میشوند. در گرافیک کامپیوتری، هر جسم سه بعدی اساسا از مثلثها (که چندضلعی نیز نامیده میشود) تشکیل شده است. با در دست داشتن یک شکل اصلی، میتوان رنگ و سایر ویژگیهای هر چندضلعی را بسته به نور صحنه و متریال جسم تعیین کرد. این مرحله به سایه زدن معروف است.
GPU همچنین میتواند برای واقعگرایی بیشتر بافتهایی را به سطح اشیاء اضافه کند. برای مثال، در یک بازی ویدیویی، هنرمندان اغلب از بافتها برای مدلهای شخصیت، آسمان و سایر عناصری که در دنیای واقعی با آنها آشنا هستیم، استفاده میکنند. این بافتها به عنوان تصاویر دوبعدی شروع میشوند که بر روی سطح یک مدل نگاشته میشوند. در دیاگرام زیر میتوانید یک نمای کلی از این فرآیند را مشاهده کنید:
در مجموع، GPU دارای مجموعهای از وظایف است که برای ترسیم یک تصویر باید آنها را انجام دهد؛ و این همان چیزی است که برای کشیدن یک تصویر ثابت انجام میشود، چیزی که به ندرت هنگام استفاده از کامپیوتر یا گوشی هوشمند به آن نیاز دارید. سیستم عامل اندروید به تنهایی دارای انیمیشنهای زیادی است. این بدان معناست که GPU باید هر 16 میلی ثانیه بهروزرسانیهای جدید با وضوح بالا تولید کند (برای انیمیشنی که با سرعت 60 فریم در ثانیه اجرا میشود).
خوشبختانه، یک GPU میتواند این وظیفه پیچیده را به بخشهای کوچکتر تقسیم کرده و آنها را به طور همزمان پردازش کند. یکی دیگر از تفاوتهای CPU و GPU در این است که GPU، به جای تکیه بر تعداد انگشتشماری از هستههای پردازشی، از صدها یا حتی هزاران هسته کوچک (به نام واحدهای اجرایی) استفاده میکند. پردازش موازی مهم است زیرا GPU به ارائه یک جریان ثابت از دادهها و تصاویر خروجی روی صفحه نیاز دارد.
در واقع، توانایی GPU برای انجام محاسبات همزمان آن را در برخی از بارهای کاری غیر گرافیکی نیز مفید میکند. یادگیری ماشینی، رندر ویدیو و الگوریتمهای استخراج ارزهای دیجیتال، همگی به حجم عظیمی از دادهها نیاز دارند تا به صورت موازی پردازش شوند. این وظایف به محاسبات تکراری و تقریبا یکسانی نیاز دارند، بنابراین از نحوه عملکرد خط لوله گرافیکی خیلی دور نیستند. توسعهدهندگان این الگوریتمها را با وجود مجموعه دستورالعملهای محدود، برای اجرا بر روی GPUها تطبیق دادهاند.
تفاوتهای CPU و GPU: سخن پایانی
اکنون که نقشهای CPU و GPU را به صورت جداگانه دانستید، ممکن است این سوال برایتان پیش بیاید که آنها چگونه در یک حجم کاری عملی مثلا اجرای یک بازی ویدیویی با هم کار میکنند؟ به زبان ساده، CPU محاسبات فیزیک، منطق بازی، شبیهسازیهایی مانند رفتار دشمن و ورودیهای بازیکن را انجام میدهد. سپس دادههای موقعیتی و هندسی را به GPU ارسال میکند تا GPU اشکال سه بعدی و نور را روی صفحه نمایش از طریق خط لوله گرافیکی ارائه دهد.
بنابراین به طور خلاصه، در حالی که CPU و GPU هر دو محاسبات پیچیده را به سرعت انجام میدهند، از نظر کارهایی که هر یک میتوانند به طور موثر انجام دهند، همپوشانی زیادی وجود ندارد. شما میتوانید یک CPU را مجبور به رندر کردن ویدیو یا حتی بازی کردن کنید، اما به احتمال زیاد سرعت آن بسیار کند خواهد بود. علاوه بر این، برعکس آن به سادگی امکانپذیر نیست – شما نمیتوانید از یک GPU به جای CPU استفاده کنید زیرا نمیتواند دستورالعملهای همه منظوره را انجام دهد و این از مهمترین تفاوتهای CPU و GPU محسوب میشود.