Конвейерная обработка

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

Пытаясь разрешить эту проблему, инженеры сосредоточили свое внимание на производительности машины (throughput), а не просто на скорости выполнения команд. Термин «производительность» обозначает общее количество работы, которое машина может выполнить за определенное время, а не то, как долго она выполняет одну задачу.

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

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

Многопроцессорная машина

Конвейерную обработку можно считать первым шагом к параллельной обработке (parallel processing), при которой несколько действий выполняются одновременно. Однако для настоящей параллельной обработки нужно несколько процессоров. Машины, обладающие этим свойством, называются многопроцессорными машинами.

По такому принципу построены многие современные компьютеры. Один метод — подключить несколько процессоров, каждый из которых напоминает центральный процессор в однопроцессорной машине, к одной оперативной памяти. В этой конфигурации процессоры выполняют работу независимо друг от друга, при этом они оставляют друг другу сообщения в общих ячейках памяти, координируя таким образом работу. Например, когда один из процессоров сталкивается со сложной задачей, он может сохранить программу, являющуюся частью этой задачи, в общей памяти и попросить другой процессор выполнить ее. Машина, в которой разные последовательности команд выполняются над разными наборами данных, называется MIMD-машиной (multiple-instruction stream, multiple-data stream — машина с множеством потоков команд и множеством потоков данных), в отличие от более традиционной SISD-машины (single-instruction stream, single-data stream — машина с одним потоком команд и одним потоком данных).

Разновидностью многопроцессорной архитектуры является машина, в которой процессоры соединены вместе так, что они выполняют ту же самую последовательность команд одновременно, каждый над своим набором данных; Такие машины называются машинами с SIMD-архитектурой (single-instruction stream, multiple-data stream — с одним потоком команд и множеством потоков данных). Эти машины используются, когда нужно применить одни и те же действия к отдельным наборам похожих элементов, входящих в один большой блок данных.

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

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

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

Таким образом, проектирование компьютеров расширяет модель процессор-память и в некоторых случаях совсем уходит от нее, чтобы разрабатывать более эффективные машины.


ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

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

Мы начнем с обсуждения в главе 3 операционных систем (operating system). Эти системы представляют собой большие, сложные пакеты программ, которые управляют общими действиями машины или группы машин, объединенных в сеть. Таким образом, рассмотрение операционных систем включает в себя и обсуждение компьютерных сетей вообще и Интернета в частности. Глава 4 посвящена алгоритмам, при этом акцент делается на нахождение алгоритмов и их представление. В главе 5 обсуждается вопрос, как алгоритмы сообщаются машинам с помощью программирования, и рассматриваются свойства распространенных языков программирования. Глава 6 посвящена процессу разработки программного обеспечения в целом.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: