Архитектура e2k что такое
Перейти к содержимому

Архитектура e2k что такое

  • автор:

E2K: от истоков до нюансов Российской архитектуры [ч. 1]

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

Эльбрус 2000 — это микропроцессорная архитектура, разработка которой началась в России в 1998 году. Процессоры на основе архитектуры Эльбрус 2000 сейчас используются в высокопроизводительных безотказных серверах и компьютерах, например, в решениях для банков, государственных учреждений и научных центров.

Предисловие

В этой статье (или заметке?) я попробую обьяснить простым и понятным языком в чем «соль» этой архитектуры. Сразу оговорюсь, базовое понимание математики, информатики и принципов работы компьютера или телефона с которого читается статья — обязательна.

Статья разбита на части, пишу в свободное от работы и личных забот время. Эта творчество, скажем, пробник в первую очередь — себя. Если будет положительный фидбэк — то проба пера успешная:3

Процессор, сгенерированный очередной моделью, силамиЭльбрус-8С на сервере ЯХОНТ-УВМ 312.

Историческая справка

Московский центральный научно‑исследовательский институт информатики и автоматизации (МЦСТ, первоначально Московский центр SPARC-технологий) был создан в 1992 году в результате реорганизации Московского научно‑производственного объединения «Электроника». Основной целью создания института было развитие отечественной вычислительной техники и программного обеспечения.

Вольные соображения сеткина изложенное выше.

В свое время СССР добился достаточно серьезных достижений в создании компьютерной техники. Примером этому может служить серия советских суперкомпьютеров «Эльбрус», которые были созданы в Институте точной механики и вычислительной техники (ИТМиВТ) в 1970-1990-х годах прошлого века, это же название носит серия микропроцессоров и систем, созданных на их основе и выпускаемых сегодня ЗАО МЦСТ (Московский центр SPARC-технологий).

При этом история «Эльбруса» достаточно обширна. Работы над первым компьютером с таким названием велись с 1973 по 1978 год в ИТМиВТ им. Лебедева, руководил этими работами Б. С. Бурцев, разработка велась при участии Бориса Бабаяна, который являлся одним из замов главного конструктора. В то время основным заказчиком данной продукции, конечно же, выступали военные.

Первый компьютер «Эльбрус» обладал модульной архитектурой и мог включать в себя от 1 до 10 процессоров на базе схем средней интеграции. Быстродействие данной машины достигало 15 миллионов операций в секунду. Объем оперативной памяти, которая была общей для всех 10 процессоров, составлял до 2 в 20 степени машинных слов или, если применять принятые сейчас обозначения, 64 Мб. Однако самым интересным в «Эльбрусе-1» была именно его архитектура. Созданный в СССР суперкомпьютер стал первой в мире коммерческой ЭВМ, которая применяла суперскалярную архитектуру. Ее массовое применение за рубежом началось только в 90-х годах прошлого века с появлением на рынке доступных процессоров Intel Pentium.

Позднее выяснилось, что подобные разработки существовали еще до «Эльбруса», ими занималась компания IBM, но работы по данным проектам не были завершены и так и не привели к созданию конечного коммерческого продукта. По словам В.С. Бурцева, являвшегося главным конструктором «Эльбруса», советские инженеры старались применять самый передовой опыт как отечественных, так и зарубежных разработчиков. На архитектуру компьютеров «Эльбрус» повлияли не только компьютеры компании Burroughs, но и разработки такой известной фирмы, как Hewlett—Packard, а также опыт разработчиков БЭСМ-6.

После завершения работ над ЭВМ «Эльбрус-2» в ИТМиВТ взялись за разработку ЭВМ на базе принципиально новой процессорной архитектуры. Проект, который был назван достаточно просто – «Эльбрус-3», также значительно опередил аналогичные разработки на Западе. В «Эльбрусе-3» впервые был реализован подход, который Борис Бабаян называет «постсуперскалярным». Именно такой архитектурой в будущем обладали процессоры Intel Itanium, а также чипы компании Transmeta. Стоит отметить, что в СССР работы над данной технологией были начаты в 1986 году, а Intel, Transmeta и НР присупили к реализации работ в этом направлении лишь в середине 1990-х годов.

К сожалению, «Эльбрус-3» так никогда и не был запущен в серийное производство. Его единственный работающий экземпляр был построен в 1994 году, но в это время он был никому не нужен. Логическим продолжением работ над данным компьютером стало появление процессора «Эльбрус-2000», известного также как Е2К. У российской компании имелись большие планы по серийному производству данного процессора, который должен был пойти в серию одновременно или даже еще раньше, чем Itanium. Но из-за отсутствия необходимого объема инвестиций, все данные планы не были реализованы и так и остались на бумаге.

Архитектура Эльбрус 2000 была создана в России в начале 2000-х годов. Проект разработки новой архитектуры был запущен в 1999 году в рамках программы «Эльбрус» Министерства промышленности, науки и технологий Российской Федерации.

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

Однако основным достижением программы стала архитектура Эльбрус 2000, которая была представлена в 2002 году, в основе которой лежит подход VLIW. Эта архитектура была разработана с учетом современных требований к производительности и энергопотреблению, а также с учетом возможности выполнения параллельных вычислений.

VLIW больше похоже на RISC, нежели на CISC, т.к., хоть команды и шире намного, чем даже в CISC, но у VLIW ширина команд фиксирована. К слову, Эльбрус – не единственный в мире, кто имел VLIW подход. Был ещё TILE64, MAJC, RAW, Transmeta, TMS320 и так далее.

Архитектура Эльбрус 2000 была успешно протестирована на различных задачах, включая математические расчеты, обработку изображений и видео, а также на задачах, связанных с обработкой больших объемов данных.

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

Основные особенности

Начнем с основных особенностей архитектуры Эльбрус 2000:

  1. Многопоточность — каждое ядро процессора может обрабатывать несколько потоков одновременно, что позволяет значительно увеличить производительность системы.
  2. Симметричная мультипроцессорность — архитектура поддерживает одновременную работу нескольких процессоров, что также способствует арифметическому увеличению производительности.
  3. Использование эффективных алгоритмов обработки данных, таких как алгоритмы сжатия данных и алгоритмы сортировки, параллельных вычислений, что позволяет ускорить выполнение задач. Например, определение ацикличных участков с дальнейшим разделением на суб‑процессинг, или же использование эффективных алгоритмов предварительного чтения данных из памяти, что снижает задержку при исполнии кода.
  4. Наличие защиты от ошибок и сбоев, что обеспечивает высокую надежность работы системы. А так же особый режим выполнения и матрицы доступа к памяти, который аппаратно исключает вмешательство в соседние страницы памяти ПО. (Вспомним со слезами о Meltdown и Spectra на x86-архитектуре и потере в среднем 15% производительности)
  5. Архитектура Эльбрус 2000 поддерживает ВСЕ операционные системы Linux и Windows, так как спокойно кушает 64-битные инструкции, а так же спокойно может переваривать ассемблер (двоичные инструкции процессора) Intel или AMD64 платформ. Lintel — более производительное решение, даже чем от Купертиновских конкурентов (Apple со своей Rosetta любого поколения.)

Архитектура Эльбрус 2000 имеет ряд преимуществ перед другими архитектурами, такими как высокая производительность и надежность, но также имеет и недостатки, такие как ограниченная поддержка со стороны производителей программного обеспечения и высокая стоимость производства, а также (на момент написания) отсутствие локализации производства на территории РФ.

Давайте начнем разбираться с описанными преимуществами и почему они таковыми являются.

Мультипоточность

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

https://www.altlinux.org/Images.www.altlinux.org/9/97/E2k_internals.web.svg

Процессоры Эльбрус поддерживают два типа мультипоточности: аппаратную и программную.

Аппаратная мультипоточность

Аппаратная мультипоточность в процессорах Эльбрус реализуется с помощью технологии Hyper‑Threading. Она позволяет процессору выполнять два потока инструкций на каждом ядре, используя различные ресурсы процессора, такие как регистры и функциональные блоки.

Hyper-Threading наглядно

Но тут я остановлюсь подробнее, так как с каждым годом всё больше и больше транзисторов задействуется в процессорах, но производителям постоянно приходится идти на ухищрения для роста производительности, т.к. больше параллелизма им со старым подходом не выжать. Поэтому в 2002-м году свет увидели процессоры Intel Pentium 4, которые первыми на потребительском рынке получили поддержку виртуальной многоядерности или многопоточности, которую назвали Intel Hyper‑Threading. Суть этой технологии в том, что ядро физически у вас одно, но система его видит как 2 разных ядра, и ваши программы работают с одним ядром так, словно их 2.

И, если ранее программы не могли задействовать все вычислительные возможности каждого из ядер процессора, то теперь они на каждом ядре старались задействовать больше ALU (до 2 раз больше).

2 виртуальных ядра делят между собой один и тот же набор арифметико‑логических устройств (АЛУ), один и тот же кэш, но разные регистры, тогда как в случае с двумя обычными ядрами у вас разделены для каждого из ядер и АЛУ, и кэш, и все регистры. За счёт того, что на АЛУ приходится больше параллельных команд (8 вместо 4 в случае с современным суперскалярным подходом CISC процессоров), у вас удаётся загрузить одно ядро процессора в большей мере, и таким образом вы добиваетесь роста производительности в расчёте на каждое из ядер. Но по итогу, да, логические ядро, как правило, медленнее, чем физическое.

Программная мультипоточность

Программная мультипоточность в процессорах Эльбрус реализуется с помощью технологии OpenMP. Она позволяет разделять задачи на несколько потоков, которые выполняются параллельно на разных ядрах процессора. Это позволяет ускорить выполнение задач, которые могут быть разделены на независимые подзадачи.

Мультипоточность в процессорах Эльбрус позволяет увеличить производительность и эффективность работы процессора. Она позволяет выполнять несколько задач одновременно, что уменьшает время выполнения задач и увеличивает общую производительность системы.

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

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

Симметричная мультипроцессорность

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

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

Архитектура Эльбрус 2000 представляет собой симметричную мультипроцессорную систему, которая имеет ряд преимуществ перед другими архитектурами.

  1. Высокая производительность. Симметричная мультипроцессорность Эльбрус 2000 позволяет использовать несколько процессоров одновременно, что повышает производительность системы. Каждый процессор может выполнять свои задачи независимо друг от друга, что увеличивает скорость обработки данных и снижает время ожидания.
  2. Гибкость системы Архитектура Эльбрус 2000 позволяет легко добавлять или удалять процессоры в системе в зависимости от потребностей пользователя. Это позволяет гибко настраивать систему под конкретные задачи и обеспечивает масштабируемость.
  3. Надежность. Симметричная мультипроцессорность Эльбрус 2000 обеспечивает высокую надежность системы. Если один из процессоров выходит из строя, остальные процессоры могут продолжать работу без проблем. Это позволяет избежать сбоев в работе системы и обеспечивает бесперебойную работу.
  4. Энергоэффективность. Архитектура Эльбрус 2000 потребляет меньше энергии, чем другие архитектуры. Это достигается за счет использования более эффективных алгоритмов обработки данных и оптимизации работы процессоров.
  5. Высокая безопасность. Симметричная мультипроцессорность Эльбрус 2000 обеспечивает высокую безопасность системы. Каждый процессор имеет свой собственный набор инструкций и операционную систему, что делает невозможным взлом системы через один процессор.

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

Алгоритмы обработки данных

Prefetching и аппаратная асинхронная подгрузка данных (APB)

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

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

В Эльбрус 2000 предусмотрено несколько способов предварительного чтения данных.

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

Еще один способ предварительного чтения данных — это использование аппаратной поддержки предварительного чтения в кэше процессора, отдельный параллельно работающий модуль для подкачки данных, APB (Asynchronous Prefetch Buffer). В Эльбрус 2000 кэш оборудован специальным механизмом, который автоматически загружает данные из памяти в кэш заранее, если он обнаруживает, что эти данные скоро будут использоваться. Это происходит благодаря анализу обращений к данным и прогнозированию будущих обращений.

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

То есть Эльбрус чётко знает, с какими данными ему предстоит работать. Это ещё до того, как он с этими данными начал работу. Работает ли он с данными или же с указателем на данные, заранее известно из тэга, которым помечаются данные в регистрах. И эта информация также позволяет добиться более высокой защищённости. Есть ещё интересный момент с работой памяти. При работе с любым процессором у вас при выполнении цикла может процессор стопориться на большое количество тактов из‑за ожидания подгрузки данных для обработки.

Single Instruction Multiple Data

Архитектура Эльбрус 2000 использует специальные инструкции SIMD (Single Instruction Multiple Data), которые позволяют выполнять одну операцию над несколькими данными одновременно. Это особенно полезно в задачах, связанных с обработкой графики, звука и видео.SIMD‑инструкции в Эльбрус 2000 реализуются через специальные регистры, называемые векторными регистрами. Каждый векторный регистр может содержать несколько элементов данных одного типа, например, 16 целых чисел или 8 чисел с плавающей точкой.Для выполнения операций над векторными регистрами в Эльбрус 2000 используются специальные команды, которые могут выполнять операции над всеми элементами векторного регистра одновременно. Например, команда ассемблера «ADDV» складывает все элементы двух векторных регистров и сохраняет результат в третий векторный регистр. (Я прям чувствую как начали закипать мозги:D)

SIMD‑инструкции в Эльбрус 2000 могут быть использованы в различных областях, например:

  • Обработка графики и видео: SIMD‑инструкции позволяют быстро применять эффекты к видео и изображениям, например, изменять яркость и контрастность, применять фильтры и т. д.
  • Обработка звука: SIMD‑инструкции могут быть использованы для обработки аудиосигналов, например, для уменьшения шума или изменения тональности.
  • Математические вычисления: SIMD‑инструкции позволяют быстро выполнять математические операции над большим количеством данных, например, для расчета физических моделей или статистических анализов.

Использование SIMD‑инструкций позволяет значительно ускорить выполнение задач, связанных с обработкой больших объемов данных. В Эльбрус 2000 SIMD‑инструкции реализованы эффективно и позволяют достичь высокой производительности при работе с векторными данными.

Также в архитектуре Эльбрус 2000 используется кэш‑память, которая позволяет ускорить доступ к данным. Кэш‑память хранит наиболее часто используемые данные, что позволяет уменьшить время доступа к ним. Смешно? Тогда вспомните, что огромное число процессоров до сих пор не умеют в L3-cache.

В целом, архитектура Эльбрус 2000 имеет ряд особенностей, которые позволяют эффективно обрабатывать данные. Применение различных алгоритмов и использование SIMD инструкций и кэш‑памяти позволяет ускорить обработку данных и повысить производительность системы.

Текстовый процессинг

Архитектура Эльбрус 2000 предоставляет несколько алгоритмов для обработки текстовых данных, которые могут быть использованы в различных приложениях.

Один из таких алгоритмов — это алгоритм сжатия данных LZO (Lempel‑Ziv‑Oberhumer). Он используется для сжатия текстовых данных и может быть применен для уменьшения размера файлов или передачи данных по сети. Алгоритм LZO работает на основе словарного кодирования, когда повторяющиеся последовательности символов заменяются одним кодом. В Эльбрус 2000 реализована оптимизированная версия алгоритма LZO, которая позволяет достигать высокой скорости сжатия и декомпрессии.

Еще один алгоритм для обработки текстовых данных — это алгоритм поиска подстроки в строке. Он может использоваться для поиска слов или фраз в тексте, а также для обработки запросов в поисковых системах. В Эльбрус 2000 реализована оптимизированная версия алгоритма Бойера‑Мура, который работает на основе сравнения символов справа налево.

Также в Эльбрус 2000 реализованы алгоритмы сортировки данных, которые могут быть использованы для обработки текстовых данных. Например, алгоритм быстрой сортировки (QuickSort) может быть использован для сортировки больших массивов строк. В Эльбрус 2000 реализована оптимизированная версия алгоритма QuickSort, которая работает на основе разделения массива на подмассивы и их параллельной сортировки.

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

Источники

  1. PDF: Руководство по эффективному программированию на платформе «Эльбрус»
  2. PDF: Кремнивые секреты
  3. Полезное: Шпаргалка по Assembler x86
  4. Видео: Архитектура процессора Эльбрус 2000 / Дмитрий Завалишин (Digital Zone)
  5. История: История компьютеров Эльбрус

Архитектура «Эльбрус»

Elbrus arch.jpg

Оригинальная 64-битная Little Endian VLIW; также известна как «Эльбрус-2000» (сокращённо e2k).

Не путать со SPARC и иными RISC, а также x86 (CISC).

Архитектура ядра Эльбрус

Версии

Микропроцессоры «Эльбрус» различаются версиями микроархитектуры и системы команд; на март 2022 года известны следующие:

  • v2: «Эльбрус-2С+», «Эльбрус-2СМ» (устарела с лета 2018 [1] )
  • v3: «Эльбрус-4С» (уходящая) e4c, он же e2s
  • v4: «Эльбрус-8С», «Эльбрус-1С+» (предыдущая серийная) e8c, он же p1; и e1cp, он же e1c+ или p2
  • v5: «Эльбрус-8СВ» (серийная, расширенные векторные вычисления) e8c2, он же p9
  • v6: «Эльбрус-16С», «Эльбрус-12С», «Эльбрус-2С3» (инженерные образцы, аппаратнаявиртуализация) e16c, e12c, e2c3
  • v7: «Эльбрус-32C», «Эльбрус-4C3» (перспективная) e32c, e4c3

Безопасность

Одной из ключевых особенностей e2k в любом режиме является наличие трёх аппаратных стеков — с одной стороны это исключает срыв стека, с другой — добавляет проблем при переносе ПО, которое пытается с предположительно единственным стеком крутить свои «штучки» (начиная с JIT).

В защищённом режиме добавляется тегирование памяти, исключая ещё и переполнение массива.

Совместимость

В процессе портирования Альта была отмечена отличная практическая совместимость процессоров четвёртого поколения с бинарным кодом e2kv3, включая ядро, видеоподсистему и даже бинарный транслятор; официально она не гарантируется, хотя неофициально и подтверждается.

Также наблюдается хорошая совместимость v5-машин с кодом v4+ и достаточная как минимум для rescue-образа работоспособность кода v3+ на v6.

Производительность

При сборке под e2k для производительности и совместимости следует применять компилятор, настроенный под конкретную версию архитектуры (начиная с lcc 1.23 — возможна настройка и под конкретный процессор).

При этом разница по 7za b , собранным под v3 и v4, на v4 составила у нас порядка процента.

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

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

Ссылки

  • Руководство по эффективному программированию на платформе «Эльбрус»
    • Система команд микропроцессора «Эльбрус»
    • Основные принципы архитектуры Е2К (2001)

    Опыт портирования ядра C3D Labs на платформу Эльбрус

    В конце 2021 года мы инициировали процесс портирования геометрического ядра C3D Labs на отечественную платформу «Эльбрус». В этой заметке мы хотим рассказать об основных этапах этого процесса.

    «Эльбрус» — это программно-аппаратная платформа, которая разрабатывается компанией МЦСТ. Процессоры данной модели используют набор команд типа RISC (Reduced Instruction Set Computer) и имеют собственную архитектуру E2K. Последняя относится к типу VLIW, то есть имеет длинную машинную команду.

    Стоит отметить, что большинство современных процессоров основано на наборе команд типа CISC (Complicated Instruction Set Computer) и имеет архитектуры x86_64 или arm. Из сказанного выше следует, что архитектура E2K отличается рядом особенностей по сравнению с другими архитектурами, что создает определённые сложности при портировании. Поэтому ниже мы перечислим некоторые из этих сложностей.

    Техника кросс-компиляции

    Впервые мы столкнулись с техникой так называемой кросс-компиляции в связи с отсутствием у нас собственного компьютера на базе «Эльбрус». В результате возникло требование к собираемой на базе «Эльбрус Линукс» с архитектурой x86_64 библиотеки ядра: она должна работать на машинах с архитектурой E2K. Поставленную задачу можно было решить путем использования кросс-компиляции: на машине-хосте с архитектурой x86_64 устанавливается окружение целевой машины с архитектурой E2K, после чего с помощью специального кросс-компилятора собирается библиотека с системными зависимостями целевой архитектуры. С задачей мы справились и теперь планируем использовать полученные навыки при сборке ядра на других дистрибутивах Linux.

    Опыт портирования ядра C3D Labs на платформу Эльбрус, фото 1

    Собственный компилятор

    «Эльбрус» использует собственный системный компилятор LCC. Несмотря на уверения разработчиков платформы, что командный интерфейс компилятора совпадает с интерфейсом GCC, полная совместимость все равно отсутствует. Кроме того, LCC не может «угнаться» за поддержкой новых стандартов C++ и поддерживает только c++14. Еще одна проблема заключается в том, что нет четкого описания поддерживаемых особенностей. Например, по заданной версии GCC можно определить, какие особенности языка поддерживаются, но в документации (руководстве по эффективному программированию на платформе «Эльбрус») указана совместимость с GCC лишь для старой версии компилятора, а своего полного списка «фич» у LCC нет. Нельзя не отметить и ограничения (описанные в документации) при использовании прагм или встроенных команд GCC.

    Отдельно обратим внимание на проблему многопоточности, связанную с неполной поддержкой платформой E2K стандарта OpenMP. Так как компилятор LCC понимает далеко не все его директивы, отдельные участки кода пришлось менять для обеспечения корректной компиляции. Например, после num_threads не может идти вычисляемое выражение. Поэтому блоки типа

    #pragma omp parallel num_threads ((int)viewCount) if (useParallel) 

    пришлось заменить на

    int vc = (int)viewCount; #pragma omp parallel num_threads (vc) if (useParallel) 

    Кроме того, к примеру, не поддерживается директива #pragma omp for и т.д.

    Поведение компилятора значительно отличается от GCC, причем логика работы не всегда понятна. В логе компиляции можно увидеть неожиданные уведомления, которые не возникают в других компиляторах. При линковке мы также получали необъяснимые ошибки. Одна из них, например, заключалась в «ругани» на отсутствие символов, которые в принципе не присутствовали и не должны были присутствовать в коде. В конечном итоге, после необходимой адаптации исходных текстов нам удалось собрать и запустить библиотеку C3D на «Эльбрус Линукс» с архитектурой E2K.

    Опыт портирования ядра C3D Labs на платформу Эльбрус, фото 2

    C3D умеет работать на Эльбрусе

    Работоспособность ядра под «Эльбрус»

    Следующий этап, к которому мы приступили, — проверка элементарной работоспособности ядра. Для начала нам было необходимо обеспечить работу базовой функциональности по построению геометрических объектов. И здесь как раз проявились основные сложности, связанные с особенностями архитектуры E2K. В качестве примера можно привести организацию работы с памятью: по всей видимости, на уровне низкоуровневых операций очень много нюансов, приводящих к некорректному поведению библиотеки. Работы в этом направлении, а также в части достижения требуемой производительности еще продолжаются.

    Шансы E2K на реализацию выросли?

    24 ноября группа компаний “Эльбрус” провела пресс-конференцию, в которой участвовали также партнеры этого холдинга, в том числе российское представительство Sun Microsystems, американская корпорация Harris и инвестиционная компания Fleming UCB. Мероприятие было посвящено подведению итогов уходящего года и обсуждению перспектив одной из важнейших разработок “Эльбруса” — микропроцессора E2K.

    Б. А. Бабаян: “По числу выполняемых за один такт команд наш процессор опережает не только Itanium, но и McKinley”

    Среди достижений года руководитель холдинга “Эльбрус” профессор Б. А. Бабаян назвал успешную разработку (выполненную по заказу Правительства РФ) микропроцессора, совместимого с архитектурой SPARC V8, а также набора микросхем для него и создание на базе этого процессора оригинальной рабочей станции. Входящая в холдинг компания “Телеинтерком” начала организацию в Московской области сети радиорелейных линий на базе оборудования Harris. В сотрудничестве с Sun Microsystems выполнен ряд проектов в сфере системной интеграции, в том числе для таких клиентов, как ЦБ РФ, российское бюро Интерпола, Тюменьтрансгаз, Мострансгаз, Федеральная служба воздушного транспорта.

    Но наибольший интерес участников пресс-конференции вызвало обсуждение судьбы микропроцессора E2K, пока существующего только в виде модели на языке Verilog. По утверждению разработчиков, архитектура E2K обеспечивает высокую степень параллелизма — за один такт процессор способен выполнять более 20 машинных команд (для сравнения: у ожидаемого в будущем году процессора Intel Itanium этот параметр составляет 6, а у процессора следующего поколения, McKinley — 12 команд за такт). Особенности архитектуры позволят E2K в несколько раз опередить Itanium и по скорости целочисленных и вещественных вычислений. При этом благодаря технологии двоичной компиляции E2K совместим с кодами Intel x86 без потерь производительности, характерных для обычных методов эмуляции. Технической стороне разработки этого микропроцессора была посвящена пресс-конференция, состоявшаяся в начале 1999 г. (подробнее см. kis.pcweek.ru/ year1999/N8/CP1251/ News/chapt14.htm); на ней отмечалось, что для создания промышленного образца E2K требуется около трех лет (за это время планируется разработать также соответствующий набор микросхем окружения) и финансирование в размере 40 млн. долл. В течение этого года “Эльбрус” сотрудничал с компанией Fleming UCB, представляющей в России британский инвестиционный банк Robert Fleming & Co. Специалисты из Fleming UCB определили необходимую для реализации проекта E2K сумму в 60 млн. долл.; на сегодня источники финансирования не найдены. Однако сам факт, что известный банк, имеющий представительства в 48 странах, счел проект E2K перспективным и взялся за привлечение инвестиций для его реализации, выглядит обнадеживающе (между банком и “Эльбрусом” заключен контракт, по которому Fleming UCB станет совладельцем прав на готовый процессор). Уже в конце текущего года Fleming UCB планирует начать переговоры с рядом потенциальных инвесторов. Предполагается, что проект E2K будет финансироваться несколькими компаниями, причем одна из них получит статус стратегического инвестора.

    “Эльбрус”: (095) 248-6161; www.elbrus.ru.

    Эдуард Пройдаков

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *