Эльбрус-2S

advertisement
УДК 004.382
Оптимизация поддержки когерентности общей памяти в
контроллере системных обменов процессора "Эльбрус-2S"
А.Е. Шерстнёв
ОАО «ИНЭУМ», ЗАО «МЦСТ»
andrewsh84@gmail.com
Микропроцессор "Эльбрус-2S" относится ко второму поколению
NUMA-процессоров на базе ядра "Эльбрус" с интегрированным
чипсетом (контроллером системных обменов) [4], разрабатываемых в
ЗАО "МЦСТ". Каждый процессор в рассматриваемой системе
представляет собой автономное вычислительное устройство с быстрым
доступом в ограниченное пространство оперативной
памяти,
подключенной к данному процессору. Остальная часть памяти и
поддержка когерентности между процессорами осуществляется
посредством высокопроизводительных каналов, объединяющих все
процессоры в единую систему с общим адресным пространством.
Процессорный модуль включает в себя 4 вычислительных ядра с
архитектурой «Эльбрус», 3-канальный оптимизирующий контроллер
памяти стандарта DDR3-1600 [2, 6], коммутатор данных, контроллер
канала ввода/вывода, контроллеры каналов межпроцессорного обмена и
контроллер системных обменов – устройство, объединяющее остальные
части процессорного модуля и обеспечивающего доступ в оперативную
память.
Контроллер
системных
обменов
является
точкой
синхронизации запросов, адресуемых в обслуживаемую им память. В
его состав входят: буфер запросов, конвейер, выстраивающий запросы в
единую очередь, буфер данных контроллеров памяти для
промежуточной буферизации данных, записываемых в память, и
выполнения
операций
считывание-модификация-запись,
кэш
справочника, буфер отложенных запросов. Центральной частью
контроллера системных обменов является буфер ожидания, в котором
находятся запросы на стадии выполнения.
В буфере запросов запросы от всех источников ожидают выбора на
исполнение. Основными функциями данного модуля являются:
 Одновременный приём и хранение запросов от всех источников
 Арбитраж выдачи запросов на обработку в конвейер

Повтор или блокировка запроса при невозможности его
исполнения в данный момент.
Конвейер находится на уровне, следующем за буфером запросов, и
отвечает за определение условий выполнения запросов, поддержания
очерёдности их следования, формирование запроса чтения для
контроллеров памяти, а также выполняет основную часть дешифрации.
Количество стадий конвейера равно 3. Решение о выполнении запроса
определяется на последней стадии. Для уменьшения задержки доступа в
оперативную память конвейер имеет возможность сквозной передачи
(bypass) запроса в контроллер памяти, что позволяет сократить
длительность выполнения операции чтения на время обработки запроса
в конвейере, т.е. на три процессорных такта. Если в дальнейшем (на
последней стадии конвейера) определяется, что выполняемое таким
образом чтение требуется задержать, на выходе конвейера формируется
признак отмены, направляемый в контроллер памяти. Для исключения
пребывания в конвейере запросов, обработка которых заведомо
запрещена (было обнаружено пересечение по адресу с ранее
пришедшим запросом), на выходе конвейера формируются блокировки
одного из двух типов: кратковременная блокировка, возникающая в
результате временной занятости ресурсов, и долговременная,
означающая относительно длительную задержку в выполнении
текущего запроса. Кратковременная блокировка вызывает повторное
прохождение запроса через конвейер, долговременная блокирует
очередь от данного запросчика в буфере запросов до тех пор, пока не
исчезнет блокирующее условие. В системах предыдущего поколения
контроллер системных обменов поддерживал жёсткую очерёдность
выполнения запросов от конкретного абонента, что при возникновении
долговременной блокировки приводило к длительной задержке
обработки запросов от данного абонента. Для исключения подобных
ситуаций в новой версии контроллера поддерживается внеочередное
выполнение
запросов,
осуществляемое
посредством
буфера
отложенных запросов. При долговременной блокировке
очередного
запроса он переносится в буфер отложенных запросов, не блокируя
очередь запросов во входном буфере. Для поддержки совместимости с
программами, основанными на жёсткой очерёдности выполнения
запросов, буфер отложенных запросов можно отключить.
Контроллер памяти состоит из трёх независимых каналов, между
которыми реализован конфигурируемый интерливинг (чередование
адресов по каналам), позволяющий при последовательном изменении
адреса равномерно загрузить все каналы памяти. Минимальный шаг
интерливинга равен одной кэш-строке процессора (64 байта). Для
расчета трехканального интерливинга используется модифицированный
алгоритм быстрого деления на 3 [5], выполняющегося за один такт
синхроимпульса с частотой 1ГГц. Частное от деления используется при
формировании адреса для контроллера памяти, остаток определяет
номер канала.
Разработанный протокол межпроцессорного обмена изначально
ориентирован на эффективное взаимодействие процессоров внутри
кластера, включающего не более четырёх процессорных модулей.
Преимуществами выбранного протокола является его относительная
простота реализации и верификации, а также независимость от числа
процессоров. Основной выявленный минус состоит в том, что в
системах с числом процессоров >4, организуемых при помощи
дополнительно чипа - межкластерного коммутатора, время исполнения
каждого запроса резко увеличивается за счёт необходимости опроса
кэшей всех процессоров в большой системе. Помимо этого, передача
большого числа снуп-запросов снижает эффективную пропускную
способность каналов межпроцессорного обмена.
В
процессоре
"Эльбрус-2S"
проблема
перегрузки
межпроцессорных каналов снуп-запросами решена применением
справочника, отслеживающего местоположение каждой строки памяти
в системе (полный справочник). При отработке запроса команда чтения
отсылается в контроллер памяти, если данные не кэшированы ни в
одном процессоре, или формируется один снуп-запрос владельцу
модифицированных данных. Грубый подсчёт показывает, что
суммарное число отосланных сообщений сокращается в 4 раза. Для
хранения
информации
справочника
в
оперативной памяти
резервируется место таким образом, чтобы информация справочника,
относящаяся к некоторому объёму данных, хранилась в той же странице
памяти, что и сами данные. Это предоставляет возможность наиболее
быстрого и эффективного доступа к информации справочника,
поскольку исключает переоткрытие страниц в оперативной памяти.
Каждый процессорный запрос за данными вызывает считывание кэшстроки данных и соответствующих ей данных справочника, после чего
контроллер системных обменов решает, следует ли выдавать считанные
из памяти данные заросчику, а также необходимость снупирования
соседних процессоров. Хранение справочника в памяти скрыто от
программиста и занимает ~1.5% общей памяти системы. Арифметика
преобразования исходного адреса запроса с учётом размещения
справочника [7] распределена по стадиям конвейера контроллера
системных обменов.
Для сокращения задержки доступа к данным справочника и
уменьшения нагрузки на интерфейс памяти в контроллере системных
обменов организован кэш для данных справочника по аналогии с кэшем
данных процессора [1]. В кэше справочника используется протокол
MOSI [8], объём кэша равен 0.5Мб, что позволяет хранить информацию
о кэшированных строках для четырёх процессоров. Использование
справочника в совокупности с кэшем исключает в случае адресной
локальности задач как обращения в память за данными справочника, так
и снупирование соседних процессоров.
В отличие от первого поколения (процессор "Эльбрус-S" [3])
архитектура новых процессоров имеет ряд как количественных, так и
качественных улучшений. Число ядер увеличено с 1 до 4, частота
работы повышена с 500 до 1 ГГц, произведён переход от 2-канального
контроллера памяти DDR2-500 на 3-канальный DDR3-1600, также
удвоена пропускная способность каналов межпроцессорного обмена.
Новые процессоры рассчитаны на работу в средних и больших
многопроцессорных высокопроизводительных системах с общей
памятью и аппаратной поддержкой когерентности.
Список литературы
1.
2.
3.
4.
5.
6.
7.
Петров И.А. Шерстнёв А.Е. Реализация справочника для аппаратной
поддержки когерентности в вычислительном комплексе на базе
микропроцессора «Эльбрус-2S» // Вопросы радиоэлектроники Выпуск
3, Москва 2011
Шерстнёв А.Е. Контроллер памяти DDR3 SDRAM ВК «Эльбрус-2S»
//МЦСТ, 2010
Шерстнёв А.Е. Системный коммутатор ВК «Эльбрус-S» //МЦСТ,
2009
Шерстнёв А.Е. Системный коммутатор ВК «Эльбрус-2S» //МЦСТ,
2010
Behrooz Parhami "Computer arithmetic: algorithms and hardware designs"
Oxford University Press, Fall 2001
DDR3 SDRAM Specification. Revision JESD79-3D, JEDEC Solid State
Technology Association, September 2009, http://www.jedec.org
Henry S. Warren «Hacker's Delight» // Addison-Wesley Professional; 1
edition (July 27, 2002)
8.
Jim Handy, “The Cache Memory Book”, //Morgan Kaufmann 2nd edition
1998
Download