نمایش پست تنها
  #4  
قدیمی 03-18-2009
دانه کولانه آواتار ها
دانه کولانه دانه کولانه آنلاین نیست.
    مدیر کل سایت
        
کوروش نعلینی
 
تاریخ عضویت: Jun 2007
محل سکونت: کرمانشاه
نوشته ها: 12,700
سپاسها: : 1,382

7,486 سپاس در 1,899 نوشته ایشان در یکماه اخیر
دانه کولانه به Yahoo ارسال پیام
پیش فرض اگفته هاي ‏DirectX10‎‏ از ديدگاه سخت افزاري

ناگفته هاي ‏DirectX10‎‏ از ديدگاه سخت افزاري



DirectX10‎ وWindows Graphic Foundation 2.0 ‎ اسامي هستند كه ميتوانند انقلاب جديدي را در گرافيك هاي سه بعدي و بازي هاي ‏پيشرفته كامپيوتري نويد دهند. هنگام عرضه Windows Vista‏ در ابتداي سال جاري ميلادي ما شاهد حضور ‏API‏ جديد شركت ‏Microsoft‏ يعني DirectX 10‎‏ بوديم كه استانداردهاي موجود براي پردازش سه بعدي و تجربه چند رسانه اي كاربران را به سطح جديدي ارتقأ ‏داده است.هرچند زمان زيادي از معرفي ‏DirectX 10‎‏ مي گذرد، اما ناگفته هاي زيادي در رابطه با اين ‏API‏ بنيادي وجود دارد كه ‏در اين مقاله به بررسي آنها پرداخته شده است.



حافظه مجازي در ‏DirectX 10‎

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‎‏ براي توسعه بازي هاي خود ‏استفاده ميكنند بسيار عالي است. هرجا كه طراح بخواهد ميتواند از بافت هايي با كيفيت و وضوح بالا، براي مثال در وضوح ‏‎2048x2048‎‏ پيكسل، استفاده كند و سپس آنها را براي اجرا بر روي سيستم هاي با قدرت پايين تر به اندازه هاي كوچكتري ‏مقياس دهي كند.»‏

كارت هاي گرافيكي براي تطابق با استدانداردهاي ‏DirectX 10‎‏ و افزايش كارايي نياز به رعايت نكات دقيقي دارند. كارت هاي ‏گرافيك بايد داراي مجموعه كاملي از مشخصات باشند تا بتوانند تاييديه هاي ‏DirectX 10‎‏ را بدست آورند. البته اين استاندارها ‏به طور كامل با آنچه كه در نسل فعلي كارت هاي گرافيكي شاهد ان هستيم متفاوت نخواهند بود. براي مثال كارت هايي كه از ‏DirectX 9.0c‏ و يا سايه زن هاي نسخه 2 پشتيباني كنند ميتوانند از بسياري از توابع موجود در ‏DirectX 10‎‏ نيز پشتيباني كنند. ‏اما ‏Microsoft‏ مشخصه هاي كاملا دقيقي را اعلام كرده است تا سازندگان مختلف پردازنده هاي گرافيكي مجبور به ساخت ‏سخت افزارهاي سازگار با يكديگر شوند. براي مثال تفاوت هاي موجود در واحد هاي مميز شناور پردازنده هاي گرافيكي ‏مختلف شركت هاي ‏ATI‏ و ‏nVIDIA‏ توسعه دهندگان بازي را براي سازگار كردن موتور بازي با هر دو نوع پردازنده گرافيكي تحت ‏فشار قرار ميداد، اما مشخصه هاي تعريف شده در ‏DirectX 10‎‏ كمك بزرگي به حذف اينگونه ناسازگاري ها در سخت افزارهاي ‏مختلف و در نتيجه كاهش هزينه و زمان توسعه نرم افزار براي كار با آنها خواهد كرد.


ديگر ويژگي هاي ‏DirectX10‎

مايكروسافت مشخصه هاي لازم براي طراحي پردازنده هاي سازگار با ‏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

سايه زن هندسي در ‏DirectX 10‎

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

نویسنده: بهزاد فرخي
منبع: سخت افزار
__________________
مرا سر نهان گر شود زير سنگ -- از آن به كه نامم بر آيد به ننگ
به نام نكو گر بميــرم رواست -- مرا نام بايد كه تن مرگ راست



پاسخ با نقل قول
جای تبلیغات شما اینجا خالیست با ما تماس بگیرید