Параллельное
исполнение
[предыдущая глава]  [оглавление]  [следующая глава]

Параллельное исполнение

Под параллельным исполнением понимается одновременное решение компьютером или биокомпьютером нескольких разных задач, либо нескольких подзадач, составляющих элементы одной задачи. Под одновременным подразумевается такое исполнение, когда за период времени от момента начала до момента завершения некоторой задачи тот же компьютер или биокомпьютер успевает полностью или частично решить другую задачу. Мнение о том, что подобное свойственно только биокомпьютерам, является неправильным. В качестве опровержения рассмотрим различные примеры параллельного исполнения.

Прерывания.

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

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

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

Поочередное исполнение.

Второй метод выполнения нескольких задач сразу заключается в периодическом переходе от одной задачи к другой и возвращении назад. При этом обе задачи могут быть длительными.

Рассмотрим пример для биокомпьютера. Хозяйка готовит обед. Она поставила на плиту рис и чистит картошку. Чтобы молоко не сбежало, она время от времени оборачивается в сторону плиты, чтобы посмотреть, не пора ли помешать кашу. Если надо, она перемешивает варево, добавляет масла и т.п., потом возвращается к чистке картошки, потом вновь смотрит на плиту и т.д.

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

Синхронное исполнение.

Под синхронным исполнением будем понимать одновременное решение двух и более задач без остановки каждого решения.

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

Компьютер также способен на подобное.

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

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

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

И в-четвертых, внутри каждого процессора есть несколько блоков, каждый из которых выполняет свою подзадачу синхронно с другими. Например, в центральных процессорах фирмы Intel (такой процессор или сильно похожий на него, скорее всего, находится и внутри вашей ЭВМ) применяется технология конвейера. Программа, которую исполняет процессор, состоит из отдельных команд. Пока одна часть процессора занимается тем, что выполняет команду номер 100, вторая тем временем расшифровывает команду номер 101, а третья достает из памяти команду номер 102. Благодаря этому серия команд выполняется втрое быстрее. Это примерно соответствует конвейеру на автомобильном заводе, где каждый рабочий вносит свой вклад и передает изделие следующему рабочему.

Степень параллельности.

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

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

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

Это объясняет тот факт, что некоторые задачи компьютер не способен решать быстрее человека, даже несмотря на то, что метод решения известен. Я говорю о распознавании речи и зрительных образов. Эти задачи можно разделить на очень большое количество параллельно решаемых подзадач - и тут медленный, но сильно распараллеленный мозг часто побеждает быструю электронику. Качественным скачком в этой области могут стать компьютеры нового типа - так называемые "квантовые". Их разработка сейчас находится в самой ранней стадии. Устройство квантового компьютера сочетает в себе высокую степень параллелльности, подобно биокомпьютеру, и скорость, характерную для электромагнитных сигналов в обычном компьютере. Но надо заметить, что квантовый компьютер не является чем-то магическим и волшебным в плане обработки информации. Квантовый компьютер способен решать задачи, которые обычный компьютер не успеет решить за время человеческой жизни. Но если бы обычной полупроводниковой ЭВМ дали очень, очень много времени, то она бы все сделала. Далеко не все задачи успешно делятся на много параллельных подзадач, поэтому компьютер будущего, по всей вероятности, будет представлять собой сочетание квантовых блоков и привычных полупроводниковых микросхем.