فهرست مطالب:

طراحی یک کنترل کننده حافظه پنهان ساده چهار طرفه ساده در VHDL: 4 مرحله
طراحی یک کنترل کننده حافظه پنهان ساده چهار طرفه ساده در VHDL: 4 مرحله

تصویری: طراحی یک کنترل کننده حافظه پنهان ساده چهار طرفه ساده در VHDL: 4 مرحله

تصویری: طراحی یک کنترل کننده حافظه پنهان ساده چهار طرفه ساده در VHDL: 4 مرحله
تصویری: نه کاری که نمیدونستی گوشیت انجام میده | 9 کاربرد مخفی گوشی 2024, نوامبر
Anonim
طراحی یک کنترل کننده ساده Cache چهار طرفه در VHDL
طراحی یک کنترل کننده ساده Cache چهار طرفه در VHDL

در دستورالعمل قبلی من ، ما نحوه طراحی یک کنترل کننده کش ساده نقشه برداری مستقیم را دیدیم. این بار ، ما یک قدم جلوتر حرکت می کنیم. ما در حال طراحی یک کنترل کننده حافظه پنهان مجموعه ای چهار طرفه ساده هستیم. مزیت - فایده - سود - منفعت ؟ کمتر از دست رفته ، اما به قیمت عملکرد. درست مانند وبلاگ قبلی من ، ما در حال طراحی و شبیه سازی کل پردازنده ، حافظه اصلی و محیط حافظه نهان برای آزمایش کنترلر حافظه پنهان هستیم. امیدوارم این را به عنوان یک مرجع مفید برای درک مفاهیم و طراحی کنترلرهای کش خود در آینده پیدا کنید. از آنجا که مدل پردازنده (نیمکت تست) و سیستم حافظه اصلی دقیقاً مشابه وبلاگ قبلی من هستند ، دیگر آنها را توضیح نمی دهم. لطفاً برای اطلاعات بیشتر در مورد آن به دستورالعمل قبلی مراجعه کنید.

مرحله 1: مشخصات

مشخصات فنی
مشخصات فنی

نگاهی سریع به مشخصات Cache Controller ارائه شده در اینجا:

  • چهار طرفه تنظیم Associate Cache Controller (اگر به دنبال Direct Mapped Cache Controller هستید به این پیوند بروید).
  • تک بانکی ، مسدود کردن حافظه پنهان.
  • سیاست نوشتن از طریق نوشتن بازدیدها.
  • Policy-Around Policy در نوشتن خطاهای نوشتاری.
  • سیاست جایگزینی درخت شبه LRU (pLRU).
  • آرایه برچسب درون کنترلر
  • پارامترهای قابل تنظیم

مشخصات پیش فرض Cache Memory و Main Memory همان چیزی است که قبلاً قابل استفاده بود. لطفاً به آنها مراجعه کنید.

مرحله 2: نمای RTL کل سیستم

نمای RTL کل سیستم
نمای RTL کل سیستم

نمایش کامل RTL ماژول بالا در شکل (به استثنای پردازنده) نشان داده شده است. مشخصات پیش فرض اتوبوس ها عبارتند از:

  • همه گذرگاه های داده باس های 32 بیتی هستند.
  • Bus Bus = گذرگاه 32 بیتی (اما فقط 10 بیت در اینجا با حافظه قابل آدرس دهی است).
  • بلوک داده = 128 بیت (گذرگاه پهنای باند گسترده برای خواندن).
  • همه اجزا توسط یک ساعت حرکت می کنند.

مرحله 3: نتایج آزمایش

ماژول بالا با استفاده از یک Bench Test آزمایش شد که به سادگی یک پردازنده بدون لوله را شبیه سازی می کند ، درست مانند ما در دستورالعمل قبلی. میز تست درخواست های خواندن/نوشتن داده را به طور مکرر در حافظه ایجاد می کند. این دستورالعمل های معمولی "بار" و "ذخیره" را که در همه برنامه های اجرا شده توسط پردازنده رایج است به سخره می گیرد.

نتایج آزمایش عملکرد Cache Controller را با موفقیت تأیید کرد. در زیر آمار آزمون مشاهده شده است:

  • همه خواندن/نوشتن سیگنال های Miss و Hit به درستی ایجاد شد.
  • همه عملیات خواندن/نوشتن داده ها از هر چهار جهت موفق بود.
  • الگوریتم pLRU با موفقیت برای جایگزینی خطوط حافظه پنهان تأیید شده است.
  • هیچ مشکل ناسازگاری/ناسازگاری داده ها تشخیص داده نشد.
  • زمان طراحی با موفقیت برای Maxm تأیید شد. فرکانس ساعت = 100 مگاهرتز در برد Xilinx Virtex-4 ML-403 (کل سیستم) ، 110 مگاهرتز تنها برای Cache Controller.
  • RAM های بلوک برای حافظه اصلی استنباط شد. همه آرایه های دیگر بر روی LUT اجرا شد.

مرحله 4: فایل های پیوست شده

فایلهای زیر در اینجا با این وبلاگ ضمیمه شده است:

  • . VHD فایل های Cache Controller ، Cache Data Array ، Main Memory System.
  • نیمکت آزمون.
  • مستندات مربوط به Cache Controller

یادداشت:

  • برای درک کامل مشخصات Cache Controller که در اینجا ارائه شده است ، اسناد را مرور کنید.
  • هرگونه تغییر در کد به سایر ماژول ها وابسته است. بنابراین ، تغییرات باید با دقت انجام شود.
  • به همه نظرات و سرفصل هایی که من گفتم توجه کنید.
  • اگر به هر دلیلی ، Block RAM ها برای حافظه اصلی استنباط نمی شوند ، اندازه حافظه را کاهش دهید و به دنبال آن در عرض گذرگاه آدرس در فایلها و غیره تغییر دهید. به طوری که همان حافظه را می توان در LUT یا RAM توزیع شده پیاده سازی کرد. این باعث صرفه جویی در زمان و منابع می شود. یا ، به اسناد خاص FPGA بروید و کد سازگار برای Block RAM را بیابید و کد را متناسب با آن ویرایش کنید و از مشخصات عرض عرض گذرگاه آدرس استفاده کنید. تکنیک مشابه برای Altera FPGA.

توصیه شده: