مقایسه ای کوچک از حافظه نهان L3 در بازی ها و برنامه ها. کش پردازنده L1 L2 L3 چه تاثیری دارد نحوه باز کردن کش سطح 3
روز همگی بخیر امروز سعی خواهیم کرد چیزی به عنوان کش را برای شما توضیح دهیم. حافظه پنهان پردازنده یک آرایه پردازش داده فوق سریع است که در مورد DDR4 16 تا 17 برابر سریعتر از RAM استاندارد است.
از این مقاله یاد خواهید گرفت:
این مقدار حافظه کش است که به CPU اجازه می دهد تا با حداکثر سرعت کار کند، بدون اینکه منتظر بماند تا RAM هیچ داده ای را پردازش کند و نتایج محاسبات نهایی را برای پردازش بیشتر به تراشه ارسال کند. یک اصل مشابه را می توان در هارد دیسک ردیابی کرد، فقط یک بافر 8-128 مگابایتی در آنجا استفاده می شود. نکته دیگر این است که سرعت ها بسیار کمتر است، اما روند مشابه است.
حافظه نهان پردازنده چیست؟
فرآیند محاسبه به طور کلی چگونه کار می کند؟ تمام داده ها در رم ذخیره می شوند که برای ذخیره موقت اطلاعات مهم کاربر و سیستم طراحی شده است. پردازنده تعداد معینی از وظایف را که به یک بلوک فوق سریع به نام حافظه کش هدایت می شوند برای خود انتخاب می کند و شروع به انجام وظایف مستقیم خود می کند.
نتایج محاسبات دوباره به RAM ارسال می شود، اما در مقدار بسیار کمتر (به جای هزار مقدار خروجی، مقدار بسیار کمتری دریافت می کنیم) و یک آرایه جدید برای پردازش گرفته می شود. و به همین ترتیب تا زمانی که کار تمام شود.
سرعت کار با راندمان رم تعیین می شود. اما هیچ یک از ماژولهای مدرن DDR4، از جمله راهحلهای اورکلاک با فرکانسهای زیر 4000 مگاهرتز، به تواناییهای ضعیفترین پردازنده با حافظه نهان «آهسته» خود نزدیک نبود.
این به این دلیل است که سرعت CPU به طور متوسط 15 برابر یا حتی بیشتر از عملکرد RAM بیشتر است. و فقط به پارامترهای فرکانس نگاه نکنید، علاوه بر آنها تفاوت های کافی نیز وجود دارد. در تئوری، معلوم می شود که حتی پردازنده های فوق قدرتمند Intel Xeon و AMD Epyc نیز مجبور به بیکار شدن هستند، اما در واقع هر دو تراشه سرور در حد خود کار می کنند. و همه اینها به این دلیل است که آنها مقدار مورد نیاز داده را بر اساس اندازه کش (تا 60 مگابایت یا بیشتر) جمع آوری می کنند و داده ها را فوراً پردازش می کنند. RAM به عنوان نوعی انبار عمل می کند که از آن آرایه ها برای محاسبات جمع آوری می شوند. راندمان محاسباتی رایانه افزایش می یابد و همه خوشحال می شوند.
گشتی کوتاه در تاریخ
اولین اشاره به حافظه کش به اواخر دهه 80 برمی گردد. تا آن زمان سرعت پردازنده و حافظه تقریباً یکسان بود. توسعه سریع تراشه ها به نوعی "عصا" برای افزایش سرعت RAM نیاز داشت، اما استفاده از تراشه های فوق سریع بسیار گران بود و بنابراین آنها تصمیم گرفتند با یک گزینه اقتصادی تر - معرفی یک حافظه پر سرعت کنار بیایند. آرایه در CPU
ماژول حافظه کش برای اولین بار در اینتل 80386 ظاهر شد. در آن زمان، تأخیر DRAM در حدود 120 نانوثانیه بود، در حالی که یک ماژول SRAM مدرن، تأخیر را به 10 نانوثانیه کاهش داد. یک تصویر تقریبی به وضوح در رویارویی بین HDD و SSD نشان داده شده است.
در ابتدا، حافظه نهان به دلیل سطح فرآیند فنی آن زمان، مستقیماً روی مادربردها لحیم می شد. با شروع اینتل 80486، 8 کیلوبایت حافظه مستقیماً در قالب پردازنده گنجانده شد، که باعث افزایش بیشتر عملکرد و کاهش سطح قالب می شود.
این فناوری چیدمان فقط تا زمان انتشار Pentium MMX مرتبط باقی ماند و پس از آن حافظه SRAM با SDRAM پیشرفتهتر جایگزین شد. و پردازنده ها بسیار کوچکتر شده اند و بنابراین نیاز به مدارهای خارجی از بین رفته است.
سطوح کش
در علامت گذاری پردازنده های مدرن، علاوه بر و، می توانید چیزی مانند اندازه کش 1،2 و 3 سطح پیدا کنید. چگونه تعریف می شود و چه تاثیری دارد؟ بیایید به زبان ساده بفهمیم.
- حافظه نهان سطح اول (L1) مهمترین و سریعترین تراشه در معماری CPU است. یک پردازنده می تواند تعداد ماژول های برابر با تعداد هسته ها را در خود جای دهد. قابل توجه است که ریز مدار می تواند بیشترین و مهم ترین داده ها را فقط از هسته خود در حافظه ذخیره کند. اندازه آرایه اغلب به 32-64 کیلوبایت محدود می شود.
- حافظه پنهان سطح دوم (L2) - کاهش سرعت با افزایش اندازه بافر جبران می شود که به 256 یا حتی 512 کیلوبایت می رسد. اصل کار مانند L1 است، اما فرکانس درخواست حافظه کمتر است، زیرا داده های با اولویت کمتر در آن ذخیره می شود.
- کش سطح سوم (L3) کندترین و پرحجم ترین پارتیشن در بین تمام موارد ذکر شده است. با این حال، این آرایه بسیار سریعتر از RAM است. وقتی صحبت از تراشه های سرور می شود، اندازه می تواند به 20 و حتی 60 مگابایت برسد. مزیت آرایه بسیار زیاد است: این یک پیوند کلیدی در تبادل داده بین تمام هسته های سیستم است. بدون L3، تمام عناصر تراشه پراکنده خواهند شد.
در فروش می توانید ساختار حافظه دو و سه سطحی را پیدا کنید. کدامیک بهتر است؟ اگر از پردازنده فقط برای برنامه های اداری و بازی های معمولی استفاده می کنید، هیچ تفاوتی احساس نمی کنید. اگر سیستم با نگاهی به بازی های پیچیده سه بعدی، آرشیو، رندر و گرافیک مونتاژ شود، در برخی موارد این افزایش بین 5 تا 10 درصد خواهد بود. حافظه نهان L3 تنها در صورتی توجیه می شود که بخواهید به طور منظم با برنامه های چند رشته ای که به محاسبات پیچیده منظم نیاز دارند کار کنید. به همین دلیل، مدل های سرور اغلب از کش های L3 بزرگ استفاده می کنند. اگرچه مواقعی وجود دارد که این کافی نیست و بنابراین باید ماژول های به اصطلاح L4 را نیز نصب کنید که شبیه یک ریزمدار جداگانه متصل به مادربرد هستند.
چگونه تعداد سطوح و اندازه حافظه پنهان پردازنده خود را بفهمیم؟
بیایید با این واقعیت شروع کنیم که این کار را می توان به 3 روش انجام داد:
- از طریق خط فرمان (فقط حافظه نهان L2 و L3)؛
- با جستجوی مشخصات در اینترنت؛
- با استفاده از ابزارهای شخص ثالث
اگر این واقعیت را به عنوان پایه در نظر بگیریم که برای اکثر پردازندهها L1 32 کیلوبایت است و L2 و L3 میتوانند نوسانات زیادی داشته باشند، به 2 مقدار آخر نیاز داریم. برای جستجوی آنها، خط فرمان را از طریق "شروع" باز کنید (مقدار "cmd" را از طریق نوار جستجو وارد کنید).
سیستم مقدار مشکوکی بالایی را برای L2 نشان خواهد داد. باید آن را بر تعداد هسته های پردازنده تقسیم کنید و نتیجه نهایی را بدانید.
اگر قصد جستجوی داده در شبکه را دارید، ابتدا نام دقیق CPU را پیدا کنید. روی نماد My Computer کلیک راست کرده و Properties را انتخاب کنید. در ستون "سیستم" یک مورد "پردازنده" وجود خواهد داشت که در واقع به آن نیاز داریم. نام آن را در همان گوگل یا یاندکس بازنویسی کنید و مقدار آن را در سایت ها ببینید. برای اطلاعات قابل اعتماد، بهتر است پورتال های رسمی سازنده (اینتل یا AMD) را انتخاب کنید. روش سوم نیز مشکلی ایجاد نمی کند، اما نیاز به نصب نرم افزارهای اضافی مانند GPU-Z، AIDA64 و سایر ابزارهای کمکی برای بررسی مشخصات سنگ دارد. گزینه ای برای طرفداران اورکلاک و ازدحام در جزئیات.
نتایج
اکنون متوجه می شوید که حافظه نهان چیست، اندازه آن به چه چیزی بستگی دارد، و برای چه اهدافی از یک آرایه داده فوق سریع استفاده می شود. در حال حاضر جالب ترین راه حل های موجود در بازار از نظر حجم بالای حافظه کش را می توان دستگاه های AMD Ryzen 5 و 7 با 16 مگابایت L3 نام برد.
در مقالات بعدی به موضوعاتی مانند پردازنده ها، مزایای تراشه ها و ... خواهیم پرداخت. و با ما بمانید تا زمانی که دوباره ملاقات کنیم، خداحافظ.
حافظه نهان L3 برای پردازنده های AMD چقدر مهم است؟
در واقع، تجهیز پردازندههای چند هستهای به حافظه اختصاصی که بین تمام هستههای موجود مشترک خواهد بود، منطقی است. در این نقش، یک کش L3 سریع می تواند دسترسی به داده هایی را که اغلب درخواست می شود، به میزان قابل توجهی افزایش دهد. سپس هسته ها، در صورت وجود چنین فرصتی، نیازی به دسترسی به حافظه اصلی کند (رم، رم) نخواهند داشت.
حداقل در تئوری. اخیرا AMD پردازنده Athlon II X4 را معرفی کرد، که یک مدل Phenom II X4 بدون کش L3 است و به این نکته اشاره می کند که چندان ضروری نیست. ما تصمیم گرفتیم به طور مستقیم دو پردازنده (با و بدون حافظه کش L3) را با هم مقایسه کنیم تا ببینیم که کش چگونه بر عملکرد تأثیر می گذارد.
برای بزرگنمایی روی عکس کلیک کنید.
کش چگونه کار می کند؟
قبل از اینکه وارد تست ها شویم، مهم است که برخی از اصول را درک کنیم. اصل کش بسیار ساده است. کش داده ها را تا حد امکان نزدیک به هسته های پردازشی پردازنده بافر می کند تا درخواست های CPU را به حافظه دورتر و کندتر کاهش دهد. در پلتفرم های دسکتاپ مدرن، سلسله مراتب کش شامل سه سطح است که قبل از دسترسی به RAM است. علاوه بر این، کش های سطح دوم و، به ویژه، سطح سوم نه تنها برای بافر داده ها خدمت می کنند. هدف آنها جلوگیری از اضافه بار گذرگاه پردازنده در زمانی که هسته ها نیاز به تبادل اطلاعات دارند.
ضربات و از دست دادن
اثربخشی معماری کش با درصد بازدید سنجیده می شود. درخواستهایی برای دادههایی که میتوانند توسط حافظه پنهان برآورده شوند، بازدید در نظر گرفته میشوند. اگر این کش حاوی داده های مورد نیاز نباشد، درخواست در طول خط لوله حافظه ارسال می شود و خطا شمارش می شود. البته، از دست دادن منجر به زمان بیشتری برای دریافت اطلاعات می شود. در نتیجه، «حبابها» (از کار افتادن) و تأخیرها در خط لوله محاسباتی ظاهر میشوند. از طرف دیگر، بازدیدها به شما امکان می دهد حداکثر عملکرد را حفظ کنید.
کش نوشتن، انحصارطلبی، انسجام
سیاستهای جایگزینی نحوه در دسترس قرار گرفتن فضای کش برای ورودیهای جدید را دیکته میکنند. از آنجایی که داده های نوشته شده در حافظه نهان باید دیر یا زود در حافظه اصلی ظاهر شوند، سیستم ها می توانند این کار را همزمان با نوشتن در حافظه پنهان (نوشتن از طریق) انجام دهند یا می توانند ناحیه داده را به عنوان "کثیف" (Write-back) علامت گذاری کنند. و زمانی که از حافظه پنهان خارج می شود، در حافظه بنویسید.
داده ها در چندین سطح کش می توانند به طور انحصاری ذخیره شوند، یعنی بدون افزونگی. سپس شما خطوط داده یکسان را در دو سلسله مراتب کش مختلف پیدا نخواهید کرد. یا کش ها می توانند به طور فراگیر کار کنند، یعنی سطوح پایین کش تضمین می شود که حاوی داده های موجود در سطوح بالای کش (نزدیک به هسته پردازنده) باشند. AMD Phenom از کش L3 انحصاری استفاده می کند، در حالی که اینتل از یک استراتژی کش فراگیر پیروی می کند. پروتکلهای انسجام دادهها را در هستهها، لایههای کش و حتی پردازندهها ثابت و بهروز نگه میدارند.
اندازه کش
یک کش بزرگتر می تواند داده های بیشتری را در خود نگه دارد، اما تمایل به افزایش تاخیر دارد. علاوه بر این، یک کش بزرگ تعداد قابل توجهی از ترانزیستورهای پردازنده را مصرف می کند، بنابراین یافتن تعادل بین "بودجه" ترانزیستورها، اندازه قالب، مصرف انرژی و عملکرد / تأخیر مهم است.
انجمنی
ورودیهای RAM را میتوان مستقیماً به حافظه پنهان نگاشت، یعنی تنها یک موقعیت در حافظه پنهان برای یک کپی از دادههای RAM وجود دارد، یا میتوانند n-way associative باشند، یعنی n مکان ممکن در کش وجود دارد. جایی که این داده ها ممکن است ذخیره شوند. ارتباط بالاتر (تا کش های کاملاً مرتبط) بهترین انعطاف پذیری کش را فراهم می کند زیرا داده های موجود در کش نیازی به رونویسی ندارند. به عبارت دیگر، n-درجه بالا تداعی نرخ ضربه بالاتر را تضمین میکند، اما تأخیر را افزایش میدهد زیرا آزمایش همه این ارتباطها برای یک ضربه به زمان بیشتری نیاز دارد. به عنوان یک قاعده، بالاترین درجه ارتباط برای آخرین سطح ذخیره سازی معقول است، زیرا حداکثر ظرفیت در آنجا موجود است و جستجوی داده های خارج از این حافظه پنهان منجر به دسترسی پردازنده به RAM کند می شود.
برای ارائه چند مثال، Core i5 و i7 از 32 کیلوبایت حافظه نهان L1 با ارتباط 8 طرفه برای داده ها و 32 کیلوبایت از حافظه نهان L1 با ارتباط 4 طرفه برای دستورالعمل ها استفاده می کنند. قابل درک است که اینتل می خواهد دستورالعمل ها سریعتر در دسترس باشد و حافظه نهان L1 برای داده ها حداکثر درصد ضربه را دارد. حافظه نهان L2 اینتل دارای ارتباط 8 طرفه است، در حالی که حافظه نهان L3 اینتل حتی هوشمندتر است زیرا از انجمن 16 جهته برای به حداکثر رساندن بازدیدها استفاده می کند.
با این حال، AMD استراتژی متفاوتی را با پردازندههای Phenom II X4 دنبال میکند که از کش L1 با ارتباط دو طرفه برای کاهش تأخیر استفاده میکند. برای جبران خطاهای احتمالی، ظرفیت کش دو برابر شد: 64 کیلوبایت برای داده و 64 کیلوبایت برای دستورالعمل. حافظه نهان L2 مانند طراحی اینتل دارای ارتباط 8 طرفه است، اما کش L3 AMD با ارتباط 48 طرفه کار می کند. اما تصمیم برای انتخاب یک معماری کش یا دیگری را نمی توان بدون در نظر گرفتن کل معماری CPU قضاوت کرد. کاملاً طبیعی است که نتایج آزمایش از اهمیت عملی برخوردار باشد و هدف ما فقط یک آزمایش عملی از کل ساختار پیچیده چند سطحی کش بود.
هر پردازنده مدرن یک کش اختصاصی دارد که دستورالعمل ها و داده های پردازنده را ذخیره می کند و تقریباً بلافاصله آماده استفاده است. این سطح معمولاً به عنوان اولین سطح کش یا L1 نامیده می شود و اولین بار با پردازنده های 486DX معرفی شد. اخیراً، پردازندههای AMD برای استفاده از حافظه نهان 64k L1 در هر هسته (برای دادهها و دستورالعملها) استاندارد شدهاند، در حالی که پردازندههای اینتل از 32k حافظه نهان L1 در هر هسته (همچنین برای دادهها و دستورالعملها) استفاده میکنند.
حافظه نهان سطح اول برای اولین بار در پردازنده های 486DX ظاهر شد و پس از آن به یکی از ویژگی های اصلی تمام پردازنده های مدرن تبدیل شد.
حافظه نهان سطح دوم (L2) پس از انتشار Pentium III روی همه پردازنده ها ظاهر شد، اگرچه اولین پیاده سازی آن در بسته در پردازنده Pentium Pro بود (اما نه بر روی یک تراشه). پردازنده های مدرن به حداکثر 6 مگابایت حافظه نهان L2 روی تراشه مجهز هستند. به عنوان یک قاعده، به عنوان مثال، چنین حجمی بین دو هسته در پردازنده Intel Core 2 Duo تقسیم می شود. پیکربندی های L2 معمولی 512 کیلوبایت یا 1 مگابایت حافظه نهان در هر هسته فراهم می کنند. پردازنده هایی با حافظه نهان L2 کوچکتر معمولاً در ردیف قیمت پایین تر قرار دارند. در زیر نموداری از پیاده سازی های اولیه کش L2 را مشاهده می کنید.
پنتیوم پرو دارای حافظه نهان L2 در بسته پردازنده بود. نسل های بعدی Pentium III و Athlon حافظه نهان L2 را از طریق تراشه های SRAM جداگانه پیاده سازی کردند که در آن زمان بسیار رایج بود (1998، 1999).
اعلام بعدی فناوری فرآیند تا 180 نانومتر به سازندگان اجازه داد تا در نهایت حافظه نهان L2 را در قالب پردازنده یکپارچه کنند.
پردازندههای دو هستهای اولیه زمانی که دو قالب در یک بسته نصب میشدند، به سادگی از طرحهای موجود استفاده میکردند. AMD یک پردازنده دو هسته ای را روی یک قالب یکپارچه معرفی کرد، یک کنترلر حافظه و یک سوئیچ اضافه کرد و اینتل به سادگی دو قالب تک هسته ای را در یک بسته برای اولین پردازنده دو هسته ای خود مونتاژ کرد.
برای اولین بار، حافظه نهان L2 بین دو هسته در پردازنده های Core 2 Duo به اشتراک گذاشته شد. AMD پا را فراتر گذاشت و اولین Phenom چهار هسته ای خود را از ابتدا ساخت، در حالی که اینتل دوباره از چند دای برای اولین پردازنده چهار هسته ای خود استفاده کرد، این بار دو هسته دو هسته ای Core 2، تا هزینه ها را کاهش دهد.
حافظه نهان L3 از روزهای اولیه پردازنده آلفا 21165 (96 کیلوبایت، معرفی شده در سال 1995) یا IBM Power 4 (256 کیلوبایت، 2001) وجود داشته است. با این حال، در معماری های مبتنی بر x86، حافظه نهان L3 برای اولین بار با مدل های Intel Itanium 2، Pentium 4 Extreme (گالاتین، هر دو پردازنده در سال 2003) و Xeon MP (2006) ظاهر شد.
اولین پیادهسازیها فقط سطح دیگری را در سلسله مراتب کش ارائه کردند، اگرچه معماریهای مدرن از کش L3 به عنوان یک بافر بزرگ و مشترک برای تبادل داده بین هستهها در پردازندههای چند هستهای استفاده میکنند. این نیز توسط n-درجه بالا از انجمن تاکید شده است. بهتر است کمی بیشتر در حافظه پنهان به دنبال داده بگردید تا موقعیتی که چندین هسته از دسترسی بسیار آهسته به رم اصلی استفاده می کنند. AMD ابتدا حافظه نهان L3 را بر روی یک پردازنده دسکتاپ به همراه خط Phenom که قبلا ذکر شد معرفی کرد. Phenom X4 65 نانومتری حاوی 2 مگابایت کش L3 مشترک است، در حالی که Phenom II X4 45 نانومتری فعلی دارای 6 مگابایت حافظه کش L3 مشترک است. پردازنده های Core i7 و i5 اینتل از 8 مگابایت حافظه نهان L3 استفاده می کنند.
پردازندههای چهار هستهای مدرن، حافظههای نهان L1 و L2 را برای هر هسته اختصاص دادهاند، همچنین یک حافظه نهان L3 بزرگ که بین همه هستهها مشترک است. حافظه نهان مشترک L3 همچنین امکان تبادل داده هایی را که هسته ها می توانند به صورت موازی روی آنها کار کنند را فراهم می کند.
کش یک بافر میانی با دسترسی سریع است که حاوی اطلاعاتی است که به احتمال زیاد درخواست می شود. دسترسی به داده ها در حافظه نهان سریعتر از واکشی داده های خام از RAM (RAM) و سریعتر از حافظه خارجی (دیسک سخت یا درایو حالت جامد) است، در نتیجه میانگین زمان دسترسی را کاهش می دهد و عملکرد کلی سیستم رایانه را افزایش می دهد.
برخی از مدلهای واحد پردازش مرکزی (CPU) حافظه پنهان خود را برای به حداقل رساندن دسترسی به حافظه با دسترسی تصادفی (RAM) دارند که کندتر از ثباتها است. حافظه کش زمانی که سرعت ساعت RAM به طور قابل توجهی کمتر از سرعت کلاک CPU باشد، عملکرد قابل توجهی را ارائه می دهد. سرعت کلاک حافظه کش معمولاً خیلی کمتر از فرکانس CPU نیست.
سطوح کش
کش CPU به چند سطح تقسیم می شود. در یک پردازنده با هدف عمومی، تعداد سطوح در حال حاضر میتواند به 3 برسد. حافظههای پنهان سطح N+1 معمولاً از نظر دسترسی و انتقال دادهها نسبت به کشهای سطح N بزرگتر و کندتر هستند.
سریعترین حافظه، حافظه نهان سطح اول - حافظه نهان L1 است. در واقع، بخشی جدایی ناپذیر از پردازنده است، زیرا روی همان تراشه با آن قرار دارد و بخشی از بلوک های عملکردی است. در پردازنده های مدرن، کش L1 معمولا به دو کش، کش دستورالعمل (دستورالعمل) و کش داده (معماری هاروارد) تقسیم می شود. اکثر پردازنده های بدون حافظه نهان L1 نمی توانند کار کنند. حافظه نهان L1 در فرکانس پردازنده عمل می کند و به طور کلی می توان در هر سیکل ساعت به آن دسترسی داشت. اغلب می توان چندین عملیات خواندن/نوشتن را همزمان انجام داد. تأخیر دسترسی معمولاً 2-4 چرخه اصلی است. حجم معمولاً کم است - بیش از 384 کیلوبایت.
دومین سریعترین کش L2 است - یک کش سطح دوم، معمولاً روی یک تراشه قرار دارد، مانند L1. در پردازنده های قدیمی تر، چیپست روی مادربرد. حجم حافظه نهان L2 از 128 کیلوبایت تا 1x12 مگابایت است. در پردازندههای چند هستهای مدرن، حافظه نهان سطح دوم که روی همان تراشه قرار دارد، یک حافظه جداگانه است - با حجم حافظه نهان کل nM مگابایت، هر هسته دارای nM / nC MB است، که در آن nC تعداد هستههای پردازنده است. به طور معمول، تأخیر حافظه نهان L2 واقع در تراشه هسته از 8 تا 20 چرخه هسته است.
حافظه نهان سطح سوم کمترین سرعت را دارد، اما اندازه آن می تواند بسیار چشمگیر باشد - بیش از 24 مگابایت. حافظه نهان L3 نسبت به کش های قبلی کندتر است، اما همچنان به طور قابل توجهی سریعتر از حافظه رم است. در سیستم های چند پردازنده ای، رایج است و برای همگام سازی داده های L2 مختلف طراحی شده است.
گاهی اوقات یک کش سطح 4 نیز وجود دارد، معمولاً در یک تراشه جداگانه قرار دارد. استفاده از حافظه نهان سطح 4 فقط برای سرورها و مین فریم های با کارایی بالا قابل توجیه است.
مشکل همگام سازی بین کش های مختلف (یک و چند پردازنده) با انسجام کش حل می شود. سه گزینه برای تبادل اطلاعات بین کش های سطوح مختلف یا به قول خودشان معماری کش وجود دارد: فراگیر، انحصاری و غیر انحصاری.
حافظه نهان L3 برای پردازنده های AMD چقدر مهم است؟
در واقع، تجهیز پردازندههای چند هستهای به حافظه اختصاصی که بین تمام هستههای موجود مشترک خواهد بود، منطقی است. در این نقش، یک کش L3 سریع می تواند دسترسی به داده هایی را که اغلب درخواست می شود، به میزان قابل توجهی افزایش دهد. سپس هسته ها، در صورت امکان، به حافظه اصلی کند (RAM) دسترسی نخواهند داشت.
حداقل در تئوری. AMD اخیراً پردازنده Athlon II X4 را معرفی کرده است که یک مدل Phenom II X4 بدون حافظه نهان L3 است و به این اشاره می کند که لازم نیست. ما تصمیم گرفتیم به طور مستقیم دو پردازنده (با و بدون حافظه کش L3) را با هم مقایسه کنیم تا ببینیم که کش چگونه بر عملکرد تأثیر می گذارد.
کش چگونه کار می کند؟
قبل از اینکه وارد تست ها شویم، مهم است که برخی از اصول را درک کنیم. اصل کش بسیار ساده است. کش داده ها را تا حد امکان نزدیک به هسته های پردازشی پردازنده بافر می کند تا درخواست های CPU را به حافظه دورتر و کندتر کاهش دهد. در پلتفرم های دسکتاپ مدرن، سلسله مراتب کش شامل سه سطح است که قبل از دسترسی به RAM است. علاوه بر این، کش های سطح دوم و، به ویژه، سطح سوم نه تنها برای بافر داده ها خدمت می کنند. هدف آنها جلوگیری از اضافه بار گذرگاه پردازنده در زمانی که هسته ها نیاز به تبادل اطلاعات دارند.
ضربات و از دست دادن
اثربخشی معماری کش با درصد بازدید سنجیده می شود. درخواستهایی برای دادههایی که میتوانند توسط حافظه پنهان برآورده شوند، بازدید در نظر گرفته میشوند. اگر این کش حاوی داده های مورد نیاز نباشد، درخواست در طول خط لوله حافظه ارسال می شود و خطا شمارش می شود. البته، از دست دادن منجر به زمان بیشتری برای دریافت اطلاعات می شود. در نتیجه، «حبابها» (از کار افتادن) و تأخیرها در خط لوله محاسباتی ظاهر میشوند. از طرف دیگر، بازدیدها به شما امکان می دهد حداکثر عملکرد را حفظ کنید.
کش نوشتن، انحصارطلبی، انسجام
سیاستهای جایگزینی نحوه در دسترس قرار گرفتن فضای کش برای ورودیهای جدید را دیکته میکنند. از آنجایی که داده های نوشته شده در حافظه نهان باید دیر یا زود در حافظه اصلی ظاهر شوند، سیستم ها می توانند این کار را همزمان با نوشتن در حافظه پنهان (نوشتن از طریق) انجام دهند یا می توانند ناحیه داده را به عنوان "کثیف" (Write-back) علامت گذاری کنند. و زمانی که از حافظه پنهان خارج می شود، در حافظه بنویسید.
داده ها در چندین سطح کش می توانند به طور انحصاری ذخیره شوند، یعنی بدون افزونگی. سپس شما خطوط داده یکسان را در دو سلسله مراتب کش مختلف پیدا نخواهید کرد. یا کش ها می توانند به طور فراگیر کار کنند، یعنی سطوح پایین کش تضمین می شود که حاوی داده های موجود در سطوح بالای کش (نزدیک به هسته پردازنده) باشند. AMD Phenom از کش L3 انحصاری استفاده می کند، در حالی که اینتل از یک استراتژی کش فراگیر پیروی می کند. پروتکلهای انسجام دادهها را در هستهها، سطوح کش و حتی پردازندهها ثابت و بهروز نگه میدارند.
اندازه کش
یک کش بزرگتر می تواند داده های بیشتری را در خود نگه دارد، اما تمایل به افزایش تاخیر دارد. علاوه بر این، یک کش بزرگ تعداد قابل توجهی از ترانزیستورهای پردازنده را مصرف می کند، بنابراین یافتن تعادل بین "بودجه" ترانزیستورها، اندازه قالب، مصرف انرژی و عملکرد / تأخیر مهم است.
انجمنی
ورودیهای RAM را میتوان مستقیماً به حافظه پنهان نگاشت، یعنی تنها یک موقعیت در حافظه پنهان برای یک کپی از دادههای RAM وجود دارد، یا میتوانند n-way associative باشند، یعنی n مکان ممکن در کش وجود دارد. جایی که این داده ها ممکن است ذخیره شوند. ارتباط بالاتر (تا کش های کاملاً مرتبط) بهترین انعطاف پذیری کش را فراهم می کند زیرا داده های موجود در کش نیازی به رونویسی ندارند. به عبارت دیگر، n-درجه بالا تداعی نرخ ضربه بالاتر را تضمین میکند، اما تأخیر را افزایش میدهد زیرا آزمایش همه این ارتباطها برای یک ضربه به زمان بیشتری نیاز دارد. به عنوان یک قاعده، بالاترین درجه ارتباط برای آخرین سطح ذخیره سازی معقول است، زیرا حداکثر ظرفیت در آنجا موجود است و جستجوی داده های خارج از این حافظه پنهان منجر به دسترسی پردازنده به RAM کند می شود.
برای ارائه چند مثال، Core i5 و i7 از 32 کیلوبایت حافظه نهان L1 با ارتباط 8 طرفه برای داده ها و 32 کیلوبایت از حافظه نهان L1 با ارتباط 4 طرفه برای دستورالعمل ها استفاده می کنند. قابل درک است که اینتل می خواهد دستورالعمل ها سریعتر در دسترس باشد و حافظه نهان L1 برای داده ها حداکثر درصد ضربه را دارد. حافظه نهان L2 اینتل دارای ارتباط 8 طرفه است، در حالی که حافظه نهان L3 اینتل حتی هوشمندتر است زیرا از انجمن 16 جهته برای به حداکثر رساندن بازدیدها استفاده می کند.
با این حال، AMD استراتژی متفاوتی را با پردازندههای Phenom II X4 دنبال میکند که از کش L1 با ارتباط دو طرفه برای کاهش تأخیر استفاده میکند. برای جبران خطاهای احتمالی، ظرفیت کش دو برابر شد: 64 کیلوبایت برای داده و 64 کیلوبایت برای دستورالعمل. حافظه نهان L2 مانند طراحی اینتل دارای ارتباط 8 طرفه است، اما کش L3 AMD با ارتباط 48 طرفه کار می کند. اما تصمیم برای انتخاب یک معماری کش یا دیگری را نمی توان بدون در نظر گرفتن کل معماری CPU قضاوت کرد. کاملاً طبیعی است که نتایج آزمایش از اهمیت عملی برخوردار باشد و هدف ما فقط یک آزمایش عملی از کل ساختار پیچیده چند سطحی کش بود.
پردازنده های کامپیوتری در چند سال گذشته پیشرفت چشمگیری داشته اند. اندازه ترانزیستورها هر سال در حال کاهش است و عملکرد در حال رشد است. در عین حال، قانون مور در حال حاضر نامربوط می شود. در مورد عملکرد پردازنده ها، نه تنها باید تعداد ترانزیستورها و فرکانس، بلکه مقدار کش را نیز در نظر گرفت.
شاید قبلاً هنگام جستجوی اطلاعات در مورد پردازنده ها در مورد حافظه نهان شنیده باشید. اما معمولاً به این اعداد توجه چندانی نمی کنیم، حتی در تبلیغات پردازنده ها نیز چندان به چشم نمی آیند. بیایید ببینیم حافظه نهان پردازنده چه چیزی را تحت تأثیر قرار می دهد، چه نوع کشی وجود دارد و چگونه همه کار می کنند.
به زبان ساده، حافظه نهان پردازنده فقط یک حافظه بسیار سریع است. همانطور که می دانید، یک کامپیوتر دارای انواع مختلفی از حافظه است. این یک حافظه فقط خواندنی است که برای ذخیره داده ها، سیستم عامل و برنامه هایی مانند SSD یا هارد دیسک استفاده می شود. کامپیوتر همچنین از رم استفاده می کند. این یک حافظه با دسترسی تصادفی است که بسیار سریعتر از یک حافظه ثابت است. و در نهایت، پردازنده دارای بلوکهای حافظه سریعتری است که در مجموع به آن حافظه پنهان میگویند.
اگر حافظه رایانه را از نظر سرعت به عنوان یک سلسله مراتب در نظر بگیرید، حافظه پنهان در بالای این سلسله مراتب قرار خواهد گرفت. علاوه بر این، به هسته های محاسباتی نزدیک ترین است، زیرا بخشی از پردازنده است.
حافظه کش پردازنده یک حافظه ثابت (SRAM) است و برای سرعت بخشیدن به کار با RAM طراحی شده است. برخلاف حافظه با دسترسی تصادفی پویا (DRAM)، داده ها را می توان بدون به روز رسانی مداوم در اینجا ذخیره کرد.
کش پردازنده چگونه کار می کند؟
همانطور که قبلاً می دانید، برنامه مجموعه ای از دستورالعمل ها است که یک پردازنده اجرا می کند. وقتی برنامه ای را اجرا می کنید، کامپیوتر باید این دستورالعمل ها را از حافظه فقط خواندنی به پردازنده منتقل کند. اینجاست که سلسله مراتب حافظه وارد عمل می شود. ابتدا داده ها در RAM بارگذاری می شوند و سپس به پردازنده منتقل می شوند.
این روزها یک پردازنده می تواند تعداد زیادی دستورالعمل در ثانیه پردازش کند. این پردازنده برای استفاده حداکثری از قابلیت های خود نیاز به حافظه فوق العاده سریع دارد. بنابراین، کش توسعه داده شد.
کنترلر حافظه پردازنده کار دریافت اطلاعات از رم و ارسال آن به حافظه پنهان را انجام می دهد. بسته به پردازنده مورد استفاده در سیستم شما، این کنترلر ممکن است در پل شمالی مادربرد یا در خود پردازنده قرار گیرد. کش همچنین نتایج اجرای دستورالعمل ها را در پردازنده ذخیره می کند. علاوه بر این، حافظه پنهان پردازنده نیز سلسله مراتب خاص خود را دارد.
سطوح حافظه نهان پردازنده - L1، L2 و L3
کل حافظه نهان پردازنده به سه سطح L1، L2 و L3 تقسیم می شود. این سلسله مراتب نیز بر اساس سرعت حافظه پنهان و همچنین اندازه آن است.
- حافظه نهان L1 (حافظه پنهان سطح اول)سریعترین نوع کش در پردازنده است. از نظر اولویت دسترسی، این کش حاوی هر داده ای است که یک برنامه ممکن است برای اجرای یک دستورالعمل خاص نیاز داشته باشد.
- L2 Cache (کش سطح دوم پردازنده)- کندتر از L1، اما در اندازه بزرگتر. حجم آن می تواند از 256 کیلوبایت تا هشت مگابایت باشد. حافظه نهان L2 حاوی داده هایی است که ممکن است پردازنده در آینده به آنها نیاز داشته باشد. در اکثر پردازنده های مدرن، کش های L1 و L2 روی خود هسته های پردازنده وجود دارند و هر هسته حافظه پنهان خود را دارد.
- کش L3 (کش سطح سوم)بزرگترین و کندترین کش است. اندازه آن می تواند در منطقه از 4 تا 50 مگابایت باشد. در CPU های مدرن، یک مکان جداگانه روی تراشه برای کش L3 اختصاص داده شده است.
در حال حاضر، اینها همه سطوح حافظه نهان پردازنده هستند، اینتل سعی کرده است یک کش L4 ایجاد کند، با این حال، این فناوری هنوز ریشه نگرفته است.
حافظه نهان در پردازنده برای چیست؟
وقت آن رسیده است که به سوال اصلی این مقاله پاسخ دهیم که کش پردازنده چه تاثیری دارد؟ داده ها از RAM به حافظه نهان L3، سپس به L2 و سپس به L1 جریان می یابد. هنگامی که پردازنده برای انجام یک عملیات به داده نیاز دارد، سعی می کند آن را در حافظه نهان L1 پیدا کند و اگر آن را پیدا کرد، به این وضعیت ضربه کش می گویند. در غیر این صورت، جستجو در کش های L2 و L3 ادامه می یابد. اگر حتی در حال حاضر داده ها پیدا نشد، یک درخواست از RAM ارسال می شود.
اکنون می دانیم که کش برای سرعت بخشیدن به انتقال اطلاعات بین رم و پردازنده طراحی شده است. زمانی که طول می کشد تا داده ها از حافظه خارج شوند Latency نامیده می شود. حافظه نهان L1 کمترین تأخیر را دارد، بنابراین سریعترین است، کش L3 بالاترین است. هنگامی که هیچ داده ای در حافظه پنهان وجود ندارد، ما با تاخیر بیشتری مواجه می شویم زیرا پردازنده باید به حافظه دسترسی پیدا کند.
قبلا در طراحی پردازنده ها کش های L2 و L3 به خارج از پردازنده منتقل می شدند که منجر به تاخیر زیاد می شد. با این حال، کاهش فرآیند تولید که توسط آن پردازندهها تولید میشوند، به شما این امکان را میدهد که میلیاردها ترانزیستور را در فضایی بسیار کوچکتر از قبل قرار دهید. در نتیجه، فضا برای قرار دادن حافظه پنهان تا حد امکان نزدیک به هستهها آزاد میشود و تاخیر بیشتری را کاهش میدهد.
کش چگونه بر عملکرد تأثیر می گذارد؟
تأثیر کش بر عملکرد رایانه مستقیماً به کارایی آن و تعداد بازدیدهای کش بستگی دارد. شرایطی که هیچ داده ای در حافظه پنهان وجود ندارد عملکرد کلی را به شدت کاهش می دهد.
تصور کنید که پردازنده داده ها را از حافظه نهان L1 100 بار پشت سر هم بارگذاری می کند. اگر درصد ضربه کش 100 درصد باشد، پردازشگر 100 نانوثانیه طول می کشد تا این داده ها را دریافت کند. با این حال، به محض اینکه درصد ضربه به 99٪ کاهش یابد، پردازنده باید داده ها را از حافظه نهان L2 واکشی کند و در حال حاضر 10 نانوثانیه تاخیر وجود دارد. برای 99 درخواست 99 نانوثانیه و برای 1 درخواست 10 نانوثانیه دریافت می کنید. بنابراین، کاهش درصد بازدید حافظه نهان به میزان 1 درصد، عملکرد پردازنده را تا 10 درصد کاهش می دهد.
در زمان واقعی، درصد بازدید در کش بین 95 تا 97 درصد است. اما همانطور که متوجه شدید، تفاوت عملکرد بین این شاخص ها 2٪ نیست، بلکه 14٪ است. به خاطر داشته باشید که در مثال، فرض میکنیم که دادههای بخشوده شده همیشه در حافظه نهان L2 هستند، در زندگی واقعی میتوان دادهها را از حافظه پنهان حذف کرد، به این معنی که باید از RAM دریافت شود، که تأخیر دارد. 80-120 نانوثانیه در اینجا تفاوت بین 95 و 97 درصد بیشتر قابل توجه است.
عملکرد ضعیف حافظه نهان در پردازنده های AMD Bulldozer و Piledriver یکی از دلایل اصلی شکست آنها در برابر پردازنده های اینتل بود. در این پردازندهها، حافظه نهان L1 بین چندین هسته به اشتراک گذاشته میشد که آن را بسیار ناکارآمد میکرد. پردازنده های مدرن رایزن این مشکل را ندارند.
می توان نتیجه گرفت که هرچه حافظه نهان بزرگتر باشد، عملکرد بالاتری دارد، زیرا پردازنده در موارد بیشتری قادر به دریافت سریعتر داده های مورد نیاز خود خواهد بود. با این حال، ارزش توجه نه تنها به اندازه حافظه نهان پردازنده، بلکه به معماری آن نیز دارد.
نتیجه گیری
اکنون می دانید که حافظه نهان پردازنده مسئول چه چیزی است و چگونه کار می کند. طراحی کش به طور مداوم در حال تکامل است و حافظه سریعتر و ارزان تر می شود. AMD و Intel قبلاً آزمایشهای زیادی با کش انجام دادهاند و اینتل حتی سعی کرد از کش L4 استفاده کند. بازار پردازنده ها سریعتر از همیشه در حال رشد است. معماری کش همگام با قدرت روزافزون پردازنده ها خواهد بود.
علاوه بر این، کارهای زیادی برای رفع تنگناهایی که کامپیوترهای مدرن دارند، انجام می شود. کاهش تأخیر حافظه یکی از مهم ترین بخش های این کار است. آینده بسیار امیدوار کننده به نظر می رسد.
ورودی های مشابه