Съдържание:

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

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

Видео: Проектиране на обикновен кеш контролер във VHDL: 4 стъпки
Видео: Fun with Music and Programming by Connor Harris and Stephen Krewson 2024, Ноември
Anonim
Проектиране на обикновен кеш контролер във VHDL
Проектиране на обикновен кеш контролер във VHDL

Пиша тази инструкция, защото ми беше малко трудно да получа някакъв референтен VHDL код, за да науча и да започна да проектирам кеш контролер. Затова сам проектирах кеш контролер от нулата и го тествах успешно на FPGA. Представих прост директно картографиран кеш контролер тук, както и моделирах цяла система процесор-памет за тестване на кеш контролера. Надявам се, че ще намерите тази инструкция полезна като справка за проектиране на ваши собствени кеш контролери.

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

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

Това са основните спецификации на Cache Controller, който ще проектираме:

  • Директно картографирано. (отидете на тази връзка, ако търсите Асоциативен картографиран кеш контролер)
  • Еднобанков, блокиращ кеш.
  • Политика за запис при попадения.
  • Политика за разпределяне без запис или писане около грешки при запис.
  • Няма буфер за запис или други оптимизации.
  • Матрицата с етикети е включена.

Освен това ще проектираме и кеш памет и система за основна памет.

Стандартните (конфигурируеми) спецификации на кеш паметта:

  • 256 байта еднобанков кеш.
  • 16 кеш линии, всеки кеш ред (блок) = 16 байта.

Спецификациите на основната памет:

  • Синхронна памет за четене/запис.
  • Многобанкова преместена памет - четири банки памет.
  • Размерът на всяка банка = 1 kB всяка. Следователно общият размер = 4 kB.
  • Word (4 байта) адресируема памет с 10-битова шина за адреси.
  • По -висока честотна лента за четене. Прочетете ширината на данните = 16 байта в един тактов цикъл.
  • Ширина на данни за запис = 4 байта.

ЗАБЕЛЕЖКА: проверете по-новите ми инструкции, ако търсите дизайн на 4-посочен асоциативен кеш контролер

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

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

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

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

Стъпка 3: Тестова среда

Модулът Top е тестван с помощта на Test Bench, който просто моделира неконвейерен процесор (Тъй като проектирането на цял процесор не е никак лесно !!). Test Bench често генерира заявки за четене/запис на данни в паметта. Това се подиграва с типичните инструкции „Зареждане“и „Съхранение“, общи за всички програми, изпълнявани от процесор. Резултатите от теста успешно провериха функционалността на Cache Controller. По -долу са наблюдавани статистическите данни за теста:

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

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

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

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

Бележки:

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

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