اگر پیگیر فناوریهای هر دو شرکت انویدیا و AMD باشید، آنگاه با احتمال زیاد در هنگام مشاهده مشخصات کارت گرافیکهای این دو شرکت، تفاوتهایی را متوجه شدهاید. بهعنوان نمونه، انویدیا تمایل دارد که جهت متمایز کردن کارت گرافیکهای خود از کارت گرافیکهای شرکت AMD، از عبارت هستههای CUDA استفاده کند. این در حالی است که AMD در این رابطه از عبارت Compute Unit استفاده میکند. به همین دلیل در این مطلب قصد داریم که به تفاوت Compute Unit و CUDA بپردازیم.
این اصطلاحات دقیقا به چه معنا هستند؟ آیا هستههای CUDA دقیقا همان Compute Unitها هستند؟ اگر اینطور نیست، پس تفاوت این دو در چیست؟
معماری عمومی یک پردازنده گرافیکی
تمامی پردازندههای گرافیکی (GPU)، فارغ از اینکه متعلق به کدام شرکت هستند، همگی در حالت عمومی به یک طریق عمل میکنند. پردازندههای گرافیکی 3 شرکت انویدیا، اینتل و AMD، هر سه از اجزاهای کلیدی مشابهی استفاده کرده و همچنین طرح کلی این اجزاها در یک سطح بالاتر نیز مشابه یکدیگر است.
بنابراین اگر از بالا به پردازندههای گرافیکی نگاه کنید، آنگاه خواهید فهمید که همگی همانند یکدیگر هستند. حال اگر به قطعات و فناوریهای اختصاصی شرکتهای فناوری بپردازیم، آنگاه همین جاست که تفاوتها نمایان میشوند. بهعنوان مثال، انویدیا هستههای Tensor را در داخل پردازندههای گرافیکی خود قرار داده و این در حالی است که پردازندههای گرافیکی شرکت AMD، از هستههای Tensor برخوردار نیستند.
به طرز مشابهی، AMD از فناوریهایی همانند Infinity Cache استفاده کرده و پردازندههای گرافیکی شرکت انویدیا، از این فناوری برخوردار نیستند. حال اگر بخواهیم که به تفاوت بین Compute Unit و CUDA بپردازیم، آنگاه بهتر است که ابتدا نگاهی به معماری کلی یک پردازنده گرافیکی بیندازیم. هنگامیکه با معماری و شیوه کار یک پردازنده گرافیکی آشنا شدیم، آنگاه بهتر میتوانیم تفاوت دو فناوری بالا را درک کنیم.
یک پردازنده گرافیکی چگونه کار میکند؟
اولین چیزی که باید درک کنید، این است که یک پردازنده گرافیکی میتواند هزاران و حتی میلیونها دستور را بهصورت همزمان پردازش کند. یک GPU جهت انجام چنین کاری، به تعداد زیادی هستههای کوچک و موازی نیاز دارد.
هستههای کوچک GPUها از هستههای بزرگ CPUها متفاوت هستند. دومی در هر زمان و به ازای هر هسته، یک دستورالعمل پیچیده را پردازش میکند. بهعنوان نمونه، Nvidia RTX 3090 دارای 10496 هسته CUDA است. از طرفی دیگر، CPU رده بالای AMD Threadripper 3970X، فقط 64 هسته دارد.
این مطلب را نیز بخوانید: AMD Smart Access Memory چیست و تا چه حد بر اجرای بازیها تأثیر دارد؟
با این اوصاف نمیتوانیم هستههای GPU را با هستههای CPU مقایسه کنیم. پردازندههای گرافیکی و مرکزی (CPU)، تفاوتهای بسیاری با یکدیگر دارند، زیرا مهندسان آنها را جهت انجام کارهای متفاوتی طراحی کردهاند. علاوه بر این، برخلاف یک CPU میان-رده، تمامی هستههای پردازندههای گرافیکی در قالب گروهها و یا خوشهها سازماندهی میشوند.
در نهایت هم هر گروه از هستههای یک پردازنده گرافیکی، از اجزاهای سختافزاری دیگری همانند هستههای پردازش بافت (تکسچر)، واحدهای نقطه شناور (Floating Points) و کشها برخوردار بوده تا بدین ترتیب بهتر بتوانند میلیونها دستور را بهصورت همزمان پردازش کنند. همین انجام پردازشها بهصورت همزمان، معماری یک پردازنده گرافیکی را مشخص میکند. از بارگذاری یک دستورالعمل گرفته تا پردازش آن، یک GPU همه کارهای خود را بر اساس اصول پردازش موازی انجام میدهد.
- اول اینکه GPU از میان صفی از دستورالعملها، یک دستورالعمل را دریافت میکند. این دستورها معمولا همیشه مرتبط با وکتورها (Vector) هستند.
- در ادامه جهت اجرای این دستورها، یک زمانبند رشته، دستورالعملها را جهت پردازش به گروههای هستهای جداگانه تحویل میدهد.
- پس از دریافت دستورالعملها، یک زمانبند خوشه داخلی، دستورها را به هستهها تخصیص داده و یا اینکه عناصر را جهت پردازش، پردازش میکند.
- در نهایت هم خوشههای متفاوت، دستورهای مختلف را بهصورت موازی پردازش میکنند و سپس نتیجه بر روی نمایشگر، نشان داده میشود. بنابراین هر آنچه را که بر روی صفحه مشاهده میکنید؛ همانند یک بازی ویدیویی، مجموعهای از میلیونها وکتور پردازش شده است.
بهصورت خلاصه، یک پردازنده گرافیکی دارای هزاران عنصر پردازشی است که ما آنها را “هسته” مینامیم و این هستهها بهصورت خوشهای دستهبندی شدهاند. زمانبندها کارها را به این خوشهها تخصیص داده تا اصل موازی کاری محقق شود.
منظور از Compute Unit چیست؟
همانطور که در بخش قبلی دیدیم، هر GPU از چندین دسته هسته تشکیل شده و در هرکدام از این دستهها، عناصر پردازشی وجود دارند. شرکت AMD این خوشه هستهها را “Compute Unit” مینامد. Compute Unitها مجموعهای از منابع پردازشی همانند واحدهای حسابی و منطقی (ALU)، کشها، واحدهای نقطه شناور و یا پردازندههای وکتور، رجیسترها و همچنین مقداری حافظه جهت ذخیرهسازی اطلاعات رشتهها هستند.
بهصورت خلاصه، AMD در کمپینهای بازاریابی خود فقط به تعداد Compute Unitهای پردازندههای گرافیکی خود اشاره کرده و به جزئیات داخلی آنها نمیپردازد. بنابراین هر بار که تعداد Compute Unit را مشاهده کردید، آنگاه باید آنها را بهعنوان مجموعهای از عناصر پردازشی و سایر اجزاهای مرتبط در نظر بگیرید.
منظور از هستههای CUDA چیست؟
تفاوت Compute Unit و CUDA را با بحث در رابطه با دومی ادامه میدهیم. AMD سعی دارد که فقط با اسم بردن از Compute Unit، اطلاعات را برای مشتری ساده کند. این در حالی است که انویدیا میخواهد که با به کار بردن اصطلاحاتی همانند هستههای CUDA، چیزها را کمی پیچیده کند.
هستههای CUDA در اصل هسته نیستند. آنها در اصل “نقاط شناور” بوده که انویدیا جهت مقاصد بازاریابی خود، به آنها برچسب “هسته” میزند. اگر به یاد بیاورید، گفتیم که خوشه هستهها در داخل خود دارای واحدهای نقطه شناور بسیاری هستند. این واحدها به غیر از پردازش وکتورها، کار دیگری انجام نمیدهند.
این مطلب را نیز بخوانید: NVIDIA Reflex چیست و چه تأثیری بر شیوه اجرای بازیها دارد؟
بنابراین “هسته” نامیدن آنها صرفا یک ترفند بازاریابی است. با این اوصاف، یک هسته CUDA یک عنصر پردازشی بوده که عملیات نقطه شناور را انجام میدهد. یک خوشه از هستهها میتواند هستههای CUDA زیادی را در خود جای دهد.
در نهایت اینکه انویدیا خوشههای هستهها را “Streaming Multiprocessors یا SM” مینامد. SMها معادل Compute Unitهای AMD هستند (Compute Unitها خودشان خوشههای هسته هستند).
تفاوت Compute Unit و CUDA
تفاوت اصلی در بین Compute Unit و هستههای CUDA این است که اولی به یک خوشه از هستهها اشاره کرده، اما دومی به یک عنصر پردازشی. جهت اینکه این تفاوت را بهتر درک کنید، اجازه دهید تا مثالی از جعبه دنده خودروها بزنیم.
یک جعبه دنده واحدی است که از چندین دنده تشکیل شده است. میتوانید جعبه دنده را بهعنوان یک Compute Unit و دندهها را نیز بهعنوان واحدهای نقطه شناور هستههای CUDA در نظر بگیرید. به عبارتی دیگر، Compute Unitها مجموعهای از اجزاها هستند، اما هستههای CUDA در برگیرنده اجزاهای مخصوصی هستند. بنابراین نمیتوان Compute Unit و هستههای CUDA را با یکدیگر مقایسه کرد.
به همین دلیل است که هنگامیکه AMD در رابطه با تعداد Compute Unitهای کارت گرافیکهای خود تبلیغ میکند، عدد آنها همیشه کمتر از عدد مربوط به تعداد هستههای CUDAی کارت گرافیکهای انویدیا است. جهت یک مقایسه مطلوبتر، بهتر است که تعداد Streaming Multiprocessorهای کارت گرافیکهای انویدیا را با تعداد Compute Unitهای کارت گرافیکهای شرکت AMD مقایسه کنید.
سخن پایانی
شرکتها تمایل دارند که از اصطلاحات پیچیده استفاده کرده تا بدین ترتیب محصولات خود را بهتر جلوه دهند. این قضیه نهتنها باعث سردرگم شدن مشتری میشود، بلکه باعث میشود که مشتری نتواند ویژگیهای “مهم” را از “نهچندان مهم” جدا کند. بنابراین در هنگام خرید یک کارت گرافیک، بهتر است که بدانید به دنبال چه چیزی میگردید. در این رابطه تا میتوانید، سعی کنید که چندان مجذوب ترفندهای تبلیغاتی نشده تا بتوانید تصمیم بهتری بگیرید.
با مثال و ده بار نیم کلاچ و دو ساعت خوندنم چیزی نفهمیدم :)))))