ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





نمایش نتایج: از 1 به 1 از 1
  1. #1
    تاریخ عضویت
    2012/03/05
    نوشته ها
    1,406
    امتیازها
    17,310
    سطح
    83
    2,804
    مشاور انجمن سخت افزار کامپیوتر

    ***نگاهی متفاوت به D3D12 یا Direct X 12***



    درود دوستان

    قصد دارم در این این تاپیک اقدام به معرفی D3D12 بپردازدم قابلیت خاص و ویژه برای سازندگان و توسعه دهندگان (برنامه نویسان) در هر صعنت و حوزه ای که مشغول به فعالیت هستند، D3D12 مانند یک دیوان بزرگ همراه با منابع و کتابخانه های بسیار بزرگ هستند که توسط سازنده بزرگ آن MICROSOFT بنا نهاده شده و در قالب کدها در IDM خود قرار داده است که افراد علاقهمند و توسعه دهندگان بتوانند با زبان های برنامه نویسی قدرتمندی همچون #C و ++C که اجازه دسترسی سطح پایین را به کاربران و توسعه دهندگان برای کاهش سربار ها و افزایش کارایی را برای شرکتها و سازمان ها مربوطه فراهم می کند یکی از اهداف بزرگ D3D12 استفاده از قابلیت Multi-Threading می باشد.

    همگی می دونیم DirectX 12 یک API هستش که به توسعه دهندگان این اجازه را می دهد که بتوانند دسترسی سطح پایین به منابع سخت افزاری و همچنین افزایش راندمان سخت افزارهای و کاهش سربار ها چه پردازنده اصلی و پردازنده گرافیکی را در مبحث Multi-Threading همراه داشته باشد. و همچنین مدیریت صحیح و کارامد از منابع قرار گرفته در حافظه ها اصلی سیستم ها استفاه از DX12 این اجازه و قدرت را می دهد که ما بتوانیم صف های محاسباتی بیشتری را در اختیار داشته باشیم که بتوانیم با استفاده از چندین حالت Pipeline قدرت بیشتری را ارائه کنند و همچنین اجازه بدهند که پردازنده های گرافیکی کاهش سربار کمتری و اجازه اجرای وظایف را داشته باشند.

    D3D12 یک زبان برنامه نویسی جدید هستش که قطعا اجازه می دهد ما افزایش کارایی را در بین فعالیت های گرافیکی که برنامه نویسان گرافیکی انجام می دهند رخ دهد D3D12 قابلیت استفاده کامل از Multi-Threading و Multi-Cores را داراست همین باعث افزایش کارایی و کاهش زمان تاخیر می شود مخصوصا در همگام سازی فعالیت های بین CPU و GPU،

    برای نوشتن DX12 نیازی به DX11 نیستش چرا که DX12 ویژگی جدیدی را همراه خواهد داشت شامل 200 متد که توسعه دهندگان می توانند کدهای DX11 خود را به سمت DX12 کوچ داده و انها را استفاده کنند.

    ابتداء نخ یا Thread تعریف می کنم: یک رشته نخ ، یک واحد پایه ای از بهره وری CPU است که شامل بر یک ID (شناسه) برای رشته نخ، یک شمارنده برنامه ، یک مجموعه ریجستر و یک پشته است. منابع سیستم عامل میان رشته نخ ها به اشتراک گذاشته می شوند. اگر یک فرایند چندین رشته نخ داشته باشد، می تواند چند وظیفه را در یک زمان انجام داده و اجراء می کند. بسیاری از بسته های نرم افزاری که در PC ها امروزی اجراء می شوند چند رشته نخی هستند و یک برنامه کاربردی معمولا به صورت یک فرایند مجزاء یا چندین نخ کنترل پیاده سازی می شود.

    بیشتر Kernel یا هسته سیستم عامل ها هم اکنون به صورت چند رشته نخی یا Multi-Threading هستند که در آنها چندین رشته نخ در هسته اجراء می شود و هر رشته نخ یک وظیفه را انجام می دهد.

    از فواید برنامه نویسی Multi-Threading را می توان به موارد زیر اشاره کرد:

    الف: پاسخ دهی : چند رشته نخی مانند استفاده در برنامه کاربردی اجازه می دهد که یک برنامه در صورتی که بخشی از آن مسدود شده باشد و یا زمان اجرای طولانی داشته باشد بتواند پاسخ دهد لذا قابلیت پاسخ دهی به کاربر افزایش می یابد.

    ب: اشتراک منابع: فرایند ها تنها از طریق تکنیک هایی مانند حافظه اشتراکی TMU و انتقال پیغام می توانند منابع را به اشتراک بگذارند ، این تکنیک بایستی به طور صریح توسط برنامه نویس اجراء شود.

    ج: مقرون به صرفه بودن: تخصیص حافظه و منابع برای ایجاد فرایند عملیات پر هزینه ای هستش، از آنجایی که رشته نخ ها منابع فرایند را به اشتراک می گذارند ایجاد رشته نخ ها و تعویض متن Context SW آن ها از نظر هزینه بسیار مهم است ایجاد نخ ها و تعویض متن آن ها نسبت به همان عملیات برای فرایند ها زمان کمتری را مصرف می کند.

    د: مقایس پذیری: فواید چند رشته نخی در معماری چند پردازنده ای که در آن رشته نخ ها می توانند به طور موازی بروی پردازنده های متفاوت اجراء شوند به مراتب بیشتر است. یک فرایند تک رشته نخی تنها بروی یک پردازنده می تواند اجراء شود. چند رشته نخی در یک ماشین چند پردازنده ای قابلیت توازی یا موازی را افزایش می دهد.


    برنامه نویسی به صورت Multi-Core و Multi-Thread:

    روندی که در طراحی سیستم ها از سمت شرکتهای سازنده نرم افزاری و سخت افزاری صورت گرفته استفاده از قابلیت چند نخی و چند هسته ای می باشد همراه با هسته های محاسباتی در یک تراشه یا Chip می باشد. مانند یک پردازنده Intel Corei7 6700K که دارای چهار هسته فیزیکی و هشت رشته نخی می باشد.

    امروزه سیستم های عامل (ویندوز و لینوکس) هسته ها را به صورت یک پردازنده واقعی و مجزاء شناسایی و تلقی می کنند.
    برنامه نویسی چند رشته نخی مکانیزمی را برای استفاده موثرتر از هسته های سیستم فراهم می کند و همروندی را افزایش می دهد.


    نمونه ای از تعریف تک هسته ای برای اجرای وظایف ، سیستم عامل در یک زمان تنها یک رشته نخ را اجراء می کند و در یک سیستم چند نخی همروندی به این معنی است که رشته نخ ها می توانند به طور توازی اجراء شوند و سیستم می تواند به هر هسته یک رشته نخ انتساب کند.

    طراحان و توسعه دهندگان (برنامه نویسان) بایستی الگوریتم زمان بندی را برای استفاده از چندین هسته پردازشی بنویسند:


    برنامه نویسان برای کد نویسی در سیستم هایی که چند هسته ای Multi-Core می باشند باید چندین نکته مد نظر داشته باشند.

    الف: فعالیت های تقسیم شدنی: این مسئله درگیر درباره نواحی مجزایی هستند که بتوانند به طور همروند اجراء شوند.

    ب: توازن: افزودن بر تعیین فرایند هایی که به طور همروند اجراء می شوند برنامه نویسان بایستی تضمین نمایند که وظیفه کار یکسانی را بروی مقادیر یکسانی انجام می دهند.

    ج: جدا سازی داده ها: همانند برنامه های کاربردی که به وظیفه های مجزاء تقسیم می شوند داده های در دسترسی بایستی برای اجراء در هسته های مختلف قابل تقسیم باشد.

    د: وابستگی داده ها: داده های در دسترسی از جهت وابستگی میان وظیفه ها بایستی بررسی شود و تا نیازمندی های داده ای وظیفه ها به هم لحاظ گردد.



    ============================================








    ** کتابخانه های رشته نخ یا Thread Libary :


    یک کتابخانه رشته نخ ، یک API را برای ایجاد و مدیریت رشته نخ ها فراهم می آورد، برای یک پیاده سازی یک کتابخانه معمولا دو روش وجود دارد: روش اول: فراهم اوردن یک کتابخانه تماما در فضای کاربر و بدونه پشتیبانی هسته است تمام کدها و ساختارهای داده ها در فضای کاربر هستند.
    مانند آنچه که نرم افزار قدرتمند و بزرگ Visual Studio انجام می دهد.

    دوم: پیاده سازی یک کتابخانه هسته است که به طور مستقیم توسط سیستم عامل پشتیبانی می وشد در این روش کدها و ساختارهای داده همگی در سطح هسته قرار دارند و فراخوانی یک تابع در API جهت کتابخانه معمولا منجر به یک فراخوانی سیستمی به هسته می شود.

    مهمترین کتابخانه مورد استفاده که به طور گسترده استفاده می شود و همگی شاهد آن هستیم Win32 ( یک کتابخانه در سطح هسته سیستم عامل ویندوز می باشد).



    ** زمان بندی چند پردازنده ای:

    اگر چندین CPU در سیستم در دسترس باشند اشتراک بار امکان پذیر می شود اما این مسئله درباره زمان بندی پیچیده تر می گردد، حال شرکت محبوب Microsoft قصد دارد با استفاده از D3D12 این مسئله پیچیده را ساده تر کرده است.

    یک رویکرد برای زمان بندی یک سیستم چند پردازنده ای تمامی تصمیمات زمان بندی پردازش های Input و output برای CPU را همانند یک سیستم تک پردزانده ای دارد در حالی که فعالیت های سیستمی توسط یک پردازنده انجام میگیرد Master Server که پردازنده های Slave تنها کد کاربر را اجراء می کنند.

    ( چند پردازشی به صورت نا متقارن ، در این روش تنها پردازنده به ساختارهای داده سیستمی دسترسی دارد و این مطلب نیاز به اشتراک داده را کم می کند).

    رویکرد مهم در پردازنده ها استفاده از SMP یا Symmetric Multi-Processor (چند پردازشی متقارن) استفاده می شود که هر پردازنده خودش زمانبندی خود را انجام می دهد تمامی فرایندها ممکن است در یک صف آماده باشند یا این که هر پردازنده صف آماده خودش را داشته باشد. اکثر سیستم های عامل مانند : ویندوز 10 و 8.1 و 7 و لینوکس به طور مجازی از SMP استفاده می کنند.


    ** توازن باز در پردازنده و یا چند پردازنده :

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

    ** وابستگی به پردازنده:

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

    معماری حافظه های اصلی یک سیستم می تواند وابستگی به یک پردزانده را تحت تاثیر قرار دهد. مانند NUMA که ما شاهد استفاده از دسترسی غیر مستقیم به حافظه های هستیم تکنولوژی می باشد که در پردازنده های ترکیبی AMD APU شاهدش هستیم که در آن یک پردازنده به برخی از از بخش های حافظه دسترسی سریعتری دارد و معمولا این مساله در سیستم هایی اتفاق می افتد خود نسبت به حافظه های بورد های دیگر دارند، اگر زمان بندی CPU سیستم عامل و الگوریتم مکانیابی باهم کار کنند فرایندی که به یک CPU خاص وابستگی دارد به حافظه اختصاص داده می شود که CPU مورد نظر در آن قرار دارد.


    ================================================== =



    یکی از قابلیت های مهم DX12 استفاده از همگام سازی Synchronization و Multi Engine می باشد، که ما شاهده بکار گیری چنین قابلیت هایی در پردازنده های گرافیکی امروزی هستیم برای به اختصاص دادند فراینده ها به موتورهای محاسباتی و سه بعدی هر کدام از این Engine ها می تواند به صورت موازی یا توازی فرمان ها را اجراء کنند همراه با یکدیگر، شما با استفاده از DX12 می توانید به دسترسی دقیق و عمیق تری به Compute Engine و 3D Engine ها داشته باشید برای استفاده کردند از صف ها و فرمان ها.

    سیستم عامل دارای یک جدولی به نام جدول فراینده هاست که هر درایه از آن شامل فیلد های برای ذخیره محتوای ثباتهای CPU و نگاشت های حافظه و اولیت ها و ... میباشد که باعث افزایش کارایی و ساختن برنامه های کاربردی را ساده تر می کند.

    GPU Engine ها دارای چندین صف محاسباتی و سه بعدی و کپی هستند که نخ های پردازنده می توانند با آن در ارتباط باشند، مثلا صف های سه بعدی می توانند کنترل کنند هرسه GPU Engine ولی صف های محاسباتی می توانند کنترل کنند موتور های سه بعدی و کپی داشته باشند.

    در نمودار پایین شما مشاهده می کنید برای مثال Copy Engine ها می توانند کپی کنند برخی از Geometry لازم و ضروری برای رندرینگ یا مثلا 3D Engine ها نیز می توانند منتظر باشند تا کار رندرینگ Geometry ها به پایان برسد یا هر Geometry را رندر کنند و این وظایف به وسیله Compute Engine ها انجام میگیرد و نتیجه این می شود که موتور های محاسباتی Dispatch می کنند عملیات کپی در میان چندین Texture ها بروی یک Copy Engine که باعث می شود 3D Engine ها DRAW Call ها را ترسیم کنند.

    DirectX 12 این اجازه را به برنامه نویسان می دهد که بتوانند از رخ دادهای غیر منتظره و غیر بهینه در حین پردازش های جلوگیری کند که باعث تاخیر در مبحث همگام سازی می شود ، در عوض DX12 به توسعه دهندگان این اجازه را داده است که بتوانند از طریق دسترسی سطح بالا High Level که بتوانند همگام سازی بهتر و قابل اعتمادتری را ایجاد کنند.

    از مهم ترین ویژگی های DX12 در مبحث Multi Engine ها این می باشد که اجازه می دهد به استفاده از قابلیت ناهمگام یا Asynchronous که اجازه دسترسی سطح پایین را به Job های GPU می دهد این قابلیت این اجازه کار کردن با GPU با اولیت پایین را می دهد البته به صورت همزمان نتیجه به این صورت می شود که اگر در یک عملیات یک نخ از GPU در حالت فعال است سایر نخ ها در حالت مسدود یا Blocking قرار نگیرند.






    نیتم از ایجاد کردند چنین تاپیکی نگاه متفاوت به موضوع جذاب DirectX 12 می باشد و قصد ندارم بحث برنامه نویسی و کدهاش اینجا مطرح کنم و اگر لازم باشه در جاهایی کدهاش قرار می دم. فعلا سعی میکنم موضوعات به صورت تئوری و قابل فهم برای کاربران و دوستان مطرح کنم. و درباره هر ویژگی DX12 خواهم نوشت
    .


    ::::::::::::: تاپیک بروزرسانی خواهد شد ::::::::::::::



    >>>> استفاده از مطالب با ذکر نویسنده و وب سایت بلامانع می باشد.
نمایش نتایج: از 1 به 1 از 1

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. AMD با Mantle به جنگ Direct X 11.1 رفت! (AMD رقیب می طلبد؟!)
    توسط Reza Eshraghi در انجمن اخبار سایت سخت افزار
    پاسخ: 6
    آخرین نوشته: 2014/02/10, 11:10
  2. بررسی کارت گرافیک ایسوس HD 7790 Direct CU II
    توسط Reza Eshraghi در انجمن اخبار سایت سخت افزار
    پاسخ: 0
    آخرین نوشته: 2014/01/17, 09:53
  3. بررسی و تست ASUS R9 270 Direct CU II OC 2 GB
    توسط MOHAMMAD MOBASHERI در انجمن اخبار، آموزش و بررسی کارت گرافیک
    پاسخ: 3
    آخرین نوشته: 2013/12/01, 01:51
  4. مشکل direct x در بازی جنرال!
    توسط actros 1843 در انجمن بحث و گفتگو و راهنمایی
    پاسخ: 0
    آخرین نوشته: 2013/08/04, 01:33
  5. مشکل با Direct X!
    توسط +Aren در انجمن بحث و گفتگو و راهنمایی
    پاسخ: 10
    آخرین نوشته: 2012/06/26, 10:55

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •