
- •Компьютер как система для манипулирования символьными структурами
- •9.1. Фон Неймановская модель компьютера
- •Принципы фон Неймана:
- •9.2.Общая характеристика выполнения фон-неймановской машинной программы
- •9.2. Общая характеристика выполнения фон-неймановской машинной программы
- •9.2. Общая характеристика выполнения фон-неймановской машинной программы
- •9.2. Общая характеристика выполнения фон-неймановской машинной программы
- •9.3. Механизмы управления и обмена данными в процессе
- •9.3. Механизмы управления и обмена данными в процессе
- •9.3.Механизмы управления и обмена данными в процессе
- •9.3. Механизмы управления и обмена данными в процессе выполнения программы
- •9.3. Механизмы управления и обмена данными в процессе выполнения программы
- •9.3. Механизмы управления и обмена данными в процессе выполнения программы
- •9.3. Механизмы управления и обмена данными в процессе
- •9.3. Механизмы управления и обмена данными в процессе выполнения программы
- •Вопросы

Компьютер как система для манипулирования символьными структурами
Лекция 9.

9.1. Фон Неймановская модель компьютера
Память данных и память команд содержит |
|
Основная идея |
|
|
слова в двоичном алфавите. Это |
Процессор |
|
Память |
|
позволяет объединить их в одно |
|
|||
|
Программа |
Данные |
||
устройство – оперативную память. |
|
|||
АЛУ |
Инструкция 1 |
Данное 1 |
||
В различных условиях в процессе |
||||
|
- |
- |
||
выполнения программ содержимое |
|
- |
- |
|
одного и того же участка памяти может |
УУ |
|||
рассматриваться (интерпретироваться) |
Инструкция N |
Данное N |
||
|
||||
и как данные, и как код (команды). |
|
|
|
Что же это за условия?
Чтобы ответить на этот вопрос, надо рассмотреть последовательность действий, которую выполняет машина при реализации команды:
Канал передачи данных и инструкций
Формат команды
КОП
Адрес 1
Адрес 2
Адрес результата
Рис. 9.1
1.Из памяти по адресу, формируемому Сч. Ком. в УУ процессора, извлекается слово в двоичном алфавите.
2.Оно поступает в Рг. Ком. УУ, дешифруется и обеспечивает настройку АЛУ на соответствующую операцию.
3.Процессор извлекает исходные данные из ячеек памяти, адреса которых указаны в команде.
4.Операнды в виде слов в двоичного алфавита поступает в Рг. АЛУ.
5.Интерпретация этих слов определяется выполняемой операцией.
6.Результат пересылается в память данных по указанному адресу.
7.Процессор переходит к новой инструкции (либо к следующей, либо к той, адрес которой указан в обрабатываемой инструкции).
8.И так до инструкции СТОП.

Принципы фон Неймана:
С учетом изложенного на поставленный выше вопрос о том, при каких условиях в процессе выполнения программы машина интерпретирует извлекаемое из памяти слово должным образом (операция либо данные), следует ответить так: в зависимости от того, куда (УУ или АЛУ) и когда содержимое Сч. Ком., изменяющееся во времени в соответствии с принятым в машине форматом представления команды, попадает это слово.
Принципы фон Неймана:
Машина с программным управлением состоит из устройства, исполняющего команды и устройства для хра ҂ния информации (данных, команд);
Память представляет последовательность нумерованных ячеек, в каждой из которых хранится слово в двоичном алфавите. Оно может задавать операцию, номер (адрес) другой ячейки или элемент данных;
Команды для исполнения АЛУ выбираются последовательно одна за другой. Слово, поступающее в УУ, интерпретируется как операция, а слово, поступающее в АЛУ – как данные.
В случае изменения естественного порядка следования команд применяется специальная команда передачи управления, в которой указывается, из какой ячейки памяти должна выбираться следующая команда. Этот принцип получил название командно-адресного принципа управления.
за словом, представляющим операцию, может следовать несколько операций – чисел, символов или адресов ячеек, с которыми будет определена операция.
неизменность структуры физических связей между устройствами машины; подлежат изменению только логические связи.

9.2.Общая характеристика выполнения фон-неймановской машинной программы
Последовательность машинных слов из нулей и единиц, на которую процессор отзывается выполнением операций над машинными словами, представляет собой программу самого низкого уровня в иерархии представления программ на алгоритмических языках. Фактически только такую программу процессор может непосредственно исполнять.
На рис. 9.2 представлена традиционная фон-неймановская архитектура процессора с одним
потоком данных и одним потоком команд.
Обработка данных – одна из главных функций процессора, включающая как вычисления, так и манипулирование символьными структурами. В результате работы АЛУ данные изменяют свои значения. К функциям, выполняемым АЛУ, относятся сложение, вычитание, сравнение,
логические операции, положительное приращение, отрицательное приращение и некоторые другие. Для выполнения этих операций АЛУ необходимы данные. Так, для выполнения сложения двух чисел машинные слова, представляющие эти числа, должны быть заблаговременно размещены во внутренних регистрах, связанных с АЛУ. Но АЛУ не осуществляет перемещение данных ни до, ни после выполнения операции, результат которой также размещается во внутреннем регистре. Оно лишь выполняет операции над данными, обнаружив их в строго определенном месте. Как же АЛУ получает данные, подлежащие обработке?
Рис. 9.2. Фон-неймановская архитектура процессора

9.2. Общая характеристика выполнения фон-неймановской машинной программы
1.В процессоре совместно с АЛУ работает УУ,
манипулирующее с данными, и в частности перемещающее их в места, доступные АЛУ. После того как АЛУ выполнило требуемые операции, компоненты УУ (буфер данных, логика управления, буфер адресов) обеспечивают данные для других адресатов. Как же информируется АЛУ о том, как обрабатывать данные, какие из возможных операций должны быть выполнены?
2.Управление системой – другая главная функция процессора. Схемы управления позволяют декодировать и выполнять программу. Они обеспечивают запись команд в память на хранение и извлекают их оттуда одну за другой. После извлечения из памяти узел дешифрации декодирует поступившее машинное слово и формирует необходимые для АЛУ управляющие сигналы. На рис. 9.3 приведена обобщенная схема, описывающаŏ логику выполнения программы. Счетчик команд устанавливается на начало последовательности команд, где находится обрабатываемая машиной программа.
Для того чтобы начать выполнение машинного цикла (цикла команд), процессор помещает адрес из счетчика команд на адресную шину через буфер адресов. Из памяти по шине данных в регистр команд поступает соответствующая команда. Логические схемы управления и преобразования данных дешифруют команду и формируют управляющие сигналы, которые обеспечивают выполнение команды.

9.2. Общая характеристика выполнения фон-неймановской машинной программы
Последовательность выполнения двух команд A и B:
1) вызов адреса команды A;
2) фиксация команды в регистре команд;
3) дешифрация команды, инкремент программного счетчика;
4) фиксация операндов для команды A;
5) вызов адреса команды B, выполнение операции, запоминание результата во внутреннем регистре;
6) вызов адреса ячейки памяти для хранения результата, запоминание результата во внешней памяти;
7) выборка следующей команды.
Задача программы, таким образом, состоит в том, чтобы последовательно, шаг за шагом, изменять содержимое памяти до тех пор, пока не будет достигнуто завершающее состояние (реализуется так называемая семантика смены состояний).
Заметим, что эта задача решается за счет “перекачивания” одиночных слов (адресов, команд, данных) туда и обратно через канал передачи информации, являющийся “узким” местом машины фон Неймана. Заслуживает внимания то обстоятельство, что значительную часть потока слов составляют не полезные данные (в смысле объектов обработки), а всего лишь имена данных, а также операции и данные, служащие лишь для вычисления таких имен.
Прежде чем слово можно будет послать через шину, его адрес должен находиться в процессоре; поэтому он должен либо быть послан через шину из памяти, либо генерироваться посредством некоторых операций АЛУ.
Если адрес посылается из памяти, то адрес этого адреса должен быть послан из памяти либо генерироваться в процессоре, и т. д.
С другой стороны, если адрес генерируется в процессоре, он должен формироваться либо по фиксированному правилу (например, инкремент: “добавить 1 к программному счетчику”), либо по команде передачи управления. Адрес последней также должен быть предварительно послан по шине и т. д.

9.2. Общая характеристика выполнения фон-неймановской машинной программы
Здесь уместно привести высказывание Дж. Бэкуса, одного из основоположников процедурного стиля программирования: “… должен существовать менее примитивный способ внесения в память больших изменений, чем мельтешение множества слов туда и обратно через узость фон Неймана. Эта шина является не только узким местом для потока данных задачи, но, что более важно, и интеллектуальной узостью, которая привязывает нас к мышлению “слово за словом” вместо того, чтобы вдохновлять нас на мышление более “крупными” концептуальными частями решаемой задачи”.
Из этих простейших понятий выросли все алгоритмические языки программирования. Понятие ячейки памяти эволюционировало в разнообразные структуры и типы данных, а простейшие инструкции машинного языка превратились в сложные операторы алгоритмических языков высокого уровня. Однако суть процедурного стиля программирования при этом не изменилась. Ее можно свести к двум основным понятиям: операторы присваивания и передачи управления. Переменная связана с пассивным запоминающим устройством, оператор присваивания – с АЛУ и памятью, порядок выполнения операторов – с устройством управления.

9.3. Механизмы управления и обмена данными в процессе
выполнения программы
Под программой понимается текст на некотором формальном языке, который состоит из описания объектов и операторов, определяющих действия над объектами.
Предусматривается однозначность его интерпретации машиной. Тем самым обеспечивается автоматическое управление вычислительным процессом.
Существенной частью определения программы в любом языке является понятие выполнения программы. Как уже упоминалось, стиль пословного программирования фон Неймана
обладает семантикой, тесно увязанной с состоянием памяти.
Два механизма определяют фундаментальные характеристики выполнения программ:
механизм управления;
механизм обмена данными.
Механизм управления сводится к запуску команд либо “по доступности”, когда операция активизируется, если доступны все операнды, либо “по запросу”, когда операция активизируется, если имеется запрос на генерацию ее результатов.
Аналогично имеется два принципиально различных механизма обмена данными:
непосредственный обмен значениями операндов;
передача по ссылке через общедоступную память.
Классическая архитектура фон Неймана использует механизм управления “по запросу” с привлечением принципа потока управления и механизм обмена данными по ссылке через общедоступную память.

9.3. Механизмы управления и обмена данными в процессе
Рассмотрим в качестве примера программу для оператора x := (y+1)*(y–z). Этот оператор присваивания осуществляет вызов содержимого ячеек памяти, на которые ссылаются переменные с именами y, z, константы 1, выполнение арифметических операций +, –, * над целыми числами и запоминание полученного результата в ячейке памяти, на которую ссылается переменная x.
Граф связей по данным этого оператора изображен на
|
рис. 9.4. |
|
|
|
|
Здесь зачерненными кружочками “ ” изображены |
|
|
|
|
|
|
значения подлежащих обработке данных с именами y, |
|
|
|
|
|
и z, а также значение формируемого результата с |
|
|
|
|
|
именем x. Сплошными линиями представлены связи, |
|
|
|
|
|
ПРОГРАММА: |
|
ОПИСАНИЕ ОБЪЕКТОВ |
|
|
|
отражающие структуру оператора по данным |
|
|
||
|
|
|
|
||
|
(отношение частичного порядка). Прямоугольниками |
|
|
|
|
|
|
|
t1 := y+1; |
Действия над |
|
|
представлены операции по обработке данных. |
|
|
t2 := y–z; |
|
|
Программа реализации этого оператора представлена |
|
|
x := t1* t2 |
объектами да нных |
|
на рис. 9.5. |
|
|
|
|
|
Рис. 9.5 Программа реализации оператора x:=(y+1)*(y-z) |
||||
Соответствующий этой программе граф связей по |
|||||
|
управлению изображен на рис. 9.6. Здесь же |
|
|
|
|
|
именованными кружочками представлено поле |
|
|
|
|
памяти. Прямоугольниками показаны команды с именами I1, I2, I3.Рис. 9.6. Граф связей по управлению программы, реализующей оператор x := (y+1)*(y–z)x:
Заметим, что идентификаторы (имена) y, , z используются для ссылки к содержимому памяти, а идентификатор x
– для ссылки к адресу ячейки памяти. Роль идентификаторов t1 и t2 двойственна: в командах I1 и I2 они используются для ссылки к адресам ячеек памяти, в команде I3 – для ссылки к содержимому этих ячеек. Соответствующая их интерпретация видна из контекста программы и семантики оператора присваивания.

9.3.Механизмы управления и обмена данными в процессе
Память, как уже отмечалось, имеет линейную однородную структуру, состоящую из слов в двоичном алфавите, используемых как для хранения программы, так и для хранения данных. При этом по содержимому элемента памяти нельзя определить тип хранимой в нем информации. При исполнении машинных команд данные трактуются в зависимости от семантики команд, а не от типов самих данных. Уровень такой архитектуры компьютера значительно ниже уровня языков программирования, имеющих средства описания типов данных
. Этот семантический разрыв имеет отрицательные практические последствия для программистов, отлаживающих и использующих программы в такой вычислительной среде.
Возможный вариант программы с явно выделенной решающей частью представлен на рис. 9.7. Первая, содержащая операторы присваивания, формирует связи по данным реализуемого оператора; вторая, содержащая последовательность так называемых управляющих переменных, формирует связи по управлению. Управляющая переменная принимает значения из множества {0, 1}. Единичное значение активизирует выполнение соответствующего оператора решающей части программы, нулевое – дезактивирует.
Тип данных есть метод рассмотрения содержимого памяти. Это содержимое не имеет независимого самостоятельного значения.