کارت هاي گرافيک در سال ۲۰۰۶ می 10, 2008
Posted by Behzad in مقالات.add a comment
آيا ميدانيد كارتهاي گرافيكي در سال 2006 دستخوش چه تغييراتي شدهاند ؟ آيا ميدانيد در اين سال چه فنآوريهايي به كارتگرافيكهاي و بازيهاي مدرن اضافه شده است ؟ در اين مقاله كارتگرافيكهاي سال 2006 بررسي شده و فنآوريهاي مهم آنها و تاثير هريك بر بازيهاي كامپيوتري را تشريح كردهايم .
زمانيكه كارتهاي گرافيكي مبتني بر DirectX 8.0 معرفي شدند اثرات سايه زنها بخصوص در سطوح آب بسيار متحير كننده بود . كارتهاي گرافيكي مبتني بر هسته هاي GeForce FX و Radeon 9X00 كه قابليت پشتيباني از DirectX 9.0 را نيز داشتند از ويژگيهاي سايه زنها در بازيها استفاده كرده و تصاوير زيبايي را ايجاد ميكردند . در اين كارتها براي اولين بار بازتاب موج آب ديده ميشد . يعني دويدن و يا شنا كردن در ميان آب تغييراني را ايجاد ميكرد كه باعث بوجود آمدن موجهاي در سطح آب ميشد .بعد از معرفي DirectX 8.0 نسخه هاي گوناگوني از سايه زنها معرفي شدند . بنابراين در آن زمان شركت NVIDIA در محصولات خود از سايه زنهاي نسخه 2 استفاده كرد در حاليكه شركت ATI هسته هاي گرافيكي خود را ارتقاء داد و از سايه زن پيكسل نسخه 2.1 پشتيباني كرد . با معرفي GeForce 6 و پشتيباني از DirectX 9.0c كارتهاي گرافيكي مبتني بر اين سري از سايه زنهاي پيكسل نسخه 3.0 پشتيباني كردند . اين قابليت جديد در بازيهاي نظير Splinter Cell 3.0 – Chaos Theory كاملا به چشم ميايد . در اين بازي براحتي اختلاف تصاوير نمايش داده شده بين يك كارت گرافيكي مبتني بر سايه زن پيكسل نسخه 2.0 و نسخه 3.0 را مشاهده خواهيد كرد .

نمایی از بازی FarCry
جديدترين چيپهاي گرافيكي دو شركت ATI و NVIDIA اكنون كارايي سه بعدي مناسبي را فراهم ميكنند و اجازه ميدهند تا كاربران از كيفيت تصاوير فوق العاده ايجاد شده توسط آنها لذت ببرند . سري Radeon X1×00 و GeForce 7 اكنون از سايه زنهاي پيكسل نسخه 3 كه اساس نسل جديد كارتهاي گرافيكي ميباشد پشتيباني ميكنند . در حال حاضر ويژگيهاي نظير HDR و Parallax Mapping در بازي هاي سه بعدي تصاوير حقيقي تري را ايجاد ميكنند . پيشرفتهاي آشكار در سايه زنهاي جديد سبب ايجاد نور ، سايه ، بازتاب نور و منعكس كردن آن به شكل واقعي تري شده است.
در ادامه به معرفی و مقايسه ای تکنولوژی به کار رفته در نسل جدید کارت های گرافیک با نسل قبلی آنها می پردازیم.
امروزه اختلاف بين سايه زنها را ميتوان بوسيله شماره نسخه آنها از يكديگر تشخيص داد . همه نسخه هاي سايه زنهاي پيكسل پايين تر از سايه زن پيكسل نسخه 3.0 قادر به نمايش اثرات گرافيكي نظير HDR ، Parallax Mapping و شفافيت سطوح آب نميباشند . چيپهاي گرافيكي كه از سايه زنهاي نسخه 3.0 پشتيباني ميكنند سري Radeon X1000 از شركت ATI و سري GeForce 6 و GeForce 7 از شركت NVIDIA ميباشد . آشكارترين تفاوت بين DirectX 8.0 و DirectX 9.0 كه روي كيفيت تصاوير گرافيكي تاثير بسزايي ميگذارد افزايش روشنايي منابع نوري و بهبود اثرات سه بعدي در سنگها و آجركاريها ميباشد.
سايه زنهاي پيكسل نسخه 3.0 سطوح آب را حقيقي تر ترسيم ميكنند . امواج جزئيات بيشتري دارند و بازتاب سايه ها طبيعي تر است . بعنوان مثال با اين نسخه از سايه زن زمانيكه بازي Age Of Empires 3 در تنظيمات Very High اجرا ميشود آبها كاملا شفاف نمايش داده ميشوند . در تنظيم High (استفاده از سايه زنهاي پيكسل نسخه 2.0 يا 2.1) اين اثرات كمتر آشكارند . البته بازي نظير Black and White 2 كه براي كارتهاي گرافيكي مبتني بر هسته ATI بهينه سازي شده است توسط سايه زن پيكسل نسخه 2.1 نيز سطوح آب را شفاف نمايش ميدهد .

با سايه زن پيكسل نسخه 2.0 دريا فاقد شفافيت ، موجها و بازتابهاي طبيعي ميباشد .

با سايه زن پيكسل نسخه 3.0 كف ها و حبابهاي ناشي از كوبيده شدن موجها به كنار دريا نمايش داده شده و همچنين دريا شفاف تر است . بازي Black & White براي كارتهاي گرافيكي مبتني بر هسته ATI بهينه شده بطوريكه افكتها با سايه زن پيكسل نسخه 2.1 نيز قابل مشاهده است.
HDR یا High Dynamic Range تكنولوژي جديدي كه در حال حاضر تعداد اندكي از بازيهاي از آن استفاده كرده اند. براي آشنايي با اين تكنولوژي ابتدا لازم است شما با مفهوم Daynamic Range آشنا شويد.Dynamic Range نسبت بين بخش روشن و تاريك يك عكس است . وقتي در شب به ماه نگاه ميكنيد بنظر درخشان ميآيد زيرا هيچ چيز ديگري در اطرافش نيست كه بدرخشد . علاوه بر ماه اطرافش هم كمي درخشان است كه به اين بخش از اطراف درخشان ماه Dynamic Range ميگويند . HDR به كارت گرافيك كمك ميكند تا تصاويري با Dynamic Range بالاتر ايجاد كند كه چشم شما قادر به مشاهده اش باشد . اين استاندارد در حال حاضر در بازيهاي FarCry ، Chaos Theory - Splinter Cell و Seriuos Sam 2 استفاده شده است و پيش بيني ميشود در آينده بازيهاي بيشتر از اين تكنولوژي استفاده كنند. بنابراين ميتوان نتيجه گرفت كه HDR بهترين نورپردازي را در بازيها ايجاد ميكند .

اگر سيستم شما داراي كارت گرافيكي مبتني بر سري GeForce 6 ، GeForce 7 و يا Radeon X1000 باشد در بازي Splinter Cell در منوي گرافيكي بخشي براي تنظيمات سايه زن پيكسل نسخه 3.0 باز خواهد شد كه شما در آن ميتوانيد اثراتي نظير HDR Rendering و Parallax Mapping را فعال كنيد.

HDR Rendering منابع نوري روشن تر و بازتابهاي قدرتمندتري از ديوارها را نمايش ميدهد.

بدون HDR Rendering محيط بازي Serius Sam 2 روشن و درخشان است ، ابرها مبهم هستند و بدرستي ديده نميشوند ، ماه تقريبا مات و غير شفاف است.

با سايه زن پيكسل نسخه 3.0 HDR Rendering ميتواند فعال شود . نور احاطه كننده محيط تا حدي كنترل شده ، ابرها و ماه كاملا واضح است و براحتي قابل شناسايي ميباشند .
در حقيقت ميتوان گفت Parallax Mapping جايگزين Bump Mapping شده است كه وظيفه شكل پذيري شكاف ها ، ترك ها و شيارهاي روي ديوارهاي سنگي را بر عهده دارد . تاثير اين ابتكار جديدتر در ساختن بافتها فوق العاده متفاوت تر از تاثير Bump Mapping در ساختن بافتها ميباشد . در اين روش جديد شيارهاي روي ديوارها و آجركاري ها فوق العاده طبيعي تر بنظر ميرسد . از Parallax Mapping در بازي هاي نظير F.A.E.R و Splinter Cell 3.0 – Chaos Theory استفاده شده است.

در GeForce 2 كيفيت تصاوير گرافيكي پايين است و اين بدان معني است كه تصاوير جزئيات اطراف يك صحنه از كيفيت مناسبي برخوردار نميشوند . اثرات سايه زنها اصلا آشكار نيست و بافتها بصورت Bilinear فيلترگذاري ميشوند .
بنا بر این Paralaax Mapping ویژگی است که با استفاده از آن اثراتی که بازکن بر محیط اطراف خصوصا دیوار ها و سطوح موجود در بازی ایجاد میکند را به بهترین نحو نمایان می سازد تا تجربه یک بازی را به واقعیت نزدیک تر کند. در تصویر زیر نمونه کاملی از اثر این ویژگی بر بافت یک نمون دیوار آجری را مشاهده می کنید:

اثر Paralaax Mapping بر واقع گرایی نمایش شیار های یک دیوار آجری.
بازي F.A.E.R يك مثال خوب براي عملكردهاي جديدي است كه در بازيهاي سه بعدي بكار گرفته شده است . چيپهاي گرافيكي جديدتر كيفيت تصاوير بهتري را در اينگونه بازيها از خود به نمايش ميگذارند . اگر بازي هاي نظير F.A.E.R و Splinter Cell 3.0 را اجرا ميكنيد و كيفيت تصاوير گرافيكي مناسبي نداريد و تصاوير فاقد جزئيات لازم ميباشد دليل آن ضعيف بودن كارت گرافيكي شماست كه فاقد خصوصيات سه بعدي ارائه شده در بالا است . از قابليتهاي نظير HDR و Parallax Mapping كارتهاي گرافيكي پشتيباني ميكنند كه حداكثر از سايه زنهاي پيكسل نسخه 3.0 استفاده كنند.
در اینجا به مقایسه تفاوت های نسل های مختل از تراشه های گرافیکی به صورت عملی در بازی F.E.A.R خواهیم پرداخت :

در GeForce 2 كيفيت تصاوير گرافيكي پايين است و اين بدان معني است كه تصاوير جزئيات اطراف يك صحنه از كيفيت مناسبي برخوردار نميشوند . اثرات سايه زنها اصلا آشكار نيست و بافتها بصورت Bilinear فيلترگذاري ميشوند .

GeForce 3 ، GeForce 4 و Radeon 9800 : باز هم بافتها بصورت Bilinear فيلترگذاري ميشوند و رويهم رفته تصاوير كيفيت مناسبي ندارند . شيارهاي بين آجرهاي ديوارها عمق حقيقي تري دارند . بهرحال سايه ها هنوز ناپيدا هستند .

GeForce 5 و Radeon X800 : سايه ها و روشنايي ها نمايش داده ميشوند . در اين تصوير همانطور كه مشاهده ميكنيد اثرات روشنايي همانند نور آتش ديوارها را قرمز كرده است . حداكثر در اين نقطه سايه زن پيكسل نسخه 2 براي اثرات گرافيكي نمايش داده شده كافي هستند . اگر نرخ فريم ها خيلي پايين است سايه ها را غير فعال كنيد .

GeForce 6 ، GeForce 7 و Radeon X1×00 : آجركاري و سنگهاي روي ديوارها بنظر حقيقي ميرسند . Parallax Mapping بكار گرفته شده در سايه زن پيكسل نسخه 3 شيارها و گودال هاي با عمق خيلي بزرگتر از Bump Mapping متعارف (بكار گرفته شده در سايه زن پيكسل نسخه 2) نمايش ميدهد . در مجموع نور توليد شده توسط آتش روي ديوارها طبيعي تر از قبل بنظر ميرسد .
DirectX 10 و اهمیت آن در صنعت کامپیوتر های شخصی می 9, 2008
Posted by Behzad in مقالات.add a comment
توضیح : در این مصاحبه پرسش ها توسط BD (کوتاه شده عبارت Boot Daily) و پاسخ ها با نام Chris (مدیر بخش گسترش و بازاریابی مایکروسافت) مشخص شده اند. همچنین منظور از DX10 در این مصاحبه DirectX 10 می باشد.BD : لطفا اهمیت DX10 برای دوست داران بازی ها را در یک جمله توضیح دهید.
Chris : ما در مایکروسافت DirectX 10 را به عنوان بلند ترین جهش در کیفیت و کارایی گرافیک در صنعت کامپیوتر های شخصی از زمان پیدایش DirectX که به زمان ویندوز 95، و تحولی در زمینه بازی های کامپیوتری و تکنولوژی مربوط به آن می دانیم.
BD : و اهمیت آن برای کاربران عادی؟
Chris : بله، DirectX 10 بالاترین کیفیت و کارایی گرافیکی را در پلاتفرم ویندوز را به همراه خواهد داشت که نتیجه آن تجربه ای باورنکردنی و دور از ذهن برای کاربران عادی خواهد بود.
BD : این یک حقیقت است که تعداد زیادی از بازی های معروف و پرطرفدار درحال حاظر بر پایه موتور گرافیکی Doom3 که از OpenGL بهره می گیرد ساخته می شوند. به نظر شما DX10 چه مزیت هایی نسبت به OpenGL برای تولید کنندگان بازی های کامپیوتری به ارمغان می آورد؟
Chris : همانطور که می دانید، ما DirectX 10 را برای ویندوز ویستا و با هدف ارایه دادن یک تجربه باورنکردنی از جزئیات گرافیکی به کاربران و بازیکنان ، تماما از پایه و از صفر ساخته ایم. این نسخه از DirectX نسب به نسخه های قبلی دارای بازده به مراتب بیشتر و در عین حال با ضریب اطمینان و پایداری بیشتر خواهد بود. DirectX 10 به لطف Shader Model 4.0 به طور فوق العاده ای کیفیت و جزئیات باورنکردنی را در اختیار توسعه دهندگان و نهایتا کاربران خواهد گذاشت که از آن جمله توانایی بکارگیری محیط های پیچیده گرافیکی و ترسیم چهره ها به صورت بسیار طبیعی و توانایی نمایش تعداد دلخواه از آیتم ها در صحنه می باشد.
اشاره کردید که بازی های معروف و پرطرفدار بر اساس موتور گرافیکی Doom3 و OpenGL ساخته می شوند، اما به عقیده من تعداد بازی هایی که از DirectX استفاده می کنند به مراتب بیشتر و حتی زیبا تر هستند. بازی هایی زیادی هستند که بر اساس موتور های گرافیکی Unreal و Source و با استفاده از DirectX ساخته می شوند. حتی ID (منظور شرکت ID Software سازنده سری بازی های Doom و Quake است-م) نیز برای منطبق ساختن بازی های خود با کنسول های Xbox و Xbox360 آنها را به DirectX تبدیل می کند.BD : چرا این نسخه از DX10 تنها قابل استفاده در ویندوز ویستا است؟ آیا این نوعی اجبار کاربران برای خرید و ارتقا به ویندوز ویستا نیست؟
DirectX 10 : Chris نیاز به امکانات مشخصی جهت بهره گیری کامل از سخت افزار گرافیکی سیستم دارد که این امکانات و خصیصه ها تنها در سیستم عامل ویندوز ویستا موجود است. ما یک هدف بزرگ را برای دراختیار گذاشتن تجربه گرافیکی جدید به کاربران در نظر گرفته ایم و همانطور که قبلا گفتم، DirectX 10 کاملا از پایه و بدون استفاده از نسخه های قبلی این واسط گرافیکی ساخته شده است و بنابر این هیچگونه سازگاری با نسخه های قبلی از سیستم عامل ویندوز ندارد.

نمای از بازی Crysis بر پایه DirectX 10
DirectX 10 برپایه مدل جدید درایور تصویر ویندوز ویستا (Windows Vista Display Driver Model یا WDDM) که معرف عصر جدیدی در قابلیت های گرافیکی و افزایش پایداری و ضریب اطمینان درنظر گرفته شده، طراحی شده است. در عین حال ما با انجام تغییراتی در معماری مدل درایور ها سعی در آسان سازی و افزایش پایداری و همچنین سازگاری بیشتر تراشه های گرافیکی با مجموعه دستورات هوش مصنوعی و محاسبات فیزیکی (جدا از تراشه های محاسب فیزیکی) انجام داده ایم که مجموعه این دلایل برای ارایه نشدن این نسخه از DirectX جهت سیستم عامل های قبلی مایکروسافت از جمله ویندوز XP متقاعد کننده به نظر می رسد.
BD : به غیر از رشته های کوتاه تر (Shorter Program Strings)، مزیت اصلی Shader Model 4.0 نسبت به نسخه 3.0 آن برای توسعه دهندگان بازی های کامپیوتری چست؟
Shader Model 4.0 : Chris به توسعه دهندکان اینگونه نرم افزار ها اجازه انجام محاسبات پیچیده بیشتری را در تراشه های گرافیکی (GPU) می دهد. این عمل ضمن کاهش بار پردازش از پردازنده سیستم را که باعث عدم بهره گیری از قدرت کامل تراشه گرافیکی می شود، اجازه انجام محاسبات سنگین مربوط به هوش مصنوعی و نیز افزایش تعداد آیتم ها را در صحنه در اختیار توسعه دهندگان قرار خواهد داد.
در عین حال DirectX 10 به همراه Shader Model 4.0 به لطف پشتیبانی از سایه زن های متحد (Unifyed Shaders) انعطاف پذیری و خلاقیت بسیار بیشتری را در اینگونه توسعه دهندگان قرار خواهد داد.
BD : شرکت های ATI و nVIDIA هردو درحال طراحی و ساخت تراشه های گرافیکی سازگار با DX10 هستند. به نظر شما این تراشه های گرافیکی در مقایسه با کنسول های بازی Xbox 360 و PS3 چگونه عمل خواهد کرد؟
Chris : این موضوع و تلااش این دو شرکت در مورد DirectX 10 بسیار هیجان انگیز است. اما بهتر است این سوال را از خود آنها بپرسید!
BD : به غیر از برتری های DX10 در مورد بازی های کامپیوتری، این نسخه چه نقشی را در برنامه های کاربردی آینده بازی خواهد نمود؟
Chriss : کلا DirectX فراتر از صرفا یک واسط و مجموعه دستورها برای بازی های کامپیوتری است. در گذشته نیز بسیاری از برنامه های کاربردی از CAD/CAM و 3DStudio گرفته تا برنامه های پزشکی و تصویر برداری نیز از مزایای DirectX بهره گرفته اند. با این حال DirectX 10 باز هم نسبت به نسخه های قبلی قطعا امکانات بسیار مناسب تری را در اختیار اینگونه برنامه ها خواهد گذاشت. به یک نکته دقت کنید! ویندوز ویستا از DirectX 10 به عنوان یک مولفه گرافیکی استفاده می کند - پس ویندوز ویستا هم خود یک برنامه کاربردی استفاده کننده از DirectX 10 محسوب می شود!
BD : نحوه تعامل DX10 با کاربرانی که از سخت افزار DX10 استفاده نمی کنند چگونه خواهد بود؟
DirectX 10 : Chriss و ویندوز ویستا کاملا با تمامی برنامه ها و بازی های منطبق با نسخه های قدیمی تر DirectX سازگار هستند. کسانی که در زمان انتشار ویندوز ویستا، سخت افزار منطبق بر DirectX 10 را در اختیار ندارند و یا تهیه نکرده اند، هنوز هم قابلیت اجرای بازی ها و برنامه های برپایه DirectX 10 را خواهند داشت. DirecrX 9 هم در ویندوز ویستا برای این گروه از کاربران در نظر گرفته شده است. با این حال جالب است بدانید کاربرانی که با استفاده از سخت افزار منطبق بر DirectX 10 بازی های DirectX 9 را اجرا کنند شاهد افزایش کیفیت و بازده آن خواهند بود!
درعین حال توسعه دهندگان نیز می توانند با خیالی آسوده به تولید بازی ها و نرم افزار های بر اساس DirectX 9 برای ویندوز ویستا بپردازند.
با این حال، تمامی برنامه هایی که از واسط گرافیکی OpenGL استفاده می کنند قابلیت اجرا در ویندوز ویستا را به شرط پشتیبانی درایور گرافیک و استفاده از وصله (Patch) مناسب، خواهند داشت. به همین خاطر سازندگان و فروشندگان قطعات سخت افزاری ملزم به ارایه ICD یا Installable Client Drivers که امکان استفاده از شتابدهنده گرافیکی را برای پردازش دستورات OpenGL را خواهد داد، هستند.
BD : آیا به نظر شما DX10 نهایت گرافیک در کامپیوتر خواهد بود؟ یعنی با فرض در اختیار داشتن سخت افزار مناسب آیا شاهد تصاویر منطبق بر واقعیت با سرعت نمایش مناسب خواهیم بود؟
Chris : ما به DirectX 10 به عنوان گام بلندی در زمینه گرافیک کامپیوتری می نگریم. مطمنا این نسخه از DirectX تجربه جدید را در اختیار کاربران خواهد گذاشت و با اجازه دادن به توسعه دهندگان برای آشنایی با قابلیت های DirectX 10 این تجارب بهتر و بهتر نیز خواهند شد. اما ما همچنین عقیده داریم که هنوز هم موارد زیادی در این مورد قابل دستیابی هستند و بدست آوردن آنها نیز به زمان بیشتری نیاز دارد. گرافیک در ویندوز و DirectX 10 هنوز هم در راه توسعه و تکامل هستند.
BD : آیا شما در این لحظه در مورد تراشه های DirectX 10 شرکت های ATI و nVIDIA نظری دارید؟ کدام یک را برای خود انتخاب می کنید؟
Chris : نه! ما بدون همکاران خود در جای فعلی قرار نداشتیم! مایکروسافت با تمامی شرکت های فعال در زمینه گرافیک کامپیوتری همکاری نزدیک و دوستانه ای داشته و دارد. هردوی آنها همکاری های بسیاری در توسعه پلاتفرم ویندوز تا کنون با ما داشته اند. دیدن محصولات آنها برای ویندوز ویستا در فروشگاه های سخت افزاری برای ما جالب خواهد بود.
BD : در مورد پیشرفت های صدا در DX10 نیز توضیح دهید. آیا ما میتوانیم با این نسخه صداها را “ببینیم” !؟
Chris : این نسخه از DirectX کماکان روال گذشته را در مورد چگونگی و نحوه تولید صدا ها ( بر پایه XACT cross-platform audio creation tool) را ادامه می دهد. بنابر این برتری عمده ای نسبت به نسخه های قبلی در این نسخه قابل ذکر نیست اما پیشرفت هایی انجام شده است.
BD : ویندوز ویستا چگونه برای اجرای یک بازی یا برنامه با استفاده از DX10 و یا DX9 را با توجه به نوع GPU تصمیم گیری می کند؟
Chris : وقتی روند اجرای یک بازی آغاز می شود، ویندوز ویستا با تشخیص نسخه DirectX به کار رفته در بازی و سخت افزار سیستم، گزینه مناسب را انتخاب خواهد کرد.
BD : گفته می شود که DirectX10 از Geometry Shaders (سایه زن هندسی) استفاده می کند. این قابلیت تا چه حد به روند انجام و تشکیل اشکال هندسی کمک خواهد کرد؟
Geometry Shader : Chris دقیقا در بین سایه زن های پیکسل و راس (Vertex and Pixel) در خط لوله پردازش قرار دارد. می تواند از رئوس و مثلث های ایجاد شده در ترسیم اشکال بعدی، بدون نیاز به پردازش مجدد، استفاده کند. سایه زن هندسی کارهای دیگری نیز انجام میدهد : تقویت تعداد مثلث ها با انتخاب یک یا چند مثلث از قبل پردازش شده و تکرار آنها بدون نیاز به پردازش مجدد، و یا تشکیل مثلث های جدید با ترکیب مثلث های دردسترس، تولید نقطه ها و خط های جدید و یا با استفاده از مثلث های ازقبل پردازش شده، و یا تولید پیکسل های پخش شده (جدا جدا).
انتخاب یک نقطه، تولید یک سری مثلث در اطراف آن و گسترش آن تا تشکیل یک تصویر قابل درک (Sprite) و یا تجزیه یک مثلث به تعداد کوچکتری مثلث و گسترش آن. بیرون انداختن یک راس از مثلث از مجموع مثلث ها و تبدیل آن به یک حجم یا یک چهار ضلعی.
بهترین نقطه در DirectX ترکیب تمامی انواع Shader Model ها در Shader Model 4.0 است که به توسعه دهندگان اجازه خواهد داد انواع Vertex، Pixel و Geometry Shaders ها را در یک مدل بیافرینند.
BD : در مورد محاسبات فیزیک (کنش ها و واکنش های محیط در مقابل تعییرات) چطور؟
Chris : ویندوز ویستا از تمامی انواع محاسبات فیزیکی چه به وسیله پردازنده، تراشه گرافیکی یا پردازنده فیزیک جداگانه پشتیبانی خواهد نمود. با اتکا بر DirectX 10 ویندوز ویستا پلاتفرم قدرتمندی برای انجام محاسبات فیزیکی توسط GPU خواهد بود. پشتیبانی از ویژگی چند تراشه گرافیکی SLI و یا CrossFire و توانایی تقسیم وظایف پردازش تصویر و یا محاسبات فیزیکی بین تراشه های گرافیکی موجود در سیستم از جمله امتیازات سیستم عامل ویستا و DirectX 10 می باشد.
BD : با این وجود پشتیبانی از کارت پردازش فیزیک Ageia به عهده ویندوز ویستا خواهد بود؟ و یا ATI و nVIDIA؟
Chris : واضح است که ساده ترین روش پردازش فیزیک، بهره گیری از پردازنده اصلی سیستم است. در ویندوز ویستا تامین درایور های لازم و پشتیبانی تراشه های پردازش فیزیک (مانند Agiea) بر عهده خود سازندگان آنها خواهد بود.
BD : آیا تیم توسعه و بازار یابی شما اقدامی در جهت موجود بودن محتوای مناسبی مانند بازی های کامیوتری، نرم افزار های سازگار و مختص به ویندوز VISTA در هنگام انتشار آن انجام داده است؟
Chris : بله! در زمان انتشار ما پشتیبانی کاملی از تمام نسخه های موجود بازی ها و نرم افزار ها را در ویندوز ویستا شاهد خواهیم بود. در عین حال علاوه بر 10 عنوانی که قبلا برای انتشار همزمان با ویندوز ویستا اعلام شده بود، عناوین مهم و جذاب دیگری نیز برای انتشار همزمان با ویندوز ویستا پیش بینی کرده ایم. مطمنا این عنواین در همان روزهای اول پیشرفت فوق العاده در نسل بعدی بازی های کامپبوتری و امکانات باورنکردنی ویندوز ویستا و DirectX 10 را به نمایش خواهند گذاشت. ضمنا تعداد تعداد زیادی از عنواین فعلی نیز برای ویندوز ویستا و پشتیبانی آن از پردازنده های چند هسته ای بهینه سازی شده اند.

از عناوینی که در هنگام انتشار ویستا برای خرید موجود خواهد بود :
“Alan Wake (Microsoft Game Studios)
“Age of Conan: Hyborian Adventures” (Eidos)
“Company of Heroes” (THQ)
“Crysis” (EA-Partners)
“Flight Simulator X” (Microsoft Game Studios)
“Halo 2 for Windows Vista” (Microsoft Game Studios)
“Hellgate: London” (Namco)
“LEGO Star Wars II: The Original Trilogy” (LucasArts)
“Shadowrun” (Microsoft Game Studios)
“Zoo Tycoon 2: Marine Mania” (Microsoft Game Studios)
BD : از اینکه به سوالات ما و تعداد زیادی از کاربران و دوستداران بازی های کامپیوتری پاسخ دادید متشکرم. به امید موفقیت هرچه بیشتر شما. ما مشتاقانه منتظر عرضه ویندوز ویستا و بازی های جذاب DirectX 10 و سخت افزار های ارایه شده توسط nVIDIA و ATI خواهیم بود.
اگر این گفتگو را مناسب و آموزنده می دانید، لطفا سایر دوستانتان را نیز برای خواندن این گفتگو دعوت کنید.
ناگفته هاي DirectX10 از ديدگاه سخت افزاري می 9, 2008
Posted by Behzad in مقالات.add a comment
DirectX10 وWindows Graphic Foundation 2.0 اسامي هستند كه ميتوانند انقلاب جديدي را در گرافيك هاي سه بعدي و بازي هاي پيشرفته كامپيوتري نويد دهند. هنگام عرضه Windows Vista در ابتداي سال جاري ميلادي ما شاهد حضور API جديد شركت Microsoft يعني DirectX 10 بوديم كه استانداردهاي موجود براي پردازش سه بعدي و تجربه چند رسانه اي كاربران را به سطح جديدي ارتقأ داده است.هرچند زمان زيادي از معرفي DirectX 10 مي گذرد، اما ناگفته هاي زيادي در رابطه با اين API بنيادي وجود دارد كه در اين مقاله به بررسي آنها پرداخته شده است.

API يا واسط نرم افزاري DirectX از مجموعه اي از اينترفيس ها تشكيل شده است كه مشخص ميكنند توسعه دهندگان بازي ها و نرم افزارهاي مختلف چگونه بايد با سخت افزار به صحبت بپردازند. نوشتن يك برنامه براي يك API استاندارد بسيار ساده تر از نوشتن و بهينه سازي همان برنامه براي اجرا بر روي سخت افزارهاي خاص است. به منظور هرچه يكپارچه تر كردن سخت افزار و نرم افزار، مايكروسافت يك بازنگري كلي را بر روي DirectX اعمال كرده است. از آنجايي كه اين API در طول زمان حياط Windows Vista به عنوان پايه و اساس توسعه و اجراي هر نرم افزار و يا سخت افزار جديدي مورد استفاده قرار خواهد گرفت، Microsoft سعي كرده است با ارايه برخي از مشخصات پيشرو و كاملا جديد و علاوه بر آن ساده سازي اين API به برنامه نويسان امكان دهد تا با سرعت و سهولت بتوانند با دريافت حداكثر كارايي از سخت افزارهاي PC ،نرم افزارها و بازي هايي با كيفيت و كارايي بالا را طراحي كنند.
Direct3D قسمتي از DirectX است كه مستقيما بر اجرا و عملكردهاي نرم افزارهاي سه بعدي نظارت دارد. در حقيقت مهمترين بخش DirectX ، Direct3D است. بزرگترين تحولات صورت گرفته در DirectX10 نيز مستقيما به Direct3D مربوط مي شود. Direct3D10 با يكپارچه كردن دستورالعمل ها و استاندارد نمودن مشخصات سايه زن هاي قابل برنامه نويسي، برنامه نويسان را از شر سايه زن هايي كه هر سازنده به صورت اختصاصي طراحي و روانه بازار ميكرد رها ميسازد. بعلاوه مايكروسافت در مدل درايورهاي مربوط به كارت هاي گرافيك و نمايشگرها نيز تجديد نظر كرده است.
به اين خاطر كه در Windows Vista تمام دسك تاپ به صورت سه بعدي به نمايش در مي آيد، كارت گرافيك ديگر تنها براي بازي كردن مورد استفاده قرار نمي گيرد. هنگامي كه شما يك صفحه نمايش سه بعدي داريد و هر برنامه را در صفحه سه بعدي مربوط به خودش اجرا مي كنيد، درايورها كارت گرافيك بايد به اندازه كافي با ثبات و انعطاف پذير باشد تا بتواند نقش پردازنده گرافيكي را افزايش دهد. به همين منظور مايكروسافت تصميم گرفته است تا درايورها را به دو بخش مجزا تقسيم نمايد. يك بخش براي اجراي دسك تاپ و بخش ديگر براي اجراي نرم افزارها و بازي هاي سه بعدي. اين تقسيم بندي براي افزايش ثبات زير سيستم گرافيكي طراحي شده است و به سيستم عامل امكان ميدهد حتي در صورتي كه يك برنامه كاربردي و يا بازي سه بعدي به علت خطاهاي نرم افزاري و يا سخت افزاري متوقف ميشود، همچنان و با وجود يك دسك تاپ كاملا سه بعدي قابل استفاده و با ثبات باقي بماند. وجود چنين نوآوري هايي همچنين به اين معني است كه مايكروسافت DirectX10 را براي Windows XP ارايه نخواهد كرد، به خاطر اينكه بسياري از پيشرفت هاي صورت گرفته در Direct3D10 مستقيما به مشخصات مدل جديد درايور كارت گرافيك Windows Vista نياز خواهد داشت.
استفاده وسيع تر از توانايي هاي كارت گرافيكي براي اجراي كاربردهاي مختلف، نياز به اختصاص منابع سيستمي بيشتر از سوي سيستم عامل به آن را دارد. سيستم عامل بايد به كاربردها امكان دهد تا بتوانند سخت افزار را به نحو موثرتري به اشتراك بگذارند. بزرگترين تغيير در اين زمينه در Windows Vista تكنولوژيي است كه با نام Virtualized Memory و يا حافظه مجازي شناخته مي شود. از اين پس كارت گرافيك فضاي حافظه اختصاصي خود را در حافظه سيستم خواهد داشت. اين حافظه اختصاصي ميتواند براي ذخيره داده هايي كه داراي اندازه بزرگتر از حافظه محلي كارت گرافيك هستند مورد استفاده قرار گيرد. هم اكنون كارت هاي گرافيكي گران قيمت و سطح بالا معمولا با حافظه هايي به ميزان 256 يا 512 مگابايت عرضه ميشوند. اما بازي ها ميتوانند به سادگي تمامي حافظه موجود را براي ذخيره قطعات بسيار بزرگ داده، مانند بافت هاي با وضوح بسيار بالا، مورد استفاده قرار دهند.

تصویری ساخته شده توسط Unreal Engine 3 برپایه DirectX 10
مدير عامل شركت Epic Games كه به تازگي موتور بسيار قدرتمند Unreal Engine 3.0 را معرفي كرده و در حال توسعه عناوين معروفي چون UT2007 و Gears Of War ميباشد، در اين باره ميگويد:
«تكنولوژي هايي مانند بافت گذاري مجازي (Virtual Texturing) ميتواند گلوگاه هاي مرتبط با اندازه بافت ها را در حافظه هاي گرافيكي بر طرف نمايد. اندازه بافت هايي را كه ما در DirectX9.0 ميتوانستيم با حفظ كارايي كامل استفاده كنيم به وسيله حجم حافظه محلي كارت گرافيكي محدود شده بود، اما در DirectX10 حجم آنها تنها توسط اندازه حافظه سيستم محدود خواهد شد. او توضيح ميدهد كه با در اختيار داشتن چنين امكاناتي، سطح استفاده از بافت ها در بازي ها و نرم افزارهاي سه بعدي بين 2 تا 4 برابر افزايش خواهد يافت كه اين براي كساني كه از موتور Unreal Engine 3.0 براي توسعه بازي هاي خود استفاده ميكنند بسيار عالي است. هرجا كه طراح بخواهد ميتواند از بافت هايي با كيفيت و وضوح بالا، براي مثال در وضوح 2048×2048 پيكسل، استفاده كند و سپس آنها را براي اجرا بر روي سيستم هاي با قدرت پايين تر به اندازه هاي كوچكتري مقياس دهي كند.»
كارت هاي گرافيكي براي تطابق با استدانداردهاي DirectX 10 و افزايش كارايي نياز به رعايت نكات دقيقي دارند. كارت هاي گرافيك بايد داراي مجموعه كاملي از مشخصات باشند تا بتوانند تاييديه هاي DirectX 10 را بدست آورند. البته اين استاندارها به طور كامل با آنچه كه در نسل فعلي كارت هاي گرافيكي شاهد ان هستيم متفاوت نخواهند بود. براي مثال كارت هايي كه از DirectX 9.0c و يا سايه زن هاي نسخه 2 پشتيباني كنند ميتوانند از بسياري از توابع موجود در DirectX 10 نيز پشتيباني كنند. اما Microsoft مشخصه هاي كاملا دقيقي را اعلام كرده است تا سازندگان مختلف پردازنده هاي گرافيكي مجبور به ساخت سخت افزارهاي سازگار با يكديگر شوند. براي مثال تفاوت هاي موجود در واحد هاي مميز شناور پردازنده هاي گرافيكي مختلف شركت هاي ATI و nVIDIA توسعه دهندگان بازي را براي سازگار كردن موتور بازي با هر دو نوع پردازنده گرافيكي تحت فشار قرار ميداد، اما مشخصه هاي تعريف شده در DirectX 10 كمك بزرگي به حذف اينگونه ناسازگاري ها در سخت افزارهاي مختلف و در نتيجه كاهش هزينه و زمان توسعه نرم افزار براي كار با آنها خواهد كرد.
مايكروسافت مشخصه هاي لازم براي طراحي پردازنده هاي سازگار با Direct3D 10 را سريع اعلام كرد و تا سازندگان پردازنده هاي گرافيك بتوانند هرچه زودتر كارت هاي گرافيكي مطابق با آن را ارائه دهند. با توجه به نكات گفته شده توسعه دهندگان نرم افزار ديگر مجبور نخواهند بود تا هنگام عرضه هر پردازنده گرافيكي جديدي، محصولات خود را با آن منطبق كنند. طبق گفته هاي مايكروسافت تنها هنگام ارايه DirectX 11 آنها نياز به ايجاد تغييرات در نرم افزارهاي خود را خواهند داشت و تا پيش از آن هر نرم افزاري كه براي كار با DirectX 10 طراحي شده باشد ميتواند بدون اعمال هيچگونه تغييري از تمامي مشخصه هاي آن پشتيباني نمايد. البته شايد هرگز نتوان جلوي نوشتن كدهاي بهينه شده براي يك پردازنده گرافيكي خاص را گرفت و ممكن است همچنان شاهد مشخصه هاي اضافي عرضه شده از طرف شركتهاي مخلف سازنده سخت افزار باشيم كه توسعه دهندگان مختلف ممكن است تمايل به پشتيباني از آنها را داشته باشند. اما بي شك نسل آينده نرم افزارها و سخت افزارهاي سه بعدي بيش از پيش يكپارچه خواهند شد و رقابت آنها در ارائه ويژگي ها و قابليت هاي فراتر از ملزومات DirectX10 خواهد بود. طبق اظهارات Microsoft، DirectX10 ميتواند با مديريت هوشمندتر منابع، افزايش بازده API و انتقال بيشتر بار كاري از CPU به پردازنده گرافيك، كارايي را در بازي هاي مختلف از 6 تا 8 برابر افزايش دهد. البته اين امر اندكي اغراق آميز به نظر ميرسد اما مسلما شاهد افزايش زيادي در كارايي خواهيم بود. براي اين منظورDirectX 10 و معماري خط لوله هاي پردازشي در داخل پردازنده گرافيك براي به حداقل رساندن بار كاري بر روي CPU و زير سيستم حافظه، مجددا از ابتدا طراحي شده اند. مهمترين موضوعي كه در اين زمينه مد نظر طراحان قرار داشته است، افزيش كارهايي بوده كه پردازنده گرافيكي قادر است بدون نياز به گفتگو با CPU انجام دهد. به همين دليل هنگامي كه نياز به استفاده از CPU داشته باشيم، خواهيم توانست به شكلي بسيار سريع و موثر از آن استفاده كنيم.
در ادامه مواردي را كه سبب افزايش كارايي هنگام استفاده از DirectX 10 ميشود را ذكر ميكنيم:
• با استفاده از بافرهاي جديد براي مقادير، بازده عملياتي سايه زن ها هنگام ارسال و دريافت داده هاي مورد نياز مانند مكان نورها، مشخصات مواد و غيره، افزايش خواهد يافت. علاوه بر اين با حذف داده هاي زايد، حجم عظيمي از نقل انتقال هاي موجود بين API و درايور حذف خواهد گرديد. اين امر به ميزان قابل توجهي باعث كاهش فراخوان داده ها توسط API و از بين بردن بار اضافي بر روي پهناي باند حافظه شده و اجازه خواهد داد تا اعمالي كه قبلا نياز به گفتگو ميان API و درايور داشتند، در سطح درايور انجام شوند.
• با استفاده از آرايه هاي جديد بافت گذاري، پردازنده گرافيك خواهد توانست تا به طور شناور موارد استفاده از بافت را تغيير داده و بدون نياز به فراخواني و يا ذخيره، آن را مجددا مورد استفاده قرار دهد.
• با بررسي داده هاي مربوط به هر فريم، داده هاي نالازم بدون هيچ فعل و انفعالي با پردازنده حذف خواهد شد. تكنيك فوق از تكنيك هاي بررسي مختصات عمق به صورت سلسله مراتبي براي تشخيص و حذف اشيايي كه توسط اشيا ديگر پوشانده شده و قابل ديد نيستند استفاده مينمايد. اين تكنيك قبلا نيز در پردازنده هاي گرافيكي مختلف مورد استفاده قرار گرفته بود اما مهمترين تفاوت تكنيك فوق با تكنيك هاي قبلي، بررسي اطلاعات فريم قبلي براي يافت و حذف اين اشيا است كه نياز به محاسبات جداگانه براي هر فريم را از بين برده و سربار عمليات را تا حد زيادي كاهش ميدهد.
• Direct3D 10 داراي مشخصات منحصر به فردي است كه به كاربردها اجازه ميدهد آن را با توجه به نياز خود تنظيم و بهينه كرده و در نتيجه كارايي را در تمام شرايط در سطح بالايي نگه دارند.
• با پشتيباني از سايه زن هاي نسخه 4 (Shader Model 4.0)، پردازنده گرافيكي قادرخواهد بود تا تعداد بسيار بيشتري از دستورالعمل ها را در هر سيكل كلاك انجام دهد. علاوه بر اين با استفاده از تعداد زيادي دستور العمل جديد ميتوان كار بسيار بيشتري را از CPU به پردازنده گرافيكي منتقل كرد. در جدول زير ميتوانيد تفاوت هاي موجود ميان نسخه هاي قبلي سايه زن ها را با سايه زن هاي جديد نسخه 4 مشاهده كنيد:

جدول مقایسه Shader Model های نسخه 1 الی 4
Direct3D 10 يك مرحله سايه زن جديد را به خط لوله هاي گرافيكي اضافه كرده است. سايه زن هندسي (Geometric Shader) واحد جديدي است كه ميان سايه زن راس (Vertex Shader) و سايه زن پيكسل (Pixel Shader) واقع شده است. يك سايه زن راس سنتي تنها قادر به دريافت يك ورودي است و در نتيجه ميتواند تنها يك خروجي را ايجاد كند. توليد و يا حذف مثلث ها براي سايه زن راس غير ممكن است زيرا اين سايه زن هميشه مجبور به توليد خروجي در ازاي هر ورودي دريافت شده ميباشد. سايه زن هندسي به نرم افزار اجازه ميدهد تا به تمامي مختصات هندسي قبلي، خطوط، مثلث ها و نقاط در واحد هاي مجاور هم دسترسي داشته باشد. اين سايه زن قادر است تا تغييراتي را در قطعات پيشين اعمال كرده و مثلث ها و نقاط جديدي را قبل از ارسال اشياي مختلف صحنه به سايه زن پيكسل به آنها اضافه يا حذف نمايد.علاوه بر اين سايه زن هندسي قادر است تا نتايج محاسباتي را مستقيما به حافظه ارسال نموده و به آنها اجازه دهد تا در صورت نياز بدون دخالت CPU به جريان پردازش بازگردند. اين تغييرات اجازه خواهد داد تا جلوه هايي مانند ذرات، دود و يا انفجارها كه هميشه توسط CPU شبيه سازي ميشدند توسط پردازنده گرافيكي پردازش شوند. همچنين بازي ها ميتوانند از سايه زن هندسي در تركيب با آرايه بافت ها براي شتاب دهي افكت هايي مانند Cube Mapping استفاده كنند. بازي ها از Cube Mapping براي ايجاد انعكاس محيط اطراف بر روي يك شي استفاده ميكنند. مثلا انعكاس تصوير محيط آشپزخانه بر روي يك قوري شفاف را در نظر بگيريد، شما ميتوانيد با توجه به اجزا محيطي كه قوري داخل ان قرار دارد، تصوير انعكاسي مناسب را محاسبه كرده و سپس آن را بر روي قوري پياده سازي كنيد. انجام اين عمليات با استفاده از امكانات موجود حداقل به 6 عبور (Pass) نياز خواهد داشت، اما سايه زن هندسي ميتواند با پردازش نمودار گرافيكي، يك Cube Map را تنها در يك عبور پردازش نمايد.
در تصوير زير ميتوانيد شماتيكي از خط لوله گرافيكي DirextX 10 موسوم به Windows Graphics Foundation 2.0را مشاهده كنيد كه كليه پردازنده هاي گرافيكي سازگار با آن بايد از اين ساختار تبعيت كنند.

شماتیک Windows Graphic Fundation 2.0
تكنولوژي NISC، انقلاب بدون دستورالعمل. می 9, 2008
Posted by Behzad in مقالات.add a comment
![]()
در روشهاي طراحي مدرن اجزا تشكيل دهنده سيستم همانند جعبههاي سياهي درنظر گرفته ميشوند، طوري كه توصيف رفتار سيستم با اجزاي كمتري صورت گيرد و پيچيدگي سيستم در دل جعبههاي سياه نهفته گردد. با اين وجود هنوز مشخص نيست كه چه تعداد و چه نوعي از اين جعبههاي سياه در هر طراحي نياز است و كدام شيوه تركيب آنها جهت توصيف عملكرد سيستم، بهينه است.
مسلما، پردازنده و حافظه در زمره مهمترين بخشهاي اصلي تشكيل دهنده هر سيستم كامپيوتري به شمار ميروند كه به كمك آنها ميتوان عملكرد سيستم را توصيف كرده و تا پايان فاز طراحي به عنوان جعبههاي سياه طراحي به آنها نگريست. به واسطه حافظه ميتوان الگوريتم هر نوع برنامهاي را ذخيره كرده و به كمك پردازنده آنرا اجرا نمود. با اين وجود اين سوال همچنان مطرح است كه آيا اين دو بخش اصلي كافي بوده و ميتوانند تمامي نيازهاي ما را چه از نقطه نظر كارايي و چه از نقطه نظر محدوديتهاي طراحي پاسخگو باشند؟
در اين مقاله قصد داريم به اين سوال پاسخ داده و معماري كامپيوتر بدون دستور العمل را به عنوان جديدترين راه كار غلبه بر مشكلات ناشي از پيچيدگي بالاي فرايند طراحي سيستمهاي ديجيتال، معرفي نماييم.
تكنولوژي كامپيوتر بدون دستورالعمل يا NISC بي شك نقش كليدي در تحول فرآيند طراحي و سنتز مدارهاي ديجيتال خواهد داشت، اين تكنولوژي كه توسط محققين دانشگاه كاليفرنيا - ايرواين؛ در حال توسعه ميباشد با ايده حذف مجموعه دستورالعملها از معماري پردازنده، توانسته است تكنيك طراحي سيستماتيكي را به ارمغان آورد كه چه از نظر كارايي و چه از نظر مصرف توان و مساحت از تكنيكهاي طراحي متداول برتري دارد. پيش از اين طراحان به واسطه پيچيدگي بسيار زياد طراحي سيستمهاي ديجيتال ملزم به انتخاب روشهايي بودند كه يا فقط بهرهوري بالايي داشتند و كيفيت خوبي را ارائه نميكردند، يا فقط كيفيت خوبي داشتند و توانايي غلبه بر پيچيدگي روزافزون سيستمهاي ديجيتال را نداشتند. به طور كلي تكنولوژي NISC پاسخي است به اين مشكل كه در شكل 1 مقياس كاربرد آن ترسيم شده است.

شكل 1 مقياس پذيري تكنولوژي NISC
منظور از بهرهوري بالاي يك سبك طراحي، قابليتهاي آن در افزايش سطح سادهسازي (Abstraction Level) و كاهش زمان طراحي ميباشد، مانند راهكارهاي پيادهسازي نرمافزاري يك سيستم ديجيتال بر روي يك پردازنده عمومي، يا بر روي يك پردازنده خاص منظوره ASIP (Application Specific Instruction-set Processors). متاسفانه اين راهكارها به دليل ذات همه منظوره پردازندههايي كه از آنها بهره گرفته ميشود، كيفيت طراحي مناسبي از نقطه نظر كارايي، مصرف توان و مساحت ندارند. در مقابل اين راهكارها، راهكارهاي سختافزاري قرار دارند كه با سنتز كدهاي توصيف كننده طرح HLS (High Level Synthesis) از سطوح سادهسازي رفتاري يا سيستمي، ضمن درگير كردن طراح با پيچيدگيهاي طراحي، كيفيت خوبي را در نتيجه ارائه ميكنند، اما نميتوانند طراح را از پيچيدگيهاي طراحي سيستمي دور كنند. با وجود روند رو به رشد پيچيدگي سيستمهاي ديجيتال، ميزان بهرهوري راهكارهاي طراحي كاملا سختافزاري را به شدت كاهش داده است طوري كه به سختي ميتوان از آن در طراحي يك سيستم ديجيتال بزرگ استفاده كرد.
طي چند سال گذشته محققين مركز سيستمهاي كامپيوتري تعبيه شده (Embedded) دانشگاه كاليفرنيا - ايرواين؛ جهت مقابله با اين مشكلات راهكار جديدي ارائه كردهاند، به ايدههاي خلاقانه خود جامه عمل پوشانده و آنرا پياده سازي كردهاند تا به عنوان يكي از راهكارهاي انقلابي در طراحي و سنتز سيستمهاي ديجيتال از آن ياد شود.
اين تكنولوژي جديد كه اخيرا توسط محققين ايراني اين مركز، در كنفرانس اتوماسيون طراحي سال 2007 موسوم به DAC 2007 در شهر San Diego ، معرفي شد و حدود 100 نفر از خبرگان صنعتي و دانشگاهي مستقيما آن را مورد ستايش قرار دادند، شركتهاي توليدكننده ادوات نيمههادي و سيستم هاي ديجيتال مانند Qualcomm از تصميمي خود مبني بر استفاده از اين راهكار جديد در طراحي محصولات آينده خود خبر دادند و شركتهاي توسعهدهنده EDAهاي طراحي همانند Synopsys از علاقهمندي خود در توسعه هرچه بيشتر آن گفتند.
آقاي دكتر رشادي و خانم دكتر گرجيآرا دو عضو ارشد اين گروه زير نظر پروفسور Gajski، بي شك دو توسعهدهنده اصلي تكنولوژي NISC به شمار ميروند كه اين برگردان از نگاشتههاي ايشان به زبان فارسي، هرچند اندك، به سختي گوياي عظمت زحمات آنها ميباشد.
در فرآيند طراحي(System On Chip) ؛ SoCها اغلب سيستم كلي، به بخشهاي كوچكتري شكسته ميشود كه هر يك، برنامه يا عملكرد خاصي دارند، اين اجزا اغلب به صورت IP هاي سخت يا نرم توصيف كننده آن عملكرد خاص ميباشند كه يا توسط اشخاص ديگر توسعه داده شدهاند و در غالب قراردادهاي تجاري يا جنبش سختافزار آزاد، در طراحي از آنها بهره گرفته ميشوند يا IP هايي هستند كه قبلا طراحي شده و هم اكنون در سيستم جديد، مجددا مورد استفاده قرار ميگيرند. در فاز پياده سازي، هريك اين اجزا ميتوانند كاملا به صورت نرمافزاري پيادهسازي شده و بر روي يك پردازنده اجرا شوند يا كاملا به صورت سختافزاري توسط گيتهاي منطقي طراحي شوند يا تركيبي از نرمافزار و سختافزار اختصاصي، سيستم را تشكيل دهد.
الف) پياده سازي نرمافزاري:
پيادهسازي نرمافزاري اجزاي سيستم و اجراي آن بر روي يك پردازنده عمومي، فرايند بسيار سادهاي است كه ميتواند يك سيستم سختافزاري را توليد نمايد، با اين حال به دليل عمومي بودن پردازندهاي كه عملكرد سيستم را اجرا ميكند، اين پردازندهها از نقطه نظر كارايي، مصرف توان و مساحت، بهينه نيستند. جهت ارتباط و برنامه ريزي اين پردازندهها از يك مجموعه دستورالعمل ( ISA (Instruction Set Architecture بهره گرفته ميشود كه توسط كامپيايلر زبان برنامهنويسي كه اجزاي سيستم در آن نوشته شدهاند،دستورالعملهاي مطلوب توليد شده تا پردازنده عمومي، برنامه مطلوب را اجرا كند.كامپايلرهاي موجود زماني ميتوانند عملكرد مطلوبي در توليد دستورالعملها به همراه داشته باشند كه مانند كامپيوترهاي RISC مجموعه دستورالعملهاي ثابت، خيلي عمومي و بسيار سادهاي برايش تعريف شده باشد. به بيان ديگر افزايش پيچيدگي دستورالعملها و اختصاصي شدن عملكرد آنها، موجب افت كارايي كامپايلر خواهد شد طوري كه راندمان سيستمهاي مبتني بر راهكارهاي نرمافزاري خالص را به شدت محدود و وابسته به مجموعه دستورالعملها خواهد كرد.
ب) پياده سازي سختافزاري:
پيادهسازي سختافزاري اجزاي سيستم تنها با به كارگيري سلولهاي استاندارد كتابخانهاي ميتواند از نقطه نظر كارايي و توان مصرفي كارآمد باشد، با اين وجود انعطافپذيري اندكي در به كارگيري سلولهاي استاندارد و تركيب آنها در يك طراحي كاملا سختافزاري وجود دارد، همچنين اندازه برنامهاي كه آنها ميتوانند پياده سازي كنند، محدود به مساحت چيپ خواهد شد، در حالي كه در پيادهسازي نرمافزاري اجزاي سيستم، اين اندازه به ميزان حافظه برنامه محدود بود. به خاطر پيچيدگي بالايي كه در پيادهسازي سختافزاري هر يك از اين سلولهاي استاندارد به كار گرفته شده است، ابزارهاي سنتز سطح بالا (HLS) اغلب توانايي سنتز سيستمي با اجزاي پيچيده سختافزاري را ندارند. پيچيدگي بالا و هزينه پيادهسازي هر يك از اجزاي سيستم عموما كاربري SoCهايي كه به اين شيوه طراحي ميشوند را محدود ميكند.
پ) پياده سازي تركيبي:
راهكار بهتر براي پيادهسازي اجزاي سيستم يا يك IP، داشتن يك سختافزار اختصاصي براي هر بخش و اجراي نرمافزار توصيف كننده عملكرد بخش مذكور روي آن ميباشد. پردازندههاي خاص منظوره (ASIP) بر اساس اين ايده توسعه يافتهاند كه براي يك برنامه خاص، سختافزار اختصاصي فراهم گردد كه بتواند نرمافزار را به صورت كارآمدتري نسبت به پردازنده عمومي پردازش نمايد. جهت پياده سازي يك ASIP براي هر يك از اجزاي سيستم عموما مراحل زير پيموده ميشود.
- يافتن توابع كليدي برنامه كه شايستگيهاي لازم جهت افزايش كارايي آنها وجود دارد.
- طراحي Datapath كارآمد يا ارتقا نسخه موجود براي اجراي هرچه بهتر تابع مذكور.
- طراحي يك دستورالعمل جديد مختص به تابع و به طبع آن اعمال تغييرات لازم در كدگشاي دستورالعمل پردازنده.
- ارتقا كامپايلر جهت توليد دستورالعمل پيچيده جديد هنگام كامپايل كردن برنامه.
- كامپايل كردن برنامه جهت اجراي آن روي Datapath جديد.
- به اين ترتيب سختافزار به گونهاي اختصاصي ميگردد كه اجراي يك يا چند دستورالعمل پركاربرد و كليدي بر روي آن كارآمد تر گردد. با وجود اينكه اين راهكار در افزايش عملكرد برنامهها موثر ميباشد با دو محدوديت عمده مواجه است :
- نوعا در پردازندههاي ASIP، يك پردازنده عمومي كه از پيش مستندات طراحي آن موجود ميباشد به گونه ارتقا يافته و اختصاصي ميگردد كه بتواند برنامه خاصي را سريعتر اجرا كند، لذا محدوديتهاي زمانبندي و مساحتي كه اين پردازنده بر روي كدگشاي دستورالعمل خود دارد موجب ميشود تا پيچيدگي دستورالعملهايي كه در مرحله سوم طراحي ASIP در نظر گرفته ميشوند به شدت به كدگشا وابسته گردند همچنين محدوديتهاي زماني و مساحتي كدگشا به عنوان يكي از مراحل خطلوله پردازنده مانع از به كار گيري دستورالعملهاي پيچيده گردد، چرا كه افزايش پيچيدگي دستورالعمل موجب افزايش سطح مدار منطقي كدگشا شده و همچنين عمليات كدگشايي را زمانبر تر ميكند، اين موضوع مانع بهينهسازي هرچه بيشتر خط لوله ميشود. به اين خاطر همواره براي تابعي كه قصد اختصاصي كردن سختافزار براي آن داريم، محدوديت پيچيدگي وجود دارد.
- طراحي كردن كامپايلري كه بتواند دستورالعملهاي پيچيده اضافه شده به ISA را به صورت كارآمدي توليد كند، بسيار دشوار و در برخي مواقع غير ممكن است.
ت) پياده سازي NISC
محققين دانشگاه كاليفرنيا - ايرواين، بر اين باورند كه مجموعه دستورالعملها، يك لايه اضافي ميان كامپايلر و رفتار پردازنده ميباشد و باعث به وجود آمدن سربار پيادهسازي و طراحي هم براي پردازنده و هم براي كامپايلر ميگردد. در هر پردازندهاي پيچيده ترين واحد از نقطه نظر پياده سازي سختافزاري و بحرانيترين مسير از نقطه نظر زماني، واحد كدگشايي دستورالعمل آن به شمار ميرود. در كامپايلرها نيز انتخاب دستورالعمل پيچيده يك فرايند بسيار كند و زمانبر است، اين موضوع يكي از اصليترين عوامل جايگزيني كامپيوترهاي با دستورالعملهاي پيچيده (CISC) با كامپيوترهاي كم دستورالعمل (RISC) بود.
معماري كامپيوتر بدون دستورالعمل (NISC) كه توسط محققين اين دانشگاه ابداع شده است با حذف مجموعه دستورالعمل و به طبع آن واحدكدگشايي دستورالعمل، اين مشكلات را مرتفع كرده است. به بيان ديگر در اين معماري مرحله 3 و 4 طراحي ASIP حذف شده است در عوض كامپايلر به صورت مستقيما برنامه را بر روي Datapath كه براي برنامه مذكور بهينه شده است، اجرا ميكند. به كمك مفاهيم مطرح شده در معماري NISC هر نوع Datapath با هر ميزان پيچيدگي و بهينهسازي قابل پيادهسازي خواهد بود چرا كه هريك از ويژگيهاي يك برنامه ميتواند در توليد Datapath بهينه براي اجراي آن، نقش داشته باشد.
يكي از پيچيدهترين بخشهاي يك پردازنده كه هم طراحي آن دشوار است و هم بخش عمدهاي از مساحت و مصرف توان پردازنده را به خود اختصاص ميدهد واحد كنترل است كه شامل اجزايي مانند كدگشاي دستورالعمل ميگردد تا سيگنالهاي كنترلي Datapath را در زمانهاي مشخص توليد نمايد. اين واحد اغلب داراي بيشترين مسيرهاي بحراني بوده و نيازمند مراحل Verification متعددي چه از نظر تابعي و چه از نظر زماني ميباشد. در معماري NISC با حذف مجموعه دستورالعملها و به طبع آن واحد كدگشايي دستورالعمل، كنترلر پردازنده به طور قابل توجهي ساده خواهد شد لذا پردازنده NISC از اين نقطه نظر ميتواند بسيار سريعتر از ASIPهاي همرده خود عملكرده و نيازمند تلاش كمتري در توسعه و Verification ميباشد.
فرايند تحول معماريپردازندهها از نقطه نظر معماري مجموعه دستورالعملهايشان (ISA) را ميتوان در سه دسته زير قرار داد:
1. كامپيوترهاي با دستورلعملهاي پيچيده (CISC) كه در دهه 1970 محبوبيت پيدا كردند، از آنجا كه حافظه برنامه Program Memory) PM) نسبت به Datapath بسيار كند ميباشد، طراحان اين معماري سعي داشتند با ساختن دستورالعملهاي پيچيده، ميزان بهرهوري هر دستورالعمل را در داخل Datapath افزايش دهند، طوري كه هر دستورالعمل پيچيده اين پردازندهها براي اجرا به چندين سيكل كلاك زمان نياز داشت. در اين معماري هر دستورالعمل منجر به توليد يك سري كلمات كنترلي Datapath ميشد كه، داخل يك حافظه سريعتر به نام micro program memory يا mPM ذخيره ميشدند. معماري ريزبرنامهنويسي شده اين امكان را ميداد تا هر نوع دستورالعملي قابل پياده سازي گرديده و اجراي سريعتري از روي حافظه mPM داشته باشد. متاسفانه معماري ريزبرنامهنويسي شده امكان بهره گيري خطلوله كارآمد در داخل Datapath را نميداد.
2. كامپيوترهاي كم دستورالعمل (RISC) كه در اواخر دهه 1980 با حذف دستورالعملهاي پيچيده و حافظه mPM محبوبيت يافت. تمامي دستورالعملها در اين معماري از نوع دستورالعملهاي سادهاي بودند كه به كمك خطلوله در يك سيكل كلاك اجرا ميشدند، اين امر امكان پيادهسازي خطلوله كارآمد در Datapath را با 4 تا 8 مرحله ميداد. حافظه mPM نيز با يك مرحله از خطلوله به نام مرحله كدگشايي پس از مرحله واكشي جهت توليد سيگنالهاي كنترلي مورد نياز جايگزين شد.

شكل 2 : نسلهاي مختلف معماري مجموعه دستورالعملها
در شكل 3 نمايي از معماري NISC جهت پيادهسازي يك برنامه بر روي سختافزار اختصاصي ترسيم شده است. اين معماري جهت غلبه بر پيچيدگي طراحي اجزاي سيستم، از توصيف سطح بالاي عملكرد به زبان C بهره ميبرد، به كمك اين زبان برنامهنويسي سطح بالا ميتوان هر الگوريتمي را با نازلترين سطح پيچيدگي توصيف كرد. در معماري پردازنده NISC، كنترلر به صورت خودكار از روي كامپايل برنامه C براي Datapath توليد ميشود، به بيان ديگر کامپايلر NISC با داشتن كد C برنامه و توصيفي از Datapath، كلمات كنترلي مورد نياز جهت توليد سيگنالهاي كنترلي Datapath را ايجاد ميكند.
در اين معماري روشهاي متعددي براي توليد يا اختصاص دادن Datapah بهينه وجود دارد، به عنوان مثال Datapath ميتواند يك IP باشد كه از آن استفاده مجددا ميشود، يا يك IP باشد كه توسط ابزارهاي سنتز رفتاري توليد شده است يا حتي Datapath ميتواند توسط طراح مشخص گردد. براي توصيف Datapath و نمايش Netlist سيستم، محققين دانشگاه كاليفرنيا – ايرواين، شيوه نمايش جديدي موسوم به GNR سرنام Generic Netlist Representation ابداع كردهاند.
با وجود اينكه بهرهوري زبانهاي توصيف معماری (ADL (Architecture Description Language در طراحي ASIP ها به اثبات رسيده است و در توصيف معماري و Datapath متداولا از اين زبانها بهره گرفته ميشود، در معماري NISC قابليت به خدمت گرفتن آنها وجود ندارد چرا كه سيستمهاي طراحي شده مبتني بر زبانهاي توصيف معماري، همواره فرض ميكنند كه پردازنده داراي يك مجموعه دستورالعمل از پيش تعريف شده ميباشد.

شكل 3: نمايي از معماري NISC
پس از توصيف Datapath با GNR، و بهينه سازي اوليه برنامه C، اين دو به كامپايلر NISC داده شده تا كامپايلر بر اساس ويژگيهاي Datapath و برنامه C بخش كنترلي مورد نظر پردازنده را توليد نمايد، سپس كد RTL پردازنده به زبان توصيف سختافزاري Verilog توليد شده و در مرحله آخر براي شبيهسازي يا سنتز بهينه سازي ميشود تا بتوان آنرا بر روي FPGA يا ASIC پياده سازي كرده در مدار به كار برد.
طراحان معماري NISC قابليت بهينهسازي و پالايش Datapath و كد برنامه را نيز براي معماري خود در نظر گرفتهاند از اين رو پس از به اتمام رسيدن فرايند طراحي و توليد RTL مربوطه، امكان اجراي مجدد عمليات طراحي با اعمال تغييرات در كد برنامه و همچنين Datapath وجود دارد، لذا با اعمال بهينهسازيهاي بعد از طراحي اوليه، ميتوان پردازنده را به گونهاي سازماندهي كرد كه كارايي غيرقابل رقابتي نسبت به راهكارهاي ديگر پياده سازي اجزاي سيستم ارائه كند.
- · معماري كامپيوتر بدون دستورالعمل، بهرهوري بالايي در توليد توصيف RTL سيستم به ارمغان ميآورد و طراح به واسطه يك زبان سطح بالا ميتواند سيستم را طراحي كرده و به كمك اين معماري سختافزار توليد شده براي آنرا شبيه سازي يا سنتز كند.
- · اين معماري ميتواند كيفيت طراحي سيستمها را ضمن حفظ بهرهوري بالا افزايش دهد، چرا كه با حذف محدوديتهاي موجود در طراحيهاي متداول و حذف پيچيدگيهاي طراحي كنترلر و مجموعه دستورالعمل، ميتوان بهينهسازيهاي قابل قبولي را به كمك اين معماري از نظر كارايي، مصرف توان و مساحت انجام داد.
- · با پيادهسازي اجزاي سيستم به كمك اين تكنولوژي، تفاوت در پياده سازي سختافزاري يا نرمافزاري ناپديد ميشود، جهت پياده سازي نرمافزاري كلمات كنترلي در حافظه سيستم قرار ميگيرند و در پياده سازي سختافزاري سيگنالهاي كنترلي به كمك ROM يا مدارمنطقي توليد ميشوند.
- · از آنجا كه Datapath ميتواند شامل خطلوله با هر تعداد مرحله باشد و هر ميزان موازيسازي در آن امكان پذير است، از نقطه نظر كارايي، غلبه بر طرحيهاي بهينه مبتني بر اين معماري دشوار ميباشد.
- · از آنجا كه اين معماري فاقد دستورالعمل ميباشد، كدهاي C بدون هيچ واسطهاي به صورت مستقيم بر روي سختافزار اختصاصي اجرا ميشوند.
- · با توجه به اينكه معماري NISC قابليت پيادهسازي هر تابع و محاسباتي را دارد، تنها به يك كامپايلر جهت توليد كلمات كنترلي مطلوب، نياز دارد از اين رو كامپايل برنامه فقط يك بار آن هم در فاز طراحي صورت گرفته و برخلاف راهكارهاي پياده سازي نرمافزاري، در زمان اجرا نيازي به كامپايل كردن برنامه نيست.
كاربردهاي تكنولوژي NISC
معماري كامپيوتر بدون دستورالعمل كاربردهاي بسيار گستردهاي دارد كه مهمترين آنها عبارتند از:
C-to-RTL synthesis:سنتز كدهاي سطح بالاي C به توصيف سختافزاري RTL زبان Verilog يكي از مهمترين كاربردهاي اين تكنولوژي ميباشد. اين تكنولوژي قابليت توليد خودكار توصيف GNR از Datapath مورد نياز براي برنامه C را دارد. از اين رو ميتوان از آن به عنوان يك راهكار نوين در توليد Datapath و كنترلر يك برنامه C كه ميتواند بيانگر عملگر يك IP يا يكي از اجزاي سيستم باشد ياد كرد.
طراحي پردازندههاي Embedded: به كمك اين معماري ميتوان پردازندههاي خاص منظورهاي را براي هر برنامهاي طراحي نمود كه محدوديت پردازندههاي ASIP را نداشته و بهرهوري بسيار بهتري نسبت به پيادهسازي كاملا سختافزاري برنامه مدنظر دارد. در عين حال ميتوان بهينهسازيهاي متعددي در Datapath و خطلوله اين نوع پردازندهها اعمال كرد طوري كه كارايي و مصرف توان آن غيرقابل رقابت با سبكهاي ديگر پياده سازي گردد.
شناسايي فضاي طراحي: به كمك اين تكنولوژي ميتوان هر نوع سناريوي What-If را پس از طراحي جهت ارزيابي كارايي آن به كار برد. ميتوان در كد C يا ساختار معماري بهينهسازيهاي محتمل را انجام داده و نتايج را پس از آن ارزيابي كرد، تاثير اضافهكردن يا حذف كردن يكي از اجزاي سيستم را مشاهده كرده و در بهينه سازي هرچه بيشتر پارامترهاي كليدي طراحي اقدام نمود.
ايدههاي مطرح شده در معماري NISC هرچند بسيار ارزشمند هستند، اما تا زماني كه كامپايلر و ابزارهاي مطلوب جهت پيادهسازي آنها فراهم نگردد، اين تكنولوژي كاربرد چنداني پيدا نخواهد كرد، به لطف زحمات و تلاشهاي دكتر رشادي و خانم دكتر گرجيآرا در دانشگاه كاليفرنيا - ايرواين؛ هم اكنون هم كامپايلر مربوطه در دسترس عموم ميباشد و هم كليه ابزارهاي مورد نياز براي سنتز و توليد يك پردازنده اختصاصي.
براي اجراي برنامه روي Datapath داده شده، كامپايلر بايد هر دستورالعمل برنامه C را با ملاحظه وابستگي عمليات، به مجموعهاي از كلمات كنترلي تبديل كند تا جهت كنترل Datapath در هر سيكل كلاك استفاده شود. در شكل 4 نمايي از مراحل كاري اين كامپايلر نشان داده شده است.


شكل 4 نمايي از مراحل كامپايلر NISC
كامپايلر در ابتدا برنامه C را به همراه توصيف GNR معماري Datapath گرفته و در نهايت كلمات كنترلي مطلوب را توليد ميكند، اين كلمات بسته به تصميم طراح ميتوانند داخل حافظه كنترلي ذخيره شوند و سيگنالهاي كنترلي با خوانده شدن كلمات كنترلي از داخل حافظه مذكور توليد شوند يا اينكه به كمك حافظه ROM و مدارهاي منطقي، كنترلر مربوطه به صورت سختافزاري طراحي و پياده سازي شود.
همچنين Toolset توانايي توليد خودكار Datapath را نيز دارا ميباشد، به طوري كه تنها با دادن برنامه C به آن ميتواند اجزا مورد نياز براي اجراي آن را پيشبيني كرده و Datapath مطلوب را به بيان GNR توليد كند.
يكي ديگر از ويژگيهاي مطرح اين Toolset قابليت توليد خودكار كدهاي RTL توصيف كننده طراحي به زبان Verilog قابل سنتز ميباشد، RTL قابل سنتز توليد شده در دو فرم عمومي و فرم ويژه Xilinx توليد ميشود. همچنين براي شبيه سازي طراحي نيز با توجه به اينكه شبيه سازي كدهاي قابل سنتز اندكي زمانبر ميباشد، Toolset طراحي شده قابليت توليد كدهاي RTL ويژه شبيهسازي را نيز دارا ميباشد.
اين Toolset كه بر روي پلتفورم Windows قابل اجرا ميباشد در وبسايت تكنولوژي NISC در دسترس همگان قرار گرفته است، همچنين نسخه تحت وب اين Toolset نيز توسط دكتر رشادي و خانم دكتر گرجيآرا توسعه داده شده و در وبسايت مذكور قرار گرفته شده است، به طوري كه هم اكنون ميتوان بدون نياز به نصب هيچ برنامهاي به صورت مستقل از سيستمعامل ، از آن استفاده كرد.
1. NISC Technology home page, www.ics.uci.edu/~nisc
2. Daniel D. Gajski, “NISC: The Ultimate Reconfigurable Component”, CECS Technical Report TR 03-28
3.