بررسی معماری تورینگ در کارت های گرافیک RTX 2080 ،RTX 2070 و RTX 2080 Ti انویدیا

بررسی معماری تورینگ در کارت های گرافیک RTX 2080 ،RTX 2070 و RTX 2080 Ti انویدیا

سه شنبه, ۱۰ مهر ۱۳۹۷ ساعت ۱۷:۰۱

در این مقاله به بررسیِ تفصیلیِ معماری تورینگ و قابلیت‌های اضافه شده در نسل جدید کارت‌های گرافیکِ انویدیا خواهیم پرداخت.

معماری تورینگ در تراشه‌های گرافیکیِ جدید، یک تغییر بنیادین نسبت به نسل‌های گذشته و شروعی متفاوت برای آینده‌ی صنعت کارت‌های گرافیک محسوب می‌شود. آینده‌ای که فراتر از تصورِ کنونی ما از GPU و هسته‌های گرافیکیِ سایه‌زن (Shader Units) است و برای اولین بار تعاریفِ جدیدی را در بردارد.

در مقاله‌های قبلی از پیاده سازی RT یا همان Ray Tracing و Tensor در تراشه‌های جدیدِ نسل RTX 20 گفتیم و این که هسته‌های پردازشی مربوطه، به عنوانِ بخش‌های اصلی و همپای هسته‌های Shader به تراشه‌ی مبتنی بر معماری تورینگ اضافه شده‌اند. توسعه دهندگانِ بازی‌ها قرار است با استفاده از افزونه‌ی جدیدِ مایکروسافت برای دایرکت ایکس که DXR نامیده می‌شود، به استفاده از تکنیکِ پر قدرت و پیچیده‌ی رهگیری پرتو (Ray Tracing) در بازی‌های ساخته شده با تکنیکِ Rasterization روی آورند و بُعدِ بصریِ واقع گرایانه‌تری به بازی‌های امروزی اضافه کنند. این نوآوری در مواردی نظیرِ نورپردازیِ محیطی، انعکاس و انکسارِ اشیا در موادِ صیقلی یا شفاف و سایه‌های تماسی تاثیراتِ شگرفی ایجاد می‌کند.

همچنین گفتیم که برای اولین بار استفاده از هوشِ مصنوعی (Artificial Intelligence) یا به اختصار AI در کنارِ یادگیری عمیق (Deep Learning) به خدمت گرفته شده تا تکنیک DLSS برای بهبودِ دقت و کیفیتِ بافت‌ها و پرهیز از Aliasing در بازی‌ها قابلِ اجرا باشد. تکنیکی که با سرعت بسیار بالاتر و کیفیتی هم تراز با بهترین تکنیک‌های قبلی مثل TAA روی هسته‌های واحدِ Tensor به صورت مستقل پردازش خواهد شد. در این مقاله به بررسی اجمالیِ جنبه‌های تکنیکی این معماری در تراشه‌های گرافیکی جدید و مشخصاتِ مدل‌های معرفی شده از سوی انویدیا خواهیم پرداخت.

تورینگِ بزرگ: TU102

بزرگترین تراشه‌ی ساخته شده بر اساس تورینگ، TU102 مساحتی بالغ بر ۷۵۴ میلی‌متر مربع دارد که در قلبِ GeForce RTX 2080 Ti قرار داده شده است. تعدادِ ۱۸.۶ میلیارد ترانزیستورِ تشکیل دهنده‌ی آن با فناوریِ ساخت ۱۲ نانومتریِ کارخانه‌ی TSMC که 12nm FinFET نامگذاری شده تولید شده‌اند که یک بهبودِ تراکمِ آشکار را نسبت به فناوری قبلیِ ۱۶ نانومتری منعکس می‌کند.

در مقامِ مقایسه با بزرگ‌ترین تراشه‌ی ساخته شده با معماری پاسکال که GP102 بکار گرفته شده در GTX 1080 Ti بود، تراشه‌ی TU102 به اندازه‌ی ۶۰ درصد بزرگ‌تر است و تعداد ترانزیستورهای آن هم ۵۵ درصد بیشتر است. اما این بزرگ‌ترین تراشه‌ی ساخته شده توسط انویدیا نیست، چرا که پرچمدارِ تورینگ زیر سایه‌ی تراشه‌ی عظیمِ GV100 از نسلِ ولتا با ۲۱.۱ میلیارد ترانزیستور و مساحتِ ۸۱۵ میلی‌مترِ مربع قرار می‌گیرد. GV100 تراشه‌ای بود که در سال ۲۰۱۷ با تمرکز بر برنامه‌های کاربردی در دیتاسنترها معرفی شد و هنوز هم می‌توان آن را در کارتِ Titan V یافت.

TU102 بازارِ هدفِ متفاوتی را نسبت به GV100 نشانه گرفته است و در نتیجه فهرستی از منابع برای مطابقت با آن تدارک دیده شده است. در حالی که برخی از عناصرِ تورینگ از معماری ولتا قرض گرفته شدند، بخش‌هایی از این معماری که یا برای گیمرها منفعتی نداشتند یا برای سیستم‌های رومیزی مقرون به صرفه نبودند، به کلی از این طراحی حذف شدند.

TU102 GPU Die

برای مثال هر واحدِ Streaming Multiprocessor که به اختصار آن را SM می‌نامیم، در تراشه‌ی Volta شاملِ ۳۲ واحدِ پردازشیِ FP64 برای تسریعِ محاسبات اعشاری با دقت‌ دو برابر می‌شد که در نتیجه به تعداد ۲۶۸۸ هسته‌ی پردازشی برای FP64 در کل تراشه‌ی GV100 بالغ می‌شد. ولی این واحدها در بازی‌‌ها واقعا کاربردِ خاصی ندارند و فضای زیادی از سطحِ تراشه را هم اشغال می‌کنند، در نتیجه انویدیا این قسمت را حذف کرده و تنها دو واحد از FP64 را برای هر SM باقی گذاشته است. نتیجه این شده که راندمانِ TU102 در محاسباتِ FP64 برابر با ۱۳۲ از نرخِ راندمان FP32 در آن است و تنها تعدادِ کافی برای سازگاری با نرم افزارهایی را که به عملکردِ این واحد وابستگی دارند در تراشه باقی گذاشته است. به طور مشابه، ۸ کنترلرِ حافظه‌ی ۵۱۲ بیتی که به ۴ پشته‌ی حافظه‌ی HBM2 در GV100 متصل بودند، برای تولید بسیار گران تمام می‌شدند که با تراشه‌های GDDR6 ساختِ شرکتِ میکرون جایگزین شدند. به این ترتیب راهکارِ ارزان‌تری مهیا شد که در عینِ حال می‌تواند ارتقای پهنای باندِ بزرگی نسبت به مدل‌های پیشینِ مبتنی بر پاسکال در اختیار قرار دهد.

Nvidia Turing TU102 Block Diagram

یک پردازنده‌ی کاملِ TU102 شاملِ شش کلاسترِ پردازشِ گرافیکی یا GPC می‌شود که هر GPC هم به نوبه‌ی خود از یک Raster Engine و شش کلاسترِ پردازشِ بافت یا TPC تشکیل شده است. هر TPC هم از یک PolyMorph Engine (خط لوله‌ی پردازش‌ هندسی با تابعِ ثابت) و ۲ واحدِ SM ساخته می‌شود. در داخلِ هر SM هم می‌توان ۶۴ هسته‌ی CUDA، تعدادِ ۸ هسته‌ی Tensor، یک هسته‌ی RT برای ray tracing، تعدادِ ۴ واحد بافت، ۱۶ واحدِ load/store، میزانِ ۲۵۶ کیلوبایت فضای فایل رجیستر، ۴ حافظه‌ی کشِ L0 برای دستورالعمل و ۹۶ کیلوبایت حافظه‌ی کشِ سطح یک یا L1 و یا ساختارِ حافظه‌ی اشتراکی را مشاهده کرد.

اگر تمامِ ارقامِ فوق را محاسبه کنید، می‌توان یک تراشه‌ی گرافیکی با ۷۲ واحدِ SM، تعدادِ ۴۶۰۸ هسته‌ی CUDA، تعداد ۵۷۶ هسته‌ی Tensor، همچنین ۷۲ هسته‌ی RT، تعدادِ ۲۸۸ واحدِ بافت و ۳۶ موتور PolyMorph را بدست آورد.

Nvidia RTX 2080 ti

RTX 2080 Ti

اما RTX 2080 Ti یک تراشه‌ی کاملِ TU102 را در خود جای نداده، چرا که یا راندمانِ خطِ تولید برای تراشه‌های کامل احتمالا قابلِ قبول نبوده، یا تراشه‌ی کامل برایِ کارتی از کلاسِ تایتان کنار گذاشته شده است. در RTX 2080 Ti دو واحد از TPC-ها، یکی از کنترلر‌های ۳۲ بیتی حافظه‌ و در نتیجه بخشی از ROP-ها و حافظه‌ی کشِ L2 غیر فعال شده‌اند. در نتیجه مقادیرِ جدیدی به دست می‌آید که آنها را در جدولِ پایین می‌بینید:

GeForceGTX 1080 Ti FERTX 2080 Ti FE
تراشه‌ی گرافیکیGP102TU102
معماریPascalTuring
تعداد ترانزیستور12 Billion18.6 Billion
پروسه‌ی ساختTSMC 16 nmTSMC 12 nm
تعداد هسته‌های CUDA35844352 
تعداد هسته‌های RTN/A68
تعداد هسته‌های TensorN/A544
تعداد واحدهای بافت224272
تعداد واحدهای ROPs8888
 فرکانس پایه‌ی تراشه1,480 MHz1,350 MHz
فرکانس توربوی تراشه1,582 MHz1,635 MHz
سرعت حافظه11.00 Gbps14.00 Gbps
 اندازه‌ی حافظه11GB GDDR5X11GB GDDR6
عرض باند گذرگاه حافظه352bit352bit
پهنای باند حافظه  484 GB/s616 GB/s
حافظه‌ی کش L22.75MB5.5MB
فناوری اتصالیSLINVLink
توان مصرفی250 Watts260 Watts
قیمت۷۰۰ دلار۹۹۹ دلار

تورینگِ میانی: TU104

درست مثل TU102، کارخانه‌ی TSMC تراشه‌ی TU104 را با پروسه‌‌ی ساخت 12nm FinFet تولید می‌کند. اما تعدادِ ۱۳.۶ میلیارد ترانزیستور یک تراشه با بستری کوچک‌تر به ابعاد ۵۴۵ میلی‌مترِ مربع را نتیجه می‌دهد. البته صفت‌ "کوچک‌تر" در اینجا نسبی است، چرا که همین تورینگِ کوچک‌تر ابعادی بزرگ‌تر از تراشه‌ی پرچمدارِ نسل قبلی (GP102) با اندازه‌ی ۴۷۱ میلی‌مترِ مربع دارد و به ابعادِ تراشه‌ی GK110 که در سال ۲۰۱۳ در GeForce GTX Titan استفاده شده بود نزدیک می‌شود.

TU104 بر اساس بلوک‌های ساختمانیِ یکسان با TU102 بنا شده است، اما تعداد کمتری از آنها را در بر دارد. هر واحدِ Straming Multiprocessor یا SM هنوز ۶۴ هسته‌ی CUDA، تعدادِ ۸ هسته‌ی Tensor، یک هسته‌ی RT، چهار واحدِ بافت، ۱۶ واحدِ load/store، تعدادِ ۲۵۶ کیلوبایت فضای فایل رجیستر و ۹۶ کیلوبایت حافظه‌ی کشِ سطح یک یا ساختارِ حافظه‌ی اشتراکی را شامل می‌شود. هر واحد TPC هنوز هم از ترکیبِ دو واحد SM و یک PolyMorph Engine ساخته می‌شود. تفاوت این است که در اینجا هر GPC فقط دارای ۴ واحد TPC است و شش GPC در کلِ تراشه گسترده شده‌اند. بنابراین یک تراشه‌ی کاملا فعالِ TU104 دارای ۴۸ واحدِ SM، تعدادِ ۳۰۷۲ هسته‌ی CUDA، همین‌طور ۳۸۴ هسته‌ی Tensor، تعدادِ ۴۸ هسته‌ی RT، تعدادِ ۱۹۲ واحدِ بافت و ۲۴ موتور PolyMorph می‌شود.

NVIDIA Turing TU104

متقابلا یک پایانه‌ی باریک‌تر هم منابع پردازشی را توسطِ ۸ مسیرِ ۳۲ بیتیِ GDDR6 (جمعا ۲۵۶ بیت) در کنترلرِ حافظه تغذیه می‌کند که خود این کنترلر هم به ۶۴ واحد ROP و ۴ مگابایت حافظه‌ی کشِ L2 متصل شده است. همچنین TU104 نیمی از مسیر ارتباطی NVLink را از دست داده و به یک مسیر x8 با ۵۰ گیگابایت ظرفیتِ دو طرفه محدود شده است.

Nvidia RTX 2080

RTX 2080

بعد از این که دیدیم RTX 2080 Ti در بازیِ Battlefield V و رزولوشن 1080p می‌تواند راندمانِ قابل توجهی را در پردازشِ Ray Tracing  از خود به نمایش بگذارد، نگران این هستیم که GeForce RTX 2080 به اندازه‌ی کافی سریع هست که بتواند نرخِ فریم قابل قبولی را با فعال بودنِ این قابلیت به اجرا درآورد یا خیر. حتی یک تراشه‌ی TU104 با واحدهای کاملا فعال هم فقط به ۴۸ واحد RT محدود شده‌اند. اما از آنجایی که انویدیا یکی از واحد‌های TPC موجود در TU104 را برای استفاده در RTX 2080 غیرِ فعال کرده، یک جفتِ دیگر از واحد‌های RT هم از دست رفته‌اند و به ۴۶ واحد RT رسیده‌ایم. به علاوه ۱۲۸ هسته‌ی CUDA، تعدادِ ۸ واحد بافت و ۱۶ هسته‌ی Tensor هم غیر فعال شده‌اند. در پایان آنچه را که از بخش‌های مختلف باقی مانده در جدولِ زیر می‌بینید:

GeForceGTX 1080 FERTX 2080 FE
تراشه‌ی گرافیکیGP104TU104
معماریPascalTuring
تعداد ترانزیستور7.2 Billion13.6 Billion
پروسه‌ی ساختTSMC 16 nmTSMC 12 nm
تعداد هسته‌های CUDA25602944
تعداد هسته‌های RTN/A46
تعداد هسته‌های TensorN/A368
تعداد واحدهای بافت160184
تعداد واحدهای ROPs6464
 فرکانس پایه‌ی تراشه1,607 MHz1,515 MHz
فرکانس توربوی تراشه1,733 MHz1,800 MHz
سرعت حافظه11.00 Gbps14.00 Gbps
 اندازه‌ی حافظه8GB GDDR5X8GB GDDR6
عرض باند گذرگاه حافظه256bit256bit
پهنای باند حافظه  320 GB/s448 GB/s
حافظه‌ی کش L22MB4MB
فناوری اتصالیSLINVLink
توان مصرفی180 Watts225 Watts
قیمت۶۰۰ دلار۷۰۰ دلار

تورینگِ کوچک: TU106

GeForce RTX 2070 سومین و آخرین کارتی بود که انویدیا در رویدادِ اختصاصی گیمزکام ۲۰۱۸ معرفی کرد. برعکسِ RTX 2080 و GeForce RTX 2080 Ti، کارتِ RTX 2070 تا تاریخ ۲۶ مهر (۱۸ اکتبر) در دسترس نخواهد بود. گیمرهایی که منتظرش باشند، می‌توانند انتظار پیدا کردن مدل‌های مرجع را با شروع از قیمتِ ۵۰۰ دلار داشته باشند و مدل‌های خود انویدیا از سری Founders Edition هم ۱۰۰ دلار بیشتر قیمت خواهند داشت.

کارت RTX 2070 بر پایه‌ی یک تراشه‌ی TU106 کاملا فعال بنیان شده که از سه واحد GPC و هر GPC با شش واحد TPC تشکیل شده است. هر TPC هم ۲ واحد SM دارد که در مجموع به ۳۶ واحد SM در کلِ تراشه منجر می‌شود. این بلاک‌ها در بین تراشه‌های تورینگ یکسان هستند و تفاوتی ندارند، بنابراین RTX 2070 به ۲۰۳۴ هسته‌ی CUDA، تعدادِ ۲۸۸ هسته‌ی Tensor، تعدادِ ۳۶ هسته‌ی RT و ۱۴۴ واحدِ بافت (Texture Unit) محدود می‌شود. رابطِ حافظه مثل TU104 بدون تغییر و ۲۵۶ بیتی مانده و به ۸ گیگابایت حافظه‌ی GDDR6 با همان سرعتِ ۱۴ گیگابیت بر ثانیه مجهز شده است. در نتیجه پهنای باندِ حافظه هم ۴۴۸ گیگابایت بر ثانیه است. یک حافظه‌ی کش سطح دوم یا L2 به اندازه‌ی ۴ مگابایت و ۶۴ واحدِ ROP هم به آن متصل هستند و تنها قابلیتی که در اینجا حذف شده NVLink است که در RTX 2070 پشتیبانی نشده است.

NVIDIA Turing TU106

با این که TU106 کمترین پیچیدگی در بین تراشه‌های گرافیکی تورینگ را در زمانِ عرضه دارد، بسترِ ۴۴۵ میلی‌مترِ مربعیِ آن، ترانزیستورهایی به تعدادِ ۱۰.۸ میلیارد را در دلِ خود جای داده است که هنوز هم تعدادِ عظیمی است برای آنچه که زمانی برای انویدیا رده میانی محسوب می‌شد. در مقایسه با نسلِ قبلی، تراشه‌ی GP106 یا همان پاسکالِ رده میانی مساحتِ ۲۰۰ میلی‌متر مربعی داشت و تنها ۴.۴ میلیارد ترانزیستور را در خود جای داده بود. حتی GP104 هم با ۳۱۴ میلی‌مترِ مربع دارای ۷.۲ میلیارد ترانزیستور بود. با هدفِ دسترسی به راندمانی بهتر از GTX 1080، کارتِ RTX 2070 تلاش دارد تا ضمنِ حفظ هسته‌های RT و Tensor، استفاده‌ی کارآمد از قابلیت‌ِ آنها را هم امکان‌پذیر کند. جالب توجه خواهد بود که میزانِ کارآمدیِ واحد‌های RT و Tensor را در شرایطی که TU106 تقریبا فقط نیمی از واحدهای مذکور در RTX 2080 Ti را در اختیار دارد، در زمانی که نرم افزارهای بهینه در دسترس قرار گرفتند ببینیم.

NVIDIA RTX 2070

GeForceGTX 1070 FERTX 2070 FE
تراشه‌ی گرافیکیGP104TU106
معماریPascalTuring
تعداد ترانزیستور7.2 Billion10.8 Billion
پروسه‌ی ساختTSMC 16 nmTSMC 12 nm
تعداد هسته‌های CUDA19202304
تعداد هسته‌های RTN/A36
تعداد هسته‌های TensorN/A288
تعداد واحدهای بافت120144
تعداد واحدهای ROPs6464
 فرکانس پایه‌ی تراشه1,506 MHz1,410 MHz
فرکانس توربوی تراشه1,683 MHz1,710 MHz
سرعت حافظه11.00 Gbps14.00 Gbps
 اندازه‌ی حافظه8GB GDDR58GB GDDR6
عرض باند گذرگاه حافظه256bit256bit
پهنای باند حافظه  256 GB/s448 GB/s
حافظه‌ی کش L22MB4MB
فناوری اتصالیSLIN/A
توان مصرفی150 Watts185 Watts
قیمت۴۰۰ دلار۶۰۰ دلار

بهبودِ راندمانِ تورینگ در بازی‌های روز

قبل از انتشارِ بررسی‌ها، بعضی از حرفه‌ای‌ها نگرانیِ خود را از افزایشِ نه چندان قابلِ توجهِ تعداد هسته‌های CUDA در کارت‌های تورینگ نسبت به همتایانِ نسل قبلی ابراز کرده بودند. بردهای قدیمی‌تر حتی فرکانس‌های بوستِ بالاتری هم داشتند. انویدیا حتی با اشاره نکردن به بهبود‌های نسلی در بازی‌های روز در مراسمِ معرفیِ کارت‌های جدید در شهرِ کلنِ آلمان، به نوعی بی‌ اهمیت بودنِ این موضوع را القا می‌کند. اما در واقع انویدیا تلاشِ زیادی را در بازطراحیِ معماریِ تورینگ برای بهبود راندمان به ازای هر هسته کرده است.

Turing Concurrent FP32 INT32

برای شروع، تورینگ پشتیبانی از اجرای همزمانِ دستورالعمل‌های محاسباتیِ FP32 و عملیاتِ INT32 را از ولتا قرض گرفته است. FP32 بیشترین حجمِ پردازشی در واحدهای سایه‌زن (Shader) را تشکیل می‌دهد و INT32 هم برای عملیاتی نظیرِ آدرس‌دهی، گرفتنِ داده‌ها، ماکزیمم و مینی‌مم اعشاری، مقایسه و مانندِ آن استفاده می‌شود. این قابلیت بیشترینِ نقشِ افزایشِ راندمان در تورینگ نسبت به پاسکال را مرهونِ خود کرده است.

در نسل‌های گذشته، دستورالعمل‌‌‌هایی از انواعِ متفاوت نمی‌توانستند همزمان اجرا شوند که این خود باعثِ بیکار ماندنِ خطِ لوله‌ی اعشاری در هنگامِ اجرای دستورالعمل‌های غیرِ اعشاری می‌شد. معماریِ ولتا به دنبالِ تغییرِ این رویه با ساختنِ خطِ لوله‌های مجزا برای هر یک از آنها برآمد. به این ترتیب بازدهی اجرای دستورات افزایش پیدا کرد و این مهم با تغییر در ترکیبِ ساختاری هر واحدِ SM یا Streaming Multiprocessor ممکن شد.

Turing vs Pascal SM

انعطافِ تورینگ از داشتنِ دو برابر واحدِ زمان‌بندِ بیشتر (scheduler) نسبت به پاسکال است که اکنون به یک زمان‌بند به ازای هر ۱۶ هسته‌ی CUDA رسیده است، در حالی که در پاسکال یک زمان‌بند به ازای هر ۳۲ واحدِ CUDA بود. افزایش و یکپارچه سازیِ ظرفیتِ حافظه‌های کشِ L1 به ازای هر SM و L2 که اکنون به دو برابرِ میزانِ تعبیه شده در معماری پاسکال رسیده است هم نقشِ کلیدی در بهبودِ راندمان بازی می‌کند. به لطفِ این تعادلِ بهبود یافته، معماری تورینگ اکنون می‌تواند از منابع استفاده‌ی بهتری داشته باشد.

واحدِ Tensor

اگر چه معماری ولتا تغییراتِ عمده‌ی زیادی را در مقایسه با معماری پاسکال در بر داشت، اضافه شدنِ هسته‌های Tensor، بزرگترین نشانه از هدفِ نهایی تراشه‌ی GV100 بود: شتابدهیِ ماتریسی ۴×۴ از عملیات با ورودی‌های FP16 (فرمتِ عددِ اعشاری با استفاده از ۱۶ بیتِ باینری) که اساسِ استنتاج و آموزشِ شبکه‌های عصبی را تشکیل می‌دهد.

درست مانند ولتا، معماری تورینگ هم ۸ هسته‌ی Tensor به ازای هر SM در اختیار دارد. البته TU102 شامل SM-های کمتری نسبت به GV100 است و خودِ GeForce RTX 2080 Ti هم واحدهای فعالِ کمتری از TU102 را در مقایسه با TItan V در اختیار دارد (۶۸ در برابر ۸۰). در نتیجه این کارت در کل ۵۴۴ هسته‌ی Tensor دارد که ۹۶ واحد کمتر از ۶۴۰ هسته‌ی کارت Titan V است. اما نکته‌ی مهم این است که هسته‌های Tensor در TU102 به شکلِ متفاوتی از هسته‌های ولتا پیاده سازی شده‌اند و عملیاتِ INT4 و INT8 را هم پشتیبانی می‌کنند که البته دلیلِ موجهی دارد: GV100 ساخته شده بود که شبکه‌های عصبی را درک کند و یاد بگیرد، در حالی که TU102 یک تراشه‌ی گیمینگ است و قرار است توانایی استفاده از الگوریتم‌های فرا گرفته شده برای استنتاج را هم داشته باشد. انویدیا ادعا دارد که هسته‌های Tensor در TU102 تا ۱۱۴ ترافلاپس برای عملیات FP16، تا ۲۲۸ میلیارد عملیات برای INT8 و تا ۴۵۵ میلیارد عملیات برای INT4 ارائه می‌کنند.

بیشترِ برنامه‌های فعلی انویدیا برای واحدِ Tensor پیرامونِ گرافیکِ عصبی (neural graphics) سیر می‌کند. با این همه این کمپانی در موردِ کاربردهای دیگرِ یادگیری عمیق در کارت‌های گرافیکِ رومیزی هم در حال تحقیق است. برای نمونه دشمنانِ هوشمند می‌توانند به کلی رویکردِ گیمرها در نبردهای نهایی (Boss Fights) در بازی‌ها را دگرگون کنند. درکِ گفتار، تشخیصِ صدا، ترمیمِ هنری، تشخیصِ تقلب و انیمیشنِ کاراکترها همه حوزه‌هایی هستند که هوش مصنوعی در آنها کاربرد دارد و یا انویدیا در آنها زمینه‌هایی را برای کاربردِ مناسب می‌بیند.

Tensor Cores Neural Network flowchart

اما البته GeForce RTX روی DLSS یا همان Deep Learning Super Sampling تمرکز دارد. شیوه‌ی پیاده سازیِ DLSS به پشتیبانیِ سازنده از طریقِ NGX API انویدیا نیاز دارد. انویدیا می‌گوید که مشارکت در این طرح آسان است و قبلا هم فهرستی از بازی‌هایی را که برای پشتیبانی از DLSS برنامه ریزی شده‌اند منتشر کرده است تا اشتیاقِ این صنعت را به کاری که DLSS با کیفیتِ تصاویر می‌کند به رخ بکشد. احتمالا سهولتِ کار برای بازی‌سازان به این دلیل است که بخشِ اعظمِ کار بر عهده‌ی خودِ انویدیا است. این کمپانی تصاویرِ واقع گرایانه از بازی را با بالاترین کیفیتِ ممکن تولید می‌کند. این کار از طریقِ بهره گیری از نمونه‌هایی با رزولوشنِ فوقِ العاده بالا در هر فریم، یا تعداد‌ زیادی فریم که با هم ترکیب شده‌اند میسر می‌شود. سپس به یک مدلِ هوش مصنوعی در سرورِ SaturnV (دارای ۶۶۰ نود DGX-1) تعلیم داده می‌شود که تا جای ممکن نزدیک‌ترین تصاویرِ به تصاویرِ واقع گرایانه با کیفیتِ پایین‌تر را تشخیص دهد. این مدل‌های AI از طریقِ درایورِ انویدیا دانلود شده و در هسته‌های Tensor روی هر کارت گرافیک GeForce RTX قابلِ دسترسی خواهند بود. انویدیا می‌گوید که حجم این مدل‌های AI بر اساس مگابایت قابلِ اندازه گیری خواهد بود که در نتیجه آنها را نسبتا سبک وزن و کم حجم می‌کند.

با این که امیدوار بودیم که نرم افزارِ جانبی GeForce Experince یا (GFE) یکی از ملزوماتِ DLSS نباشد، اما اکنون تردید داریم که ممکن است به آن هم نیاز باشد. انویدیا تایید کرده که ویژگی‌های NGX در GFE تنیده شده‌اند. اگر این نرم افزار یک تراشه‌ی گرافیکی بر مبنای تورینگ را شناسایی کند، یک پکیج به نام NGX Core را دانلود می‌کند که بازی‌ها یا اپلیکیشن‌های مرتبط با NGX را تشخیص می‌دهد. اگر موردِ مطابقی روی سیستم پیدا شود، NGX Core هر گونه اطلاعاتِ مربوط به شبکه‌های عصبی و یادگیریِ عمیق را برای استفاده‌ی بعدی بازیابی می‌کند.

TAA Anti Aliasing

تصویری از دموی پردازش شده با تکنیکِ TAA برای Anti-Aliasing، به گسستگیِ متن توجه کنید

NVIDIA DLSS Anti Aliasing

محو شدگیِ متن با تکنیکِ DLSS در همان صحنه برطرف شده است و کیفیتِ به مراتب بالاتری دارد

آیا DLSS ارزش این تلاش را خواهد داشت؟ فعلا سخت است که قضاوت کنیم. ما یک نمونه از DLSS در دموی Infiltrator ساخته‌ی Epic را دیده‌ایم که بسیار خوب به نظر می‌رسید. اما مشخص نیست که انویدیا بتواند همین سطح از نتایج را برای هر بازی دیگری فارغ از سبک، سرعت و جزئیاتِ محیطیِ آن بدست آورد. چیزی که اکنون می‌دانیم این است که DLSS یک یادگیری پیچشی (تعریفی در شبکه‌ی عصبی پیچشی یا convolutional neural network: رده‌ای از شبکه‌های عصبیِ عمیق هستند که معمولاً برای انجام تحلیل‌های تصویری یا گفتاری در یادگیریِ ماشین استفاده می‌شوند) به صورتِ real-time و رمزگذارِ اتوماتیکی است که از تصاویری که ۶۴ برابر نمونه برداری شده‌اند، استخراج شده است. در واقع به DLSS از طریقِ رابطِ نرم افزاری NGX API یک فریم با دقتِ معمولی می‌دهند و به جای آن یک نسخه‌ی با کیفیتِ بالاتر از همان فریم را برمی‌گرداند.

اما کمی بعدتر مشخص شد که DLSS می‌تواند با کاستن از بارِ کاریِ سایه‌زن‌ها یا همان Shader-ها به افزایشِ راندمان کمک کند. تورینگ می‌تواند خروجیِ با کیفیت‌تری از نمونه‌های ورودی در مقایسه با یک الگوریتمِ پس پردازش مانندِ Temporal Anti-Aliasing یا همان TAA تولید کند. با این که تورینگ زمانِ قابل توجهی را صرفِ اجرای شبکه‌ی عصبی می‌کند، میزانِ صرفه جویی شده به خاطرِ کارِ کمتر در هسته‌های سایه‌زن قابل توجه‌تر است. همچنین با استفاده از DLSS، از عارضه‌ها و محو شدگی‌هایی که گاهی اوقات با بکارگیریِ تکنیکِ TAA ایجاد می‌شوند هم اجتناب می‌شود. انویدیا قبلا فهرست بازی‌هایی که از فناوری RTX و DLSS پشتیبانی می‌کنند را اعلام کرده بود.

واحدِ RT

فراتر از محدوه‌ی آنچه که‌ معماری ولتا به آن رسیده بود و احتمالا امیدوار کننده‌ترین بخش در داستانِ تورینگ، هسته‌های RT برای محاسباتِ رهگیری پرتو (Ray Tracing) هستند که به انتهای هر واحدِ SM در تراشه‌ی TU102 ضمیمه شده‌اند. هسته‌های RT انویدیا لزوما شتابدهنده‌های تک منظوره‌ای برای عملیاتِ Bounding Volume Hierarchy یا اختصارا BVH و همین‌طور به منظورِ تشخیصِ برخورد پرتو با مثلث‌ها هستند (مثلث کوچک‌ترین واحدِ تشکیل دهنده‌ی چند ضلعی‌هایی است که در گرافیکِ سه بعدی برای ترسیمِ اشکالِ مختلف استفاده می‌شوند، زیرا یک مثلث هرگز نمی‌تواند غیر مسطح باشد. هر چندضلعی با داشتنِ بیشتر از ۳ راس به مثلث قابل تجزیه است). قبل از این طی مقاله‌ای جداگانه به Ray Tracing و کارکرد و تاثیرِ آن در بازی‌ها پرداخته بودیم، اما حالا به شیوه‌ی پیاده سازی و پردازشِ فنی آن در هسته‌های RT خواهیم پرداخت.

به طور خلاصه، BVH جعبه‌های فرضیِ هندسی را در صحنه‌ی داده شده شکل می‌دهد. این جعبه‌ها کمک می‌کنند که موقعیتِ مثلث‌های قرار گرفته در مسیرِ پرتو را در طیِ یک ساختارِ درختی (مطابق شکل‌های بالا) مرحله به مرحله محدودتر کنند. هر زمان که یک مثلث در یک جعبه‌ای پیدا شود، آن جعبه به جعبه‌های کوچک‌تر تقسیم می‌شود و این کار تا زمان‌ پیدا شدن‌ جعبه‌ی نهایی ادامه پیدا می‌کند. جعبه‌ی نهایی هم جعبه‌ای است که قابلِ تقسیم به مثلث‌ها باشد. بدونِ BVH-ها، یک الگوریتم مجبور بود تا تمامِ صحنه را در جستجوی مثلث‌ها پیمایش کند و هزاران سیکلِ پردازشی برای آزمایشِ برخوردِ یک پرتو با هر مثلث از بین می‌رفت.

Ray Tracing on Pascal GPU

امروزه اجرای این الگوریتم با استفاده از لایه‌های بازگشتی در API یا‌ رابطِ برنامه‌سازیِ Ray tracing اضافه شده به دایرکت ایکس 12 مایکروسافت به صورت کامل امکان‌پذیر است. در این شیوه از هسته‌های مرسومِ سایه‌زن برای شبیه سازیِ تکنیکِ رهگیریِ پرتو روی دستگاه‌های بدون پشتیبانیِ سخت افزاری از Ray tracing استفاده می‌شود. به عنوان نمونه روی تراشه‌های گرافیکی پاسکال، اسکن به روشِ BVH روی هسته‌های قابل برنامه ریزی اتفاق می‌افتد که هر جعبه را دریافت، رمزگشایی و برای وجود یا عدمِ وجودِ تلاقی با پرتو آزمایش می‌کنند و تعیین می‌کنند که جعبه‌ی کوچک‌تر یا مثلث در داخل‌ آنها وجود دارد یا خیر. این پروسه تا پیدا شدنِ محلِ تلاقی پرتو با مثلثِ نهایی تکرار می‌شود. همان‌طور که ممکن است تصور کنید، این عملیات برای اجرا در سطحِ نرم افزاری بسیار پر هزینه و زمان‌بر است و از اجرای روانِ تکنیکِ رهگیریِ پرتو به صورتِ Real-time روی پردازنده‌های گرافیکیِ امروزی جلوگیری می‌کند.

Ray Tracing on Turing GPU

با ساختنِ شتاب‌دهنده‌های تک منظوره برای مراحلِ آزمایشِ تلاقی با جعبه و مثلث، واحدِ SM یک پرتو را به کمکِ یک سایه‌زنِ مولدِ پرتو به صحنه می‌تاباند و ادامه‌ی کار را به گذرگاهِ شتابدهنده در هسته‌ی RT واگذار می‌کند. در نتیجه تمامِ ارزیابی‌های مربوط به تلاقی یا برخورد بسیار سریع‌تر اتفاق می‌افتد و منابعِ دیگرِ واحدِ SM در معماری تورینگ (شکلِ بالا) برای کارهای معمولِ این واحد به روشِ مرسومِ rasterization آزاد می‌شود.

ray tracing vs Raster

به گفته‌ی انویدیا، یک GeForce GTX 1080 Ti می‌تواند حدودِ ۱.۱ میلیارد پرتو در ثانیه را با استفاده از هسته‌های CUDA در حالتِ نرم افزاری پردازش کند. در مقایسه، GeForce RTX 2080 Ti می‌تواند حدودِ ۱۰ میلیارد پرتو در ثانیه را با بهره گیری از توانایی ۶۸ هسته‌ی RT محاسبه کند. لازم به یادآوری است که مقادیرِ راندمان بر حسبِ Gigarays، بر اساسِ میانگینِ هندسیِ بدست آمده از خروجی‌های متعدد محاسبه و اعلام شده است.

Mesh Shading

بهبودهای معماری معمولا بین تغییراتی که بازی‌های کنونی را متاثر می‌کند و امکاناتِ جدیدی که به پشتیبانی از بازی‌های آینده احتیاج دارند تقسیم می‌شود. حداقل در هنگام‌ عرضه، کارت‌های GeForce RTX انویدیا بر اساسِ موردِ اولی مورد قضاوت قرار خواهند گرفت. راندمانِ آنها تنها در بازی‌های فعلی قابلِ سنجش است. با این که کار کشته‌های حوزه‌ی سخت افزار هر یک دیدگاه‌های خود را در موردِ تاثیر Ray Tracing در ایجادِ یک تجربه‌ی ناب در بازی‌ها دارند، با تجربه‌ی من سخت افزار را نمی‌توان تنها بر اساسِ وعده‌‌هایی که برای آینده داده شده است ( در اینجا منظور امکاناتِ RT و DLSS است) پیشنهاد کرد.

Mesh Shading

با این حال معماری تورینگ دارای تعدادی ویژگیِ گرافیکی پیشرفته است که به قابلیت‌هایی که هنوز در دسترس نیستند مجهز شده است. به عنوان مثل mesh shader-ها خط لوله‌های پردازشی فعلی دایرکت ایکس 11 و دایرکت ایکس 12 را تقویت می‌کنند. بر این اساس در مدلِ فعلی، پردازنده‌های میزبان مسئولیتِ محاسبه‌ی Level of Detail یا LOD، جمع آوری آبجکت‌هایی که در دیدرَس نیستند و صدورِ درخواستِ ترسیم (Draw call) را برای هر آبجکت بر عهده دارند. پردازنده‌ها تا حدِ معینی برای این کار مناسب هستند، اما در صحنه‌های پیچیده با صدها هزار آبجکت، وضعیت بغرنجی برای رسیدگی به این کارها خواهند داشت.

در عوض با استفاده از یک mesh shader، سازندگان بازی می‌توانند محاسباتِ LOD و جمع آوری آبجکت‌ها را به یک task shader واگذار کنند که جای مراحلِ  vertex shader و hull shader را می‌گیرد (تصویرِ بالا). از آنجا که task shader عمومی‌تر از vertex shader است، قادر است فهرستی از آبجکت‌ها را از CPU گرفته و در یک برنامه‌ی پردازشی اجرا کند و جای آبجکت‌ها، نسخه‌ی هر آبجکت بر اساس LOD و این که آبجکت نیاز به جمع آوری قبل از ارسال به خط لوله دارد را تعیین کند.

Variable Rate Shading

اضافه بر بهینه سازیِ روشی که تورینگ داده‌های هندسی را پردازش می‌کند، انویدیا همچنین از مکانیزمی برای انتخابِ کیفیتِ سایه‌زنی یا shading پشتیبانی می‌کند. در این شیوه بلاک‌هایی متشکل از ۱۶ در ۱۶ پیکسل در قسمت‌های مختلفِ صحنه با نرخ‌های متفاوت سایه‌زنی می‌شوند تا راندمان را افزایش دهند. به طور طبیعی سخت افزار هنوز هم می‌تواند هر پیکسل را در الگوی ۱×۱ سایه‌زنی کند. اما این معماری استفاده از گزینه‌های دیگری مثل الگوهای ۲×۱، ۱×۲ و ۴×۴ را هم تسهیل می‌کند.

Full rate Shading

Full-rate Shading یا سایه‌زنی با نرخِ کامل (تصویرِ بالا)

Content Adaptive Shading Color Coded

Content-adaptive shading یا سایه‌زنیِ وابسته به محتوا - کدگذاری شده با رنگ‌

Content Adaptive Shading final Output

Content-adaptive shading یا سایه‌زنیِ وابسته به محتوا - خروجی نهایی

انویدیا مواردِ استفاده‌ی متعددی را برای سایه‌زنی با نرخِ متغیر (variable rate shading) در عمل معرفی کرده است. اولین کاربرد در content-adaptive shading یا سایه‌زنیِ سازگار با محتوا است، جایی که قسمت‌های دارای جزئیاتِ کمتر در صحنه تغییرِ زیادی نمی‌کنند و می‌توانند با نرخِ کمتری سایه‌زنی شوند.

Motion-adaptive shading

motion-adaptive shading هم کاربردِ جالبِ دیگری از فناوریِ سایه‌زنی با نرخِ متغیرِ انویدیا است که در آن آبجکت‌های در حالِ حرکت در دقت پایین‌تری نسبت به موضوعی که روی آن تمرکز داریم به نظر می‌رسند. بازی‌سازان می‌توانند نرخِ سایه‌زنی را بر اساسِ بردارِ حرکتیِ هر پیکسل به دلخواه تعیین کنند و الگوهای همسان با مثالی را که در استفاده‌ی اولی از این روش دیدیم پیاده سازی کنند. در کارت‌های گرافیکِ نسبتا ضعیف و بازی‌های سنگین‌تر دستیابی به ۲۰ درصد راندمانِ بالاتر با استفاده از این روش امکان‌پذیر خواهد بود. مهم‌تر این که افتِ کیفیتِ تصویریِ محسوسی هم نخواهیم داشت. استفاده از این فناوری مستلزمِ گنجانده شدنِ آن در API است و انویدیا برای فعال شدنِ پشتیبانی دایرکت ایکس از سایه زنی با نرخِ متغیر در حالِ کار با مایکروسافت  است. اما تا آن زمان، عملکردِ adaptive shading را در کیتِ توسعه‌ی نرم افزارِ NVAPI در اختیار قرار خواهد داد که دسترسیِ مستقیم به قابلیت‌های تراشه‌ی گرافیکی را فراتر از بازه‌ی کاریِ دایرکت ایکس و OpenGL فراهم خواهد کرد.

جمع بندی

انویدیا برای پیشبردِ فناوری گرافیکی، ریسکِ حساب شده‌ای را با پیاده سازیِ واحدهای RT و Tensorمتقبل شد

انویدیا می‌توانست به جای تقسیمِ تمرکزش بینِ افزایشِ راندمان و سرمایه گذاری برای آینده، تمامِ تلاش‌هایش را تنها مصروفِ قابلیت‌هایی کند که معماری تورینگ را در بازی‌های امروزی سریع‌تر از پاسکال می‌سازد. اما در عوض این کمپانی فرصتی را برای هدایتِ نوآوریِ آینده دید و ریسکِ حساب شده‌ای را تقبل کرد. چرا که در حالِ حاضر برتریِ راندمان و بهره‌وری در محصولاتش نسبت به سری Vega RX از ای‌ام‌دی، موقعیتِ ایجادِ یک فاصله‌ی ایمن برای ارائه‌ی فناوری نسلِ بعدی بیش از آنچه که در سال‌های اخیر شاهد بوده‌ایم را فرآهم کرده است.

ray tracing in Shadow of the Tomb raider

اختصاصِ تعدادِ زیادی از ترانزیستورها به هسته‌های RT و Tensor برای دیدنِ نتیجه در امروز و فردا نیست و ممکن است در ماه‌ها و حتی سال‌های آتی ثمر بخش باشد. زمانی که سازندگان با بهینه سازیِ بازی‌هایشان برای استفاده‌ی ترکیبی از ray tracing در زمانِ واقع و rasterization راحت‌تر شوند. انویدیا نیاز دارد که آنها برای کسبِ تجربه با گرافیک‌های عصبی و هوشِ مصنوعی زمانِ بیشتری را صرف کنند. فناوری‌هایی مثل mesh shading و variable rate shading هنوز هیچ کجا استفاده نشده‌اند و نیاز به توسعه و پشتیبانی دارند. با همه‌ی این گفته‌ها، اشتیاقِ سازندگان به استفاده از ray tracing یکپارچه به نظر می‌رسد و این حقیقتا همان چشم اندازی است که هر کسی می‌خواهد محقق شدنش را ببیند.

منبع TomsHardware
اسپویل
برای نوشتن متن دارای اسپویل، دکمه را بفشارید و متن مورد نظر را بین (* و *) بنویسید
کاراکتر باقی مانده