Реализация справочника для аппаратной поддержки когерентности в ВК Эльбрус-2S Студент: Петров Игорь, ФРТК, 613 группа Научный руководитель: к.т.н. Груздов Ф. А. Магистерская диссертация
Эльбрус-S: протокол наблюдения Протокол когерентности: протокол наблюдения (snooping) Проблема : квадратичная зависимость числа снуп-запросов от кол-ва процессоров в системе
Эльбрус-2S: протокол на основе справочника Справочник содержит информацию о местонахождении и состоянии строк данных оперативной памяти, экспортированных в кэш-памяти процессоров Выборочное снупирование в соответствии со справочником Данные не модифицированы Данные модифицированы относительно памяти Сокращается кол-во снуп-запросов
Постановка задачи 1. Разработка конфигурации справочника - структура, формат элемента, способ хранения 2. Введение справочника с выбранной конфигурацией в состав чипсета микропроцессора «Эльбрус-2S» Требования: Обеспечение как можно меньшей дополнительной задержки выполнения отдельного запроса, связанной с введением справочника в состав чипсета Достижение максимальной пропускной способности межпроцессорных каналов связи Возможность использования в системах, содержащих разное количество процессоров (от 1 до 16) Эффективное использование аппаратных ресурсов и площади кристалла.
Тип справочника Полный справочник DRAM - память Хранит информацию о всей памяти системы Большие затраты ресурсов памяти Усеченный справочник SRAM - память Быстрое время доступа к данным справочника Вытеснение строки влияет на состояние кэш-памяти процессоров Эльбрус – 2S : полный справочник с кэш-памятью
Элемент справочника Виды справочников: 1.Справочник с точным покрытием узлов системы (full-map directory) - N индикаторов характеризуют N узлов системы 2.Справочник с неточным покрытием узлов системы (limited directory) - M индикаторов характеризуют N узлов системы, M < N 3.Справочник с цепочным построением (chained directory) - двунаправленный список указателей на совладельцев данных ЫР SHAREDMOD 4 бита (7 бит)3 бита Выбранное решение - комбинация 1-го и 2-го типов MOD – указатель на владельца модифицированных данных SHARED – бит-вектор совладельцев копий
Размещение в памяти 1.Хранить информацию справочника в свободных битах ECC-кода плохо используется кэш-память 2.Выделить отдельную непрерывную область памяти под данные справочника 2 отдельных запроса в память, затраты на переоткрытие страницы 3.Размещать информацию справочника в одной странице с данными данные справочника считываются из ОП вместе с данными по запросу В контроллер памяти добавлена поддержка комбинированных запросов по чтению данных по запросу и данных справочника
Функция мэппирования A DRAM [39:6] = A PA [39:6] + D * D – размер непрерывной области пространства ОП, содержащей строки справочника P – размер непрерывной области пространства ОП, содержащей строки данных Из соображений физдизайна: 1) 1/P - периодическая дробь (меньше операций сложения) 2) D = 1 P = 63P = 31 Однокластерная системаЧетырёхкластерная система
Кэш-память справочника Характеристики кэш-памяти: множественно-ассоциативная, 16 колонок длина одной кэш-строки – 64 байта размер – 512 Кб
Обновление информации справочника Проблема: гонки запросов WB и RI от разных ядер гонки запросов INV от разных ядер/процессоров Возможные варианты : обновлять после завершения запроса трудоёмкость поддержания конвейерности, большие накладные расходы по времени работы и оборудованию обновлять после прохождения запроса через конвейер SC Решение: добавить возможность отката состояния элемента справочника Арбитр …… pAc0 служебные запросы
Контроль целостности данных кэш-памяти ECC – контроль требует добавления стадий в конвейер CRC - кодирование Контроль целостности данных: Данные (64 бита) Тэги данных (21 бит) CRC - алгоритмCRC-8CRC-4 Процедура исправления ошибок 63 запроса FLUSHСерия запросов FLUSH по индексу с ошибкой В системный коммутатор добавлен модуль, отвечающий за исправление ошибок в кэш-памяти справочника. Запросы FLUSH помещаются в очередь служебных запросов SC. При обработке ошибки SC способен выполнять запросы процессоров.
Характеристики Без справочникаСо справочником Чтение своей памяти140 нс80 нс Чтение чужой памяти195 нс190 нс o Количество снуп-запросов сокращено в 4 раза o Хранение справочника занимает 1,5%(3%) общей памяти системы o Объём кэша – 512 КБ – покрывает L2-кэши процессоров внутри одного кластера
Результаты Разработана конфигурация справочника, удовлетворяющая поставленным требованиям: уменьшение служебного трафика малая задержка выполнения запроса В чипсет введена поддержка справочника с выбранной конфигурацией два режима работы (однокластерная/многокластерная система) частота – 1ГГц Произведена отладка работы со справочником на системных тестах
Спасибо за внимание !