лого ОАО ИНЭУМ -- на Главную
Line
ТЕХНОЛОГИИ И ПРОЕКТЫ
Marker Микропроцессоры и микропроцессорные устройства
Marker Параллельные и защищенные вычисления
Marker Программное обеспечение
Marker Комплексирование микропроцессорных систем и серверов
Marker Компьютеризованные медицинские диагностические системы
Marker Контроллеры и управляющие комплексы "под ключ", в том числе, для АЭС
Marker Энергоэффективность компьютерной техники
Marker Обеспечение качества

Для достижения высокой производительности в основу архитектурной линии микропроцессора "Эльбрус" положен параллелизм, образующийся при выполнении отдельных операций:

  • арифметико-логических;
  • обращений в память;
  • передачи управления.

Параллелизм операций - это наиболее доступный вид параллелизма, который может быть извлечен из последовательной программы, написанной на традиционных языках высокого уровня, таких как C, C++ или Fortran. Автоматическое (программное или программно-аппаратное) извлечение других видов параллелизма - разбиение программы на слабо взаимодействующие потоки управления, работающие на общей памяти, или на еще более слабо взаимодействующие подзадачи, работающие на распределенной памяти, является значительно более сложной проблемой, которая до сих пор не нашла практического решения для многих классов задач.

Наиболее точно параллелизм операций выражается с помощью потоковой модели вычислений. В ней последовательность выполнения определяется только на основе явных зависимостей (зависимостей по данным) между операциями. Операции, не связанные между собой зависимостями, могут выполняться параллельно. Если исключить ложные зависимости между операциями, к которым относятся зависимости, возникающие из-за переиспользования памяти под результаты операций, то оставшиеся зависимости образуют параллельный поток зависимых по данным операций. Параллелизм операций позволяет существенно повысить производительность строго последовательных программ.

В суперскалярной процессорной архитектуре реализуется динамическая потоковая модель, в которой для нескольких десятков последовательных операций аппаратно исследуются зависимости между ними, находятся независимые операции, устраняются ложные зависимости путем переименования регистров для результатов операций и осуществляется планирование параллельного исполнения операций на параллельных устройствах по динамически вычисляемым условиям готовности.

В архитектурах с явным параллелизмом операций зависимости между операциями определяются при компиляции программ. При этом запуск на исполнение независимых операций также планируется компилятором, для чего в архитектуре процессора предусматривается возможность явно указать, что какие-то операции должны запускаться одновременно, в одном машинном такте.

Потенциал параллелизма операций, определяемый по трассам выполненных команд, достигает 6 - 8 операций на целочисленных, наиболее трудных с точки зрения распараллеливания программах. Эти оценки получены при условии, когда исключены команды управления, но сохранена основная структура программы в виде последовательности выполнения циклов и вызовов процедур. При отказе от переиспользования памяти и снятии ограничений на поддержание последовательности выполнения циклов и процедур, параллелизм достигает 70 - 100 операций на тех же целочисленных задачах. Это означает, что в большинстве программ заложен значительный потенциал параллелизма на уровне потоков управления, который может быть использован на многопроцессорных и многоядерных микропроцессорных системах.

Архитектура универсального 64-разрядного микропроцессора "Эльбрус" основана на явном представлении параллелизма операций с использованием для этого широкого командного слова.

Распараллеливание и планирование операций выполняется оптимизирующим компилятором.

При создании и применении новой микропроцессорной архитектуры нельзя абстрагироваться от проблемы совместимости с существующим программным обеспечением. На сегодняшний день наибольшее распространение в мире получила архитектурная платформа Intel x86 и ее 64-разрядные расширения, выпускаемые американскими компаниями Intel и AMD. В этой архитектуре используется сложно кодируемая последовательная система команд, причем владелец этой системы команд фирма Intel не лицензирует ее никому в мире.

При разработке архитектуры "Эльбрус", с целью обеспечении эффективности использования, была поставлена и успешно решена задача обеспечения полной совместимости с архитектурой Intel x86 без повторения ее системы команд. Для достижения этой цели разработана технология скрытой двоичной трансляции программ из кодов x86 в коды архитектуры "Эльбрус".

Упрощенная схема работы динамической системы двоичной трансляции "Эльбрус-3М" представлена на рисунке.

Основными ее компонентами являются:

  • интерпретатор кодов IA-32, который работает при первом исполнении, добавляя средства мониторинга;
  • двоичный транслятор, который перекодирует коды IA-32 в коды микропроцессора "Эльбрус", используя для этого несколько уровней оптимизации;
  • база кодов, обеспечивающая хранение и накопление оптимизированных кодов;
  • система динамической поддержки, которая обслуживает весь процесс.

Для ускорения исполнения оптимизирующая трансляция запускается на свободном процессоре, а хорошо оптимизированные регионы сохраняются в базе кодов и при повторном исполнении той же программы используются без потери времени на их перекомпиляцию и оптимизацию.

Схема обеспечения совместимости с помощью технологии двоичной трансляции.

На базе этой технологии создаются оптимизирующие компиляторы для различных аппаратных платформ, которые обеспечивают распараллеливание программ под разные виды параллелизма: параллелизм операций, векторный параллелизм, параллелизм потоков управления, параллелизм систем с распределенной памятью.

Ключевыми элементами оптимизирующего компилятора являются блоки анализа, оптимизации и генерации параллельного кода. Они обеспечивают глубокий анализ зависимостей как внутри, так и между процедурами, результаты которого используются в оптимизациях и распараллеливании вычислений. В компиляторе реализованы принципиально новые, а также самые современные опубликованные алгоритмы анализа и оптимизаций, многие из которых значительно усовершенствованы. Совершенствование этой технологии позволяет постоянно наращивать производительность вычислительных систем. Оптимизирующий компилятор поддерживает входные языки C и C++, включая GNU-расширения этих языков для более полной совместимости со свободным программным обеспечением, а также Fortran-77 для архитектурных платформ "МЦСТ-R" и "Эльбрус". Наряду с автоматическими средствами распараллеливания поддерживаются расширения OpenMP, а также библиотеки поддержки языков и библиотеки распараллеливания.

Средства распараллеливания адаптированы к многоядерным многопроцессорным гомогенным и гетерогенным системам, а также к многомашинным и кластерным системам. На базе этой технологии, многие элементы которой не имеют аналогов в мире, обеспечивается эффективное и надежное исполнение любых программ, включая операционные системы и приложения, работающих на компьютерах с архитектурой Intel x86. Это достигается за счет использования средств мониторинга, определяющих регионы для оптимизации, многоуровневой оптимизирующей компиляции кодов x86 в коды архитектуры "Эльбрус" и системы динамической поддержки, которая обслуживает весь процесс исполнения. Для ускорения исполнения оптимизирующая трансляция запускается на свободном процессоре, а хорошо оптимизированные регионы сохраняются в базе кодов и при повторном исполнении той же программы используются без потери времени на их перекомпиляцию.

Технология двоичной трансляции постоянно совершенствуется, позволяя охватывать новые аппаратные платформы и повышать эффективность ее работы для уже реализованных архитектур.

Дальнейшее развитие оптимизирующих компиляторов будет опираться на более эффективное использование всех видов параллелизма, предоставляемых аппаратурой. Предполагается доработать систему автоматического распараллеливания на общей памяти с учетом использования нескольких ядер внутри одного микропроцессора, а также с учетом неодинакового времени доступа в память в составе многопроцессорного кластера, работающего на общей памяти. Для ВК, объединяющих несколько серверов в многомашинный комплекс, предстоит доработать систему автоматического распараллеливания, чтобы эффективно поддерживать системы, построенные на базе однородных и разнородных узлов.

Значительные резервы производительности сохраняются и в распараллеливании на уровне операций. По экспертным оценкам логическая скорость процессора может быть увеличена за счет улучшения оптимизаций в 1,5 - 2 раза. Основные резервы производительности лежат в области сокращения потерь на доступе в память за счет использования более интеллектуальных алгоритмов локализации и предварительной подкачки данных. Совершенствование алгоритмов векторизации и областей применения векторизации, в т.ч. для целочисленных задач, также должны привести к росту производительности. Наконец, использование адаптивных алгоритмов оптимизации, в т.ч. динамических, при которых целенаправленно и более агрессивно оптимизируются часто исполняемые, "горячие" участки кода, позволит поднять производительность больших программ.

Развитие технологии двоичной трансляции предполагает:

  • поддержку архитектурных расширений Intel 64 (x86-64), что позволит более широко использовать режим совместимости для 64-разрядных операционных систем и приложений, работающих на современных 64-разрядных процессорах;
  • более полно задействовать многопроцессорность и многоядерность архитектурной платформы, используя свободные ресурсы для проведения оптимизации программ, а также для поддержки параллельного исполнения нескольких потоков управления и многозадачности, присущих исходной архитектурной платформе.

Важнейшей архитектурной особенностью микропроцессоров линии "Эльбрус" является технология защищенного исполнения программ. На базе этих аппаратных средства удается не только реализовать наиболее распространенные языки C и C++ как абсолютно надежные, но и создать системы, защищенные от компьютерных вирусов. Защищенное исполнение программ базируется на специальных методах компиляции и расширениях операционной системы "Эльбрус" и компонентов систем программирования, таких как загрузчик, редактор связей, отладчик.

Сложные программные системы, как правило, конструируются из модулей. Наибольшая гибкость достигается в том случае, когда модули разрабатываются независимо, с использованием хорошо продуманных интерфейсов, и динамически подключаются к системе непосредственно во время исполнения.

Существует два основных способа построения новой программной системы на базе готовых компонентов:

  • использование готовых программ в качестве составных частей новой программы;
  • использование готовых, а также создаваемых в процессе разработки библиотек в качестве строительных блоков новой программной системы.

Различие между двумя подходами достаточно велико как с точки зрения эффективности, так и с точки зрения безопасности.

Использование готовых программ представляется более безопасным, поскольку взаимодействие с такой программой осуществляется только через строго определенный интерфейс обращения к программе, а сама программа работает в отдельном виртуальном пространстве и, таким образом, не подвергается опасности воздействия на нее со стороны нового модуля (вновь создаваемой программы). Этот способ хорош, если модули слабо взаимодействуют между собой. Но он становится крайне неэффективным, если между вновь разрабатываемой программой и готовой программой требуется интенсивный обмен информацией, поскольку такой обмен возможен только с использование средств обмена сообщениями с привлечением для этого операционной системы.

Использование библиотек в качестве строительных блоков для новой программы представляется гораздо более эффективным, поскольку библиотечные модули, их функции и данные помещаются в то же виртуальной пространство, что и сама программа и доступ к данным и функциям осуществляется языковыми средствами (а при исполнении - аппаратными командами) по именам или ссылкам. Однако подключение очередного модуля таит в себе потенциальную опасность. Некорректный или ошибочный код, случайно или преднамеренно внесенный в состав нового модуля, может оказать непредусмотренное воздействие на состояние других модулей, и, следовательно, на программную систему в целом. Поэтому наша задача - создание системы надежного (безопасного, защищенного) взаимодействия различных модулей в едином виртуальном пространстве.

Архитектура "Эльбрус" обеспечивает эффективные средства защищенного исполнения программ на базе аппаратных тегов и контекстной межмодульной защиты данных.

Технология защищенного исполнения программ развивается в направлении поддержания высокой эффективности исполнения программ для широкого классы приложений, разрабатываемых большими коллективами для критических областей применения.

Marker На главную
Line
© 2011 ОАО "ИНЭУМ им. И.С. Брука". Все права защищены. Любое использование материалов допускается только с согласия правообладателя. ineum@ineum.ru