АРХИТЕКТУРА, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ И ОБЛАСТИ ПРИМЕНЕНИЯ КОМПЬЮТЕРОВ СЕРИИ «ЭЛЬБРУС»

№ 5(29) 2010
к. К. Ким, В. Ю. Волконский, Ф. к. Гоуздов, М. С. Михайлов, Ю. Н. Парахин, Ю. X. Сахин, С. В. Семенихин, М. В. Слесарев, В. М. Фельдман
Архитектура, программное обеспечение и области применения компьютеров серии «Эльбрус»1
Российские микропроцессоры серии «Эльбрус» базируются на новых архитектурных принципах, в основу которых положено всестороннее использование параллелизма, опирающееся на глубокую аппаратно-программную интеграцию. Первые микропроцессоры этого семейства успешно прошли государственные испытания в 2007 г., однако, их появлению предшествовал длительный этап разработки архитектуры, занявший более 20лет.
Работы над новой параллельной архитектурой начались в 1986 г. в коллективе Института точной механики и вычислительной техники (ИТМ и ВТ) им. С. А. Лебедева, в котором ранее были созданы советские высокопроизводительные комплексы «Эльбрус-1» и «Эльбрус-2» [1]. Разработка вычислительного комплекса (ВК) «Эльбрус-3» велась под руководством Б. А. Бабаяна и завершилась в 1991 г. В этом вычислительном комплексе впервые воплощены в жизнь идеи явного управления параллелизмом операций с помощью компилятора. «Эльбрус-3» разрабатывался как большая машина. Его центральный процессор занимал целый шкаф, так как при разработке использовалась советская микроэлектроника, которая значительно уступала зарубежной. На базе последней к тому времени было создано несколько поколений микропроцессоров. Начавшиеся с 1992 г. экономические изменения в России не позволили завершить наладку комплекса. Уже тогда стало ясно, что будущие поколения вычислительной техники должны базировать-
1 Статья подготовлена по материалам доклада, представленного на пленарном заседании IV международной научно-практической конференции «Современные информационные технологии и 1Т-образование», прошедшей в МГУ им. М. В. Ломоносова 14-16 декабря 2009 г. (прим. ред.).
ся на микропроцессорах. В том же 1992 г. коллектив разработчиков машин семейства «Эльбрус» выделился в ЗАО «МЦСТ»2 и начал проект микропроцессорной реализации разработанной архитектуры.
В настоящее время ЗАО «МЦСТ», которая с 2007 г. интегрируется с ОАО «ИНЭУМ им. И. С. Брука» в отраслевой институт, разрабатывает универсальные микропроцессоры (МП) двух архитектурных линий: «Эльбрус» — для высокопроизводительных вычислений, «МЦСТ-Р» — для встраиваемых применений. На базе этих МП в ЗАО «МЦСТ» серийно выпускаются ВК «Эль-брус-ЗМ» и семейство ВК «Эльбрус-90мик-ро». Поскольку в МП семейства «Эльбрус» используется принципиально новая архитектура, в которой значительную роль играет системное программное обеспечение, ЗАО «МЦСТ» разрабатывает операционные системы, оптимизирующие компиляторы, технологию оптимизирующей двоичной трансляции для эффективной совместимости с 1п1е1 х86 и средства обеспечения защищенного исполнения программ [2, 3].
Производятся МП семейства «МЦСТ-Р» с 1998 г. За это время было создано 4 поколения микропроцессоров. Первые выпускались на технологии 0,5 мкм, последние
2 http://www.mcst.ru/index. shtml.
№ 5(29) 2010
как система на кристалле — на 0,13 мкм, а их производительность выросла с 22 до 400 МАорэ при росте тактовых частот с 80 до 500 МГц.
Первый МП линии «Эльбрус» был выпущен на технологии 0,13 мкм с тактовой частотой 300 МГц, но при этом его производительность за счет параллелизма операций составила 2,4/4,8 ОАорэ для 64-/32-разряд-ных вещественных операций. Характерной особенностью перечисленных МП является постоянное улучшение показателя производительности на 1 Вт затрачиваемой мощности. В микропроцессорах линии «Эльбрус» этот показатель получают за счет аппаратнопрограммной интеграции, заложенной в его архитектуре, он равен 400 МАорэ/Вт. Такие МП используются в ВК «Эльбрус-ЗМ», который реализован как двухпроцессорный сервер и двухпроцессорный встраиваемый модуль. Линия микропроцессоров «Эльбрус» активно развивается и рассчитана на широкий диапазон применения, а именно: настольные компьютер и суперкомпьютер, встраиваемые системы, высокопроизводительные серверы.
Аппаратно-программная интеграция
Аппаратно-программная интеграция в микропроцессорах семейства «Эльбрус» базируется на строгом разделении действий между аппаратурой и системным программным обеспечением. В аппаратуре реализованы только те функции, которые необходимы для достижения с помощью оптимизирующих компиляторов высокой производительности, эффективной совместимости и защищенного исполнения программ.
Архитектура предоставляет параллельные вычислительные ресурсы. Доступ к ним осуществляется посредством широкой команды, позволяющей выполнить в одном такте до 23 обычных операций — арифметико-логических, обращений в память, передач управления. Параллелизм возрастает при использовании упакованных операций, которые позволяют выполнить одновремен-
но несколько операций над упакованными данными меньшего размера в 64-разрядных регистрах. Так, например, в одном такте возможны одновременно до 33 операций над 32-разрядными данными и существенно больше — над данными меньших форматов.
Архитектура обеспечивает средства для оптимизации обычных программ под столь высокий уровень параллельности операций. Эти средства включают:
• предикатные и спекулятивные операции, применяемые для повышения параллелизма и устранения ложных зависимостей между операциями;
• базированные регистры и асинхронную предварительную подкачку данных, используемые для предельно эффективной конвейеризации циклов;
• операции подготовки переходов, позволяющие распараллеливать и оптимизировать передачи управления в программах.
Наряду со средствами распараллеливания, на уровне операций архитектура предоставляет средства параллельного исполнения потоков управления на общей памяти с когерентным параллельным доступом, обеспечивая темп до 2 байтов на одну 64-разрядную вещественную операцию, а также средства, поддерживающие эффективную совместимость с архитектурой 1п1е1 х86. Последние рассчитаны на технологию скрытой динамической двоичной трансляции кодов 1п1е1 х86 (в которых представлена программа) в параллельные коды архитектуры «Эльбрус», включают в себя как поддержку самой технологии, так и наиболее эффективного отображения операций 1п-1е1 х86 в операции архитектуры «Эльбрус».
Наконец, архитектура предоставляет средства эффективного защищенного исполнения программ: аппаратную защиту указателей с помощью тегов, контекстную межмодульную защиту, ограничивающую каждую функцию набором доступных ей областей данных.
В свою очередь системное ПО и оптимизирующие компиляторы обеспечивают:
А. К. Ким, В. Ю. Волконский, Ф. А. Груздов, М. С. Михайлов, Ю. Н. Парахин, Ю. X. Сахин, С. В. Семенихин, М. В. Слесарев, В. М. Фельдман
Архитектура, программное обеспечение и области применения компьютеров серии «Эльбрус»
----------N ПРИКЛАДНАЯ ИНФОРМАТИКА
№ 5 (29) 2010 ' -
• автоматическое распараллеливание программ на уровне операций, в том числе и упакованных (векторизация), автоматическое распараллеливание на уровне потоков управления на общей памяти и автоматическое распараллеливание под распределенную память;
• технологию скрытой динамической трансляции любых программ, представленных в кодах 1п1е1 х86, включая любые операционные системы и приложения;
• реализацию языков и систем программирования для защищенного исполнения программ при поддержке операционной системы.
Далее авторы подробно рассмотрят особенности архитектуры «Эльбрус».
Аппаратно-программные средства распараллеливания
Большинство современных микропроцессорных архитектур используют параллелизм операций для повышения производительности, так как этот вид параллелизма присутствует во всех без исключения классах программ. Самым распространенным на сегодняшний день является суперскаляр-ный принцип распараллеливания операций.
В соответствии с эти принципом в архитектурах аппаратно распараллеливаются последовательные коды, которые получаются после компиляции программ. В результате аппаратуре приходится перекодировать сложнозакодированные операции переменной длины в более простые, анализировать зависимости между этими операциями, чтобы обнаружить параллелизм, переименовать регистры, избавляясь от ложных зависимостей, и, наконец, планировать последовательные операции на параллельные устройства исполнения. Эта работа требует значительных аппаратных и энергетических затрат и не позволяет суперскалярным архитектурам выполнять более 4-х операций за такт из-за сложностей аппаратного распараллеливания.
В отличие от суперскалярных архитектур, управление параллельным исполнением операций в архитектуре «Эльбрус» задается явно с помощью широкой команды. При этом распараллеливание операций, анализ зависимостей, распределение регистров и планирование выполняются программно оптимизирующим компилятором (рис. 1). Это позволяет получить код с более высокой степенью параллелизма, который исполняется быстрее суперскалярно-
Оптимизирующий компилятор
• анализ зависимостей
• оптимизации
• глобальное планирование
• распределение регистров
Текст программы
Двоичный
транслятор
Суперскалярный МП
Анализатор
зависимостей,
Перекодировщик
операций,
Планировщик,
Распределитель
регистров
|___Последовательный поток команд после компиляции
Рис. 1. Различия в подходе к распараллеливанию операций в МП «Эльбрус»
и в суперскалярном МП
80
№ 5(29) 2010
Рис. 2. Структура и основные компилятора для
го, и тратить меньше энергии, переложив значительную часть работы с аппаратуры на компилятор.
Оптимизирующий компилятор для архитектуры «Эльбрус» (рис. 2) поддерживает входные языки С и С++, включая йШ-расширения этих языков для более полной совместимости со свободным программным обеспечением, а также Го11гап-77. Данные языки реализуются для 32- и 64-разрядных адресов и защищенного исполнения, о котором пойдет речь дальше. Важным входным языком является так называемый переносимый код. Он задействован в кодах стандартных библиотек для повышения производительности программ, позволяя оптимизировать их в контексте конкретных приложений. Еще одна важная функция переносимого кода — обеспечение совместимости при развитии архитектуры семейства «Эльбрус».
Ключевым элементом оптимизирующего компилятора является блок оптимизации и генерации параллельного кода. Он делает возможным глубокий анализ зависимостей как внутри, так и между процедурами, результаты которого используются в оптимизациях и распараллеливании вычислений. В компиляторе реализованы принципиально новые и самые современные алгоритмы анализа и оптимизаций. Многие из них зна-
функции оптимизирующего МП «Эльбрус»
чительно усовершенствованы. Алгоритмы глобального планирования операций и распределения регистров объединяются со специфическими для архитектуры оптимизациями, а эвристики обеспечивают оптимальное планирование операций для различных регионов. Тем самым удается сокращать время выполнения до длин критических путей в регионах с ограниченным параллелизмом и достигать предельной загрузки аппаратных ресурсов, т. е. максимально использовать аппаратный параллелизм в регионах с большим параллелизмом, таких как конвейеризированные циклы.
Архитектурные показатели МП «Эльбрус» — производительность 16/8 Гфлоп/ ГГц для 32-/64-разрядных вещественных операций и отношение производительности к мощности 400 Мфлоп/Вт превосходят аналогичные показатели самых современных зарубежных микропроцессоров, являясь прямым следствием использования явного параллелизма операций с передачей функций их распараллеливания оптимизирующему компилятору. Проведенные в ходе государственных испытаний замеры производительности на программных системах заказчика, представленных различными организациями, показали, что оптимизированные компилятором коды исполняются на ВК «Эльбрус-ЗМ» 300 МГц в сред-
А. К. Ким, В. Ю. Волконский, Ф. А. Груздов, М. С. Михайлов, Ю. Н. Парахин, Ю. X. Сахин, С. В. Семенихин, М. В. Слесарев, В. М. Фельдман
Архитектура, программное обеспечение и области применения компьютеров серии «Эльбрус»
№ 5(29) 2010
нем в 1,44 раза быстрее, чем на Репйит 41,4 ГГц. Эти результаты были в дальнейшем подтверждены на более широком классе задач пользователей ВК «Эльбрус-ЗМ».
Аппаратно-программные средства совместимости с 1Ше1 х86
При создании новой микропроцессорной архитектуры нельзя абстрагироваться от проблемы совместимости с существующим программным обеспечением. На сегодняшний день наибольшее распространение в мире получила архитектурная платформа 1п1е1 х86 и ее 64-разрядные расширения, выпускаемые американскими компаниями 1п-1е1 и А1Ш. В ней используется сложнокоди-руемая последовательная система команд, причем владелец этой системы команд — 1п-1е1 — никому ее не лицензирует.
При создании архитектуры «Эльбрус» была поставлена и успешно решена задача обеспечения полной совместимости с архитектурой 1п1е1 х86 без повторения ее системы команд. Для достижения этой цели разработана технология скрытой двоичной трансляции программ из кодов х86 в коды архитектуры «Эльбрус». Данная програм-
мная технология существенно поддержана архитектурой МП «Эльбрус».
Упрощенная схема работы динамической системы двоичной трансляции ВК «Эль-брус-ЗМ» представлена на рис. 3. Основными ее компонентами являются:
• интерпретатор кодов 1А-32, который работает при первом исполнении, добавляя средства мониторинга;
• двоичный транслятор, перекодирующий коды 1А-32 в коды МП «Эльбрус» с помощью нескольких уровней оптимизации;
• база кодов, обеспечивающая хранение и накопление оптимизированных кодов;
• система динамической поддержки, которая обслуживает весь процесс.
Для ускорения исполнения оптимизирующая трансляция запускается на свободном процессоре, а хорошо оптимизированные регионы сохраняются в базе кодов и при повторном исполнении той же программы используются без потери времени на их перекомпиляцию и оптимизацию.
Аппаратная поддержка технологии двоичной трансляции включает в себя общие средства распараллеливания программ на уровне операций, о которых было сказано ранее, средства поддержки самой техноло-
система двоичной трансляции
х86 BIOS
I
х86 драйверы
I
полная система двоичной трансляции
операционная система Эльбрус-Ыпих
микропроцессор «Эльбрус»
двоичным транслятор и оптимизатор
х86 код
система двоичной
Linux приложений
Г
т
База
«Эльбрус»
кодов
«Эльбрус» код
система
динамической
поддержки
Т
x86j<o^
интерпретатор
Эльбрус» код
Рис. 3. Схема обеспечения совместимости с помощью технологии двоичной трансляции
82_у
№ 5(29) 2010
гии двоичной трансляции и средства поддержки совместимости с конкретной архитектурой х86. Ключевыми аппаратными средствами, обеспечивающими в ВК «Эль-брус-ЗМ» эффективную и надежно работающую технологию двоичной трансляции, являются:
• полная изоляция всех компонентов дво-ично-транслирующей системы от исполняемой программы и ее данных;
• эффективное выполнение важнейших операций исходной платформы с соблюдением точной их семантики, в частности, операций обращения в память, для которых необходимо сохранение принятого порядка исполнения;
• воспроизведение точного состояния контекста исходной платформы (регистров и памяти) в момент прерывания исполнения (как синхронного, так и асинхронного), гарантирующее отсутствие потерь прерываний;
• полный контроль над возможными перемещениями и модификацией кодов исходной платформы при выполнении программы;
• поддержка специфических для двоичной трансляции методов оптимизации, например, скрытого канала для базы кодов.
Система двоичной трансляции обладает высокой надежностью. Она обеспечила успешное исполнение на ВК «Эльбрус-ЗМ» более 20 операционных систем в кодах х86, в том числе MS DOS, несколько версий Windows (95, NT, 2000, ХР и др.), Linux, FreeBSD, QNX. Под управлением этих операционных систем эффективно работают свыше 1000 популярных приложений, в частности, интерактивные компьютерные игры, программы из состава пакета MS Office (MS Word, MS Excel, MS PowerPoint и др.), видеоролики, программы компрессии-декомпрессии данных, драйверы всех внешних устройств. Наряду с возможностью запуска любых программ под управлением всевозможных операционных систем в кодах х86 предусмотрен запуск приложений в кодах х86 под управлением ОС Эльбрус-Linux. Это позво-
ляет одновременно использовать ВК «Эль-брус-ЗМ» для запуска программ в кодах х86 и кодах архитектуры «Эльбрус». Таким образом, в МП «Эльбрус» успешно решена задача полной и эффективной совместимости с архитектурой 1п1е1 х86 при лицензионной независимости от 1п1е1.
Аппаратно-программные средства для защищенного исполнения программ
На всех современных вычислительных системах адреса и числа неразличимы. Это дает большую свободу программистам при использовании адресов в ассемблерах и указателей в языках типа С и С++, но делает и данные, и сами коды незащищенными от программных ошибок и злонамеренных проникновений. В архитектуре «Эльбрус» в качестве указателей применяются дескрипторы, защищенные аппаратными тегами (рис. 4). Дескрипторы не могут быть сконструированы из отдельных частей и содержат информацию о размере объекта, на который указывают, и правах доступа к нему и к его отдельным компонентам. Благодаря этому в архитектуре «Эльбрус» контролируется любое обращение за границу объекта, описываемого дескриптором. Аппаратные теги используются также для обозначения неинициализированных данных, обращение к которым является очень распространенным источником ошибок в программах. Наконец, в аппаратуре реализован механизм контекстной защиты, ограничивающий каждую функцию набором доступных ей областей данных. Эффективность защищенного исполнения программ определяется тем, что все необходимые динамические проверки осуществляются аппаратурой параллельно с выполнением операций и не замедляют их.
Перечисленные аппаратные средства позволяют реализовать языки С и С++ как абсолютно надежные. Для этого служат специальные методы компиляции и расширения операционной системы Эльбрус-Ыпих, опирающиеся на аппаратные средства под-
А. К. Ким, В. Ю. Волконский, Ф. А. Груздов, М. С. Михайлов, Ю. Н. Парахин, Ю. X. Сахин, С. В. Семенихин, М. В. Слесарев, В. М. Фельдман
Архитектура, программное обеспечение и области применения компьютеров серии «Эльбрус»
№ 5(29) 2010
массив, область стека
Рис. 4. Использование тегированной памяти для защиты данных
держки защищенного исполнения программ. К сожалению, применение этих средств ко всем программам при их переносе на архитектуру «Эльбрус» ограничено, так как многие из них, даже хорошо отлаженные, содержат скрытые ошибки или включают опасные отклонения от стандарта языка, диагностируемые в режиме защищенного исполнения какошибки.
Так, около 50% программ пользователей и более 80% программ из пакета ЭРЕС^Эб, которые были оттранслированы и исполнены в защищенном режиме, выявили в этих программах ошибки — использование неинициализированных данных и зависших ссылок, выходы за границу объектов, опасные отклонения от стандартов языков. Вместе с тем после отладки исправления ошибок они могут столь же успешно исполняться на обычных машинах, где отсутствует само понятие защищенного исполнения, но при этом программы будут значительно более надежными.
Программное обеспечение ВК серии »Эльбрус»
Программное обеспечение, в первую очередь оптимизирующие компиляторы и операционная система, играют важней-
шую роль в производительности ВК серий «Эльбрус» и «Эльбрус-ЗМ», так как обеспечивают распараллеливание программ на всех уровнях параллелизма. Поскольку работа технологии двоичной трансляции была кратко описана выше, далее авторы статьи рассмотрят оптимизирующий компилятор и операционную систему, главным образом, с точки зрения использования особенностей архитектуры «Эльбрус».
Оптимизирующий компилятор
Важнейшим компонентом в компиляторе является блок анализа, оптимизации и генерации кода. Его основные функции представлены на рис. 2. В нем выполняется анализ промежуточного представления программы, ее оптимизация, а также распараллеливание операций компилируемой программы (более 150 различных алгоритмов).
Методы анализа программ. Анализ программы необходим для вычисления при компиляции некоторых ее свойств, которые затем используются для оптимизации и распараллеливания операций.
Основная задача, которую решают методы статического анализа программ в оптимизирующих компиляторах, — это определение отношения зависимости по данным
№ 5(29) 2010
и управлению между различными группами операций и отдельными операциями программы. Для обнаружения параллелизма в программах в компиляторе применяются самые современные методы анализа зависимостей. Многие из них были значительно усовершенствованы, а некоторые — специально разработаны для архитектуры «Эльбрус».
Анализ управления выполняется на меж-процедурном и процедурном уровнях. На межпроцедурном уровне анализируется граф вызовов процедур, в нем находятся рекурсивные циклы, которые затем могут преобразовываться в обычные циклы. Основной задачей анализа управления на процедурном уровне является обнаружение циклов и ациклических регионов, в которых по большей части работает программа. Именно эти регионы затем оптимизируются наиболее интенсивно.
Анализ потоков данных также осуществляется на межпроцедурном и процедурном уровнях. На межпроцедурном уровне вычисляются свойства параметров и результатов функций, такие как константное значение или ссылка на конкретную переменную или функцию для указателей на переменные и функции. Эта информация затем используется в по-процедурном анализе с целью уточнения зависимостей между операциями или в оптимизациях, например, для клонирования процедур с последующей их непосредственной подстановкой. В ходе анализа потока данных внутри процедуры также, главным образом, исследуются зависимости между операциями, а кроме этого, вычисляются свойства переменных, такие как константное значение, общие подвыражения, а для циклов — индуктивные переменные и возможность совпадения индексов при обращении к элементам массивов на разных итерациях. Все эти свойства затем используются в оптимизациях и для распараллеливания операций.
В тех случаях, когда невозможно точно определить отношение зависимости между операциями, при компиляции программы
применяются достаточно мощные средства динамического анализа — как программные, так и аппаратные, которые считаются оптимизациями.
Важнейшие оптимизации. Наряду с распараллеливанием операций, важнейшими оптимизациями являются универсальные преобразования, устраняющие ненужные вычисления, а также оптимизации, сокращающие число блокировок при обращении за данными и кодами из-за наличия иерархии памяти.
Методы устранения избыточных вычислений включают свертку константных выражений, сбор общих подвыражений, удаление ненужных копирований данных, а также лишних обращений в память за считыванием и записью данных, вынос инвариантов из циклов, упрощение индексных выражений, вычисление и сокращение индуктивных переменных, удаление мертвого кода и др. Перечисленные оптимизации, как правило, применяются во всех оптимизирующих компиляторах, но в компиляторе для ВК «Эль-брус-ЗМ» они существенно развиты в части использования предикатов для управления операциями.
Оптимизации управления, увеличивающие параллелизм, — это непосредственная подстановка функции в точку вызова, которой может предшествовать клонирование (создание копии) функции, если она вызывалась через указатель, раскрутка и конвейеризация цикла, формирование гиперблоков с преобразованием операций передачи управления в предикаты и многое другое.
К важнейшим аппаратным средствам борьбы с зависимостями, реализованным в микропроцессоре «Эльбрус», относятся предикатное и спекулятивное исполнение операций, аппаратные средства конвейеризации циклов, аппаратные средства сравнения адресов при изменении порядка обращений в память.
Предикатное исполнение операций позволяет компилятору планировать одновременное выполнение нескольких путей управления в программе. Такие пути могут испол-
А. К. Ким, В. Ю. Волконский, Ф. А. Груздов, М. С. Михайлов, Ю. Н. Парахин, Ю. X. Сахин, С. В. Семенихин, М. В. Слесарев, В. М. Фельдман
Архитектура, программное обеспечение и области применения компьютеров серии «Эльбрус»
№ 5(29) 2010
няться бесконфликтно, поскольку каждая операция стоит под предикатом, в точности повторяющем условие, при котором операция была бы выполнена в исходной программе. Нулевое значение предиката отменяет операцию, обеспечивая правильную семантику выполнения программы. Применение предикатных операций дает возможность избавиться от многих локальных переходов в пределах региона планирования. Спекулятивное исполнение операций избавляет операции от предикатных зависимостей и позволяет выполнять их раньше, чем становится известно значение предиката. Аппаратные средства конвейеризации циклов делают возможным одновременное исполнение операции с разных итераций цикла, а средства базирования регистров позволяют избавиться от зависимостей, вызванных переиспользованием регистров. Благодаря аппаратным средствам сравнения адресов при изменении порядка обращений в память компилятор способен выполнять операции чтения раньше операций записи, тем самым сокращая критические пути и ускоряя исполнение. В случае обнаружения реальной зависимости между переставленными операциями аппаратура вырабатывает признак, который дает возможность передать управление на компенсирующий код, заранее подготовленный компилятором для восстановления правильного исходного порядка исполнения операций. После выполнения компенсирующего кода корректное исполнение программы восстанавливается.
Можно выделить три основные стратегии сокращения потерь производительности при обращении в память, составляющие 2050%, а на отдельных задачах — до 80%:
1) сокращениечислаобращений;
2) предварительная подкачка данных и кода;
3) оптимальное размещение данных.
Наряду с оптимизацией удаления повторных обращений в память в пределах региона оптимизации, число обращений в память сокращается за счет объединения нескольких обращений в одно при обработке смеж-
но расположенных в ней данных, совокупный размер которых не превышает размера аппаратного регистра (64 разряда). Такая оптимизация, дополненная операциями над упакованными значениями (операции типа ММХ/ЭЗЕ), позволяет существенно поднять производительность широкого класса задач, включая универсальные приложения.
Предварительная подкачка данных в буферные памяти или в КЭШ является эффективным средством оптимизации обращений в память. Используются также аппаратные средства предварительной асинхронной подкачки элементов массивов в специальный буфер. Эти средства полностью снимают проблему приостановки вычислений ввиду неизвестности времени доступа в память, поскольку асинхронная подкачка обеспечивает оптимальную адаптацию к произвольному времени доступа. Такой подход дает существенный прирост производительности, особенно на задачах с вещественной арифметикой, в которых доминируют циклы.
Оптимальное размещение данных. Линейная память, используемая для хранения данных, а также ограниченные размеры, строковая организация и ограниченная ассоциативность КЭШ создают проблемы, известные как фрагментация, и приводят к возникновению дополнительных конфликтов. Практические методы оптимизации размещения данных в памяти, реализованные в компиляторе для ВК «Эльбрус-ЗМ», позволили сократить потери как при обращении за данными, так и за кодами.
Планирование и распределение регистров. Важнейшую роль в получении оптимальных параллельных кодов играют планирование операций и распределение аппаратных регистров. Планирование сводится к оптимальному отображению абстрактного параллельного представления программы в виде графа зависимостей на параллельные ресурсы архитектуры микропроцессора.
С точки зрения стратегий планирования все регионы можно разделить на три категории:
№ 5(29) 2010
1) ациклические;
2) конвейеризируемые циклы;
3) смешанные (регионы со сложным управлением).
Ациклический регион, как правило, представляет собой совокупность базовых блоков с одним входом и многими выходами. Все внутренние переходы у него удалены и заменены предикатным управлением (это гиперблок)с использованием предикатных и спекулятивных операций. Планирование выполняется с помощью усовершенствованного алгоритма планирования списков готовых операций. Благодаря наличию большого набора параллельных устройств исполнения в широкой команде архитектуры «Эльбрус», с одной стороны, и, как правило, ограниченного параллелизма операций в гиперблоке — с другой, этот алгоритм дает возможность отобразить абстрактное параллельное представление программы на конкретные аппаратные ресурсы, не увеличивая критические пути.
Конвейеризируемый цикл — это регион, позволяющий совмещать выполнение нескольких последовательных итераций цикла. Такой способ планирования применяется к самым внутренним циклам, которые повторяются много раз (от нескольких десятков до сотен и более). В архитектуре «Эльбрус» он имеет мощную аппаратную поддержку, включающую асинхронную предварительную подкачку данных, базируемые регистры, управление прологом и эпилогом. Конвейеризация циклов дает значительный прирост производительности (в 2,5-3 раза на задачах с интенсивной обработкой массивов в циклах) по сравнению с чисто программными методами конвейеризации.
Смешанный регион, или регион со сложным управлением представляет собой совокупность ациклических и цикловых регионов, в которых работа внутри циклов не столь продолжительна, как для конвейеризируемых циклов. К этим регионам применяются методы глобального планирования, соединяющие воедино оптимизацию, распараллеливание и планирование операций.
В основе глобального планирования лежит перенос операций через точки схождения управления. При этом учитывается влияние переноса операций на изменение критических путей выполнения различных частей региона планирования, включая циклы и ациклические участки. В конечном итоге циклы оказываются частично конвейеризированными, при этом в них самих и в ациклических участках активно используются предикатные и спекулятивные операции. Методы глобального планирования повышают эффективность исполнения регионов со смешанным управлением на 20-50% по сравнению с независимым планированием циклов и ациклических регионов.
Оптимальное распределение регистров является важнейшей составляющей процесса оптимального планирования и распараллеливания операций, поскольку все операции берут свои операнды из регистров и помещают в них результаты. На уровне абстрактного представления программы применяются виртуальные регистры, число которых никак не ограничивается. В реальном микропроцессоре их число ограничено. Если в процессе планирования не удается поместить все результаты операций на аппаратные регистры, то появляются дополнительные операции перемещения содержимого регистров в память, что замедляет выполнение программы. В оптимизирующем компиляторе для ВК «Эльбрус-ЗМ» разработан и реализован уникальный алгоритм одновременного планирования и распределения регистров. Он повышает эффективность распределения на 10-20% по сравнению с другими, самыми современными методами.
Операционная система
Основная работа по созданию операционной системы (ОС) для ВК «Эльбрус-ЗМ1» заключалась в реализации архитектурно зависимой части ядра ОС, которая является главным и наиболее сложным элементом базовой операционной системы. Архитектурно зависимая часть ядра реализова-
А. К. Ким, В. Ю. Волконский, Ф. А. Груздов, М. С. Михайлов, Ю. Н. Парахин, Ю. X. Сахин, С. В. Семенихин, М. В. Слесарев, В. М. Фельдман
Архитектура, программное обеспечение и области применения компьютеров серии «Эльбрус»
№ 5(29) 2010
на на ОС Ыпих версии 2.6.14. Далее будут рассмотрены компоненты, потребовавшие наибольших усилий при разработке описываемой части ОС.
Управление обработкой прерываний. В архитектуре «Эльбрус» определены два вида прерываний: программные и аппаратные. Типичным представителем программного прерывания является вход в интерфейсную процедуру ОС; аппаратных прерываний — внутренние прерывания, возникающие при выполнении команд в процессоре, а также внешние — прерывания от внешних устройств.
Архитектура широкой команды предполагает возможность появления нескольких внутренних прерываний при ее исполнении. В ряде случаев невозможно повторить всю широкую команду после обработки прерывания, как это происходит в машинах с традиционной архитектурой. Это привело к созданию механизмов интерпретации команд с использованием аппаратных средств, в которых сохраняется информация, необходимая для интерпретации.
Управление распределением памяти. Функционирование виртуальной памяти основано на возможности аппаратуры работать с четырехуровневой таблицей виртуальной памяти. Для этого ОС должна построить все уровни таблицы страниц и затем правильным образом формировать их элементы, например, при обработке прерывания по отсутствию страницы в таблице страниц.
Управление процессами. Одним из основных действий в управлении процессами является создание процесса. Оно возможно из ядра и программы пользователя. В архитектуре «Эльбрус» работа по исполнению программ происходит с использованием трех стеков, которые поддерживаются ОС:
1) стекакомпилятора;
2) стека процедур (регистровых окон);
3) стека связующей информации.
Стеки компилятора для всех процессов
ядра размещаются в памяти ядра, стек процедур и стек связующей информации не-
доступны программам пользователей, и на этом строятся очень полезные оптимизации управления процессами. В данном случае нет необходимости создавать эти стеки в памяти ядра ОС и можно работать на стеках, расположенных в пространстве пользователя.
Загрузка и запуск программ с поддержкой защищенного исполнения. В архитектуре «Эльбрус» понятие программного модуля поддержано на уровне аппаратуры. Естественно, что в такой ситуации работа по загрузке модуля и его активизация — это новое свойство операционной системы. Дополнительных усилий потребовала также поддержка защищенного исполнения программ, о которых говорилось ранее.
Средства синхронизации параллельных вычислений. Базируются на некоторых основных примитивах, реализация которых зависит от архитектуры. Не стала исключением и архитектура «Эльбрус». Все примитивы — это новые примитивы синхронизации. Необходимо отметить, что аппаратная поддержка позволила реализовать их максимально эффективно — только с запретом обращения по адресу.
Управление работой внешних устройств. Определяется функционированием контроллера прерываний и контроллеров самих устройств. Набор системных контроллеров в ВК «Эльбрус-ЗМ» близок к общепринятым, но собственная реализация неизбежно привела к некоторым отличиям, которые следовало учитывать при адаптации соответствующих драйверов. Отметим, что она потребовала больших усилий, чем разработка новых драйверов.
Поддержка режима реального времени. Операционная система Ыпих — типичный представитель серверных ОС, где все ориентировано на повышение средней производительности. Такая ориентация приводит к недетерминированному времени исполнения различных действий. Это положение недопустимо для систем реального времени, что потребовало разработать и реализовать новые принципы управления
№ 5(29) 2010
при включении режима реального времени в целях обеспечения необходимых временных показателей. Основным принципом является необходимость исполнения любых действий в соответствии со стратегией приоритетного планирования. В стандартном Linux это далеко не так. Например, обработка прерываний и работа основной процедуры управления (handler) происходят с приоритетом процесса, на который пришло прерывание. Для реального времени это неизбежно приводит к большим временным разбросам исполнения каких-то действий, что недопустимо. В результате планомерной работы удалось практически полностью избавиться от временных разбросов, улучшив в этой части показатели OS Linux со стандартными, доступными на www.kernel.org изменениями (rt_patch) почти в 30 раз [4].
Поддержка режима двоичной трансляции. В разработанном ядре ОС реализовано уникальное свойство поддержки исполнения кодов IA-32 в режиме двоичной компиляции. Что касается ВК «Эльбрус-ЗМ1», то в нем существует аппаратная поддержка специальной памяти (вторичного виртуального пространства), характерной для архитектуры IA-32. В ядре ОС реализовано отображение вторичного виртуального пространства в основное, что позволяет двоичному транслятору обращаться во вторичное пространство обычными командами {load/ store) с обработкой возникающих прерываний традиционными средствами ОС. Это свойство используется двоичным транслятором приложений в кодах IA-32 под управлением стандартной ОС.
Управление сетевым взаимодействием. Сетевые протоколы и их реализация остались без изменений. Были созданы специальные средства для работы в режиме реального времени с возможностью привязки обработки прерываний (от конкретного сетевого устройства) к одному процессу3.
3 В стандартном Ыпих эта работа масштабируется по процессорам, что неэффективно для ОС реального времени.
Средства инициализации и перезапуска. Эти средства можно разделить на две части: загрузка ОС {boot) и инициализация ОС. Названные компоненты реализованы не только для последующей работы, но и с возможностью быстрого восстановления при перезапуске системы. В ВК «Эльбрус-ЗМ» имеется возможность не прерывать режим регенерации оперативной памяти при перезапуске системы. Это позволило реализовать контрольную точку перезапуска не только на диске, но и в памяти. Как следствие, в самом быстром варианте перезапуск выполняется за несколько секунд.
Применение ВК семейства »Эльбрус»
Вычислительные комплексы на базе микропроцессоров «Эльбрус» предназначены для применения в стационарных и мобильных (перебазируемых) системах управления обработки информации.
В настоящее время ВК «Эльбрус-ЗМ» выполняется в двух вариантах конструктивного исполнения: серверном, пригодном также для использования в качестве настольного, и в исполнении compact PCI.
Двухпроцессорные ВК семейства «Эльбрус» поддерживают работу с современными средствами ввода-вывода, работу в сетях и обеспечивают производительность свыше 4,5 Гфлпс для 64-разрядных данных и более 8,5 Гфлпс для 32-разрядных данных. Они могут использоваться как настольные машины, имеют средства быстрого межмашинного обмена, что дает возможность строить разнообразные конфигурации для применения в качестве серверов и мощных мобильных систем.
На задачах из области суперкомпьютеров ВК семейства «Эльбрус» позволяют достигать производительность, близкую к пиковым характеристикам процессоров, за счет хорошей сбалансированности вычислительных возможностей микропроцессоров и пропускной способности памяти (табл. 1).
А. К. Ким, В. Ю. Волконский, Ф. А. Груздов, М. С. Михайлов, Ю. Н. Парахин, Ю. X. Сахин, С. В. Семенихин, М. В. Слесарев, В. М. Фельдман
Архитектура, программное обеспечение и области применения компьютеров серии «Эльбрус»
№ 5(29) 2010
Таблица 1
Производительность ВК «Эльбрус-ЗМ» на задачах из области суперкомпьютеров (данные запуска задачи на одном процессоре)
Реальные замеры / пиковые возможности DGEMM Гвешоп. /сек STREAM Гб/сек FFT Гвешоп. /сек
64-разрядные данные 2,3 / 2,4 4,6 /4,8 1,5 /1,5
32-разрядные данные 4,5 / 4,8 4,6 /4,8 2,8 / 3,0
Перспективы развития линии »Эльбрус»
Работа над микропроцессорами семейства «Эльбрус» и компьютерами на базе этих микропроцессоров является важнейшей для ЗАО «МЦСТ» и ОАО «ИНЭУМ им. И. С. Брука».
На технологии 90 нм в настоящее время на частоте 500 МГц изготовлен и успешно работает одноядерный МП «Эльбрус-1С», реализованный как система на кристалле. На базе этого микропроцессора изготовлены 4-процессорные вычислительные комплексы в конструктиве Compact PCI, оснащенные специально разработанным и реализованным на технологии 130 нм контроллером периферийных интерфейсов («Южный мост») для подключения современных периферийных устройств через современные интерфейсы.
В фазе завершения верификации находится разработка гетерогенного 6-ядерного микропроцессора «Эльбрус-2С+» с двумя универсальными ядрами «Эльбрус» и четырьмя специализированными ядрами для обработки сигналов. Этот микропроцессор также разрабатывается на технологии 90 нм, рассчитан на тактовую частоту 500 МГц и предназначен для использования в различных встраиваемых системах.
Активно идут работы над гомогенным 4-ядерным микропроцессором «Эльбрус-4С» на технологии 65 нм, который также будет реализован как система на кристалле, работающая на частоте 1 ГГц.
Кроме того, предполагается спроектировать микропроцессоры на технологиях 45 нм, 32 нм, 22 нм и более высоких по мере их появления. При этом ставится задача предельно оптимизировать логическое и физическое про-
ектирование, обеспечив достижение тактовых частот свыше 4 ГГц. Планируется дальнейшее развитие архитектуры широкого командного слова, используемой в ядре микропроцессора, для обеспечения в будущем производительности более 16 САорэ/ГГц на ядро. При этом число процессорных ядер в гомогенных системах должно возрасти до16на один микропроцессор, а в гетерогенных — возможно и больше. За счет активного применения энергосберегающих технологий при разработке микропроцессоров предполагается на порядок увеличить производительность к выделяемой мощности и довести ее до 4 САорэ/Вт. В микропроцессоры будут активно встраиваться быстрые каналы и контроллеры памяти, поддерживающие создание многопроцессорных и многомашинных систем, а также средства, обеспечивающие достоверность и надежность вычислений. Все это позволит выйти на уровень микропроцессоров с те-рафлопной производительностью.
В части развития вычислительных комплексов планируется реализация многопроцессорных систем на общей памяти с целью создания мощного серверного узла, содержащего до 64 процессоров и 1024 процессорных ядер. При этом большое внимание будет уделяться средствам параллельного доступа в память, что обеспечит темп 2 байта на 64-разрядную вещественную операцию. Это даст возможность получить серверы те-рафлопного диапазона, а объединение столь мощных серверных узлов в многомашинный комплекс — реализовать суперкомпьютеры петафлопного диапазона. Данные ВК будут поддерживаться эффективными автоматическими средствами распараллеливания задач на многопроцессорные и многомашинные конфигурации. Предполагается также соз-
№ 5(29) 2010
дать специальные системы контроля состояния подобных ВК, облегчающие их обслуживание, и снабдить их средствами автоматической реконфигурации для поддержания высокой надежности и готовности. Все это позволит сократить или даже ликвидировать отставание в стратегически важной области и повысит технологическую независимость и информационную безопасность.
Заключение
ЗАО «МЦСТ» создало универсальные российские микропроцессоры серии «Эльбрус» с принципиально новой архитектурой. Они обладают рядом преимуществ.
В архитектуре МП серии «Эльбрус» используется явный параллелизм операций, распараллеливание программы осуществляется оптимизирующим компилятором. За счет этого ядро МП «Эльбрус» может выполнять в несколько раз больше операций за один машинный такт, не тратя энергию на распараллеливание. Поэтому МП серии Эльбрус обладают большей логической скоростью (число операций, выполняемых за такт) и более высокой производительностью на единицу потребляемой энергии.
В микропроцессорах серии «Эльбрус» решен вопрос эффективной и надежной совместимости с архитектурой 1Ме1х86 при лицензионной независимости от компании 1п1е1. Для этого используется технология скрытой бинарной компиляции кодов х86 в коды архитектуры «Эльбрус», поддержанная аппаратно. Данная технология предусматривает оптимизацию и накопление оптимизированных кодов. За счет этого достигается более высокая производительность программ, представленных в кодах 1п1е1 х86, чем на микропроцессорах от 1п1е1 или АМО. При этом на выполнение программы затрачивается меньше энергии, так как бинарная компиляция и распараллеливание проводятся только один раз, а на традиционных микропроцессорах— при каждом исполнении.
В архитектуре МП «Эльбрус» реализована аппаратно-программная защита про-
грамм и данных при исполнении, которая является фундаментом для построения безопасных систем широкого диапазона применения в условиях угрозы безопасности вычислений из-за ошибок программистов и явных атак на вычислительные системы.
Архитектура МП «Эльбрус», наряду с явным параллелизмом операций, поддерживает параллелизм упакованных операций (короткие векторы), параллелизм нескольких процессорных ядер и процессоров, работающих на общей памяти с когерентным доступом, а также параллелизм систем с распределенной памятью.
На сегодняшний день архитектура «Эльбрус» прошла успешную проверку в составе вычислительных комплексов на двух поколениях микропроцессоров — «Эльбрус» и системы на кристалле «Эльбрус-1С». Активно разрабатываются два следующих поколения МП этой серии — 6-ядерная гетерогенная система на кристалле «Эльбрус-2С+» и 4-ядерная гомогенная система на кристалле «Эльбрус-4С».
Созданные для архитектуры «Эльбрус» современные средства системного программного обеспечения позволяют разработчикам прикладных программ эффективно использовать все аппаратные возможности.
Список литературы
1. Бабаян Б. А., Сахин Ю. X. Система Эльбрус // Программирование. 1980. №6.
2. Ким А. К., Волконский В. Ю., Гэуздов Ф. А., Михайлов М. С., Парахин Ю. Н., Сахин Ю. X., Семе-нихин С. В., Слесарев М. В., Фельдман В. М. Микропроцессорные вычислительные комплексы с архитектурой «Эльбрус» и их программное обеспечение // Вопросы радиоэлектроники. Сер. ЭВТ. 2009. Вып. 3. С. 5-37.
3. Волконский В., Гоуздов Ф., Ким А., Сахин Ю. «Эльбрус» сегодня II Открытые системы. 2009. №2. http://www.osp.ru/os/2009/02/7314081/.
4. Семенихин С. В., Ревякин В. А., Ананьев Л. И., Костин Д. А., Галязов С. С., Харитонов М. И., Ситников А. В., Чернис Е. Н., Лебедев В. П. ОС Ыпих и режим реального времени // Вопросы радиоэлектроники. Сер. ЭВТ. 2009. Вып. 3. С. 37-67.
А. К. Ким, В. Ю. Волконский, Ф. А. Груздов, М. С. Михайлов, Ю. Н. Парахин, Ю. X. Сахин, С. В. Семенихин, М. В. Слесарев, В. М. Фельдман