Журнал Компьютерра - Журнал «Компьютерра» №25-26 от 12 июля 2005 года
Меж нулем и единицей
54 года - и все тот же «принцип арифмометра»…Впрочем, грех жаловаться - этот принцип оказался столь гибким в приложениях, что даже принципиально новые идеи вычислительных устройств (например, нейроподобные сети или системы с нечеткой логикой) вначале реализуются в виде программ для «обычных» компьютеров. Зачастую они в этом виде так и остаются навсегда… Все это наводит на мысль, что, возможно, «компьютеры послезавтрашнего дня» с точки зрения «железа» не будут чем-то особенным отличаться от нынешних, но вот процессы, протекающие в их недрах, скорее всего, будут совсем другими.
Вот об этих «других процессах» мы и поговорим.
Цифра или не цифра?Аналоговые вычислительные машины (АВМ), как известно, устроены не по принципу арифмометра. Обрабатываемая информация в них представляется теми или иными физическими величинами - чаще всего электрическими: напряжением, током, сопротивлением, реже - частотой или интервалами времени. Однако во всех случаях это измеряемые величины, которые доступны непосредственному измерению при помощи прибора.
Кроме измеряемых величин, физические процессы характеризуются также вычисляемыми параметрами, которые недоступны непосредственному измерению прибором и в то же время не всегда сводимы к простым процедурам арифметических манипуляций с измеряемыми величинами. Вычисляемые параметры тоже являются аналоговыми величинами, так как могут непрерывно приобретать любые, сколь угодно мало отличающиеся друг от друга значения. Принципиально важно, что эти величины тоже могут быть носителями информации, подлежащей обработке или запоминанию.
Обратим внимание на одну из богатейших по своим информационным возможностям аналоговую вычисляемую величину - вероятность. Именно то, что вероятность всегда вычисляется и предстает перед нами в виде цифры, маскирует ее аналоговую «сущность».
Отметим также, что вероятность наступления какого-то события (например, переключения триггера) как величина или параметр, характеризующий какой-либо физический процесс, объективно существует даже тогда, когда мы ее не знаем или не можем вычислить. Это очень важное замечание! Постепенное осознание этого обстоятельства позволило в течение тридцатилетней истории работ над вероятностными вычислителями прийти к принципиально новым идеям в этой области; впрочем, об этом поговорим чуть позже.
В 1970-х годах начались активные теоретические исследования и разработки так называемых стохастических вычислительных машин, основанных на вероятностном представлении информации. Переменные и константы в этих аналоговых машинах представлялись вероятностями переключения цифровых логических элементов. Другими словами, информация кодировалась вероятностью, которая в силу своих фундаментальных свойств может принимать непрерывный ряд значений в интервале от 0 до 1.
Архитектура стохастических вычислителей в общем-то повторяла решения, разработанные для аналоговых вычислительных машин: программирование сводилось к набору структурной схемы из решающих блоков, которые в отличие от АВМ были построены не на операционных усилителях, а на логических элементах. Подкупала простота технической реализации вычислителя: замена операций над числами операциями над вероятностями позволила воспользоваться глубокими аналогиями, существующими между аппаратом событийной теории вероятности и принципами математической логики; так, например, операция умножения вероятностей независимых событий формально полностью совпадает с логической операцией конъюнкции, а суммированию вероятностей соответствует операция дизъюнкции. Эти аналогии позволяют считать логические переменные некоторыми случайными событиями, имеющими определенные вероятности появления. С инженерной точки зрения это означает, например, что один логический элемент ИЛИ (дизъюнкция) становится сумматором, а единственный элемент И (конъюнкция) превращается в умножитель!
Этот подход оказался особенно хорош для создания специализированных процессоров, рассчитанных на непрерывное вычисление, предположим, управляющего воздействия в системах управления. Будучи «по природе» аналоговым, такой вычислитель мог решать задачи в реальном времени независимо от объемов вычислений; а будучи цифровым (по элементной базе), он был лишен таких принципиальных недостатков обычных АВМ, как дрейф нуля и шумы операционных усилителей, а также наводок в сигнальных цепях.
Появление широко доступных БИС ПЛИС(Программируемая Логическая Интегральная Схема, еще называется ПЛМ - Программируемая Логическая Матрица) и БМК(Базовый Матричный Кристалл. Обычно отличается от ПЛИС (ПЛМ) наличием на кристалле большого набора базовых элементов ввода-вывода, аналого-цифровых и цифро-аналоговых преобразователей, контроллеров стандартных интерфейсов и т. д.) позволило реализовать на одном кристалле довольно сложные схемы стохастических вычислителей, однако широкого распространения они не получили - сказался главный недостаток этой технологии (как и вообще всех аналоговых технологий): неудобство перепрограммирования и слишком сильная «привязка» исполняемого алгоритма к аппаратной части.
«Принцип арифмометра» победил - наступила эпоха универсальных цифровых вычислителей.
Принцип матрешкиПытаясь представить облик процессора будущего, я постоянно боролся с соблазном начать фантазировать. Еще бы: тут тебе и квантовые вычисления, и ДНК-вычислители, и белковая логика… Квантовые процессоры я бы выделил в отдельную категорию - по единственной причине: им присущи принципиально отличные от других механизмы обработки информации. Все остальное - те же «арифмометры»…
Короче говоря, если в качестве «послезавтрашнего компьютера» вообразить некий «черный ящик», то становится ясно, что дело не в том, на какой элементной базе он построен, а в том, что построено. Какая обрабатывающая среда находится внутри «ящика»?
Вообще, понятие «обрабатывающая среда» довольно абстрактно. Практически это может быть физическая среда, свойства которой дают ей возможность производить вычисления. Кусок стекла, которому придана форма линзы, - уже вычислитель! Он «умеет» вычислять Фурье-преобразование оптических сигналов… Но вот беда: существует так называемый критерий физической реализуемости. В частности, он означает, что не для всякого вычисления можно подобрать (или создать) соответствующую физическую среду. Но даже если критерий физической реализуемости удовлетворяется, практически создать необходимую среду невероятно трудно!
Гораздо продуктивнее моделировать обрабатывающие среды в цифровом виде. Чтобы сделать это, мы должны взять цифровой процессор (любой! хоть арифмометр) и написать для него программу, эмулирующую информационные процессы и структуру нужной нам обрабатывающей среды. Тем самым мы как бы создаем «виртуальную оболочку» вокруг обрабатывающей среды физического уровня, в качестве которой выступает процессор. Что при этом происходит? А вот что: мы преодолеваем критерий физической реализуемости.
Следующий важный вопрос, мимо которого не пройти: что мы хотим получить? Если под «процессором будущего» понимать просто «ну очень быстрый процессор», то, думается, за этим дело не станет. Но, видимо, мы хотим чего-то большего… Чего?
Честный ответ: хотелось бы создать модель себя. По крайней мере, в части восприятия и обработки приходящей извне информации.
А что это значит, если говорить языком технического задания?
Во-первых, быстродействие. Производительность цифровых процессоров зависит от частоты, разрядности и распараллеливания вычислительных процессов. У аналоговых вычислителей таких ограничений нет, но есть много своих специфических «минусов» и существует упоминавшийся выше критерий реализуемости (поскольку аналоговый процессор - это, собственно, физическая обрабатывающая среда «в чистом виде»). А что, если окружить цифровой процессор виртуальной аналоговой «оболочкой»? Из чего ее сделать? Вариант ответа: эта «оболочка» может представлять собой стохастический вычислительный процесс, оперирующий вероятностями, и тогда отпадают ограничения по быстродействию!
Во-вторых, отсутствие необходимости в программировании. Раз нет программирования, следовательно - самообучение? Да. Нейроподобные сетевые структуры. Об их свойствах написаны горы книг, однако сейчас имеет смысл отметить следующее: нейросети - аналоговые обрабатывающие среды, которые мы давным-давно научились реализовывать в качестве «оболочек» над цифровыми процессорами, но… Но при этом нейросети, реализованные в форме программ, оперирующих цифровыми входными сигналами, сами становятся цифровыми, теряя в быстродействии и в качественных показателях. Один из перспективных вариантов разрешения этого противоречия заключается в создании стохастических нейроалгоритмов, позволяющих сохранять аналоговые принципы функционирования нейросетей при цифровом моделировании(Большая работа в этом направлении проводилась в Киевском институте кибернетики им. В. М. Глушкова под руководством академика Н. М. Амосова, в частности, Э. М. Куссулем, А. М. Касаткиным, Л. М. Касаткиной, Т. В. Федосеевой).