Теперь мы можем реализовать управление кэш-памятью, точно так же, как мы создавали систему управления для однотактного и конвейеризированного блока. Этот раздел начинается с определения простой кэшпамяти, а затем дается описание конечного автомата – finite-state machines (FSM). В завершение рассматривается FSM контроллера для этой простой кэш памяти.
Простая кэш-память
Мы собираемся разработать контроллер для простой кэш-памяти. Эта кэш-память имеет следующие основные характеристики:
— непосредственное отображение;
— отложенная запись с выделением для записи;
— размер блока 4 слова (16 байт или 128 бит);
— размер кэш-памяти 16 Кбайт, следовательно, в ней содержится 1024 блока;
— 32-разрядная адресация;
— кэш память использует для каждого блока бит достоверности и бит изменения. Пользуясь материалом раздела 5.2, мы можем вычислить поля адреса для кэш-памяти:
— кэш-индекс занимает 10 разрядов;
— смещение блока занимает 4 разряда;
— размер тега составляет 32 или 18 разрядов.
Между процессором и кэш памятью будут использоваться следующие сигналы:
— одноразрядный сигнал Чтения (Read) или Записи (Write);
— одноразрядный сигнал Достоверности (Valid), свидетельствующий о том, что операция проводится именно с кэш памятью;
— 32-разрядный адрес;
— 32-разрядные данные от процессора к кэш-памяти;
— 32-разрядные данные от кэш-памяти к процессору;
— одноразрядный сигнал Готовности (Ready), свидетельствующий о завершении операции с кэш памятью.
Следует отметить, что это блокирующая кэш-память, заставляющая процессор ждать, пока она не обработает запрос.
Интерфейс между оперативной и кэш-памятью имеет те же поля, что и интерфейс между процессором и кэш-памятью, за исключением того, что данные имеют ширину 128 разрядов. Расширенный формат памяти не редкость для сегодняшних микропроцессоров, которые работают с 32-разрядными или с 64-разрядными словами, в то время как DRAM-контроллер зачастую работает с 128-разрядами. Приведение блока кэш-памяти в соответствие ширине DRAM упрощает конструкцию. Таким образом, используются следующие сигналы:
— одноразрядный сигнал Чтения (Read) или Записи (Write);
— одноразрядный сигнал Достоверности (Valid), свидетельствующий о том, что операция проводится с памятью;
— 32-разрядный адрес;
— 128-разрядные данные от кэш-памяти к оперативной памяти;
— 128-разрядные данные от оперативной памяти к кэш-памяти;
— одноразрядный сигнал Готовности (Ready), свидетельствующий о завершении операции с памятью.
Следует учесть, что на интерфейс с памятью затрачивается нефиксированное количество циклов. Предполагается использование контроллера памяти, который уведомит кэш-память сигналом готовности – Ready, когда закончится чтение памяти или запись в нее.
Перед тем как дать описание контроллера кэш-памяти, нужно рассмотреть конечные автоматы, позволяющие нам управлять операцией, которая может занять несколько тактовых циклов.