Съдържание:

Проектиране на прост четирипосочен контролер за асоцииран кеш във VHDL: 4 стъпки
Проектиране на прост четирипосочен контролер за асоцииран кеш във VHDL: 4 стъпки

Видео: Проектиране на прост четирипосочен контролер за асоцииран кеш във VHDL: 4 стъпки

Видео: Проектиране на прост четирипосочен контролер за асоцииран кеш във VHDL: 4 стъпки
Видео: Раскрытие тайны ToR Switch: предоставление ИТ-специалистам возможностей с помощью сетевой информации 2024, Ноември
Anonim
Проектиране на прост четирипосочен контролер за асоцииран кеш във VHDL
Проектиране на прост четирипосочен контролер за асоцииран кеш във VHDL

В предишните ми инструкции видяхме как да проектираме прост директно картографиран кеш контролер. Този път вървим крачка напред. Ще проектираме прост четирипосочен контролер за асоциативен кеш. Предимство? По -малък процент пропуски, но с цената на производителността. Точно като предишния ми блог, ние ще проектираме и емулираме цял процесор, основна памет и кеш среда, за да тестваме нашия кеш контролер. Надявам се, че вие ще намерите това като полезна справка, за да разберете концепциите и да проектирате свои собствени кеш контролери в бъдеще. Тъй като моделът за процесор (тестова пейка) и основната система с памет са абсолютно същите като предишния ми блог, няма да ги обяснявам отново. Моля, вижте предишните инструкции за подробности относно него.

Стъпка 1: Спецификации

Спецификации
Спецификации

Бързо разгледайте представените тук спецификации на Cache Controller:

  • Четирипосочен контролер за асоцииращ кеш (отидете на тази връзка, ако търсите контролер за директно картографиран кеш).
  • Еднобанков, блокиращ кеш.
  • Политика за запис при посещения.
  • Политика за писане около грешки при запис.
  • Политика за подмяна на псевдо-LRU (pLRU) на дърво.
  • Tag Array в контролера.
  • Конфигурируеми параметри.

Спецификациите по подразбиране за кеш памет и основна памет са същите като от предишните ми инструкции. Моля, обърнете се към тях.

Стъпка 2: RTL изглед на цялата система

RTL изглед на цялата система
RTL изглед на цялата система

Пълното RTL представяне на горния модул е показано на фигурата (с изключение на процесора). Стандартните спецификации за автобусите са:

  • Всички автобуси за данни са 32-битови автобуси.
  • Адресна шина = 32-битова шина (Но само 10 бита са адресирани тук от паметта).
  • Блок данни = 128 бита (Широка ширина на честотната лента за четене).
  • Всички компоненти се задвижват от един и същ часовник.

Стъпка 3: Резултати от теста

Модулът Top е тестван с помощта на Test Bench, който просто моделира неконвейерен процесор, точно както направихме в последния инструктаж. Test Bench често генерира заявки за четене/запис на данни в паметта. Това се подиграва с типичните инструкции „Зареждане“и „Съхранение“, общи за всички програми, изпълнявани от процесор.

Резултатите от теста успешно провериха функционалността на Cache Controller. По -долу са наблюдавани статистическите данни за теста:

  • Всички сигнали за четене/запис на пропуски и удари са генерирани правилно.
  • Всички операции за четене/запис на данни бяха успешни и по четирите начина.
  • pLRU алгоритъмът е успешно проверен за подмяна на кеш линии.
  • Не са открити проблеми в несъответствието/несъответствието на данните.
  • Дизайнът беше успешно проверен по време на Maxm. Тактова честота на работа = 100 MHz в Xilinx Virtex-4 ML-403 Board (цялата система), 110 MHz само за Cache Controller.
  • За основната памет се извеждат блокови RAM. Всички останали масиви са внедрени на LUT.

Стъпка 4: Прикачени файлове

Следните файлове са приложени тук с този блог:

  • . VHD файлове на Cache Controller, Cache Data Array, Main Memory System.
  • Тестова пейка.
  • Документация за Cache Controller.

Бележки:

  • Прегледайте документацията за пълно разбиране на представените тук спецификации на кеш контролера.
  • Всички промени в кода зависят от други модули. Така че промените трябва да се извършват разумно.
  • Обърнете внимание на всички коментари и заглавки, които съм дал.
  • Ако по някаква причина не се извеждат блокови RAM за основната памет, НАМАЛЯВАЙТЕ размера на паметта, последван от промени в ширината на адресната шина във файловете и т.н. Така че същата памет може да бъде внедрена или на LUT, или на разпределена RAM. Това ще спести време и ресурси за маршрутизиране. Или отидете в конкретната документация за FPGA и намерете съвместимия код за Блокиране на RAM и съответно редактирайте кода и използвайте същите спецификации на ширината на адресната шина. Същата техника за Altera FPGA.

Препоръчано: