جمعه, ۱۴ اردیبهشت, ۱۴۰۳ / 3 May, 2024
مجله ویستا

ناگفته های DirectX ۱۰ از دیدگاه سخت افزاری


ناگفته های DirectX ۱۰ از دیدگاه سخت افزاری

DirectX ۱۰ و windows Graphic Foundation ۲ ۰ اسامی هستند که می توانند انقلاب جدیدی را در گرافیک های سه بعدی و بازی های پیشرفته کامپیوتری نوید دهند

DirectX ۱۰ ‎ و windows Graphic Foundation ۲.۰ اسامی هستند که می توانند انقلاب جدیدی را در گرافیک های سه بعدی و بازی های ‏پیشرفته کامپیوتری نوید دهند. هنگام عرضه windows Vista در ابتدای سال جاری میلادی ما شاهد حضور ‏ API ‏ جدید شرکت ‏ Microsoft ‏ یعنی DirectX ۱۰ بودیم که استانداردهای موجود برای پردازش سه بعدی و تجربه چند رسانه ای کاربران را به سطح جدیدی ارتقا ‏داده است. هرچند زمان زیادی از معرفی ‏ DirectX ۱۰ ‏ می گذرد، اما ناگفته های زیادی در رابطه با این ‏ API ‏ بنیادی وجود دارد که ‏در این مقاله به بررسی آنها پرداخته شده است.‏

● حافظه مجازی در ‏DirectX ۱۰ ‎

API ‏ یا واسط نرم افزاری ‏ DirectX ‏ از مجموعه ای از اینترفیس ها تشکیل شده است که مشخص می کنند توسعه دهندگان ‏بازی ها و نرم افزارهای مختلف چگونه باید با سخت افزار به صحبت بپردازند. نوشتن یک برنامه برای یک ‏ API ‏ استاندارد بسیار ‏ساده تر از نوشتن و بهینه سازی همان برنامه برای اجرا بر روی سخت افزارهای خاص است. به منظور هرچه یکپارچه تر کردن ‏سخت افزار و نرم افزار، مایکروسافت یک بازنگری کلی را بر روی ‏ DirectX ‏ اعمال کرده است. از آنجایی که این ‏ API ‏ در طول ‏زمان حیاط ‏ windows Vista ‏ به عنوان پایه و اساس توسعه و اجرای هر نرم افزار و یا سخت افزار جدیدی مورد استفاده قرار ‏خواهد گرفت، ‏ Microsoft ‏ سعی کرده است با ارایه برخی از مشخصات پیشرو و کاملا جدید و علاوه بر آن ساده سازی این ‏ API ‏ به برنامه نویسان امکان دهد تا با سرعت و سهولت بتوانند با دریافت حداکثر کارایی از سخت افزارهای ‏ PC ‏، نرم افزارها و ‏بازی هایی با کیفیت و کارایی بالا را طراحی کنند.‏

Direct۳D ‏ قسمتی از ‏ DirectX ‏ است که مستقیما بر اجرا و عملکردهای نرم افزارهای سه بعدی نظارت دارد. در حقیقت ‏مهمترین بخش ‏ DirectX ، ‏ Direct۳D ‏ است. بزرگترین تحولات صورت گرفته در DirectX ۱۰ نیز مستقیما به ‏ Direct۳D ‏ مربوط می ‏شود. Direct۳D ۱۰ با یکپارچه کردن دستورالعمل ها و استاندارد نمودن مشخصات سایه زن های قابل برنامه نویسی، برنامه ‏نویسان را از شر سایه زن هایی که هر سازنده به صورت اختصاصی طراحی و روانه بازار می کرد رها می سازد. بعلاوه مایکروسافت ‏در مدل درایورهای مربوط به کارت های گرافیک و نمایشگرها نیز تجدید نظر کرده است.

به این خاطر که در windows Vista ‏ تمام دسکتاپ به صورت سه بعدی به نمایش در می آید، کارت گرافیک دیگر تنها برای بازی کردن مورد ‏استفاده قرار نمی گیرد. هنگامی که شما یک صفحه نمایش سه بعدی دارید و هر برنامه را در صفحه سه بعدی مربوط به ‏خودش اجرا می کنید، درایورهای کارت گرافیک باید به اندازه کافی با ثبات و انعطاف پذیر باشد تا بتواند نقش پردازنده گرافیکی را ‏افزایش دهد. به همین منظور مایکروسافت تصمیم گرفته است تا درایورها را به دو بخش مجزا تقسیم نماید. یک بخش برای ‏اجرای دسک تاپ و بخش دیگر برای اجرای نرم افزارها و بازی های سه بعدی. این تقسیم بندی برای افزایش ثبات زیر ‏سیستم گرافیکی طراحی شده است و به سیستم عامل امکان می دهد حتی در صورتی که یک برنامه کاربردی و یا بازی سه ‏بعدی به علت خطاهای نرم افزاری و یا سخت افزاری متوقف می شود، همچنان و با وجود یک دسکتاپ کاملا سه بعدی قابل ‏استفاده و با ثبات باقی بماند. وجود چنین نوآوری هایی همچنین به این معنی است که مایکروسافت DirectX ۱۰ را برای windows XP ارایه نخواهد کرد، به خاطر اینکه بسیاری از پیشرفت های صورت گرفته در ‏ Direct۳D ۱۰ ‎ ‏ مستقیما به مشخصات ‏مدل جدید درایور کارت گرافیک ‏ windows Vista ‏ نیاز خواهد داشت.‏

استفاده وسیع تر از توانایی های کارت گرافیکی برای اجرای کاربردهای مختلف، نیاز به اختصاص منابع سیستمی بیشتر از ‏سوی سیستم عامل به آن را دارد. سیستم عامل باید به کاربرها امکان دهد تا بتوانند سخت افزار را به نحو موثرتری به ‏اشتراک بگذارند. بزرگترین تغییر در این زمینه در ‏ windows Vista ‏ تکنولوژی است که با نام ‏ Virtualized Memory ‏ و یا حافظه ‏مجازی شناخته می شود. از این پس کارت گرافیک فضای حافظه اختصاصی خود را در حافظه سیستم خواهد داشت. این ‏حافظه اختصاصی می تواند برای ذخیره داده هایی که دارای اندازه بزرگتر از حافظه محلی کارت گرافیک هستند مورد استفاده ‏قرار گیرد. هم اکنون کارت های گرافیکی گران قیمت و سطح بالا معمولا با حافظه هایی به میزان ۲۵۶ یا ۵۱۲ مگابایت عرضه ‏می شوند. اما بازی ها میتوانند به سادگی تمامی حافظه موجود را برای ذخیره قطعات بسیار بزرگ داده، مانند بافت های با ‏وضوح بسیار بالا، مورد استفاده قرار دهند. ‏

مدیر عامل شرکت ‏ Epic Games ‏ که به تازگی موتور بسیار قدرتمند ‏ Unreal Engine ۳.۰ را معرفی کرده و در حال توسعه ‏عناوین معروفی چون ‏ UT۲۰۰۷ ‎و Gears of War می باشد، در این باره می گوید: « تکنولوژی هایی مانند بافت گذاری مجازی ‏ ‎ ( Virtual Texturing ) ‎ ‏ می تواند گلوگاه های مرتبط با اندازه بافت ها را در حافظه های ‏گرافیکی بر طرف نماید. اندازه بافت هایی را که ما در ‏ DirectX ۹.۰ ‎ ‏ می توانستیم با حفظ کارایی کامل استفاده کنیم به وسیله ‏حجم حافظه محلی کارت گرافیکی محدود شده بود، اما در ‏ DirectX ۱۰ ‎ ‏ حجم آنها تنها توسط اندازه حافظه سیستم محدود ‏خواهد شد. او توضیح می دهد که با در اختیار داشتن چنین امکاناتی، سطح استفاده از بافت ها در بازی ها و نرم افزارهای سه ‏بعدی بین ۲ تا ۴ برابر افزایش خواهد یافت که این برای کسانی که از موتور ‏ Unreal Engine ۳.۰ ‎ ‏ برای توسعه بازی های خود ‏استفاده می کنند بسیار عالی است. هرجا که طراح بخواهد می تواند از بافت هایی با کیفیت و وضوح بالا، برای مثال در وضوح ‏‎ ۲۰۴۸ x ۲۰۴۸ ‎پیکسل، استفاده کند و سپس آنها را برای اجرا بر روی سیستم های با قدرت پایین تر به اندازه های کوچکتری ‏مقیاس دهی کند. »

کارت های گرافیکی برای تطابق با استاندارد های ‏ DirectX ۱۰ ‎و افزایش کارایی نیاز به رعایت نکات دقیقی دارند. کارت های ‏گرافیک باید دارای مجموعه کاملی از مشخصات باشند تا بتوانند تاییدیه های ‏ DirectX ۱۰ ‎ ‏ را بدست آورند. البته این استاندارها ‏به طور کامل با آنچه که در نسل فعلی کارت های گرافیکی شاهد آن هستیم متفاوت نخواهند بود. برای مثال کارت هایی که از ‏ DirectX ۹.۰c ‏ و یا سایه زن های نسخه ۲ پشتیبانی کنند می توانند از بسیاری از توابع موجود در ‏ DirectX ۱۰ ‎نیز پشتیبانی کنند. ‏اما ‏ Microsoft ‏ مشخصه های کاملا دقیقی را اعلام کرده است تا سازندگان مختلف پردازنده های گرافیکی مجبور به ساخت ‏سخت افزارهای سازگار با یکدیگر شوند. برای مثال تفاوت های موجود در واحد های ممیز شناور پردازنده های گرافیکی ‏مختلف شرکت های ‏ ATI ‏ و ‏ nVIDIA ‏ توسعه دهندگان بازی را برای سازگار کردن موتور بازی با هر دو نوع پردازنده گرافیکی تحت ‏فشار قرار میداد، اما مشخصه های تعریف شده در ‏ DirectX ۱۰ ‎ ‏ کمک بزرگی به حذف اینگونه ناسازگاری ها در سخت افزارهای ‏مختلف و در نتیجه کاهش هزینه و زمان توسعه نرم افزار برای کار با آنها خواهد کرد.‏

● دیگر ویژگی های DirectX ۱۰ ‎

مایکروسافت مشخصه های لازم برای طراحی پردازنده های سازگار با ‏ Direct۳D ۱۰ ‎ ‏ را سریع اعلام کرد تا سازندگان پردازنده ‏های گرافیک بتوانند هرچه زودتر کارت های گرافیکی مطابق با آن را ارائه دهند. با توجه به نکات گفته شده توسعه دهندگان نرم ‏افزار دیگر مجبور نخواهند بود تا هنگام عرضه هر پردازنده گرافیکی جدیدی، محصولات خود را با آن منطبق کنند. طبق گفته ‏های مایکروسافت تنها هنگام ارایه ‏DirectX ۱۱ ‎ ‏ آنها نیاز به ایجاد تغییرات در نرم افزارهای خود را خواهند داشت و تا پیش از آن ‏هر نرم افزاری که برای کار با ‏ DirectX ۱۰ ‎ ‏ طراحی شده باشد می تواند بدون اعمال هیچگونه تغییری از تمامی مشخصه های آن ‏پشتیبانی نماید. البته شاید هرگز نتوان جلوی نوشتن کدهای بهینه شده برای یک پردازنده گرافیکی خاص را گرفت و ممکن ‏است همچنان شاهد مشخصه های اضافی عرضه شده از طرف شرکتهای مخلف سازنده سخت افزار باشیم که توسعه ‏دهندگان مختلف ممکن است تمایل به پشتیبانی از آنها را داشته باشند. اما بی شک نسل آینده نرم افزارها و سخت ‏افزارهای سه بعدی بیش از پیش یکپارچه خواهند شد و رقابت آنها در ارائه ویژگی ها و قابلیت های فراتر از ملزومات ‏ DirectX ۱۰ ‎ ‏ خواهد بود. ‏

طبق اظهارات ‏ Microsoft ، ‏ DirectX ۱۰ ‎ ‏ می تواند با مدیریت هوشمندتر منابع، افزایش بازده ‏ API ‏ و انتقال بیشتر بار کاری از ‏ CPU ‏ ‏به پردازنده گرافیک، کارایی را در بازی های مختلف از ۶ تا ۸ برابر افزایش دهد. البته این امر اندکی اغراق آمیز به نظر می رسد ‏اما مسلما شاهد افزایش زیادی در کارایی خواهیم بود.‏ ‎ ‎ برای این منظور DirectX ۱۰ ‎ ‏ و معماری خط لوله های پردازشی در داخل ‏پردازنده گرافیک برای به حداقل رساندن بار کاری بر روی ‏ CPU ‏ و زیر سیستم حافظه، مجددا از ابتدا طراحی شده اند. مهمترین ‏موضوعی که در این زمینه مد نظر طراحان قرار داشته است، افزیش کارهایی بوده که پردازنده گرافیکی قادر است بدون نیاز به ‏گفتگو با ‏ CPU ‏ انجام دهد. به همین دلیل هنگامی که نیاز به استفاده از ‏ CPU ‏ داشته باشیم، خواهیم توانست به شکلی بسیار ‏سریع و موثر از آن استفاده کنیم. ‏

در ادامه مواردی را که سبب افزایش کارایی هنگام استفاده از DirectX ۱۰ میشود را ذکر میکنیم:‏

▪ با استفاده از بافرهای جدید برای مقادیر، بازده عملیاتی سایه زن ها هنگام ارسال و دریافت داده های مورد نیاز ‏مانند مکان نورها، مشخصات مواد و غیره، افزایش خواهد یافت. علاوه بر این با حذف داده های زاید، حجم عظیمی ‏از نقل و انتقال های موجود بین ‏ API ‏ و درایور حذف خواهد گردید. این امر به میزان قابل توجهی باعث کاهش فراخوان ‏داده ها توسط ‏ API ‏ و از بین بردن بار اضافی بر روی پهنای باند حافظه شده و اجازه خواهد داد تا اعمالی که قبلا نیاز ‏به گفتگو میان ‏ API ‏ و درایور داشتند، در سطح درایور انجام شوند.‏

▪ با استفاده از آرایه های جدید بافت گذاری، پردازنده گرافیک خواهد توانست تا به طور شناور موارد استفاده از بافت را ‏تغییر داده و بدون نیاز به فراخوانی و یا ذخیره، آن را مجددا مورد استفاده قرار دهد.‏

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

▪Direct۳D ۱۰ ‎ ‏ دارای مشخصات منحصر به فردی است که به کاربرها اجازه میدهد آن را با توجه به نیاز خود تنظیم و ‏بهینه کرده و در نتیجه کارایی را در تمام شرایط در سطح بالایی نگه دارند.‏

▪ با پشتیبانی از سایه زن های نسخه ۴ ‏ ‎ ( Shader Model ۴.۰ ) ‎ ، پردازنده گرافیکی قادر خواهد بود تا تعداد بسیار ‏بیشتری از دستورالعمل ها را در هر سیکل کلاک انجام دهد. علاوه بر این با استفاده از تعداد زیادی دستور العمل ‏جدید می توان کار بسیار بیشتری را از ‏ CPU ‏ به پردازنده گرافیکی منتقل کرد.

http://qomelecom.parsiblog.com/