Другими словами, Нейман («Видите ли, Джонни вовсе не человек. Но он так долго жил среди людей, что научился прекрасно их имитировать») предложил процедуру, при которой ЭВМ сама управляла своей работой. Вмешательство человека – оно бы замедлило ход процессов, свело бы на нет все преимущество быстроты ЭВМ – было теперь полностью исключено.
Только после реализации этих революционных идей компьютер смог выказать всю свою прыть, всю резвость, на которую он был способен. Казалось бы, теперь ЭВМ – полновластная хозяйка своих возможностей, ЭВМ сможет решить любую задачу. Но нет, творились удивительные вещи. По многим показателям человеческий мозг по-прежнему превосходил компьютер.
Беда компьютера была в том, что предложенный Нейманом универсальный способ выполнения машинных программ был представлен в виде последовательности элементарных операций – храпения в памяти, ввода и вывода, пересылки данных, цепочки арифметических и логических действий. Пока выполнялось одно, все остальное было как бы «заморожено», «обездвижено», ждало своего часа, своей очереди. Машина бездельничала, лодырничала, но явно не по своей вине, а по вине человека, навязавшего ей свои представления о том, как следует работать компьютеру.
Прошли десятки лет. Менялись технологии, языки общения с машиной. Однако принципы, заложенные при разработки первого поколения ЭВМ (ЭНИАК, машины на лампах), сохранялись практически неизменными. И… превратились в тормоз развития всей вычислительной техники.
13.6. Змей Горыныч берется за расчеты
Наибольшая скорость передачи сигнала в нервных волокнах достигает 120 метров в секунду, или примерно 400 километров в час! Похоже, мы не без основания употребляем слова «быстра, как мысль». Но электронный сигнал, движущийся со световыми скоростями, оставляет мысль человеческую далеко позади.
Неутешительно для людей и другое сравнение. Клетки мозга не способны генерировать более чем тысячу импульсов-колебаний за секунду. А в ЭВМ тот же показатель перевалил за миллион. И крайне удивительно, что, подойдя по плотности элементов к природным рубежам, побив все рекорды скорости, электронный мозг по ряду показателей все еще уступает своему природному прототипу.
Почему так? Да потому, что мозг как бы умеет решать одновременно сразу несколько задач. Он обрабатывает информацию не последовательно, а параллельно!
Поясним эту мысль на простых примерах. Допустим, необходимо приготовить обед. Если один человек займется приготовлением закуски, другой – сварит суп, третий – начнет жарить мясо, четвертый – готовить гречневую кашу, пятый – побеспокоится о компоте, шестой – сбегает за мороженым, сесть за стол можно будет очень скоро. Но представьте иное: все операции по приготовлению обеда идут в строжайшей последовательности. Нельзя варить суп, пока не готов салат, нельзя жарить мясо, пока не сварен суп, и так далее. Сесть за обеденный стол придется тогда лишь к вечеру.
Второй пример даст нам… армия. Если бы выполнение простой команды «поворот направо» исполнялось пошагово: Иванов – направо, Петров – направо и так далее, то это очень бы усложнило управление. Куда проще добиться того же результата при совместных действиях подчиненных. Командир отдает групповую команду: «Направо!» – и взвод, рота, батальон быстро и одновременно исполняют приказ.
Вот это и есть последовательный и параллельный (ум хорошо, два лучше!) способ решения задачи. И сразу начинаем догадываться, что мозг человека – это словно бы Змей Горыныч о семи головах. Если бы этому поумневшему в наш научный век сказочному созданию предложили взяться за расчеты, он бы, несомненно, сумел бы с толком распорядиться своими головами.
Многоголовая ЭВМ – вот хорошая идея: перейти от однопроцессорных (либо отдельная ЭВМ, либо ее часть – отдельный микропроцессор) к многопроцессорным (многомашинным) вычислительным комплексам.
Мысль, казалось бы, проста. С чем не справится одна ЭВМ, с легкостью сделают десятки, сотни машин. Надо только распараллелить их работу, разбить задачу на множество подзадач, распределить их между машинами и заставить всех их трудиться одновременно. Ограничений в этом подходе нет. Весь вопрос только в том, как умело организовать архитектуру многомашинных систем, их коллективную память, все каналы обмена данными. И тут возникли трудности.
Распараллелить работу ЭВМ пытались многие у нас в стране и за рубежом. Было предложено великое множество типов многопроцессорных систем. Магистральные, конвейерные, векторные, кольцевые, матричные, звездные, циклические, иерархические, ассоциативные, рекурсивные и многие другие. Но решили ли они проблему? Нет.
Как же быть? Как найти принципиально новые подходы? А может, стоит более внимательно присмотреться к тому, как аналогичные проблемы решает природа?
13.7. Биологическая коммутация