Магистерская диссертация Реализация справочника для аппаратной поддержки когерентности в ВК Эльбрус-2S Студент: Петров Игорь, ФРТК, 613 группа Научный руководитель: к.т.н. Груздов Ф. А. Эльбрус-S: протокол наблюдения Контроллер ввода/вывода _l IO 1Gb/s in 4Gb/s k CPU #0 CPU #3 _l IO in 2Gb/s CPU #1 Протокол когерентности: протокол наблюдения (snooping) CPU #2 k Контроллер ввода/вывода Проблема: квадратичная зависимость числа снуп-запросов от кол-ва процессоров в системе Эльбрус-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) - двунаправленный список указателей на совладельцев данных Выбранное решение - комбинация 1-го и 2-го типов 4 бита (7 бит) SHARED 3 бита ЫР MOD • MOD – указатель на владельца модифицированных данных • SHARED – бит-вектор совладельцев копий Размещение в памяти 1. Хранить информацию справочника в свободных битах ECC-кода плохо используется кэш-память 2. Выделить отдельную непрерывную область памяти под данные справочника 2 отдельных запроса в память, затраты на переоткрытие страницы 3. Размещать информацию справочника в одной странице с данными данные справочника считываются из ОП вместе с данными по запросу В контроллер памяти добавлена поддержка комбинированных запросов по чтению данных по запросу и данных справочника Функция мэппирования ADRAM[39:6] = APA[39:6] + D* D – размер непрерывной области пространства ОП, содержащей строки справочника P – размер непрерывной области пространства ОП, содержащей строки данных Из соображений физдизайна: 1) 1/P - периодическая дробь (меньше операций сложения) 2) D = 1 P = 63 P = 31 Однокластерная система Четырёхкластерная система Кэш-память справочника Характеристики кэш-памяти: множественно-ассоциативная, 16 колонок длина одной кэш-строки – 64 байта размер – 512 Кб Обновление информации справочника Проблема: гонки запросов WB и RI от разных ядер гонки запросов INV от разных ядер/процессоров Возможные варианты : обновлять после завершения запроса трудоёмкость поддержания конвейерности, большие накладные расходы по времени работы и оборудованию обновлять после прохождения запроса через конвейер SC Решение: добавить возможность отката состояния элемента справочника pA … c0 Арбитр … служебные запросы Контроль целостности данных кэш-памяти Контроль целостности данных: ECC – контроль требует добавления стадий в конвейер CRC - кодирование CRC - алгоритм Процедура исправления ошибок Данные (64 бита) Тэги данных (21 бит) CRC-8 CRC-4 63 запроса FLUSH Серия запросов FLUSH по индексу с ошибкой В системный коммутатор добавлен модуль, отвечающий за исправление ошибок в кэш-памяти справочника. Запросы FLUSH помещаются в очередь служебных запросов SC. При обработке ошибки SC способен выполнять запросы процессоров. Характеристики o Без справочника Со справочником Чтение своей памяти 140 нс 80 нс Чтение чужой памяти 195 нс 190 нс Количество снуп-запросов сокращено в 4 раза o Хранение справочника занимает 1,5%(3%) общей памяти системы o Объём кэша – 512 КБ – покрывает L2-кэши процессоров внутри одного кластера Результаты Разработана конфигурация справочника, удовлетворяющая поставленным требованиям: уменьшение служебного трафика малая задержка выполнения запроса В чипсет введена поддержка справочника с выбранной конфигурацией два режима работы (однокластерная/многокластерная система) частота – 1ГГц Произведена отладка работы со справочником на системных тестах Спасибо за внимание !