نوامبر ۲۰۰۶ تنها زمان رونمایی از یک کارت گرافیک جدید نبود؛ آغاز یک انقلاب در محاسبه موازی بود. GeForce 8800 GTX با هسته G80، مرز میان پردازش گرافیکی و محاسبه عمومی را برای همیشه محو کرد. این تراشه ۶۸۱ میلیون ترانزیستوری روی فرآیند ۹۰ نانومتری، اسکلت محاسبه‌های امروزی هوش مصنوعی را بنا نهاد.

گلوگاه شایدرهای تخصصی: سیلیس بیکار در خدمت رندرینگ

پیش از G80، معماری GPUها دو مسیر جداگانه داشت: واحدهای رأسی (Vertex) برای هندسه و واحدهای پیکسلی (Pixel) برای بافیت‌ها و افشینی. مشکل چیست؟ بار کاری بازی‌ها هرگز متعادل نبود. یک صحنه با مدل‌های پیچیده و بافیت‌های ساده، تمام قدرت رأسی را هدر می‌داد؛ برعکس، محیط‌های ساده هندسی با شایدرهای پیچیده پیکسلی، واحدهای پیکسلی را بیکار می‌گذاشتند. این تقسیم‌بندی ایستا در فاز طراحی، یعنی نیمی از ترانزیستورهای گران‌قیمه تراشه در هر لحظه بی‌کار می‌ماندند.

سری GeForce 7 و Radeon X1000 قربانی این سخت‌گیری بودند. DirectX 9 و Shader Model 3.0 اگرچه برنامه‌ریزی‌پذیری آوردند، اما نمی‌توانستند از زیرساخت سخت‌افزاری دوجنسه فراتر روند.

معماری یکپارچه: یک استخر، همه وظایف

راه‌حل انویدیا در G80، جریانی بود که ATI یک سال قبل در Xbox 360 با GPU «Xenos» تست کرده بود: یک آرایه واحد از پردازشگرهای یکسان که هر کدام می‌توانند هر نوع شایدری را اجرا کنند. یک زمان‌بند سخت‌افزاری (Hardware Scheduler) به صورت پویا وظایف را توزیع می‌کرد. نتیجه؟ بهره‌برداری تقریبا ۱۰۰٪ از منابع محاسباتی.

این مدل در نرم‌افزار با DirectX 10 و Shader Model 4.0 همگام‌سازی شد، اما پیامدش فراتر از گرافیک بود: برای اولین بار، GPU به یک «پردازشگر موازی عمومی‌منظور» تبدیل شد که می‌توانست کد C++ را اجرا کند. CUDA متولد شد.

سلسله‌مراتب تسلا: از SPA تا Warp

انویدیا به طور داخلی معماری G80/GT200 را «تسلا» نامید. در مقاله IEEE Micro ۲۰۰۸ (NVIDIA Tesla: A Unified Graphics and Computing Architecture)، لندهم، نیکالز، اوبرمن و مونتریم جزئیات را مستند کردند. درک این سخت‌افزار، کلید درک انتزاعات CUADA است—بلاک‌ها، وارپ‌ها، SMها، کوآلسیнг حافظه—همه نام‌های نرم‌افزاری برای ساختارهای فیزیکی هستند.

آرایه پردازشگر جریان‌دار (SPA)

G80 مراحل جداگانه را با یک SPA (Streaming Processor Array) جایگزین کرد. رأسی، هندسی، پیکسلی—همه روی واحدهای یکسان اجرا می‌شوند. این تصمیم واحد، GPGPU را خلق کرد: وقتی یک آرایه پردازشگر عمومی برنامه‌ریزی‌پذیر با سیستم حافظه خود را داری، افشای آن برای محاسبه غیرگرافیکی فقط مسأله‌ی نرم‌افزاری است. CUDA C فرانت‌اند دوم برای همان آرایه یکپارچه است.

SPA در G80 شامل ۸ مولتی‌پروسسور جریان‌دار (SM) بود، هر کدام با ۸ پردازشگر اسکالر (SP) — مجموع ۶۴ SP. هر SM واحدهای محاسبه، رجیسترها، حافظه اشتراکی (Shared Memory) و واحدهای خاص تابع (SFU) را در خود جای داده بود.

مدل اجرا: SIMT و Warp

برخلاف CPUها که از SIMD استفاده می‌کنند، G80 مدل SIMT (Single Instruction, Multiple Threads) را معرفی کرد. ۳۲ نخ (Thread) در یک Warp گروه‌بندی می‌شوند و به صورت قفل‌مرحله (Lockstep) یک دستور را اجرا می‌کنند. اگر شاخه‌سازی (Branch Divergence) رخ دهد، سخت‌افزار هر دو مسیر را سریالی اجرا می‌کند و ماسک‌های فعال/غیرفعال را مدیریت می‌کند. این انعطاف‌پذیری نسبت به SIMD سنتی، بی‌نظیر است.

سلسله‌مراتب حافظه: کوآلسیнг، کلید عملکرد

حافظه گلوبال (Global Memory) در G80 پهنای باند ۸۶.۴ GB/s داشت (با حافظه GDDR3 ۳۸۴-بیت ۹۰۰MHz). اما دسترسی باید کوآلسید (Coalesced) باشد: ۱۶ نخِ نیم-وارپ (Half-Warp) باید آدرس‌های متوالی ۳۲-بایتی یا ۶۴-بایتی را در یک تراکنش ۱۲۸‌بایتی درخواست کنند. عدم کوآلسینگ، پهنای باند را به شدت تنزل می‌دهد—یک اصل که همچنان در معماری‌های Hopper و Blackwell حیات دارد.

حافظه اشتراکی (Shared Memory) ۱۶KB در هر SM، بانک‌های ۱۶-بایتی با latency تک-چرخه داشت. رجیسترها؟ ۸۱۹۲ رجیستر ۳۲-بیت در هر SM، بازی‌افزار اشغال (Occupancy) بودند.

Tesla C870: اولین کارت محاسبه اختصاصی

همزمان با 8800 GTX، انویدیا Tesla C870 را برای بازار HPC عرضه کرد. بدون خروجی ویدئو، با ECC در حافظه (در ریویژن‌های بعدی) و درایورهای بهینه‌سازی شده برای محاسبه عددی (Double Precision در GT200 اضافه شد). این کارت، محققان علمی را از مزرعه‌های CPU به سمت GPU می‌کشاند. مستندات تاریخی در پورتال دیتاسنتر انویدیا این تحول را ثبت کرده‌اند.

میراث G80: از CUDA تا Hopper

G80 تنها یک تراشه نبود؛ یک قرارداد معماری بود. مفاهیم SM، Warp، Shared Memory، کوآلسیнг، و پشته درایور CUDA—همه در G80 متبلور شدند. Fermi (GF100) کش L1/L2 و ECC واقعی آورد. Kepler آپدیت SMX و Dynamic Parallelism. Volta تنسور کور. Hopper TMA و Thread Block Clusters. اما ریشه همه، در آن ۶۸۱ میلیون ترانزیستور ۹۰ نانومتری است.

امروز وقتی مدل‌های زبانی عظیم روی هazgoهای H100 آموزش می‌بینند، در حال اجرای منطقی هستند که ریشه در زمان‌بند سخت‌افزاری G80 دارد که تصمیم می‌گرفت کدام وارپ در کدام SM اجرا شود. پارادایم گلوگاه را شکست؛ ما همچنان در سایه‌اش محاسبه می‌کنیم.