گروه مهندسی متین

حسابداری ، طراحی وب سایت ، گرافیک ، و اموزش نرم افزار

گروه مهندسی متین

حسابداری ، طراحی وب سایت ، گرافیک ، و اموزش نرم افزار

گروه مهندسی متین

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

بایگانی

سی پی یو (پارت آخر)

يكشنبه, ۹ دی ۱۳۹۷، ۰۴:۰۰ ب.ظ

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

جزو اطلاعاتی، در یک زمان اجرا می‌کند. این فرایند موجب یک ناکارآمدی ذاتی در سی پی یوهای ساب اسکیلر می‌شود. از آنجایی که فقط یک دستور در یک زمان اجرا می‌شود، کل سی پی یو باید منتظر بماند تا آن دستور کامل شود تا بتواند به دستور بعدی برود. در نتیجه سی پی یوهای ساب اسکیلر در موارد دستوری که بیش از یک پالس ساعت (چرخهٔ ساعتی) برای اجرا شدن کامل طول می‌کشند، معلق می‌ماند. حتی اضافه کردن یک واحد اجرایی دیگر بهبود زیادی روی عملکرد ندارد، و در این حالت به جای اینکه یک مسیر معلق باشد، دو مسیر معلق می‌ماند و تعداد ترانزیستورهای بلااستفاده افزایش می‌یابد. این طراحی، که در آن منابع اجرایی سی پی یو می‌تواند فقط یک دستور در یک زمان اجرا کند، قادر خواهد بود تا فقط احتمالاً به عملکردی در حد اسکیلر (یک دستور در یک clock) برسد. با این وجود عملکرد آن تقریباً همیشه ساب اسکیلر (کمتر از یک دستور در یک چرخه) است.
تلاش برای رسیدن به عملکردی در حد اسکیلر یا بهتر از آن منجر به طیفی از روش‌های طراحی شد که باعث می‌شود تا سی پی یو کمتر به صورت خطی و بیشتر به صورت موازی عمل کند. در هنگام استفاده از ترم پاراللیسم برای سی پی یوها، دو اصطلاح بطور کلی برای طبقه‌بندی این تکنیک‌های طراحی استفاده می‌شود. پاراللیسم در سطح دستوری (ILP) که هدف آن افزایش سرعت اجرای دستورها در داخل یک سی پی یو است (یا به عبارتی افزایش استفاده از منابع اجرایی روی همان چیپ (on-die))، و پاراللیسم در سطح thread که هدف آن افزایش تعداد threadهایی است (بطور مؤثر برنامه‌های جداگانه) که یک سی پی یو می‌تواند بطور هم‌زمان اجرا کند. هر روش با روش دیگر از نظر نحوهٔ اجرا و نیز تأثیر نسبی آن‌ها در افزایش عملکرد سی پی یو برای یک برنامه متفاوت است.
پاراللیسم در سطح دستوری
یکی از ساده‌ترین شیوه‌های مورد استفاده برای انجام افزایش پاراللیسم این است که اولین مراحل fetching و decoding دستوری را پیش از اینکه اجرای دستور قبلی تمام شود، شروع کنیم. این روش ساده‌ترین فرم یک تکنیک بنام instruction pipelining است و در تقریباً تمام سی پی یوهای عمومی جدید استفاده می‌شود. پایپ لاینینگ، با شکستن مسیر دستوری و تبدیل ان به مراحل جداگانه، باعث می‌شود تا در هر زمان بیش از یک دستور اجرا شود. این جدا کردن را می‌توان با خط مونتاژ مقایسه کرد که در آن یک دستور در هر مرحله کاملتر می‌شود تا اینکه کامل شود.
با این وجود pipelining ممکن است موقعیتی را بوجود آورد که در آن یافته‌های عمل قبلی برای کامل کردن عمل بعدی لازم است. این وضعیت را معمولاً آشفتگی ناشی از وابستگی می‌نامند. برای جلوگیری از این وضعیت، باید توجه بیشتری شود تا در صورت رخ دادن این شرایط بخشی از خط تولید دستوری را به تأخیر اندازیم. بطور طبیعی برآورده کردن این شرایط نیازمند مدارهایی اضافه‌است، بنابراین پردازنده‌های pipelined پیچیده‌تر از انواع ساب اسکیلر هستند (البته نه خیلی چشمگیر). یک پردازندهٔ pipelined می‌تواند بسیار نزدیک به حد اسکیلر شود، در این شرایط تنها مانع موجود stallها (دستوری که بیش از یک چرخهٔ ساعتی در یک مرحله طول می‌کشد) هستند. ارتقاء بیشتر در مورد ایدهٔ instruction pipelining منجر به ایجاد روشی شده‌است که زمان خالی اجزای سی پی یو را حتی به میزان بیشتری کاهش می‌دهد. طراحی‌هایی که گفته می‌شود سوپراسکیلر هستند شامل یک خط ایجاد(pipeline) دستور طولانی و واحدهای اجرایی مشابه متعدد هستند. در یک خط ایجاد سوپرسکیلر دستورهای متعددی خوانده شده و به dispatcher (توزیع گر) می‌روند، توزیع گر تصمیم می‌گیرد که آیا دستورها مذکور می‌توانند بطور موازی (همزمان) اجرا شوند یا نه. در صورتی که پاسخ مثبت باشد، دستورها مذکور به واحدهای اجرایی موجود ارسال (dispatch) می‌شوند. این کار باعث می‌شود تا چندین دستور به‌طور هم‌زمان اجرا شوند. به‌طور کلی هرقدر یک سی پی یوی سوپرسکیلر بتواند دستورها بیشتری را بطور هم‌زمان به واحدهای اجرایی در حال انتظار ارسال (dispatch) کند، دستورها بیشتری در یک سیکل مشخص اجرا می‌شوند.
بیشترین دشواری در طراحی یک معماری سوپرسکیلر سی پی یو مربوط به ساخت یک dispatcher مؤثر است. دیسپچر باید قادر باشد تا به سرعت و بدون اشتباه مشخص کند که آیا دستورها می‌توانند بطور موازی اجرا شوند و آن‌ها را به شیوه‌ای ارسال (dispatch) کند تا بیشترین واحدهای اجرایی ممکن را از بیکاری خارج کند. این امر نیازمند این است که خط ایجاد دستوری حداکثر اوقات ممکن پر باشد و معماری‌های سوپرسکیلر را نیازمند مقادیر چشمگیری از کش سی پی یو(cache) می‌کند. همچنین در این شرایط تکنیک‌های پیشگیری از خطری نظیر پیش بینی شاخه‌ای (branch prediction)، اجرای حدسی (speculative execution) و اجرای خارج از نوبت (out of order execution) برای حفظ سطوح بالای عملکرد ضروری هستند. با تلاش برای پیش‌بینی اینکه یک دستور شرطی کدام شاخه (یا مسیر) را انتخاب می‌کند، سی پی یو می‌تواند تعداد زمان‌هایی را که تمام خط تولید (pipeline) باید منتظر بماند تا یک دستور شرطی کامل شود به حداقل برساند. اجرای حدسی با اجرای بخش‌هایی از کد که ممکن است بعد از کامل شدن یک عمل شرطی نیاز نباشند، معمولاً موجب افزایش متوسط عملکرد می‌شود. اجرای خارج از نوبت ترتیبی را که دستورها اجرا می‌شوند تا حدی دوباره چینی می‌کند تا تأخیر ناشی از وابستگی اطلاعات را کاهش دهد. همچنین در موارد یک دستور -چند دیتا (Single Instructions Multiple Data) - زمانی‌که اطلاعات زیادی از یک نوع باید پردازش شود، پردازنده‌های جدید می‌توانند بخش‌هایی از خط ایجاد مذکور را غیرفعال کنند، در این حالت زمانی‌که یک دستور چند بار اجرا می‌شود، سی پی یو می‌تواند از فازهای fetch و decode صرفه نظر کند و بنابراین در موقعیت‌های خاصی (خصوصاً در موتورهای برنامه‌ای بسیار مونوتون نظیر نرم‌افزار ایجاد ویدئو و پردازش عکس) به میزان زیادی عملکرد افزایش می‌یابد.
در مواردی که فقط بخشی از سی پی یو سوپرسکیلر است، بخشی که سوپرسکیلر نیست دچار جبران عملکردی ناشی از وقفه‌های زمانبندی می‌شود. Intel P5 Pentium (اینتل پنتیوم ۵)دو تا واحد محاسبه و منطق (ALU) سوپرسکیلر داشت که می‌توانست یک دستور را به ازای یک clock بپذیرد اما FPUی آن نمی‌توانست یک دستور را به ازای یک clock بپذیرد؛ بنابراین P۵ سوپرسکیلر از نوع integer است اما از نوع floating point (ممیز شناور) نیست. جانشین اینتل برای معماری P۵، نوع P۶ بود که قابلیت‌های سوپرسکیلر را به ویژگی‌های floating point آن اضافه می‌کرد و بنابراین موجب افزایش چشمگیری در عملکرد دستوری floating point می‌شد.
هم طراحی pipeline ساده و هم طراحی سوپر سکیلر موجب می‌شوند تا یک پردازندهٔ منفرد با سرعتی بیش از یک دستور به ازای یک چرخه (IPC) دستورها را اجرا کند و بدین وسیله ILP ی سی پی یو را افزایش می‌دهند. بیشتر طراحی‌های جدید سی پی یو حداقل تا حدی سوپرسکیلر هستند و تقریباً تمام سی پی یوهای عمومی که در دههٔ اخیر طراحی شده‌اند سوپرسکیلر هستند. در سال‌های اخیر بخشی از تأکید در طراحی کامپیوترهای ILP بالا از حوزهٔ سخت‌افزاری سی پی یو خارج شده و در اینترفیس نرم‌افزاری، یا همان ISA متمرکز شده‌است. استراتژی کلمهٔ دستوری خیلی بلند (VLIW) موجب می‌شود تا بخشی از ILP بطور مستقیم توسط نرم‌افزار درگیر شود و بدین وسیله میزان کاری را که سی پی یو باید انجام دهد تا ILP را افزایش دهد (بوست کند) و پیچیدگی طراحی مذکور را کاهش دهد، کم می‌کند.
پاراللیسم در سطح thread
رویکرد دیگر برای دستیابی به عملکرد، اجرای چندین برنامه یا thread به صورت موازی است. در تقسیم‌بندی Flynn این رویکرد چندین دستور روی چندین دیتا (MIMD) نام دارد.
یک تکنولوژی که برای این هدف استفاده شد، تکنولوژی چند پردازشی (MP) نام دارد. چاشنی ابتدایی این نوع تکنولوژی چند پردازشی قرینه(SMP) نام داردکه در آن تعداد محدودی از سی پی یوها یک نمای منسجم از سیستم حافظهٔ خودشان را به اشتراک می‌گذارند. در این طرح‌ریزی هر سی پی یو سخت‌افزاری اضافی برای حفظ یک نمای دائماً بروز شده از حافظه دارد. با اجتناب از نماهای کهنه و مانده از سی پی یو، سی پی یوهای مذکور می‌توانند روی یک برنامه همکاری کنند و برنامه‌ها می‌توانند از یک سی پی یو به دیگری مهاجرت کنند. طرح‌ریزی‌هایی نظیر دستیابی غیر همشکل به حافظه (NUMA) و پروتکل‌های وابستهٔ مبتنی بر دایرکتوری در دههٔ ۱۹۹۰ ارائه شدند. سیستم‌های SMP به تعداد کمی از سی پی یوها محدود می‌شوند در حالیکه سیستم‌های NUMA با هزاران پردازنده موجود هستند. در ابتدای امر، چند پردازشی با استفاده از چندین سی پی یو و صفحهٔ مجزا برای برقراری ارتباط بین پردازنده‌ها ساخته شد. هنگامیکه پردازنده‌ها و ارتباط‌های بین آن‌ها تماماً روی یک تراشهٔ سیلیکون منفرد سوار شدند، تکنولوژی مذکور ریزپردازندهٔ چند هسته‌ای نام گرفت.
بعدها مشخص شد که fine-grain parallelism با یک برنامهٔ منفرد ایجاد شد. یک برنامهٔ منفرد ممکن است چندین thread (یا رشته دستورالعمل) داشته باشد که می‌توانند بطور جداگانه یا موازی اجرا شوند. برخی از نمونه‌های ابتدایی این تکنولوژی، پردازش ورودی/خروجی نظیر دسترسی مستقیم به حافظه را به عنوان یک thread جداگانه از thread محاسبه بکار گرفتند. یک رویکرد عمومی تر به این تکنولوژی در دههٔ ۱۹۷۰ ارائه شد. در آن زمان سیستم‌ها طوری طراحی شدند تا چندین thread محاسبه‌ای را بطور موازی اجرا کنند. این تکنولوژی (MT)multithreading نام دارد. این رویکرد در مقایسه با چند پردازشی به صرفه تر است زیرا فقط تعداد کمی از اجزا در داخل یک سی پی یو به منظور پشتیبانی از MT تکرار می‌شوند در حالیکه در MP تمام سی پی یو تکرار می‌شود. در MT، واحدهای اجرایی و سیستم حافظه من‌جمله کش‌ها در بین جندین thread به اشتراک گذارده می‌شوند. عیب MT این است که سخت‌افزاری که از مولتی ثردینگ پشتیبانی می‌کند در مقایسه با سخت‌افزاری که از MP پشتیبانی می‌کند برای نرم‌افزار قابل دیدن تر است و بنابراین نرم‌افزارهای ناظر نظیر سیستم‌های عامل برای پشتیبانی از MT باید متحمل تغییرات بیشتری شوند. یک نوع از MT که بکار گرفته شد block multithreading نام دارد که در آن اجرای یک thread آغاز می‌شود و زمانی‌که برای بازگشت اطلاعات از حافظهٔ خارجی باید منتظر بماند، دچار توقف عملکرد می‌شود. در این حالت سی پی یو بلافاصله به thread دیگر که آمادهٔ اجرا است سوویچ می‌کند. این سوویچ معمولاً در یک چرخهٔ کلاک از سی پی یو انجام می‌گیرد. اولترااسپارک (UltraSPARC) نمونه‌ای از این تکنولوژی است. نوع دیگری از MT مولتی ثردینگ همزمان (simultaneous multithreading) نام دارد که در آن دستورها چندین thread بطور موازی در طی یک چرخهٔ کلاک از سی پی یو اجرا می‌شوند.
بمدت چندین دهه از ۱۹۷۰ تا ۲۰۰۰، در طراحی سی پی یوهای عمومی دارای عملکرد بالا به میزان زیادی روی دستیابی به ILP بالا از طریق تکنولوژی‌هایی مثل piplining، کش‌ها، اجرای سوپراسکیلر، اجرای خارج از نوبت و… تأکید می‌شد. این رویه منجر به طراحی سی پی یوهای بزرگ و پر مصرفی نظیر اینتل پنتیوم ۴ شد. در دههٔ ۲۰۰۰، نابرابری روزافزون بین فرکانس‌های عامل سی پی یو و فرکانس‌های عامل حافظهٔ اصلی و نیز جدی تر شدن مسئلهٔ محو تدریجی پاور سی پی یو (power) بعلت تکنیک‌های ILP خیلی نامعمول تر موجب شد تا طراحان سی پی یو دیگر بدنبال افزایش عملکرد با استفاده از تکنیک‌های ILP نباشند. پس از آن، طراحان سی پی یو ایده‌هایی را از بازارهای کامپیوتری تجاری نظیر پردازش دادوستدی که در آن مجموع عملکرد چندین برنامه (پردازش مربوط به کار انجام شده در یک بازهٔ زمانی) مهم‌تر از عملکرد یک thread یا برنامه‌است، به عاریه گرفتند. این تغییر رویکرد می‌توان در تکثیر طراحی‌های CMP چند هسته‌ای (چند پردازشی در سطح تراشه) و بطور قابل ذکر طراحی‌های جدیدتر اینتل که مشابه معماری کمتر سوپرسکیلر P۶ بودند، مشاهده کرد. طراحی‌های بعدی در چندین خانوادهٔ پردازنده، CMP را نشان دادند، از جمله x86-64 Opteron و Athlon 64 X2, SPARC UltraSPARC T۱، IBM POWER۴ و POWER۵ و چندین سی پی یو ی کنسول بازی ویدئویی مشابه طراحی powerpc سه هسته‌ای ایکس باکس ۳۶۰ و ریزپردازنده‌های سلولی ۷ هسته‌ای ۷-core)) پلی استیشن ۳.
موازی گرایی (پاراللیسم) اطلاعات
یک الگوی غیرمعمول اما بطور فزاینده‌ای مهم از سی پی یوها (و در حقیقت، بطور کلی پردازش) مربوط به موازی گرایی اطلاعات است. پردازنده‌هایی که قبلاً بحث شدند، تماماً انواعی از ابزارهای اسکیلر نامیده می‌شوند. همچنان که از نام آن پیداست، پردازنده‌های برداری (vector processors) با چندین قطعه از اطلاعات در زمینهٔ یک دستور سروکار دارند که با پردازنده‌های اسکیلر که با یک قطعه از اطلاعات برای هر دستور سروکار دارد، متفاوت است. در طبقه‌بندی Flynn، این دو نوع مواجه با اطلاعات بطور کلی و به ترتیب SIMD (یک دستور برای چندین داده) و SISD (یک دستور برای یک داده) نامیده می‌شود. استفادهٔ مهم در ایجاد سی پی یوهایی که با بردارهایی از اطلاعات سرو کار دارند، در بهینه‌سازی اعمالی است که در آن‌ها یک عمل (برای مثال یک جمع یا dot product)باید روی مجموعهٔ بزرگی از اطلاعات صورت گیرد. برخی از مثال‌های کلاسیک این نوع از اعمال کاربردهای مولتی مدیا (تصاویر، ویدئو و صدا) و نیز بسیاری از انواع اعمال علمی و مهندسی هستند. در حالیکه یک سی پی یو ی اسکیلر باید تمام فرایند fetching، دکودینگ و اجرا ی هر دستور و مقدار را برای مجموعه‌ای از اطلاعات انجام دهد، یک سی پی یو ی برداری می‌تواند یک عمل را روی مجموعهٔ نسبتاً بزرگی از اطلاعات با یک دستور انجام دهد. البته این امر تنها زمانی امکان‌پذیر است که کاربر مذکور نیازمند مراحل بسیاری است که یک عمل را روی مجموعهٔ بزرگی از داده‌ها اجرا می‌کند.
اکثر سی پی یوهای وکتور ابتدایی، نظیر Cray-۱ فقط مربوط به تحقیقات علمی و کاربردهای کریپتوگرافی بودند. با این وجود، هنگامیکه مولتی مدیاها به میزان زیادی به Media دیجیتال تغییر پیدا کردند، نیاز به برخی از اشکال SIMD در سی پی یوهای کاربرد-عمومی نیز برجسته شد. مدت کوتاهی بعد ازاینکه لحاظ شدن واحدهای اجرایی نقطهٔ شناور در سی پی یوهای کاربرد-عمومی شروع به معمول شدن کرد، اختصاصی شدن و بکارگیری واحدهای اجرایی SIMD نیز در سی پی یوهای کاربرد-عمومی شروع به ظهور کرد. برخی از این اختصاص‌های SIMD ابتدایی نظیر Multimedia Acceleration eXtensions مربوط به HP و MMX اینتل فقط اینتیجر بودند.

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

برای اطلاعات بیشتر با ما در تماس باشید با تشکر 

http://matingeernig.ir

https://instagram.com/_u/jafarzadh_matin

https://t.me/joinchat/AAAAAEyN7-Vf5QwRz_Z9TA

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی