
- •Архитектура эвм. Учебные машины
- •§1. Принципы фон-Неймана. П.1. Свойства эвм.
- •П.2. Принципы фон-Неймана.
- •Принципы фон-Неймана.
- •§2. Структура эвм.
- •Назначение компонент.
- •П.1. Процессор. Такт работы процессора.
- •П.2. Оперативная память.
- •П.3. Внешние устройства.
- •§3. Учебные машины.
- •П.1. Учебная трехадресная машина ум-3.
- •П.2. Учебная двухадресная машина ум-2.
- •П.3. Учебная машина с регистрами ум-р.
- •П.4. Учебная машина с модификацией адресов ум-м.
П.3. Внешние устройства.
Внешние устройства служат для связи ЭВМ с окружающим миром. Обычно к ЭВМ подключаются клавиатура, монитор (экран, дисплей), внешние запоминающие устройства (жесткие диски, дисководы для гибких дисков) и мышь. В зависимости от того, для каких целей используют ЭВМ, набор подключенных к ЭВМ устройств может сильно изменяться. К внешним устройствам относятся:
принтер (печатающее устройство),
устройство для работы с магнитными лентами,
сканер (устройство для ввода графических изображений),
модем (устройство для связывания компьютеров через телефонную сеть),
устройство чтения с лазерных дисков
и другие специальные приборы.
Канал - аппаратура и программное обеспечение (программы), занимающиеся передачей сигналов между ЭВМ и внешним устройством.
Во внешнем устройстве есть контроллер.
Контроллер - аппаратура и программное обеспечение, которое обрабатывает сигналы ЭВМ и подготавливает данные для устройства. Контроллер учитывает особенности работы своего внешнего устройства.
Внешние устройства работают намного медленнее процессора. Для того, чтобы процессор не простаивал во время работы внешнего устройства, организуется параллельная работа процессора и внешнего устройства.
Пусть процесс решения некоторой задачи состоит из трех отрезков счета (работы ЦП), двух печатей и одной записи данных на диск:
По окончании этапа Счет 1, когда получены данные для первой печати, принтер может заняться печатью, а ЦП может продолжить решение задачи. После получения данных для диска, дисковод начинает записывать, а ЦП может продолжить работу. В итоге, общее время решения задачи сократится.
§3. Учебные машины.
Ранее мы рассмотрели общие принципы построения ЭВМ. В данном параграфе мы разберем 4 учебные вычислительные машины. Эти машины называются учебными, потому что они не существуют на самом деле. Однако они помогут нам представить работу реальных ЭВМ, разобрать некоторые проблемы, возникающие при построении ЭВМ, и способы решения этих проблем.
Для записи содержимого ячеек будем пользоваться шестнадцатиричными цифрами.
П.1. Учебная трехадресная машина ум-3.
1. Структура процессора.
2. Оперативная память.
Ячейка - 14 шестнадцатиричных разрядов.
Объем ОП - 164 ячеек с адресами 0000FFFF.
Представление чисел: число содержится в одной ячейке; отрицательные числа записываются в дополнительном коде.
Представление команд: команда занимает одну ячейку. Разряды ячейки имеют следующий смысл (формат команд):
КОП А1 А2 А3
Здесь КОП – код операции (указывает, какую машинную операцию надо выполнить); А1, А2, А3 – адреса первого, второго операндов и результата. Разрядность адресов совпадает с разрядностью регистра СА и определяется объемом ОП (а именно, количеством возможных адресов). Количество разрядов в регистрах ОП1, ОП2, РЕЗ и РК должно совпадать с количеством разрядов ячейки ОП, так как в ОП1, ОП2 и РЕЗ должны поместиться числа, а в РК – команда, которые занимают по одной ячейке ОП.
3. Система команд УМ-3.
Система команд ЭВМ – это набор всех машинных команд данной ЭВМ.
Название |
КОП |
Операция |
Примечание |
останов |
99 |
стоп |
А1,А2,А3 - любые |
пересылка |
00 |
[А1] [А3] |
А2 - любой |
|
|
арифметические |
|
сложение |
01 |
[А1]+[А2] [А3] |
Устанавливаются |
вычитание |
02 |
[А1]-[А2] [А3] |
арифметические флаги |
умножение |
|
|
|
со знаком |
03 |
[А1]*[А2] [А3] |
|
без знака |
13 |
|
|
деление |
|
|
|
со знаком |
04 |
[А1] div [А2] [А3], [А1] mod [А2] [А3+1] |
|
без знака |
14 |
|
|
|
|
переходы |
|
|
безусловный |
80 |
перейти к А3 |
А1,А2 - любые |
|
условные |
|
|
После выполнения |
|
по = |
81 |
при [А1]=[А2] перейти к А3 |
команды перехода работа продолжается |
|
по |
82 |
при [А1][А2] перейти к А3 |
с команды, записанной в ячейке с адресом A3 |
|
по |
с/зн - 83 б/зн - 93 |
при [А1][А2] перейти к А3 |
||
по |
с/зн - 84 б/зн - 94 |
при [А1] [А2] перейти к А3 |
||
по |
с/зн - 85 б/зн - 95 |
при [А1][А2] перейти к А3 |
||
по |
с/зн - 86 б/зн - 96 |
при [А1] [А2] перейти к А3 |
В таблице использовано обозначение [A] – содержимое ячейки с адресом A.
Арифметические команды выполняются следующим образом: содержимое ячеек с адресами A1 и A2 пересылается в регистры ОП1 и ОП2, выполняется арифметическая операция (результат – в регистре РЕЗ), содержимое регистра РЕЗ пересылается в ячейку с адресом А3. Следует обратить внимание на то, что есть две команды умножения и две команды деления. Программист использует подходящую команду в зависимости от того, с какими данными (числами со знаком или без знака) должна работать программа. Команда деления дает два результата – частное и остаток. Они записываются в соседние ячейки: частное – по адресу А3, остаток – в ячейку с адресом А3+1.
Действие команд перехода заключается в изменении содержимого регистра СА. При этом на следующем такте работы ЦП будет выполнять команду, записанную в ячейке с адресом А3. (Вспомните §2.)
В командах условного перехода производится проверка соответствующего условия. Если условие выполняется, тогда в СА записывается адрес А3. Сравнение значений [ А1] и [А2] выполняется так: в ОП1 записывается [А1], в ОП2 – [А2]; выполняется вычитание ОП1-ОП2, при этом получают значение все четыре арифметических флажка. По значениям флагов и определяется истинность условия. Некоторым условиям (например,<) соответствуют разные наборы значений флагов для разных данных – чисел со знаком и чисел без знака. Поэтому команды переходов для чисел со знаком и чисел без знака разные.
Рассмотрим на примерах соответствие между условиями и значениями флагов.
1) Переход по равенству. В результате вычитания [А1] - [А2] получится ZF=1 тогда и только тогда, когда [А1] = [А2].
2) Переход по "меньше", числа без знака.
[А1] < [А2] [А1] - [А2] < 0 CF=1.
3) Переход по "меньше", числа со знаком. Если вычитаются числа со знаком, то при [А1] < [А2], [А1] - [А2] < 0, возможны ситуации
а) результат вычислили правильно (OF=0) и он оказался отрицательным , значение SF=1,
б) результат вычислили неправильно (OF=1), при этом знак вычисленного значения противоречит знаку числа [А1] - [А2], вычисленный результат оказался положительным, то есть SF=0.
Таким образом, для чисел со знаком [А1] < [А2] [А1] - [А2] < 0 (OF=1) and (SF=0) or (OF=0) and (SF=1), или более коротко OF SF. При выполнении команды перехода по "меньше" для чисел со знаком процессор проверяет выполнимость условия OF SF.
4. Разберем теперь несколько примеров программ для УМ-3. Условимся, что перед началом работы
1) в СА записывается 0100, то есть выполнение начинается с команды по адресу 0100,
2) в ячейки ОП уже записаны все данные, необходимые для работы программ (ввод и вывод не рассматриваем).
Пример 1. Вычислить значение x= ( a mod 50 - b )2 по заданным a и b.
Поскольку в выражении есть операция вычитания, лучше работать с числами со знаком. Пусть данные располагаются в следующих ячейках
-
Адрес
Содержимое
0000
a
0001
3216 (=5010)
0002
b
0003
x
0004
рабочая (потребуется для деления)
Программа.
-
Адрес
Содержимое ячейки
Комментарий
0100
04 0000 0001 0003
a mod 50 [0004]
0101
02 0004 0002 0003
[0004] - b x
0102
03 0003 0003 0003
xx x
0103
99 0000 0000 0000
стоп
Напомним, что деление даёт два результата, поэтому первая команда программы записывает в [0003] x div 50 (это значение в дальнейшем не используется) и в [0004] a mod 50.
Пример 2. Вычислить
S1 = max(a,b) * 20,
S2 = min(a,b) div 3.
Вычисления организуем так:
begin if a < b then begin S1 := b; S2 := a end
else begin S1 := a; S2 := b end;
S1 := S1 * 20;
S2 := S2 div 3
end.
Данные:
0000 a
0001 b
0002 1416 (=2010)
0003 3
0004 S1
0005 S2
0006 рабочая.
Будем считать, что работаем с числами без знака.
Программа:
-
Адрес
Содержимое ячейки
Комментарий
0100
94 0000 0001 0104
if ab, go to 0104
0101
00 0001 0000 0004
S1 := b
часть
0102
00 0000 0000 0005
S2 := a
then
0103
80 0000 0000 0106
go to 0106
0104
00 0000 0000 0004
S1 := a
часть
0105
00 0001 0000 0005
S2 := b
else
0106
13 0004 0002 0004
S1 := S1 * 20
0107
14 0005 0003 0005
S2 := S2 div 3
0108
99 0000 0000 0000
стоп
Пример 3. Вычислить p = n!.
Алгоритм:
begin p:=1; k:=2;
while k n do
begin p := p * k;
k := k + 1
end
end.
В этой задаче могут возникнуть довольно большие положительные числа, поэтому будем работать с числами без знака.
Данные:
0000 n
0001 1
0002 2
0003 p
0004 k
Программа:
-
0100
00 0001 0000 0003
p :=1
0101
00 0002 0000 0004
k := 2
0102
95 0004 0000 0106
if k > n, go to 0106
0103
13 0003 0004 0003
p := p * k
0104
01 0004 0001 0004
k := k + 1
0105
80 0000 0000 0102
go to 0102
0106
99 0000 0000 0000
стоп
Заметим, что в машинной программе начало цикла while k n do заменилось на переход на конец программы по отрицанию условия. Тело цикла заканчивается безусловным переходом на начало цикла.