Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вычислительные процессы.doc
Скачиваний:
11
Добавлен:
15.09.2019
Размер:
1.1 Mб
Скачать

2. Принцип работы компьютера или принципы фон Неймана.

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

  • арифметическо-логическое устройство, выполняющее арифметические и логические операции;

  • устройство управления, которое организует процесс выполнения программ;

  • запоминающее устройство, или память для хранения программ и данных;

  • внешние устройства для ввода-вывода информации.

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

Рис. 4. Блок-схема связей между основными устройствами ЭВМ.

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

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

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

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

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

Структура команды ЭВМ в простейшем случае включает в себя две части: операционную и адресную (рис.3.). Операционная часть содержит код операции КОП (сложить, вычесть и т.д.). Адресная часть содержит адреса ячеек памяти (А1,А2,...), в них хранятся значения операндов, с которыми надо выполнить заданную операцию. В зависимости от числа адресов, указанных в команде, различают одно-, двух-, трех- адресные команды.

Команда может хранится в памяти ЭВМ, как обычное слово длиной 2, 3, 4 байта и т.д. Длина команды в байтах обычно зависит от ее структуры и числа разрядов, отведенных под адресную и операционную части. Восемь двоичных разрядов, отведенных под код операции, позволяют закодировать 28=256 различных команд, что обычно является достаточным. Длина адресной части команды зависит от числа адресов и числа разрядов, отведенных для одного адреса. Так , чтобы иметь возможность указать в команде адрес любой ячейки оперативной памяти емкостью 1М байт, необходимо под адрес отвести 16 двоичных разрядов (220=1М).

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

y=(c(b+x))2.

Алгоритм решения задачи:

Ввести в оперативную память значения исходных переменных c, x, b.

Вычислить b+x. Присвоить переменной y значение полученного результата.

Вычислить yc. Присвоить переменной y значение полученного результата.

Вычислить y2. Присвоить переменной y значение результата.

Вывести значение y.

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

Будем считать, что команды используемой ЭВМ двухадресные и в общем виде записываются так:

K A1 A2,

где K - код операции; A1, A2 - значение первого и второго адреса команды.

Примем, что коды операции представляются двухзначными числами и имеют следующие значения:

01 - ввести,

02 - сложить,

03 - умножить,

04 - запомнить,

05 - вывести,

06 - остановить.

Уточним особенности выполнения каждой команды и использования их адресной части.

ВВЕСТИ - вводятся с входного устройства A1 чисел и запоминаются в поле оперативной памяти, начинающемся с ячейки A2.

СЛОЖИТЬ - складываются два операнда, один из которых храниться в ячейке оперативной памяти с адресом А1, второй - в ячейке с адресом А2.

ЗАПОМНИТЬ - записывается значение, хранящееся в сумматоре АЛУ, в ячейку с адресом А1. Адрес А2 в данной команде не используется.

ВЫДАТЬ - из поля оперативной памяти, начинающегося с адреса А2, на устройство вывода выводятся значения хранимых в памяти А1 чисел.

ОСТАНОВИТ - прекращается выполнение программы. Значения адресов А1 и А2 не используются.

Будем считать, что в перечисленных командах адреса А1 и А 2 могут меняться в пределах 00-99, а адресуемая ячейка оперативной памяти может хранить значение одной переменной или команду программы.

Составление программы. Сначала распределяется память. В рассматриваемом примере вычисляемое выражение содержит четыре переменных c, b, x, y, для хранения значений которых отводится четыре ячейки с номерами 01, 02, 03, 04 соответственно.

Запишем команды программы в соответствии с приведенным алгоритмом:

1) 01 03 01 - команда предписывает ввести (К=01) три значения (А1=03) в поле оперативной памяти, начинающееся с ячейки 01 (А2=01). Предполагается, что переменные в соответствии с принятым распределением памяти вводиться в порядке: c, b, x;

2) 02 02 03 - команда предписывает сложит (К=02) два числа, хранящиеся в ячейках с адресами 02 и 03. В результате вычисляется значение b+x;

3) 04 04 00 - команда предписывает запомнить (К=04) в ячейке 04 значение результата предыдущей операции. В итоге получаем: у=b+x;

4) 03 01 04 - команда предписывает умножить (К=03) число, хранящееся в ячейке с адресом 01 (А1=01), на число, хранящееся в ячейке с адресом 04 (А2=04). Результат равный значению c(b+x), сохраняется в АЛУ в сумматоре;

5) 04 04 00 - команда предписывает запомнить (К=04) в ячейке с адресом 04 (А1=04) значение результата предыдущей операции. В результате переменная y получает текущее значение, равное c(b+x);

6) 03 04 04 - команда предписывает умножить (К=03) число, хранящееся в ячейке с адресом 04 (А1=04), на число, хранящееся в ячейке с адресом 04 (А2=04). Результат равный значению (c(b+x))2, сохраняется в АЛУ в сумматоре;

7) 04 04 00 - команда предписывает запомнить (К=04) в ячейке с адресом 04 (А1=04) значение результата предыдущей операции. В результате переменная y получает текущее значение, равное (c(b+x))2;

8) 05 01 04 - команда предписывает вывести (К=05) одно число (А1=01), хранящееся в ячейке с адресом 04. В результате будет выведено значение переменной y;

9) 06 00 00 - команда предписывает прекратить выполнение программы (К=06).

Составленная программа включает в себя девять команд. Для хранения программы необходимо выделить место в оперативной памяти. Примем решение разместить программу в поле оперативной памяти, начинающейся с ячейки 06, так как ячейки 01-04 отведены под исходные данные и результат, а ячейка 05 специально оставлена свободной, так как она потребуется в дальнейшем.

Взаимодействие устройств ЭВМ. Согласованная работа устройств ЭВМ по автоматическому выполнению заданной программы работы, как указывалось, обеспечивается устройством управления (УУ). На рис.5 приведена простейшая структурная схема УУ, используемая для объяснения принципов функционирования УУ на примере выполнения составленной программы.

Рис. 5.

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

Добавление 1 в счетчик адреса команд обеспечивает последовательное выполнение команд программы.

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

К А1 А2.

Здесь, как и выше, К - код операции (пусть К=07), А1- адрес команды программы, к которой следует перейти, если результат предыдущей операции меньше 0; А2 - адрес команды. к которой следует перейти, если результат предыдущей операции положительный. В случае, если результат предыдущей операции равен нулю, выполняется команда программы следующая за командой "иди по условию".

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

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

К А1 А2,

где К - код операции (например, 08); А1 - адрес команды, которой передается управление. Адрес А2 в этой команде не используется.

Если очередная команда программы оказалась командой условной передачи управления, то блок центрального управления (рис.6) анализирует результат предыдущей операции, который хранится в сумматоре АЛУ. Если знак результата отрицательный, то в счетчик адреса команды УУ записывается адрес следующей команды из РгА1. Если знак результата положительный, а значение не нулевое, то в счетчик адреса команд записывается адрес команды из регистра РгА2. Если результат предыдущей операции равен нулю, то сохраняется естественный порядок выполнения программы и в счетчик адреса команд добавляется 1. На этом выполнение команды заканчивается и управление передается команде, адрес которой хранится в счетчике адреса команд.

Если очередная команда программы оказывается командой безусловного перехода, то выполнение ее состоит в пересылке значения из регистра РгА1 в счетчик адреса команд.