Темой июльского номера журнала Computer, 2004 г. (IEEE Computer Society, V. 37, No 7, July 2004) являются адаптивные вычислительные системы; по-английски это звучит более выразительно — Adaptive Computing. В тематической подборке — три разнородные статьи, подобранные без привлечения приглашенных редакторов.

Первая статья подборки называется «Масштабирование до предела возможностей кремниевой технологии с применением архитектур EDGE» (Scaling to the the End of Silicon with EDGE Architectures). У нее десять авторов, указанных явно, плюс группа TRIPS, в которой еще 16 человек (все из Техасского университета), поэтому ограничимся указанием первого автора в списке — Дуг Бюргер (Doug Burger). В последние два десятилетия устойчивый рост тактовых частот процессоров обеспечивался за счет активного использования конвейерной обработки при сравнительно небольших изменениях архитектуры системы команд. Однако возможности масштабирования на основе конвейеризации практически исчерпаны; требуются новые идеи. Авторы отмечают четыре основные характеристики процессорных архитектур будущего.

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

Авторами разработан новый класс архитектур с «явным исполнением графа данных» (explicit data graph execution, EDGE), обладающих указанными характеристиками. Архитектура TRIPS — разновидность EDGE. Разработан прототип процессора с этой архитектурой; реализовано несколько компиляторов.

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

Статью «Компоновка адаптивных программ» (Composing Adaptive Software) написали Филип Маккинли (Philip McKinley), Сейед Масуд Саджади (Seyed Masoud Sadjadi), Эрик Кастен (Eric Kasten) и Бетти Ченг (Betty HCheng). Композиционная адаптация дает возможность программному обеспечению изменять структуру и поведение при изменениях в среде выполнения. Потребности в адаптивных программах возрастают по мере развития повсеместных вычислительных систем (ubiquitous computing) и самонастраивающихся вычислительных систем (autonomic computing). В отличие от параметрической адаптации (ее обычно демонстрируют на примере протокола TCP), при композиционной адаптации происходит замена алгоритмических и структурных компонентов системы с целью обеспечения большего соответствия программы ее текущей среде.

Статья содержит обзор подходов, инструментальных средств и результатов исследований в области композиционной адаптации. Ключевые технологии в этой области — разделение концепций, вычислительная рефлексия и компонентная разработка. Разделение концепций обеспечивает возможность раздельной разработки и кодирования программ, соответствующих ортогональным концепциям, таким как качество услуг, энергопотребление, безопасность и т.д. Отделение ортогональных концепций от общего функционального поведения программной системы упрощает разработку и сопровождение и способствует повторному использованию программ. В инженерии программного обеспечения этот подход часто называют аспектно-ориентированным программированием (aspect-oriented programming, AOP). Под вычислительной рефлексией понимается возможность программы принимать во внимание особенности собственного поведения. Рефлексия включает два вида действий — самонаблюдение (introspection), позволяющее приложению наблюдать за своим поведением, и посредничество (intercession), дающее системе или приложению возможность модифицировать свое поведение на основе проведенных наблюдений. Распространенный подход к обеспечению вычислительной рефлексии основывается на метаобъектном протоколе, который обеспечивает структурную или поведенческую рефлексию. В сочетании с AOP этот протокол позволяет во время выполнения влить в приложение код, поддерживающий ортогональную концепцию. Наконец, компонентная разработка поддерживает два вида композиции — статическую и динамическую композицию на основе отложенного связывания. Обсуждаются некоторые конкретные подходы к созданию композиционно-адаптивных программ. Выделяются основные нерешенные проблемы композиционной адаптации: гарантирование требуемых характеристик; безопасность; интероперабельность и средства поддержки принятия решений, которыми руководствуются адаптивные программы.

Первым в списке авторов третьей статьи подборки, «Бесшовные мобильные вычисления на основе фиксированной инфраструктуры» (Seamless Mobile Computing on Fixed Infrastructure), указан Майкл Козух (Michael Kozuch). Термин «мобильные вычисления» обычно связывают с образом переносимого компьютера, однако стремительно уменьшающиеся цены наводят на мысль о том, что повсеместно распространенная компьютерная инфраструктура в состоянии резко сократить потребность в обязательном наличии при себе таких устройств. Столики кафе, кресла самолетов и поездов будут оборудованы компьютерами, доступными для использования их текущим обитателем. При начале работы компьютеру понадобится узнать индивидуальные характеристики пользователя; после завершения работы все ее следы на данном компьютере исчезнут. Для того чтобы одинаково удобно работать в любом месте, нужно сделать процесс индивидуализации точным и быстрым. Кроме того, стоимость администрирования таких систем должны быть низкой. Исследователями Intel разработана технология ISR (Internet Suspend/Resume — «приостановить/возобновить»), которая позволяет быстро персонализировать и деперсонализировать анонимную компьютерную технику для временного использования. Пользователь может приостановить работу на ISR-машине в одном месте, переместиться в другое место и возобновить работу на другой ISR-машине. Ключевые технологические аспекты ISR — виртуализация аппаратуры и кэширование файлов на основе использования «толстых» клиентов. Предложенный подход не требует модификации приложений или операционных систем.

В журнале опубликованы еще три больших статьи, не вошедшие в подборку. Первую из них, «Кто отвечает за небезопасные системы?» (Who Is Liable for Insecure Systems?), написала Ненси Мед (Nancy Mead). В течение многих лет профессионалы обсуждали тему ответственности за небезопасные системы. Разные виды дефектов программ могут сделать систему небезопасной. Как отмечает Эрин Коннелли (Erin Koneally, Computer Security Journal, V. 16, No. 4, 2000), эти дефекты проистекают из специфики текущего состояния индустрии программного обеспечения:

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

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

Статья «Проблемы безопасности в высокоскоростной Internet-сети» (Issues in High-Speed Internet Security) написана Педером Джангком (Peder Jungck) и Саймоном Шимом (Simon Shim). Современные средства сетевой безопасности не обеспечивают должного уровня безопасности высокоскоростных сетей при наличии новых поколений быстро распространяющихся червей. Требуется новая парадигма безопасности, обеспечивающая гибкость, эффективность и высокую скорость. Авторы констатируют: для обнаружения неизвестных вирусов и червей необходим контроль на всех уровнях стека OSI. Однако при использовании современных технологий это неизбежно приведет к задержкам. Предлагается набросок архитектуры системы сетевой безопасности, где эффективность достигается за счет использования специализированных сетевых процессоров, а гибкость — за счет программируемых логических матриц.

Статья, озаглавленная «Основанная на методиках динамическая реконфигурация приложений с мобильным кодом» (Policy-Based Dynamic Reconfiguration of Mobile-Code Applications), написана Ребеккой Монтанари (Rebecca Montanari), Эмилем Лупу (Emil Lupu) и Чезаре Стефанелли (Cesare Stefanelli). Современные модели программирования с мобильным кодом направлены на решение проблем разработки и внедрения Internet-приложений путем использования концепции местоположения, которая может использоваться программистами для управления поведением и размещения приложения. Существующие модели различаются тем, как они распределяют данные и код приложения:

  • в модели удаленного вычисления (remote evaluation) вычислительному компоненту позволяется послать код в другой узел для удаленного выполнения;
  • модель кода по требованию (code by demand) позволяют вычислительному компоненту при необходимости загрузить нужный код из удаленного репозитория;
  • в модели мобильных агентов (mobile agents) вычислительный объект (код и состояние вычислений) может мигрировать на другой узел.

Разработанная авторами среда Poema (Policy-Enabled Mobile Applications) позволяет разрабатывать приложения, которые могут во время выполнения изменять как функциональность, так и расположение при изменении условий среды. Реконфигурация происходит под управлением методик — декларативных правил, управляющих выбором вариантов поведения системы. Разработчики и даже администраторы приложений могут динамически загружать или удалять методики, реконфигурируя тем самым приложение во время его выполнения без потребности изменения его кода.

До новой встречи, Сергей Кузнецов, kuzloc@ispras.ru.