معماری هوپر انویدیا NVIDIA Hooper
ریزمعماری هوپر انویدیا (NVIDIA Hopper Microarchitecture)
هوپر (Hopper) یک ریزمعماری واحد پردازش گرافیکی (GPU) است که توسط شرکت انویدیا توسعه یافته است. این معماری برای مراکز داده طراحی شده و در کنار ریزمعماری آدا لاولیس (Ada Lovelace) مورد استفاده قرار میگیرد. هوپر جدیدترین نسل از محصولات سابقاً با نام تجاری انویدیا تسلا (Nvidia Tesla) است که اکنون با عنوان GPUهای مرکز داده انویدیا (Nvidia Data Centre GPUs) شناخته میشوند.
معماری هوپر به افتخار دانشمند کامپیوتر و دریادار نیروی دریایی ایالات متحده، گریس هوپر (Grace Hopper) نامگذاری شده است. این معماری در نوامبر ۲۰۱۹ لو رفت و در مارس ۲۰۲۲ بهصورت رسمی معرفی شد. هوپر نسبت به نسلهای قبلی خود یعنی معماریهای تورینگ (Turing) و آمپر (Ampere)، پیشرفتهایی داشته است که شامل استریمینگ مالتیپروسسور جدید، زیرسیستم حافظه سریعتر و موتور شتابدهی ترنسفورمر است.

گریس هوپر (Grace Hopper) از پیشگامان علم کامپیوتر بود که بهعنوان یکی از اولین برنامهنویسان کامپیوتر «هاروارد مارک ۱» (Harvard Mark 1) شناخته میشود. کامپیوتر «هاروارد مارک ۱» یکی از نخستین رایانههای الکترومکانیکی بزرگ تاریخ بود که در دهه ۱۹۴۰ برای انجام محاسبات پیچیده ساخته شد. گریس هوپر نقشی کلیدی در توسعه برنامهنویسی و زبانهای برنامهنویسی اولیه ایفا کرد و به همین دلیل از او به عنوان یکی از مهمترین چهرههای تاریخ برنامهنویسی و محاسبات کامپیوتری یاد میشود. او همچنین به خاطر خلق اولین کامپایلرها و تلاشهایش در توسعه زبان برنامهنویسی COBOL شهرت دارد.
چند جمله معروف از گریس هوپر (Grace Hopper) که به حوزه فعالیت و فلسفه کاری او مرتبط است عبارتاند از:
- “The most dangerous phrase in the language is, ‘We’ve always done it this way.’”
«خطرناکترین جملهای که میتوان گفت این است که “ما همیشه این کار را به همین شکل انجام دادهایم.”» - “Humans are allergic to change. They love to say, ‘We’ve always done it this way.’ I try to fight that.”
«انسانها به تغییر حساسیت دارند و دوست دارند بگویند “ما همیشه همینطور انجام دادهایم.” من همیشه تلاش میکنم با این تفکر مبارزه کنم.» - “If it’s a good idea, go ahead and do it. It’s much easier to apologize than it is to get permission.”
«اگر ایده خوبی است، جلو برو و آن را انجام بده. عذرخواهی کردن خیلی سادهتر از اجازه گرفتن است.» - “One accurate measurement is worth a thousand expert opinions.”
«یک اندازهگیری دقیق به اندازه هزار نظر کارشناس ارزش دارد.»
این جملات بهخوبی نگرش نوآورانه، عملگرایانه و آیندهنگر گریس هوپر را در زمینه برنامهنویسی و توسعه فناوری نشان میدهد.
معماری هوپر (Nvidia Hopper)
پردازنده گرافیکی Nvidia Hopper H100 با استفاده از فرآیند TSMC N4 ساخته شده و شامل ۸۰ میلیارد ترانزیستور است. این GPU میتواند تا ۱۴۴ استریمینگ مالتیپروسسور داشته باشد. به دلیل افزایش پهنای باند حافظه از طریق سوکت SXM5، پردازنده گرافیکی Nvidia Hopper H100 در حالت پیکربندی SXM5 عملکرد بهتری نسبت به سوکت PCIe معمولی دارد.
استریمینگ مالتیپروسسور
استریمینگ مالتیپروسسورهای هوپر نسبت به ریزمعماریهای تورینگ و آمپر بهبود یافتهاند، هرچند حداکثر تعداد warpهای همزمان برای هر استریمینگ مالتیپروسسور (SM) همچنان مشابه آمپر و معادل ۶۴ باقی مانده است. معماری هوپر مجهز به شتابدهنده حافظه تانسوری (Tensor Memory Accelerator – TMA) است که انتقال حافظه دوسویه و غیرهمزمان بین حافظه مشترک (Shared Memory) و حافظه سراسری (Global Memory) را فراهم میکند. تحت TMA، برنامهها میتوانند تا تانسورهای پنجبُعدی (5D Tensors) را انتقال دهند. هنگام نوشتن از حافظه مشترک به حافظه سراسری میتوان از کاهش عنصری (Elementwise Reduction) و عملگرهای بیتی (Bitwise Operators) استفاده کرد که نیاز به استفاده از رجیسترها و دستورالعملهای SM را حذف کرده و به کاربران اجازه میدهد کدهای تخصصی warp بنویسند. این قابلیت از طریق دستور cuda::memcpy_async در دسترس است.
توسعهدهندگان هنگام موازیسازی برنامهها میتوانند از کلاسترهای بلوک نخی (Thread Block Clusters) استفاده کنند. بلوکهای نخ میتوانند عملیات اتمیک را در حافظه مشترک بلوکهای نخ دیگر درون کلاستر انجام دهند، که به این مفهوم حافظه مشترک توزیعشده (Distributed Shared Memory) گفته میشود. حافظه مشترک توزیعشده میتواند توسط SM به صورت همزمان با حافظه نهان سطح دوم (L2 Cache) استفاده شود. در ارتباط دادهها بین SMها، از پهنای باند ترکیبی حافظه مشترک توزیعشده و L2 بهره میگیرد. حداکثر اندازه قابل حمل کلاسترها ۸ است؛ با این حال پردازنده Nvidia Hopper H100 میتواند از اندازه کلاستر ۱۶ پشتیبانی کند که با استفاده از تابع cudaFuncAttributeNonPortableClusterSizeAllowed فعال میشود و احتمالاً باعث کاهش تعداد بلوکهای فعال میگردد. استفاده از مالتیکستینگ حافظه L2 و حافظه مشترک توزیعشده باعث کاهش پهنای باند مورد نیاز برای خواندن و نوشتن در حافظه دسترسی تصادفی پویا (DRAM) میشود.
معماری هوپر دارای توان عملیاتی بهبود یافته در قالب ممیز شناور تکدقت (FP32) است که دو برابر عملیات FP32 در هر چرخه بر هر SM نسبت به نسل قبلی فراهم میکند. علاوه بر این، معماری هوپر از دستورالعملهای جدیدی مانند الگوریتم Smith–Waterman پشتیبانی میکند. مانند آمپر، از محاسبات TensorFloat-32 (TF-32) نیز پشتیبانی میشود. الگوی نگاشت برای هر دو معماری یکسان است.

حافظه
پردازنده Nvidia Hopper H100 از حافظه HBM3 و HBM2e تا ظرفیت ۸۰ گیگابایت پشتیبانی میکند. سیستم حافظه HBM3 دارای پهنای باند ۳ ترابایت بر ثانیه است که نسبت به حافظه ۲ ترابایت بر ثانیه در Nvidia Ampere A100 پنجاه درصد افزایش یافته است. ظرفیت و پهنای باند حافظه نهان سطح دوم (L2 Cache) در کل معماری افزایش یافته است.
هوپر به کرنلهای محاسباتی CUDA اجازه میدهد از فشردهسازی خودکار و خطی (Automatic Inline Compression) استفاده کنند؛ حتی در تخصیص حافظه فردی، که دسترسی به حافظه را با پهنای باند بالاتری امکانپذیر میکند. این قابلیت میزان حافظه در دسترس برنامه را افزایش نمیدهد؛ زیرا دادهها (و در نتیجه قابلیت فشرده شدن آنها) ممکن است هر لحظه تغییر کنند. الگوریتمهای فشردهسازی به طور خودکار توسط کمپرسور انتخاب میشوند.
پردازنده Nvidia Hopper H100 ظرفیت ترکیبی حافظه نهان سطح اول (L1 Cache)، حافظه بافت (Texture Cache) و حافظه مشترک (Shared Memory) را به ۲۵۶ کیلوبایت افزایش داده است. مشابه نسلهای قبلی، حافظههای نهان L1 و بافت در یک حافظه نهان واحد تجمیع شده که بهعنوان یک بافر پیوسته (Coalescing Buffer) طراحی شده است. با استفاده از ویژگی cuda Func Attribute Preferred Shared Memory Carveout میتوان میزان تفکیک حافظه نهان L1 را تعریف کرد. هوپر همچنین نسل جدیدی از NVLink با بهبود پهنای باند ارتباطی معرفی کرده است.
دامنههای همگامسازی حافظه (Memory synchronization domains)
برخی از برنامههای CUDA ممکن است هنگام اجرای عملیات fence یا flush به دلیل ترتیبدهی حافظه دچار تداخل شوند. از آنجایی که GPU نمیتواند تشخیص دهد کدام نوشتارها تضمینشده و کدامها به طور اتفاقی قابل مشاهدهاند، ممکن است منتظر عملیات حافظه غیرضروری بماند و بدین ترتیب سرعت عملیات fence یا flush کاهش یابد. برای مثال، هنگامی که یک کرنل در حافظه GPU محاسبات انجام میدهد و یک کرنل موازی دیگر ارتباطات همتا به همتا (peer-to-peer) را انجام میدهد، کرنل محلی نوشتارهای خود را flush خواهد کرد و این باعث کاهش سرعت نوشتارهای NVLink یا PCIe میشود. در معماری هوپر (Hopper)، GPU میتواند عملیات fence را به گونهای انجام دهد که هزینه شبکه را کاهش دهد.
دستورالعملهای DPX
رابط برنامهنویسی ریاضی معماری هوپر (Hopper API) دستورالعملهایی در SM ارائه میدهد مانند __viaddmin_s16x2_relu که عملیات max(min(a+b,c),0) را روی هر نیمکلمه (halfword) انجام میدهد. در الگوریتم Smith–Waterman، از دستورالعمل __vimax3_s16x2_relu استفاده میشود که یک عملیات کمینه یا بیشینه سهطرفه است و در انتها مقدار آن به صفر محدود میشود. بهطور مشابه، هوپر باعث تسریع اجرای الگوریتم Needleman–Wunsch نیز میشود.
موتور ترنسفورمر (Transformer engine)
معماری هوپر اولین معماری شرکت انویدیا است که از موتور ترنسفورمر استفاده کرده است. موتور ترنسفورمر با کاهش دینامیکی محاسبات از دقتهای عددی بالاتر (مثلاً FP16) به دقتهای پایینتر (مانند FP8) سرعت اجرای محاسبات را افزایش میدهد؛ این تغییر دقت زمانی انجام میشود که افت دقت قابل قبول تلقی شود. همچنین موتور ترنسفورمر میتواند بهصورت دینامیکی بیتهای دقت انتخابشده را در زمان اجرا بین مانتیسا (mantissa) و نما (exponent) اختصاص دهد تا دقت را به حداکثر برساند.
بهرهوری توان (Power efficiency)
پردازنده H100 با فرم فاکتور SXM5 دارای توان طراحی حرارتی (TDP) ۷۰۰ وات است. با توجه به قابلیت ناهمزمانی (asynchrony)، معماری هوپر میتواند به سطح بالایی از بهرهبرداری دست یابد و در نتیجه عملکرد بهتری از لحاظ بازدهی توان (performance-per-watt) داشته باشد.
گریس هوپر (Grace Hopper)
پردازنده GH200 ترکیبی از GPU مبتنی بر هوپر H100 و یک پردازنده مرکزی (CPU) گریس ۷۲ هستهای است که در یک ماژول واحد قرار گرفتهاند. مصرف انرژی کل ماژول تا ۱۰۰۰ وات است. CPU و GPU از طریق NVLink به هم متصل شدهاند و بین حافظه CPU و GPU همزمانی (coherence) برقرار است.
تاریخچه
در نوامبر ۲۰۱۹، یک حساب توییتر معروف افشا کرد که معماری بعد از آمپر (Ampere)، هوپر (Hopper) نام خواهد داشت؛ نامی برگرفته از گریس هوپر، دانشمند کامپیوتر و دریادار نیروی دریایی ایالات متحده که از اولین برنامهنویسان کامپیوتر هاروارد مارک یک (Harvard Mark I) بود. این حساب توییتر اعلام کرد هوپر مبتنی بر طراحی چند تراشهای (multi-chip module) خواهد بود که باعث بهبود بازده و کاهش ضایعات خواهد شد.
انویدیا رسماً در کنفرانس GTC سال ۲۰۲۲ معماری هوپر را معرفی کرد.
در اواخر سال ۲۰۲۲ به دلیل محدودیتهای صادرات تراشهها به جمهوری خلق چین که توسط ایالات متحده وضع شد، انویدیا تراشه H100 را با مدل H800 برای بازار چین تطبیق داد. این مدل در مقایسه با مدل اصلی H100 از پهنای باند پایینتری برخوردار است. در اواخر سال ۲۰۲۳، دولت ایالات متحده محدودیتهای جدیدی بر صادرات تراشههای هوش مصنوعی به چین، از جمله مدلهای A800 و H800 وضع کرد.
در سال ۲۰۲۳ و در زمان رونق هوش مصنوعی، تقاضا برای تراشههای H100 بسیار بالا رفت. لری الیسون از شرکت اوراکل در همان سال گفت که در یک شام مشترک با جنسن هوانگ، مدیرعامل انویدیا، او و ایلان ماسک از تسلا و xAI «عملاً برای دریافت H100 التماس میکردند؛ شاید بهترین توصیف این باشد که یک ساعت سوشی و التماس بود.»
در ژانویه ۲۰۲۴ تحلیلگران شرکت مالی ریموند جیمز برآورد کردند که انویدیا هر GPU مدل H100 را در بازه قیمتی ۲۵ هزار تا ۳۰ هزار دلار میفروشد، در حالی که قیمت تکی این GPUها در eBay بیش از ۴۰ هزار دلار است. تا فوریه ۲۰۲۴، گزارش شد که انویدیا پردازندههای H100 را با خودروهای زرهی به دیتاسنترها ارسال میکند.