اگر اخبار مربوط به شرکتهای AMD و Nvidia را دنبال میکنید احتمالاً با مشخصات جیپییوهای این دو شرکت و اصطلاحات خاص آنها آشنا هستید. مثلاً Nvidia مایل است که بر تعداد هستههای کودای خودش تأکید کند تا کارتهای خودش را از AMD متمایز کند اما AMD بیشتر بر واحدهای پردازشی خودش (Compute Units) تأکید دارد.
اما این دو اصطلاح چه معنایی دارند؟ آیا کودا همان واحد پردازشی است؟ اگر نه، این دو چه تفاوتی با هم دارند؟ با ما همراه باشید تا با تفاوتهای اصلی گرافیک AMD با Nvidia آشنا شوید.
معماری کلی یک جیپییو
هر جیپییو (یا همان کارت گرافیکی) چه تولید AMD باشد چه Nvidia و چه اینتل، به طور کلی یک طرز کار مشخص دارد. در واقع قطعات کلیدی و طرح کلی این قطعات به یک صورت است و از نگاه بالا به پایین همه جیپییوها یکسان هستند.
اما وقتی قطعات خاص و اختصاصی مورد استفاده هر شرکت در کارتهای گرافیک را در نظر بگیریم، کم کم تفاوتها مشخص میشود. مثلاً Nvidia هستههای تنسور را در جیپییوهای خودش تعبیه کرده اما جیپییوهای AMD هسته تنسور ندارند.
به همین صورت AMD از قطعاتی مثل Infinity Cache استفاده میکند که در جیپییوهای Nvidia وجود ندارند.
در نتیجه برای درک تفاوتهای بین واحد پردازشی و هستههای کودا باید اول معماری کلی یک جیپییو را در نظر بگیریم. پس از درک این معماری و طرز کار جیپییو، تفاوتهای بین واحدهای پردازشی و هستههای کودا برای ما مشخص تر میشود.
جیپییو چگونه کار میکند؟
اولین نکته مهمی که باید به آن توجه داشت این است که جیپییو در هر لحظه هزاران یا حتی میلیونها دستورالعمل را به صورت همزمان اجرا میکند بنابراین جیپییو برای اجرای این دستورالعملها نیاز به تعداد زیادی هسته موازی کوچک دارد.
این هستهها مجزا از هستههای بزرگ پردازنده هستند که هر بار یک دستورالعمل پیچیده را اجرا میکنند.
مثلاً پردازنده Nvidia RTX 3090 دارای 10496 هسته کودا است اما پردازنده Threadripper 3970X شرکت AMD تنها 64 هسته دارد.
در نتیجه نمیتوان هستههای جیپییو را با هستههای سیپییو مقایسه کرد چون بین این دو تفاوت زیادی وجود دارد و هر کدام برای انجام یک کار خاص طراحی شده اند.
بعلاوه بر خلاف سیپییوهای معمولی، همه هستههای جیپییو در قالب یکسری خوشه یا گروه دسته بندی میشوند.
در نهایت، یک خوشه از هستهها در یک جیپییو اجزای سختافزاری دیگری مثل هستههای پردازنده بافت، واحدهای اجرای عملیات ممیز شناور و کش هم دارند که به اجرای همزمان میلیونها دستورالعمل کمک میکنند. این موازی سازی، ساختار جیپییو را مشخص میکند. یک جیپییو بر اساس اصول پردازش موازی، کارهای مختلفی از بارگذاری تا پردازش دستورالعملها را انجام میدهد.
- اول جیپییو یک دستورالعمل برای پردازش صفی از دستورالعملها را دریافت میکند.
- سپس برای حل این دستورالعملها، یک زمانبند ریسمان آنها را به هستههای پردازنده هدایت میکند.
- پس از دریافت دستورالعملها، زمانبندِ خوشههای هسته آنها را برای پردازش به هستهها یا واحدهای پردازشی انتساب میدهد.
- در نهایت، خوشههای مختلف هستهها، دستورالعملهای مختلف را به صورت موازی اجرا میکنند و نتیجه روی صفحه نمایش مشخص میشود. در نتیجه همه تصاویر گرافیکی که روی صفحه مشاهده میکنید مثل بازیهای ویدیویی، حاصل پردازش میلیونها دستورالعمل هستند.
پس به طور خلاصه، یک جیپییو هزاران عنصر پردازشی دارد که به آنها هسته (یا کور) گفته میشود و همگی در قالب یکسری خوشه (کلاستر) دسته بندی شده اند. زمانبند هم کارها را به این خوشهها انتساب میدهد تا موازی سازی ایجاد شود.
واحد پردازشی چیست؟
همانطور که در بخش قبلی مشاهده شد، هر جیپییو یک خوشه هسته دارد که شامل یکسری عنصر پردازشی هستند. AMD به این خوشهها واحد پردازشی میگوید.
واحدهای پردازشی مجموعهای از منابع پردازشی مثل واحدهای محاسبه و منطق (ALU)، واحدهای ممیز شناور یا پردازندههای برداری، ثباتها و یکسری حافظه برای ذخیره اطلاعات هر ریسمان هستند.
در واقع AMD برای ساده سازی اصطلاحات فقط تعداد واحدهای پردازشی جیپییوهای خودش را اعلام میکند و جزئیات اجزای آن را مشخص نمیکند.
بنابراین هر زمان تعداد واحدهای پردازشی را دیدید، میتوانید آنها را یک گروه عنصر پردازشی به همراه همه اجزاء و قطعات مرتبط در نظر بگیرید.
هسته کودا چیست؟
بر خلاف AMD، Nvidia با استفاده از اصطلاح هستههای کودا توضیحات را پیچیده تر میکند.
هستههای کودا در اصل هسته نیستند بلکه واحدهای ممیز شناوری هستند که Nvidia برای مقاصد بازاریابی به آنها هسته میگوید و همانطور که قبلاً اشاره شد، خوشههای هسته واحدهای ممیز شناور زیادی دارند. این واحدها فقط کار محاسبات برداری را انجام میدهند در نتیجه استفاده از نام هسته برای آنها فقط یک ترفند بازاریابی است.
بنابراین، هسته کودا یک عنصر پردازشی است که عملیات ممیز شناور را انجام میدهد و ممکن است در یک خوشه از پردازنده تعداد زیادی هسته کودا وجود داشته باشد.
در نهایت، Nvidia به خوشههای پردازنده «چندپردازندهی استریمینگ» یا به اختصار SM میگوید. SMها مثل واحدهای پردازشی AMD هستند چون واحدهای پردازشی خودشان خوشههایی از هسته هستند.
تفاوت بین واحدهای پردازشی و هستههای کودا
تفاوت اصلی بین واحد پردازشی و هسته کودا این است که اولی مربوط به خوشههای هسته و دومی یک واحد پردازشی است.
برای درک بهتر این مسئله، جعبه دنده یک ماشین را در نظر بگیرید.
خود این جعبه دنده شامل چندین دنده است. میتوان جعبه دنده را مثل واحد پردازشی در نظر گرفت و هر دنده را مثل واحدهای ممیز شناور هستههای کودا.
به عبارت دیگر، واحدهای پردازشی مجموعهای از اجزای مختلف هستند اما هستههای کودا یکسری عضو خاص در یک مجموعه هستند پس نمیتوان واحدهای پردازشی و هستههای کودا را با هم مقایسه کرد.
به همین دلیل است که وقتی AMD به تعداد واحدهای پردازشی جیپییوهای خودش اشاره میکند، تعداد آن نسبت به تعداد هستههای کودای کارتهای Nvidia کمتر است. مقایسه دقیق تر، مقایسه بین چندپردازندههای Nvidia و تعداد واحدهای پردازشی کارتهای AMD است.
هستههای کودا و واحدهای پردازشی دو بحث مجزا هستند
معمولاً شرکتها سعی میکنند از اصطلاحات مبهم استفاده کنند تا محصولات خودشان را بهتر جلوه دهند. این کار علاوه بر گیج کردن مشتریان باعث میشود پیگیری ویژگیهای مهم سخت شود.
پس سعی کنید حتماً با بالا بردن اطلاعات خودتان درباره کارت گرافیک و جیپییو، فریب اصطلاحات تبلیغاتی را نخورید تا بهترین انتخاب ممکن را داشته باشید.