Структура устройства кэшируемой флэш-памяти


В данном устройстве требуется реализовать кэш-память. Организация кэш-памяти была задана – ассоциативная по множеству. Требовалось выбрать еще два параметра: стратегию кэширования и стратегию замещения.

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

Наиболее простым методом является сквозная запись, которая реализована в большинстве моделей кэш-памяти. Операция записи, инициированная процессором, всегда приводит к передаче данных в основную память. Это, естественно, касается также записи и обновления соответствующих ячеек кэш-памяти. Сквозная запись имеет тот недостаток, что все операции записи должны производиться также и с основной, более медленной памятью.

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

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

Учитывая сказанное выше, я принял решение реализовать в кэш-контролере стратегию кэширования – сквозная запись. в основном из-за простоты ее организации, а также потому, что в большинстве случаев данные читаются из памяти.

При возникновении промаха, контроллер кэш-памяти должен выбрать подлежащий замещению блок. Польза от использования организации с прямым отображением заключается в том, что аппаратные решения здесь наиболее простые. Выбирать просто нечего: на попадание проверяется только один блок и только этот блок может быть замещен. При полностью ассоциативной или множественно-ассоциативной организации кэш-памяти имеются несколько блоков, из которых надо выбрать кандидата в случае промаха. Как правило, для замещения блоков применяются две основных стратегии: случайная и LRU.

В первом случае, чтобы иметь равномерное распределение, блоки-кандидаты выбираются случайно. В некоторых системах, чтобы получить воспроизводимое поведение, которое особенно полезно во время отладки аппаратуры, используют псевдослучайный алгоритм замещения.

Во втором случае, чтобы уменьшить вероятность выбрасывания информации, которая скоро может потребоваться, все обращения к блокам фиксируются. Заменяется тот блок, который не использовался дольше всех.

Достоинство случайного способа заключается в том, что его проще реализовать в аппаратуре. Когда количество блоков увеличивается, алгоритм LRU становится все более дорогим и часто только приближенным. В таблице 2.1 показаны различия в долях промахов при использовании алгоритма замещения LRU и случайного алгоритма.

Таблица 2.1

Сравнение долей промахов для алгоритма LRU и случайного алгоритма замещения при нескольких размерах кэш-памяти

Размер кэш-памяти

LRU

Случайный

16 Кбайт

5.18 %

5.69 %

64 Кбайта

1.88 %

2.01 %

256 Кбайт

1.15 %

1.17 %

Из сказанного выше принимаю решение реализовать стратегию случайного замещения.

При реализации устройства кэшируемой флэш-памяти с кэш-контроллером, реализующим выбранные стратегии обновления и замещения, в структурной схеме необходимо наличие следующих блоков:

· блок сопряжения с интерфейсом;

· память тэгов;

· компаратор тэгов;

· шифратор;

· блок определения замещаемого блока;

· коммутатор сигналов;

· флэш-память;

· кэш-память.

Блок сопряжения с системным интерфейсом предназначен для сопряжения устройства с интерфейсом PCI со строгим соответствием различным требованиям и стандартам.

Память тэгов предназначена для хранения тэгов. Компаратор тэгов подвергает ассоциативному сравнению тэги, считанные из памяти тэгов и частью адреса. После сравнения тэги поступают в шифратор, который говорит о том, в каком месте группы находится требуемый блок или что этого блока нет. Если блок имеется, выдается номер места в этой группе. Блок определения замещаемого блока решает задачу выбора случайной ячейки в кэш-памяти.

Коммутатор сигналов служит для коммутации шины адреса и данных при подаче на него определенных управляющих сигналов.