Оглавление:

Разработка простого контроллера кеша на VHDL: 4 шага
Разработка простого контроллера кеша на VHDL: 4 шага

Видео: Разработка простого контроллера кеша на VHDL: 4 шага

Видео: Разработка простого контроллера кеша на VHDL: 4 шага
Видео: О входе в проектирование микросхем 2024, Ноябрь
Anonim
Дизайн простого контроллера кеша на VHDL
Дизайн простого контроллера кеша на VHDL

Я пишу это руководство, потому что мне было немного сложно получить некоторый эталонный код VHDL для изучения и начала проектирования контроллера кеша. Поэтому я сам разработал контроллер кеш-памяти с нуля и успешно протестировал его на ПЛИС. Я представил здесь простой контроллер кэш-памяти с прямым отображением, а также смоделировал всю систему «процессор-память» для тестирования контроллера кеша. Я надеюсь, что вы, ребята, сочтете это руководство полезным в качестве справочника при разработке собственных контроллеров кеша.

Шаг 1: Технические характеристики

Характеристики
Характеристики

Вот основные характеристики контроллера кеша, который мы собираемся разработать:

  • Прямое сопоставление. (перейдите по этой ссылке, если вы ищете контроллер ассоциативного сопоставленного кэша)
  • Однобанковый, блокирующий кэш.
  • Политика сквозной записи при обращениях к записи.
  • Политика запрета записи на выделение или циклическая запись при промахах записи.
  • Нет буфера записи или других оптимизаций.
  • Массив тегов включен.

Кроме того, мы также разработаем кэш-память и систему основной памяти.

Стандартные (настраиваемые) характеристики кэш-памяти:

  • Однобанковый кэш 256 байт.
  • 16 строк кэша, каждая строка (блок) кэша = 16 байтов.

Характеристики основной памяти:

  • Синхронная память чтения / записи.
  • Многобанковая память с чередованием - четыре банка памяти.
  • Размер каждого банка = 1 КБ каждый. Следовательно, общий размер = 4 КБ.
  • Адресная память по словам (4 байта) с 10-битной адресной шиной.
  • Более высокая пропускная способность для чтения. Ширина считываемых данных = 16 байт за один такт.
  • Ширина записи данных = 4 байта.

ПРИМЕЧАНИЕ: ознакомьтесь с моими новыми инструкциями, если вы ищете 4-сторонний дизайн контроллера ассоциативного кеша

Шаг 2: RTL-просмотр всей системы

RTL-представление всей системы
RTL-представление всей системы

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

  • Все шины данных - это 32-битные шины.
  • Адресная шина = 32-битная шина (но здесь память может адресовать только 10 бит).
  • Блок данных = 128 бит (широкополосная шина для чтения).
  • Все компоненты работают по одним и тем же часам.

Шаг 3: Тестовая среда

Модуль Top был протестирован с помощью Test Bench, который просто моделирует процессор без конвейера (потому что спроектировать весь процессор совсем не просто !!). Тестовый стенд часто генерирует запросы на чтение / запись данных в память. Это имитирует типичные инструкции «Загрузить» и «Сохранить», общие для всех программ, выполняемых процессором. Результаты тестирования успешно подтвердили работоспособность контроллера кеша. Ниже приведены наблюдаемые статистические данные о тестах:

  • Все сигналы промаха чтения / записи и попадания были сгенерированы правильно.
  • Все операции чтения / записи данных были успешными.
  • Проблем несогласованности / несогласованности данных не обнаружено.
  • Дизайн был успешно проверен по времени для Maxm. Тактовая частота работы = 110 МГц для платы Xilinx Virtex-4 ML-403 (вся система), 195 МГц для одного контроллера кэш-памяти.
  • Для основной памяти предполагались блочные ОЗУ. Все остальные массивы были реализованы на LUT.

Шаг 4: прикрепленные файлы

К этому блогу прикреплены следующие файлы:

  • . VHD-файлы контроллера кеша, массива данных кэша, системы оперативной памяти.
  • Испытательный стенд.
  • Документация по контроллеру кеша.

Примечания:

  • Просмотрите документацию для полного понимания спецификаций контроллера кэширования, представленных здесь.
  • Любые изменения в коде зависят от других модулей. Итак, изменения следует вносить разумно. Обратите внимание на все комментарии и заголовки, которые я дал.
  • Если по какой-либо причине блочные ОЗУ не предполагаются для основной памяти, УМЕНЬШИТЕ размер памяти с последующими изменениями ширины адресной шины в файлах и т. Д. Так что одна и та же память может быть реализована либо в LUT, либо в распределенной RAM. Это сэкономит время и ресурсы на маршрутизацию. Или перейдите к конкретной документации FPGA и найдите совместимый код для блочного ОЗУ, отредактируйте код соответствующим образом и используйте те же спецификации ширины шины адреса. Тот же метод для ПЛИС Altera.

Рекомендуемые: