Оглавление:

Разработка простого четырехкомпонентного ассоциативного контроллера кэширования на VHDL: 4 шага
Разработка простого четырехкомпонентного ассоциативного контроллера кэширования на VHDL: 4 шага

Видео: Разработка простого четырехкомпонентного ассоциативного контроллера кэширования на VHDL: 4 шага

Видео: Разработка простого четырехкомпонентного ассоциативного контроллера кэширования на VHDL: 4 шага
Видео: Урок 13 Ассоциативный чертеж Третьяк Т М 2024, Июнь
Anonim
Проектирование простого четырехстороннего ассоциативного контроллера кэширования на VHDL
Проектирование простого четырехстороннего ассоциативного контроллера кэширования на VHDL

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

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

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

Краткий обзор технических характеристик контроллера кэширования, представленных здесь:

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

Спецификации по умолчанию для кэш-памяти и основной памяти такие же, как и в моей предыдущей инструкции. Пожалуйста, обратитесь к ним.

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

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

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

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

Шаг 3: результаты теста

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

Результаты тестирования успешно подтвердили работоспособность контроллера кеша. Ниже приведены наблюдаемые статистические данные о тестах:

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

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

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

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

Примечания:

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

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