Маршруты проектирования «Систем на кристалле»

УДК 004.414.2

МАРШРУТЫ ПРОЕКТИРОВАНИЯ «СИСТЕМ НА КРИСТАЛЛЕ»

П.В. Кустарев, А.О. Ключев

Рассматриваются современные подходы к проектированию вычислительных систем класса «Система на кристалле» (СнК, 8оС). Дано определение СнК как технологии проектирования, указаны отличительные признаки данной технологии, показаны недостатки традиционных маршрутов проектирования микропроцессорных систем, в том числе систем на ПЛИС, применительно к СнК. Определены основные направления развития методов и маршрутов проектирования для СнК, рассмотрена общая структура эффективного процесса проектирования СнК. Дано общее описание уровня общесистемного проектирования (Б8Ь), его подуровней, приведены сведения о применяемых языковых и инструментальных средствах. Оценены перспективы СнК, выделены ключевые аспекты технологии, требующие исследования и решения.

Ключевые слова: исполняемая системная спецификация, макроархитектура, микроархитектура, ПЛИС, система на кристалле, СнК, системный уровень.

Введение

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

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

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

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

Системы на кристалле

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

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

Сразу же отметим, что однокристальная микроЭВМ со встроенным программным обеспечением не будет отнесена к СнК, потому что используются унифицированные аппаратные средства. С другой стороны, «жесткая» цифровая схема, реализованная на ПЛИС, не рассматривается в качестве СнК, если в ней отсутствует программная компонента. С нашей точки зрения, СнК - это не тип микросхем (хотя именно так часто воспринимают СнК - например, в [1]), а технология проектирования на основе программных и аппаратных реконфигурируемых компонент. Данная технология объединяет как ставшие классическими методы и средства разработки программного обеспечения, разработки микросхем на функциональном и физическом уровнях, ПЛИС и т.п., так и относительно новые подходы. Среди последних следует выделить:

1) системное (архитектурное) проектирование, ориентированное на использование гетерогенной (аппаратно-программной) программируемой платформы;

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

В завершение параграфа следует отметить еще два момента. Первое: однокристальное решение - это только один из возможных вариантов реализации, получивший сегодня широкое распространение. К СнК также может быть отнесена структура, состоящая из нескольких СБИС, процессора и специализированной системной логики на базе ПЛИС, или решение на нескольких ПЛИС. Второе: несмотря на то, что хотелось бы достигнуть независимого восприятия СнК и СБИС, на базе которой она реализована, пока возможности СнК достаточно жестко определены ресурсами аппаратуры. Сегодня технология СнК наиболее востребована в сегменте встраиваемых систем с малым и средним уровнем производительности. Однако прогресс не стоит на месте, и, возможно, уже через 10 или чуть больше лет мощные вычислительные системы общего назначения с аппаратной реализацией прикладных функций будут частым явлением.

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

Традиционный маршрут проектирования СнК

Проектирование СнК исторически является развитием технологий и средств разработки специализированных ИМС (ASIC) и ПЛИС. Обобщенная схема традиционного маршрута представлена на рис. 1 (данная схема предложена в [1] и немного детализирована в настоящей статье). Процесс является последовательным, с выделением технологических этапов - уровней, и итеративным, т.е. на каждом этапе можно сделать откат назад для корректировки проекта (обратные связи на рисунке не показаны). Проектирование программного обеспечения выполняется обособленно от разработки аппаратных средств, после получения виртуальных или физических прототипов аппаратуры. На всех уровнях используется компонентный подход. Компоненты - функциональные, схемотехнические, топологические и программные блоки - организуются в библиотеки, пригодные для повторного использования.

Фактически описанный маршрут проектирования не имеет никаких принципиальных отличий по сравнению с традиционной технологией создания микропроцессорных систем. Из особенностей следует выделить то, что центральную позицию заняла программируемая пользователем аппаратура (ПЛИС, иногда ASIC), появились средства структурного конфигурирования процессорных ядер, САПР ПЛИС/ASIC, конфигурирования процессорных ядер, пакеты разработки программного обеспечения объединяются в мощные инструментальные комплексы. Примером такого комплекса может быть САПР фирмы Altera для проектирования SOPC (System-On-a-Programmable-Chip) на базе ПЛИС и процессорного ядра NIOS II, который включает базовые пакеты Quartus II (ПЛИС) + SOPC Builder (конфигурируемое процессорное ядро) + NIOS II IDE (программное обеспечение) и много других расширений (DSP Builder, C-to-Hardware Compiler и т.п.). Аналогичный мощный инструментальный комплекс предлагает фирма Xilinx. Чуть отстают, но постоянно развивают свои САПР фирмы Cypress (PSoC Designer), Actel (Smart Design) и некоторые другие. Как видно, в предложенном списке указаны лишь производители микросхем для СнК. Это естественно: они наиболее заинтересованы в продвижении своей продукции и стремятся предложить удобный инструмент, соответствующий привычным для большинства разработчиков технологиям проектирования.

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

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

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

3) В процессе проектирования упор делается на функциональность, распределение доступных аппаратных ресурсов, архитектуру программного обеспечения в рамках выбранной парадигмы программирования. Частично или целиком «за скобками» остаются иные существенные аспекты: мехатроника системы, надежность/безопасность, энергопотребление, техническое сопровождение и другие типовые, а также некоторые узкоспециальные вопросы предметной области. Эта проблема характерна для проектирования любых вычислительных систем, но для СнК как для системы, эффективность которой заключается в ее специализации на всех уровнях, она особенно болезненна.

Рис. 1. Обобщенная схема традиционного маршрута

Можно видеть, что основные недостатки относятся к уровню архитектуры и системотехники. Их исследование и преодоление чрезвычайно важны для определения перспектив технологии СнК, но, кроме этого, могут в ближайшем будущем сильно повлиять на изменение парадигмы проектирования вычислительных систем в целом. Наибольший интерес к решению этих вопросов проявляют научно-исследовательские организации и фирмы, занимающиеся созданием систем и средств проектирования высшего уровня сложности. К таковым могут быть отнесены ведущие разработчики «электронных» САПР, имеющие наибольшие практические результаты - Cadence Design Systems Inc., Synopsys Inc., Mentor Graphics Corp., международные и национальные исследовательские организации (следует отметить ведущую роль института IEEE). Большую активность проявляют многие университеты, в большей степени развивающие методологии. В России, несмотря на значительное отставание, данное направление пытаются развивать исследовательские коллективы в ведущих федеральных научных центрах и университетах. На кафедре вычислительной техники Санкт-Петербургского государственного университета информационных технологий механики и оптики (СПбГУ ИТМО) эти исследования ведутся в рамках научно-образовательного направления «Встроенные вычислительные системы». Далее представлен общий взгляд на организацию следующего поколения средств проектирования СнК.

Архитектурно-ориентированное проектирование СнК

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

Перечислим ключевые особенности архитектурно-ориентированного проектирования СнК.

1) Ведущая роль системного уровня [4]. Он существенно усложнен и по структуре (выделено несколько подуровней), и по наполнению. Учитывая влияние аппаратной составляющей на весь процесс и на результат, данный этап проектирования получил название Electronic System Level (ESL). C другой стороны, на этом этапе определяется архитектура системы в целом, поэтому иногда, например в [3], его именуют общесистемным уровнем - Entire System Level, сохраняя ту же аббревиатуру ESL.

2) Параллельное, связанное исполнение задач (ранее - последовательных этапов) проектирования. Должна обеспечиваться совместная верификация программных и аппаратных компонент системы и, одновременно, разнообразных требований к системе.

3) Среди иных требований с самых ранних этапов реализации СнК учитываются особенности микроэлектронной аппаратуры (СБИС), например, особенности и требования технологии производства современных микросхем, так называемого «глубокого субмикрона».

Рассмотрим кратко состав и назначение подуровней ESL как ключевого компонента перспективного варианта маршрута проектирования СнК.

Рис. 2. Распараллеливание потоков в синтезированной архитектуре

На подуровне спецификации системы (определения ее миссии) разрабатывают модель внешнего окружения системы - операционной среды, формальным образом фиксируют и проверяют полноту и непротиворечивость сценариев поведения системы через ее функциональную модель, так называемую «исполняемую системную спецификацию», выполняют первоначальное разделение системы на крупные функциональные блоки и подсистемы. В качестве средств описания системы используются различные языки моделирования: стандартные - UML, SDL и им подобные - или языки (текстовые, графические), встроенные в пакеты моделирования (Simscript, MathCAD/Simulink и другие). На данном этапе могут использоваться различные инструментальные средства моделирования: универсальные, например, MathCAD/Simulink (MathWorks), или специальные, такие как SystemVision, BridgePointUML (Mentor Graphics) или Saber (Synopsys).

Следующий этап - разработка макроархитектуры СнК. Здесь «исполняемая системная спецификация система» детализируется путем декомпозиции на подсистемы и блоки, реализующие основные внутрисистемные задачи. Выполняется моделирование системы на уровне сообщений - message level modeling (MLM), которое позволяет оценить производительность системы, интенсивность и проблемы внутренних и внешних взаимодействий между блоками и подсистемами. Прикладная функциональность проходит повторную верификацию на уровне с большей детализацией. Важно, что на уровне макроархитектуры сохраняется абстрактная, т.е. не привязанная к способу реализации - аппаратной или программной, природа функциональных блоков и подсистем. Как и на предыдущем уровне, могут использоваться универсальные (Math-CAD/Simulink - MathWorks) или специальные (Vista - Mentor Graphics, Incisive Palladium - Cadence) пакеты моделирования.

Следующий этап выбора способа реализации для каждого функционального блока системы, или, иначе, программно-аппаратной декомпозиции, является одним из са-

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

Наконец, на этапе микроархитектуры выполняется детальный анализ выбранной функциональной структуры системы и программно-аппаратной декомпозиции. Моделируются интерфейсы и взаимодействие между аппаратными и программными компонентами, отлаживаются методы и протоколы внутрисистемного управления и синхронизации функциональных блоков, подготавливаются спецификации и среда верификации для последующего проектирования аппаратной части на RTL-уровне, анализируются и выбираются аппаратные и программные платформы (семейства ПЛИС, ASIC, операционные системы, инструментальные средства проектирования). По результатам проектирования микроархитектуры должны быть разработаны детальные спецификации на техническое проектирование аппаратных и программных средств.

Уровень микроархитектуры наиболее поддержан в методическом и инструментальном плане: используется стандартная методология Transaction Level Modeling (TLM) - стандарт OSCI TLM версий 1 и 2; модели разрабатываются на специальных языках SystemC и SystemVerilog или на универсальном языке C/C++. Доступны специальные САПР: SystemArchitect, Visual Elite, PlatformExpress (MentorGraphics), Design-Ware(Synopsys), Incisive Palladium/Enterprise Simulator (Cadence).

Заключение

Приведенные оценка текущего состояния и краткий обзор перспективных подходов и маршрутов проектирования вычислительных систем в рамках технологии СнК показывают: есть представление о цели и направлении развития, есть заинтересованность пользователей и разработчиков методов и средств проектирования как за рубежом, так и в России, более того, есть видимые результаты, например, специализированные САПР. Однако в реальном применении данные методы, технологии и инструментарий пока показывают себя «сырыми» - фрагментарными, сложными и не всегда эффективными. В особой мере это касается уровней макроархитектуры и этапа аппаратно-программной декомпозиции. Отсутствие сколько-нибудь приемлемого уровня формализации и автоматизации именно на этих этапах проектирования на сегодня является «камнем преткновения» на пути развития технологий разработки не только СнК или встраиваемых систем, но и, в значительной степени, вычислительных систем в целом.

Несмотря на перечисленные проблемы, технология СнК остается одной из самых привлекательных и многообещающих на ближайшее десятилетие. Исследовательские работы в этой области активно поддерживаются международным и российским университетским сообществом. В частности, в СПбГУ ИТМО на базе лаборатории «Интегральные вычислители» и вновь создаваемого Национального исследовательского центра «Интеллектуальные системы управления и обработки информации» ведутся работы по исследованию и разработке новых методов и инструментальных средств высокоуровневого проектирования вычислительных систем, а также реализуются прикладные проекты на базе СнК.

Литература

1. Евтушенко Н.Д., Немудров В.Г., Сырцов И.А. Методология проектирования систем на кристалле. Основные принципы, методы, программные средства // ЭЛЕКТРОНИКА: НТБ. - 2003. - №3.

2. Бухтеев А.В. Методы и средства проектирования систем на кристалле. - Chip News. - 2003. - № 4.

3. Немудров В.Г., Мартин Г. Системы-на-кристалле. Проектирование и развитие. - М.: Техносфера, 2004. - 216 с.

4. Nicolaos S. Voros, Konstantinos Masselos System level design of reconfigurable systems-on-chip. - Springer, 2005.

Кустарев Павел Валерьевич - Санкт-Петербургский государственный университет ин-

формационных технологий, механики и оптики, кандидат технических наук, доцент, bva@tinuviel.ru

Ключев Аркадий Олегович - Санкт-Петербургский государственный университет ин-

формационных технологий, механики и оптики, кандидат технических наук, доцент, kluchev@lmt.ifmo.ru