Устройство обмена с оперативной памятью системы на кристалле "Эльбрус-S" “Эльбрус” 0.13 um 300 MHz Core Core L2 L2 MAU 100 MHz Chipset 1.6/3.2 GB/s Memory MAU “Эльбрус-S” Memory 8 GB/s Memory Core Core L2 L2 MAU Chipset 2 GB/s 0.09 um 500 MHz Memory MAU Chipset Chipset MAU Chipset MAU L2 L2 Core Core Memory Задача: • Разработка MAU для новой системы с обеспечением максимально возможной эффективности доступа к памяти Требования: • Поддержка когерентности • Максимальная пропускная способность • Минимальное время доступа Структурная схема i/o Link A Link B Link C MC#1 Chipset MC#2 MAU KM LD Data LD Buff CPU ST Buff ST Data Операция Load Memory Memory Core Core L2 L2 MAU Chipset MAU Chipset Chipset MAU Chipset MAU L2 L2 Core Core Memory Memory Буфер приёма данных и сбора когерентных ответов Для завершения LD необходимо: • Собрать когерентные ответы • Принять данные • Взять из LDB сопровождающую информацию и отдать с ней данные в процессор Требования к буферу: • Параллельный асинхронный приём данных и когерентных ответов со всех направлений • Приоритет данных из кэшей над данными из памяти • Максимально быстрая выдача данных в процессор на основе собранной информации Буфер приёма данных и сбора когерентных ответов (принятая схема) 69 69 69 code ready release 69 24 48 in_regs mc0 wait ack mem coh rq 4xDW приоритет mc1 link0 когерентные ответы ответ о завершении link1 link2 num c p tag 6 1 4x 1 4 data[63:0] 64 Пропускная способность Запросы по чтению – 32 или 64 байт за такт (16 или 32 ГБ/с) Приём данных процессором – 32 байт за такт (16 ГБ/с) Приём данных MAU: • из памяти – 8 ГБ/с • из линков – по 2 ГБ/с • из ввода-вывода – 1 ГБ/с на практике - в сумме не более ~12 ГБ/с Лишние запросы нехватка ПСП + доп. задержки в линках Необходима оптимизация работы LDB LDB CPU MRQ Addr LD Data dst03 dst47 LDB 24 Chipset Оптимизация работы LDB «Эльбрус»: Возможность подклеивания заявок: • не требующих нового обращения в память (за 4xDW) • не требующих тех же DW LDB + = Задача – добавить возможность подклеивания заявок, запрашивающих пересекающиеся группы DW Решение – буфер виртуальных заявок Типы входящих в LDB заявок: • обычная – заведение новой строки, запрос в память за 4xDW или 8xDW • подклеиваемая – добавление значимостей DW и соотв. DST в имеющуюся строку • вторичная – новый тип, заведение новой строки без запроса в память Аппаратная реализация: • введение в LDB битов вторичности запросов (для блокирования ухода таких заявок в память) и сигналов заведения вторичных строк • буфер вторичных заявок - ссылок на исходные строки LDB для вторичных строк LDB • поддержка буфером приёма данных удержания данных на своём выходе по сигналу из буфера вторичных заявок Схема взаимодействия LDB, буфера приёма данных и буфера вторичных заявок destination data_out номер текущей вторичной строки LDB информация о заведении Буфер вторичных заявок hold номер первичной строки Буфер данных Задержки в LDB, STB – примерно 3 такта (физические) + ожидание в очереди Буфер приема данных (до оптимизаций): • задержка данных на входных регистрах -1-2 для MC, 1-7 для линков, 1-8 для I/O • задержка на принятие решения – 1 такт (физическая) • ожидание выдачи из-за одновременного возникновения готовности нескольких строк - 0-? Задержка на входных регистрах in_regs mc0 приоритет mc1 link0 link1 link2 I/O Приоритетная схема необходима для избежания переполнения, либо требуется более сложный механизм увеличение задержки и площади Однако не учитывает ни время ожидания, ни готовность по когерентным ответам доп. задержка при интенсивном приходе данных (0-7 тактов) Решение • Байпас значимостей готовностей по данным • Внеочередная запись в массив данных • Запись «приоритетных» данных на регистр «внеочередного» источника Результат: + Динамика заполнения регистров не меняется + Задержка на регистрах на итоговую задержку не влияет - Данные из массива можно получить только через 3 такта после принятия решения Временная диаграмма работы буфера приёма данных и сбора когерентных ответов р е г и с т р ы и в х о д ы нельзя! готовность по данным Внеочередная запись в массив номер адреса готовность строки назначения для по ответам из LDB выдачи hold и hold и вторичные вторичные строки строки Чтение из массива чёт Данные в ЦП Адреса назначения в ЦП такты ЦП Потребовался ещё 1 такт задержки данных на выходе буфера. Но ЦП всё равно принимает данные только через 2 такта после адресов. Общая задержка не увеличилась Проблема выбора строки из множества готовых Готовность по данным – до 6 строк одновременно Готовность по ответам – до 6 строк одновременно Итого 12 + накопленные ранее. Неадекватный выбор разброс времени доступа Приоритет по номеру: + простота, минимальные задержки и площадь - возможность «зависания» некоторых строк Решение #1 – приоритет по номеру, смещающийся по счётчику (простое). Решение #2 – приоритет по очерёдности поступления запроса (сложное). Оба оказались реализуемыми, тема для отдельного исследования. Результаты • Разработано verilog-описание MAU, удовлетворяющее поставленным требованиям и решающее поставленные задачи • Начата отладка и физдизайн