Skip to Content

آرشیو

مفهوم کش یا حافظه نهان

مفهوم کش یا حافظه نهان

مفهوم کش یا حافظه نهان

حافظه نهان اولیه (Level cache)

این نوع حافظه در تمام پردازنده‌های 486 و بالاتر از جمله پنتیوم درون پردازنده وجود دارد. این نوع حافظه باعث می‌شود داده‌ها با سرعت بیشتری در اختیار پردازنده قرار گیرند. اندازه این نوع حافظه در پردازنده‌های 80486 ، برابر 256 کیلوبایت است. بنابراین حافظه نهان اولیه را کاربران رایانه نمی‌توانند افزایش دهند. زیرا درون بدنه سرامیکی یا پلاستیکی پردازنده قرار دارد. پردازنده‌های پنتیوم 2 و 3 دارای حافظه نهان اولیه‌ای متشکل از 2 بخش 16 بیتی کیلوبایتی هستند که یکی برای داده‌ها و دیگری برای دستورالعملها است. این پردازنده‌ها در مجموع دارای 32 کیلوبایت حافظه نهان هستند.

اگر تا کنون یک کامپیوتر شخصی خریده باشید قطعا اصطلاح کاشه (Cache) را شنیده اید .کامپیوتر های مدرن دارای هر دو نوع کاشه های L1 و L2 حتی L3 هستند همچنین ممکن است از مقدار آن ( سلرون . سلرون دی . فول ) چیزهایی شنیده باشید این موضوع نشان میدهد که حافظه نهان یک فرایند مهم در علم کامپیوتر است که بروی هر کامپیوتری ظاهر می شود.
کاشه سازی یک فناوری مبتنی بر زیر سیستم حافظه کامپیوتر شما است . هدف اصلی یک کاشه شتاب دهی کامپیوتر شما و در عین حال پایین نگه داشتن قیمت آن است . کاشه سازی به شما امکان می دهد تا وظایف کامپیوتر خود را با سرعت بیشتری انجام دهید. برای درک ایده اصلی موجود در پشت یک سیستم کاشه اجازه دهید کار را با یک مثال فوق العاده ساده آغاز کنیم که برای نشان دادن مفاهیم کاشه سازی از یک کتابدار(پردازنده)استفاده می کند. اجازه بدهید یک کتابدار (پردازنده) را در پشت میزش تصور کنیم .او آنجا نشسته است تا کتبی که میخواهید را در اختیار شما قرار دهد برای ساده تر کردن وضعیت اجازه بدهید فرض کنیم که شما خودتان (کاربر پشت کامپیوتر) نمی توانید کتاب مورد نظر را بردارید شما باید کتاب مورد نظر خود برای مطالعه را از کتابدار (پردازنده) بخواهید تا وی آن را از یک مجموعه قفسه (یعنی بخش های مختلف پردازنده اعداد صفر و یک را ترجمه کند که این اعداد در RAM هستند) در سالن نگهداری کتابها (RAM ) برای شما بیاورد ابتدا اجازه بدهید کار را با یک کتابدار فاقد کاشه آغاز کنیم .
اولین مشتری (اولین برنامه ایی که شما اجرا کرده اید ) از راه میرسد او کتاب موبی دیک (یک برنامه مثل فتو شاپ) را در خواست میکند کتابدار (پردازنده) به سالن نگهداری کتاب (RAM) رفته و کتاب مورد نظر را برداشته به بخش مراجعه برگشته(یعنی ترجمه می کند و به مانیتور میفرسته) و کتاب را به مشتری می دهد بعدا مشتری برای باز گرداندن کتاب به کتابخانه بر می گردد (برنامه را می بندد) کتاب دار (پردازنده) کتاب مورد نظر را گرفته و آن را به سالن نگهداری بر می گرداند
سپس کتابدار به بخش مراجعه باز گشته (یعنی منتظر اجرای فرمانهای بعدی شماست (حتی حرکت موس) ) و منتظر مشتری بعدی میماند فرض کنیم مشتری بعدی نیز کتاب موبی دیک را در خواست کند(یعنی دوباره برنامه فتو شاپ را اجرا کنیم) به این ترتیب کتابدار باید به سالن نگهداری(RAM) برگردد تا کتابی را که اخیرا با آن سرو کار داشته است را برداشته و به مشتری (کاربر) تحویل دهد.در این مدل کتابدار (پردازنده) ناچار است برای آوردن هر کتاب (اجرای یک برنامه) یک چرخه کامل را طی نماید حتی کتاب های مشهوری که به دفعات در خواست شده است (یعنی برنامه هایی که به دفعات اجرا می شوند و بسته می شوند).
اجازه دهید یک کوله پشتی (حافظه نهان) را در اختیار کتابدار قرار دهیم تا بتواند 10 کتاب را در آن ذخیره کند (یعنی کتابدار دارای یک کاشه 10 کتابی است ) او در این کوله پشتی حداکثر 10 عدد از کتابهایی را نگهداری می کند که مشتریان برگردانده اند اجازه دهید از مثال قبلی استفاده کنیم اما اینبار با کتابداری که به کاشه سازی جدید و بهبود یافته مجهز شده است.

حافظه نهان ثانویه

در رایانه‌های با پردازنده 486 و بالاتر ، برای بالابردن کارآیی رایانه معمولا از حافظه نهان ثانویه نیز استفاده می‌شود. این حافظه در رایانه‌های قبل از پنتیوم 2 و 3 این نوع حافظه در کنار پردازنده بر روی کارت یا کارتریج پردازنده قرار گرفته است و به صورت ریز مجتمع با پردازنده است. در این پردازنده‌های نسل دوم سلرون و بعد از آن ، حافظه نهان ثانویه در داخل خود پردازنده قرار گرفته و اندازه آن بین 128 تا 256 کیلوبایت است. پردازنده آتلون (کا7) از 512 کیلوبایت تا 8 مگابیت حافظه نهان ثانویه را پشتیبانی می‌کند.

حافظه نهان ثانویه حافظه نهان اولیه نوع پردازنده
__ __ 386 اینتل
__ 16 و 8 کیلوبایت 486 اینتل
__ 16 کیلوبایت پنتیوم کلاسیک اینتل
__ 32 کیلوبایت پمنتیوم ام‌ام‌ایکس اینتل
512 کیلوبایت 32 کیلوبایت پنتیوم 2 اینتل
256 یا 512 کیلوبایت یا یک مگابایت 16 کیلوبایت پنتیوم پرو اینتل

مادربردها معمولا دارای حداقل 256 کیلوبایت از این نوع حافظه نهان هستند. بنابراین می‌توان گفت مقدار حافظه نهان بستگی به عوامل زیر دارد :

1. نوع پردازنده
2. اندازه حافظه اصلی
3. نوع تراشه‌های مجتمع (مجموعه تراشه مادربرد) نوع پردازنده

چنانچه حافظه اصلی در حدود 32 مگابایت باشد، 256 کیلوبایت حافظه نهان ثانویه کافی است. اما برای حافظه بین 32 مگابایت بهتر است مادربرد رایانه دارای 512 کیلوبایت حافظه نهان ثانویه داشته باشد. بالاخره چنانچه بیشتر از 64 مگابات باشد بهتر است از یک مگابایت حافظه نهان ثانویه استفاده شود. بنابراین اصل کلی در مورد حافظه نهان این است که هرچه اندازه حافظه نهان ثانویه بزرگتر ، مفیدتر است.

فرض کنیم که شما هر روز به رستوران می رید . هر روز راس ساعت 5 بعد از ظهر سفارش غذا می دید . هروز 4 نوع غذا رو به ترتیب خاص سفارس می دید . راس ساعت 5 همبرگر سفارش می دید گارسون سفارش شما رو بررسی می کنه به آشپزخونه میره بعد از 1 دقیقه همبرگر رو برای شما میاره شما همبرگر رو خورده و سفارش سوسیس می دید مجددا سفارش توسط گارسون به آشپزخانه منتقل شده و بعد از یک دقیقه غذا آماده می شه . به همین ترتیب شما سه غذای دیگه رو سفارش داده و برای هر غذا 1 دقیقه معطل میشید . خوب شما هروز همین غذاهارو سفارش داده و برای آماده شدن هر غذا 1 دقیقه معطل می شید . گارسون با خودش فکر می کنه که برای اینکه هم خودش کمتر کار کنه و هم شما کمتر معطل بشید بیاد و 1 میز دیگه ای آماده از غذاهای شما رو تهیه کنه و بلافاصله بعد از سفارش شما غذا رو روی میزتون بزاره . در اینجا گارسون” باس ” آشپزخانه ” رم ” و میز آماده ” کش ” در نظر گرفته می شن . بعد از چند روز شما همبرگر رو میخورید طبق عادت گارسون برای شما سوسیس میاره اما شما می گید که امروز املت می خوام! اینجا گارسون مجددا مجبور میشه که 1 دقیقه شما رو در انتظار بزاره تا املت رو براتون بیاره . در اینجا گارسون میز دومی رو تهیه می کنه که بر اساس انتخاب های دوم شما چیده شده . بدین ترتیب شما اگر غذایی رو سفارش بدین که در میز اول نباشه اما در میز دوم باشه بلافاصله غذا رو میل می کنید و معطل نمی شید . میز دوم در اینجا کش سطح دو یا ” Cache L2 ” هست . اصطلاحی که امروزه در رابطه با فول کش یا هالف کش گفته میشه همین کش سطح 2 هست . اصول کار پردازنده بدین صورت که پیش بینی دستورات بعدی رو کرده و جواب دستورات رو در حافظه ی نهان یا همون کش می ذاره . جالبه که بدونید پردازنده 90% دستورات بعدی رو درست حدس میزنه و اگر حدس پردازنده غلط از کار در بیاد مجبوره که به حافظه ی رم مراجعه کنه که همین مراجعه باعث تاخیر زیادی در کار پردازنده میشه . نکته ی که قابل گفتن هست اینه که این حافظه بسیار گران قیمت هست و به صرفه نیست که برای بالا بردن سرعت کامپیوتر حافظه کش تهیه کنید . ( مجبورید پردازنده هم عوض کنید!)
کتابداری را در نظر بگيريد که در يک کتابخانه مسئول تحويل کتاب به متقاضيان است . فرض کنيد در سيستم فوق ( درخواست و تحويل کتاب ) از مفهوم Cache استفاده نمی گردد. اولين متقاصی کتابی را درخواست می نمايد( فرض شده است که متقاضی خود نمی تواند مستقيما” کتاب مورد نظر را از قفسه مربوطه ،بردارد) ، کتابدار، کتاب مورد نظر را از قفسه مربوطه پيدا و در ادامه آن را تحويل متقاضی می نمايد. متقاضی پس از ساعاتی مراجعه و کتاب را تحويل می دهد. کتابدار، کتاب تحويلی را مجددا” در قفسه مربوطه قرار می دهد. پس از لحظاتی يک متقاضی ديگر مراجعه و همان کتاب قبلی را درخواست می نمايد ، کتابدار مجددا” می بايست به بخش مربوطه در کتابخانه مراجعه و پس از بازيابی کتاب ، آن را در اختيار متقاضی دوم قرار دهد.همانگونه که ملاحظه می گردد ، کتابدار مکلف است برای تحويل هر کتاب ( ولو کتاب هائی که فرکانس استفاده از آنان توسط متقاضيان زياد باشد ) به بخش مربوطه مراجعه و پس از يافتن کتاب آن را در اختيار متقاضيان قرار دهد. آيا روشی وجود دارد که با استناد به آن بتوان عملکرد و کارآئی کتابدار را بهبود بخشيد ؟
در پاسخ به سوال فوق می توان با ايجاد يک سيستم Cache برای کتابدار ، کارآئی آن را افزايش داد. فرض کنيد بخشی را با ظرفيت حداکثر ده کتاب در مجاورت ( نزديکی ) کتابدار آماده نمائيم . کتاب هائی که توسط متقاضيان برگردانده می شود، در بخش فوق ذخيره خواهند شد. مثال فوق را با در نظر گرفتن سيستم Cache ايجاد شده برای کتابدار مجددا” دنبال می نمائيم . در ابتدای فعاليت روزانه ، بخش Cache خالی بوده و هنوز در آن کتابی قرار نگرفته است . اولين متفقاصی مراجعه و کتابی را درخواست می نمايد . کتابدار می بايست به بخش مربوطه مراجعه و کتاب را از قفسه مربوطه براشته و در اختيار متقاضی قرار دهد. متقاضی پس از تحويل کتاب ، چند ساعت بعد مراجعه و کتاب را تجويل کتابدار خواهد داد. کتابدار، کتاب تحويلی را در بخش پيش بينی شده برای Cache قرار می دهد. لحظاتی بعد متقاضی ديگر مراجعه و درخواست همان کتاب را می نمايد .کتابدار در ابتدا بخش مربوط به Cache را جستجو و در صورت يافتن کتاب ، آن را به متقاضی تحويل خواهد داد. در اين حالت ضرورتی به مراجعه کتابدار به بخش و قفسه های مربوطه نخواهد بود. در روش فوق زمان تحويل کتاب به متقاضی بهبود چشمگيری پيدا خواهد کرد. در صورتيکه کتاب درخواستی توسط متقاضی در بخش Cache کتابخانه نباشد ، چه اتفاقی خواهد افتاد؟ در ابتدا مدت زمانی صرف خواهد شد که کتابدار به اين اطمينان برسد که کتاب درخواستی در بخش Cache موجود نمی باشد ( جستجو) يکی از چالش های اصلی در رابطه با طراحی Cache به حداقل رساندن زمان جستجو در Cache است .سخت افزارهای جديد ، زمان فوق را به صفر نزديک کرده اند. پس از حصول اطمينان از عدم وجود کتاب در بخش Cache ، کتابدار می بايست با مراجعه به بخش مربوطه آن را انتخاب و در ادامه در اختيار متقاضی قرار دهد.
با توجه به دو مثال فوق ، چندين نکته مهم در رابطه با Cache استنباط می گردد:

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

Cache در کامپيوتر

کامپيوتر، ماشينی است که زمان انجام کارها توسط آن با واحدهای خيلی کوچک اندازه گيری می گردد.زمانيکه ريزپردازنده قصد دستيابی به حافظه اصلی را داشته باشد، می بايست مدت زمانی معادل 60 نانوثانيه را برای اين کار در نظر بگيرد. سرعت فوق بسيار بالا است ولی سرعت ريزپردازنده بمراتب بيشتر است . ريزپردازنده قادر به داشتن سيکل هائی به اندازه دو نانوثانيه است . تفاوت سرعت بين پردازنده و حافظه کاملا” مشهود بوده و قطعا” رضايت پردازنده در اين خصوص کسب نخواهد شد. پردازنده می بايست تاوان کند بودن حافظه را خود بپردازد . انتظار پردازنده و هرز رفتن زمان مفيد وی کوچکترين تاوانی است که می بايست پردازنده پذيرای آن باشد.
بمنظور حل مشکل فوق ، فرض کنيد از يک نوع خاص حافظه، با ظرفيت کم ولی با سرعت بالا ( 30 نانوثانيه ) ، استفاده گردد . سرعت دستيابی به حافظه فوق دو مرتبه سريعتر نسبت به حافظه اصلی است .اين نوع حافظه راL2 Cache می نامند. فرض کنيد از يک حافظه بمراتب سريعتر ولی با حجم کمتر استفاده و آن را مستقيما” با پردازنده اصلی درگير نمود. سرعت دستيابی به حافظه فوق می بايست در حد و اندازه سرعت پردازنده باشد .اين نوع حافظه ها را L1 Cache می گويند.
در کامپيوتر از زيرسيستمهای متفاوتی استفاده می گردد.از Cache می توان در رابطه با اکثر زير سيستمهای فوق استفاده تا کارآئی آنان افزايش يابد.

ادامه مطلب

مفهوم حافظه‌ های کش L1, L2 و L3

حافظه‌ی کش L1, L2 و L3 چیست و چه تاثیری در عملکرد پردازنده دارد؟

مفهوم حافظه‌ های کش L1, L2 و L3

 

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

تقریبا تمام پردازنده‌ها از پردازنده‌های کم‌مصرف و کم‌توانی مانند Cortex-A5 آرم تا پردازنده‌های قدرتمندی همچون Core i7 اینتل همگی از حافظه‌ی پرسرعتی به نام کش (Cache) بهره می‌برند. حتی میکروکنترلرهای رده بالا نیز عموما کَشِ کوچکی دارند. با وجود اینکه در طراحی آن‌ها مصرف انرژی اهمیت زیادی دارد و کش نیز انرژی مصرف می‌کند، اما مزیت‌های حافظه‌ی کش آنقدر مهم هستند که استفاده از کش را توجیه می‌کند.

کشینگ و استفاده از کش اختراع شد تا یک مشکل جدی را حل کند. در دهه‌های اولیه‌ی ظهور کامپیوتر، حافظه‌ی اصلی به شدت کند و بسیار گران بود و از طرفی پردازنده‌ها نیز چندان سریع نبودند. در دهه‌ی ۱۹۸۰ اختلاف سرعت بین حافظه و پردازنده افزایش یافت و سرعت کلاکِ میکروپروسسورها مدام در حال افزایش بود. در این شرایط همچنان حافظه‌ها کند بودند و در واقع نمی‌توانستند پا به پای پردازنده‌ها دسترسی به اطلاعات را فراهم کنند. اینجا بود که لزوم ساخت حافظه‌های سریع‌تر حس شد. در نمودار زیر می‌توانید رشد سرعت حافظه‌های DRAM و CPUها را طی سال‌های ۱۹۸۰ تا ۲۰۰۰ مشاهده کنید:

مفهوم حافظه‌ های کش L1, L2 و L3

در سال ۱۹۸۰ کش در میکروپروسسورها وجود نداشت. در سال ۱۹۹۵ استفاده از سطح دوم کش رواج یافت.

کش چطور کار می‌کند؟

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

از سوی دیگر، موضوعی با عنوان Cache Miss وجود دارد و به معنی آن است که اطلاعاتی که پردازنده به آن‌ها نیاز دارد در کش وجود ندارد و برای یافتن آن‌ها باید به حافظه‌های دیگر مراجعه کند. این همان جایی است که L2 Cache یا سطح دوم حافظه‌ی کش وارد بازی می‌شود. هرچند حافظه‌‌ی L2 به اندازه‌ی L1 سریع نیست، اما ظرفیت آن بیشتر است. برخی از پردازنده‌ها از طراحی پوششی بهره می‌برند و این بدین معنی است که اطلاعاتی که در L1 ذخیره می‌شود همزمان در L2 نیز کپی می‌شود. اما طراحی دیگری نیز وجود دارد که در آن هیچ وقت اطلاعات موجود در L1 و L2 یکسان نخواهند بود. اگر پردازنده اطلاعات مورد نیاز خود را در L2 پیدا نکند آن‌وقت به سطح سوم کش یا L3 مراجعه می‌کند به همین ترتیب در صورت پیدا نشدن اطلاعات در L3 پردازنده به L4 سر می‌زند و اگر اطلاعات مورد نیاز پردازنده در این سطح از حافظه نبود آن‌وقت ناگزیر به مراجعه به رم (DRAM) می‌شود. توجه داشته باشید که تمام پردازنده‌های از هر چهار سطح حافظه‌ی کش پشتیبانی نمی‌کنند و برخی از پردازنده‌های قدیمی تنها سه یا دو سطح از حافظه‌‌ی کش را در اختیار دارند.

سطح دوم از حافظه‌ی کش، ارزان‌ترو بزرگ‌تر از L1 است و علاوه بر آن مصرف انرژی کمتری نیز دارد. اما با این حال بسیاری از پردازنده‌های مدرن امروزی ۹۵ درصد از درخواست‌های خود را از همان L1 پاسخ می‌گیرند و کمتر نیاز به مراجعه به حافظه‌ی سطح دوم پیدا می‌کنند.

چرا ظرفیت حافظه‌ی کش CPU مدام در حال افزایش است؟

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

مفهوم حافظه‌ های کش L1, L2 و L3

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

طراحی کش چه تاثیری بر روی بازده دارد؟

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

تصویر کنید که یک CPU مجبور باشد اطلاعات مشخصی را ۱۰۰ بار پشت سر هم از L1 بخواند. حافظه‌ی L1 تاخیر یک نانوثانیه دارد و هر ۱۰۰ بار نیز حافظه با موفقیت اطلاعات را می‌خواند. به این ترتیب پردازنده ۱۰۰ نانوثانیه برای انجام این عملیات زمان صرف می‌کند.

حال تصور کنید که همان CPU با نرخ ۹۹ درصد اطلاعات را از L1 بخواند و صدمین مراجعه‌ی آن به L1 بدون پاسخ بماند و مجبور باشد به L2 مراجعه کنید. تاخیر L2 ده سیکل یا ۱۰ نانوثانیه است به این ترتیب پردازنده ۹۹ نانوثانیه برای کسب اطلاعات از L1 و ۱۰ نانوثانیه برای کسب اطلاعات از L2 صرف می‌کند. این بدین معنی است که اگر یک درصد از مراجعات پردازنده به حافظه‌ی L1 بدون پاسخ بماند ۱۰ درصد سرعت پردازنده کاهش می‌یابد.

در دنیای واقعی حافظه‌ی L1 بین ۹۵ تا ۹۷ درصد مراجعات پردازنده را پاسخ می‌دهد، اما همان دو درصد اختلاف می‌تواند تاثیر محسوسی در سرعت پردازش امور داشته باشد. تازه این برای زمانی است که مطمئن باشیم اطلاعاتی که در L1 یافت نشده است حتما در L2 وجود دارد. اما در دنیای واقعی بعضی اوقات اطلاعات مورد نیاز پردازنده حتی در L3 و L4 نیز وجود ندارد و پردازنده مجبور به مراجعه به رم است. اگر پردازنده مجبور به کسب اطلاعات از رم باشد آنوقت سیکل پاسخ‌دهی به ۸۰ تا ۱۲۰ نانوثانیه افزایش می‌یابد.

وقتی پردازنده‌های سری بولدوزر ای‌ام‌دی را با رقبای اینتلی آن مقایسه کنیم، مبحث طراحی کش و تاثیر آن بر روی بازده‌، به یک عامل بسیار مهم تبدیل می‌شود؛ عاملی که معادلات بازی را بر هم می‌زند. بسیاری از کارشناسان، یکی از دلایل مهم عقب ماندن AMD از Intel در قدرت و بازده‌ی پردازنده‌ها را در طراحی کش می‌دانند. پردازنده‌های سری بولدوزر ای‌ام‌دی از مشکل Cache Contention رنج می‌برند. این مشکل زمانی رخ می‌دهد که دو رشته یا Thread متفاوت اطلاعات را بر روی یک سکتور از کش ذخیره کنند. این مشکل تاثیر بسیار منفی بر روی بازده هر دو Thread دارد. تصور کنید که یک هسته برای کسب اطلاعات مورد نظر خود به کش مراجعه می‌کند، اما هسته‌ای دیگر اطلاعات مورد نظر خود را بر روی همان بخش از حافظه کپی کرده است. در این صورت هسته مجبور است یک بار تمام سطوح کش را چک کرده و سپس به رم مراجعه کرده و مجددا اطلاعات مورد نظر خود را در سطح اول کش بنویسد. این مشکل حتی در پردازنده‌های مجهز به معماری Streamroller ای‌ام‌دی نیز وجود دارد و حتی تلاش این شرکت برای اختصاص ۹۶ کیلوبایت به L1 Code Cache هم موثر نبوده است. از طرفی حتی استفاده از فناوری HSA یا معماری ناهمگن نیز در این باره چندان موثر نبوده است.

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

ادامه مطلب