Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Бордаченкова Е.А. Архитектура ЭВМ. Учебные маши...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
414.21 Кб
Скачать

П.3. Внешние устройства.

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

  • принтер (печатающее устройство),

  • устройство для работы с магнитными лентами,

  • сканер (устройство для ввода графических изображений),

  • модем (устройство для связывания компьютеров через телефонную сеть),

  • устройство чтения с лазерных дисков

и другие специальные приборы.

Для подключения внешних устройств в ЭВМ имеются каналы.

Канал - аппаратура и программное обеспечение (про­граммы), занимающиеся передачей сигналов между ЭВМ и внешним устройством.

Во внешнем устройстве есть контроллер.

Контроллер - аппаратура и программное обеспе­чение, которое обрабатывает сигналы ЭВМ и подго­тавливает данные для устройства. Контроллер учитывает особенности работы своего внешнего устройства.

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

Пусть процесс решения некоторой задачи состоит из трех отрезков счета (ра­боты ЦП), двух печатей и одной записи данных на диск:

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

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

§3. Учебные машины.

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

Для записи содержимого ячеек будем пользоваться шестнад­цатиричными цифрами.

П.1. Учебная трехадресная машина ум-3.

1. Структура процессора.

Кроме тех регистров, которые мы обсуждали в §2, в арифметическом устройстве УМ-3 имеются регистры первого операнда ОП1, второго операнда ОП2 и результата РЕЗ.

2. Оперативная память.

Ячейка - 14 шестнадцатиричных разрядов.

Объем ОП - 164 ячеек с адресами 0000FFFF.

Представление чисел: число содержится в одной ячейке; отрицательные числа записываются в дополнительном коде.

Представление команд: команда занимает одну ячейку. Разряды ячейки имеют следующий смысл (формат команд):

       

КОП А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] - bx

0102

03 0003 0003 0003

xxx

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 заменилось на переход на конец программы по отрицанию условия. Тело цикла заканчивается безусловным переходом на начало цикла.