Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Turbo Pascal / Stud_2_1 / K / K2 / K2

.doc
Скачиваний:
90
Добавлен:
03.03.2016
Размер:
645.37 Кб
Скачать

14. УЧЕБНАЯ ВЫЧИСЛИТЕЛЬНАЯ МАШИНА K2

14.1 Архитектура ЭВМ K2

Структурная схема ЭВМ K2 приведена на рис.14. В состав ЭВМ K2 входят следующие узлы:

  • оперативная память MEMORY емкостью 256 16-разрядных ячеек;

  • восьмиразрядный регистр адреса ячейки памяти RA;

  • тридцатидвухразрядный буферный регистр слова RS для временного хранения читаемой или записываемой информации;

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

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

  • тридцатидвухразрядные операционные регистры OR1 и OR2 для временного хранения операндов;

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

  • тридцатидвухразрядный регистр результата RR, предназначенный для временного хранения результата операции, выполняемой АЛУ;

  • сумматор адреса SA для формирования исполнительного адреса операнда;

  • дешифратор кода операции DC;

  • четырехразрядный регистр признаков RP.

При выполнении арифметической операции первый бит регистра RP устанавливается в «1», если ее результат отрицательный; второй бит устанавливается в «1» при положительном результате этой операции; третий бит - при нулевом результате; четвертый бит устанавливается в «1» в случае некорректности выполнения операции (переполнение регистра результатов RR или попытка деления на нуль).

Для логических операций и для команд сдвига производится лишь анализ результата на равенство нулю: RP[1] = 1, если результат операции не равен нулю; PP[3] = 1, если этот результат равен нулю.

В состав команды входят код выполняемой операции KOP (биты 1 – 4), адрес ячейки переадресации AP (биты 5 – 8) и адрес ячейки памяти A (биты 9 – 16).

Адреса ячеек изменяются от 0 до 255 (от 00000000 до 11111111 в двоичной системе счисления).

Система команд ЭВМ K2, приведенная в табл.14, включает в себя:

  • команды загрузки и сохранения операнда;

  • арифметико-логические команды;

  • команды сдвига;

  • команды управления порядком выполнения программы.

К арифметико-логическим командам относятся: сложение, вычитание, умножение, деление, отрицание, конъюнкция, дизъюнкция, сложение по модулю 2.

Набор команд сдвига состоит из логического сдвига влево и логического сдвига вправо.

В состав команд управления порядком выполнения программы входят: вызов подпрограммы, возврат из подпрограммы, переход, конец цикла и останов.

Таблица 14. Система команд ЭВМ K2

Код

опер.

Наименование

Признаки

Выполнение

команды

<

>

=

нк

0000

Останов

0001

Загрузка операнда

0010

Сохранение операнда

0011

Сложение

+

+

+

+

0100

Вычитание

+

+

+

+

0101

Умножение

+

+

+

+

0110

Деление

+

+

+

+

0111

Конъюнкция

+

+

1000

Дизъюнкция

+

+

1001

Сложение по модулю 2

+

+

1010

Сдвиг вправо логический

+

+

1011

Сдвиг влево логический

+

+

1100

Вызов подпрограммы

1101

Возврат из подпрограммы

1110

Переход

См.описание

1111

Конец цикла

См.описание

Круглые скобки в графе «Выполнение команды» означают содержимое регистра или ячейки памяти. Например, запись А – это адрес ячейки, а (А) – содержимое ячейки с адресом А.

14.2 Выполнение команд в ЭВМ K2

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

Нулевая ячейка памяти MEMORY в ЭВМ К2 не используется ни для чтения, ни для записи информации. Ячейки 1 .. 15 определены как ячейки переадресации. Их четырехбитовые адреса – это значения поля AP в машинных командах.

В командах «Загрузка операнда», «Сохранение операнда» и в арифметико-логических командах используется прямая или индексная адресация операнда. Если AP = 0000, то это определяет прямую адресацию; если значение AP находится в диапазоне от 0001 до 11112 (1 .. F16), то имеет место индексная адресация, при этом значение AP – это адрес ячейки переадресации в памяти MEMORY.

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

Исполнительный адрес операнда формируется в сумматоре адреса SA, в том числе и в случае, когда АР = 0. Из сумматора SA адрес передается в регистр SAK или в регистр RA. Если это адрес команды (например, в команде перехода), то исполнительный адрес пересылается в регистр SAK, а оттуда - в RA; если же это адрес числа, то непосредственно в RA.

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

Выполнение команды начинается с загрузки содержимого ячейки памяти, адрес которой задан в SAK, в регистр команд RK. При этом значение адреса выполняемой команды из SAK переписывается в регистр адреса RA, по этому адресу читается содержимое соответствующей ячейки памяти MEMORY и через буферный регистр слова RS пересылается в регистр RK. Поскольку регистр RS имеет размер 32 бита, то 16-разрядное значение команды записывается в левую часть регистра RS (биты 1 – 16 ), а затем уже передается в регистр команд RK. В последующем из RK выделяются поля KOP, АР и A. Для подготовки выборки следующей команды значение счетчика SAK увеличивается на единицу. Дешифратор DC анализирует значение KOP и определяет команду, которая должна выполняться в данный момент (дешифратор имеет 16 выходов по количеству дешифрируемых команд).

Если исполнительный адрес определяет числовую информацию, то адрес соответствующей ячейки памяти, как было указано выше, из сумматора SA непосредственно направляется в регистр RA, вслед за этим содержимое двух смежных ячеек и последовательно переписывается из памяти в левую и правую части регистра RS. После этого в арифметико-логических командах содержимое регистра RS пересылается в регистр OR2, а в команде загрузки операнда – в регистр OR1.

Если производится запись операнда в память (команда «Сохранение операнда»), то выполняются действия, аналогичные описанным выше, но в обратном порядке.

В команде «Загрузка операнда» производится непосредственная передача информации из регистра RS в OR1, в команде «Сохранение операнда» - из OR1 в RS с последующей записью в заданную пару ячеек памяти.

Команды сдвига также ориентированы на регистр OR1. При этом в выполнении операции участвуют все 32 разряда регистра OR1. Освобождающиеся слева или справа разряды заполняются нулями, а разряды, выходящие при сдвиге за пределы регистра OR1, исчезают. Количество сдвигов определяется значением адреса A, который предварительно переписывается в регистр OR2 из сумматора SA. Поле АР в командах сдвига не используется. Следовательно, в командах сдвига применена непосредственная индексация, при которой используется значение адреса А, а не содержимое ячейки памяти с адресом А.

Логический сдвиг выполняется в АЛУ, его результат через регистр RR записывается в OR1

Если A > 31, то сдвиг разрядов регистра OR1 не выполняется; в этом случае по команде сдвига все разряды регистра OR1 заполняются нулями.

Примечание. Эту особенность команды логического сдвига можно использовать для загрузки нуля в регистр OR1 вместо пересылки в OR1 двух ячеек памяти с нулевым содержимым.

Ячейки с адресами 1 .. 15 используются в циклической программе для размещения константы переадресации и счетчика выполнения цикла. Следовательно, по отношению к этим ячейкам должны выполняться операции загрузки и сохранения 16-разрядного операнда. В связи с этим для команд «Загрузка операнда» и «Сохранение операнда» добавлено следующее ограничение: если в этих командах АР = 0, а адрес А задан в диапазоне от 1 до 15, то это определяет передачу из памяти в правую часть регистра OR1 и в обратном направлении 16-разрядного операнда.

Во всех арифметико-логических операциях участвуют два операнда, расположенные в операционных регистрах OR1 и OR2. При этом адрес , формируемый в сумматоре SA, используется по цепочке SA – RA – Memory – RS для пересылки в регистр OR2 второго операнда. Получаемый результат операции временно запоминается в регистре результатов RR, после чего переписывается в регистр OR1.

Большинство команд, выполняемых в арифметико-логическом устройстве АЛУ, кроме непосредственного формирования своего результата, изменяют также все или часть битов регистра признаков RP, что используется в дальнейшем при выполнении команд перехода. Требуемые изменения регистра RP отражены в табл.14. Признак «нк» (некорректность операции) означает, что в результате выполнения данной операции возникает переполнение регистра результатов RR или же здесь отмечена попытка деления на нуль.

Символ “–” в графе признаков табл.14 определяет ситуацию, которая не может возникнуть в данной операции (например, некорректность при выполнении операции сдвига), или то, что данная операция не изменяет регистр RP (например, команда перехода).

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

Примечание. Если в команде, приведенной в табл.14, все графы признаков отмечены символом “–”, то это означает лишь то, что при этом сохраняются предыдущие значения признаков (но не выполняется сброс их на нуль).

В команде перехода поле AP считается маской, а не адресом ячейки переадресации. При выполнении этой команды производится логическое умножение маски на содержимое регистра признаков RP. Если результат логического умножения не нулевой, то происходит передача управления по адресу А, т.е. при этом адрес A из сумматора SA пересылается в счетчик SAK и, следовательно, воспринимается как адрес следующей команды. Частные случаи:

- АР = 0000 - пустая команда (нет передачи управления);

- АР = 1000 - условный переход по знаку «-»;

- АР = 0010 - условный переход по нулю;

- АР = 1010 - условный переход по знаку «-» или по нулю;

………………….

- АР = 1111 - безусловный переход.

Для команды перехода , т.е. здесь используется лишь прямая адресация.

Некоторой особенностью обладает рассматриваемая команда при значении маски AP = 1111. В этом случае логическое умножение маски на содержимое регистра признаков RP не производится и, следовательно, безусловный переход по адресу А выполняется при любом состоянии этого регистра.

Каждая из команд условного перехода, маски которых приведены выше, выполняет передачу управления по адресу A, если установлен в единицу соответствующий бит регистра RP.

Команда условного перехода по некорректности (АР = 0001) в реальных ЭВМ, как правило, выполняет переход на подпрограмму обработки прерывания. В ЭВМ K2 при выполнении данной команды, если RP[4]=1, достаточно вывести на экран сообщение об аварийном прерывании, указав при этом код операции и адрес команды, вызвавшей прерывание, после чего произвести останов ЭВМ.

При обращении к подпрограмме должны быть выполнены два действия: передача управления на начальный участок подпрограммы и возврат в вызывающую программу после отработки подпрограммы. Эта работа в ЭВМ K2 выполняется двумя командами: «Вызов подпрограммы» и «Возврат из подпрограммы».

В команде «Вызов подпрограммы» текущее значение счетчика SAK записывается в ячейку с адресом АР, а значение адреса А, указывающего на начало подпрограммы, переписывается в SAK. Здесь, как и в предыдущей команде, .

В команде «Возврат из подпрограммы» содержимое ячейки памяти с адресом АР переписывается в SAK, что обеспечивает возврат в вызывающую программу к команде, расположенной непосредственно после команды вызова подпрограммы. Адрес А в команде «Возврат из подпрограммы» не используется.

В команде «Конец цикла» компонент АР определяет адрес счетчика циклов, в который предварительно записывается количество повторений цикла. При каждом выполнении данной команды из содержимого счетчика циклов вычитается единица. Если содержимое счетчика не равно нулю, то производится передача управления по адресу А, в противном случае выполняется следующая команда программы. В команде «Конец цикла» , т.е. используется лишь прямая адресация.

В системе команд ЭВМ К2, отображенной в табл.14, применяется следующая адресация:

  • команда 0000 - нет адресации (поля АР и А не используются);

  • команды 0001 .. 1001 - прямая или индексная адресация;

  • команды 1010 и 1011 - непосредственная адресация;

  • команды 1100 .. 1111 - прямая адресация.

Рассмотрим теперь методику формирования циклического фрагмента программы в системе команд ЭВМ К2.

Предположим, что нам требуется вычислить

При этом предполагается, что элементы массива Х расположены в смежных ячейках памяти.

Представим заданное выражение в виде

,

Тогда фрагмент программы может иметь следующий вид:

k+0 1010 0000 0100 0000

k+1 0010 0000 0000 0001

k+2 0010 0000 < R >

k+3 0011 0000 < 5 >

k+4 0010 0000 0000 0010

k+5 0001 0000 < R >

k+6 0011 0001 < >

k+7 0010 0000 < R >

k+8 0001 0000 0000 0001

k+9 0011 0000 < 2 >

k+10 0010 0000 0000 0001

k+11 1111 0010 k+5

k+12 0001 0000 < 8 >

k+13 0101 0000 < a >

k+14 0100 0000 < R >

k+15 0010 0000 < y >

k+16 0000 0000 0000 0000

k+17 0000 0000 0000 0000

k+18 0000 0000 0000 0000

k+19 0000 0000 0000 0010

k+20 0000 0000 0000 0000

k+21 0000 0000 0000 0101

k+22 0000 0000 0000 0000

k+23 0000 0000 0000 1000

k+24 a = 31

k+25

k+26 x1 = 10

k+27

k+28 x2 = -15

k+29

k+30 x3 = 25

k+31

k+32 x4 = 40

k+33

k+34 x5 = 50

k+35

k+36 y

k+37

k+38 R

k+39

Здесь k, k+1, … - условное обозначение адреса команды, < y > - обозначение адреса ячейки, отведенной для переменной y, (OR1) – содержимое регистра OR1. Для констант 2, 5 и 8, переменных отводится по две ячейки памяти, причем первая из них должна иметь четный адрес.

В рассмотренном фрагменте вначале с помощью команды сдвига обнуляется регистр OR1 и его содержимое записывается в ячейки с адресами 1 (это константа переадресации) и < R >. К содержимому регистра OR1 добавляется число 5, полученное при этом значение записывается в ячейку с адресом 2 (это счетчик циклов). В каждом цикле к значению переменной R добавляется элемент . Здесь предполагается, что элементы массива Х расположены в смежных ячейках памяти. Поэтому в команде сложения указывается адрес первого элемента массива, т.е. элемента . В этой команде задана индексная адресация, что определяет последовательный перебор элементов . В конечной части данного фрагмента для подготовки адреса следующего элемента к константе переадресации добавляется значение 2, а команда «Конец цикла» вычитает из счетчика циклов единицу и выполняет передачу управления на повторение цикла или к следующей команде.

Из мнемонических соображений изменяемый адрес в команде k+6 обозначен символом “*”, чтобы четко организовать модификацию изменяемой команды и восстановление константы переадресации.

Примечание. В каждом эмуляторе просмотр результатов его работы сводится к «перелистыванию» содержимого ячеек памяти MEMORY. При этом вывод на экран нужно производить в трех системах счисления:

  1. двоичной (машинное представление);

  2. 4, 8 или 16 с/с (заданная с/с);

  3. десятичной (для просмотра чисел).

В ЭВМ К2 числа расположены в двух смежных ячейках. Поэтому рекомендуется выполнить следующее:

1) содержимое каждой ячейки выводить в двоичной и в заданной системах счисления;

2) десятичное значение формировать по двум 16-разрядным ячейкам, но выводить на экран лишь рядом с ячейкой, имеющей четный адрес.

Предположим, что пусковой адрес программы задан равным . Тогда текстовый файл, подготовленный для загрузки машинных команд и обрабатываемых данных в память MEMORY, будет иметь следующий вид (пусковой адрес представлен в 10 с/с, остальная информация – в 2 с/с и параллельно в 16 с/с):

20 20

1010000001000000 A040

0010000000000001 2001

0010000000111010 203A

0011000000101000 3028

0010000000000010 2002

0001000000111010 103A

0011000100101110 312E

0010000000111010 203A

0001000000000001 1001

0011000000100110 3026

0010000000000001 2001

1111001000011001 F219

0001000000101010 102A

0101000000101100 502C

0100000000111010 403A

0010000000111000 2038

0000000000000000 0000

0000000000000000 0000

0000000000000000 0000

0000000000000010 0002

0000000000000000 0000

0000000000000101 0005

0000000000000000 0000

0000000000001000 0008

0000000000000000 0000

0000000000011111 001F

0000000000000000 0000

0000000000001010 000A

1111111111111111 FFFF

1111111111110001 FFF1

0000000000000000 0000

0000000000011001 0019

0000000000000000 0000

0000000000101000 0028

0000000000000000 0000

0000000000110010 0032

Примечание. В состав текстового файла не включено содержимое ячеек <y> и <R>, поскольку это содержимое формируется в программе, а не вводится извне.

Соседние файлы в папке K2
  • #
    03.03.2016645.37 Кб90K2.doc
  • #
    03.03.201653.25 Кб89Схема ЭВМ К2.vsd