Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
В моем предыдущем руководстве мы увидели, как разработать простой контроллер кеш-памяти с прямым отображением. На этот раз мы идем на шаг впереди. Мы будем проектировать простой четырехсторонний ассоциативный контроллер кеш-памяти. Преимущество ? Меньше пропусков, но за счет производительности. Как и в моем предыдущем блоге, мы будем проектировать и эмулировать весь процессор, основную память и среду кеширования для тестирования нашего контроллера кеша. Я надеюсь, что вы, ребята, найдете это полезным справочником для понимания концепций и разработки собственных контроллеров кеша в будущем. Поскольку модель процессора (тестовый стенд) и система основной памяти точно такие же, как в моем предыдущем блоге, я не буду их снова объяснять. Пожалуйста, обратитесь к предыдущему руководству для получения подробной информации об этом.
Шаг 1: Технические характеристики
Краткий обзор технических характеристик контроллера кэширования, представленных здесь:
- Четырехсторонний набор ассоциативных контроллеров кэша (перейдите по этой ссылке, если вы ищете контроллер прямого сопоставления кэша).
- Однобанковый, блокирующий кэш.
- Политика сквозной записи для обращений записи.
- Политика обратной записи в отношении промахов при записи.
- Политика замены Tree Pseudo-LRU (pLRU).
- Массив тегов в контроллере.
- Настраиваемые параметры.
Спецификации по умолчанию для кэш-памяти и основной памяти такие же, как и в моей предыдущей инструкции. Пожалуйста, обратитесь к ним.
Шаг 2: 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.