Московский центр СПАРК-технологий известен своей разработкой Elbrus 2k конца 90-х годов, а сегодня системы МЦСТ базируются на двух семействах микропроцессоров: МЦСТ-R, совместимых со SPARC v8 и v9, и «Эльбрус» с архитектурой собственной разработки.

Компьютеры на МЦСТ-R

Отечественные микропроцессоры: Elbrus E2K

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

Михаил Кузьминский

Первые поколения RISC-процессоров МЦСТ-R использовались в системах ПВО С-300 и С-400, что стало возможным благодаря, в частности, их низкому энергопотреблению; например модель R150 производилась по технологии 0,35 мкм, работала на частоте 150 МГц и имела тепловыделение меньше 4 Вт. Следующее поколение — модель R500, ее характеристики: частота 500 МГц, технология 0,13 мкм, потребление менее 1 Вт, конструктив двух- и четырехпроцессорного модуля в виде платы стандарта «Евромеханика» 6U, занимающей один слот Compact PCI (cPCI). Двухъядерная микросхема R-500S реализует концепцию системы на кристалле, в которой интегрированы, в частности, контроллер памяти и интерфейсы PCI, Ethernet, SCSI-2 и др. Энергопотребление данных процессоров, производимых в Юго-Восточной Азии, не превышает 5 Вт. В 2011 году госкомиссии должен быть сдан четырехъядерный процессор R1000 c архитектурой SPARC v9, который работает на частоте 1 ГГц и имеет суперскалярные ядра с пиковой производительностью 2 GFLOPS (на ядро), выполняющие до двух-трех команд за такт.

Диапазон поставляемых вычислительных систем на базе МЦСТ-R достаточно широк — от ноутбуков и одно- и двухпроцессорных компьютеров до встраиваемых многопроцессорных сPCI-систем и мобильных вычислительных комплексов. Все эти системы основаны на R500 и объединены под общим названием «Эльбрус-90микро».

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

Микропроцессоры «Эльбрус»

В этом семействе с VLIW-архитектурой представлены две микросхемы: «Эльбрус» с частотой 300 МГц (технология 0,13 мкм, энергопотребление менее 6 Вт, пиковая производительность 2,4 GFLOPS) и «Эльбрус-С» (технология 90 нм, частота 500 МГц, реализация системы на кристалле). На рис. 1 представлена структура процессорного ядра «Эльбрус-С», а на рис. 2 — всей микросхемы.

Куда идет «Эльбрус»
Рис. 1. Структура процессорного ядра «Эльбрус-С»

 

Куда идет «Эльбрус»
Рис. 2. Структура микросхемы «Эльбрус-С»

 

В команде для «Эльбрус-С» имеется 16 простых команд по 4 байт каждая. Большинство операций выполняются над данными в регистрах. Регистровый файл емкостью 256 80-разрядных регистров имеет 20 портов чтения, 10 портов записи и реализован в виде двух одинаковых банков. Эти регистры применяются для целочисленных операндов и для операндов с плавающей запятой (данные с плавающей запятой могут быть представлены и в 80-разрядном формате). Кроме того, имеется файл регистров-предикатов на 32 предиката.

В «Эльбрус-С» имеется шесть арифметико-логических каналов, каждый из которых использует собственные функциональные исполнительные устройства (ФУ). В каждом канале имеется несколько ФУ, и, хотя на исполнение может выдаваться только одна операция на канал, она может работать с векторами, задействуя сразу несколько ФУ (практически все они являются конвейеризованными). Все шесть каналов имеют по одному целочисленному устройству. В каналах 0, 1, 3, 4 имеется по два ФУ с плавающей запятой: для умножения и для сложения. При выполнении операции типа «умножить и сложить» эти ФУ объединяются в единое целое, выдавая два результата с плавающей запятой двойной точности за такт. Итого в четырех каналах можно получить восемь результатов за такт, что является пределом для современных микропроцесоров — аналогичные результаты показывают Intel Sandy Bridge с AVX-расширением системы команд и IBM Power7.

Функциональное исполнительное устройство с плавающей запятой может работать с упакованными 32-разрядными числами с плавающей запятой как с двухмерными векторами, и в этом случае обеспечивается 16 результатов за такт. Кроме того, в канале 5 имеются ФУ, в которых реализуются деление целочисленное и с плавающей запятой, а также извлечение квадратного корня. Соответствующие результаты с плавающей запятой могут быть получены на каждом втором такте. Таким образом, пиковая производительность «Эльбрус-С» составляет не 4 GFLOPS, а 4,5 GFLOPS.

Целочисленных ФУ в «Эльбрус-С» много: шесть для простых целочисленных операций и еще шесть для операций сдвига и операций над отдельными битами. Допустимы векторные операции с упакованными 32-разрядными целыми, аналогичные соответствующим операциям с плавающей запятой. Все это способствует и высокой целочисленной производительности на такт. А всего имеется 27 ФУ, и, если к этому добавить одновременную отработку вне ФУ арифметико-логических команд перехода, работу с предикатами, асинхронную работу блока подкачки данных (АРВ), инкрементирование счетчика циклов и др., то не вызывает сомнения результат проведенного в МЦСТ сравнительного анализа «Эльбрус-С» с Itanium2: «Эльбрус-С» имеет более высокое число выполняемых за такт команд (IPC), даже по сравнению с Itanium 2/Poulson, который ожидается в 2012 году.

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

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

В иерархии неблокирующейся кэш-памяти представлены кэши команд и данных L1 емкостью по 64 Кбайт и смешанный кэш второго уровня емкостью 2 Мбайт. Кэши данных являются 4-канальными наборно-ассоциативными, а в кэше L2 применяется еще четырехкратное чередование адресов. Время доступа в кэш L1 — три такта, в кэш L2 — 9 тактов. Когерентность памяти по протоколу MOESI (Modified, Owned, Exclusive, Shared, Invalid) поддерживается для кэша L2 (для кэша L1 применяется упрощенный протокол когерентности).

В составе команд имеются операции предварительной выборки данных в L1 и L2. Запись данных в L1 — cквозная, в L2 — обратная. Емкость строки кэша L1 — 32 байт, L2 — 64 байт. Тракты связи с кэшами L1 и L2 имеют ширину 32 байт и работают на частоте ядра, что дает пиковую пропускную способность в 16 Гбайт/с у каждого. За один такт можно выполнить семь 64-разрядных чтений из кэша либо 8-2n 64-разрядных чтений и n записей, где n=1,2. При этом четыре из этих операций чтения могут быть только из кэша L2. Такая организация позволяет достигнуть суммарную пропускную способность кэша в 28 Гбайт/с, что важно для своевременного обеспечения операндами большого набора ФУ.

Емкость буфера быстрой переадресации (TLB) в «Эльбрус-С» — 1024 строки (вдвое больше, чем в «Эльбрус» первого поколения). TLB является одноуровневым, и, кроме стандартных страниц емкостью 4 Кбайт, поддерживает большие страницы — по 4 Мбайт.

Оригинальной особенностью микроархитектуры «Эльбрус» является применение устройства предварительной подкачки буфера (рис. 1). Подобного механизма предварительной подгрузки данных нет сегодня ни в одном из современных процессоров. Обычно применяются аппаратные средства предварительной выборки в кэш, но если бы они работали идеально, без блокировок, то не было бы надобности добавлять в систему команд операции предварительной выборки в кэши разных уровней. Разработчики «Эльбрус» пошли другим путем — они реализовали возможность выполнения асинхронно от основного потока команд еще и вспомогательного, ориентированного исключительно на работу с массивами в циклах. Коды вспомогательной программы подкачки данных могут быть сгенерированы компилятором.

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

Современные процессоры Intel Xeon, AMD Opteron, Power7 используют встроенные контроллеры оперативной памяти — два таких контроллера для DDR2-500 представлены в «Эльбрус-С» (рис. 2). Каждый контроллер обеспечивает канал шириной 8 байт (9 байт с учетом кодов ЕСС), что дает пиковую пропускную способность памяти в 4 Гбайт/с на канал. Для виртуальной памяти применяются 48-разрядные адреса, а для физической — 40-разрядные, что позволяет адресовать 1 Тбайт физической памяти.

Многопроцессорные компьютеры на базе «Эльбрус-С» представляют собой системы ccNUMA, работающие под управлением ОС на основе Linux с поддержкой NUMA-распределения памяти. Кроме того, контроллер памяти допускает ее расслоение (чередование адресов). Топология четырехпроцессорных конфигураций «Эльбруса» аналогична известной, например, для AMD Opteron с тем же числом процессоров. Задержка при обращении к удаленной памяти в четырехпроцессорной системе всего примерно в полтора раза выше, чем к локальной.

Для организации связей между процессорами в четырехпроцессорных системах применяются каналы межпроцессорной связи c низковольтной дифференциальной передачей сигналов LVDS (low-voltage differential signaling). Они имеют ширину 2 байт, работают на частоте 500 МГц и обеспечивают дуплексную передачу типа DDR, поэтому их пропускная способность составляет 2 Гбайт/с в каждом направлении. «Эльбрус-С» имеет три таких LVDS-канала и еще дуплексный LVDS-канал, но с шириной в два раза меньше и соответственно со вдвое меньшей пропускной способностью для канала ввода-вывода.

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

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

Аппаратная поддержка динамической компиляции кодов х86 в команды «Эльбрус» позволяет работать совместно с BIOS и ОС для архитектуры х86, достигая при этом достаточно высокой производительности. Напомним, что Itanium также первоначально имел режим совместимости с х86 благодаря аппаратной эмуляции, но затем x86-совместимые процессоры оказались впереди по производительности, и от этого режима в Itanium отказались.

В таблице приведены данные о средствах защиты от сбоев, реализованных в «Эльбрус-С» и компьютерах на их основе. Для компьютеров «Эльбрус» 3M1 на базе первого поколения процессоров «Эльбрус» среднее время между сбоями (Mean Time Between Failures, MTBF), в соответствии с требованиями заказчиков, составило около 10 тыс. часов, что не очень много и обусловлено поддержкой специализированных внешних интерфейсов, не обладающих высокой надежностью.

 

Таблица. Средства защиты от сбоев в «Эльбрус-С»
Компоненты Тип защиты
Кэш L2, оперативная память ECC
Устройства предварительной подкачки буфера, кэши L1, TLB По четности
Контроллер межпроцессорных каналов, каналы и линки связи с контроллером в/в Циклическая контрольная сумма (CRC)
Интерфейсы ввода-вывода По четности, CRC

 

«Эльбрус-С» содержит 218 млн транзисторов, имеет площадь 141,5 кв. мм и построен по КМОП-технологии с девятью слоями металлизации. Среднее тепловыделение — около 13 Вт, максимальное — 18 Вт. По результатам тестирования, «Эльбрус» первого поколения имел производительность на уровне Pentium4/2 ГГц, а «Эльбрус-С» — в два раза больше.

Почему в последнем процессоре R500 была достигнута частота только 500 МГц? Причина в низком уровне детализации проектирования из-за недостаточного финансирования — лишь регистровый файл был спроектирован с высоким уровнем детализации, а для остальных основных блоков применялись полузаказные микросхемные решения и стандартные библиотеки.

В планах МЦСТ — сдача госкомиссии опытных образцов двухъядерного «Эльбрус-2С+» с четырьмя интегрированными процессорами обработки сигналов (DSP) и с общей производительностью до 28 GFLOPS. В 2012 году будет создан двухъядерный «Эльбрус 2С» для технологии 65 нм и четырехъядерный «Эльбрус 4С» c производительностью 64 GFLOPS. В 2015 году ожидается появление четырехъядерного «Эльбрус 4С» с производительностью 150 GFLOPS, который будет выпускаться по технологии 40 нм, а в 2017 году — по технологии 28 нм, иметь восемь ядер и 256 GFLOPS, при этом разработчики намерены достигнуть производительности 4 GFLOPS/Вт. Изготовление процессоров по технологии 90 нм в МЦСТ надеются наладить на заводе «Микрон» на базе приобретаемых у компании STMicroelectronics технологий.

Вычислительные системы

В вычислительных комплексах на базе «Эльбрус» и МЦСT-R применяются традиционные для x86-систем северный и южный мост — довольно дорогие наборы компонентов микросхем, выпускаемые на базе программируемых интегральных схем FPGA.

Для компьютеров на базе «Эльбрус-С» основная функция северного моста — контроллер памяти, интегрированный в процессор, а южный мост был спроектирован заново и именуется «контроллер периферийных интерфейсов». Он появился в прошлом году и поддерживает интерфейсы PCI, PCI-E x8 1.0, SATA, IDE, USB 2.0, Ethernet, RS-232/RS-485, IEEE-1384, AC'97, шину I2C. Стоимость «Эльбрус-C» первого поколения в партии 10 тыс. штук составляет 70-80 долл., стоимость южного моста — 40-50 долл. Базовая продажная цена для компьютеров на их основе в настольном исполнении составляет 70 тыс. руб., а для систем с сPCI — втрое дороже. Удешевление компьютеров и их компонентов — одна из важных задач МЦСT.

В варианте ОС «Эльбрус» на базе ядра Linux 2.6 имеются среды разработки, компиляторы Си/Си++/Фортран, средства реального времени, СУБД и др. Кроме того, при работе в режиме эмуляции х86 возможно применение операционных систем QNX, FreeBSD и т. д., а также операционных систем Microsoft.

***

«Эльбрус» сегодня — это промышленная разработка, микроархитектура «Эльбрус-С» которой имеет определенные преимущества перед другими микроархитектурами, однако потенциал «Эльбрус» остается нераскрытым, как по причине недостаточной детализации проектирования, так и в связи с отставанием применяемой КМОП-технологии.

Михаил Кузьминский (kus@free.net) – старший научный сотрудник учреждения РАН «Институт органической химии им. Н. Д. Зелинского» (Москва).