
Лекция 11. Компьютер как система для манипулирования символьными структурами
11.1. Фон Неймановская модель компьютера
Память
данных и память команд содержит слова
в двоичном алфавите. Это позволяет
объединить их в одно устройство –
оперативную память.
В
КОП Адр
1 Адр
2
Адр ререзультата
Формат команды
Рис. 11.1
Что же это за условия?
Чтобы ответить на этот вопрос, надо рассмотреть последовательность действий, которую выполняет машина при реализации команды:
-
Из памяти по адресу, формируемому Сч. Ком. в УУ процессора, извлекается слово в двоичном алфавите.
Оно поступает в Рг. Ком. УУ, дешифруется и обеспечивает настройку АЛУ на соответствующую операцию.
-
Процессор извлекает исходные данные из ячеек памяти, адреса которых указаны в команде.
Операнды в виде слов в двоичного алфавита поступает в Рг. АЛУ.
Интерпретация этих слов определяется выполняемой операцией.
-
Результат пересылается в память данных по указанному адресу.
-
Процессор переходит к новой инструкции (либо к следующей, либо к той, адрес которой указан в обрабатываемой инструкции).
И так до инструкции СТОП.
С учетом изложенного на поставленный выше вопрос о том, при каких условиях в процессе выполнения программы машина интерпретирует извлекаемое из памяти слово должным образом (операция либо данные), следует ответить так: в зависимости от того, куда (УУ или АЛУ) и когда содержимое Сч. Ком., изменяющееся во времени в соответствии с принятым в машине форматом представления команды, попадает это слово.
Принципы фон Неймана:
-
Машина с программным управлением состоит из устройства, исполняющего команды и устройства для хранения информации (данных, команд);
-
Память представляет последовательность нумерованных ячеек, в каждой из которых хранится слово в двоичном алфавите. Оно может задавать операцию, номер (адрес) другой ячейки или элемент данных;
-
Команды для исполнения АЛУ выбираются последовательно одна за другой. Слово, поступающее в УУ, интерпретируется как операция, а слово, поступающее в АЛУ – как данные.
В случае изменения естественного порядка следования команд применяется специальная команда передачи управления, в которой указывается, из какой ячейки памяти должна выбираться следующая команда. Этот принцип получил название командно-адресного принципа управления.
-
за словом, представляющим операцию, может следовать несколько операций – чисел, символов или адресов ячеек, с которыми будет определена операция.
-
неизменность структуры физических связей между устройствами машины; подлежат изменению только логические связи.
11.2. Общая характеристика выполнения фон-неймановской машинной программы
Последовательность машинных слов из нулей и единиц, на которую процессор отзывается выполнением операций над машинными словами, представляет собой программу самого низкого уровня в иерархии представления программ на алгоритмических языках. Фактически только такую программу процессор может непосредственно исполнять.
На рис. 11.2 представлена традиционная фон-неймановская архитектура процессора с одним потоком данных и одним потоком команд.
Обработка
данных
– одна из главных функций процессора,
включающая как вычисления, так и
манипулирование символьными структурами.
В результате работы АЛУ данные изменяют
свои значения. К
функциям, выполняемым АЛУ, относятся
сложение, вычитание, сравнение, логические
операции, положительное приращение,
отрицательное приращение и некоторые
другие.
Для выполнения этих операций АЛУ
необходимы данные.
Так, для выполнения сложения двух чисел
машинные слова, представляющие эти
числа, должны быть заблаговременно
размещены во внутренних регистрах,
связанных с АЛУ. Но АЛУ не осуществляет
перемещение данных ни до, ни после
выполнения операции, результат которой
также размещается во внутреннем регистре.
Оно
лишь выполняет операции над данными,
обнаружив их в строго определенном
месте.
Как же АЛУ получает данные, подлежащие
обработке?
-
В процессоре совместно с АЛУ работает УУ, манипулирующее с данными, и в частности перемещающее их в места, доступные АЛУ. После того как АЛУ выполнило требуемые операции, компоненты УУ (буфер данных, логика управления, буфер адресов) обеспечивают данные для других адресатов. Как же информируется АЛУ о том, как обрабатывать данные, какие из возможных операций должны быть выполнены?
-
У
правление системой – другая главная функция процессора. Схемы управления позволяют декодировать и выполнять программу. Они обеспечивают запись команд в память на хранение и извлекают их оттуда одну за другой. После извлечения из памяти узел дешифрации декодирует поступившее машинное слово и формирует необходимые для АЛУ управляющие сигналы. На рис. 11.3 приведена обобщенная схема, описывающая логику выполнения программы. Счетчик команд устанавливается на начало последовательности команд, где находится обрабатываемая машиной программа.
Для того чтобы начать выполнение машинного цикла (цикла команд), процессор помещает адрес из счетчика команд на адресную шину через буфер адресов. Из памяти по шине данных в регистр команд поступает соответствующая команда. Логические схемы управления и преобразования данных дешифруют команду и формируют управляющие сигналы, которые обеспечивают выполнение команды.
Последовательность выполнения двух команд A и B: 1) вызов адреса команды A; 2) фиксация команды в регистре команд; 3) дешифрация команды, инкремент программного счетчика; 4) фиксация операндов для команды A; 5) вызов адреса команды B, выполнение операции, запоминание результата во внутреннем регистре; 6) вызов адреса ячейки памяти для хранения результата, запоминание результата во внешней памяти; 7) выборка следующей команды.
Задача программы, таким образом, состоит в том, чтобы последовательно, шаг за шагом, изменять содержимое памяти до тех пор, пока не будет достигнуто завершающее состояние (реализуется так называемая семантика смены состояний). Заметим, что эта задача решается за счет “перекачивания” одиночных слов (адресов, команд, данных) туда и обратно через канал передачи информации, являющийся “узким” местом машины фон Неймана. Заслуживает внимания то обстоятельство, что значительную часть потока слов составляют не полезные данные (в смысле объектов обработки), а всего лишь имена данных, а также операции и данные, служащие лишь для вычисления таких имен. Прежде чем слово можно будет послать через шину, его адрес должен находиться в процессоре; поэтому он должен либо быть послан через шину из памяти, либо генерироваться посредством некоторых операций АЛУ. Если адрес посылается из памяти, то адрес этого адреса должен быть послан из памяти либо генерироваться в процессоре, и т. д. С другой стороны, если адрес генерируется в процессоре, он должен формироваться либо по фиксированному правилу (например, инкремент: “добавить 1 к программному счетчику”), либо по команде передачи управления. Адрес последней также должен быть предварительно послан по шине и т. д.
Здесь уместно привести высказывание Дж. Бэкуса, одного из основоположников процедурного стиля программирования: “… должен существовать менее примитивный способ внесения в память больших изменений, чем мельтешение множества слов туда и обратно через узость фон Неймана. Эта шина является не только узким местом для потока данных задачи, но, что более важно, и интеллектуальной узостью, которая привязывает нас к мышлению “слово за словом” вместо того, чтобы вдохновлять нас на мышление более “крупными” концептуальными частями решаемой задачи”.
Из этих простейших понятий выросли все алгоритмические языки программирования. Понятие ячейки памяти эволюционировало в разнообразные структуры и типы данных, а простейшие инструкции машинного языка превратились в сложные операторы алгоритмических языков высокого уровня. Однако суть процедурного стиля программирования при этом не изменилась. Ее можно свести к двум основным понятиям: операторы присваивания и передачи управления. Переменная связана с пассивным запоминающим устройством, оператор присваивания – с АЛУ и памятью, порядок выполнения операторов – с устройством управления.