- عضویت
- 2019/03/07
- ارسالی ها
- 2,669
- امتیاز واکنش
- 15,422
- امتیاز
- 746
- محل سکونت
- یوکوهاما یا هازبین هتل،فرقی نمیکنه:|
پاراللیسم در سطح 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)) پلی استیشن ۳.
ویرایش
رویکرد دیگر برای دستیابی به عملکرد، اجرای چندین برنامه یا 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)) پلی استیشن ۳.