در بخش قبل(حافظه کش (پنهان) و سطوح آن چیست و چه کاربردی برای پردازنده دارد ؟) در مورد حافظه پنهان و سطوح آن صبحت کردیم، اما در این مقاله میخواهیم در مورد حافظه پنهان کش و کاربرد آن در چند پردازندهها یا پردازندههای چند هستهای صبحت کنیم. همانطور که در بخش قبل اشاره کردیم حافظه پنهان (کش) سطح L3 برای پردازندههای چند هستهای به وجود آمد؛ این سطح حافظه برای تمامی هسته های داخل پردازنده، به صورت اشتراکی احتصاص مییابد.
جایگاه حافظه پنهان سطح کش L1 و L2 و L3 در اکثریت پردازنده های چند هستهای
در پردازندههای چند هستهای نقش حافظههای کش L3 در پردازندهها پررنگتر شد. اولین پردازندههای چند هستهای با کش بر تراشه L3 را میتوان به پردازندههای شرکت اینتل از خانوادهی Core I از نسل نِهالیم [1] و پردازندههای شرکت AMD از خانوادهی K10 از نسل بارسلونا [2] اشاره کرد. در این پردازندهها از کش L3 به عنوان یک کش بزرگتر و کمککننده برای کش L2 استفاده شد که البته سرعت کمتری در مقایسه با کش L2 داشت. در پردازندههای چند هستهای همانطور که قبلا اشاره شد کش L3 بر روی یک قطعهی سیلیکونی بین تمامی پردازندهها قرار داشته و به اشتراک گذاشته شدهاست این در حالی است که اغلب کش L2 و کش L1 برای هر هسته بصورت مجزا اختصاص داده شدهاست.
جایگاه سطوح حافظه پنهان کش در بعضی از پردازنده های چند هسته ای
البته در این میان پردازندههایی تولید شدهاند که از این قاعده مستثنی هستند از جمله پردازندهی بلدوزر [3]، پایلدرایور [4]، استیمرولر [5] که هر حافظه پنهان (کش) دستورالعملِ L1 بین دو هسته که هر دو هسته یک ماژول پردازشی را ایجاد میکنند، به اشتراک گذاشته شده است؛ در شکل 1‑2 دای [6] یک پردازندهی بلدوز و نحوهی پیادهسازی سطوح کشهای پنهان در این پردازنده را نشان میدهد.
شکل 1‑2 دای پردازنده بلدوزر شرکت AMD آمریکا
اما شکل 1‑3 در یک پردازندهی ۸ هستهای خانوادهی Core I نسل هاسوِل- ای[7] شرکت اینتل را نشان میدهد که دارای ۸ هسته مجزا میباشد که هر هسته به صورت مجزا دارای کش L1 و L2 میباش و کش L3 نیز بصورت مشترک بین تمامی هسته قرار گرفته است. در این معماری به کشهای L1 و L2 کشهای خصوصی [8] و به کش L3 کش مشترک [9] میگویند. سلسه مراتب حافظههای پنهان کش به ترتیب از L1، L2، L3 شروع میشود و هرچه از L3 به L1 حرکت میکنیم، اندازهی کشها کوچکتر، سرعت بالاتر، قیمت گرانتر، پیچیدگی و فشردگی بیشتر در طراحی و ساخت کشها و همچنین در طراحی مدارات کنترلی خواهیم داشت.
شکل 1‑3 دای پردازندهی هاسوِل شرکت اینتل آمریکا
کاربرد استفاده از سطوح مختلف حافظه پنهان
استفاده از کشهای L1 و L2 بصورت مجزا برای هر هسته باعث کاهش تاخیر در دسترسی به کشها میشود و همچنین احتمال رقابت هستهها برای اطلاعات داخل یک کش را نیز کاهش میدهد؛ این بدان معناست زمانی که دو هسته مختلف به یک بخشی از دادههایی حیاتی نیاز دارند اما دادهها در یکی از هستهها بخاطر بارکاری[10] در اختیار قرار گرفته است، پاک و بازنویسی نخواهد شد. حافظه پنهان L3 بصورت مشترک، دادهها را برای تمامی هستهها به طور همزمان ذخیره میکند؛ برای ذخیره سازی اطلاعات در کشهای L3 از الگوریتمهای پیچیدهای استفاده میشود، به عنوان مثال هستهی صفرم تمایل دارد اطلاعات را در نزدیکی خود ذخیره کند، درحالی که هستهی هفتم در آن طرف دای، اطلاعات ضروری را در نزدیکی خود قرار میدهد، از این رو برای اطمینان از الگوریتمهای پیچیدهای برای طبقه بندی و ذخیرهسازی اطلاعات استفاده میشود.
جایگاه سطح L3 و کاربرد آن در پردازنده ها
برخلاف کش L1 و L2 که در نزدیکی پردازنده قرار دارند و بصورت متمرکز و خصوصی برای هر هستهی پردازنده میباشند، کش L3 میتواند قابلیت اشتراک پذیری با دیگر هستههای خاص پردازنده و دیوایسها را داشته باشد. به عنوان مثال در پردازندههای سندی بریج [11] شرکت اینتل یک کش L3 که حجم آن دارای ۸ مگابایت میباشد میتواند برای هستهی گرافیکی [12] بر تراشته در داخل پردازنده اختصاص و به اشتراک گذاشته شود (البته در پردازندهی ایوی بریح [13] به جایی اینکه پردازنده کل حافظهی L3 را در اختیار [14] GPU قرار دهد، میتواند بخشهایی از کل حافظه L3 را برای هستهی گرافیکی در نظر گیرد. لازم به ذکر است هردو پردازنده از معماری پردازندهی سندی بریج هستند، اما پردازندههای ایوی بریج از نوع ”تیک“ و پردازندههای قدیمیتر سندی بریح از نوع ”تاک“ میباشد؛
روش نام گذاری در تکنولوژی ساخت پردازنده های شرکت اینتل
شرکت اینتل از سال ۲۰۰۷ یک روشی برای تولید تراشههای خود انتخاب کرد که تا سال ۲۰۱۶ ادامه داشت. شرکت اینتل این روش را تیک-تاک [15] نام گذاری کرد. در صورتی که تغییرات در معماری تراشه صورت گیرد، تاک و درصورتی که تغییرات در کوچک سازی معماری تراشه انجام شود، تیک نام گذاری میشود.از سال ۲۰۱۶ به بعد تغییرات تیک-تاک به ” فرآیند [16] ، معماری [17] ، بهینهسازی [18] “ جایگزین شد؛ مرحلهی فرآیند و معماری بسیار شبیه به یک چرخهی تیک و تاک میباشد که به دنبال آن یک مرحلهی جدید به نام بهینهسازی به این چرخه اضافه شد، در ضمن قبل از سال ۲۰۱۶ بعضی از پردازندهها در چرخهی تغییرات تیک-تاک در مرحلهی بازسازی [19] تولید میشدند و به عنوان یک پردازندهی جدید نام گذاری میشدند، مرحلهی بهینهسازی تقریبا مشابه مرحله بازسازی میباشد.
نسبت اندازه سطوح حافظه کش و عملکرد آنها در پردازنده های مختلف
برخلاف کش L1 و L2 که معمولا حجم و اندازهی آنها تقریبا یکسان است و فقط تفاوت کمی در مقایسه با یکدیگر دارند (آنهم بخاطر دلایلی اقتصادی)، تولیدکنندگان AMD و Intel برای کش L3 تراشههای مختلفی با مقادیر متفاوتی تولید میکنند. شرکت اینتل در مقایسه با شرکت AMD در پردازندههای Core I تعداد هستههای کمتری، فرکانس بیشتری و اندازه کش L3 بیشتری نسبت به تعداد هر هسته دارند.
به عنوان مثال در سال ۲۰۰۸ پردازندهی ۷i Core از نسل نِهالم، حافظه پنهان L3 برای نخستین بار ۸ مگابایت در نظر گرفته شده بود که این مقدار با توجه به تعداد هستههای واقعی پردازنده، تقریبا برای هر هسته ۲ مگابایت اختصاص داده شده است. در صورتی که در پردازندههای نسل جدید و قویتر ۷i Core این مقدار به پیش از ۲.۵ مگابایت کش برای هر هسته درنظر گرفته شده است (پردازندههای ۷i Core شرکت اینتل میتوانند بین ۲ تا ۸ هستهی واقعی داشته باشند).
نقش سطح L3 در پردازنده ها امروزی
امروزه کش L3 برای پردازندههای [20] SoC نقش مهمی را ایفا میکنند و همانند یک مخزنی از حافظهی سریع و اشتراکی، برای تمام پردازندههای SoC ترسیم میشوند.همانطور که گفتیم اغلب کش L3 از هستههای پردازنده بطور مستقل جدا است و میتواند بصورت پویا برای توازن سرعت دسترسی، توان مصرفی و ظرفیت ذخیره سازی تقسیم و دستهبندی شود؛ اگر چه در مقایسه با کش L1 و L2 کندتر میباشد اما کش L3 انعطافپذیر است و نقش مهمی در مدیریت ارتباطِ میان-هستهای [21] ایفا میکند.
با توجه به این که شرکت اینتل کش [22] eDRAM را تحت عنوان حافظه پنهان L4 به تراشههای Core I نسل اِسکایلِیک [23] اضافه کرده است، این امکان وجود دارد که کش L3 با افزایش حجم به جای برخی از وظایف و قابلیتها، نقش سادهتری در پردازندههای جدیدتر ایفا کند. در بخشهای بعدی در مورد حافظه پنهان کش L4 و ارتباط آن با حافظه های eDRAM و eSDRAM و همچنین در مورد SoC ها صحبت خواهیم کرد.
زیرنوشت
[1] Nehalem
[2] Barcelona
[3] Bulldozer
[4] Piledriver
[5] Steamroller
[6] Die
[7] Haswell-E
[8] Private
[9] Shared
[10] Workload
[11] Sandy Bridge
[12] On-die graphics core
[13] Ivy Bridge
[14] Graphics processing unit (GPU)
[15] Tick–Tock
[16] Process
[17] Architecture
[18] Optimization
[19] Refresh
[20] System-on-a-chip
[21] Inter-core
[22] Embedded DRAM (Embedded dynamic random-access memory)
[23] Skylake
لینک های پیشنهادی سایت:
حافظه کش (پنهان) و سطوح آن چیست و چه کاربردی برای پردازنده دارد ؟
SoC چیست (سیستم های بر تراشه) و استفاده از آنها چه مزایا و معایبی دارند ؟
حافظه های eDRAM (کش L4) چیست و تفاوت آن با DRAM و SRAM ؟
کتاب DSP مبتنی بر پردازندههای C55x
کپی و نشر این پست با ذکر منبع بلامانع است.