مقايسه جديدترين معماريهاي پردازنده گرافيكي: Navi در برابر Turing
دنياي پردازش گرافيكي روزبهروز پيچيدهتر و جذابتر ميشود. غولهاي بازار يعني AMD و Nvidia همهي تلاش خود را به كار ميگيرند تا حرفهايترين متخصصان دنياي كامپيوتر يعني گيمرها و متخصصان توليد محتواي گرافيكي را به خود جذب كنند. متخصصان مذكور پس از مطالعهي عميق اخبار و مطالعهها پيرامون محصولات گرافيكي، هزينهي بالايي را براي خريد كارت گرافيك از هر يك از بازيگران اصلي بازار، پرداخت ميكنند. سختافزاري كه توسط آنها خريداري ميشود، يك پردازندهي گرافيكي بسيار قدرتمند دارد كه ميلياردها ترانزيستور در آن قرار گرفته است؛ ترانزيستورهايي كه با سرعت عملياتي ما فوق تصور فعاليت ميكنند.
شايد تفاوت معماري و زيرساخت كارتهاي گرافيكي براي همهي متخصصان جذاب نباشد. اكثر آنها با اعتماد به مطالعههاي موجود در اينترنت يا بنچماركها، محصولي را خريداري ميكنند و عموما هم نيازهايشان بهخوبي برطرف ميشود. با اين حال برخي از متخصصان و متخصص كارشناسان به جزئيات عملكردي و معماري سختافزارهاي گرافيكي اهميت ميدهند. بهعنوان مثال آنها تمايل دارند تا تفاوت قلب تپندهي كارت گرافيك Radeon RX 5700 را با خانوادهي GeForce RTX درك كنند. در ادامهي اين مطلب اخبار تخصصي، علمي، تكنولوژيكي، فناوري مرجع متخصصين ايران، مطالعه عميقي روي اين پردازندههاي گرافيكي تحولآفرين داريم و جديدترين معماري پردازندههاي AMD و انويديا را مطالعه ميكنيم: Navi در برابر Turing.
آناتومي پردازندههاي گرافيكي مدرن
پيش از آنكه به مطالعه عميق ساختار كلي تراشهها و سيستمها بپردازيم، نگاهي كلي به ساختار پردازندههاي گرافيكي (GPU) مدرن خالي از لطف نخواهد بود. سهم عمدهاي از ساختار اين پردازندهها، محاسبهگرهاي مميز شناور هستند. به بيان ديگر آنها فقط عمليات رياضي را در مقادير اعشاري و كسري انجام ميدهند. درنتيجه هر پردازندهي گرافيكي بايد يك بخش منطقي براي انجام چنين وظايفي داشته باشد كه بهنام FF ALU يا Floating Point Arithmetic Logic Units شناخته ميشود. در اكثر نوشتهها از عبارت اختصاري FPU براي اين عملگرهاي منطقي استفاده ميشود.
همهي محاسباتي كه توسط پردازندهي گرافيكي انجام ميشود، در واحد مميز شناور نيستند. درنتيجه بايد يك ALU براي محاسبات رياضي اعداد صحيح (كامل) هم وجود داشته باشد. در برخي موارد همان واحد قبلي چنين عملياتي را هم انجام ميدهد.
واحدهاي منطقي كه در بالا به آنها اشاره شد، نياز به بخشي براي سازماندهي دارند. بهبيان ديگر بخشي براي رمزگشايي ارتباطها بايد وجود داشته باشد تا واحدهاي منطقي را مشغول كند. براي اين منظور حداقل به يك گروه از واحدهاي منطقي اختصاصي نياز خواهد بود. گروه مذكور برخلاف ALUها قابليت برنامهريزي را به متخصص نهايي نميدهد، بلكه توليدكنندهي سختافزار آن را براي مديريت توسط پردازندهي گرافيكي و درايورهاي مرتبط، طراحي ميكند.
براي ذخيرهسازي دستورهاي عملكردي و دادههايي كه بايد پردازش شوند، بايد زيرساخت حافظه هم در سختافزار وجود داشته باشد. در سادهترين سطح ساختار حافظه، دو نوع زيرساخت طراحي ميشود: حافظهي نهان يا كش و بخشي نيز بهعنوان حافظهي محلي در انديشه متخصصين گرفته ميشود. بخش اول در داخل پردازندهي گرافيكي قرار ميگيرد و SRAM ناميده ميشود. اين نوع از حافظه سرعت بالايي دارد، اما بخش زيادي از الگوي پردازنده را به خود اختصاص ميدهد. حافظهي محلي بهنام DRAM شناخته ميشود و عملكرد كندتري دارد. بهعلاوه آن را در پردازندهي گرافيكي تعبيه نميكنند. اكثر كارتهاي گرافيكي امروزي حافظهي محلي را بهصورت ماژولهاي GDDR DRAM دارند.
رندر گرافيكهاي سهبعدي درنهايت به وظايف اضافي هم نياز پيدا ميكند تا بافتها و اجسام را به بهترين نحو نمايش دهد. چنين عملكردهايي مانند واحدهاي عملكردي و كنترلي، بهصورت طبيعي توابع ثابت محسوب ميشوند. وظايف آنها و چگونگي انجام كاملا براي متخصصاني كه از پردازندهي گرافيكي استفاده كرده يا براي آن برنامهنويسي ميكنند، شفاف خواهد بود.
براي درك بهتر پردازندههاي گرافيكي، در ادامه براساس تعاريف بالا يك GPU فرضي ميسازيم:
در تصوير بالا بلوك نارنجي واحدي است كه بافتها را مديريت و طراحي ميكند و بهنام Texture Mapping Unit يا TMU (واحد بافت نگاشت) شناخته ميشود. بخش TA يا Texture Addressing موقعيتهاي حافظه را براي استفادهي حافظهي پنهان و محلي ميسازد. بخش ديگر يعني TF يا Texture Fetch مقادير بافتها را از حافظه دريافت كرده و با هم تركيب ميكند. امروزه واحدهاي TMU تقريبا در محصول همهي توليدكنندهها به هم شبيه هستند. آنها توانايي مشابه شناسايي، نمونهسازي و تركيب چندين بافت را در هر چرخهي عملكرد GPU دارند.
بلوك زيرين مقادير رنگ را براي پيكسلهاي هر فريم مشخص ميكند. بهعلاوه نمونهسازي (توسط واحد PO) و تركيب (توسط واحد PB) مقادير رنگ نيز در اين بلوك همين بلوك براي انجام عمليات حذف پلگي هم به كار گرفته ميشود. نام بلوك مذكور Render Output Unit يا Render Backend است كه بهصورت اختصار ROP (واحد خروجي رندر) يا RB خوانده ميشود. اين بلوك هم مانند TMU بهنوعي استاندارد شده است و توانايي مديريت چندين پيكسل را در هر چرخهي عمليات پردازنده دارد.
پردازندهي گرافيكي سادهاي كه در بالا شرح داديم، حتي با توجه به استانداردهاي ۱۳ سال پيش هم عملكرد واقعا بدي خواهد داشت. در پردازندهي ما از هر واحد FPU، TMU و ROP تنها يك عدد وجود دارد. درحالي كه پردازندههاي سال ۲۰۰۶ همچون GeForce 8800 GTX از واحدهاي فوق به ترتيب ۱۲۸، ۳۲ و ۲۴ عدد داشتند. درنتيجه براي بهبود عملكرد پردازندهي گرافيكي مدل، بايد تغييراتي در آن ايجاد كنيم.
در تصوير بالا و در ادامهي مدلسازي پردازندهي گرافيكي، ما هم با اضافه كردن بخشهاي جديد، محصول خود را بهروزرساني كرديم. بهبيانديگر اكنون تراشه توانايي پردازش دستورالعملهاي بيشتري را بهصورت همزمان خواهد داشت. بهعلاوه براي افزايش پردازش همزمان، حافظهي كش را نيز كمي افزايش داده، اما اين بار آن را در كنار واحدهاي منطقي قرار داديم. هرچه حافظهي كش به زيرساخت محاسباتي نزديكتر باشد، در شروع عمليات اجرايي سريعتر عمل خواهد كرد.
اشكال اصلي طراحي جديد اين است كه تنها يك واحد كنترلي براي مديريت ALUهاي اضافه وجود دارد. اگر بلوكهاي بيشتري براي اين بخش داشتيم، عملكرد پردازنده بهتر ميشد. بلوكهايي كه هركدام توسط كنترلر مجزاي خود مديريت شوند. درنتيجه عمليات بسيار متنوع و متعدد بهصورت همزمان مديريت و كنترل ميشود.
تصوير بالا نمونهي نزديكتري به واقعيت نشان ميدهد. واحدهاي ALU مجزا كه هركدام مجهز به TMU و ROP اختصاصي هستند و بخشهايي از حافظهي سريع كش به آنها اختصاص داده شده است. در طراحي بالا، از هر بخش ديگر تنها يك عدد در ساختار GPU ديده ميشود، اما بههرحال زيرساخت اصلي تفاوت آنچناني با پردازندههاي گرافيكي امروزي در كامپيوترهاي شخصي و كنسولهاي بازي ندارد.
Navi در برابر Turing: پردازندههاي گرافيكي گودزيلا
پس از درك اوليه از ساختار پردازندههاي گرافيكي، نوبت به مقايسهي جديدترين معماري آنها يعني Navi در برابر Turing ميرسد. براي انجام مقايسه، تصاويري واقعي هم از بخشهاي اصلي پردازندهها با هم مقايسه ميشود كه براي درك بهتر بزرگنمايي و شفافسازي شدهاند.
در سمت چپ تصوير زير جديدترين پردازندهي AMD را مشاهده ميكنيد كه در كارتهاي سري RX 5700 از آن استفاده شده است. اين تراشه به نام Navi شناخته ميشود و برخي منابع از نام Navi10 براي آن استفاده ميكنند. معماري گرافيكي آن نيز RDNA نام دارد. در سمت راست تصوير پردازندهي TU102 شركت انويديا را مشاهده ميكنيم كه با جديدترين معماري Turing ساخته شده است. شايان ذكر است تصاوير زير، مقياس برابر ندارند. مساحت ناوي ۲۵۱ ميليمتر مربع و مساحت پردازندهي انويديا ۷۵۲ ميليمتر مربع است. در همين مقايسهي اوليه ميبينيم كه انويديا مساحت بزرگتري را به پردازندهي گرافيكي اختصاص ميدهد، اما تفاوت عملكردي آنها آنچنان زياد نيست.
هر دو پردازنده تعداد بسيار زيادي ترانزيستور دارند. پردازندهي AMD داراي ۱۰/۳ و پردازندهي انويديا داراي ۱۸/۶ ميليارد ترانزيستور است. البته TU102 در هر ميليمتر مربع حدود ۲۵ ميليون ترانزيستور دارد كه در مقايسه با ۴۱ ميليون ترانزيستور در هر ميليمتر مربع ناوي، عدد پاييني محسوب ميشود. دليل تفاوت اين است كه با وجود يكي بودن سازندهي تراشهها (TSMC)، نود پردازشي توليدي آنها با هم تفاوت دارد: انويديا تورينگ در خط توليد قديميتر ۱۲ نانومتري ساخته شد، اما AMD سفارش خود را در خط جديدتر و هفت نانومتري ساخته است.
با نگاه به تصاوير واقعي قالب پردازندهها اطلاعات زيادي از معماري آنها دريافت نميكنيم. درنتيجه براي مطالعه بهتر، دياگرام بلوكي را مطالعه ميكنيم كه توسط شركتهاي سازنده ارائه ميشود:
تصاوير بالا نمودهاي ۱۰۰٪ واقعي از الگوي پردازندهها نيستند، اما اگر آنها ۹۰ درجه بچرخانيم، بلوكهاي متعدد و خطوط مركزي آنها بهخوبي مشاهده ميشود. با نگاهي كلي متوجه ميشويم كه هر دو معماري، بلوكهايي مشابه پردازندهاي دارند كه در بخش قبلي بهعنوان نمونه طراحي كرديم. البته در معماريهاي بالا، از همهي بخشها بلوكهاي بيشتري داريم.
هر دو طراحي، رويكردي كاملا منظم را در سازماندهي بلوكها دارند. براي شروع، معماري ناوي را مطالعه ميكنيم كه از دو بلوك (AMD نام Shader Engines را براي آنها استفاده ميكند) تشكيل ميشود. هر يك از بلوكهاي مذكور به دو بلوك ديگر بهنام Asynchronous Compute Engines تقسيم ميشود. هر يك از بلوكهاي جديد هم شامل پنج بلوك ديگر هستند كه از نام Workgroup Processors براي آنها استفاده ميشود. درنهايت اين بلوكها هم داراي دو واحد بهنامهاي Compute Units يا CU (واحد محاسباتي) هستند.
تورينگ با فناوري ساخت ۱۲ نانومتري و ناوي با فناوري ۷ نانومتري ساخته ميشود
در طراحي تورينگ، نام بلوكها و تعداد آنها با ناوي تفاوت دارد. البته زيرساخت و سلسلسه مراتب آنها به هم شبيه است. ۶ بخش بهنام Graphics Processing Clusters وجود دارد كه هركدام داراي ۶ بخش بهنام Texture Processing Clusters هستند و مجددا در هركدام از آنها دو بلوك بهنام Streaming Multiprocessor داريم.
اگر هر پردازندهي گرافيكي را به يك كارخانهي بزرگ تشبيه كنيم كه هر بخش، محصول متفاوت و مجزايي را از مواد اوليهي يكسان توليد ميكند، ساختاربندي بالا منطقي بهانديشه متخصصين ميرسد. مديرعامل كارخانه، همهي جزئيات عملكردي را به بخشهاي اجرايي ارسال ميكند. سپس دستورها به وظايف و روندهاي كاري مجزا تقسيم ميشوند. با داشتن واحدهاي مستقل متعدد در كارخانه، بازدهي نيروي كاري هم افزايش مييابد. در پردازندههاي گرافيكي روندي مشابه رخ ميدهد و از نام Scheduling (بهترين تعريف: زمانبندي) براي آن استفاده ميشود.
زمانبندي و ارسال
اگر به ساختار و روند رندر كردن بازيهاي سهبعدي دقت كنيم، به اين نتيجه ميرسيم كه پردازندههاي گرافيكي چيزي بيش از يك ماشين حساب فوق سريع نيستند. اين قطعات سختافزاري، عمليات رياضي را با سرعتي بالا روي ميليونها قطعه داده انجام ميدهند. در پردازندههاي Navi و Turing از ساختارهاي Single Instruction Multiple Data يا SIMD استفاده ميشود. البته براي تعريف بهتر بايد از اصطلاح Single Instruction Multiple Thread يا SIMT استفاده شود.
يك بازي مدرن سهبعدي، صدها و بعضا هزاران رشتهي پردازشي (ترد) توليد ميكند، چون تعداد رئوس و پيكسلهايي كه بايد پردازش شوند، بسيار زياد است. براي انجام پردازش در كمترين زمان ممكن (ميكرو ثانيه) بايد حداكثر واحدهاي محاسبهگر منطقي (ALU) را مشغول به پردازش كنيم. درواقع نبايد هيچگونه خللي بهخاطر قرار نگرفتن دادهها در موقعيت مناسب يا نبود منابع پردازشي، ايجاد شود.
ناوي و تورينگ عملكرد مشابهي در پردازش دارند. در هر دوي آنها يك واحد مركزي تمام رشتهها را دريافت ميكند و زمانبندي و ارسال آنها را انجام ميدهد. در تراشهي AMD، وظيفهي مذكور توسط Graphics Command Processor انجام ميشود و در محصول انويديا، اين بخش GigaThread Engine نام دارد. رشتهها بهصورتي مديريت و تنظيم ميشوند كه هر دستورالعمل حداكثر شامل ۶۴ رشتهي پردازشي است.
AMD هر مجموعهي رشتهها را Wave (جبههي موج) مينامد و انويديا از نام Warp براي آنها استفاده ميكند. AMD بر هر جبههي موج ۳۲ رشته را بارگيري ميكند و هر واحد محاسباتي (با دو SIMD هر يك شامل ۳۲ محاسبهگر منطقي) توانايي پردازش آيتمهاي كاري دو Wave با مجموعاً ۶۴ رشته را دارد. تمامي ۶۴ رشته بدين ترتيب در يك سيكل كلاك پردازش ميشود. البته در صورت انجام فرايند روي يك Wave واحد با ۳۲ رشته زمان دو برابر ميشود. در معماري تورينگ، واحد محاسباتي بهصورت همزمان با چهار Warp كار ميكند. در هر دو معماري، Wave يا Warp مستقل هستند. بهبيانديگر پيش از شروع پردازش هريك از آنها، نيازي به اتمام پردازش گروه قبلي نيست.
با نگاهي به همين تعاريف اوليه، متوجه تفاوت نهچندان زيادي ميان Navi و Turing ميشويم. هر دوي آنها براي مديريت و پردازش تعداد بسيار زيادي رشته طراحي شدهاند تا عمليات رندر و فرايندهاي پردازش را انجام دهند. دراينميان براي درك بهتر تفاوت پردازندهها، بايد به آنچه رشتهها را پردازش ميكند، دقت كنيم.
تفاوت در اجرا: RDNA در برابر CUDA
AMD و Nvidia در واحدهاي سايهزني يكپارچهي خود رويكردهاي كاملا متفاوتي را در پيش ميگيرند. البته نامگذاريها و اصطلاحهاي آنها شباهت زيادي به هم دارد. واحدهاي اجرايي انويديا (بهنام هستههاي CUDA شناخته ميشوند) طبيعت اسكالر (Scalar) دارند. بهبيان ديگر هر واحد، يك عمليات رياضي را روي يك جزء داده انجام ميدهد. درمقابل واحدهاي AMD (موسوم به Stream Processors) روي بردارها (Vector) كار ميكنند. درواقع آنها يك عمليات رياضي را روي اجزاي دادهي متعدد پيادهسازي ميكنند. بهعلاوه واحد محاسباتي اين شركت براي عمليات اسكالر يك واحد اختصاصي دارند.
پيش از نگاه نزديكتر به واحدهاي اجرايي پردازندههاي گرافيكي، ابتدا نگاهي به تغييرات AMD روي واحدهاي پردازش گرافيكي خود در خلال ساليان گذشته خواهيم داشت. در هفت سال گذشته، كارتهاي گرافيكي رادئون از معماري بهنام Graphics Core Next يا GCN استفاده كردند. البته هر تراشهي جديد تحت بازبيني و تغييرات متعدد طراحي قرار گرفت، اما زيرساخت و اصول آنها يكسان ميماند. اين شركت با عرضهي معماري جديد، خلاصهاي از تاريخچهي معماري پردازندههاي گرافيكي خود هم منتشر كرد كه در تصوير زير ميبينيم:
GCN بهنوعي يك نسخهي تكامليافته از TeraScale بود كه امكان پردازش Waveهاي بيشتر را در زمان يكسان ايجاد ميكرد. اشكال اصلي TeraScale، دشواري برنامهنويسي براي آن بود كه براي حصول بهترين نتيجه، نياز به روندهاي بسيار خاص داشت. GCN چالش مذكور را حل كرده و پلتفرمي در دسترستر ارائه كرد.
واحدهاي محاسباتي (CU) كه امروز در معماري ناوي مشاهده ميكنيم، نسخههايي بسيار بهينهسازي شده از GCN هستند و بخشي از از فرايند بهينهسازي AMD در كارتهاي گرافيك محسوب ميشوند. هر واحد محاسباتي شامل دو مجموعه از آيتمهاي زير ميشود:
هر واحد محاسباتي علاوه بر موارد بالا داراي چهار واحد بافتدهي (Texture Unit) هم هست. بهعلاوه واحدهاي ديگري هم در داخل زيرساخت وجود دارند تا خواندن و نوشتن داده را از حافظهي كش مديريت كنند. البته آنها را در تصوير زير مشاهده نميكنيد.
مقايسهي اوليهي واحد محاسباتي RDNA و GCN تفاوت چنداني را نشان نميدهد، اما مديريت و تنظيمگري فرايندها تفاوتهاي اصلي را شكل ميدهد. در اولين تفاوت، هر يك از ۳۲ بخش SP (يا SIMD32) در معماري جديد، واحد زمانبند دستورالعمل (Scheduler) اختصاصي خود را دارد. درمقابل، معماري GCN براي چهار دستهي ۱۶ تايي از SPها (يا SIMD16)، تنها يك زمانبند ارائه ميكند.
تغيير يادشده اهميت زيادي دارد؛ چون در معماري جديد ميتوان هر جبههي موج متشكل از ۳۲ رشته را در هر چرخهي پردازش به يك دسته SP يا SIMD32 ارسال كرد. بهعلاوه معماري RDNA اين امكان را ايجاد ميكند تا واحدهاي برداري دستورالعملهاي متشكل از ۱۶ رشته را با سرعتي دوبرابر مديريت كنند و همچنين گروههاي ۶۴ رشتهاي نيز با نرخ نصف مديريت ميشوند. درنتيجه تمام كدهاي اختصاصي نوشته شده براي معماريهاي نسل قبل، در معماري جديد هم همراهي ميشوند.
در طراحي جديد براي مديريت انواع عمليات اسكالر، دو برابر واحد محاسباتي وجود دارد. درواقع در اين طراحي تنها تعداد SFU يا Special Function Unit كاهش مييابد كه وظيفهي انجام عمليات رياضي بسيار خاص را بر عهده دارد. منظور از عمليات رياضي بسيار خاص در اينجا فرايندهايي همچون مثلثات، وارون ضربي و ريشه دوم هستند. در معماري RDNA در مقايسه با GCN، تعداد كمتري از چنين عملياتهاي رياضي انجام ميشود، اما بههرحال ميتوان اين عملياتها را روي مجموعهدادههايي با ابعاد دوبرابر معماري قبلي انجام داد.
AMD در هفت سال گذشته توسعههاي قابلتوجهي روي معماري پردازندههاي گرافيكي لحاظ كرده است
تغييرات معماري AMD كه در بالا به آن اشاره كرديم، براي توسعهدهندههاي بازي اهميت زيادي دارند. كارتهاي گرافيك قديمي رادئون ظرفيت كارايي بالايي داشتند، اما بهرهبرداري از آنها بسيار دشوار بود. امروز AMD قدم بزرگي را در مسير كاهش تأخير در اجراي دستورالعملهاي پردازشي برداشته است. بهعلاوه قابليت سازگاري نيز براي راحتي كار با نسخههاي قبلي برنامههاي مبتني بر GCN در معماري جديد پيشبيني شده است.
اكنون اين سؤال ايجاد ميشود كه تغييرات جديد AMD چه تأثيري بر بازار پردازش حرفهاي و متخصصي حرفهاي گرافيك كامپيوتري دارند؟ آيا تغييرات به نفع آنها خواهند بود؟ قطعا پاسخ كوتاه به سؤال مذكور، مثبت خواهد بود. بهعنوان مثالي براي مقايسه، نسخهي كنوني از تراشههاي ناوي (كه در محصولاتي همچون Radeon RX 5700 XT ديده ميشوند) تعداد پردازندههاي جرياني (SP) كمتري نسبت به طراحي قبلي يعني Vega دارند، اما از لحاظ كارايي بهراحتي محصولاتي همچون Radeon RX Vega را پشت سر ميگذارند.
بخشي از برتري كارت گرافيك RX 5700 نسبت به RX Vega 56 بهخاطر سرعت كلاك بالاتر آن به دست ميآيد (سرعت بالاتر يعني پيكسلهاي بيشتري در واحد ثانيه در حافظهي محلي نوشته ميشوند). البته كارتهاي جديد از انديشه متخصصين سقف عملكرد عدد صحيح (Integer) و مميز شناور كاهش ۱۵ درصدي دارند. درنهايت مجموع كارايي كارت ناوي نسبت به وگا، بهبود ۱۸ درصدي را نشان ميدهد.
برنامههاي رندر حرفهاي و دانشمندان علوم كامپيوتر كه الگوريتمهاي پيچيده را اجرا ميكنند، قطعا متخصصي متفاوتي نسبت به گيمرها از پردازندهي گرافيكي استخراج خواهند كرد. البته وقتي عمليات اسكالر، برداري و ماتريسي در موتورهاي بازي با سرعت بالاتري پردازش شود، قطعا در متخصصدهاي پردازشي حرفهاي هم نقش خود را نشان ميدهد. درحالحاضر نميدانيم كه كداميك از برنامهها و تغييرات AMD در كارتهاي گرافيك با هدف بازار حرفهاي هستند. بههرحال آنها ميتوانند با پايبندي به معماري وگا و تنها بهبود طراحي، علاوه بر صرفهجويي در هزينههاي توليد، نيازهاي آن بخش از بازار را هم رفع كنند؛ اما با توجه به پيشرفتهاي عالي Navi نسبت به نسل قبل، تغيير مسير تمامي بخش توليد به سمت معماري جديد، منطقيتر خواهد بود.
طراحي پردازندههاي گرافيكي انويديا نيز از سال ۲۰۰۶ تاكنون روند تكاملي مشابهي را طي كرده است. اين شركت در آن سال سري GeForce 8 را به بازار معرفي كرد. تغييرات آنها نسبت به رقيب، آنچنان اساسي و زيرساختي نبوده است. سري كارتهاي گرافيك مذكور از انويديا براي اولينبار از معماري Tesla استفاده ميكردند كه اولين رويكرد سايهزني يكپارچه را در معماري اجرايي پيادهسازي ميكرد. در تصوير زير، تغييرات ساختار بلوكهاي SM را از معماري پيش از تسلا يعني Fermi تا معماري كنوني تورينگ (از چپ به راست Fermi, Kepler, Maxwell, Volta) مشاهده ميكنيم.
همانطور كه قبلا اشاره كرديم، هستههاي CUDA رويكرد اسكالر دارند. آنها در هر چرخهي پردازش يك دستورالعمل صحيح و يك دستورالعمل شناور را روي يك جزء داده انجام ميدهند. فراموش نكنيد كه هر دستورالعمل ميتواند تا چند سيكل كلاك را اشغال كند. بههرحال واحدهاي زمانبندي دستورالعملها را بهصورتي گروهبندي ميكنند كه توانايي انجام عمليات برداري را داشته باشند. رويكردي كه درنهايت به نفع برنامهنويس خواهد بود. با نگاهي به پيشرفت پردازندههاي انويديا به اين نتيجه ميرسيم كه علاوه بر افزايش واحدهاي موجود در پردازنده، روش ساختاردهي و برنامهريزي آنها نيز بهبود يافته است.
در معماري Kepler، تراشه شامل پنج واحد GPC بود كه هركدام سه بلوك SM (يا Streaming Multiprocessor) داشتند. پس از رونمايي از معماري Pascal، شاهد تقسيم واحدهاي GPC به TPC بوديم كه در هريك از آنها دو واحد SM وجود داشت. اين تقسيمبندي مانند معماري ناوي اهميت زيادي دارد. تقسيمبندي مذكور اين امكان را ايجاد ميكند كه كل پردازندهي گرافيكي در حداكثر كارايي وظايف خود را انجام دهد. درنتيجهي تقسيمبنديهاي مذكور، گروههاي متعددي از دستورالعملهاي مستقل بهصورت موازي پردازش ميشوند و درنهايت كارايي سايهزني و پردازش پردازنده افزايش مييابد.
در تصوير زير معادل تورينگ يك واحد محاسباتي RDNA ترسيم شده است:
هر واحد SM در معماري تورينگ داراي چهار بلوك پردازشي است كه هركدام از بخشهاي زير تشكيل شدهاند:
علاوه بر موارد بالا در هر SM دو واحد FP64 هم وجود دارد، اما انويديا در دياگرامهاي بلوكي خود آنها را نمايش نميدهد. هر واحد SM هم متشكل از چهار واحد بافت ميشود كه سيستمهاي فيلترينگ و شناسايي بافتها را شامل ميشوند. بهعلاوه يك هستهي Ray Tracing (يا RT) نيز در هر واحد SM وجود دارد.
واحدهاي ALU از نوع FP32 و INT32 توانايي فعاليت بهصورت همزمان و موازي دارند. اين قابليت اهميت زيادي دارد چون اگرچه موتورهاي رندر سهبعدي اكثرا به محاسبات مميز شناور نياز دارند، باز هم عمليات اعداد صحيح هم بايد توسط هستههاي پردازشي انجام شوند.
هستههاي تنسور (Tensor Cores) واحدهاي ALU هستههايي اختصاصي هستند كه انجام عمليات ماتريسي را بر عهده ميگيرند. ماتريسها به بيان ساده رديفهاي دادهاي مربعي هستند و تنسورها در ماتريسهاي ۴*۴ فعاليت ميكنند. هستهها بهگونهاي طراحي شدهاند تا دادههاي FP16، INT8 و INT4 را مديريت كنند. بهعلاوه مديريت دادهها بايد بهنوعي انجام شود تا حداكثر ۶۴ عمليات شناور FMA را در هر چرخهي پردازش انجام دهد. در اينجا FMA به اختصار براي عمليات Fused multiply-then-add به كار ميرود.
واحدهاي اجرايي در سطوح پايينتر معماري، شباهت زيادي به يكديگر دارند
محاسباتي كه در بالا شرح داديم، اكثرا در متخصصدهايي همچون شبكههاي عصبي و فرايندهاي استنباطي استفاده ميشوند. چنين عملياتي كمتر در متخصصدهايي همچون بازيهاي سهبعدي ديده ميشوند. در مواردي همچون الگوريتمهاي تحليل دادهي فيسبوك يا سيستمهاي موجود در خودروهاي خودران، نياز شديدي به چنين پردازشيهايي وجود دارد. معماري ناوي هم توانايي انجام محاسبات ماتريسي را دارد، اما براي انجام آن به تعداد زيادي واحد SP نياز خواهد داشت. در سيستمهاي مبتني بر تورينگ، عمليات ماتريسي بهراحتي انجام ميشود و بهصورت همزمان، هستههاي CUDA فعاليتهاي رياضي ديگر را مديريت خواهند كرد.
هستهي RT يكي ديگر از واحدهاي مهمي است كه در معماري تورينگ وجود دارد و الگوريتمهاي رياضي خاص را مديريت ميكند. اين الگوريتمها بهصورت اختصاصي براي سيستم رهگيري پرتو (Ray Tracing) شركت انويديا استفاده ميشوند. تحليل كامل فرايندهاي مذكور از حوصلهي اين مقاله خارج است، اما بهصورت ساده ميتوان هستهي RT را متشكل از دو سيستم دانست كه بهصورت مجزا با ساير اجزاي SM به فعاليت ميپردازند.
مقايسهي تورينگ و ناوي در سطوح پايهاي نشان ميدهد كه هردو داراي واحدهاي اجرايي با قابليتهاي مشابه هستند. البته هريك از آنها رويكرد متفاوتي را براي انجام فرايند با قابليتهاي مذكور در پيش ميگيرند. براي انتخاب طراحي بهتر، بايد نحوهي استفاده از آنها را مطالعه كنيم: برنامهاي كه رشتههاي متعددي را با محاسبات برداري FP32 ايجاد ميكند و وظايف متفرقهي زيادي ندارد، با معماري ناوي عملكرد بهتري خواهد داشت. درمقابل برنامهاي كه تركيبي از محاسبات صحيح، شناور، اسكالر و برداري دارد، از انعطافپذيري تورينگ بهره خواهد برد.
زيرساخت حافظه
پردازندههاي گرافيكي مدرن، پردازندههاي جرياني هستند. بهبيانديگر آنها بهگونهاي طراحي شدهاند تا به اجراي مجموعهاي از عملياتها روي هر جزء از يك جريان داده اقدام كنند. درنتيجه اين پردازندهها انعطافپذيري كمتري نسبت به پردازندههاي مركزي دارند و سلسلهمراتب حافظه هم بايد بهصورت بهينهتري در آنها پيادهسازي شود. درواقع حافظه بايد بهگونهاي طراحي شود تا داده و دستورالعمل را در سريعترين حالت و صرفانديشه متخصصين از تعداد جريانها از ALU دريافت كند. در اثر پيشفرضهاي بالا، GPU حافظهي كش كمتري نسبت به CPU دارد؛ چرا كه دسترسي اجزاي مختلف تراشه به حافظهي كش مهمتر از ميزان اين حافظه است.
انويديا و AMD هردو از سطوح متعدد كش در داخل تراشه استفاده ميكنند. ابتدا نگاهي به زيرساخت معماري ناوي خواهيم داشت:
در پايينترين سطح سلسلهمراتب حافظهي Navi دو بلوك از پردازندههاي جرياني (SP) وجود دارند كه ۲۵۶ كيلوبايت ثبات چندمنظورهي (General Purpose Register) برداري (موسوم به Register File) را بهكار ميگيرند. اين مقدار در معماري Vega هم ديده ميشد، اما در آنجا شاهد چهار بلوك SP بوديم. تكميل ظرفيت ثباتهاي پردازنده خصوصا زمانيكه تعداد زيادي رشته در حال پردازش باشند، اثر منفي شديدي روي كارايي خواهد داشت. درنتيجه در پايينترين سطح طراحي حافظهي ناوي شاهد بهبود قابلتوجهي نسبت به نسل قبل هستيم. بهعلاوه AMD حجم Register File اسكالر را نيز افزايش داده است. قبلا براي هر واحد اسكالر، حجم فايل، ۴ كيلوبايت بود كه امروز به ۳۲ كيلوبايت براي هر واحد اسكالر ميرسد.
در سطح بعدي دو واحد محاسباتي داريم كه ۳۲ كيلوبايت كش L0 دستورالعملي و ۱۶ كيلوبايت كش دادهي اسكالر را به اشتراك ميگذارند. البته هر CU كش L0 برداري اختصاصي با حجم ۳۲ كيلوبايت خواهد داشت. براي ارتباط همهي اين حافطهها با بخشهاي ALU از واحد ۱۲۸ كيلوبايتي Local Data Share استفاده ميشود.
در معماري Navi، دو موتور محاسباتي يك پردازندهي گروهي را تشكيل ميدهند و پنج عدد از آنها يك ACE ميسازند. هر ACE به حافظهي اختصاصي كش L1 با حجم ۱۲۸ كيلوبايت دسترسي دارد. بهعلاوه كل پردازندهي گرافيكي با ۴ مگابايت حافظهي L2 همراهي ميشود. اين حافظهي كش، به حافظههاي L1 و ديگر بخشهاي پردازنده متصل ميشود.
توضيحات بالا بهصورت كلي نوعي از معماري اتصالات داخلي اختصاصي AMD را بهنام Infinity Fabric نشان ميدهند. سيستم مذكور براي مديريت ۱۶ كنترلر GDDR6 طراحي شده است. بهعلاوه Navi براي به حداكثر رساندن پهناي باند حافظه، از فشردهسازي حرفهاي بين حافظههاي L1, L2 و GDDR6 استفاده ميكند.
همهي تغييرات بالا قدمي مثبت در جهت بهينهسازي عملكردي تراشههاي AMD بودهاند. تراشههاي قبلي هيچگاه حافظهي كش كافي در سطح پايين نداشتند. بهبيان ساده، اكنون با افزايش حافظهي كش به پهناي باند داخلي بيشتر ميرسيم. بهعلاوه دستورالعملهاي كمتري هم به توقف ميرسند و مجموع اتفاقها، پردازندهاي با كارايي بهتر را نتيجه ميدهد.
انويديا در ارائهي اطلاعات دقيق پيرامون سلسله مراتب حافظهي تورينگ، روند مناسبي ندارد. بههرحال در بخشهاي قبلي مقاله ديديم كه هر واحد SM در معماري تورينگ به چهار بلوك پردازشي تقسيم ميشود و هريك از آنها فايل رجيستر ۶۴ كيلوبايتي دارند. درنتيجه فايل رجيستر كوچكتري نسبت به ناوي در اختيار داريم. البته فراموش نكنيد كه ALU در معماري تورينگ طبعيت برداري ندارد و اسكالر است.
در سطح بعدي براي هر SM يك حافظهي اشتراكي ۹۶ كيلوبايتي داريم كه ميتواند بهصورت ۶۴ كيلوبايت كش دادهي L1 و ۳۲ كيلوبايت كش بافت استفاده شود. بهعلاوه ميتوان از آن بهعنوان فضاي ثبات مجزا استفاده كرد. در حالت Compute Mode ميتوان حافظهي اشتراكي را بهصورت ديگري تقسيمبندي كرد. بهعنوان مثال ميتوان ۳۲ كيلوبايت حافظهي اشتراكي و ۶۴ كيلوبايت حافظهي كش L1 تعريف كرد. بههرحال در تمامي موارد تنها بايد تركيب ۳۲+۶۴ را بهكار برد.
بهخاطر كمبود اطلاعات پيرامون ساختار حافظهي معماري تورينگ، متخصص كارشناسان فناوري به منابع ديگر و شركتهاي تحقيقاتي در حوزهي پردازندهي گرافيكي مراجعه كردهاند تا اطلاعات كاملتري از تحليل پردازندهها استخراج شود. محققان مورد انديشه متخصصين در شركت Citadel Enterprise Americas فعاليت ميكنند. آنها تاكنون دو مقاله پيرامون تحليل معماريهاي Volta و Turing منتشر كردهاند. تصوير بالا طرحي از مطالعه عميق تراشهي TU104 توسط اين تيم است.
تيم تحقيقاتي تأييد كردند كه توان عملياتي حافظهي L1 به ۶۴ بيت در هر چرخه ميرسد. آنها تأكيد كردند كه بازدهي حافظهي كش L1 در معماري تورينگ از همهي معماريهاي انويديا بيشتر است. درنهايت اين بازدهي با بازدهي حافظهي ناوي برابر ميكند. درواقع اگرچه معماري AMD سرعت خواندن بيشتري در Local Data Store دارد، اما نرخ كش ثابت آن پايينتر است.
هر دو پردازندهي گرافيكي از حافظهي محلي GDDR6 استفاده ميكنند كه جديدترين نسخهي DDR SDRAM مخصوص پردازش گرافيكي است. بهعلاوه هردوي آنها با پهناي باس (تعداد كانكشنهاي تبادل داده ميان هر تراشهي حافظه و پردازندهي گرافيكي) ۳۲ بيتي با ماژولهاي حافظه در ارتباط هستند. يك كارت گرافيك Radeon RTX 5700 XT هشت تراشهي حافظه دارد و به پهناي باند حداكثري ۲۵۶ گيگابايت بر ثانيه با هشت گيگابايت فضا ميرسد. درمقابل كارت گرافيك GeForce RTX 2080 Ti با تراشهي TU102 داراي ۱۱ ماژول از انواع مذكور است كه به پهناي باند ۳۵۲ گيگابايت بر ثانيه و ۱۱ گيگابايت حافظه ميرسد.
در ساختار حافظه هم تفاوت چنداني بين معماريها وجود ندارد
اگرچه AMD در مباحثه حافظه اطلاعات بيشتري ارائه ميكند، برخي از اسناد آنها مبهم هستند. در اولين دياگرام بلوكي كه از ناوي مشاهده كرديم، چهار كنترلر حافظهي ۶۴ بيتي وجود داشتند، درحالي كه تصوير بعدي ۱۶ عدد كنترلر را نمايش ميدهد. از آنجايي كه توليدكنندههاي حافظه همچون سامسونگ تنها ماژولهاي حافظهي ۳۲ بيتي GDDR6 ارائه ميكنند، احتمالا تصوير دوم تنها نشاندهندهي تعداد اتصال بين سيستم Infinity Fabric و كنترلرهاي حافظه است. درنتيجه احتمالا ۴ كنترلر حافظه داريم كه هركدام به دو ماژول متصل ميشوند.
درنهايت بهانديشه متخصصين نميرسد كه در مباحثه حافظهي داخلي و كش، تفاوت زيادي بين ناوي و تورينگ وجود داشته باشد. Navi در مباحثه فرايندهاي اجرايي مزيتهايي دارد و حافظهي L1 ثابت آن بزرگتر است، البته هردوي آنها امكانات كاملي دارند. هر دو نمونه در موقعيتهاي ممكن از فشردهسازي رنگ استفاده ميكنند و هردو فضاي اختصاصي GPU دارند تا دسترسي حافظه و پهناي باند را به حداكثر برسانند.
مثلثها، بافتها و پيكسلها
توليدكنندههاي پردازندهي گرافيكي ۱۵ سال پيش قرارداد مهمي را براي تعيين تعداد مثلثهاي پردازشي در تراشهها ثبت كردند. در همان قرارداد به تعداد المانهاي بافتي قابل فيلتر كردن در هر چرخه و ظرفيت واحدهاي خروجي رندر (ROP) هم اشاره شد. اين المانها امروزه هم در دنياي پردازش گرافيكي اهميت دارند، اما از آنجايي كه فناوريهاي رندر سهبعدي بيش از گذشته نياز به كارايي پردازشي دارند، تمركز عملكردي بيشتر روي بخشهاي اجرايي معطوف ميشود.
بههرحال واحدهاي بافتي و ROP هنوز جاي مطالعه دارند. به هر حال اين مطالعه نيز بار ديگر نشان خواهد داد كه تفاوت آنچناني در حوزهي مذكور بين كارتهاي گرافيك انويديا و AMD وجود ندارد. واحدهاي بافتي در هر دو معماري توانايي شناسايي و جذب چهار المان بافتي را دارند. بهعلاوه آنها المانها را بهصورت دوتايي فيلتر و به يك المان تبديل كرده و طي يك چرخه روي حافظهي كش مينويسند.
تنظيم و ساختاردهي ROB/RB در محصولات انويديا و AMD با هم تفاوت دارد، اما باز هم تفاوتها بسيار جزئي هستند. تراشهي AMD در هر بخش ACE، چهار RB دارد كه هركدام در يك چرخهي پردازشي چهار پيكسل تركيبي را به خروجي ميفرستند. در معماري تورينگ، هر GPC متشكل از دو بخش RB خواهد بود كه هركدام هشت پيكسل را در يك چرخه ارائه ميكنند. درنهايت ميتوان تعداد ROP را در هر GPU معياري براي نرخ خروجي پيكسل دانست. درنتيجه يك تراشهي كامل ناوي خروجي ۶۴ پيكسل در هر كلاك را دارد و اين آمار براي TU102 به ۹۶ ميرسد. البته فراموش نكنيد كه ابعاد تراشهي دوم، بسيار بزرگتر است.
در مباحثه پردازشهاي مرتبط با المانهاي مثلثي، اطلاعات زيادي از توليدكنندهها در دست نيست. در حال حاضر ميدانيم كه ناوي هنوز حداكثر خروجي چهار دادهي Primitive را در هر چرخهي پردازش دارد (بهبيان ديگر يك عدد براي هر ACE). ازطرفي مشخص نيست كه آيا AMD با طرح Primitive Shaders چالش مذكور را حل كرده است يا خير. طرح مذكور يكي از قابليتهايي بود كه شركت براي معماري Vega تمركز زيادي روي آن داشت و به برنامهنويسها امكان ميداد تا كنترل بيشتري روي دادههاي پريميتيو داشته باشند. درواقع آن قابليت امكان افزايش توان پريميتيو را با مقياس چهار فراهم ميكرد. بههرحال قابليت مذكور به يكباره از درايورها حذف شد خبر زيادي نيز پيرامون آن وجود ندارد.
هنوز متخصصان و متخصص كارشناسان به اطلاعات بيشتري پيرامون Navi نياز دارند. درنتيجه نميتوان قابليتها و امكانات آن را با حدس و گمان بيان كرد. تورينگ هم در هر كلاك و براي هر GPC، توان پردازش يك پريميتيو را دارد. البته انويديا نيز قابليتي بهنام Mesh Shaders دارد كه شبيه به Primitive Shaders شركت AMD عمل ميكند. قابليت مذكور ارتباطي با Direct3D يا OpenGL يا Vulkan ندارد، اما ميتوان با استفاده از افزونههاي مبتني بر API از آن استفاده كرد.
با مطالعه كلي بالا شايد بتوان برتري را در اين بخش تا حدودي به تورينگ داد. درواقع ميتوان ادعا كرد كه پردازندهي گرافيكي انويديا در مديريت مثلثها و دادههاي پريميتيو عملكرد بهتري نسبت به رقيب دارد، اما بههرحال هنوز اطلاعات عمومي زيادي براي نتيجهگيري نهايي و قطعي وجود ندارد.
مسائل خارج از واحد محاسباتي
علاوه بر موارد بالا، بخشهاي متعدد ديگري هم در معماريهاي Navi و Turing ارزش مطالعه دارند. بهعنوان مثال هر دو پردازندهي گرافيكي موتورهاي تصويري و رسانهاي قوي دارند. منظور از موتور تصويري، واحد مديريت خروجي به سمت نمايشگر و موتور رسانهاي، واحد انكودينگ و ديكودينگ پخش ويدئويي است.
همانطور كه از يك پردازندهي حرفهاي سال ۲۰۱۹ انتظار داريم، موتور تصويري ناوي رزولوشنهاي بالايي را ارائه ميكند و نرخ بازسازي آن نيز بسيار بالا است. بهعلاوه همراهي از HDR هم در كارتهاي مبتني بر معماري مذكور ارائه ميشود. از قابليتهاي ديگر ناوي ميتوان به Display Stream Compression يا DSC اشاره كرد كه الگوريتمي با سرعت بالا و نرخ پايين حذف جزئيات است. الگوريتم مذكور امكان ايجاد رزولوشنهاي بالاتر از 4K را با نرخ تازهسازي ۶۰ هرتز فراهم ميكند كه توسط يك خروجي DisplayPort 1.4 قابل ارائه خواهد بود. خوشبختانه كاهش كيفيت تصوير با چنين كاهش حجمي پايين خواهد بود و حتي برخي منابع آن را نزديك به صفر بيان ميكنند.
معماري تورينگ هم از DisplayPort با اتصالهاي DSC همراهي ميكند. البته خروجي اين معماري كيفيت بالاتري نسبت به ناوي دارد. معماري انويديا، خروجي 4K HDR را با نرخ تازهسازي ۱۴۴ هرتز ارائه ميكند.
موتور رسانهاي ناوي بهاندازهي موتور نمايشگر آن مدرن است و پشيباني از Advanced Video Coding يا H.264 و High Efficiency Video Coding يا H.265 را به متخصص ارائه ميكند. قابليتهاي مذكور باز هم با رزولوشن و نرخ بازسازي بالا ارائه ميشوند.
موتور ويدئويي در تورينگ هم مانند بخشهاي ديگر شباهت زيادي به ناوي دارد، اما احتمالا همراهي از انكودينگ 8K30 HDR در معماري انويديا، براي برخي از متخصصان يك مزيت نسبت به محصول AMD محسوب ميشود.
از جنبههاي ديگري كه بين دو معماري گرافيكي قابل مقايسه هستند، ميتوان به PCI Express 4.0 در ناوي يا NV Link در تورينگ اشاره كرد. البته آنها بخشهايي بسيار جزئي از كل معماري هستند. با وجود اين شركتهاي سازنده مانور تبليغاتي زيادي روي چنين قابليتهايي دارند و شايد برخي متخصصان را به خود جذب كنند. شايان ذكر است قابليتهاي جزئي مذكور با احتمال بالا براي بسياري از متخصصان تأثير خاصي نخواهند داشت.
مقايسهي عملكردي
مقالهي حاضر مطالعه و مقايسهاي ميان طراحيهاي معماري، قابليتها و متخصصدهاي دو رقيب در دنياي پردازش است. ازطرفي مقايسهي كارايي آنها ميتواند بهعنوان روشي مناسب براي جمعبندي مقايسه به كار گرفته شود. بههرحال مقايسهي تراشهي Navi در كارت گرافيك Radeon RX 5700 XT با پردازندهي Turing TU102 در GeForce RTX 2080 Ti عادلانه نيست چون كارت گرافيك دوم دو برابر محصول اول واحدهاي يكپارچهي سايهزني دارد. بههرحال نسخهاي از تراشهي TU104 تورينگ در GeForce RTX 2070 Super وجود دارد كه ميتوان براي مقايسهي بهينه آن را در انديشه متخصصين گرفت. جدول زير، مقايسهاي از دو تراشهي Navi و Turing در كارتهاي گرافيك موجود در بازار است.
Radeon RX 5700 XT | GeForce RTX 2070 Super | |
---|---|---|
پردازندهي گرافيكي | معماري | Navi 10 | RDNA | TU104 | Turing |
فرايند توليد | 7nm TSMC | 12nm TSMC |
مساحت قالب (ميليمتر) | ۲۵۱ | ۵۴۵ |
تعداد ترانزيستورها (ميليارد) | ۱۰/۳ | ۱۳/۶ |
ساختار بلوك | 2SE | 4ACE | 40CU | 5GPC | 20TPC | 40SM |
هستههاي سايهزني متحد | 2560SP | 2560CUDA |
واحدهاي TMU | ۱۶۰ | ۱۶۰ |
واحدهاي ROP | ۶۴ | ۶۴ |
كلاك پايهي پردازنده | ۱۶۰۵ مگاهرتز | ۱۶۰۵ مگاهرتز |
Clock | ۱۷۵۵ مگاهرتز | نامشخص |
Boost Clock | ۱۹۰۵ مگاهرتز | ۱۷۷۰ مگاهرتز |
حافظه | 8GB 256-bit GDDR6 | 8GB 256-bit GDDR6 |
پهناي باند حافظه | ۴۴۸ گيگابايت بر ثانيه | ۴۴۸ گيگابايت بر ثانيه |
توان طراحي گرمايي (TDP) | ۲۲۵ وات | ۲۱۵ وات |
در مطالعه بالا بايد بگوييم كه RTX 2070 Super دربرگيرندهي يك پردازندهي TU104 كامل نيست و يكي از واحدهاي GPC در آن غيرفعال است. درنتيجه همهي ۱۳/۶ ميليارد ترانزيستور در فرايندهاي پردازشي فعال نيستند. درنهايت ميتوان ادعا كرد كه تراشههاي بالا از لحاظ تعداد ترانزيستور با هم برابر هستند. با نگاهي اوليه به مقايسهي بالا، شباهت زيادي بين آنها ديده ميشود. خصوصا در بخشهايي همچون تعداد واحدهاي سايهزني، TMU، ROP و سيستم اصلي حافظه تفاوت زيادي بين تراشهها ديده نميشود.
در پردازندهي انويديا هر واحد SM توانايي مديريت و پردازش ۳۲ عدد Warp را بهصورت همزمان دارد. هر Warp نيز از ۳۲ رشته تشكيل ميشود. در مجموع يك كارت گرافيك GeForce RTX 2070 Super در حداكثر بار پردازشي توانايي پردازش ۴۰،۹۶۰ رشته را در سطح كل منابع در دسترس تراشه دارد. همين مطالعه براي Navi نشان ميدهد كه هر واحد CU توانايي پردازش ۱۶ عدد Wave را در هر واحد SIMD32 ALU دارد كه مجموع رشتهها را باز هم به ۴۰،۹۶۰ عدد ميرساند. اعداد مذكور، تراشهها را بسيار مشابه هم نشان ميدهند، اما بايد در انديشه متخصصين داشت كه واحدهاي CU و SM اين دو معماري متفاوت از هم طراحي و نظمدهي شدهاند. درنهايت ميدانيم كه پردازندهي انويديا در پردازش INT و FP برتري دارد، اما بههرحال همه چيز به كدهاي برنامهي اجرايي روي پردازندهها بستگي دارد.
با مقايسهي بالا به اين نتيجه ميرسيم كه بازيها در كارتهاي گرافيك متنوع بازدهي و عملكرد متفاوتي را نشان ميدهند؛ چرا كه يكي از آنها شايد براي يك معماري مناسبتر از ديگري باشد. تفاوت نيز براساس دستورالعملهايي روشن ميشود كه براي پردازندهي گرافيكي ارسال ميشوند. چنين تفاوتي را ميتوان بهراحتي در مطالعههاي عملي كارتهاي گرافيك مشاهده كرد.
همهي بازيهايي كه در مطالعهها آزمايش شدند، براي معماري AMD GCN برنامهنويسي شده بودند. درواقع بازيها بهگونهاي طراحي شدهاند كه براي كامپيوترهاي شخصي مبتني بر كارتهاي گرافيك رادئون كامپيوترهاي شخصي يا پردازندههاي گرافيكي مبتني بر GCN در كنسولهاي بازي همچون پلياستيشن يا ايكسباكس اجرا شوند. البته اين امكان وجود دارد كه برخي از نمونههاي جديد براي اجراي بهتر با تغييرات RDNA هماهنگ شده باشند، اما درنهايت تفاوت موجود در بنچماركها به احتمال زياد به خاطر تفاوت در موتورهاي رندر و شيوهي مديريت دادهها و دستورالعملها است.
در پايان تمامي مطالعهها هنوز اين سؤال مطرح ميشود كه آيا يك معماري بهتر از ديگري است؟ معماري تورينگ قطعا بهخاطر هستههاي Tensor و RT، قابليتهاي بيشتري را به متخصصان ارائه ميكند. البته درنهايت نميتوان دادههاي مقايسهاي از ۱۲ نمونهي بازي را بهعنوان معياري نهايي و اصلي براي مقايسه در انديشه متخصصين گرفت.
سخن نهايي
برنامههاي AMD براي معماري Navi در سال ۲۰۱۶ معرفي شدند. البته توضيحات زيادي از برنامههاي توسعهاي در آن زمان مطرح نشد و شركت سازنده تنها سال ۲۰۱۸ را بهعنوان زمان رونمايي اعلام كرد. بههرحال در سال گذشته همه خبري از رونمايي نهايي معماري گرافيكي AMD نبود و برنامهها به امسال موكول شدند. در جزئيات جديد، خبر از بهكارگيري فرايند توليد هفت نانومتري و بهبود كلي پردازنده بهمنظور بهبود كارايي بود.
آنچه در مقالهي حاضر خوانديم، تأييدي بر تغييرات رو به جلوي AMD در دنياي پردازندههاي گرافيكي بود؛ تغييراتي كه قطعا با هدف پيشرفت در رقابت با محصولات انويديا در كارتهاي گرافيك لحاظ شدند. بهعلاوه، مزيت طراحيهاي جديد تنها به كامپيوترهاي شخصي محدود نميشود. از آنجايي كه سوني و مايكروسافت از طراحيهاي مشابه در كنسولهاي آتي يعني پلياستيشن ۵ و ايكسباكس استفاده خواهند كرد، قطعا شاهد پيشرفت قابلتوجهي در عملكرد گرافيكي محصولات آنها خواهيم بود.
اگر به ابتداي مقاله بازگرديد و نگاهي بر طراحي زيرساختي Shader Engines شركت AMD و همچنين ابعاد كلي قالب و تعداد تراتزيستورها داشته باشيد، متوجه برنامهي جدي شركت براي استفاده از تراشهي بزرگ Navi در كارتهاي گرافيك حرفهاي ميشويد. AMD قبلا اعلام كرده بود كه اين برنامه در طرحهاي توسعهاي جاري شركت قرار دارد و در يك تا دو سال آينده هم بهبود معماري و روندهاي توليد تراشه در دستور كار قرار خواهد گرفت.
انويديا براي آينده چه برنامههايي دارد؟ آنها براي نسلهاي بعدي و توسعهي تورينگ چه طرحهايي دارند؟ تاكنون اخبار و اطلاعات زيادي از سوي شركت منتشر نشده و اكثر اطلاعات مربوط به بهروزرساني نقشهي راه شركت در سال ۲۰۱۴ است. در آن زمان معماري Pascal براي رونمايي در سال ۲۰۱۶ معرفي شد كه شركت در اجراي آن موفق بود. در سال ۲۰۱۷، Tesla V100 معرفي شد كه از معماري Volta بهره ميبرد. همان معماري بعدا به تولد Turing در سال ۲۰۱۸ انجاميد.
از سال گذشته و رونمايي تورينگ، انويديا بهنوعي در سكوت خبري عمل كرده است و اكثر اطلاعات مبتني بر شايعهها هستند. اكثر آنها هم تنها به نام معماري بعدي شركت يعني Ampere اشاره ميكنند كه توسط سامسونگ و مبتني بر فرايند نود پردازشي هفت نانومتري و احتمالا تا سال ۲۰۲۰ توليد خواهد شد. علاوه بر اطلاعات مذكور، جزئيات زيادي از برنامههاي انويديا در دسترس نيست. بههرحال برخي موارد را ميتوان با حدس و گمان پيش برد. دراينميان احتمال تغيير مسير از واحدهاي اجرايي اسكالر يا هستههاي Tensor در تراشههاي انويديا دور از ذهن است، چون اشكالات متعددي در حوزهي هماهنگي با نسخههاي پيشين ايجاد ميكند.
با ورود اينتل به رقابت پردازندههاي گرافيكي، شاهد بازار جديدتري خواهيم بود
با توجه به روندهاي قبلي شركت انويديا ميتوان پيشبينيها و تخمينهايي كلي از برنامههاي آتي آنها داشت. شركت سرمايهگذاري زماني و پولي زيادي روي فناوري ري تريسينگ انجام داده است و همراهي از آن در بازيها نيز روزبهروز افزايش مييابد. درنتيجه ميتوان انتظار بهبود هستههاي RT را در محصولات شركت بالا دانست. بهبود مورد انديشه متخصصين نيز ميتواند در قابليت و ظرفيت هستهها يا تعداد آنها در هر SM باشد. اگر شايعهي استفاده از فناوري توليد هفت نانومتري را واقعي تصور كنيم، انويديا به احتمال زيادي بيش از افزايش سرعت كلاك به كاهش مصرف نيرو فكر ميكند تا در نهايت امكان افزايش واحدهاي GPC را داشته باشد. البته اين احتمال هم وجود دارد كه شركت از فرايندهاي هفت نانومتري عبور كرده و براي كسب برتري نسبت به AMD، سراغ فرايندهاي پنج نانومتري برود.
انويديا و AMD هردو رقيب جديدي بهنام اينتل را در مقابل خود ميبينند. غول صنعت پردازنده قصد دارد تا پس از ۲۰ سال مجددا وارد بازر شود. البته توانايي محصول بعدي آنها (كه احتمالا نام Xe دارد) در رقابت با تورينگ و ناوي مشخص نيست. بههرحال اينتل در دو دههي گذشته با توليد گرافيكهاي داخلي براي پردازندههاي خود، روند مناسبي در بازار داشته است. آخرين پردازندهي گرافيكي آنها موسوم به Gen 11 معماري نزديكي به ناوي شركت AMD دارد و از ALUهاي برداري با توانايي پردازش FP32 و INT32 استفاده ميكند. درنهايت هنوز مشخص نيست كه آيا كارتهاي گرافيك جديد آنها بهنوعي محصولات تكامليافته از اين طراحي هستند يا خير.
درنهايت ميتوان سالهاي پيش رو را براي صنعت پردازندههاي گرافيكي جذاب دانست، چون سه غول بزرگ صنعت رقابت شديدي را براي افزايش سهم و درآمد خود در بازار در پيش ميگيرند. طراحي جديد براي پردازندههاي گرافيكي و معماري آنها، باعث بهبودهايي همچون افزايش تعداد ترانزيستور، ابعاد كش و ظرفيتهاي سايهزني محصولات ميشود. Navi و RDNA را ميتوان جديدترين اعضاي خانوادههاي گرافيكي دانست. آنها نشان دادهاند كه هر قدم رو به جلو و هرچند كوچك تغييرات عظيمي را بههمراه خواهد داشت.
هم انديشي ها