Разработка контроллера обрабатываемых запросов кэш памяти третьего уровня микропроцессора "Эльбрус-4С+" Студент: Кожин Евгений, группа 713 Научный руководитель: к.т.н. Груздов Ф.А. Московский физико-технический институт (государственный университет) Факультет радиотехники и кибернетики Магистерская диссертация Кафедра информатики и вычислительной техники
Точка сериализации Когерентность памяти Атомарность операций с памятью Сериализация запросов к одной и той же кэш-строке Точка сериализации – устройство, обеспечивающее сериализацию запросов по одному адресу. Останавливает обработку следующих запросов до завершения текущего.
МП «Эльбрус-2S» как система с одной точкой сериализации Сериализация запросов в SIC Темп обработки – 1 запрос/такт
МП «Эльбрус-4С+» 8 процессорных ядер архитектуры «Эльбрус» Общий кэш третьего уровня (L3 кэш) – 16 МБ Использование L3 кэша в качестве уровня сериализации
Структурная схема МП
Постановка задачи Разработка устройства обработки запросов в L3 кэше (Request In-process Buffer, RIB) Требования: Хранение переходного состояния строки L3 кэша в RIB, а не в памяти L3 кэша Использование RIB в качестве устройства, обеспечивающего сериализацию локальных запросов (от процессорных ядер)
Функции RIB Упорядочивание запросов к одной и той же кэш-строке для максимального количества разных адресов Отправка запросов в SIC для получения доступа к кэш-строке Рассылка снуп-запросов в процессорные ядра Отправка ответов на запросы в SIC и ядра Запись нового состояния в память L3 кэша Чтение данных из конвейера данных L3 кэша
Расположение RIB в конвейере банка L3 кэша IRQ(girq, lirq) – входые очереди Reqarb – арбитр запросов Tag&State Memory – память тэгов и состояний Tagcmp – сравнение тэгов LDAnalizer – блок анализа состояний Pipe_lru – устройство поиска жертвы для вытеснения Pipe_dm – конвейер данных
Прохождение запроса через RIB CAM - Content-addressable memory В памяти L3 кэша не хранится переходное состояние строки Просмотр RIB при прохождении запроса через конвейер Одна запись вместо двух
Построение очередей Решение: Запросам в L3 кэше назначаются права на работу с кэш-строкой Полное владение (O) Частичное владение (H) Отсутствие прав, блокировка запроса (B) Проблема двух точек сериализации: Локальный запрос блокирует адрес в L3 кэше и посылает запрос в SIC В это же время глобальный запрос из другого МП блокирует адрес в SIC и посылает снуп-запрос в L3 кэш
Примеры построения очередей
Оптимизации Очереди запросов по чтению. Данные выдаются запросчику до прихода ответа о получении данных предыдущим запросчикам –Минимальная задержка между последовательными чтениями – 2 такта Проблема гонки запросов Invalidate. Строка находится в L3 кэше. Ядро хочет получить права на запись строки. Посылается в SIC запрос Invalidate. В этот момент глобальный запрос отнимает данные из L3 кэша. Решение раньше – превращение Invalidate в Read&Invalidate в SIC Решение сейчас – отслеживание типа ответов от SIC –Уменьшение нагрузки на котроллер памяти и трафика данных
Результаты работы Разработан контроллер обрабатываемых запросов кэш памяти третьего уровня микропроцессора "Эльбрус-4С+" –Обеспечение сериализацию локальных запросов –Реализация протокола переходных состояний кэш-строк L3 кэша –Емкость 32 запроса –Работа на частоте 1300 MHz (28 нм) Проведена автономная верификация и верификация в составе МП Проводится верификация на прототипе
Спасибо за внимание