Буфер для операций сохранения в кэш

advertisement
УДК 681.5+621.38(06) Автоматика и электроника в атомной технике
П.В. САЯПИН
Научный руководитель – С.Г. БОБКОВ, к.т.н., доцент
Национальный исследовательский ядерный университет «МИФИ»
БУФЕР ДЛЯ ОПЕРАЦИЙ СОХРАНЕНИЯ В КЭШ-ПАМЯТИ ВТОРОГО УРОВНЯ С ПОМЕХОУСТОЙЧИВЫМ
КОДИРОВАНИЕМ
Представлен контроллер кэш-памяти второго уровня с помехоустойчивым кодированием.
В высокопроизводительном суперскалярном процессоре с архитектурой RISC все операции выполняются над операндами, хранящимися в регистрах процессора, а доступ к основной памяти осуществляется только инструкциями LOAD и STORE [1]. В рассматриваемом процессоре используются кэш-памяти 1-го и 2-го
уровней, при этом запрос идет сначала в кэш-память 1-го уровня, затем, в случае непопадания, следует в
кэш-память 2-го уровня и только потом проверяется содержимое оперативной памяти (в случае непопадания
и в кэш-память второго уровня). Кэш-память состоит из однопортовой памяти данных, двухпортовой памяти
тегов, памяти битов четности кодов Хсяо. Двухпортовая память тегов позволяет читать и записывать теги на
одном такте, тогда как для однопортовых памятей чтение и запись должны быть на разных тактах.
Обработка команды сохранения происходит за три такта: на первом такте выставляются адреса на памяти тегов и данных, на втором такте происходит сравнение считанного из памяти тега с частью физического
адреса, выдаваемого процессором, и, если, они совпадают, на третьем такте происходит запись. Таким образом, обработка запросов на загрузку/сохранение на третьем такте невозможна, т.е. происходит блокировка.
В тех ситуациях, когда обращения в память следуют непрерывно, в целях предотвращения блокировки, для
операций сохранения (в случае попадания в кэш-память 2-го уровня) имеет смысл создать буфер, хранящий
часть физического адреса, данные, биты, указывающие, части строки памяти, подлежащие замене, биты
четности для кода Хсяо (совокупность данных, находящихся в буфере, называется ячейкой). На третьем такте запись будет происходить не сразу в память данных кэш-память, а в буфер, что позволит начать обработку следующего запроса на этом же такте. При освобождении памяти данных кэш-памяти буфер будет выдавать хранящуюся в нем информацию для записи.
Еще одной причиной для создания буфера является то, что на четвертом такте идет запись битов четности кода Хсяо для данных, т.к. путь данных от мультиплексоров на входе кодера Хсяо до входов памяти
содержит слишком большое количество вентилей, следовательно, создает чрезмерную задержку, и биты
четности не могут быть корректно записаны на третьем такте. Т.е. запись в память данных и память битов
четности происходит на разных тактах. Буфер организует запись в память данных и память битов четности
на одном такте.
Итак, при введении буфера на третьем такте запись происходит не в память данных кэш-памяти, а в буфер. Если на следующем такте от записи в буфер не было запросов на сохранение/загрузку, данные из буфера записываются в память данных кэш-памяти, биты четности берутся прямо с выходов кодера Хсяо, в противном случае буфер ожидает освобождения входов памяти данных (биты четности для данных записываются в буфер). В буфере присутствует функция «прослушивания», т.е. определения того нужны ли данные и
теги (в случае команды CACHE), находящиеся в ячейках буфера для обработки текущего запроса, и выдача
этих данных.
Буфер содержит две ячейки. Выбор данного количества ячеек определяется компромиссом между вместительностью и сложностью (а следственно количеством вентилей и величинами задержек) выходных
мультиплексоров буфера.
Очень частыми являются ситуации, когда два идущих подряд запроса обращаются в память данных по
одному адресу. В случае попадания обоих запросов, на запись потребуется два такта. Для ускорения работы
кэш-памяти в подобных ситуациях буфер организует размещение данных от двух и более разных запросов
по одному адресу в одной ячейке, что позволяет сократить количество тактов записи. Все эти функции доступны как обычно режиме, так при работе кэш-памяти в режиме накристальной памяти.
Таким образом, буфер позволяет повысить производительность процессора при операциях сохранения,
т.к. блокировки конвейера происходят намного реже. Тесты копирования в память показывают повышение
производительности до 50%.
Список литературы
1. MIPS64 Architecture For Programmers. Volume I: Introduction to the MIPS64 Architecture, 2003.
Download