Сегодня, когда продолжается экспансия процессоров x86-архитектуры как основы для серверов и рабочих станций, разработка новых RISC-процессоров может кому-то казаться занятием ненужным. Однако мировыми лидерами производительности по-прежнему являются представители лагеря RISC — процессоры IBM Power6, которые значительно опережают современные процессоры архитектуры х86-64/ЕМ64Т, даже по тактовой частоте. Достоинства же архитектуры х86-64 обусловлены массовостью производства соответствующих процессоров, совершенствование которых сдерживается требованиями совместимости со старой архитектурой х86.
Однако факт остается фактом: помимо IBM, в сегменте высокопроизводительных RISC-процессоров активность сохраняют лишь Sun Microsystems да Fujitsu, где разрабатывают SPARC-cовместимые процессоры. В этом году компания Fujitsu предложила рынку высокопроизводительных вычислений новую разработку — SPARC64 VI. (Не упомянутый нами Intel Itanium 2 формально относится к архитектуре «пост-RISC».)
И Itanium 2, и Power5/6, в отличие от процессоров архитектуры х86-64, применяются при построении мощных многопроцессорных серверов с общим полем оперативной памяти. Именно для таких компьютеров и предназначены процессоры SPARC64 VI. Если число процессоров не превышает восьми, конкуренцию им могут составить серверы на базе х86-64.
«Юпитер» в действии
SPARC64 VI — суперскалярный процессор с внеочередным выполнением команд, обладающий кэшем большой емкости и имеющий ряд аппаратных усовершенствований, способствующих отказоустойчивости. Он включает два процессорных ядра, совместно использующих общий кэш второго уровня емкостью 6 Мбайт, причем каждое ядро, в свою очередь, имеет аппаратную поддержку многопоточной обработки — одновременно до двух нитей. Если сравнить емкости внешней кэш-памяти, то в Power и Itanium 2 она гораздо выше, а в процессорах архитектуры х86-64 — гораздо ниже (понятно, что большой кэш повышает стоимость процессора).
Ширина тракта выборки из кэша второго уровня равна 32 байт, записи из кэша первого уровня в кэш второго уровня — 16 байт. Кэш второго уровня использует технологию обратной записи и работает с длинными строками — 256 байт. В составе функционального блока SXU имеются буферы для пересылки данных в/из оперативной памяти. Большая длина строки кэша второго уровня способствует более эффективной спекулятивной предварительной выборке в кэш второго уровня; при этом кэш данных первого уровня не блокируется, если число промахов в нем не превышает 16.
SXU обеспечивает также интерфейс системной шины Jupiter. В этой шине, как утверждается, использован опыт Fujitsu по разработкам мэйнфреймов. Если в многопроцессорных серверах на базе Intel x86 для обеспечения когерентности кэша используется широковещательный протокол MESI с четырьмя состояниями, а в усовершенствованных многопроцессорных системах (например, с AMD Opteron) — имеющий на одно состояние больше протокол MOESI, то в Jupiter реализован новый протокол MOWESI, имеющий уже шесть состояний. При этом в некоторых ситуациях число требуемых транзакций шины существенно уменьшается. На шине может осуществляться расщепленная обработка транзакций — до 32 запросов на чтение и 16 запросов на запись. Все это способствует высокой масштабируемости многопроцессорных систем на базе SPARC64 VI.
Кэши первого уровня находятся в другом блоке процессора — SU. Кэши команд и данных первого уровня имеют емкости по 128 Кбайт (вдвое больше, чем, к примеру, в Opteron) с длиной строки 64 байт. Здесь же расположены буферы быстрой переадресации TLB.
Устройство управления командами IU предсказывает путь выполнения потока команд, выбирает из него команды, распределяет в соответствующие накопители команд (Reservation Station, RS), а затем диспетчеризирует команды в нужные исполнительные конвейеры. Что такое RS, хорошо известно еще по микроархитектуре Pentium Pro, однако впервые этот архитектурный элемент разработан полвека назад, еще в IBM 360/91. Всего в IU имеется шесть накопителей команд: два — для команд переходов и команд загрузки регистров/записи в память, два — для целочисленных арифметических устройств и два — для операций с плавающей запятой и графического расширения команд VIS. Когда для команды в накопители оказываются доступными все операнды, она планируется на выполнение.
Кроме того, IU cодержит большой буфер предыстории переходов — для динамического предсказания переходов, что, как полагают разработчики, позволяет успешно предсказывать пути выполнения команд в больших программных системах.
Главный конвейер SPARC64 VI имеет длину всего 11 стадий (в предположении однотактного времени выполнения команды в исполнительном блоке EU). Это меньше, чем у Power6 (15 стадий). Лишь в Itanium 2 Montecito стадий еще меньше — 9. Однако при этом в SPARC64 VI достигли частоты 2,4 ГГц, и это даже применяя не самую на сегодняшний день совершенную 90-нанометровую КМОП-технологию. Из этих 11 стадий четыре приходятся на работу блока IU, две — на стадии выдачи команд на выполнение, четыре — на стадии выполнения и одна — на стадию завершения команд.
EU, кроме файлов регистров, включает два целочисленных конвейера, два конвейера с плавающей запятой и два сумматора для расчета адресов в командах загрузки регистров или записи в оперативную память. Каждый из конвейеров с плавающей запятой умеет выполнять команды типа «умножить и сложить», поэтому, как и все высокопроизводительные процессоры последнего поколения, SPARC64 VI выдает четыре результата с плавающей запятой за такт.
Для линии 64-разрядных SPARC-совместимых процессоров от Fujitsu традиционны замечательные характеристики с точки зрения обеспечения отказоустойчивости. Благодаря широкому использованию кодов ECC, контроля четности и дублирования все одноразрядные ошибки кэша удается автоматически корректировать. В ядрах все пути и большинство регистров также имеют контроль четности. Наиболее продвинутым свойством следует считать возможность аппаратного повторения команды при сбое и поддержку возможности повторения «сбойнувшей» команды программным обеспечением. В процессоре осуществляется изоляция ошибки с целью обеспечения возможности восстановления при сбое за счет программ. Все сбои делятся на немаскируемые и маскируемые; последние могут обрабатываться программно. Подобные возможности известны еще по мэйнфреймам IBM и ЕС ЭВМ, но теперь они успешно реализованы на уровне процессора.
Каждое из двух ядер SPARC64 VI может выполнять по две нити; соответствующий подход в Fujitsu называют Vertical Multi Thread (VMT) — вертикальной многопоточной обработкой. При этом в любой момент времени ядро выполняет одну нить, а программное обеспечение отвечает за параллельность выполнения нитей за счет разделения времени. Имеется несколько экземпляров программно доступных ресурсов (регистров, счетчиков команд и т. д.), что обеспечивает быстрое переключение с нити на нить. Другие ресурсы ядра (например, TLB) разделяются нитями одного ядра.
Преимущества SPARC64 VI связаны с отказоустойчивостью, хорошей масштабируемостью SMP-систем и эффективностью работы с большими массивами данных (по сравнению с SPARC64 V в них появилась возможность работы со страницами памяти емкостью до 256 Мбайт). Данные преимущества были реализованы в серверах серии М, базирующихся на этих процессорах. Над подобными серверами работали и в Fujitsu, и в Sun Microsystems. Кроме Sun, поставки в Россию осуществляет также Fujitsu Siemens Computers.
Межсоединение номер один
Enterprise Server M4000/M5000/M8000/M9000 имеют SMP-архитектуру на базе коммутаторов, причем в старших моделях M8000 и M9000 предусмотрено двухуровневое межсоединение. Нижний уровень относится к системным платам СMU, содержащим по четыре процессора вместе с оперативной памятью, а верхний — к уровню всей системы.
Такой подход для многопроцессорных серверов масштаба предприятия достаточно традиционен, но результат был достигнут выдающийся: пропускная способность межсоединения достигла рекордного результата в 737 Гбайт/с (эта величина — одна из определяющих для высокой масштабируемости серверов).
Каждый процессор на CMU соединен с двумя микросхемами системных контроллеров SC. На плату CMU монтируются модули памяти МЕМ и процессорные модули. МЕМ, в свою очередь, содержат устройство управления оперативной памятью MAC и собственно модули DIMM.
SC, аналог серверного моста в х86-совместимых серверах «стандартной архитектуры», реализует также аппаратную поддержку парционирования серверов. В оперативной памяти для повышения надежности может использоваться зеркалирование; тогда восемь модулей DIMM разбиваются на пару дублирующих друг друга групп по четыре модуля. В дополнение к кодам ЕСС и технологии, аналогичной Сhipkill, применяется и другая известная техника — периодическое тестирование оперативной памяти (patrolling). Модули DIMM имеют емкость до 4 Гбайт, соответственно максимальная емкость оперативной памяти М4000 — 128 Гбайт, М5000 — 256 Гбайт.
В старших моделях М8000/М9000 микросхемы SC cоединены с коммутаторами 8х8, которые, в свою очередь, связаны между собой. Таким образом, оперативная память дифференцируется на локальную («ближнюю» к процессору) и удаленную, доступ к которой осуществляется через коммутаторы. Время доступа в локальную память составляет 258 нс, в удаленную оперативную память — 498 нс. Такое не слишком большое замедление и позволяет разработчикам говорить об архитектуре SMP, а не ccNUMA.
Самые мощные серверы, М9000, могут содержать до 64 процессоров (128 ядер), 2 Тбайт оперативной памяти, до 128 слотов PCI-E. Все это оборудование может быть разбито на 24 домена.
Средства ввода/вывода в младших и старших моделях серверов имеют конструктивные различия. Важным для понимания является то, что доступ к подсистеме ввода/вывода осуществляется через SC и межсоединение. В простейшем случае серверов М4000 к SC могут непосредственно подсоединяться мосты PCI-E. Cерверы М-серии первыми в мире среди компьютеров данного класса были сконструированы в расчете на применение РСI-E. Соответствующие адаптеры обеспечивают поддержку всех распространенных средств ввода/вывода, вплоть до Infiniband 4x DDR.
Производительность
О масштабируемости серверов M-серии можно судить по тестам SPECint2006_rate. Так, бывший флагман семейства серверов Sun — E25K, содержащий 72 процессора UltraSPARC (144 ядра), достигает на этих тестах 1230 единиц против 1294 для М9000 с 64 процессорами (128 ядер); впереди лишь HP Superdome c более мощными Itanium 2/Montecito — 1650 единиц при том же числе процессоров и ядер. Серверы М8000 и Fujitsu Primequest 540 с теми же процессорами Itanium 2 при равном числе процессоров — по 16 — дают практически одинаковый результат — 359 и 352 соответственно.
Серверам М-серии удалось достигнуть ряда рекордных показателей производительности — на тестах SPECompL, двухуровневых тестах SAP SD при числе процессоров не больше 16 (по числу поддерживаемых пользователей эти серверы уступают только IBM p5-570 с восемью двухъядерными процессорами Power6). На тестах Linpack HPC сервер M9000 c 64 процессорами достиг производительности свыше 1 TFLOPS.
Учитывая закрепленный за Jupiter вплоть до 2010 года статус ведущей шины для серверов Sun, а также планируемое развитие процессоров SPARC64 в 2008 году, можно предположить, что серверы M-серии будут оставаться в лидерах производительности и в ближайшие годы.