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

Первый серийный микропроцессор Intel 4004 появился на свет в 1971 году. Он имел длину слова всего 4 бита, адресная шина для данных тоже была четырехбитной (отсюда — и индекс 4004), а адресная шина команд путем мультиплексирования увеличивалась до 12 битов. В микропроцессоре насчитывалось 2300 транзисторов, и на таковой частоте 108 кГц Intel 4004 был способен выполнять 60 тыс. операций в секунду.

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

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

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

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

Специализированные ускорители

Раньше других для преодоления врожденных ограничений одноядерной фон-неймановской архитектуры стали использовать ускорители и сопроцессоры. Во времена процессора Intel 8086 для выполнения операций с плавающей точкой применяли сопроцессор (FPP) Intel 8087. Затем в паре с Intel 80286 работал 80287-й, а в последующих моделях совместимых процессоров FPP стали упаковывать в общий кристалл. Сейчас сопроцессоры-ускорители чаще всего используются во встроенных системах для ускоренного выполнения какого-то определенного набора функций с меньшим энергопотреблением. Этот набор может быть специфическим для конкретного типа устройства, а потому следует уточнить, что в данном случае речь не идет об универсальных компьютерах.

Одно из наиболее интересных решений, предназначенных для создания сопроцессоров, предлагает английская стартапная компания Critical Blue. Ее средство автоматизированного проектирования Cascade позволяет синтезировать сопроцессор, который оптимизирован для выполнения определенного фрагмента кода, выделенного из программы на языке Cи или C++. Обычно эти языки используются для программирования встроенных процессоров. Уникальность средства CAD Cascade заключается в том, что оно генерирует описание архитектуры для нужного сопроцессора на языке регистровой логики RTL (Register Transfer Language). Далее на его основании синтезируется небольшой (насчитывающий от 20 до 100 тыс. транзисторов) сопроцессор, который потом интегрируется с универсальным процессором.

Компания Critical Blue входит в сообщество Power.org, и синтезируемые сопроцессоры могут работать совместно с процессором-«маткой» IBM Power. Хотя такое решение пока применимо лишь для создания мобильных и подобных им устройств с немодифицируемыми встроенными программами, оно интересно тем, что возвращает в 60-70-е годы, когда проводились исследования по синтезу аппаратуры на основе ее формального описания. В силу технологической слабости плодотворные, по сути, идеи синтеза были обречены на провал. Стоит вспомнить работы по синтезу цифровых автоматов, выполнявшиеся под руководством В. М. Глушкова. Тогда казалось, что можно, по аналогии с программированием на языке высокого уровня, описать устройство процессора, а далее «синтезировать различные варианты логических схем больших универсальных электронных цифровых вычислительных машин, а также схем относительно небольших цифровых автоматов произвольного назначения с учетом простейших соображений надежности их работы».

Близкое по смыслу решение Triton Builder предлагает компания Poseidon Systems. Система CAD Triton Builder предоставляет средства для анализа исходных текстов с целью выделения в них «узких мест» и часто повторяемых циклов; эта процедура выполняется в интерактивном режиме с участием разработчика. По ее результатам (как и в случае с Cascade) создается описание архитектуры синтезируемого сопроцессора на языке RTL.

Однородные многоядерные структуры

Почти одновременно с ускорителями появились теоретические материалы, нацеленные на создание однородных вычислительных сред. Одной из первых практических разработок для реализации такой среды стали чипы-транспьютеры, выпускавшиеся английской фирмой INMOS. Идея создания транспьютера принадлежит профессору Дэвиду Мэю, создавшему и специализированный язык программирования occam, названый в честь средневекового философа Фрэнсиса Уильяма Оккама. Этот язык специально предназначался для программирования вычислительных систем, собранных из транспьютеров.

Мэй предложил собирать системную плату из отдельных процессоров-транспьютеров так, чтобы полученный набор соответствовал требуемому приложению. Например, можно представить себе персональный компьютер, в котором есть центральный процессор и отдельные устройства для периферийных устройств. В какой-то момент казалось, что это — вполне реальный путь последующего развития, и о транспьютерах много писали и говорили. Но основная сложность этого пути состоит в необходимости распараллеливания задач, что является далеко не тривиальной задачей. Транспьютеры не получили серьезного коммерческого признания, но на их основе были построены несколько суперкомпьютеров для параллельных вычислений, нашумевших в середине 80-х годов, в том числе Meiko, Parsytec и Parsys.

Более продуктивной оказалась схема симметричного мультипроцессинга (Symmetric Multiprocessing SMP), реализованная во множестве серверов и в многоядерных процессорах. Сегодня существуют двухъядерные процессоры, а в следующем году Intel обещает выпустить четырехъядерный процессор Clovertown. Но наибольшего успеха в этой области добилась компания Sun Microsystems, создавшая восьмипроцессорный Ultra Sparc T1, ранее известный под кодовым именем Niagara.

Многоядерные процессоры привлекают к себе большое внимание, и показательно, что Sun Microsystems открыла значительную часть документации на Ultra Sparc T1. Совсем недавно создана ассоциация Multicore Association, объединяющая тех, кто заинтересован в создании таких процессоров. Она опубликовала протокол Transparent Inter Process Communication (TIPC), предназначенный для внутрикластерных коммуникаций и позволяющий создавать распределенные мультипроцессорные системы. В нынешней реализации он имеет экспериментальный характер, поскольку использует очевидно медленный TCP/IP, но у Multicore Association — далеко идущие цели. Прототипом для TIPC стали разработки Ericsson, которые после многих лет внутренних исследований переданы сообществу Open Source.

Неоднородные многоядерные структуры

В начале 60-х годов в вычислительных системах Digital Equipment Corporation PDP-10 и IBM System/360 задействовалась схема с асимметричным мультипроцессингом (Asymmetric Multiprocessing — AMP, или ASMP). Сейчас наиболее типичными примерами ее использования являются применение видеокарт в персональных компьютерах, а цифровых сигнальных процессоров — во встроенных системах.

Наиболее свежий пример AMP — процессор Cell, совместно разработанный Sony, Toshiba и IBM. Этот альянс получил название STI. Разработка, которая началась в марте 2001 года, проводилась в исследовательском центре IBM в Остине и стоила почти полмиллиарда долларов. Слово Cell (ячейка) служит для обозначения архитектуры Cell Broadband Engine Architecture (CBEA, или Cell BE), в которой ядро процессора общего назначения POWER сочетается с ядрами-сопроцесорами, ускоряющими выполнение векторных и мультимедийных операций. Первыми коммерческими приложениями Cell станут игровые консоли Sony PlayStation 3. Компания Toshiba планирует использовать эти процессоры в телевизорах высокой четкости, а IBM в сотрудничестве с Mercury Computer Systems готовит серверы-лезвия, каждый из которых будет использовать по два таких процессора. Работая под управлением ОС Linux, серверы-лезвия, предположительно, смогут показать производительность 400 GFLOPS. Далее планируется собрать семь плат на одном шасси и получить вычислитель с мощностью 2,8 TFLOPS.

Еще одним проектом асинхронной мультипроцессорной архитектуры, поддержанной IBM, является разработка небольшой компанией Rapport принципиально нового процессора Kilocore. В нем совмещены на одном кристалле обычный основной процессор, в данном случае PowerPC, и множество вспомогательных ядер. В первой версии процессор Rapport KC-256 имеет 256 ядер, но несколько таких процессоров можно собрать в кластер, увеличив число ядер до 1024. Отличительными особенностями KC-256 являются возможность динамического реконфигурирования в процессе исполнения и чрезвычайно низкое энергопотребление.

Программируемые массивы

Можно представить себе кристалл как массив программируемых элементов, из которого, в зависимости от потребностей, можно сделать практически все, что угодно. Гранулярность элементов может быть различной. Предельным минимумом являются отдельные вентили, из которых создаются специализированные микросхемы (Application-Specific Integrated Circuit, ASIC) или микросхемы для стандартных приложений (Application Specific Standard Product, ASSP). Как и в случае с транспьютерами, в этой области первенствовали англичане: идея ASIC была предложена компанией Ferranti в середине 80-х годов.

Современная ASIC может представлять собой законченную систему на основе силикона SoC, включающую в себя 32-разрядные процессоры, память и другие компоненты. Для программирования ASIC используется один из языков программирования аппаратуры (Hardware Description Language, HDL), например Verilog или VHDL; на нем описывается функциональность ASIC. В отличие от ASIC, микросхемы ASSP поступают на рынок готовыми. Они применяются в автомобилях, коммуникационных устройствах и т.п.

Массивы FPGA отличаются большей гранулярностью. Их элементом является модуль-ячейка, состоящий из двух компонентов — четырехвходовой таблицы Lookup Table (LUT) и триггера. Название таблицы часто переводят как «таблица просмотра», что, вообще-то, неверно. Скорее, его следует перевести как «шпаргалка». В таблицы такого типа заносят стандартные значения, чтобы их не вычислять. Пример — таблица тригонометрических функций.

В данном случае в таблице программируется поведение ячейки. Какой-либо процедуры просмотра не предусмотрено. На основе FPGA можно собирать множество процессоров на одном кристалле. Компания Elixent поставляет разнообразные специализированные криптографические микросхемы, базирующиеся на реконфигурируемой архитектуре (Reconfigurable Algorithm Processing RAP), которая представляет собой коммутированный нужным образом массив четырехразрядных арифметико-логических устройств (ALU).

Следующий шаг на пути повышения уровня грануляции сделала компания MathStar, предлагающая программируемые массивы объектов (Field Programmable Object Array, FPOA). Одно устройство типа FPOA может содержать до 400 объектов, каждый из которых является 16-разрядным ALU. Объекты связаны запатентованным межсоединением, работающим на частоте 1 ГГц. Такие устройства используются для решения задач с большим количеством сигнальной информации, например для обеспечения зрения роботов.

Аналогичные устройства с несколькими сотнями 16-разрядных CPU и DSP поставляет компания picoChip. Отличительная особенность ее решения состоит в том, что, помимо программирования на VHDL, отдельные функции можно программировать на языках Си и ассемблера. Это приближает такое устройство к универсальному компьютеру. Компания Cradle Technologies предлагает грануляцию еще одним уровнем выше: в ее продуктах MDSP могут использоваться до восьми 32-разрядных ядер и 16 DSP. Микросхемы MDSP являются прямыми конкурентами процессора Cell.

Реконфигурируемые ядра

Tensilica — одна из немногих компаний, которая может поставлять реально модифицируемое ядро Xtensa. Это 32-;разрядное ядро выполнено в соответствии с архитектурой, которая получила название post-RISC. Другая фирма, Stretch, использует ядро Tensilica Xtensa и сочетает его со своим реконфигурируемым набором команд (Instruction Set Extension Fabric, ISEF). Специальный анализатор просматривает приложение на Cи/C++ и генерирует конфирмационный файл для ISEF. Реконфигурация может выполняться несколько тысяч раз в секунду, что обеспечивает адаптацию процессора к выполняемым задачам.

RAMP

В феврале 2006 года в Internet появилась заметка с интригующим названием «1000-процессорный компьютер за 100 тысяч долларов?» — и это в то время, когда простейший кластерный суперкомпьютер стоит на порядки больше. Возмутителем спокойствия оказался профессор из университета Беркли Дэйв Паттерсон — фигура чрезвычайно известная, можно сказать, харизматическая. Ему принадлежит выдающаяся роль в создании процессорной архитектуры RISC, он является автором идеи RAID-массивов и множества других изобретений. Паттерсон предложил и не имеющий себе равных по внутренней логике логотип Sun Microsystems, состоящий из знаков конъюнкции и дизъюнкции.

На сей раз, выступая на конференции в Беркли, он поразил собравшихся следующим заявлением: «Если мы сумеем упаковать 25 процессоров в одну микросхему FPGA, то для 1 тыс. процессоров нам потребуется лишь 40 FPGA. Такой компьютер будет стоить меньше 100 тыс. долл., занимать треть стандартной стойки и потреблять всего 1,5 кВт энергии». Этот феноменальный компьютер — отнюдь не фантазия, он строится в рамках проекта RAMP (Research Accelerator for Multiprocessors), стартовавшего в 2004 году. Среди его участников — исследователи из Массачусетского технологического института, Стэндфордского и других университетов. Паттерсон заключил свою речь так: «Мы хотим построить суперкомпьютер на FPGA, и это будет система моделирования». Появление мини-суперкомпьютера ожидается уже в текущем году.

Чудес от самого компьютера RAMP ожидать не следует. Проектируемый кластер есть не что иное, как машина с массовым параллелизмом (MPP), собранная на новом технологическом уровне. В конечном счете это тот же кластер типа Beowulf, но состоящий не из рабочих станций, персональных компьютеров и серверов-лезвий, а из процессоров, размещенных на программируемых массивах. Гораздо интереснее другое — те технологии и разработки, которые появятся в процессе создания такого компьютера.

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

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

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

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

Архитектура ячейки FPGA

Предполагается, что производительность компьютера RAMP будет примерно в 20 меньшей, чем у традиционного компьютера с 1 тыс. процессоров. С такими показателями он не сможет рассчитывать на размещение в Top 500 суперкомпьютеров, но окажется на четыре порядка производительнее любой системы моделирования 1000-процессорного компьютера, и в этом — его основное достоинство. Уже создан язык программирования RAMP Design Language (RDL), благодаря чему потенциал RAMP как макетирующего средства выходит далеко за пределы MPP.

Новые пути конвергенции

Ослабление барьеров между программным и аппаратным обеспечением приводит и к изменению в расстановке сил. Помимо традиционных производителей того и другого на арене появляется «третья сила» — компании, специализирующиеся на создании технологий для полупроводниковой промышленности, такие как Cadence, Synopsys, Mentor Graphics и Magma Design Automation. Прежде они были в тени, но сейчас выдвигаются на первый план. В связи с этим стоит прислушаться к тому, что говорит руководитель Cadence Рэй Бингхэм. Причем нужно учесть, что он имеет в виду не только микропроцессоры, но и более широкий спектр полупроводниковых приборов.

Бингхэм считает, что быстрый рост технологических возможностей, сопровождаемый еще более быстрым увеличением сложности полупроводниковых изделий, ставит перед отраслью новую задачу конвергенции технологий. Результатом этой конвергенции станут системы на кристалле (System-on-a-chip, SoC or SOC). Конвергенция должна удалить барьеры между четырьмя основными направлениями — встроенным ПО, цифровой логикой, аналоговыми цепями и технологией производства печатных плат. Можно говорить о трех областях конвергенции.

  • Аппаратно-программная конвергенция. Основная причина такой конвергенции заключается в высокой стоимости разработки программного обеспечения — на фоне постоянного снижения стоимости проектирования приборов за счет использования средств его автоматизации. Следовательно, необходим компромисс между размером интеллектуальных вложений, которые делаются в hardware и software.
  • Цифро-аналоговая конвергенция. За последние годы доля микросхем с аналоговыми компонентами возросла с 20 до 75%, но пока нет эффективных средств проектирования смешанных чипов.
  • Конвергенция производства микросхем и печатных плат. До последнего времени печатные платы оставались простыми статическими устройствами, но для повышения сложности чипов платы должны обрести большую интеллектуальность. Их нужно проектировать совместно с чипами, в результате чего может появиться новый класс изделий Silicon-Package-Board.

Компьютинг без компьютеров

На протяжении многих десятилетий слово «компьютер» было неразрывно связано со словом «универсальный». Это качество является одним из основных достоинств компьютеров: каждый инструмент можно использовать для решения широкого класса задач. За редким исключением, «железо» было, есть и еще долго будет универсальным, а специфика тех или иных приложений сохраняется в программах. Но в теоретическом плане вопрос о том, где следует провести границу между аппаратной частью и программной реализацией, никогда не был закрыт — его просто на какое-то время отодвинули в сторону. А в условиях, когда перепрограммировать программы становится сложнее, чем программировать железо, он снова актуализируется.

Появляющиеся технологии программируемых массивов открывают возможность нового подхода к созданию вычислительных устройств, который получил название Custom Computing, что можно перевести как «заказной компьютинг» (был же когда-то термин «заказные микросхемы»). Заказанной компьютинг — дитя двух технологий: это аппаратная компиляция (Hardware Compilation) и реконфигурируемая логика (Reconfigurable Logic). Реконфигурируемые ядра и проект RAMP являются частными проявлениями заказного компьютинга.

Далеко не случайно авторитетнейший научный журнал Journal of Microprocessors and Microsystems готовит специальный выпуск, посвященный Reconfigurable Computing на основе FPGA. В его анонсе говорится: «Последние достижения в области программируемых вентильных массивов открыли практическую возможность для реализации реконфигурируемого компьютинга. В новых условия границы между аппаратным и программным обеспечением начинают размываться. Наиболее тяжелые для выполнения коды теперь можно переносить в аппаратную часть, причем как в статическом режиме (off-line mapping), так и в динамическом (on-line mapping). В итоге можно ожидать существенного повышения производительности научных вычислений, мультимедийных приложений и систем обеспечения безопасности».

Действительно, пока область приложения FPGA ограничена MPP и встроенными системами. Однако уже есть проекты, в которых средствами FPGA моделируются универсальные компьютеры, например PDP-10.


Xilinx — родина FPGA

Field Programmable Gate Array — программируемый массив, или программируемая вентильная матрица. Она представляет собой кристалл, который может быть запрограммирован после изготовления. Идея создания FPGA принадлежит Россу Фриману, который в 1984 году вместе с Берни Вондершмиттом и Джимом Барнетом создал компанию Xilinx (читается «зилингс») — крупнейшего производителя программируемых массивов. В 2005 году объем ее продаж превысил 1,5 млрд долл.

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

Создание FPGA начиналось «с чистого листа», или, как говорят американцы, с концепции, взятой со стены (off-the-wall concept). Росс Фрееман руководствовался глубоким пониманием закона Мура: удвоение числа транзисторов на кристалле с периодичностью 18-24 месяцев рано или поздно должно привести тому, что кристалл удастся сделать однородным массивом транзисторов, который в последующем можно будет программировать нужным образом. В момент создания компании (более 20 лет назад) идея разработки подобного продукта казалась не менее утопичной, чем концепция компании-коммуны, но жизнь показала правоту Фреемана. К сожалению, столь интересные замыслы были реализованы лишь после его смерти в 1989 году.

Ради справедливости отметим, что у FPGA были предшественники — устройства со сложной программируемой логикой (Complex Programmable Logic Devices, CPLD). Еще раньше, в середине 70-х годов, появились программируемые логические массивы (Programmable array logic PAL). Массивы PAL содержали всего несколько десятков логических элементов, и предполагалось, что устройства должны собираться из множества таких массивов. Изобретатели PAL Джон Биркнер и Хью-Тью Чуа не «вписались» со своей идеей в развитие полупроводниковых технологий, хотя поначалу надежды были велики: их массивы были вытеснены с рынка специализированными устройствами.