Темой июльского выпуска журнала Computer (IEEE Computer, Vol. 38, № 7, July 2005) стали многопроцессорные системы на кристалле. Им посвящены четыре большие статьи и развернутая вводная заметка приглашенных редакторов.
Многопроцессорные системы на кристалле (Multiprocessor Systems-on-Chips, MPSoC) — одно из ключевых приложений технологий сверхбольших интегральных схем (VLSI). В мобильных приложениях однокристальные реализации нужны для миниатюризации и экономии потребления энергии. В других приложениях применение крупных микросхем способствует снижению стоимости. Для достижения требуемой эффективности все возрастающего числа приложений требуются многопроцессорные архитектуры.
MPSoC — это гораздо больше, чем просто блок чипов, уменьшенный до размеров одной микросхемы. Как требования приложений, так и реализационные ограничения заставляют разработчиков создавать заказные, неоднородные архитектуры. Для приложений, на поддержку которых ориентирована разработка SoC, свойственна противоречивая комбинация ограничений: не просто высокие скорости вычислений, а реальное время с жесткими требованиями соблюдения предельного времени реакции; малое потребление энергии; невысокая стоимость. Поддержка каждого из этих ограничений затруднительна сама по себе, а их комбинация порождает сложную проблему. В отличие от однокристальных многопроцессорных систем, MPSoC — это заказные архитектуры, для которых характерен баланс между ограничениями технологии VLSI и потребностями приложений.
При разработке архитектуры требуется обеспечивать достаточную гибкость, чтобы можно было вносить изменения в алгоритмы в последний момент. Во многих приложениях используются преимущества специализированных процессорных команд, которые могут ускорить функционирование при сохранении гибкости программируемого процессора. Но если создание заказного процессора само по себе является трудной задачей, то потребность в разработке специализированного компилятора и другого программного обеспечения еще больше ее усложняет. Разрабатываются конфигурируемые процессоры, расширяемые различными способами, — может изменяться система команд, длина машинного слова, размер кэша и т.д. По заданному набору спецификаций соответствующие программные инструменты генерируют аппаратную архитектуру процессора, компилятор, отладчик и иное программное обеспечение процессора. Альтернативный способ эффективного выполнения операций представляют подсоединенные ускорители, способные выполнять целую функцию без вмешательства процессора. В стандартах часто специфицируются примитивные операции, которые могут выполняться относительно независимо и для которых не требуется гибкость полной программной реализации. Обычно ускорители позволяют реализовать подобные функции с наименьшим потреблением энергии.
В MPSoC часто имеются неоднородные системы памяти. Некоторые блоки памяти могут быть доступны только части процессоров. В системе может содержаться несколько специализированных блоков памяти, наряду с более широко доступной памятью. Наличие неоднородной памяти в MPSoC затрудняет программирование, но часто такая память бывает необходима. Одной из причин потребности в специализированной памяти является поддержка эффективного реального времени: так понятнее взаимное влияние процессоров на скорость доступа к памяти. Совместное использование элементов данных и программ в большой общей памяти затрудняет анализ эффективности системы памяти. Архитектуры заказной памяти позволяют сокращать энергопотребление: блоки памяти меньшей емкости потребляют меньше энергии, это же относится к более мелким шинам и структурам межсоединений, охватывающим меньшее число обрабатывающих элементов.
Важные факторы производительности и стоимости системы — архитектура и частота использования общесистемных коммуникаций. Архитектуре межсоединений посвящалось множество исследований, но в области разработки специальных многопроцессорных архитектур эта проблема далека от решения. Существующие механизмы имеют два разных источника: классическая компьютерная архитектура с концепцией общей шины и сети на кристаллах (Network on Chip, NoC). Второй подход позволяет создавать гибкие, программируемые и даже реконфигурируемые сети. В MPSoC объединяются трудности как сложных аппаратных систем, так и сложных программных систем. Для разработки MPSoC важна методология. Разработчики процессоров общего назначения не очень полагаются на явные методологии, но ограниченные сроки, в которые обычно требуется разработать MPSoC, требуют более структурного подхода. Поскольку системы MPSoC разрабатываются чаще микропроцессоров, у разработчиков имеется достаточный опыт создания и совершенствования своих методологий. Новые технологии изменяют соответствующие компоненты; новые инструменты поддерживают новые подходы к разработке. Аппаратные архитектуры MPSoC порождают проблемы во всех аспектах организации многопроцессорной системы: процессорные элементы, память и взаимосвязи. Один из способов совершенствования процессорных элементов основан на использовании конфигурируемых процессоров с настраиваемыми наборами команд; другой метод состоит в совместном аппаратно-программном конструировании ускорителей. При разработке неоднородных систем памяти проектные решения часто принимаются на основе недостаточных данных и неполных исследованиях пространства решений. По мере перехода от использования шин к более общим сетям разработчики должны рассматривать гораздо больше возможных вариантов. Один из перспективных подходов к модуляризации разработки взаимосвязей в очень крупных микросхемах может быть основан на использовании NoC.
Решающий вопрос в области архитектур MPSoC — баланс между программируемостью и эффективностью. Программировать для многопроцессорных систем труднее, чем для однопроцессорных, а для неоднородных многопроцессорных систем — труднее, чем для однородных. Системы MPSoC являются неоднородными почти во всех отношениях: несколько наборов команд, подключенные функциональные устройства, неоднородные системы памяти и адресные пространства, взаимосвязи с разной пропускной способностью и избыточной топологией. Выбор программируемых средств является искусством, до сих пор не очень хорошо понятым. Разработка современных специализированных интегральных схем (Applications Specific Integrated Circuit, ASIC) в большой степени опирается на синтез как на логическом, так и на физическом уровнях. Между тем, сегодня при разработке MPSoC используются скорее симуляция и ручной анализ, а не методы проектирования ASIC. Отсутствуют инструментальные средства, автоматически превращающие крупное приложение в законченную разработку. Трудно разработать такие инструменты даже для достаточно ограниченного приложения, рынок таких средств слишком узок для того, чтобы это было экономически целесообразно. Кроме того, диапазон областей применения MPSoC непрерывно расширяется, и трудно сузить область, в которой должен работать некоторый инструмент. Поскольку у разработчиков имеется недостаточное число средств синтеза, им требуются отличные средства имитационного моделирования, но пока достаточно хорошие симуляторы MPSoC отсутствуют. Средства имитационного моделирования, разработанные для проектирования компьютеров общего назначения, с трудом поддаются модификации для возможности моделирования разнородных элементов обработки, памяти и взаимосвязи. Разработчикам MPSoC требуются симуляторы, помогающие характеризовать системы на разных уровнях абстракции: функциональные симуляторы для анализа и отладки программного обеспечения, потактовые симуляторы для детального анализа производительности и симуляторы питания для анализа энергопотребления. Еще одна проблема связана с использованием при разработке MPSoC эталонных реализаций. С одной стороны, в руки разработчиков даются исполняемые спецификации, которые можно прогонять и анализировать. Но, с другой стороны, они часто программируются в стиле, который не совсем пригоден для реализации систем на кристалле. В результате разработчикам приходится тратить значительное время на оптимизацию кода. Ключевой проблемой при интеграции частей MPSoC является создание сквозной среды между встроенной аппаратурой и программами. Для этого требуются новые технологии, делающие возможной совместную разработку аппаратно-программных интерфейсов для интеграции аппаратных и программных компонентов. В MPSoC требуются усложненные описания интерфейсов, отображающие взаимодействия между неоднородными подсистемами. Требуются интерфейсы прикладного программирования для спецификации зависящих от приложения ограничений, таких как качество обслуживания, в терминах потребления энергии, стоимости и надежности. Проблема состоит в потребности создания абстрактной модели неоднородных мультипроцессорных систем. Овладение методами совместной разработки аппаратно-программных интерфейсов позволит радикально усовершенствовать процесс разработки: параллельная разработка аппаратуры и встроенного программного обеспечения ускорит появление новых продуктов на рынке; модульная разработка аппаратно-программных компонентов сделает более ясным выбор архитектурных решений; более простая глобальная оценка встроенных систем приведет к повышению надежности и качества.
Статью «Параллелизм и архитектура набора команд ARM» (Parallelism and the ARM Instruction Set Architecture) написали Джон Гудейкэ (John Goodacre) и Эндрю Слосс (Andrew Sloss) из компании ARM. Компания ARM была образована в 1990 году как совместное предприятие компаний Acorn, Apple и VLSI Technology (теперь Philips Semiconductor). За прошедшие полтора десятилетия RISC-процессор ARM эволюционировал в целое семейство, включающее и полноценную многопроцессорную систему. Для встроенных приложений требуется постоянно возрастающая производительность; развитие архитектуры ARM происходило под влиянием ключевых новых технологий, обеспечивающих дополнительную эффективность. Разработчики компании использовали весь диапазон методов, применяемых в области компьютерных архитектур для использования параллелизма. Используемые в ARM методы повышения производительности включают переменное время выполнения команд, параллелизм на уровне подслов, операции в стиле процессоров цифровой обработки сигналов (Digital Signal Processing, DSP), параллелизм уровня потоков, обработку исключительных ситуаций и многопроцессную обработку. История эволюции архитектуры ARM показывает, что в разные периоды времени в процессорах использовались разные типы параллелизма.
Кульминацией этого процесса стал новый ARM11 MPCore. Вариант RISC-организации процессора ARM во многих отношениях отличается от традиционного подхода, в котором высокая производительность достигалась за счет относительно большого набора регистров, сокращенного числа классов инструкций, архитектуры load-store и простого конвейера. Частично это связано с тем, что процессор ARM является встраиваемым, специально разработанным для размещения внутри систем на кристалле. Наряду с высокой производительностью разработчики назначают также высокий приоритет высокой плотности кода, низкому энергопотреблению и небольшому размеру. Для достижения своих целей группа разработчиков ARM изменила традиционные правила построения RISC-процессоров, включив в разработку такие характеристики, как переменное число тактов для выполнения некоторых команд, встроенное многорегистровое устройство циклического сдвига для предварительной обработки одного из входных регистров, условное выполнение, система сжатых 16-разрядных команд и ряд усовершенствованных DSP-команд. Переменное время выполнения некоторых команд объясняется тем, что для повышения эффективности команды ARM могут загружать и записывать в память несколько регистров сразу, а потому время их выполнения зависит от заданного числа регистров. Такие команды особенно полезны для сохранения и восстановления контекста в прологе и эпилоге процедур. Это повышает плотность кода, сокращает число выбираемых из памяти команд и сокращает энергопотребление. Любая команда ARM выполняется только при удовлетворении указанного в ней условия. В некоторых случаях это позволяет существенно сократить число команд, требуемых для реализации алгоритма. Сжатый вариант системы команд ARM позволяет повысить плотность кода без существенного ухудшения производительности.
В 2003 году компания ARM анонсировала технологию Thumb-2, которая позволяет еще более повысить плотность кода путем смешивания 32- и 16-разрядных команд в одном потоке инструкций. На процессорах ARM можно выполнять, например, приложения, обеспечивающие передачу голоса по IP-сетям без отдельного DSP-процессора. С 2001 года в процессорах ARM поддерживается параллелизм на уровне данных на основе подхода SIMD (Single Instruction Multiple Data). Для балансировки эффективности вычислений с экономным энергопотреблением в реализации SIMD применяется расщепление стандартного 32-разрядного тракта данных на четыре 8-разрядных или две 16-разрядных секции. Это отличается от многих других реализаций, в которых для SIMD-операций требуются дополнительные специализированные тракты данных. Для поддержки параллелизма на уровне потоков (thread, легковесный процесс с собственным счетчиком команд и набором регистров) в ARM11 реализован набор команд, обеспечивающий быстрое сохранение и восстановление контекста потока, а также команды, позволяющие реализовать семафоры в многопроцессорной системе без потребности в блокировке системной шины. Параллелизм работы ARM на уровне инструкций обеспечивается традиционным для суперскалярных архитектур образом за счет параллельного выполнения нескольких команд одного потока. Естественно, для достижения высокого уровня параллелизма на уровне команд требуется соответствующая поддержка компилятора, производящего планирование команд в программе.
Статья, написанная Стивом Лейбсоном (Steve Leibson) и Джеймсом Кимом (James Kim), называется «Конфигурируемые процессоры: новая эра в проектировании микросхем» (Configurable Processors: A New Era in Chip Design). Историю развития микропроцессоров можно условно разделить на три эпохи, в каждой из которых производились кристаллы, соответствующие своему времени. В 70-е годы микропроцессоры превратились из 4-разрядных устройств со сменной логикой в 16- и 32-разрядные решения, проложившие путь к персональным компьютерам и рабочим станциям. Взрывное развитие 32-разрядных микропроцессорных архитектур привело к исчезновению мини-компьютеров, а также к появлению процессоров цифровой обработки сигналов и других специализированных архитектур. В 90-е годы преобладали идеи RISC; даже приверженцы CISC-архитектур, таких как x86, опирались на замаскированные RISC-архитектуры, и микропроцессоры становились неотъемлемой частью мэйнфреймов и суперкомпьютеров. За три десятилетия микропроцессор превратился в функционально законченный, повторно используемый блок, создаваемый высококвалифицированными специалистами. Поскольку разработка надежных и эффективных микропроцессорных архитектур может занимать годы, многие разработчики стали относиться к ним как к монолитным объектам, изменяемым крайне редко и только после тщательного анализа немногочисленными посвященными. Однако появление в 90-х годах производственных технологий специализированных интегральных схем и систем на кристалле составило основу для начала четвертой эры конфигурируемых процессоров категории «пост-RISC». Средства разработки теперь настолько развиты, что любой разработчик может подстроить ядро микропроцессора к конкретным прикладным задачам и буквально за считанные минуты сгенерировать для данной архитектуры описание уровня регистровых передач (Register Transfer Level, RTL), а также все требуемые инструменты для разработки программного обеспечения. Благодаря возможности быстрой подстройки процессоров к конкретным прикладным задачам конфигурируемые процессоры представляют собой отличные строительные блоки для разработки систем на кристалле; разработчики используют их для быстрого создания функциональных элементов, для построения которых иным способом понадобились бы месяцы труда специалистов. Как следствие, в разнообразных продуктах от сетевых маршрутизаторов до бытовой электроники уже используются системы MPSoC.
Статью «Открытая платформа для разработки многопроцессорных систем на кристалле» (An Open Platform for Developing Multiprocessor SoCs) написали семь авторов из компании STMicroelectronics. Первым в списке авторов обозначен Филип Тенинж (Philippe Teninge). Нанотехнологии позволяют интегрировать сотни миллионов транзисторов в одном кристалле. Предоставляемые этими технологиями возможности вместе с консолидацией подходов к проектированию на основе платформы (platform-based design) и развитием микропроцессорных архитектур приводят к новым методам проектирования и верификации встроенных систем. Очевидно, платформа, реализованная с помощью чисто программного средства имитационного моделирования, не может обеспечить эффективность, которая требуется для разработки MPSoC. Еще более важно то, что наиболее рискованным элементом при разработке современных систем является архитектура, достоверность которой должна быть проверена как можно раньше в общем цикле разработки системы, поскольку именно архитектура оказывает наибольшее влияние на размер и производительность системы. В подходе, предлагаемом авторами статьи, с самого начала проекта ведется параллельная разработка аппаратного и программного обеспечения с использованием недорогих средств эмуляции. Методы эмуляции, используемые для верификации ASIC, расширены для применения к многопроцессорным архитектурам. На рынке уже имеются платформы эмуляции многопроцессорных систем, такие как Integrator компании ARM и Heron компании Hunt Engineering, однако они основаны на использовании специальных процессоров и соединений, что не дает возможности добавлять компоненты сторонних производителей, например, контроллеры памяти. Вообще говоря, существующие решения не позволяют оценивать различные архитектуры, поскольку отсутствует возможность изменения топологии внутренних соединений. Кроме того, эти платформы предназначены, прежде всего, для проверки прототипов приложений или систем, что не позволяет оценивать и проверять достоверность архитектуры, которая в конечном счете будет реализована на уровне полупроводников. Авторы, исследовав способы эмуляции реконфигурируемых платформ MPSoC, разработали основную подсистему эмуляции и стенд. Эта платформа используется для разработки и верификации конкретного набора продуктов, основанных на аппаратных элементах STMicroelectronics. Платформа может использоваться в различных режимах: автономно для разработки программного обеспечения и проектирования и верификации аппаратных элементов; как многопроцессорная система с возможностью прямого подключения к ПК; как вычислительный узел MPSoC с конфигурируемыми внутренними соединениями, что позволяет производить выбор наиболее производительной коммуникационной системы и эмулировать топологию NoC. Платформу планируется внедрить в разработку потребительских и телекоммуникационных продуктов с целью повышения производительности труда инженеров и программистов; также это будет способствовать повышению качества конечных продуктов.
Автор последней статьи подборки — Маркус Леви (Markus Levy), основатель и президент консорциума Embedded Microprocessor Benchmark Consortium. Статья называется «Оценка производительности цифровых развлекательных систем» (Evaluating Digital Entertainment System Performance). Цифровые развлекательные системы (смартфоны, игровые приставки, DVD-плейеры, цифровые камеры и др.), становятся главной движущей силой расширения рынка полупроводников. Так, в 2003 году доля продажи смартфонов на общем рынке мобильных телефонов составляла 3%, и аналитики прогнозируют ежегодное увеличение числа их продаж в тысячи раз. Более половины мобильных телефонов, проданных в 2004 году, были оснащены цветным дисплеем и цифровой камерой. Реализация более развитых возможностей, таких как ускоренная графика, поддержка видеоконференций, мультимедиа, игры, предъявляет повышенные требования к производительности. Внедрение таких возможностей становится возможным за счет быстрого совершенствования технологии полупроводников, микроархитектур и встроенных систем. Сложность программного обеспечения — наряду с общей сложностью систем — и далее будет возрастать. Производители стремятся использовать в своих продуктах новейшие технологии и выпускать их на рынок раньше конкурентов. Поэтому потребность в оценке производительности опережает претензии потребителей к качеству функциональности устройств. Важную роль в разработке процессоров, алгоритмов и систем играют тестовые наборы и методика оценки производительности. Наилучшей контрольной задачей для цифрового развлекательного устройства является законченное приложение, которое будет на нем выполняться. Так, если устройство будет использоваться для воспроизведения видео, то в качестве теста разумно использовать реализацию алгоритма MPEG-4.
Чем реалистичнее контрольная задача, тем полезнее она в целях оценки. Однако многие современные тестовые наборы являются очень громоздкими, и их выполнение на имитационных моделях может занимать слишком много времени. Исследования показывают, что можно создавать короткие искусственные потоки инструкций, поведение которых схоже с поведением потока инструкций полного приложения. Однако искусственные потоки могут быть недостаточными для учета таких элементов системного уровня, как память и кэш, и определенно непригодны для тестирования аппаратных ускорителей и других устройств, разгружающих центральный процессор. Первым шагом при создании тестовых наборов для цифровых развлекательных систем является определение цели тестирования: тестовые наборы различаются в зависимости от того, используются ли они для оценки архитектуры микропроцессора, функциональности системного уровня или поведения алгоритма. Существует много частных тестовых наборов, удовлетворяющих этим требованиям, например, BDTI (www.bdti.com) и FutureMark (www.futuremark.com), но более открытую и демократичную альтернативу представляют подходы университетских исследователей и отраслевых консорциумов, среди которых автор выделяет MediaBench (http://cares.icsl.ucla.edu/MediaBench) и EEMBC (www.eembc.org).
Единственная большая статья номера, опубликованная вне тематической подборки, написана Къеллом Холе (Kjell Hole), Эрлендом Дирнесом (Erlend Dyrnes) и Пером Торшеймом (Per Thorsheim). Статья называется «Организация защиты в сетях Wi-Fi» (Securing Wi-Fi Networks). Сети, основанные на стандартах IEEE 802.11b/g, в последние годы стали очень популярны. Многие пользователи устанавливают такие сети у себя дома, а на предприятиях появляются точки доступа Wi-Fi к проводным сетям, что облегчает доступ работникам к корпоративным данным и сервисам. Особый интерес представляют сценарии подключения служащих к корпоративной сети из своей домашней сети. Сотрудники ИТ-департаментов контролируют точки доступа Wi-Fi к корпоративным сетям, однако они не могут контролировать точки доступа к домашним сетям, а могут даже и не знать о существовании этих точек доступа. Подобные сети дают новые возможности несанкционированного доступа к корпоративным компьютерным системам и соответствующим данным. В статье приводится обзор результатов исследования, проведенного для оценки уровня защиты в сетях Wi-Fi норвежского города Берген. Эти результаты обеспечивают контекст для анализа некоторых популярных методов организации защиты в беспроводных сетях и принятия решений о лучших способах защиты таких сетей от хакерских атак.
Вы читаете этот обзор, когда уже в самом разгаре подписная кампания на членство в IEEE Computer Society на 2006 год. Самую свежую информацию о порядке вступления в ряды IEEE CS и благ, которые это членство принесет, можно найти по адресу http://www.computer.org/portal/pages/ieeecs/ join/index.xml. До следующей встречи, Сергей Кузнецов, kuzloc@ispras.ru.