اینترنت پنجره ها اندروید
بسط دادن

و در نظر بگیرید که در دو مورد متفاوت چه اتفاقی خواهد افتاد. شفاف سازی روابط خانوادگی

* همیشه سوالات موضوعی ، هنگام انتخاب پردازنده به چه نکاتی باید توجه کنید تا دچار اشتباه نشوید.

هدف ما در این مقاله توصیف همه عواملی است که بر عملکرد پردازنده و سایر ویژگی های عملیاتی تأثیر می گذارد.

مطمئناً برای هیچ کس پوشیده نیست که پردازنده واحد محاسباتی اصلی رایانه است. حتی می توانید بگویید - مهمترین قسمت کامپیوتر.

این اوست که تقریباً با پردازش تمام فرایندها و وظایفی که در رایانه اتفاق می افتد سروکار دارد.

چه تماشای فیلم ، موسیقی ، گشت و گذار در اینترنت ، نوشتن و خواندن در حافظه ، پردازش 3D و ویدئو ، بازی ها. و خیلی بیشتر.

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

به همین دلیل است که هنگام انتخاب یک کامپیوتر متعادل ، نههزینه ها غفلت از پردازندهبه نفع کارت گرافیک قوی قدرت پردازنده باید به اندازه ای باشد که بتواند پتانسیل کارت گرافیک را آزاد کند ، در غیر این صورت فقط پول تلف شده است.

اینتل در مقابل AMD

* برای همیشه پیش بروید

شرکت اینتل، دارای منابع انسانی عظیم و منابع مالی تقریباً تمام نشدنی است. بسیاری از نوآوری ها در صنعت نیمه هادی ها و فناوری های جدید از این شرکت ناشی می شود. پردازنده ها و پیشرفت ها اینتل، به طور متوسط ​​توسط 1-1,5 سالها پیش از پیشرفت مهندسان AMD... اما همانطور که می دانید ، برای داشتن فرصت برای داشتن بیشترین فناوری های مدرن- شما باید پرداخت کنید.

سیاست قیمت گذاری پردازنده اینتل، بر اساس هر دو است تعداد هسته ها, مقدار حافظه نهانبلکه در "طراوت" معماری, عملکرد در هر چرخهوات,فناوری تراشه... ارزش حافظه نهان ، "ظرافت های فرایند فنی" و موارد دیگر ویژگی های مهمپردازنده در زیر مورد بحث قرار می گیرد. برای داشتن چنین فناوری هایی به عنوان ضرب فرکانس رایگان ، باید مبلغ اضافی نیز بپردازید.

شرکت AMDبرخلاف شرکت اینتل، برای در دسترس بودن پردازنده های خود برای کاربر نهایی و برای سیاست قیمت گذاری مناسب تلاش می کند.

حتی می توانید این را بگویید AMD– « برند مردم". در برچسب های قیمت آن آنچه را که نیاز دارید با قیمت بسیار جذاب پیدا خواهید کرد. معمولاً یک سال پس از ظاهر شدن تکنولوژی جدیددر شرکت اینتل، آنالوگ فناوری از AMD... اگر شما به دنبال بالاترین عملکرد نیستید و بیشتر به برچسب قیمت توجه می کنید تا در دسترس بودن فناوری های پیشرفته ، محصولات این شرکت AMD- فقط برای شما.

سیاست قیمت AMD، بیشتر بر اساس تعداد هسته ها و کمی - بر اساس میزان حافظه نهان ، وجود پیشرفت های معماری است. در برخی موارد ، برای داشتن حافظه کش سطح سوم ، باید کمی بیشتر هزینه کنید ( پدیدهدارای حافظه پنهان 3 سطح ، آتلونمحتوای فقط محدود ، 2 سطح). اما گاهی اوقات AMDطرفدارانش را "آرام می کند" قابلیت رفع انسدادپردازنده های ارزان تر و گرانتر می توانید هسته ها یا حافظه پنهان را باز کنید. بهتر کردن آتلونقبل از پدیده... این امر به دلیل معماری مدولار و عدم وجود برخی مدلهای ارزان تر امکان پذیر است ، AMDفقط برخی از واحدهای گران قیمت روی تراشه (از نظر برنامه ای) را غیرفعال می کند.

هسته ها- عملاً بدون تغییر باقی می ماند ، فقط تعداد آنها متفاوت است (برای پردازنده ها معتبر است 2006-2011 سال ها). با توجه به پیمانه بودن پردازنده های خود ، این شرکت کار فوق العاده ای در فروش تراشه های رد شده انجام می دهد ، که وقتی برخی از بلوک ها خاموش می شوند ، تبدیل به یک پردازنده از خط تولید کمتری می شوند.

این شرکت سالهاست که روی معماری کاملاً جدیدی با نام رمز کار می کند بولدوزر، اما در زمان ورود 2011 سال ، پردازنده های جدید بهترین عملکرد را نشان ندادند. AMDدر مورد سیستم عامل ها گناه کردند که ویژگی های معماری هسته های دوگانه و "چند رشته ای دیگر" را درک نکرده بودند.

به گفته نمایندگان شرکت ، باید انتظار داشته باشید که اصلاحات و وصله های ویژه عملکرد کامل این پردازنده ها را تجربه کند. با این حال ، در ابتدا 2012 سالها ، نمایندگان شرکت انتشار به روزرسانی را برای پشتیبانی از معماری به تعویق انداختند بولدوزربرای نیمه دوم سال

فرکانس پردازنده ، تعداد هسته ، چند رشته ای.

در زمان پنتیوم 4و قبل از او - فرکانس پردازندهیک عامل مهم در عملکرد پردازنده هنگام انتخاب پردازنده بود.

این تعجب آور نیست ، زیرا معماری پردازنده به طور خاص برای دستیابی به فرکانس بالا طراحی شده است ، این امر به ویژه در پردازنده منعکس شده است. پنتیوم 4در مورد معماری NetBurst... فرکانس بالا با خط لوله طولانی مورد استفاده در معماری مثر نبود. زوج Athlon XPفرکانس 2 گیگاهرتز، از نظر عملکرد بالاتر از بود پنتیوم 4ج 2.4 گیگاهرتز... بنابراین بازاریابی محض بود. پس از این خطا ، شرکت اینتلمتوجه اشتباهاتم شد و به طرف خوب برگشتشروع به کار بر روی جزء فرکانس نکرد ، بلکه بر روی عملکرد در هر چرخه ساعت. از معماری NetBurstمجبور شدم امتناع کنم.

چیما چند هسته ای می دهد?

پردازنده چهار هسته ای با فرکانس 2.4 گیگاهرتز، در برنامه های چند رشته ای ، از لحاظ تئوری معادل تقریبی یک پردازنده تک هسته ای با فرکانس خواهد بود 9.6 گیگاهرتزیا یک پردازنده 2 هسته ای با فرکانس 4.8 گیگاهرتز... اما این فقط در تئوری. عملابا این حال ، دو پردازنده دو هسته ای در مادربرد دو سوکت سریعتر از یک پردازنده 4 هسته ای در فرکانس کار یکسان خواهند بود. سرعت گذرگاه و محدودیت های تاخیر حافظه مشهود است.

* با توجه به معماری های یکسان و میزان حافظه نهان

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

برنامه هایی که "عشق" و استفاده کنیدچند رشته ای: بایگانی کننده ها, پخش کننده های ویدیو و رمزگذار, آنتی ویروس ها, برنامه های defragmenter, ویرایشگر گرافیک , مرورگرها, فلاش.

همچنین ، به "دوستداران" چند رشته ای ، می توانید چنین سیستم عامل هایی را به عنوان ویندوز 7و ویندوز ویستا ، و همچنین بسیاری از آنها سیستم عاملبر اساس هسته لینوکسدر صورت وجود ، سریعتر کار می کند پردازنده چند هسته ای.

اکثر بازی ها، برای پردازنده 2 هسته ای کاملاً کافی است فرکانس بالا... با این حال ، امروزه بازیهای بیشتری منتشر می شوند ، "برای" چند رشته ای "تیز" می شوند. حداقل چنین چیزی را بگیرید جعبه شنیبازی هایی مانند جی تی ای 4یا نمونه اولیه، که در آن بر روی پردازنده 2 هسته ای با فرکانس کمتر 2.6 گیگاهرتز- احساس راحتی نمی کنید ، نرخ فریم به زیر 30 فریم در ثانیه می رسد. اگرچه در این مورد ، به احتمال زیاد دلیل چنین اتفاقاتی بهینه سازی "ضعیف" بازی ها ، کمبود وقت یا دست "غیر مستقیم" کسانی است که بازی ها را از کنسول ها به کامپیوتر.

هنگام خرید پردازنده جدید برای بازی ها ، اکنون باید به پردازنده های 4 یا بیشتر هسته توجه کنید. اما هنوز هم از 2 غافل نشوید پردازنده های هسته ایاز "دسته برتر" در برخی بازی ها ، این پردازنده ها گاهی اوقات احساس بهتری نسبت به برخی از پردازنده های چند هسته ای دارند.

حافظه نهان پردازنده

- این یک منطقه اختصاصی از کریستال پردازنده است که در آن داده های میانی بین هسته های پردازنده ، RAM و سایر گذرگاه ها پردازش و ذخیره می شوند.

با سرعت کلاک بسیار بالا (معمولاً با فرکانس خود پردازنده) کار می کند ، دارای سرعت بسیار بالایی است توانو هسته های پردازنده مستقیماً با آن کار می کنند ( L1).

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

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

این تکنیک در حال حاضر برای استفاده می شود حافظه پنهان سطح 3... پردازنده ها اینتلپردازنده هایی با حافظه پنهان L2 مشترک وجود داشت ( C2D E 7 ***,E 8 ***) ، به لطف آن ظاهر شد بدین ترتیبافزایش عملکرد چند رشته ای

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

به طور کلی ، حافظه پنهان بیشتر ، سریعتر CPU در کدام برنامه ها؟

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

مطلوب به تعداد زیادیکش ها شامل بازی ها... به ویژه استراتژی ها ، شبیه سازی خودکار ، RPG ها ، SandBox و همه بازی هایی که در آنها جزئیات کوچک ، ذرات ، عناصر هندسی ، جریان اطلاعات و جلوه های فیزیکی وجود دارد.

حافظه نهان نقش بسیار مهمی در بازکردن پتانسیل سیستم های دارای 2 یا بیشتر کارت گرافیک دارد. به هر حال ، بخشی از بار بر تعامل هسته های پردازنده هم با یکدیگر و هم برای کار با جریان چند تراشه ویدئو می افتد. در این حالت است که سازماندهی حافظه پنهان مهم است و حافظه نهان L3 با حجم زیاد بسیار مفید است.

حافظه نهان ، همیشه در برابر آن محافظت می شود اشتباهات احتمالی (ECC) ، با تشخیص آنها ، آنها اصلاح می شوند. این بسیار مهم است ، زیرا یک خطای کوچک در حافظه پنهان حافظه ، در حین پردازش ، می تواند به یک خطای غول پیکر و مداوم تبدیل شود که از آن کل سیستم "سقوط" می کند.

فناوری های اختصاصی

(بیش از حد نخ ، HT)–

برای اولین بار این فناوری در پردازنده ها به کار گرفته شد پنتیوم 4، اما همیشه درست کار نمی کرد و اغلب سرعت پردازنده را بیشتر از سرعت بخشیدن به آن کند می کرد. دلیل آن خط لوله بسیار طولانی و سیستم پیش بینی ناقص شاخه بود. اعمال شده توسط شرکت اینتل، هنوز هیچ آنالوگ این فناوری وجود ندارد ، به جز آنالوگ آن زمان؟ آنچه مهندسان شرکت پیاده کرده اند AMDدر معماری بولدوزر.

اصل سیستم به گونه ای است که برای هر هسته فیزیکی ، الف دو رشته محاسباتیبه جای یکی یعنی اگر پردازنده 4 هسته ای دارید با HT (هسته i 7) ، سپس شما رشته های مجازی دارید 8 .

افزایش عملکرد به دلیل این واقعیت است که داده ها می توانند در وسط آن وارد خط لوله شوند ، و نه لزوماً ابتدا. اگر واحدهای پردازشی که قادر به انجام این عمل هستند بیکار باشند ، وظیفه ای برای اجرا دریافت می کنند. افزایش عملکرد همانند هسته های فیزیکی واقعی نیست ، اما قابل مقایسه است (بسته به نوع برنامه 50-75 ~). به ندرت اتفاق می افتد که در برخی از برنامه ها ، HT تأثیر منفی می گذارددر مورد عملکرد این به دلیل بهینه سازی ضعیف برنامه های کاربردی برای این فناوری ، ناتوانی در درک وجود جریانهای "مجازی" و عدم وجود محدود کننده برای بارهای جریان به طور یکنواخت است.

توربوتقویت کنید این یک فناوری بسیار مفید است که فرکانس بیشترین استفاده از هسته های پردازنده را بسته به میزان حجم کار آنها افزایش می دهد. هنگامی که برنامه نحوه استفاده از هر 4 هسته را نمی داند و فقط یک یا دو بار را بارگذاری می کند بسیار مفید است ، در حالی که فرکانس عملکرد آنها افزایش می یابد ، که تا حدی عملکرد را جبران می کند. آنالوگ این فناوری برای شرکت AMD، فناوری است Turbo Core.

, 3 می دانمدستورالعمل ها... طراحی شده برای سرعت بخشیدن به پردازنده چند رسانه ایمحاسبات (فیلم ، موسیقی ، گرافیک دو بعدی / سه بعدی و غیره) ، و همچنین سرعت بخشیدن به برنامه هایی مانند بایگانی ، برنامه های کار با تصاویر و فیلم (با پشتیبانی دستورالعمل های این برنامه ها).

3می دانم - تکنولوژی کاملا قدیمی AMDکه شامل دستورالعمل های اضافیعلاوه بر پردازش محتوای چند رسانه ای SSEنسخه اول.

* یعنی ، توانایی جریان پردازش اعداد واقعی دقیق.

حضور بیشترین ها نسخه جدید- یک مزیت بزرگ است ، پردازنده با بهینه سازی نرم افزار مناسب ، کارهایی را با کارآیی بیشتری شروع می کند. پردازنده ها AMDنامهای مشابهی دارند ، اما کمی متفاوت هستند.

* مثال - SSE 4.1 (اینتل) - SSE 4A (AMD).

علاوه بر این ، این مجموعه دستورالعمل ها یکسان نیستند. اینها آنالوگ هایی هستند که تفاوت های جزئی در آنها وجود دارد.

Cool'n'Quiet ، SpeedStep ، CoolCore ، افزایش یافته نیم حالت (C1E) وتی... د.

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

برخی از این فناوری ها سرعت فن ها را در سیستم کنترل می کنند. به عنوان مثال ، اگر پردازنده نیازی به افزایش اتلاف گرما نداشته باشد و بارگیری نشود ، سرعت فن پردازنده کاهش می یابد ( AMD Cool'n'Quiet ، Intel Speed ​​Step).

فناوری مجازی سازی اینتلو مجازی سازی AMD

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

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

اینتل 64 , AMD 64 , EM 64 تی -این فناوری به پردازنده اجازه می دهد هم در سیستم عامل با معماری 32 بیتی و هم در سیستم عامل با 64 بیتی کار کند. سیستم 64 بیتی- از نظر مزایا ، برای یک کاربر معمولی متفاوت است زیرا می توان از بیش از 3.25 گیگابایت در این سیستم استفاده کرد حافظه دسترسی تصادفی... در سیستم های 32 بیتی از b استفاده کنید Oمقدار بیشتر RAM به دلیل محدودیت حافظه قابل آدرس دهی امکان پذیر نیست *.

اکثر برنامه های کاربردی با معماری 32 بیتی را می توان بر روی سیستم با سیستم عامل 64 بیتی اجرا کرد.

* اگر در سال 1985 هیچکس حتی نتوانست چنین حجم عظیمی از RAM را تصور کند ، چه کاری می توانید انجام دهید.

به علاوه

چند کلمه در مورد.

این نکته ارزش توجه زیادی دارد. هرچه روند فنی نازک تر باشد ، پردازنده کوچکترانرژی مصرف می کند و در نتیجه کمتر گرم می شود. و از جمله موارد دیگر ، امنیت بیشتری برای اورکلاک دارد.

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

درون پردازنده تعبیه شده است.

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

علاوه بر این ، هسته هایی که در پردازنده تعبیه شده اند فقط برای بارگیری سیستم عامل ، گشت و گذار در اینترنت و تماشای فیلم ها (و حتی در آن صورت بدون کیفیت) مناسب هستند.

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

سوکت های پردازنده طول عمر بستر های نرم افزاری.


اینتلسیاست سختی برای پلتفرم های خود دارد. طول عمر هر یک (دوره شروع و پایان فروش پردازنده ها برای آن) ، معمولاً از 1.5 - 2 سال تجاوز نمی کند. علاوه بر این ، این شرکت دارای چندین سیستم عامل به طور موازی است.

شرکت AMD، دارای سیاست سازگاری مخالف است. در پلت فرم خود را در صبح 3، برای همه نسل های آینده پردازنده هایی که پشتیبانی می کنند مناسب خواهد بود DDR3... حتی زمانی که پلت فرم به AM 3+و بعداً ، یا پردازنده های جدید جداگانه برای صبح 3، و یا پردازنده های جدید با مادربردهای قدیمی سازگار خواهند بود و تنها با تغییر پردازنده (بدون تغییر مادربرد ، RAM و ...) و فلش مادربرد می توان ارتقاء بی دردسر کیف پول را ایجاد کرد. هنگام تغییر نوع ، تنها تفاوت های ناسازگاری ممکن است وجود داشته باشد ، زیرا یک کنترل کننده حافظه متفاوت که در پردازنده تعبیه شده است مورد نیاز است. بنابراین سازگاری محدود است و توسط همه مادربردها پشتیبانی نمی شود. اما به طور کلی ، برای یک کاربر اقتصادی یا کسانی که عادت ندارند پلت فرم را هر 2 سال یکبار تغییر دهند - انتخاب سازنده پردازنده مشخص است - این AMD.

خنک کردن پردازنده

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

نتیجه.

همه جنبه های مهم موثر بر عملکرد و عملکرد پردازنده در نظر گرفته شده است. بیایید آنچه را که باید به آن توجه کنید تکرار کنیم:

  • سازنده را انتخاب کنید
  • معماری پردازنده
  • فرایند فنی
  • فرکانس پردازنده
  • تعداد هسته های پردازنده
  • اندازه و نوع حافظه پنهان پردازنده
  • پشتیبانی از فناوری و آموزش
  • خنک کننده با کیفیت

امیدواریم این مطالب به شما در درک و تصمیم گیری در مورد انتخاب پردازنده ای که انتظارات شما را برآورده می کند ، کمک کند.

ساول 9 سپتامبر 2015 ساعت 01:38 PM

پیاده سازی معماری موتور بازی چند رشته ای

  • وبلاگ اینتل ،
  • توسعه بازی ،
  • برنامه نویسی موازی ،
  • توسعه وب سایت
  • ترجمه

با ظهور پردازنده های چند هسته ای ، ایجاد موتور بازی بر اساس معماری موازی ضروری شد. استفاده از تمام پردازنده های موجود در سیستم - اعم از گرافیکی (GPU) و مرکزی (CPU) - امکانات بسیار بیشتری را نسبت به یک موتور تک رشته ای که تنها بر اساس GPU کار می کند ، باز می کند. به عنوان مثال ، استفاده از هسته های بیشتر CPU می تواند بهبود یابد جلوههای بصریبا افزایش تعداد اشیاء فیزیکی مورد استفاده در بازی و همچنین دستیابی به رفتار واقعی تر شخصیت از طریق پیاده سازی هوش مصنوعی پیشرفته (AI).
بیایید ویژگی های پیاده سازی معماری چند رشته ای موتور بازی را در نظر بگیریم.

1. معرفی

1.1 بررسی اجمالی

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

برای درک مطالب ارائه شده ، باید روشهای نوین خلق را به خوبی بلد باشید بازی های کامپیوتری، پشتیبانی چند رشته ای از موتورهای بازی یا بهبود عملکرد برنامه به طور کلی.

2. حالت اجرای موازی

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

2.1 حالتهای اجرا

برای اینکه مدیر حالت اجرا به طور م workثر کار کند ، توصیه می شود عملیات را با یک ساعت خاص همگام سازی کنید. این اجازه می دهد تا همه سیستم ها به طور همزمان اجرا شوند. در این حالت ، لازم نیست نرخ ساعت با نرخ فریم مطابقت داشته باشد. و طول دوره های ساعت ممکن است به فرکانس بستگی نداشته باشد. می توان آن را طوری انتخاب کرد که یک چرخه ساعت با زمان مورد نیاز برای ارسال یک فریم (صرف نظر از اندازه آن) مطابقت داشته باشد. به عبارت دیگر ، دفعات یا مدت زمان تیک ها با اجرای خاص مدیر دولتی تعیین می شود. شکل 1 یک حالت گام به گام "رایگان" را نشان می دهد ، که نیازی به تمام سیستم ها ندارد تا یک عملیات را در یک چرخه ساعت یکسان انجام دهند. حالتي كه در آن تمام سيستمها عملكردها را در يك چرخه ساعت كامل مي كنند حالت مرحله سخت "سخت" ناميده مي شود. در شکل 2 بصورت شماتیک نشان داده شده است.


شکل 1. حالت اجرا در حالت گام به گام رایگان

2.1.1 حالت گام به گام رایگان
در حالت گام به گام رایگان ، همه سیستم ها به طور مداوم برای یک دوره زمانی از پیش تعیین شده مورد نیاز برای تکمیل بخش بعدی محاسبات عمل می کنند. با این حال ، نام "رایگان" نباید به معنای واقعی کلمه گرفته شود: سیستم ها در یک لحظه دلخواه در زمان همزمان نمی شوند ، آنها فقط در انتخاب تعداد چرخه های ساعت مورد نیاز برای تکمیل مرحله بعدی "آزاد" هستند.
به طور معمول ، در این حالت ، ارسال یک اطلاع رسانی ساده از تغییر وضعیت به مدیر دولت کافی نیست. داده های به روز شده نیز باید ارسال شوند. این به این دلیل است که سیستمی که داده های به اشتراک گذاشته شده را تغییر داده است ممکن است در حال اجرا باشد در حالی که سیستم دیگری که منتظر داده است آماده به روز رسانی است. در این حالت ، حافظه بیشتری مورد نیاز است زیرا نسخه های بیشتری از داده ها باید ساخته شوند. بنابراین ، رژیم "آزاد" را نمی توان یک راه حل جهانی برای همه موارد دانست.
2.1.2 حالت مرحله سخت
در این حالت ، اجرای وظایف بر روی همه سیستم ها در یک چرخه ساعت کامل می شود. پیاده سازی این مکانیزم ساده تر است و نیازی به انتقال داده های به روز شده همراه با اعلان ندارد. در واقع ، در صورت لزوم ، یک سیستم می تواند به سادگی مقادیر جدیدی را از سیستم دیگر درخواست کند (البته در پایان چرخه اجرا).
در حالت سخت ، با توزیع محاسبات بین مراحل مختلف ، می توانید یک حالت شبه گام آزاد را اجرا کنید. به طور خاص ، این ممکن است برای محاسبات هوش مصنوعی مورد نیاز باشد ، جایی که یک "هدف کلی" اولیه در اولین چرخه ساعت محاسبه می شود ، که به تدریج در مراحل بعدی اصلاح می شود.


شکل 2. حالت اجرا در حالت سخت مرحله به مرحله

2.2 همگام سازی داده ها

تغییر داده های مشترک توسط چندین سیستم می تواند منجر به تعارض تغییرات شود. در این مورد ، سیستم پیام باید الگوریتمی برای انتخاب مقدار کل صحیح ارائه دهد. دو رویکرد اصلی بر اساس معیارهای زیر وجود دارد.
  • زمان: مقدار نهایی آخرین تغییری است که ایجاد شده است.
  • اولویت: کل عبارت است از تغییری که سیستم با بیشترین اولویت انجام می دهد. اگر اولویت سیستم ها یکسان است ، می توانید زمان تغییر را نیز در نظر بگیرید.
همه داده های منسوخ شده (برای هر یک از معیارها) می توانند به سادگی رونویسی شوند یا از صف اعلان حذف شوند.
از آنجا که مجموع بسته به ترتیب اعمال تغییرات می تواند متفاوت باشد ، استفاده از مقادیر نسبی کل داده ها بسیار دشوار است. در چنین مواردی باید از مقادیر مطلق استفاده کرد. سپس ، هنگام به روز رسانی داده های محلی ، سیستم ها می توانند به سادگی مقادیر قدیمی را با مقادیر جدید جایگزین کنند. راه حل بهینه انتخاب مقادیر مطلق یا نسبی بسته به موقعیت خاص است. به عنوان مثال ، داده های عمومی مانند موقعیت و جهت باید مطلق باشند زیرا ترتیب ایجاد تغییرات مهم است. به عنوان مثال ، برای سیستم تولید ذرات می توان از مقادیر نسبی استفاده کرد ، زیرا تمام اطلاعات مربوط به ذرات فقط در آن ذخیره می شود.

3. موتور

هنگام توسعه موتور ، تمرکز اصلی بر انعطاف پذیری مورد نیاز برای گسترش بیشتر عملکرد آن است. این کار را برای استفاده تحت محدودیت های خاص (به عنوان مثال حافظه) بهینه می کند.
موتور را می توان تقریباً به دو قسمت چارچوب و مدیران تقسیم کرد. چارچوب (بخش 3.1 را ببینید) شامل قسمتهایی از بازی است که در زمان اجرا تکرار می شوند ، یعنی در چندین مورد وجود دارند. همچنین شامل عناصر دخیل در اجرای حلقه اصلی بازی است. مدیران (بخش 3.2 را ببینید) اشیاء Singleton هستند که وظیفه اجرای منطق بازی را بر عهده دارند.
در زیر نمودار موتور بازی آمده است.


شکل 3. معماری کلی موتور

لطفاً توجه داشته باشید که ماژول های بازی کاربردی یا سیستم ها بخشی از موتور نیستند. موتور فقط آنها را با هم متحد می کند و به عنوان یک عنصر اتصال عمل می کند. این سازمان مدولار امکان بارگیری و تخلیه سیستم ها را در صورت نیاز فراهم می کند.

تعامل موتور و سیستم ها با استفاده از رابط ها انجام می شود. آنها به گونه ای اجرا می شوند که دسترسی موتور را به عملکردهای سیستم و سیستم ها را در اختیار مدیران موتور قرار می دهند.
نمودار موتور دقیق در ضمیمه A ، نمودار موتور ارائه شده است.

تقریباً همه سیستم ها از یکدیگر مستقل هستند (به بخش 2 ، "حالت اجرا همزمان" مراجعه کنید) ، یعنی می توانند بدون تأثیر بر عملکرد سیستم های دیگر ، اقدامات را به صورت موازی انجام دهند. با این حال ، هرگونه تغییر داده ها مشکلات خاصی را به همراه خواهد داشت ، زیرا سیستم ها باید با یکدیگر تعامل داشته باشند. تبادل اطلاعات بین سیستم ها در موارد زیر ضروری است:

  • اطلاع رسانی سیستم دیگر در مورد تغییر در داده های عمومی (به عنوان مثال ، موقعیت یا جهت اشیاء).
  • برای انجام عملکردهایی که برای این سیستم در دسترس نیست (به عنوان مثال ، سیستم هوش مصنوعی برای محاسبه خواص هندسی یا فیزیکی یک جسم برای انجام آزمایش تقاطع اشعه به سیستم مراجعه می کند).
در حالت اول ، از مدیر دولتی که در قسمت قبل توضیح داده شد می توان برای کنترل تبادل اطلاعات استفاده کرد. (برای اطلاعات بیشتر در مورد مدیر دولتی ، بخش 3.2.2 ، "مدیر دولت" را ببینید.)
در مورد دوم ، لازم است مکانیسم خاصی را اجرا کنید که خدمات یک سیستم را برای استفاده از سیستم دیگر ارائه می دهد. توضیحات کاملاین مکانیسم در بخش 3.2.3 ، "مدیر خدمات" توضیح داده شده است.

3.1 چارچوب

چارچوب برای ترکیب همه عناصر موتور استفاده می شود. این جایی است که موتور به استثنای مدیران ، که در سطح جهانی نمونه می گیرند ، راه اندازی می شود. همچنین اطلاعات مربوط به صحنه را ذخیره می کند. برای دستیابی به انعطاف پذیری بیشتر ، صحنه به عنوان یک صحنه اصطلاحاً عمومی که حاوی اشیاء عمومی است ، اجرا می شود. آنها ظروفی هستند که بخشهای مختلف عملکردی صحنه را ترکیب می کنند. برای جزئیات ، به بخش 3.1.2 مراجعه کنید.
حلقه اصلی بازی نیز در چارچوب پیاده سازی شده است. می توان آن را بصورت شماتیک به صورت زیر نشان داد.


شکل 4. حلقه اصلی بازی

موتور در محیطی با پنجره کار می کند ، بنابراین اولین قدم در حلقه بازی نیاز به پردازش پیامهای ناتمام پنجره سیستم عامل دارد. اگر این کار انجام نشود ، موتور به پیام های سیستم عامل پاسخ نمی دهد. در مرحله دوم ، زمانبند وظایف را با استفاده از مدیر وظیفه تعیین می کند. این فرایند در بخش 3.1.1 زیر شرح داده شده است. پس از آن ، مدیر دولت (به بخش 3.2.2 مراجعه کنید) اطلاعاتی را در مورد تغییرات ایجاد شده در سیستم های موتور ارسال می کند که می تواند بر کار آنها تأثیر بگذارد. در آخرین مرحله ، بسته به وضعیت اجرا ، چارچوب تعیین می کند که آیا موتور را خاموش می کند یا ادامه می دهد ، به عنوان مثال ، برای حرکت به صحنه بعدی. اطلاعات مربوط به وضعیت موتور توسط مدیر محیط ذخیره می شود. برای جزئیات به بخش 3.2.4 مراجعه کنید.

3.1.1 زمانبند
زمانبند یک ساعت مرجع اجرا با نرخ مشخص تولید می کند. اگر حالت معیار مستلزم این است که عملیات بعدی بلافاصله پس از اتمام عملیات قبلی شروع شود ، بدون انتظار برای پایان ساعت ، فرکانس می تواند نامحدود باشد.
در سیگنال ساعت ، زمانبندی از مدیر وظیفه برای قرار دادن سیستم ها در حالت اجرا استفاده می کند. در حالت قدم آزاد (بخش 2.1.1) ، زمانبند از سیستم ها نظرخواهی می کند تا تعیین کند که به چند چرخه ساعت برای تکمیل کار نیاز دارند. بر اساس نتایج نظرسنجی ، زمانبند تعیین می کند که کدام سیستم ها برای اجرا آماده هستند و کدامیک از آنها کار خود را در یک مرحله زمانی خاص به پایان می رسانند. اگر زمان اجرای سیستم بیشتر طول بکشد ، زمانبند می تواند تعداد تیک ها را تغییر دهد. در حالت گام سخت (بخش 2.1.2) ، همه سیستم ها در یک چرخه ساعت شروع و به پایان می رسند ، بنابراین زمانبندی منتظر است تا تمام سیستمها اجرا را به پایان برسانند.
3.1.2 صحنه و اشیاء همه کاره
صحنه و اشیاء عمومی محفظه ای برای عملکردهایی هستند که در سیستم های دیگر پیاده سازی شده اند. آنها فقط برای تعامل با موتور در نظر گرفته شده اند و هیچ عملکرد دیگری را انجام نمی دهند. با این حال ، می توان آنها را برای استفاده از عملکردهای موجود در سیستم های دیگر گسترش داد. این امکان اتصال شل را فراهم می کند. در واقع ، یک صحنه و اشیاء جهانی می توانند از ویژگی های سیستم های دیگر بدون محدودیت به آنها استفاده کنند. این ویژگی است که وابستگی سیستم ها به یکدیگر را حذف می کند و آنها را قادر می سازد به طور همزمان کار کنند.
نمودار زیر فرمت یک صحنه و شیء جهانی را نشان می دهد.


شکل 5. گسترش صحنه و شیء جهانی

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

نمودار دقیق تعامل موتور و سیستم ها در ضمیمه B ، "طرح تعامل موتور و سیستم ها" آمده است.
لازم به ذکر است که صحنه عمومی و شیء عمومی مسئول ثبت همه "برنامه های افزودنی" خود در مدیر حالت هستند تا همه برنامه های افزودنی از تغییرات ایجاد شده توسط سایر برنامه های افزودنی (یعنی سایر سیستم ها) مطلع شوند. به عنوان مثال ، یک برنامه افزودنی گرافیکی برای دریافت اعلانات مربوط به موقعیت و جهت گیری ایجاد شده توسط افزونه فیزیکی ثبت شده است.
برای جزئیات بیشتر در مورد اجزای سیستم ، بخش 5.2 ، اجزای سیستم را ببینید.

3.2 مدیران

مدیران کار موتور را کنترل می کنند. آنها اشیاء Singleton هستند ، یعنی هر نوع مدیر تنها در یک نمونه در دسترس است. این امر ضروری است زیرا تکرار منابع مدیران به ناچار منجر به افزونگی و تأثیر منفی بر عملکرد می شود. علاوه بر این ، مدیران مسئول اجرای وظایف مشترک برای همه سیستم ها هستند.
3.2.1 مدیر وظیفه
مدیر وظیفه مسئول مدیریت وظایف سیستم در مجموعه نخ است. مجموعه نخ برای هر پردازنده یک نخ ایجاد می کند تا مقیاس پذیری مطلوب n-fold را تضمین کند و از اختصاص نخ های غیر ضروری جلوگیری کند ، که باعث می شود وظایف غیر ضروری در سیستم عامل حذف نشوند.

زمانبندی لیستی از وظایف برای انجام وظیفه و همچنین اطلاعاتی در مورد اینکه کدام کارها باید منتظر بمانند را برای مدیر وظیفه ارسال می کند. او این اطلاعات را از سیستم های مختلف... هر سیستم فقط یک کار برای تکمیل دارد. این روش تجزیه عملکردی نامیده می شود. با این حال ، برای پردازش داده ها ، هر وظیفه ای را می توان به تعدادی دلخواه از زیر وظایف (تجزیه داده ها) تقسیم کرد.
در زیر نمونه ای از توزیع وظایف بین نخ ها برای یک سیستم چهار هسته ای آورده شده است.


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

علاوه بر پردازش درخواستهای زمانبندی برای دسترسی به کارهای اصلی ، مدیر وظیفه می تواند در حالت راه اندازی اولیه کار کند. به طور متوالی سیستم ها را از هر موضوع نظرسنجی می کند تا بتوانند ذخیره سازی داده های محلی مورد نیاز برای کار را آغاز کنند.
نکاتی برای پیاده سازی مدیر وظیفه در ضمیمه D ، نکاتی برای پیاده سازی وظایف آورده شده است.

3.2.2 مدیر دولتی
مدیر دولتی بخشی از موتور پیام رسانی است. تغییرات را رصد می کند و اعلان های مربوط به آنها را به همه سیستم هایی که ممکن است تحت تأثیر این تغییرات قرار گیرند ارسال می کند. به منظور عدم ارسال اعلان های غیر ضروری ، مدیر دولت اطلاعاتی را در مورد سیستم هایی که در یک مورد خاص اطلاع رسانی می کند ، ذخیره می کند. این مکانیسم با استفاده از الگوی Observer پیاده می شود (به ضمیمه C ، Observer (الگوی طراحی) مراجعه کنید). به اختصار، قالب داده شدهشامل استفاده از "ناظر" است که هرگونه تغییر در موضوع را تحت نظر دارد ، در حالی که نقش واسطه بین آنها توسط کنترل کننده تغییر انجام می شود.

مکانیسم به شرح زیر عمل می کند. 1. ناظر به کنترل کننده تغییر (یا مدیر حالت) می گوید که کدام نهادها را می خواهد برای تغییرات ردیابی کند. 2. سوژه تمام تغییرات خود را به کنترل کننده اطلاع می دهد. 3. بر روی سیگنال از چارچوب ، کنترل کننده به مشاهده کننده در مورد تغییرات موضوع اطلاع می دهد. 4- ناظر درخواستی را برای دریافت اطلاعات به روز شده به سوژه ارسال می کند.

در حالت پله آزاد (بخش 2.1.1 را ببینید) ، اجرای این مکانیسم تا حدودی پیچیده تر می شود. ابتدا ، داده های به روز شده باید همراه با اعلان تغییر ارسال شوند. در این حالت ، ارسال در صورت درخواست قابل اجرا نیست. در واقع ، اگر در زمان دریافت درخواست ، سیستم مسئول تغییرات هنوز به پایان نرسیده باشد ، نمی تواند داده های به روز شده را ارائه دهد. دوم ، اگر یک سیستم هنوز آماده دریافت تغییرات در پایان یک چرخه ساعت نیست ، مدیر دولت باید داده های تغییر یافته را نگه دارد تا زمانی که همه سیستمهای ثبت شده برای دریافت آن آماده باشند.

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

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


شکل 7. اطلاع از تغییرات داخلی یک شیء عمومی

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

3.2.3 مدیر خدمات
مدیر خدمات به سیستم ها دسترسی به ویژگی هایی را در سیستم های دیگر ارائه می دهد که در غیر این صورت برای آنها در دسترس نخواهد بود. درک این نکته ضروری است که توابع از طریق رابط ها قابل دسترسی هستند ، نه مستقیم. اطلاعات مربوط به رابط های سیستم نیز در مدیر سرویس ذخیره می شود.
برای از بین بردن وابستگی سیستم ها به یکدیگر ، هر یک از آنها تنها مجموعه کوچکی از خدمات را دارند. علاوه بر این ، توانایی استفاده از یک سرویس خاص توسط خود سیستم تعیین نمی شود ، بلکه توسط مدیر خدمات تعیین می شود.


شکل 8. نمونه ای از مدیر خدمات

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

3.2.4 مدیر محیط زیست
  • مدیر محیط ، محیط زمان کار موتور را فراهم می کند. توابع آن را می توان به صورت مشروط به گروه های زیر تقسیم کرد.
  • متغیرها: نام و مقادیر متغیرهای متداول مورد استفاده در تمام قسمتهای موتور. معمولاً مقادیر متغیرها هنگام بارگیری یا مشخص شدن صحنه تعیین می شود تنظیمات سفارشی... موتور و سیستم های مختلف می توانند با ارسال درخواست به آنها دسترسی پیدا کنند.
  • اجرا: داده های اجرایی ، مانند تکمیل صحنه یا اجرای برنامه. این پارامترها را هم خود سیستم و هم موتور می توانند تنظیم و درخواست کنند.
3.2.5 مدیر پلت فرم
مدیر پلت فرم چکیده ای را برای فراخوانی های سیستم عامل پیاده سازی می کند و همچنین فراتر از یک انتزاع ساده عملکردهای بیشتری را ارائه می دهد. مزیت این روش این است که چندین عملکرد معمولی را در یک تماس واحد در بر می گیرد. به این معنا که لازم نیست آنها برای هر تماس گیرنده جداگانه اجرا شوند و اطلاعات مربوط به تماس های سیستم عامل را بیش از حد بارگذاری کنند.
به عنوان مثال ، تماس با مدیر پلت فرم برای بارگیری یک کتابخانه پویا سیستم را در نظر بگیرید. این نه تنها سیستم را بار می کند ، بلکه نقاط ورودی تابع را نیز دریافت می کند و تابع راه اندازی کتابخانه را فرا می خواند. مدیر همچنین توصیف کننده کتابخانه را ذخیره می کند و پس از اتمام موتور آن را تخلیه می کند.

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

4. رابط ها

رابط ها وسیله ارتباطی بین چارچوب ، مدیران و سیستم ها هستند. چارچوب و مدیران بخشی از موتور هستند ، بنابراین می توانند مستقیماً با یکدیگر تعامل داشته باشند. سیستم ها به موتور تعلق ندارند. علاوه بر این ، همه آنها عملکردهای متفاوتی را انجام می دهند ، که منجر به ایجاد یک روش واحد برای تعامل با آنها می شود. از آنجایی که سیستم ها نمی توانند مستقیماً با مدیران تعامل داشته باشند ، باید راه دسترسی متفاوتی را ارائه دهند. با این حال ، همه عملکردهای مدیران نباید برای سیستم ها باز باشد. برخی از آنها فقط در چارچوب موجود است.

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

4.1 رابط های موضوع و مشاهده گر

هدف اصلی رابطهای سوژه و مشاهده کننده این است که ثبت کنند که کدام ناظران در مورد آنها اعلان ارسال کنند و چنین اعلانهایی را ارسال کنند. ثبت و قطع ارتباط با ناظر عملکردهای استاندارد برای همه موضوعات است که در اجرای رابط آنها گنجانده شده است.

4.2 رابط های مدیر

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

4.3 رابط های سیستم

برای اینکه یک چارچوب بتواند به اجزای سیستم دسترسی داشته باشد ، نیاز به رابط دارد. بدون آنها ، حمایت همه سیستم جدیدموتور باید جداگانه اجرا شود
هر سیستم شامل چهار جزء است ، بنابراین باید چهار رابط وجود داشته باشد. یعنی: سیستم ، صحنه ، شیء و وظیفه. توصیف همراه با جزئیاتبه بخش 5 ، سیستم ها مراجعه کنید. رابط ها ابزار دسترسی به اجزا هستند. رابط های سیستم به شما امکان ایجاد و حذف صحنه ها را می دهد. رابط های صحنه ، به نوبه خود ، به شما امکان می دهد اشیاء را ایجاد و از بین ببرید ، و همچنین اطلاعات مربوط به وظیفه اصلی سیستم را درخواست کنید. رابط وظیفه عمدتا توسط مدیر وظیفه هنگام تنظیم وظایف در مجموعه نخ استفاده می شود.
از آنجا که صحنه و جسم ، به عنوان بخش هایی از سیستم ، باید با یکدیگر و با صحنه جهانی و شیئی که به آن متصل شده اند ، تعامل داشته باشند ، رابط های آنها نیز بر اساس رابط های سوژه و مشاهده گر ایجاد می شود.

4.4 تغییر رابط ها

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

5. سیستم ها

سیستم ها بخشی از موتور هستند که وظیفه اجرای عملکرد بازی را بر عهده دارند. آنها تمام کارهای اساسی را انجام می دهند که بدون آنها موتور منطقی نیست. تعامل بین موتور و سیستم ها با استفاده از رابط ها انجام می شود (بخش 4.3 ، "رابط های سیستم" را ببینید). این امر به منظور بارگیری بیش از حد موتور با اطلاعات مربوط به انواع سیستم ها ضروری است. رابط ها افزودن یک سیستم جدید را بسیار آسان تر می کنند زیرا موتور نیازی به در نظر گرفتن تمام جزئیات پیاده سازی ندارد.

5.1 انواع

سیستم های موتور را می توان تقریباً به چند دسته از پیش تعریف شده مربوط به آن تقسیم کرد اجزای استانداردبازی ها. به عنوان مثال: هندسه ، گرافیک ، فیزیک (برخورد جامد) ، صدا ، پردازش ورودی ، هوش مصنوعی و انیمیشن.
سیستم هایی با عملکردهای غیر استاندارد در یک گروه جداگانه قرار می گیرند. درک این نکته ضروری است که هر سیستمی که داده ها را برای یک دسته خاص تغییر می دهد ، باید از رابط آن دسته آگاه باشد ، زیرا موتور چنین اطلاعاتی را ارائه نمی دهد.

5.2 اجزای سیستم

چندین م componentsلفه برای هر سیستم باید پیاده سازی شود. برخی از آنها عبارتند از: سیستم ، صحنه ، شیء و وظیفه. همه این اجزا برای تعامل با قسمت های مختلف موتور استفاده می شوند.
نمودار زیر تعامل بین اجزای مختلف را نشان می دهد.


شکل 9. اجزای سیستم

نمودار مفصل اتصالات بین سیستم های موتور در ضمیمه B ، "طرح تعامل بین موتور و سیستم ها" آمده است.

5.2.1 سیستم
جزء "سیستم" یا به سادگی سیستم ، مسئول راه اندازی اولیه منابع سیستم است که عملاً در حین کار موتور تغییر نمی کند. به عنوان مثال ، سیستم گرافیک آدرس منابع را تجزیه و تحلیل می کند تا تعیین کند که در کجا قرار دارد و هنگام بارگیری سرعت استفاده از منبع را افزایش می دهد. همچنین وضوح صفحه را تنظیم می کند.
سیستم اصلی ترین ورودی چارچوب است. این اطلاعات در مورد خود (به عنوان مثال ، نوع سیستم) ، و همچنین روش هایی برای ایجاد و حذف صحنه ها ارائه می دهد.
5.2.2 صحنه
جزء صحنه یا صحنه سیستم مسئول مدیریت منابع مرتبط با صحنه کنونی است. صحنه عمومی از صحنه های سیستم برای افزایش عملکرد با استفاده از قابلیت های آنها استفاده می کند. به عنوان مثال ، یک صحنه فیزیکی است که برای ایجاد یک دنیای بازی جدید استفاده می شود و هنگام اولیه سازی صحنه ، نیروهای گرانش را در آن تعیین می کند.
صحنه ها روش هایی را برای ایجاد و از بین بردن اشیا ، و همچنین یک جزء "وظیفه" برای پردازش صحنه و روشی برای دسترسی به آن ارائه می دهند.
5.2.3 یک شیء
جزء شیء یا شیء سیستم متعلق به صحنه است و معمولاً با آنچه کاربر روی صفحه می بیند مرتبط است. یک شیء عمومی از یک شیء سیستم استفاده می کند تا با افشای خواص خود به عنوان ویژگی خاص ، عملکرد را گسترش دهد.
یک مثال ، گسترش هندسی ، گرافیکی و فیزیکی یک شیء عمومی برای نمایش تیر چوبی روی صفحه است. خواص هندسی شامل موقعیت ، جهت و مقیاس جسم است. سیستم گرافیکی از یک شبکه مخصوص برای نمایش آن استفاده می کند. و سیستم فیزیکی به آن ویژگیهای یک جسم سفت و سخت را برای محاسبه فعل و انفعالات با اجسام دیگر و نیروهای گرانش وارد می کند.

در موارد خاص ، یک شیء سیستم باید تغییرات مربوط به یک شیء عمومی یا یکی از برنامه های افزودنی آن را محاسبه کند. برای این منظور ، می توانید رابطه خاصی ایجاد کنید که تغییرات ایجاد شده را ردیابی کند.

5.2.4 وظیفه
جزء وظیفه یا وظیفه سیستم برای پردازش صحنه استفاده می شود. وظیفه فرمان به روز رسانی صحنه را از مدیر وظیفه دریافت می کند. این یک سیگنال برای اجرای عملکردهای سیستم بر روی اجسام صحنه است.
اجرای یک وظیفه را می توان به زیر وظایف تقسیم کرد و آنها را با استفاده از مدیر وظیفه در تعداد بیشتری از نخ ها توزیع کرد. آی تی راه مناسبمقیاس گذاری موتور به چندین پردازنده این روش تجزیه داده نامیده می شود.
اطلاعات مربوط به تغییرات شی در روند به روزرسانی وظایف صحنه به مدیر دولت منتقل می شود. برای اطلاع از جزئیات مدیر دولتی ، بخش 3.2.2 را ببینید.

6. ترکیب همه اجزاء

همه عناصری که در بالا توضیح داده شد به یکدیگر مربوط هستند و بخشی از یک کل هستند. کار موتور را می توان تقریباً به چند مرحله تقسیم کرد ، که در بخشهای بعدی توضیح داده شده است.

6.1 مرحله اولیه سازی

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


شکل 10. راه اندازی مدیران و سیستم های موتور

6.2 مرحله بارگیری صحنه

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


شکل 11. آغاز صحنه و شیء جهانی

6.3 مرحله چرخه بازی

  • مدیر پلت فرم برای رسیدگی به پیام های پنجره و سایر عناصر لازم برای کارکرد پلتفرم فعلی استفاده می شود.
  • سپس کنترل به زمانبندی منتقل می شود و منتظر می ماند تا پایان ساعت به کار خود ادامه دهد.
  • در پایان ساعت ، در حالت گام به گام رایگان ، زمانبند بررسی می کند که کدام کارها انجام شده است. تمام کارهای تکمیل شده (یعنی آماده اجرا) به مدیر وظیفه منتقل می شوند.
  • زمانبند تعیین می کند که کدام کارها در تیک فعلی تکمیل می شوند و منتظر تکمیل آنهاست.
  • در حالت مرحله سخت ، این عملیات با هر اندازه تکرار می شود. زمانبند تمام وظایف را به مدیر ارسال می کند و منتظر انجام آنها می ماند.
6.3.1 تکمیل کار
کنترل به مدیر وظیفه منتقل می شود.
  • این صف همه وظایف دریافتی را تشکیل می دهد ، سپس ، با ظاهر شدن موضوعات رایگان ، اجرای آنها را آغاز می کند. (فرایند اجرای وظایف بسته به سیستم متفاوت است. سیستم ها می توانند تنها با یک وظیفه کار کنند یا چندین کار را همزمان از صف پردازش کنند ، بنابراین اجرای موازی را درک می کنند.)
  • در حین اجرا ، وظایف می توانند با کل صحنه یا فقط با اشیاء خاص کار کنند و داده های داخلی آنها را تغییر دهند.
  • سیستم ها باید از هرگونه تغییر در داده های عمومی (به عنوان مثال موقعیت یا جهت) مطلع شوند. بنابراین ، هنگامی که کار اجرا می شود ، صحنه یا شیء سیستم مشاهده کننده را از هرگونه تغییر مطلع می کند. در این مورد ، ناظر در واقع به عنوان یک کنترل کننده تغییر عمل می کند ، که بخشی از مدیر دولت است.
  • کنترل کننده تغییر صف اعلان های تغییر را برای پردازش بیشتر ایجاد می کند. تغییراتی را که بر ناظر داده شده تأثیر نمی گذارد نادیده می گیرد.
  • برای استفاده از خدمات خاص ، یک کار با مدیر خدمات تماس می گیرد. مدیر خدمات همچنین به شما امکان می دهد ویژگی های سیستم های دیگر را که برای انتقال در موتور پیام رسانی در دسترس نیستند تغییر دهید (به عنوان مثال ، سیستم ورود داده ها پسوند صفحه را تغییر می دهد - ویژگی سیستم گرافیکی).
  • Tasks همچنین می تواند برای دریافت متغیرهای محیطی و تغییر وضعیت اجرا با مدیر محیط تماس بگیرید (اجرای مکث ، رفتن به صحنه بعدی و غیره).


شکل 12. مدیر وظایف و وظایف

6.3.2. به روز رسانی داده ها
پس از اتمام تمام وظایف مربوط به تیک فعلی ، حلقه اصلی بازی با مدیر حالت تماس می گیرد تا مرحله به روز رسانی داده ها را شروع کند.
  • مدیر دولت به نوبه خود هر یک از کنترلرهای تغییر خود را برای ارسال اعلانات انباشته فرا می خواند. کنترل کننده بررسی می کند که به کدام ناظر اعلان تغییر را برای هر موضوع ارسال کند.
  • سپس با ناظر مورد نظر تماس می گیرد و آن را از تغییر مطلع می کند (اعلان همچنین دارای اشاره گر به رابط موضوع است). در حالت قدم آزاد ، مشاهده گر داده های تغییر یافته را از کنترل کننده تغییر دریافت می کند ، اما در حالت قدم سخت ، باید آن را از خود موضوع درخواست کند.
  • به طور معمول ، ناظران علاقمند به دریافت اعلانات تغییر شیء سیستم ، دیگر اشیاء سیستم هستند که با همان شیء عمومی مرتبط هستند. این به شما امکان می دهد روند ایجاد تغییرات را به چندین وظیفه تقسیم کنید که می توانند به طور موازی انجام شوند. برای ساده سازی فرآیند همگام سازی ، می توانید همه افزونه های Generic Object مربوطه را در یک کار واحد ترکیب کنید.
6.3.3. بررسی پیشرفت و خروج
آخرین مرحله در حلقه بازی بررسی وضعیت زمان اجرا است. چندین حالت از این قبیل وجود دارد: در حال اجرا ، مکث ، صحنه بعدی و غیره اگر حالت "در حال اجرا" انتخاب شود ، تکرار بعدی حلقه شروع می شود. حالت خروجی به معنی پایان حلقه ، انتشار منابع و خروج از برنامه است. حالتهای دیگر را می توان اجرا کرد ، به عنوان مثال ، "مکث" ، "صحنه بعدی" و غیره.

7. نتیجه گیری

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

الگوی Observer تابعی از موتور پیام رسانی است. مهم است که نحوه عملکرد آن را به خوبی درک کنید تا بهترین راه برای پیاده سازی آن برای موتور انتخاب شود. در واقع ، این مکانیزمی برای تعامل بین سیستم های مختلف است که همگام سازی داده های مشترک را تضمین می کند.

مدیریت وظیفه نقش مهمی در متعادل سازی بار دارد. پیوست D نکاتی را در مورد ایجاد مدیر وظیفه موثر برای موتور بازی ارائه می دهد.

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

ضمیمه A. شماتیک موتور

پردازش از حلقه اصلی بازی شروع می شود (شکل 4 ، "حلقه اصلی بازی" را ببینید).


پیوست B. طرح تعامل بین موتور و سیستم ها


ضمیمه C. ناظر (الگوی طراحی)

الگوی ناظر در کتاب تکنیک های طراحی شی گرا به تفصیل شرح داده شده است. الگوهای طراحی "، E. گاما ، R. Helm ، R. Johnson ، J. Vlissides (" الگوهای طراحی: عناصر نرم افزارهای شیء استفاده مجدد "، گاما E. ، Helm R. ، Johnson R. ، Vlissides J.). بر زبان انگلیسیاولین بار در سال 1995 توسط ادیسون وسلی منتشر شد.

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


شکل 13. الگوی ناظر

مراحل استفاده از این مدل در زیر توضیح داده شده است.

  1. کنترل کننده تغییر ناظر و موضوعی را که می خواهد برای آن مطلع شود ثبت می کند.
  2. کنترل تغییر در واقع یک ناظر است. به جای مشاهده کننده ، همراه با موضوع ، خود را ثبت می کند. کنترل کننده تغییرات همچنین فهرست ناظران و موضوعات ثبت شده در آنها را حفظ می کند.
  3. یک موضوع یک ناظر (یعنی یک کنترل کننده تغییر) را به لیست ناظران خود اضافه می کند که می خواهند از تغییرات آن مطلع شوند. گاهی اوقات نوع تغییر به طور اضافی نشان داده می شود ، که تعیین می کند ناظر به کدام تغییرات علاقه مند است. این به شما امکان می دهد تا روند ارسال اعلان های تغییر را ساده کنید.
  4. هنگام تغییر داده ها یا حالت ، شخص از طریق مکانیزم تماس به ناظر اطلاع می دهد و اطلاعات مربوط به انواع تغییر یافته را ارسال می کند.
  5. کنترل کننده تغییر صف اعلان ها را در مورد تغییرات ایجاد می کند و منتظر سیگنالی است تا آنها را در اشیاء و سیستم ها توزیع کند.
  6. در طول تخصیص ، کنترل کننده تغییر با ناظران واقعی صحبت می کند.
  7. ناظران اطلاعات مربوط به داده ها یا وضعیت تغییر یافته را از موضوع درخواست می کنند (یا آنها را به همراه اعلان ها دریافت می کنند).
  8. قبل از حذف ناظر ، یا اگر دیگر نیازی به اطلاع رسانی در مورد موضوعی نیست ، اشتراک آن موضوع را در کنترل تغییر حذف می کند.
تعداد زیادی وجود دارد روش های مختلفاجرای توزیع وظیفه با این حال ، بهتر است تعداد رشته های کارگر را با تعداد پردازنده های منطقی پلتفرم موجود برابر نگه دارید. سعی کنید وظایف را به یک موضوع خاص گره نزنید. زمان اجرای وظایف سیستم های مختلف همیشه منطبق نیست. این می تواند منجر به توزیع ناهموار حجم کار بین نخ کارگران شود و بر کارایی تأثیر بگذارد. برای سهولت این فرایند ، از کتابخانه های مدیریت وظیفه مانند استفاده کنید

پس از پرداختن به نظریه چند رشته ای ، اجازه دهید یک مثال عملی را در نظر بگیریم - پنتیوم 4. در حال حاضر در مرحله توسعه این پردازنده ، مهندسان اینتل بدون افزایش تغییرات در رابط برنامه به کار بر روی افزایش عملکرد خود ادامه دادند. پنج روش ساده در نظر گرفته شد:
1. فرکانس ساعت را افزایش دهید.
2. قرار دادن دو پردازنده بر روی یک میکرو مدار.
3. معرفی بلوک های عملکردی جدید.
1. گسترش نوار نقاله.
2. استفاده از چند رشته ای.
واضح ترین راه برای بهبود عملکرد ، افزایش سرعت ساعت بدون تغییر پارامترهای دیگر است. به طور معمول ، هر مدل پردازنده بعدی دارای سرعت کلاک کمی بیشتر از مدل قبلی است. متأسفانه ، با افزایش مستقیم فرکانس ساعت ، توسعه دهندگان با دو مشکل روبرو می شوند: افزایش مصرف برق (که برای رایانه های قابل حمل و سایر دستگاه های محاسباتی که با باتری کار می کنند مهم است) و گرم شدن بیش از حد (که مستلزم ایجاد گرمای کارآمدتر است) غرق می شود)
روش دوم - قرار دادن دو پردازنده روی یک میکرو مدار - نسبتاً ساده است ، اما شامل دو برابر شدن مساحت اشغال شده توسط میکرو مدار می شود. اگر هر پردازنده دارای حافظه پنهان مخصوص خود باشد ، تعداد تراشه های یک بشقاب به نصف می رسد ، اما این به معنی دو برابر شدن هزینه های تولید نیز می باشد. با ارائه حافظه پنهان مشترک برای هر دو پردازنده ، می توان از افزایش چشمگیر ردپا جلوگیری کرد ، اما در این مورد مشکل دیگری بوجود می آید - میزان حافظه نهان در هر پردازنده نصف می شود ، و این ناگزیر بر عملکرد تأثیر می گذارد. علاوه بر این ، در حالی که برنامه های حرفه ای سرور قادر به استفاده کامل از منابع چند پردازنده هستند ، در برنامه های معمولی رومیزی ، موازی کاری داخلی بسیار کمتر توسعه یافته است.
معرفی بلوک های عملکردی جدید نیز دشوار نیست ، اما ایجاد تعادل در اینجا مهم است. اگر میکرو مدار نتواند دستورات لازم را به نوار نقاله با چنان سرعتی بدهد که بتوان همه این بلوک ها را بارگیری کرد ، در دوازده بلوک ALU چه فایده ای دارد؟
یک نوار نقاله با افزایش تعداد پله ها ، قادر به تقسیم وظایف به بخش های کوچکتر و پردازش آنها در بازه های زمانی کوتاه ، از یک سو ، بهره وری را افزایش می دهد ، از سوی دیگر ، پیامدهای منفی تغییرات پیش بینی نشده ، از دست رفتن حافظه پنهان ، وقفه ها را افزایش می دهد. و سایر رویدادهایی که دستورات پردازش جریان عادی در پردازنده را مختل می کند. علاوه بر این ، برای درک کامل قابلیت های خط لوله توسعه یافته ، لازم است فرکانس ساعت را افزایش دهیم ، و این ، همانطور که می دانیم ، منجر به افزایش مصرف برق و اتلاف گرما می شود.
در نهایت ، می توانید چند رشته ای را پیاده سازی کنید. مزیت این فناوری این است که یک رشته نرم افزاری اضافی را برای آوردن منابع سخت افزاری که در غیر این صورت بیکار هستند معرفی می کند. با توجه به نتایج مطالعات تجربی ، توسعه دهندگان اینتل دریافتند که افزایش 5 درصدی سطح تراشه هنگام اجرای چند رشته ای برای بسیاری از برنامه ها ، 25 درصد افزایش عملکرد دارد. اولین پردازنده اینتل که از چند رشته ای پشتیبانی می کرد Xeon در سال 2002 بود. متعاقباً با شروع 3.06 گیگاهرتز ، چند رشته ای در خط پنتیوم 4. معرفی شد. اینتل پیاده سازی چند رشته ای را در ابرتیدینگ Pentium 4 نامیده است.
اصل اساسی hyper -threading اجرای همزمان دو نخ نرم افزاری (یا فرآیندها است - پردازنده بین فرایندها و نخ های نرم افزاری تمایز قائل نمی شود). سیستم عامل در حال بررسی موضوع هایپر رشته است پردازنده پنتیوم 4 به عنوان یک مجموعه دو پردازنده با حافظه پنهان مشترک و حافظه اصلی. سیستم عامل زمانبندی را برای هر رشته برنامه به طور جداگانه انجام می دهد. بنابراین ، دو برنامه می توانند همزمان اجرا شوند. مثلا، برنامه پستمی تواند پیام ها را ارسال یا دریافت کند زمینهدر حالی که کاربر با برنامه تعاملی ارتباط برقرار می کند - یعنی دایمون و برنامه کاربر به طور همزمان اجرا می شوند ، گویی دو پردازنده در دسترس سیستم هستند.
برنامه های کاربردی که می توانند به عنوان چندین رشته برنامه اجرا شوند ، می توانند از هر دو "پردازنده مجازی" استفاده کنند. به عنوان مثال ، برنامه های ویرایش ویدئو معمولاً به کاربران اجازه می دهد تا فیلترها را روی همه فریم ها اعمال کنند. این فیلترها روشنایی ، کنتراست ، تعادل رنگ و سایر ویژگی های فریم ها را تنظیم می کنند. در چنین شرایطی ، برنامه می تواند یک پردازنده مجازی را برای پردازش فریم های زوج و دیگری را برای پردازش فریم های فرد اختصاص دهد. در این حالت ، دو پردازنده کاملاً مستقل از یکدیگر کار خواهند کرد.
از آنجا که نخ های نرم افزاری به منابع سخت افزاری یکسانی دسترسی دارند ، هماهنگی این موضوعات ضروری است. در زمینه هایپرتیدینگ ، اینتل چهار استراتژی مفید برای مدیریت به اشتراک گذاری منابع را شناسایی کرده است: تکرار منابع و اشتراک سخت ، آستانه و منابع کامل. بیایید نگاهی به این استراتژی ها بیندازیم.
بیایید با تکرار منابع شروع کنیم. همانطور که می دانید ، برخی منابع به منظور سازماندهی جریان برنامه ها کپی می شوند. به عنوان مثال ، از آنجا که هر رشته برنامه نیاز به کنترل فردی دارد ، شمارنده دستورالعمل دوم مورد نیاز است. علاوه بر این ، لازم است یک جدول دوم برای نگاشت ثبت های معماری (EAX ، EBX ، و غیره) در ثبت های فیزیکی وارد کنید. به همین ترتیب ، کنترل وقفه تکراری است ، زیرا دست زدن به وقفه برای هر نخ به صورت جداگانه انجام می شود.
در زیر تکنیک است تقسیم سختمنابع (تقسیم منابع تقسیم شده) بین جریان برنامه. به عنوان مثال ، اگر پردازنده یک صف بین دو مرحله عملکردی خط لوله ایجاد کند ، نیمی از شکاف ها را می توان به نخ 1 و نصف دیگر را به نخ 2 داد. اشتراک منابع به راحتی قابل اجرا است ، منجر به عدم تعادل نمی شود و استقلال کامل رشته های برنامه را از یکدیگر تضمین می کند. با به اشتراک گذاری کامل همه منابع ، یک پردازنده در واقع به دو تبدیل می شود. از سوی دیگر ، ممکن است موقعیتی پیش بیاید که در یک نخ برنامه از منابعی استفاده کند که می تواند برای نخ دوم مفید باشد ، اما برای آنها از قدرت دسترسی برخوردار نیست. در نتیجه ، منابعی که در غیر اینصورت می توان از آنها استفاده کرد ، بیکار هستند.
نقطه مقابل اشتراک سخت ، به اشتراک گذاری کامل منابع است. در این طرح ، هر رشته برنامه می تواند به منابع لازم دسترسی داشته باشد و به ترتیب دریافت درخواست دسترسی ارائه می شود. وضعیتی را در نظر بگیرید که در آن یک جریان سریع ، که عمدتاً شامل عملیات جمع و تفریق است ، با یک جریان آهسته که عملیات ضرب و تقسیم را پیاده می کند ، وجود دارد. اگر دستورالعمل ها از حافظه سریعتر از عملیات ضرب و تقسیم فراخوانی شوند ، تعداد دستورالعمل هایی که درون نخ آهسته فراخوانی شده و در خط لوله قرار گرفته اند به تدریج افزایش می یابد. در نهایت ، این دستورات صف را پر می کنند ، در نتیجه ، جریان سریع به دلیل کمبود فضا متوقف می شود. به اشتراک گذاری کامل منابع مشکل استفاده بهینه از منابع مشترک را حل می کند ، اما عدم تعادل در مصرف آنها ایجاد می کند - یک موضوع می تواند موضوع دیگر را کند یا متوقف کند.
طرح میانی در چارچوب اشتراک منابع آستانه اجرا می شود. طبق این طرح ، هر رشته برنامه می تواند به طور پویا مقدار معینی (محدود) منابع دریافت کند. هنگامی که برای منابع تکراری اعمال می شود ، این رویکرد به دلیل عدم توانایی در دستیابی به منابع ، انعطاف پذیری را بدون تهدید به خرابی برای یکی از رشته های برنامه فراهم می کند. به عنوان مثال ، اگر هر یک از نخ ها را بیش از 3/4 صف فرمان را اشغال کنید ، ممنوع می کنید ، افزایش مصرف منابع یک موضوع آهسته مانع از اجرای سریع آن نمی شود.
مدل فوق تار Pentium 4 ترکیبی از استراتژی های مختلف به اشتراک گذاری منابع است. بنابراین ، تلاش می شود تمام مشکلات مربوط به هر استراتژی حل شود. تکثیر در رابطه با منابعی که دائماً توسط هر دو رشته برنامه مورد نیاز است (به ویژه ، در رابطه با شمارنده دستورالعمل ، جدول نگاشت ثبات و کنترل کننده وقفه) پیاده سازی می شود. دو برابر شدن این منابع مساحت میکرو مدار را تنها 5 increases افزایش می دهد - موافقم ، قیمت مناسب برای چند رشته ای. منابع موجود در چنین حجمی که عملاً غیرممکن است که توسط یک رشته (به عنوان مثال ، خطوط حافظه پنهان) به صورت پویا توزیع شوند. دسترسی به منابعی که عملکرد خط لوله را کنترل می کنند (به ویژه صف های متعدد آن) تقسیم شده است - نیمی از شکاف ها به هر نخ برنامه اختصاص داده شده است. خط اصلی معماری Pentium 4 Netburst در شکل نشان داده شده است. 8.7 ؛ مناطق سفید و خاکستری در این تصویر مکانیسم تخصیص منابع بین جریانهای برنامه سفید و خاکستری را نشان می دهد.
همانطور که می بینید ، همه صف های این تصویر از هم جدا شده اند - نیمی از شکاف ها به هر نخ برنامه اختصاص داده شده است. هیچ یک از نخ ها نمی تواند کار دیگری را محدود کند. بلوک توزیع و جایگزینی نیز تقسیم شده است. منابع زمانبندی به صورت پویا ، اما بر اساس برخی از آستانه ها به اشتراک گذاشته می شوند ، بنابراین هیچ رشته ای نمی تواند تمام شکاف های صف را اشغال کند. برای تمام مراحل دیگر نوار نقاله ، جداسازی کامل صورت می گیرد.
با این حال ، چند رشته ای چندان ساده نیست. حتی این تکنیک پیشرونده اشکالاتی نیز دارد. به اشتراک گذاری منابع سخت با سربار قابل توجهی همراه نیست ، اما تقسیم بندی پویا ، به ویژه با توجه به آستانه ها ، نیاز به پیگیری مصرف منابع در زمان اجرا دارد. علاوه بر این ، در برخی موارد ، برنامه ها بدون چند رشته ای به طور قابل توجهی بهتر از آن عمل می کنند. برای مثال ، فرض کنید اگر دو نخ داشته باشید ، برای عملکرد صحیح هر یک از آنها 3/4 از حافظه پنهان نیاز است. اگر آنها به نوبه خود اجرا شوند ، هر یک با تعداد کمی از خطاهای کش (همانطور که می دانید ، با هزینه های اضافی مرتبط است) کارآیی کافی را نشان می دهد. در مورد اجرای موازی ، هر کدام به طور قابل توجهی خطای کش را از دست می دهند و نتیجه نهایی بدتر از بدون چند رشته ای است.
اطلاعات بیشتر در مورد مکانیزم چند رشته ای RepPit 4 را می توانید در.

پس از پرداختن به نظریه چند رشته ای ، اجازه دهید یک مثال عملی را در نظر بگیریم - پنتیوم 4. در حال حاضر در مرحله توسعه این پردازنده ، مهندسان اینتل بدون افزایش تغییرات در رابط برنامه به کار بر روی افزایش عملکرد خود ادامه دادند. پنج روش ساده در نظر گرفته شد:

افزایش فرکانس ساعت ؛

قرار دادن دو پردازنده بر روی یک میکرو مدار ؛

معرفی بلوک های عملکردی جدید ؛

گسترش نوار نقاله ؛

استفاده از چند رشته ای

واضح ترین راه برای بهبود عملکرد ، افزایش سرعت ساعت بدون تغییر پارامترهای دیگر است. به طور معمول ، هر مدل پردازنده بعدی دارای سرعت کلاک کمی بیشتر از مدل قبلی است. متأسفانه ، با افزایش مستقیم فرکانس ساعت ، توسعه دهندگان با دو مشکل روبرو می شوند: افزایش مصرف برق (که برای رایانه های قابل حمل و سایر دستگاه های محاسباتی که با باتری کار می کنند مهم است) و گرم شدن بیش از حد (که مستلزم ایجاد گرمای کارآمدتر است) غرق می شود)

روش دوم - قرار دادن دو پردازنده روی یک میکرو مدار - نسبتاً ساده است ، اما شامل دو برابر شدن مساحت اشغال شده توسط میکرو مدار می شود. اگر هر پردازنده دارای حافظه پنهان مخصوص خود باشد ، تعداد تراشه های یک بشقاب به نصف می رسد ، اما این به معنی دو برابر شدن هزینه های تولید نیز می باشد. با ارائه حافظه پنهان مشترک برای هر دو پردازنده ، می توان از افزایش چشمگیر ردپا جلوگیری کرد ، اما در این مورد مشکل دیگری بوجود می آید - میزان حافظه نهان در هر پردازنده نصف می شود ، و این ناگزیر بر عملکرد تأثیر می گذارد. علاوه بر این ، در حالی که برنامه های حرفه ای سرور قادر به استفاده کامل از منابع چند پردازنده هستند ، در برنامه های معمولی رومیزی ، موازی کاری داخلی بسیار کمتر توسعه یافته است.

معرفی بلوک های عملکردی جدید نیز دشوار نیست ، اما ایجاد تعادل در اینجا مهم است. اگر میکرو مدار نتواند دستورات لازم را به نوار نقاله با چنان سرعتی بدهد که بتوان همه این بلوک ها را بارگیری کرد ، در دوازده بلوک ALU چه فایده ای دارد؟

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

در نهایت ، می توانید چند رشته ای را پیاده سازی کنید. مزیت این فناوری این است که یک رشته نرم افزاری اضافی را برای آوردن منابع سخت افزاری که در غیر این صورت بیکار هستند معرفی می کند. با توجه به نتایج مطالعات تجربی ، توسعه دهندگان اینتل دریافتند که افزایش 5 درصدی سطح تراشه هنگام اجرای چند رشته ای برای بسیاری از برنامه ها ، 25 درصد افزایش عملکرد دارد. اولین پردازنده اینتل که از قابلیت چند رشته ای پشتیبانی می کرد Heon در سال 2002 بود. پس از آن ، با شروع 3.06 گیگاهرتز ، چند رشته ای در خط پنتیوم 4. معرفی شد. اینتل پیاده سازی چند رشته ای را در ابرتیدینگ پنتیوم 4 نامیده است.

معرفی. فناوری رایانه به سرعت در حال توسعه است. دستگاه های محاسباتی قدرتمندتر ، جمع و جورتر و راحت تر می شوند ، اما اخیراً بهبود عملکرد دستگاه ها به یک مشکل بزرگ تبدیل شده است. در سال 1965 ، گوردون مور (یکی از بنیانگذاران اینتل) به این نتیجه رسید که "تعداد ترانزیستورهای قرار گرفته بر روی تراشه مدار مجتمع هر 24 ماه دو برابر می شود."

اولین تحولات در زمینه ایجاد سیستم های چند پردازنده در دهه 70 آغاز شد. برای مدت طولانی ، عملکرد پردازنده های معمولی تک هسته ای با افزایش فرکانس ساعت (تا 80 درصد عملکرد فقط با فرکانس ساعت تعیین شد) با افزایش همزمان تعداد ترانزیستورها در تراشه افزایش یافت. قوانین بنیادی فیزیک این فرایند را متوقف کردند: تراشه ها شروع به گرم شدن کردند ، و فناوری به اندازه اتم های سیلیکون نزدیک شد. همه این عوامل منجر به این واقعیت شده است که:

  • جریانهای نشتی افزایش یافته ، در نتیجه تولید گرما و مصرف برق افزایش می یابد.
  • پردازنده بسیار سریعتر از حافظه شده است. عملکرد به دلیل تأخیر در دسترسی به RAM و بارگذاری داده ها در حافظه پنهان تنزل یافته است.
  • چیزی به عنوان "تنگنای فون نویمان" وجود دارد. این به معنای ناکارآمدی معماری پردازنده در هنگام اجرای یک برنامه است.

سیستم های چند پردازنده (به عنوان یکی از راه های حل مشکل) به طور گسترده مورد استفاده قرار نگرفتند ، زیرا ساخت سیستم های چند پردازنده ای گران و دشوار بود. مادربردها... بر این اساس ، بهره وری به طرق دیگر افزایش می یابد. مفهوم چند رشته ای م effectiveثر بود - پردازش همزمان چندین جریان فرمان.

فناوری Hyper-Threading (HTT) یا فناوری Hyper-Threading که به پردازنده اجازه می دهد چندین رشته را در یک هسته واحد اجرا کند. این HTT است که به گفته بسیاری از کارشناسان ، پیش نیاز ایجاد پردازنده های چند هسته ای شده است. به اجرای همزمان چندین رشته توسط پردازنده ، موازی کاری سطح (TLP-موازی کاری سطح) می گویند.

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

1. مفاهیم کلی

معماری به معنای گسترده توصیف سیستم پیچیده ای است که از عناصر زیادی تشکیل شده است.

در روند توسعه ، ساختارهای نیمه هادی (میکرو مدار) تکامل می یابند ، بنابراین ، اصول ساخت پردازنده ها ، تعداد عناصر موجود در ترکیب آنها ، نحوه سازماندهی تعامل آنها ، دائما در حال تغییر است. بنابراین ، CPU هایی با اصول اولیه طراحی یکسان معمولاً پردازنده های معماری یکسانی نامیده می شوند. و خود این اصول معماری پردازنده (یا معماری خرد) نامیده می شود.

ریزپردازنده (یا پردازنده) جزء اصلی کامپیوتر است. این اطلاعات را پردازش می کند ، برنامه ها را اجرا می کند و سایر دستگاه های سیستم را کنترل می کند. سرعت اجرای برنامه ها بستگی به قدرت پردازنده دارد.

هسته ستون فقرات هر ریزپردازنده است. این شامل میلیونها ترانزیستور است که بر روی تراشه سیلیکون قرار دارند. ریزپردازنده به سلولهای خاصی به نام ثبات تقسیم می شود همه منظوره(RON) در کل کار پردازنده شامل بازیابی دستورالعمل ها و داده ها از حافظه در یک دنباله خاص و اجرای آنها است. علاوه بر این ، به منظور افزایش سرعت کامپیوتر ، ریزپردازنده مجهز به حافظه داخلی کش است. حافظه پنهان است حافظه درونیپردازنده ای که به عنوان بافر استفاده می شود (برای محافظت در برابر وقفه در ارتباط با RAM).

پردازنده های اینتل مورد استفاده در رایانه های شخصی سازگار با IBM دارای بیش از هزار دستورالعمل هستند و به عنوان پردازنده هایی با مجموعه دستورالعمل های گسترده - پردازنده های CISC (CISC - Complex Instruction Set Computing) نامیده می شوند.

1.1 محاسبات با کارایی بالا موازی کاری

سرعت توسعه فناوری محاسبات به راحتی قابل ردیابی است: از ENIAC (اولین رایانه دیجیتالی الکترونیکی برای استفاده عمومی) با عملکرد چند هزار عملیات در ثانیه تا ابررایانه Tianhe-2 (1000 تریلیون عملیات نقطه شناور در ثانیه). این بدان معناست که سرعت محاسبه در 60 سال یک تریلیون بار افزایش یافته است. ایجاد سیستم های محاسباتی با کارایی بالا یکی از سخت ترین مشکلات علمی و فنی است. با توجه به اینکه سرعت محاسبات وسایل فنیتنها چند میلیون بار رشد کرده است ، سرعت کلی محاسبه تریلیونها بار افزایش یافته است. این اثر به دلیل استفاده از موازی کاری در تمام مراحل محاسبه به دست می آید. محاسبه موازی نیاز به جستجوی تخصیص منطقی حافظه ، روشهای قابل اعتماد انتقال اطلاعات و هماهنگی فرایندهای محاسباتی دارد.

1.2 پردازش چند متقارن

چند پردازش متقارن (به اختصار SMP) یا چند پردازش متقارن معماری خاصی از سیستم های چند پردازنده است که در آن چندین پردازنده به حافظه مشترک دسترسی دارند. این معماری بسیار متداولی است که اخیراً بسیار مورد استفاده قرار گرفته است.

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

با توجه به ویژگی های ذکر شده در بالا ، سیستم های SMP منحصراً در زمینه های علمی ، صنعت ، تجارت و بسیار نادر در دفاتر کار استفاده می شوند. علاوه بر هزینه بالای پیاده سازی سخت افزار ، چنین سیستم هایی به نرم افزارهای بسیار گران قیمت و باکیفیت نیاز دارند که اجرای چند رشته ای وظایف را فراهم می کند. برنامه های منظم (بازی ، ویرایشگران متن) در سیستم های SMP به طور مثر کار نخواهد کرد ، زیرا این درجه از موازی کاری را ارائه نمی دهند. اگر هر برنامه ای را برای یک سیستم SMP تطبیق دهید ، کار بر روی سیستم های تک پردازنده بسیار ناکارآمد می شود ، که منجر به ایجاد چندین نسخه از یک برنامه برای سیستم های مختلف می شود. برای مثال ، یک برنامه ABLETON LIVE (که برای ایجاد موسیقی و آماده سازی Dj-sets طراحی شده است) ، که از سیستم های چند پردازنده پشتیبانی می کند ، مستثنی است. اگر یک برنامه معمولی را روی سیستم چند پردازنده اجرا کنید ، باز هم کمی سریعتر از سیستم تک پردازنده اجرا می شود. این به دلیل وقفه سخت افزاری (توقف برنامه برای پردازش توسط هسته) است ، که بر روی پردازنده رایگان دیگر اجرا می شود.

یک سیستم SMP (مانند هر سیستم دیگری مبتنی بر محاسبات موازی) نیازهای بیشتری را بر پارامترهای حافظه مانند پهنای باند گذرگاه حافظه اعمال می کند. این اغلب تعداد پردازنده های موجود در سیستم را محدود می کند (سیستم های مدرن SMP به طور کارآمد تا 16 پردازنده کار می کنند).

از آنجا که پردازنده ها حافظه مشترک دارند ، نیاز به استفاده منطقی و هماهنگی داده ها وجود دارد. در یک سیستم چند پردازنده ، مشخص می شود که چندین حافظه پنهان برای یک منبع حافظه مشترک کار می کنند. انسجام کش یک ویژگی حافظه پنهان است که یکپارچگی داده های ذخیره شده در حافظه پنهان جداگانه را برای یک منبع مشترک تضمین می کند. این مفهوم- مورد خاصی از مفهوم انسجام حافظه ، جایی که چندین هسته به حافظه مشترک دسترسی دارند (در سیستم های چند هسته ای مدرن در همه جا وجود دارد). اگر این مفاهیم را به صورت کلی توصیف کنیم ، تصویر به صورت زیر خواهد بود: یک بلوک داده یکسان را می توان در حافظه های پنهان مختلف بارگذاری کرد ، جایی که داده ها به روش های مختلف پردازش می شوند.

عدم استفاده از اعلان های تغییر داده منجر به خطا می شود. انسجام حافظه پنهان برای حل چنین تعارضاتی و حفظ ثبات داده ها در حافظه پنهان طراحی شده است.

سیستم های SMP زیرگروهی از MIMD (داده های چندگانه در ساختار) از طبقه بندی سیستم های محاسباتی فلین (استاد دانشگاه استنفورد ، بنیانگذار Palyn Associates) هستند. طبق این طبقه بندی ، تقریباً همه انواع سیستم های موازی را می توان به عنوان MIMD طبقه بندی کرد.

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

سیستم های چند پردازنده - چند پردازنده (سیستم های چند پردازنده با حافظه مشترک مشترک) و چند رایانه (سیستم هایی با حافظه جداگانه). داده های مشترک مورد استفاده در محاسبات موازی نیاز به همگام سازی دارد. وظیفه همگام سازی داده ها یکی از مهمترین مشکلات است و راه حل آن در توسعه چند پردازنده و چند هسته ای و بر این اساس ضروری است. نرم افزاراولویت مهندسان و برنامه نویسان است. اشتراک گذاری داده ها را می توان با تخصیص فیزیکی حافظه انجام داد. این روش دسترسی غیر یکنواخت به حافظه (NUMA) نامیده می شود.

این سیستم ها عبارتند از:

  • سیستم هایی که در آنها فقط حافظه پنهان پردازنده جداگانه برای ارائه داده ها استفاده می شود (معماری حافظه فقط کش).
  • سیستم هایی با ارائه انسجام حافظه نهان محلی برای پردازنده های مختلف (NUM-coherent coherent).
  • سیستم هایی با دسترسی مشترک به حافظه پردازنده جداگانه بدون انسجام کش مبتنی بر سخت افزار (NUMA منسجم غیر حافظه پنهان).

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

1.3 چند رشته ای همزمان

بر اساس همه معایب فوق چند پردازشی متقارن ، توسعه و توسعه روشهای دیگر برای بهبود عملکرد منطقی است. اگر کار هر ترانزیستور جداگانه را در پردازنده تجزیه و تحلیل کنید ، می توانید به یک مورد بسیار توجه کنید حقیقت جالب- هنگام انجام اکثر عملیات محاسباتی ، همه اجزای پردازنده درگیر نیستند (طبق مطالعات اخیر ، حدود 30 all از کل ترانزیستورها). بنابراین ، اگر پردازنده ، مثلاً یک عملیات ساده حساب را انجام دهد ، بیشتر پردازنده بیکار است ، بنابراین می توان از آن برای محاسبات دیگر استفاده کرد. بنابراین ، اگر در حال حاضر پردازنده عملیات واقعی را انجام می دهد ، یک عملیات حسابی صحیح را می توان در قسمت آزاد بارگذاری کرد. برای افزایش بار بر روی پردازنده ، می توانید عملیات احتمالی (یا پیش بینی کننده) را ایجاد کنید ، که نیاز به پیچیدگی زیادی در منطق سخت افزاری پردازنده دارد. اگر رشته هایی (دنباله ای از دستورات) را در برنامه تعریف کنید که می توانند مستقل از یکدیگر اجرا شوند ، این کار را به میزان قابل توجهی ساده می کند (این روش به راحتی در سطح سخت افزار اجرا می شود). این ایده که متعلق به دین تولسن است (توسط وی در سال 1955 در دانشگاه واشنگتن توسعه یافت) ، چند رشته ای همزمان نامیده می شود. بعداً توسط اینتل با نام hyper threading توسعه داده شد. بنابراین ، یک پردازنده واحد که چندین رشته را اجرا می کند توسط سیستم عامل درک می شود. سیستم ویندوزمانند پردازنده های متعدد استفاده مجدد از این فناوری نیاز به سطح نرم افزاری مناسب دارد. حداکثر اثر استفاده از فناوری چند رشته ای حدود 30 درصد است.

1.4 چند هسته ای

فناوری Multithreading یک پیاده سازی نرم افزاری چند هسته ای است. افزایش بیشتر عملکرد ، مانند همیشه ، مستلزم تغییر سخت افزار پردازنده است. پیچیدگی سیستم ها و معماری ها همیشه م effectiveثر نیست. نظر مخالف وجود دارد: "همه چیز مبتکرانه ساده است!". در واقع ، برای افزایش عملکرد پردازنده ، اصلاً لازم نیست فرکانس ساعت آن را افزایش دهید ، اجزای منطقی و سخت افزاری را پیچیده کنید ، زیرا فقط برای منطقی سازی و اصلاح فناوری موجود کافی است. این روش بسیار سودمند است - نیازی به حل مشکل افزایش اتلاف حرارت پردازنده ، توسعه تجهیزات گران قیمت جدید برای تولید میکرو مدار نیست. این رویکرد در چارچوب فناوری چند هسته ای اجرا شد - پیاده سازی چندین هسته محاسباتی بر روی یک کریستال. اگر پردازنده اصلی را در نظر بگیریم و در هنگام اجرای چندین روش بهبود عملکرد ، دستاوردهای عملکرد را مقایسه کنیم ، بدیهی است که استفاده از فناوری چند هسته ای بهترین گزینه است.

اگر معماری چند پردازنده متقارن و چند هسته ای را مقایسه کنیم ، تقریباً یکسان خواهد بود. حافظه نهان اصلی می تواند چند سطحی (محلی و مشترک باشد و داده های RAM را می توان مستقیماً در حافظه پنهان L2 بارگذاری کرد). بر اساس مزایای معماری پردازنده چند هسته ای ، تولیدکنندگان روی آن تمرکز می کنند. این فناوریپیاده سازی آن بسیار ارزان و جهانی بود ، که باعث شد بتوان آن را به بازار گسترده ای رساند. علاوه بر این ، این معماری تغییرات خاصی را در قانون مور اعمال کرده است: "تعداد هسته های محاسباتی در پردازنده هر 18 ماه دو برابر می شود."

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