Обзор апрельского (2000 г.) журнала Computer (Volume 33, Number 4), IEEE Computer Society

Соответствующая часть журнала включает введение приглашенных редакторов Ранжи Вемури (Ranga R. Vemuri) и Рендолфа Харра (Randolf E. Harr) и пять статей. Как отмечают редакторы, идея создания конфигурируемых, настраиваемых на потребности заказчиков вычислительных устройств возникла в конце 60-х. Однако первые реально работающие подобные устройства появились только спустя двадцать лет. Такие устройства стали называть "программируемыми логическими матрицами" (Field-Programmable Gate Arrays - FPGA). Матрица состоит из набора логических элементов и связей, структуру и функции которых может программировать конечный пользователь в соответствии с требованиями приложения. (Подчеркнем, что в этом контексте следует очень аккуратно относиться к словосочетанию "конечный пользователь". На самом деле такой "пользователь" должен быть хорошим специалистом в области схемотехники, поскольку фактически "программирование" или "конфигурирование" FPGA по своей сути мало отличается от проектирования новой логической матрицы.)

На коммерческий рынок FPGA поставляют главным образом две компании: Xilinx и Altera. Их программируемые матрицы выпускаются достаточно большими тиражами и поэтому обладают умеренной стоимостью. Одной из основных областей использования FPGA является область проектирования новых (непрограммируемых) интегральных схем, поскольку вместо дорогостоящего заказа на производство опытной партии схем, выполнение которого занимает много времени, достаточно купить требуемое число FPGA и произвести необходимое программирование силами своей собственной компании (для поддержки такого программирования имеется ряд инструментов).

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

Первой статьей в тематической подборке является статья Эндрю Дехона (Andre DeHon) "Преимущества степени интеграции конфигурируемых вычислений" ("The Density Advantage of Configurable Computing"). Автор, представляющий университет Беркли, по всей видимости, является апологетом подхода к применению FPGA для повышения эффективности вычислений; в частности, этой теме посвящена его диссертация. Во введении автор перечисляет прикладные области, в которых использование FPGA обеспечивает резкое ускорение (иногда до двух порядков): шифрование, обработку сигналов, эмуляцию новых микропроцессоров и т.д. Далее автор пытается объяснить причины этого, показывая, что FPGA обеспечивают более высокий уровень интеграции по сравнению с непрограммируемыми матрицами, и поэтому основанные на FPGA достигают большей эффективности в расчете на единицу площади схемы. Интересно, что только в этой статье (и очень кратко, на врезке) поясняется принципиальная схема организации современных FPGA.

У второй статьи "Обработка видео-образов с применением архитектуры Sonic" ("Video Image Processing with Sonic Architecture") четыре автора: Симон Хейенс (Simon D. Hayens), Джон Стоун (John Stone), Питер Чиунг (Peter Y.K. Cheung) и Уэйн Люк (Wayne Luk). Современные индустриальные системы обработки видео-изображений представляют собой смесь из высокопроизводительных рабочих станций и интегральных схем, ориентированных на конкретное приложение (Application-Specific Integrated Circuits - ASIC). По мнению авторов, обработка видео-изображений в профессиональной среде широковещания требует большей вычислительной мощности и пропускной способности, чем те, что могут обеспечить современные компьютеры общего назначения. Применение ASIC не обеспечивает нужной гибкости и вызывает большие расходы. Разработанная архитектура Sonic представляет собой конфигурируемое устройство, подключаемое к шине основного компьютера и реализованное на основе FPGA (в первом варианте используются FPGA компании Altera). Некоторые FPGA динамически реконфигурируются при изменении характера обработки, а другие конфигурируются статически и играют роль ASIC. Авторы отмечают недостаточные для их целей объемы памяти, обеспечиваемые имеющимися сейчас на рынке FPGA.

Название третьей статьи - "Реконфигурируемые акселераторы для решения комбинаторных проблем" (Reconfigurable Accelerators for Combinatorial Problems). Автор статьи -- Марко Платцнер (Marco Platzner). В статье речь идет о возможности ускорения только одной комбинаторной проблемы - проблемы булевской удовлетворяемости (Boolean Satisfiability - SAT). Проблема состоит в том, чтобы найти булевские значения (0,1) для присваивания набору булевских переменных x1, ..., xn, чтобы при этом заданная булевская формула вычислялась в 1. Эта проблема NP-полна, т.е. в худшем случае время ее решения возрастает экспоненциально в зависимости от числа переменных. Предложена аппаратная схема решения проблемы SAT. Показано преимущество использования реконфигурации в зависимости от конкретного представителя решаемой проблемы SAT. Реализован прототип системы с использованием FPGA компании Xilinx.

Четвертая статья "Архитектура Garp и Си-компилятор" ("The Garp Architecture and C Compiler") может представить особый интерес для специалистов в области распараллеливания последовательных программ. Все авторы статьи - Тимоти Каллахан (Timothy J. Callahan), Джон Хаузер (John R. Hauser), Джон Вавжинек (John Wawrzynek) - работают в университете Беркли. Это единственная статья в подборке, в которой одновременно обсуждаются и вопросы организации аппаратуры, и сопутствующие потребности в развитии программного обеспечения. Похоже, что при разработке архитектуры Garp авторы руководствовались следующими соображениями: (1) современные FPGA обладают недостатками, в частности, отсутствие прямого доступа к памяти основного компьютера увеличивает время реконфигурации; (2) исторически FPGA использовались для ускорения решения специальных задач, но почему бы не попробовать использовать идею конфигурируемого оборудования для ускорения выполнения программ общего назначения. В архитектуре GARP конфигурируемое оборудование подсоединяется к основному процессору MIPS как сопроцессор. (Заметим, что это оборудование почти полностью спроектировано, но не реализовано в кремнии.) Может быть, наиболее интересно то, что конфигурационная информация для разных частей Си-программы генерируется автоматически специально разработанным компилятором. При этом производится анализ графа потока данных программы и выделяются так называемые гиперблоки, операторы, содержащиеся в которых, являются кандидатами на выполнение на сопроцессоре.

Завершает тематическую подборку пятая статья "PipeRench: реконфигурируемая архитектура и компилятор" ("PipeRench: A Reconfigurable Architecture and Compiler"). Ее авторы: Сет Копен Голдштейн (Seth Copen Goldstein), Герман Шмидт (Herman Schmit), Михай Будио (Mihai Budio), Шинари Кадамби (Srihari Cadambi), Мэтт Мо (Matt Moe) и Рид Тейлор (Reed Taylor) из университета Карнеги-Меллона. Как и в предыдущей статье, предлагается архитектура, пригодная для ускорения выполнения программ общего назначения и основанная на идее реконфигурируемого оборудования. В данном случае это оборудование подключается к шине основного компьютера и представляет собой конфигурируемый конвейер процессорных элементов. При реконфигурировании можно связывать вместе несколько процессорных элементов, получая возможность выполнения более сложных функций. Существенно, что в PipeRench само конфигурирование происходит в конвейерном режиме, так что оборудование может начать работать, не дожидаясь конца конфигурирования. Разработан специальный язык DIL (Dataflow Intermediate Langauge) и компилятор для него, обеспечивающий оптимальное выполнение программы на конкретном образце PipeRench. Статья не дает отчетливой информации о текущем состоянии проекта, но, похоже, что аппаратный прототип существует.

В журнале опубликованы еще две большие статьи с разной тематической направленностью. Статья "Использование несогласованности при разработке программного обеспечения" ("Leveraging Inconsistency in Software Development") Башара Нисейбеха (Bashhar Neseibeh), Алессандры Руссо (Alessandra Russo) и Стива Истебрука (Steve Easterbrook) посвящена проблемам согласованности описаний, возникающих в процессе проектирования и разработки программного обеспечения. Хотя большинство разработчиков считают несогласованность нежелательной, они понимают, что их описания часто бывают несогласованными и приспосабливаются жить в таких условиях. Авторы предлагают систематический подход к управлению несогласованностью. Прежде всего отмечается, что несогласованность не всегда вредна. Далее предлагается использовать для проверки согласованности набор правил согласованности, которые различаются для разных видов несогласованности. В планах авторов создание среды разработки программного обеспечения, в которой управление несогласованностью будет играть центральную роль.

В статье "Как справиться со стрессом при программировании на языке Java" ("Coping with Java Programming Stress") Роджера Александера (Roger T. Alexander, George Mason University), Джеймса Бимана (James M. Bieman, Colorado State University), Джона Виеги (John Viega, Reliable Software Technologies) обсуждаются некоторые слабые места языка Java. Этот язык хорош, но не идеален. Его слабые места могут привести к неприятным ошибкам. Знание этих слабых мест может помочь использовать соответствующие конструкции более разумным образом. Описываются семь серьезных недостатков (защищенный доступ, недоразумения с конструкторами и т.д.) и несколько мелких. По поводу каждого недостатка даются рекомендации программистам.

Кроме того, журнал содержит разделы технологических и кратких новостей, а также несколько коротких заметок, среди которых следует выделить интервью с одним из основных разработчиков языка XML Питером Флинном (Peter Flynn). Полностью перевод этой статьи публикуется в этом выпуске нашего журнала в рубрике "Гостиная ОС".

Журнал Computer рассылается всем членам IEEE Computer Society, а подписчики на электронную библиотеку получают доступ в Internet ко всем изданиям Computer Society, а также к трудам многочисленных конференций. Это неоценимый источник информации.