برنامه‌نویسی برای کارت‌های گرافیکی آینده

پای اینتل در کفش انویدیا

امروزه کارت‌های گرافیکی بازار بسیار خوبی دارند و برای شرکت‌های تولید کننده آن بسیار سودآور هستند. اگر به گذشته این محصولات نگاه کنیم و از نام‌هایی که امروز مطرح نیستند صرف نظر کنیم، ابتدا شرکت کانادایی ATI را می‌بینیم. این شرکت سال 1985 تاسیس شد و به‌عنوان تولیدکننده کارت گرافیکی برای رایانه‌های آی‌بی‌ام و کومودور مطرح بود تا این‌که 2سال بعد، شرکت مستقلی شد و شروع به تولید کارت گرافیک با نام تجاری خود کرد.
کد خبر: ۲۸۶۷۴۷

پادشاهی ATI چند سالی ادامه پیدا کرد تا اینکه شرکت انویدیا در سال 1993 از سانتاکلارای کالیفورنیا پا به صنعت گذاشت و به تدریج موفق شد خود را به عنوان رقیب اصلی ATI مطرح کند. جالب است بدانید که بنیان‌گذاران این شرکت، قبلا تجربه کارکردن در شرکت‌های AMD و سان‌میکروسیستمز را داشته‌اند. از سال 2000 که خریدن شرکت کوچک‌تر توسط بزرگ‌ترها رایج شد، انویدیا و ATI شروع به خریدن کردند و به ابر شرکت‌هایی تبدیل شدند.

این دو شرکت در دهه گذشته در تمام عرصه‌ها با یکدیگر رقیب بودند و در هر زمینه‌ای که یکی پیشی می‌گرفت و نوآوری می‌کرد، دیگری خود را می‌رساند. اگر انویدیا هسته گرافیکی کنسول‌های بازی PS3 و اکس‌باکس را تولید کرد، در عوض ATI هسته گرافیکی گیم‌کیوب1 و Wii و اکس‌باکس360 را تولید کرد. اگر ATI سری رادیون را برای کامپیوترهای خانگی تولید می‌کند، انویدیا سری جیفورس را تولید می‌کند. اگر انویدیا تکنولوژی SLI برای موازی کردن دو کارت گرافیک را دارد، ATI تکنولوژی کراس‌فایر2 را پشتیبانی می‌کند و اگر ATI برای تحقق GPGPU خط تولید فایراستریم3 را آغاز می‌کند، انویدیا تسلا4 را معرفی می‌کند.

پس از اینکه AMD موفق شد که ATI را زیرمجموعه خود کند و درون شرکت آن را با نام گروه تولیدات گرافیکی5 بنامد، رایانه‌هایی تولید شد که کارت گرافیک، چیپ‌ست و پردازنده آن متعلق به یک شرکت بود و به همین دلیل امید کارایی بالایی از این رایانه می‌رفت. در این میان، انویدیا زیاد متضرر نمی‌شد چون همچنان می‌توانست کارت‌های گرافیکی خود را برای سیستم‌هایی با پردازنده‌های AMD یا اینتل تولید کند. در این میان، این اینتل است که از رقیب خود AMD عقب افتاده‌است و برای این شرکت، نداشتن کارت گرافیکی ضرر است. به‌نظر نمی‌رسد که اینتل بتواند شرکت انویدیا را بخرد و شرکت بزرگ دیگری نیز وجود ندارد که توان رقابت با AMD/ATI را داشته باشد و اینجاست که اینتل باید روی پای خودش بایستند و کارت گرافیک تولید کند؛ بله، اینتل تصمیم گرفته کارت گرافیک تولید کند.

این کارت‌های گرافیکی که مژده رسیدن آن اوایل بهمن ماه امسال به گوش خواهد رسید، لارابی6 نام دارند. لارابی معماری جدیدی از اینتل است که برای اولین بار در در کنفرانس SIGGRAPH2008 توسط اینتل معرفی شد. (SIGGRAPH کنفرانس سالانه‌ای در زمینه گرافیک رایانه‌ای است که معمولا در ماه اگوست برگزار می‌شود.) در رابطه با تاریچه گرافیکی اینتل باید گفت که این شرکت چیپ‌های گرافیکی تولید می‌کند که با مادربورد تولید می‌شوند، مجزا فروخته نمی‌شوند و GMA نام دارند. ولی این چیپ‌ها به هیچ‌وجه توان رقابت با کارت‌های گرافیکی انویدیا یا AMD/ATI را ندارند و مخصوص سرور یا رایانه‌هایی هستند که نیازی به انجام عملیات پیچیده گرافیکی ندارند و تنها یک خروجی تصویر می‌خواهند. معماری لارابی نسل بعدی GMA نیست و کاملا متفاوت است. لارابی برای دو بازار تولید می‌شود که اول کارت گرافیک‌های رایانه‌های شخصی، که در این بازار رقبای سر سختی مثل جیفورس و رادیون را پیش‌رو خواهد داشت و دوم GPGPU که در این بازار نیز باید با فایراستریم و تسلا رقابت کند. در ادامه به بررسی برخی خصوصیات این معماری و کارایی حدودی آن و نیز برنامه‌نویسی گرافیکی در آن می‌پردازیم.

خصوصیات معماری

طراحان معماری لارابی، همان تیم طراح معماری موفق نهالم7 هستند(معماری نهالم ویژه افزایش کارایی بدون افزایش اندازه طراحی شد و در تولید پردازنده بی‌رقیب Corei7 مورد استفاده قرار گرفت). لارابی در واقع نام معماری چندین هسته‌ای است که هسته‌های باهم مشابه هستند و قابلیت محاسبات برداری آنها تقویت شده‌است. هسته‌ها از نوع in-order هستند؛ به این معنی که ترتیب دستورالعمل‌ها در خط‌لوله8 آنها عوض نمی‌شود. اغلب پردازنده‌های اینتل، Out-of-order هستند یعنی چند دستور غیروابسته به‌طور همزمان می‌توانند اجرا شوند. پیش‌بینی اینکه کدام دستورها می‌توانند موازی اجرا شوند به عهده سخت‌افزاری است که بخش اعظمی از پردازنده را اشغال می‌کند. این معماری ویژه محاسبات سنگین موازی طراحی شده‌است. هسته‌ها از پنتیوم مشتق شده‌اند و برخی دستورات ویژه گرافیک، به مجموعه دستورالعمل‌های آنها اضافه شده‌است. در تصویر، معماری یکی از هسته‌های لارابی را مشاهده کنید که این هسته از طریق شبکه حلقوی با باقی هسته‌ها در ارتباط خواهد بود.

 مقدار حافظه نهان سطح اول9 32کیلوبایت پیش‌بینی شده که دوبرابر مقدار حافظه نهان سطح اول در کارت‌های گرافیکی انویدیاست. حافظه سطح اول این هسته‌ها بسیار سریع است و زمان دسترسی به آن با زمان دسترسی به ثبات‌ها برابر است. حافظه نهان سطح دوم در کارت‌های گرافیکی انویدیا وجود ندارد ولی برای هسته‌های لارابی تعبیه شده‌است و اندازه آن 256کیلوبایت است. هسته‌های لارابی و کودا10 هرکدام توانایی اجرای 4 نخ را به طور همزمان دارند. دستورالعمل پس از دیکود شدن، برای مرحله اجرا به یکی از دو واحد VU11 و SU12 که ثبات‌های مجزا و مخصوص به‌خود را دارند، ارسال می‌شود. VU توانایی اجرای دستوری یکسان، روی 16 داده مختلف را دارد. لارابی برای اجرای موازی چندین نخ آنها را به دسته‌های 16تایی تقسیم می‌کند و اجرای هر دسته را به VU می‌سپارد(این تقسیم‌بندی در معماری کودا متفاوت است و بدین صورت است که نخ‌ها به دسته‌های 32تایی تقسیم می‌شوند و اجرای هر دسته به یک SM13 سپرده می‌شود که خود پردازنده‌ای هشت هسته است). VU توانای اجرای هردو عملیات ممیز شناور و صحیح را دارد.

در لارابی خلاف معماری کودا، زمان‌بندی نخ‌ها توسط نرم‌افزار صورت می‌گیرد. عملیاتی مانند Rasterization و  Interpolation و  Post-shader alpha blending نیز توسط نرم‌افزار پیاده‌سازی و کنترل می‌شود که انعطاف‌پذیری بالایی نسبت به حالتی که سخت‌افزاری پیاده‌سازی شود، پدید می‌آورد. البته کنترل نرم‌افزاری گاهی سربار زیادی تولید کند که از سرعت سیستم می‌کاهد به همین منظور در مورد عملیات Texture و Scatter-gather پیاده‌سازی سخت‌افزاری ترجیح داده شده‌است.

نحوه برنامه‌نویسی

برای نوشتن برنامه‌ای که روی کارت گرافیک‌های لارابی اجرا شود، Larrabee Native طراحی می‌شود که کامپایلر مخصوص نیز خواهد داشت. بسیاری از کدهای نوشته شده به زبان C/C++ استاندارد بدون تغییر و با کامپایل کردن دوباره روی لارابی اجرا خواهند شد. برای برنامه‌نویسی موازی، لارابی‌نیتیو چندین کتابخانه مدیریت نخ را پشتیبانی خواهد کرد که Thread Building Blocks و POSIX Threading و OpenMP از آن جمله‌اند.

کارایی حدودی

برگ برنده‌ لارابی در مقابل کارت‌های گرافیکی دیگر، معماری x86 آن است که می‌تواند سیستم عامل‌ها و برنامه‌های بسیاری را اجرا کند. همان‌طور که گفته شد، لارابی در زمینه‌های سلسله مراتب حافظه، تقسیم بار موازی و پشتیبانی عملیات گرافیکی (سخت‌افزاری یا نرم‌افزاری) تفاوت‌های عمده‌ای با دیگر کارت‌های گرافیکی دارد و نمی‌توان درباره کارایی دقیق آن اظهارنظر کرد، ولی مقالات و گفته‌های زیادی وجود دارد که اعلام می‌کند کارت گرافیک لارابی برای رایانه‌های شخصی، قدرتی نزدیک به GeForce GTX 285 دارد. اما با سابقه و نبوغی که از اینتل سراغ داریم، انتظار می‌رود در زمان عرضه محصول قوی‌تری را شاهد باشیم.

برای تجربه کردن کارت گرافیک‌های لارابی،دست‌کم باید تا بهمن ماه صبر کنیم. اگر اینتل بتواند لارابی را با پردازنده‌های خود هماهنگ کند، برگ جدیدی از رقابت‌های اینتل و AMD ورق خواهد خورد. در این میان، به‌نظر می‌رسد که انویدیا عقب ضربه خواهد خورد. انویدیا که بدون ‌شک بی‌کار نخواهد نشست، شاید تا چند سال دیگر شروع به تولید پردازنده کند تا مثل رقبایش، هم پردازنده مرکزی و هم پردازنده گرافیک یک سیستم، متعلق به خودش باشد.

منابع

[1] Larrabee: A Many-Core x86

Architecture for Visual Computing,

SIGGRAPH 2008 white paper

[2] http://en.wikipedia.org/wiki/ATI

[3] http://en.wikipedia.org/wiki/NVIDIA

[4] http://en.wikipedia.org/wiki/Larrabee_(GPU)

پی‌نوشت

1. GameCube

2. CrossFire

3. FireStream

4. Tesla

5. Graphics Product Group

6. Larrabee

7. Nehalem

8. Pipeline

9. L1 Cache

10. CUDA

11. Vector Unit

12. Scalar Unit

13. Streaming Multiprocessor

احمد لشگر

newsQrCode
ارسال نظرات در انتظار بررسی: ۰ انتشار یافته: ۰

نیازمندی ها