Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пример семы по эвм.doc
Скачиваний:
55
Добавлен:
14.03.2016
Размер:
332 Кб
Скачать
☆

Оценка размера памяти микропрограмм.

Для каждого микрокода необходимо выделить 8 слов. Всего процессов будет выполнять 13 команд. Следовательно для данного процессора необходимо 8*13=104 слов. В начале выполнения команд необходимо произвести загрузку и декодирование команды, а потом еще и инкремент командного счетчика(PC). Для этого необходимо еще 3 слова. Итого 107 слов.

Тогда адрес перехода (JMPADDR) может быть 7-разрядным (10710=11010112), тогда длина микрокоманды равна 27 бит.

Организация памяти микропрограмм 107x27.

Формат микрокоманд:

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

A

M

U

X

B

M

U

X

C

M

U

X

W

R

A

B

C

RD

ALU

COND

JMPADDR

Загрузка и декодирование.

Адрес 0. Загрузка следующей команды в регистр ir, продолжение со следующей микрокоманды.

IR← SET (PC, PC);

Адрес 1. Декодировать полученную команду.

DECODE

Инкремент РС.

Адрес 106. Прибавить к командному счетчику 1. Продолжить с адреса 0.

PC← INC PC

A=110; B=101; C=110;

AMUX=BMUX=CMUX=1;

WR=RD=0;

ALU=001;

COND=JImm;

JMPADDR=0;

Команда ADD rd, rs.

Начальный адрес в памяти микропрограмм 0001000b = 8d.

Адрес 8. Сложить регистр rd и регистр rs, продолжить с адреса 106.

RD ← ADD (RD, RS); GOTO 106

A=*; B=*; C=*;

AMUX=BMUX=CMUX=0;

WR=RD=0;

ALU=001;

COND=JImm;

JMPADDR=1101010;

Команда ADD rd, Imm8.

Начальный адрес в памяти микропрограмм 0010000b = 16d.

Адрес 16. Сложить регистр rd и младший байт регистра ir, продолжить с адреса 106.

RD ← ADD (RD, IR); GOTO 106

A=*; B=111; C=111;

AMUX=0; BMUX=CMUX=1;

WR=RD=0;

ALU=001;

COND=JImm;

JMPADDR=1101010;

Команда NOR rd, rs.

Начальный адрес в памяти микропрограмм 0011000b = 24d.

Адрес 24. В temp0 поместить rd, продолжить со следующей микрокоманды.

temp0 ← SET (RD, IR)

A=*; B=111; C=100;

AMUX=0; BMUX=CMUX=1;

WR=RD=0;

ALU=000;

COND=NEXT;

Адрес 25. Поместить в temp0 результат NAND над rd и temp0 ( инвертированный rd), продолжить со следующей микрокоманды.

temp0 ← NAND (RD, temp0)

A=*; B=100; C=100;

AMUX=0; BMUX=CMUX=1;

WR=RD=0;

ALU=100;

COND=NEXT;

Адрес 26. В temp1 поместить rs, продолжить со следующей микрокоманды.

temp1 ← SET (IR, RS)

A=111; B=*; C=101;

AMUX=1; BMUX=0; CMUX=1;

WR=RD=0;

ALU=000;

COND=NEXT;

Адрес 27. Поместить в temp1 результат NAND над temp1 и rs ( инвертированный rs), продолжить со следующей микрокоманды.

temp1← NAND (temp1, RS1)

A=101; B=*; C=101;

AMUX=1; BMUX=0; CMUX=1;

WR=RD=0;

ALU=100;

COND=NEXT;

Адрес 28. Поместить в temp0 результат NAND над temp0 и temp1, продолжить со след. микрокоманды.

temp0← NAND (temp0, temp1)

A=100; B=101; C=101;

AMUX=BMUX=CMUX=1;

WR=RD=0;

ALU=100;

COND=NEXT;

Адрес 29. Поместить в rd результат инвертирования temp0, продолжить с адреса 106

RD ← NAND (temp0, temp0); GOTO 106

A=100; B=100; C=*;

AMUX=1; BMUX=1; CMUX=0;

WR=RD=0;

ALU=100;

COND=JImm;

JMPADDR=1101010;