
بيانيه هاي اخير Nvidia در رابطه با معماري GPU جديد اين شرکت که تحت عنوان Fermi شناخته مي شود، بيشتر به عملکرد بالا در حوزه Computing مي پرداختند، تا عملکرد آن در بازيها. با اينحال، ويژگيهاي جديد و بهبود يافته Fermi در عين حال شواهدي را در رابطه با آنچه که مي توانيد در حوزه اجراي بازيها از GPU بعدي Nvidia انتظار داشته باشيد، فراهم مي کنند.
Nvidia معماري Fermi خود را در اواخر سال 2009 معرفي کرد و بخش عمده اي از مباحث اوليه در رابطه با Fermi بر روي Tesla متمرکز بودند که محصولات High Performance Computing(HPC) شرکت Nvidia را در بر مي گيرد. Nvidia تأثير GPU جديد خود بر بازيها و گرافيکهاي 3 بعدي را به همراه اطلاعات مشروح درباره مشخصات تراشه هاي Fermi در نمايشگاه CES 2010 تشريح کرد. با اينحال، ما در اين مقاله بر جنبه هائي از اطلاعات مربوط به Fermi تکيه خواهيم داشت که به Tesla و HPC مربوط مي شوند، هرچند که بخش عمده اي از اين اطلاعات در مورد GPUهاي عمومي Fermi نيز صادق خواهند بود.
مسير Fermi
واحد پردازنده گرافيکي GPU(Fermi) وعده مي دهد تا مسيري که Nvidia با معماري G80 خود آغاز کرده و با GT200 ادامه داده بود را دنبال کند: يک GPU که با قدرت محاسباتي و قدرت گرافيکي بطور تقريباً يکساني رفتار نمايد. GPUهاي Fermi از ويژگيهاي زير برخوردار خواهند بود:
- نزديک به 3 ميليارد ترانزيستور
- پشتيباني از حداکثر 6 گيگابايت حافظه GDDR5 DRAM
-پشتيباني از DirectX 11
- 512 هسته CUDA
- پشتيباني از زبان برنامه نويسي C+

- ECC(Error Correction Codes) بر روي اينترفيسهاي حافظه Tom R.Halfhill تحليلگر ارشد In-Stat در گزارش Microprocessor Report اين مجموعه مي گويد:« بعضي از اين ويژگيها در عين حال براي چيزي که Nvidia آن را GPU Computing مي نامد و عملاً معادل HPC براي مصرف کنندگان عام خواهد بود نيز مفيد هستند». معماري جديد Fermi تنها چند سال بعد از معماري GT200 معرفي شده است. David Patterson استاد علوم کامپيوتر دانشگاه برکلي کاليفرنيا مي گويد:« Nvidia از يک تاريخچه نسبتاً طولاني در ارائه معماريهاي سلطه جويانه جديد در فواصل تقريباً 3 ساله برخوردار است. من خوشحالم که مي بينم آنها بعضي از مشکلات موجود( نه تمام آنها) در زمينه افزايش سودمندي GPU براي کلاس گسترده تري از وظايف را برطرف نموده اند».
معماري
همانطور که قبلاً نيز اشاره کرديم، Fermi شامل 512 هسته CUDA(Compute Unified Device Architecture) مي باشد. هر هسته CUDA يک عمليات عدد صحيح ( Integer) عمليات اعشاري ( Floating Point) با دقت واحد( Single-Precision) را در هر سيکل کلاک براي هر رشته ( Thread) اجرا مي کند. به اين ترتيب، يک سطح فرکانسي 1/5 گيگاهرتزي به معناي حداکثر نرخ عملياتي معادل با 1/5 ترافلاپس( TELOPS) براي Fermi خواهد بود.

512 هسته CUDA در داخل SM (Streaming Processor) 16 سازماندهي شده اند. هر SM( که در شکل [1] بصورت ستونهاي عمودي عريض نشان داده شده اند) حاوي 32 هسته CUDA( که تحت عنوان پردازنده هاي CUDA نيز شناخته مي شوند) مي باشد که 4 برابر بيشتر از تعداد هسته هاي CUDA موجود در SMهاي پياده سازي شده در طراحيهاي GPU قبلي شرکت Nvidia است. در داخل هر هسته CUDA، يک واحد منطقي محاسبات عدد صحيح ( INT) و يک واحد منطقي محاسبات اعشاري( FPU) قرار دارد.

اين SM 16 يک ناحيه حافظه کاشه L2 768 کيلوبايتي اشتراکي را احاطه کرده اند. هر SM شامل يک ناحيه Wrap Scheduler و Dispatch، نواحي کاشه و فايلهاي رجيستر است.
در داخل هر SM، چهار ستون( دو ستون از هسته هاي CUDA، يک ستون LD/ST و يک ستون SFU) قرار گرفته اند که 32 هسته CUDA، LD/ST 16( واحدهاي Load/Store) و SFU 4 ( واحدهاي Special Functions) را در بر مي گيرند. واحدهاي Load/Store از محاسبات آدرسهاي مبداء و مقصد براي 16 رشته در هر سيکل کلاک پشتيباني مي کنند. SFUها نيز انواع خاصي از دستورالعملها نظير محاسبه کسينوس و يا جذر ريشه دوم را اجرا مي نمايند. هر SFU مي تواند يک دستورالعمل را براي هر رشته اجرا کند.
هر SM گروه هائي متشکل از 32 رشته موازي را برنامه ريزي مي کند که تحت عنوان Wrapها شناخته مي شوند. در داخل هر SM، دو Wrap Scheduler و دو واحد Instruction Dispatch قرار گرفته اند. اين پيکربندي مي تواند دو Wrap را بطور همزمان اجرا نمايد که دو ستون از 4 ستون را اشغال مي کنند. براي مثال، اگر يک دستورالعمل اعشاري Double Precision(64-Point) صادر گردد، هر دو ستون هسته CUDA را اشغال خواهد نمود. به اين ترتيب دو ستون ديگر خالي خواهند ماند.
Fermi شامل 6 کنترلر حافظه 64 بيتي است که داده ها را به هسته هاي CUDA مي رسانند. هر کنترلر حافظه از GDDR5 DRAM پشتيباني مي کند که باعث مي شود Fermi به اولين GPU سطح بالاي Nvidia با قابليت بهره گيري از حافظه GDDR5 تبديل گردد. به اين ترتيب مي توان پيش بيني کرد که پهناي باند متراکم اين ترکيب در Fermi تقريباً 30 درصد بالاتر از 8 کنترلر حافظه DDR3 در Geforce GTX 280 خواهد بود. يک برتري ديگر حرکت از GDDR3 به GDDR5 اين است که استاندارد حافظه جديد پهناي باند بالاتري را براي هر پايه تأمين مي نمايد و اين بدان معني است که Fermi مي تواند از يک اينترفيس حافظه کوچکتر( 384 بيتي) در مقايسه با اينترفيس حافظه 512 بيتي در GTX 280 استفاده کند. يک اينترفيس حافظه کوچکتر به معناي نياز کمتر به مصرف برق عملياتي بوده و در عين حال به پايه هاي کمتري نياز دارد.
اينترفيس ميزبان بعنوان اتصال مابين GPU و CPU از طريق يک اينترفيس PCI-E 16 مسيره عمل مي کند که بايد با حداکثر نرخ 8 گيگابايت بر ثانيه عمل نمايد. GigaThread يک برنامه ريز ( Scheduler) عمومي به حساب مي آيد که بلوکهاي رشته را در بين Schedulerهاي داخل هر SM توزيع مي کند. در داخل واحد GigaThread پردازنده گرافيکي Fermi، يک HTS(Hardware Thread Scheduler ) قرار گرفته است. HTS هزاران رشته فعال بر روي GPU را مديريت نموده، کار را مابين SMهاي قابل دسترسي توزيع کرده و سوئيچهاي مضمون را مديريت مي کند. با پياده سازي نگهداري برنامه زمانبندي بصورت سخت افزاري و از طريق HTS( بجاي پياده سازي نرم افزاري در پيکربنديهاي قديمي)، توسعه دهندگان نرم افزارهاي کاربردي مي توانند نرم افزارهائي را طراحي کنند که بر روي GPUهائي با تعداد دلخواهي از SMها اجرا شوند.
زمانبندي رشته ها با GigaThread
با Gigathread Thread Scheduler در Fermi، يک موتور توزيع کار عمومي در ابتدا بلوکهاي رشته را در سطح تراشه زمانبندي نموده و آنها را مابين SMها توزيع مي کند. سپس، Wrap Scheduler در سطح SM، Wrapهائي با حداکثر 32 رشته را در ميان واحدهاي اجرائي توزيع مي نمايد. اين فرايند کاملاً به پيکربندي GPUهاي قبلي شباهت دارد، اما بهسازيهاي Fermi در GigaThread اساساً در دو حوزه خودنمائي مي کنند:

-Context Switching: ايده سوئيچ مضمون در CPUها و GPUها بطور مشابهي عمل مي کند. اساساً اين نوعي Multitasking است که در آن هر برنامه بخشي از زمان منابع پردازنده را بدست مي آورد. Fermi مدت زمان مورد نياز براي سوئيچ مضمون را به کمتر از 25 ميکروثانيه کاهش داده است که باعث بهبود کلي عملکرد مي گردد.
- اجرا همزمان کرنل: همانطور که در شکل [3] نشان داده شده است، تحت Fermi اگر يک برنامه مجبور باشد تعداد زيادي از کرنلهاي کوچک را اجرا نمايد، تمام آنها مي توانند بطور همزمان بر روي GPU اجرا شوند که امکان بهره گيري بهتر از تمام منابع GPU را در مقايسه با پيکربنديهاي قبلي فراهم مي نمايد. در عين حال، Context Switching نيز به اجراي همزمان کرنل کمک مي کند.
رياضيات جديد
احتمالاً جالبترين جنبه از معماري Fermi براي HPC، اين نکته خواهد بود که از استاندارد حساب اعشاري جديد IEEE يعني 754-2008 استفاده مي کند( بجاي استاندارد قديمي که با نام 754-1985 شناخته مي شد). استاندارد جديد شامل دستورالعمل FMA(Fuse Multi-Add) مي باشد. بعلاوه، اعداد صحيح 32 بيتي براي عمليات ضرب نيز بخشي از ALU(Arithmetic Logic Unit) Fermi خواهند بود. در گذشته، ALU سخت افزار GPU به اعداد صحيح 24 بيتي محدود بود.
دستورالعمل FMA بسيار مطلوب تر از دستورالعمل MAD(Multiply-Add) سابق خواهد بود زيرا FMA هر دو عمليات ضرب و جمع را در يک مرحله واحد انجام مي دهد که به اين ترتيب امکان گرد کردن دقيق تري را فراهم مي سازد. دستورالعمل MAD گاهي باعث کاهش دقت در مرحله اضافي خود مي گرديد.
Fermi اختصاصاً براي کاربردهاي محاسباتي با دقت مضاعف( Double-Precision) نظير شيمي کوانتومي و جبر خطي طراحي شده است که باز با گرايش به سمت HPC انطباق دارند. حداکثر 16 عمليات ضرب/ جمع مي توانند در هر سيکل کلاک بر روي هر SM اجرا شوند که تقريباً 4 برابر عمليات انجام شده بر روي معماري GT 200 خواهد بود.
دقت 32 بيتي عمليات اعشاري IEEE
يک ويژگي جديد ديگر در Fermi، پشتيباني از آخرين استاندارد دقت اعشاري IEEE، يعني 754-2008 است. ويژگي جديد اصلي در اين استاندارد، پشتيباني از اعداد Subnormal است، اعداد کوچکي که تقريباً معادل صفر هستند.
IEEE استاندارد 754-2008 را در آگوست سال 2008 منتشر کرد. اين اولين بروز رساني استاندارد اعشاري از زمان انتشار 754-1985 در سال 1985 به بعد بود. فرآيند بازنگري که به انتشار 754-2008 منتهي گرديد، به 7 سال کار مداوم نياز داشت.

Floating Point( مميزي شناور و يا همان اعشاري) يک سيستم بيان رشته اي از ارقام است که معادل يک عدد منطقي هستند. عبارت شناور (Floating) به جابجائي مميز اعشاري نسبت به اعداد صحيح در يک عدد منطقي اشاره دارد. شما مي توانيد آن را بعنوان يک علامت علمي براي محاسبات در نظر بگيريد. توانائي يک GPU براي انجام سريع و دقيق عمليات اعشاري، از اهميت بالائي در تعيين سطح عملکرد GPU برخوردار است.
در گذشته، اينگونه اعداد Subnormal معادل صفر در نظر گرفته مي شدند که به افت دقت محاسبات منتهي مي گرديد. با اينحال، افت دقت مذکور تحمل مي شد زيرا اينگونه اعداد بصورت نرم افزاري اداره مي شدند و گاهي اوقات به هزاران سيکل محاسباتي نياز داشتند که با يک تأثير منفي بر عملکرد همراه بود. اکنون Fermi اعداد Subnormal را بصورت سخت افزاري اداره مي کند که مشکلات عملکردي را از بين خواهد برد.اجازه بدهيد به يک مثال براي استفاده از دقت اعشاري جديد در گرافيکهاي کامپيوتري اشاره کنيم:
- يک تابع متداول شامل دو عمليات است: ضرب دو عدد و جمع کردن يک عدد سوم( A x B+C=Result).
- در گذشته، دستورالعمل multiply-add)MAD) هر دو عمليات را در داخل يک سيکل واحد انجام مي داد. با اينحال نتيجه ضرب بايد کوتاه مي شد که گاهي اوقات با خطاهائي در گرد کردن همراه بود.
- Fermi از دستورالعمل fused multiply-add(FMA) استفاده مي کند که امکان بهره گيري از دقت کامل( بدون کوتاه سازي) را در مرحله ضرب فراهم مي سازد و در عين حال سطح عملکردي خود را نيز حفظ مي نمايد. براي مثال الگوريتمهاي مورد استفاده براي راندوي اشکال هندسي با تقاطع ظريف، بطور قابل ملاحظه اي از دقت تأمين شده در FMA سود خواهند برد.
بازيها يا HPC
بعضي از کاربران در مجموعه طرفداران بازيها از اين موضوع که Nvidia تصميم گرفته بود بيشتر بر گزينه هاي Tesla و HPC مبتني بر GPU جديد خود تکيه نمايد، نااميد شده بودند. بديهي است که GPUهاي مخصوص بازيها و کاربردهاي گرافيکي در حال حاضر بخش اعظم تجارت Nvidia را به خود اختصاص داده اند، در حاليکه HPC فعلاً تنها بخش کوچکي از درآمد اين شرکت را تشکيل مي دهد.
Nvidia اميدوار است HPC نهايتاً تا سطح يک حوزه درآمد ساز بزرگتر رشد کند، اما Halhill معتقد است که تأکيد بر پياده سازي قابليتهاي HPC در GPUها مي تواند اين شرکت را با تصميم گيريهاي دشواري در مسير خود مواجه سازد. او مي گويد:« با نگاه به آينده، من پيش بيني مي کنم که Nvidia به نوآوريهاي سلطه جويانه و جسورانه خود ادامه خواهد داد. با اينحال، GPUها احتمالاً در مسير خود با يک دو راهي مواجه خواهند شد. در يک نقطه، ويژگيهاي طراحي شده براي HPCها احتمالاً به مانعي براي GPUهاي در نظر گرفته شده براي مصرف کنندگان عام تبديل خواهند گرديد. براي مثال، GPUها براي اجراي بازيها و بسياري از نرم افزارهاي کاربردي ديگر در حوزه مصرف کنندگان عام به ECC نيازي ندارند».
Halfhill ادامه مي دهد:« احتمالاً Nvidia روزي مجبور خواهد شد تا GPUهاي جداگانه اي را براي حوزه هاي HPC و بازار مصرف کنندگان عام طراحي نمايد. پروژه هاي طراحي جداگانه مي توانند هزينه بيشتري را بر اين شرکت تحميل نموده و تا حدودي مزيت استفاده از بازار بزرگ مصرف کنندگان عام براي کمک به هزينه هاي توسعه GPUهاي مخصوص HPCها را خنثي کنند».
GPU در مقابل CPU
حتي اگر GPUهاي Fermi و سکوي Tesla شرکت Nvidia با پذيرش کامل جامعه HPC مواجه شوند، چنين انتقالي به معناي پايان کار CPUها نخواهد بود.
Halfhill در اين زمينه مي گويد:« ما به هيچوجه به زمان منسوخ شدن CPUها توسط GPUها نزديک نيستيم. CPU هنوز پادشاه سيستمهاي کامپيوتري است و اين موقعيت را در آينده قابل پيش بيني حفظ خواهد کرد. قدم بعدي، ادغام CPU و GPU بر روي يک تراشه واحد است که از قبل در سيستمهاي Embedded نظير تلفنهاي سلولي اتفاق افتاده و بزودي با تراشه Larrabee شرکت اينتل و معماريهاي Fusion شرکت AMD در حوزه PC اتفاق خواهد افتاد».
براي آن دسته از خوانندگان که با اين حوزه آشنائي ندارند، بايد بگوئيم که CPU داراي مزاياي بخصوصي است، مثلاً براي آن دسته از نرم افزارهاي کاربردي که به تعداد محدودي از رشته هاي پردازشي نياز دارند و يا شامل ترکيب بزرگي از عمليات گوناگون هستند. از سوي ديگر، GPUها در آن دسته از نرم افزارهاي کاربردي که به رشته هاي متعددي با تواليهاي طولاني از دستورالعملها نياز دارند، داراي برتري مي باشند. همانطور که Patterson اشاره مي کند، GPUها در هنگام مقايسه با CPUها هنوز بايد چالشهاي مختلفي را پشت سر بگذارند. براي مثال، GPUها بايد با حجم نسبتاً پائين حافظه GPU و ناتواني در انجام I/O مستقيم به حافظه GPU مقابله نمايند.
Patterson مي گويد:« ما هنوز به منسوخ شدن CPUها نزديک نشده ايم، زيرا GPUها با نقطه ضعفهاي متعددي مواجه هستند و مشخص نيست که چقدر طول خواهد کشيد تا شاهد برطرف گرديدن اين نقطه ضعف ها باشيم».
پيکربندي حافظه On-chip
از آنجائيکه الگوريتمها و نرم افزارهاي کاربردي محاسباتي، همگي رفتار نسبتاً متفاوتي با حافظه GPU دارند، Fermi مي تواند حافظه خود را براي انطباق با نيازهاي يک نرم افزار کاربردي پيکربندي نمايد. صرفنظر از اينکه الگوريتم يا نرم افزار کاربردي به حافظه اشتراکي بيشتري نياز دارد يا کاشه L1 بيشتر، Fermi مي تواند حافظه On-chip خود را به همان صورتي که برنامه نويس مشخص مي کند مجدداً براي انطباق با اين نيازها پيکربندي نمايد.
معماريهاي قبلي، 16 کيلوبايت حافظه اشتراکي را براي هر SM در بر مي گرفتند، اما Fermi به 64 کيلوبايت حافظه On-chip براي هر SM مجهز است که مي تواند بصورت 16 کيلوبايت حافظه اشتراکي و 48 کيلوبايت کاشه L1 ( و يا بالعکس) تقسيم گردد.
- حافظه اشتراکي: به گفته Nvidia، برنامه اي که به استفاده گسترده از حافظه اشتراکي نياز دارد، مي تواند بر روي Fermi سه برابر سريعتر اجرا شود زيرا اين تراشه 48 کيلوبايت حافظه اشتراکي را در مقايسه با 16 کيلوبايت پيکربنديهاي قبلي در دسترس برنامه قرار مي دهد. با سه برابر شدن مقدار حافظه اشتراکي در مقايسه با معماريهاي قبلي، نرم افزارهاي کاربردي معين مي توانند از حافظه اشتراکي اضافي بعنوان کاشه تحت مديريت نرم افزار استفاده کنند که باعث بهبود عملکرد خواهد شد.
-کاشه L1: براي ساير برنامه ها، دسترسي به 48 کيلوبايت حافظه کاشه L1 امکان اجراي سريعتر در مقايسه با پيکربنديهاي قبلي را فراهم مي سازد، زيرا برنامه ها مجبور نخواهند بود دائماً به DRAM دسترسي پيدا کنند. Fermi داراي 768 کيلوبايت کاشه L2 يکپارچه مي باشد که تمام انواع درخواستها(Texture، Store و Load) را اداره مي نمايد.
بررسي اجمالي Hydra 200
موتور Hydra از طريق سخت افزار ASIC(Application-Specific Integrated Circuit) به همراه يک درايور نرم افزاري کار مي کند. توليدکنندگان مادربرد، تراشه Hydra را مابين پل شمالي CPU و GPUها نصب مي کند.
Hydra از ترکيبي از سخت افزار و نرم افزار استفاده مي کند که Lucid براي ايجاد فناوري Multi-GPU خود ايجاد نموده است. پرسنل Lucid به 60 نفر مي رسند که هر دو گروه مهندسين نرم افزار و سخت افزار را در بر مي گيرند و در حوزه هائي نظير گرافيکهاي 3 بعدي، طراحي تراشه، شبکه سازي و ساير مهارتها، تخصص دارند. به گفته Remez، براي Lucid بسيار مهم است که کارکناني با سوابق فني متنوع را در اختيار داشته باشد زيرا Hydra بايد کارهاي بسيار مختلفي را انجام دهد. او مي گويد:« تراشه بايد انبوهي از داده ها را اداره نمايد که از همه جا مي آيند».

Hydra در مسير Callها و دستورالعملهائي که از CPU به GPUها فرستاده مي شوند، قرار مي گيرد( نظير جريانهاي فرمان DirectX يا OpenGL). سپس، کارهائي که بايد انجام شوند را دقيقاً تعيين نموده سازماندهي مي کند. Remez در اين رابطه مي گويد:« ايجاد يک فريم واحد با هزاران آبجکت و وظيفه مختلف سر و کار دارد. فرض کنيد که من مي توانم هريک از اين وظايف را با آگاهي از زماني که لازم دارند، حافظه مورد نياز آنها و ساير موارد مشابه شناسائي نمايم و همچنين تصور کنيد که من GPU 1000 براي انجام 1000 وظيفه در اختيار دارم. اگر بتوانم بطور همزمان يک وظيفه را به هر GPU محول کنم، مي توانم تمام نتايج را بصورت بلادرنگ ترکيب نمايم».
او اضافه مي کند:« در دنياي واقعي، ما براي انجام همين کار تلاش مي کنيم، اما هر وظيفه به ساير وظايف وابسته است. تمام اين وظايف به يکديگر ارتباط دارند. پس چگونه مي توانيم اين مشکل را حل کنيم؟ ما يک وظيفه واحد را بر روي GPUهاي متعددي مقياس دهي مي نمائيم». سپس Hydra با استفاده از داده هاي تاريخي مرتبط با سطوح عملکردي GPUهاي نصب شده، وظايف را مابين GPUها توزيع کرده و تلاش مي نمايد تا يک بار کاري را براي آنها تأمين کند که قابليتهاي هر GPU براي ايجاد يک جريان کاري روان را به حداکثر برساند.
تراشه هاي Hydra کار با GPUها را بطور خودکار اداره نموده و نحوه تقسيم بار کاري را تعيين مي کنند. اگر به هر دليلي Hydra نتواند پيکربندي Multi-GPU را با يک بازي خاص و يا يک ترکيب بخصوص از GPUها بکار بيندازد، بطور خودکار به يک سطح پائينتر انتقال يافته و سيستم را به يک پيکربندي Single-GPU بر مي گرداند. کاربر به هيچوجه مجبور نيست تنظيمات سيستم را براي انجام اينکار تغيير دهد.
همانطور که در شکل [1] مشاهده مي کنيد، خود GPUها مستقيماً با يکديگر ارتباط ندارند. تمام کار اشتراک گذاري داده ها در بين GPUها از طريق تراشه Hydra انجام مي شود. هرگونه داده اي که مابين CPU و GPUها به اشتراک گذاشته مي شود نيز بايد از تراشه Hydra عبور کند. اين پيکربندي به توليدکنندگان مادربردها اجازه مي دهد تا انعطاف پذيرترين گزينه هاي طراحي را ايجاد نمايند.
از آنجائيکه سيستم Hydra به مقياس دهي GPUها اختصاص يافته است و همچنين به دليل آنکه هيچ منطق پردازش گرافيکي بر روي تراشه Hydra اتفاق نمي افتد، شيوه هاي متداولي که در حال حاضر براي تقسيم بار کاري مابين يک جفت GPU مورد استفاده قرار مي گيرند( نظير فريمهاي يک در ميان و يا تقسيم فريم) را بهبود مي بخشد.
- فريم يک در ميان(Alternate Frame): در تکنيک فريمهاي يک در ميان، هر GPU به نوبت فريمها را بطور يک در ميان راندو مي نمايد. اين تکنيک گاهي اوقات باعث ايجاد مشکلات تأخيري مي گردد، مگر آنکه هر فريم به مدت زمان مساوي براي پردازش نياز داشته باشد. با اينحال هنگاميکه GPUها يکسان نباشند، تکنيک فريمهاي يک در ميان بخوبي کار نخواهد کرد.
- تقسيم فريم: تعداد کمي از معماريهاي Dual-GPU هنوز از تکنيک Split-Frame استفاده مي کنند. با اين تکنيک، هر GPU نمايش يک بخش معين از تصوير را اداره مي نمايد. تکنيک تقسيم فريم باعث کاهش مشکلات مربوط به گلوگاه هاي سايه زني پيکسل (Pixel Shading) مي گردد، اما از آنجائيکه هر GPU بايد کل تصوير را در ناحيه حافظه خود ذخيره کند، استفاده از اين تکنيک مي تواند باعث ايجاد گلوگاه هاي حافظه گردد.
معماري موتور Hydra
موتورHydra شرکت Lucid اولين تراشه سيليکوني است که RTDP(Real-Time Dedicated Processing) را پياده سازي مي کند. موتور Hydra هر فريم را پيش از راندو تجزيه و تحليل نموده و سپس وظايف مربوط به آن را براساس قابليتها و دسترس پذيري هريک از GPUهاي داخل سيستم، مابين آنها توزيع مي کند. استفاده از اين نوع سيستم به موتور Hydra امکان مي دهد تا به خوبي با GPUهائي در سطوح مختلف قدرت راندو کار کرده و آنها را بهينه سازي نمايد. با آناليز پيش از موقع هر فريم، موتور Hydra مي تواند گلوگاه ها را به حداقل رسانده و تأخير را کاهش دهد.

شکل [2] موتور Hydra را نمايش مي دهد. اجازه بدهيد يک مثال از نحوه کار تراشه Hydra را با استفاده از اين شکل بررسي کنيم.
1- موتور توزيع Hydra اطلاعات را هنگام انتقال آنها به CPU توسط بازي، مي خواند. مي توانيد تصور کنيد که Hydra دستورالعملها و Calهاي DirectX و OpenGL که توسط بازي براي GPUها فرستاده مي شوند را استراق سمع مي نمايد.
2- Hydra اطلاعات را تجزيه و تحليل کرده، آنها را به وظايف مشخصي تقسيم نموده و سپس به GPUها مي فرستد. يک وظيفه مي تواند تقريباً هرچيزي باشد، از يک افکت نورپردازي خاص گرفته تا يک ترسيم يک آبجکت معين. Hydra از الگوريتمهاي انحصاري براي کامپايل وظايف ( Application profiling and analysis) استفاده مي کند.
3- پس از مشخص شدن وظايف، تراشه Hydra وظايف را مابين GPها تقسيم مي نمايد. اين تراشه از الگوريتمهاي خود براي تقسيم بار کاري با يک روش« هوشمندانه» براي بهره گيري کامل از منابع و قابليتهاي هر GPU(Parallel policy management) استفاده مي کند. تراشه Hydra بطور خودکار قابليتهاي هر GPU را بر حسب سطوح عملکردي تاريخي آن، تخمين مي زند( Historical repository). با ادامه کار، Hydra معيارهاي خود را براساس عملکرد بلادرنگ GPUها بروزرساني مي نمايد( Behavioral prifile data base).
4- سپس Hydra داده ها را به GPUها مي فرستد( از طريق ماجولهاي Decompose و Distributed).
5- پس از آنکه کار GPUها به پايان رسيد، داده ها را به تراشه Hydra بر مي گردانند تا در آنجا کامپايل شوند( ماجول Recompose).
6- در نهايت، Hydra صحنه نهائي را به يکي از GPUها مي فرستد که به نمايشگر متصل شده است.
تاريخچه Lucid
Lucid که نام رسمي آن LucidLogix مي باشد، يک شرکت طراحي کننده نيمه هادي است که خودش داراي تأسيسات توليدي نمي باشد و براي اين منظور به توليدکنندگان قراردادي تکيه دارد. پشتوانه مالي Lucid از مؤسساتي نظير Giza Venture Capital، Genesis Parteners، Intel Capital و Rho Ventures تأمين مي شود. دفتر مرکزي اين شرکت در کاليفرنيا قرار گرفته و تاکنون بيش از 60 حق امتياز و يا درخواست ثبت امتياز را در اختيار دارد.
Remez در اين زمينه مي گويد:« من و همکارم دکتر Reuven Bakalash شرکت Lucid را در اواخر سال 2003 راه اندازي کرديم. وقتي از راه اندازي صحبت مي کنم، منظورم يادداشتهائي بر روي يک دستمال سفره در يک کافي شاپ است. اکثر ايده هاي ما چندان خوب نبودند، ولي ما يک ايده در اختيار داشتيم که به توسعه آن ادامه داديم».
ايده بهره گيري از يک طراحي Multi-GPU براي تأمين قدرت راندوي بيشتر( بجاي کپي کردن فناوريهاي چند هسته اي که توليدکنندگان CPU از آنها حمايت مي کردند) به نيروي محرکه Lucid تبديل شد. همانطور که فناوريهاي SLI شرکت Nvidia و CrossFire شرکت ATI نشان مي دهند، Lucid بطور آشکارا تنها شرکتي نيست که گزينه اي Multi-GPU را ارائه مي کند، اما Hydra اولين محصولي است که امکان استفاده از يک پيکربندي ترکيبي از GPUهاي توليدکنندگان متفاوت را فراهم مي سازد. Remez مي گويد:« ما خودمان را پيشتاز اين حوزه در نظر گرفتيم. وقتي ما درباره اين موضوع فکر کرديم، سيليکون نمي توانست به رشد خود ادامه دهد. سيليکون در هر چرخه تقريباً 33 درصد کوچکتر مي شود، اما تعداد ترانزيستورهاي داخل آن به بيش از دو برابر افزايش مي يابد. راه حل صنعت براي اين مشکل، توليد پردازنده هاي چند هسته اي بود. حتي پردازنده هائي که در پائين ترين سطح ارائه مي شوند نيز داراي دو هسته خواهند بود». با در نظر گرفتن طبيعت پردازش گرافيکي، چندان شگفت آور نيست که GPUها از استفاده از هسته هاي متعدد اجتناب کرده اند. به گفته Remez، پيکربندي هاي چند هسته اي که CPUها در حال حاضر از آن استفاده مي کنند بخوبي براي GPUها جواب نمي دهد زيرا راندوي گرافيکي به يک نوع راه حل متفاوت با آنچه که در CPUها کار مي کند، نياز دارد.
او مي گويد:« تفاوت بسيار زيادي مابين نقطه اي که گرافيکها امروزه در آن قرار گرفته اند و هدفي که ما مي خواهيم به آن برسيم وجود دارد. راه حل چند هسته اي نمي تواند پاسخگوي نيازهاي راندوي بازيها باشد. معماري چند هسته اي نمي تواند به اين نياز پاسخ دهد زيرا وظيفه راندوي بازيها يک وظيفه تک رشته اي با خط لوله ترتيبي است که از هسته هاي متعدد هيچ بهره اي نمي برد».
فروش Hydra
به گفته Remez، متقاعد نمودن توليد کنندگان مادربردها به استفاده از تراشه هاي Hydra بسيار آسانتر از چيزي است که احتمالاً فکر مي کنيد، البته اين موضوع به شرکت توليد کننده نيز بستگي دارد. او مي گويد:« اگر آنها با فناوري Multi-GPU آشنائي داشته باشند، فروش در يک مدت زمان کاملاً قابل قبول امکانپذير خواهد بود. اما گذراندن محصولات مادربرد در تمام مسير از يک پيش نمونه تا مرحله دسترس پذيري کاربران، چالش کاملاً متفاوتي به حساب مي آيد».
يک ويژگي که Hydra را به يک گزينه مطلوب تبديل مي کند، اين واقعيت است Lucid با تأمين اطلاعات انحصاري هيچگونه وابستگي به توليدکنندگان مهم GPU ندارد. تراشه Lucid Hydra پيش از آغاز کار خود صرفاً نياز دارد بداند که چه GPUهائي بر روي سيستم نصب شده اند( اطلاعاتي که به آساني از طريق خود سيستم قابل دستيابي مي باشد). Hydra هيچ نيازي به آگاهي از عملکردهاي داخلي GPها ندارد. تراشه هاي Lucid با GPUها از طريق DirectX( از جمله DirectX 11) کار مي کنند.
Remez مي گويد:« ما يک کانال باز با تمام فروشندگان GPU در اختيار داريم. ما درباره موضوعات بسياري به مذاکره و گفتگو مي پردازيم. اما هيچگونه اطلاعات تکنولوژيکي مابين ما رد و بدل نمي شود. هيچ تعامل مستقيمي بين ما و فروشندگان وجود ندارد».
به گفته Remez، شرکت Lucid در يک وضعيت مشابه ارتباط و مذاکرات خود را با توسعه دهندگان بازيها حفظ مي کند، اما اين شرکت واقعاً به هيچ اطلاعات انحصاري از سوي شرکتهاي توليدکننده بازي نياز ندارد. Hydra صرفاً دستورالعلمها را از بازيها مي خواند و نيازي ندارد که عملکرد خود را بر حسب يک بازي بخصوص و يا GPUهاي مورد استفاده تغيير دهد.
Remez مي گويد:« اين مذاکرات تقريباً يک طرفه هستند. آنها از ما مي پرسند که به چه چيزي از طرف ما نياز داريد؟ و ما پاسخ مي دهيم که هيچ چيز. سپس آنها مي پرسند که پس چرا به اينجا آمده ايد؟ ما هيچ چيزي براي ارائه مستقيم به توسعه دهندگان بازيها نداريم، پس اين ملاقاتها بسيار عجيب به نظر مي رسند. با اينحال، ما به اين مذاکرات ادامه مي دهيم زيرا مي خواهيم با آنها ارتباط داشته باشيم».
آزمايش و باز هم آزمايش
با وجود آنکه Lucid تراشه هاي Hydra را در اصل براي علاقمندان بازيها در نظر گرفته است، اما واقعيت اين است که تراشه هاي مذکور مي توانند در هر نرم افزار کاربردي با گرافيکهاي سنگين و يا هر پيکربندي چند نمايشگري مورد استفاده قرار گيرند. با اينحال، در حال حاضر آزمايشهاي Lucid بر روي بازيها متمرکز است.
به گفته Remez، آزمايش يک کار بسيار وقتگير است، زيرا شرکت او تلاش مي کند تا بازيهاي متعددي را با صدها ترکيب احتمالي از GPUها آزمايش نمايد. او مي گويد که حتي با وجود آنکه Hydra با تمام ترکيبهاي واجد شرايط GPUها کار مي کند، اما مرحله آزمايش از اهميت حياتي برخوردار است.
Remez مي گويد:« با وجود آنکه اين محصول براي کار با يک دامنه گسترده از نامهاي تجاري GPUها طراحي شده است، وقتي شما به فرآيند توسعه محصولات نگاه مي کنيد، متوجه مي شويد که ما نمي توانيم همه چيز را آزمايش نمائيم. کيفيت بصري، عملکرد و پايداري از اهميت بسيار بالائي برخوردارند. ما هر کاري که بتوانيم را براي آزمايش اين موارد انجام مي دهيم. سپس، اعلام مي کنيم که اين بازيها براي اين که ترکيبهاي GPU « واجد شرايط» هستند. با اينحال، اين بدان معني نخواهد بود که ساير بازيها و يا ساير ترکيبهاي GPU در اين شرايط کار نمي کنند، بلکه صرفاً به معناي آن است که ما هنوز آنها را آزمايش نکرده ايم».
در عين حال، عليرغم تعداد سرسام آور پيکربنديهاي احتمالي براي آزمايش، Remez معتقد است که Hydra 200 با هيچيک از پيکربنديهائي که Lucid تاکنون براي آن آماده کرده، مشکلي نداشته است.
مدلهاي Hydra 200
3 مدل از Hydra 200 روانه بازار شده اند: LT22114 بعنوان تراشه سطح پائين، LT22102 بعنوان تراشه متوسط و LT24102 که تراشه سطح بالاي خانواده به حساب مي آيد.

شماره مدل درگاه هاي Downstream درگاه هاي Upstream تعداد GPU هاي پشتيباني شده
LT22114 8×2 8×1 2
LT22102 16×2 16×1 2
LT24102 16×2 16×1 2، 3 و يا 4
درگاه هاي Upstream در جدول [1] به تعداد مسيرهاي PCI-E در اتصال مابين Hydra 200 با کنترلر CPU/PCI-E اشاره دارند. درگاه هاي Downstream به تعداد مسيرهاي PCI-E در اتصال مابين Hydra 200 و GPUها اشاره دارد. براي مثال، LT22102 داراي دو اتصال Downstream از نوع x16 PCI-E و يا بعبارت ديگر يک اتصال x16 با هريک از GPUها مي باشد.

در مدل سطح بالاي LT24102 که پيکربندي آن در شکلهاي [3] تا [5] نشان داده شده است، اتصالات Downstream با GPUها بر حسب تعداد GPUهاي داخل سيستم تغيير مي کنند. براي مثال با دو GPU، پيکربندي بصورت دو اتصال x16 PCI-E خواهد بود( يک اتصال براي هر GPU). با سه GPU، شما يک اتصال X16 و دو اتصال x8 را در اختيار خواهيد داشت. با چهار GPU، تراشه LT24102 اين اتصالات GPU را بطور خودکار پيکربندي مي نمايد، يا اين هدف نهائي که بهترين استفاده از منابع موجود را فراهم کند. در اينجا به هيچ تعامل از سوي کاربر نياز نخواهد بود.

Hydra 200 بعنوان يک تراشه Add-on قابل خريداري نخواهد بود، بلکه بايد در داخل يک مادربرد پياده سازي گردد و اين بدان معني است که هرگونه هزينه مربوط به Hydra در هزينه کلي يک مادربرد محاسبه خواهد گرديد. با وجود آنکه Lucid قيمت دقيق تراشه هاي Hydra 200 را بطور عمومي اعلام نکرده است، اما اين شرکت مدعي است که هزينه اضافه شده برحسب مدل Hydra 200 مورد استفاده تقريباً معادل 1/5 دلار براي هر مسير PCI-E خواهد بود. براي مثال، تراشه سطح بالاي LT24102 شانزده مسير Upstream و 32 مسير Downstream را در اختيار دارد. براساس اين ارقام، مي توان تخمين زد که اضافه کردن يک تراشه Hydra 200 LT24102 به يک مادربرد تقريباً 72 دلار به هزينه آن خواهد افزود.
منبع: بزرگراه رايانه، شماره 129