چرا یک کش به بیش از مدارهای ذخیرهسازی نیاز دارد
مفاهیم کش که پیشتر در این مجموعه بحث شد، tag ها، index ها، و تشخیص hit یا miss، توضیح میدهند کش چه دادهای نگه میدارد و چگونه مکانیابی میشود. اما مدیریت یک درخواست واقعی، بهویژه یک miss که نیازمند واکشی داده از یک سطح کندتر سلسلهمراتب حافظه است، نیازمند یک توالی از گامهای هماهنگ در طول چند سیکل ساعت است، نه صرفاً یک جستجوی ترکیبی واحد. این توالی توسط یک Cache Controller مدیریت میشود.
یک ماشین حالت متناهی چیست
یک Finite-State Machine (FSM) یک مدل از منطق ترتیبی است، که پیشتر از نظر مفهومی در این مجموعه هنگام بحث درباره مدارهای ترکیبی و ترتیبی معرفی شد، که در هر لحظه دقیقاً در یکی از تعداد محدودی States تعریفشده قرار دارد، بین حالتها بر اساس ورودیها و حالت فعلی گذار میکند، و خروجیها را بر اساس اینکه در حال حاضر در کدام حالت است تولید میکند.
مدلسازی کنترل کش بهعنوان یک FSM
یک کنترلکننده کش سادهشده میتواند با تعداد کمی حالت که مراحل مدیریت یک درخواست حافظه را نشان میدهند مدلسازی شود.
حالت: Idle
→ در انتظار یک درخواست حافظه از پردازنده
حالت: Compare Tag
→ بررسی اینکه آیا آدرس درخواستشده hit است یا miss
حالت: Allocate (در یک miss)
→ ارسال یک درخواست به سطح بعدی حافظه برای واکشی بلوک
حالت: Write Cache Block (در یک miss)
→ نوشتن بلوک تازهواکشیشده در کش وقتی میرسد
حالت: Return to Idle
→ درخواست برآورده شد، آماده برای درخواست بعدیدنبال کردن یک Cache Hit در سراسر FSM
در یک hit، کنترلکننده از Idle به Compare Tag حرکت میکند، تطابق tag را تأیید میکند، بلافاصله داده درخواستشده را به پردازنده بازمیگرداند، و به Idle برمیگردد — یک توالی کوتاه که در چند سیکل بسیار کم کامل میشود.
دنبال کردن یک Cache Miss در سراسر FSM
در یک miss، کنترلکننده از Idle به Compare Tag حرکت میکند، عدمتطابق را تشخیص میدهد، سپس به حالت Allocate گذار میکند، و منتظر میماند هرچند سیکل که برای سطح کندتر حافظه لازم است تا بلوک گمشده را تأمین کند. وقتی داده میرسد، کنترلکننده به Write Cache Block حرکت میکند تا آن را ذخیره کند، tag مرتبط را بهروزرسانی میکند، و فقط سپس به Idle برمیگردد، و در نهایت داده درخواستشده را به پردازنده تحویل میدهد.
چرا مدلسازی کنترل به این شکل مفید است
توصیف کنترل کش بهعنوان یک ماشین حالت متناهی صریح، تأیید درستی طراحی را بسیار راحتتر میکند. هر موقعیت ممکنی که کنترلکننده ممکن است با آن مواجه شود با یک حالت مشخص و بهخوبی تعریفشده و مجموعهای از گذارها مطابقت دارد، که از نوع رفتار مبهم یا ناقص مشخصشدهای که میتواند از نوشتن منطق کنترلی به شیوهای کمتر رسمی و موردی ناشی شود جلوگیری میکند.
چرا این مفهوم فراتر از کشهای ساده گسترش مییابد
همین رویکرد ماشین حالت متناهی برای کنترل، بهطور طبیعی به کنترلکنندههای بسیار پیچیدهتر در سراسر یک پردازنده گسترش مییابد، از جمله منطق کنترل پایپلاین که پیشتر در این مجموعه بحث شد و کنترلکنندههای کش پیشرفتهتری که در سلسلهمراتب کش چندسطحی و چندهستهای واقعی یافت میشوند، جایی که توالیبندی درست بسیاری از موقعیتهای ممکن برای اجتناب از باگهای سختافزاری ظریف ضروری است.