Смекни!
smekni.com

Линейное программирование симплекс методом Данцига (стр. 1 из 2)

Содержание

1. Постановка задачи

2. Форматы команд и их кодировка

3. Структурная схема процессора

4. Регистры

5. АЛУ

6. Формат микрокоманд

7. Микрокод

8. Кодировка микрокода

9. Примеры выполнения команд

10. Основные сигналы и регистры процессора

11. Примеры программ

12. Определение производительности

Постановка задачи

Синтезировать структуру простого магистрального процессора с одним АЛУ, выполняющего 8 заданных команд. Разработать формат команд, кодировку команд. Разработать структурную схему процессора, функциональные схемы всех блоков процессора, функциональную схему процессора в целом с указанием всех шин и управляющих сигналов.

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

Определить максимальную тактовую частоту процессора. Определить производительность процессора в операциях в секунду (IPS), а также выраженную в числе выполняемых тестовых программ в секунду. Указать способы повышения производительности процессора.

Характеристика процессора

Простой процессор магистрального типа с одноблочным универсальным АЛУ.

Разрядность регистров РОН и АЛУ процессора - 8 бит.

Число РОН - 4.

Адресуемая память - 256 слов.

Устройство управления - микропрограммное с ПЗУ микропрограмм.

Способ выполнения команд – последовательное выполнение или JMP или JC.

Адресация памяти - прямая.

Арифметика в дополнительном коде.

Вариант: 54 = «2 2 2 3»

Без использования непосредственной адресации.

3х-адресные команды.

Операции АЛУ: NOP, ADD + SHRA, NAND.

Состав команд: LD, ST, ADD, SHR + JC, DEC, SUB, NAND.


Форматы команд и их кодировка

Коды команд

КОП Команда Действие
000 ADD Rx,Ry,Rz Rx=Ry+Rz сложение
001 NAND Rx,Ry,Rz Rx=!(Ry&Rz) И-НЕ
010 SHR Rx,Ry Rx=Ry/2 арифметический сдвиг вправо
011 JC address jmp on carry условный переход по переносу
100 DEC Rx,Ry Rx=Ry-1 декремент (уменьшение на 1)
101 SUB Rx,Ry,Rz Rx=Ry-Rz вычитание
110 LD Rx,address Rx=Mem(address) загрузка из ОЗУ в регистр
111 ST Ry,address Mem(address)=Rx запись из регистра в ОЗУ

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

ADD Rx,Ry,Rz
КОП Rx Ry Rz не используется
0 0 0 x x y y z z
NAND Rx,Ry,Rz
КОП Rx Ry Rz не используется
0 0 1 x x y y z z
SHR Rx,Ry
КОП Rx Ry не используется
0 1 0 x x y y
JC address
КОП не использ. address
0 1 1 a a a a a a a a

DEC Rx,Ry
КОП Rx Ry не используется
1 0 0 x x y y
SUB Rx,Ry,Rz

КОП

Rx

Ry

Rz

не используется

1

0

1

x

x

y

y

z

z

LD Rx,address
КОП Rx не исп. address
1 1 0 x x a a a a a a a a
ST Rx,address
КОП не исп Ry address
1 1 1 y y a a a a a a a a

Структурная схема процессора


Регистры

Номер При записи (по шине С) При чтении (по шине A и B)
000 0 Rg0 программно-доступные регистры Rg0 программно-доступные регистры
001 1 Rg1 Rg1
010 2 Rg2 Rg2
011 3 Rg3 Rg3
100 4 Temp0 Temp0
101 5 PC PC
110 6 IR_HI (старшая часть IR) IR константа 1
111 7 IR_LO (младшая часть IR) IR_LO

При чтении старшей части регистра команд, на шину A или B поступает единичная константа (00000001). Это вполне допустимо, т.к. старшая часть регистра команд имеет свои выходы из блока регистров: (КОП, Rx, Ry, Rz). Младшая часть регистра команд поступает на шины A или B в неизменном виде, т.к. в некоторых командах процессора в младшей части регистра команд находиться 8-битный адрес. Единичная константа применяется при инкрементировании счетчика команд, а также для получения константы -1 = 11111111 (см. микрокод для команды DEC).

Разрядность РОН (регистры общего назначения) – 8 бит

Разрядность PC (program counter) – 8 бит

Разрядность IR (регистр команд) – 16 бит (доступно два регистра по 8 бит)


АЛУ

Структурная схема АЛУ и его связь с другими блоками машины показаны на рисунке. В состав АЛУ входят регистры Рг1 - Рг7, в которых обрабатывается информация , поступающая из оперативной или пассивной памяти N1, N2, ...NS; логические схемы, реализующие обработку слов по микрокомандам, поступающим из устройства управления.

Закон переработки информации задает микропрограмма , которая записывается в виде последовательности микрокоманд A1,A2, ..., Аn-1,An. При этом различают два вида микрокоманд: внешние, то есть такие микрокоманды, которые поступают в АЛУ от внешних источников и вызывают в нем те или иные преобразования информации (на рис. 1 микрокоманды A1,A2,..., Аn), и внутренние, которые генерируются в АЛУ и воздействуют на микропрограммное устройство, изменяя естественный порядок следования микрокоманд. Например, АЛУ может генерировать признаки в зависимости от результата вычислений: признак переполнения, признак отрицательного числа, признак равенства 0 всех разрядов числа др. На рис. 1 эти микрокоманды обозначены р1, p2,..., рm.

Результаты вычислений из АЛУ передаются по кодовым шинам записи у1, у2, ...,уs, в ОЗУ.

Функции регистров, входящих в АЛУ:

Рг1 - сумматор (или сумматоры) - основной регистр АЛУ, в котором образуется результат вычислений;

Рг2, РгЗ - регистры слагаемых, сомножителей, делимого или делителя (в зависимости от выполняемой операции);

Рг4 - адресный регистр (или адресные регистры), предназначен для запоминания (иногда и формирования) адреса операндов и результата;

Ргб - k индексных регистров, содержимое которых используется для формирования адресов;

Рг7 - i вспомогательных регистров, которые по желанию программиста могут быть аккумуляторами, индексными регистрами или использоваться для запоминания промежуточных результатов.

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

MIR – Microinstruction register – регистр микрокоманд (24 bit)
A A MUX B B MUX C C MUX RD WR ALU COND JMP ADDRESS

A, B, C – номер регистра для осуществления чтения (A, B) или записи (C)

A MUX, B MUX, C MUX – откуда брать номер регистра

(0 – из команды IR, 1 – из микрокоманды MIR)

RD – чтение из ОЗУ

При этом адрес памяти берется с шины А, а результат подается на шину С

WR – запись в ОЗУ

При этом адрес памяти берется с шины А, а данные - с шины B

ALU – код операции АЛУ

КОП АЛУ Операция АЛУ
00 NOP
01 ADD
10 SHRA
11 NAND

COND – условие для определения адреса следующей выполняемой микрокоманды

COND Куда переходим
00 NEXT на следующую микрокоманду
01 DECODE декодирование команды, Address = [KOP]100
10 JMP безусловный переход
11 JC условный переход по переносу (Carry Flag)

JMP ADDRESS – адрес в памяти микропрограмм, куда осуществляется переход


Микрокод

Адрес Микрокоманда Пояснение
0 1 2 3 IR_HI = NOP(PC); READ PC = ADD(PC, IR_HI) IR_LO = NOP(PC); READ DECODE чтение старшего слова команды переход к следующему слову (PC = PC + 1) чтение младшего слова команды декодирование считанной команды
ADD Rx, Ry, Rz
4 Rx = ADD(Ry, Rz); JMP 62 сложение содержимого регистров
NAND Rx, Ry, Rz
12 Rx = NAND(Ry,Rz); JMP 62 И-НЕ для содержимого регистров
SHR Rx, Ry
20 Rx = SHR(Ry); JMP 62 арифметич. сдвиг содержимого регистра
JC address
28 29 30 Temp0 = NOP(Temp0); JC 30 JMP 62 PC = NOP(IR_LO); JMP 0 организация условного перехода если условие не выполнилось, то завершить иначе записать в PC новый адрес из IR_LO
DEC Rx, Ry
36 37 38 Temp0 = SHR(IR_HI) Temp0 = NAND(Temp0, Temp0) Rx = ADD(Ry,Temp0); JMP 62 Temp0 = 0 (00000001 - 00000000) Temp0 = -1 (11111111) Rx = Ry + Temp0 = Ry + (-1)
SUB Rx, Ry, Rz
44 45 46 47 48 Temp0 = SHR(IR_HI) Temp0 = ADD(Temp0, Rz) Temp0 = NAND(Temp0, Temp0) Temp0 = ADD(Temp0, IR_HI) Rx = ADD(Ry, Temp0); JMP 62 Temp0 = 0 (00000001 - 00000000) Temp0 = 0 + Rz = Rz инвертировать Temp0 = Rz Temp0 = ( ! Rz) + 1 Rx = Ry + (-Rz)
LD Rx, address
52 Rx = NOP(IR_LO); READ; JMP 62 чтение из ОЗУ (шина A – адрес)
ST Ry, address
60 61 Temp0 = NOP(Ry) Temp0 = NOP(IR_LO, Temp0); WRITE; JMP 62 Temp0 = Ry (данные на шину B) запись в ОЗУ (шина A – адрес, шина B - данные)
End:
62 PC = ADD(PC, IR_HI); JMP 0 увеличение счетчика команд (PC=PC+1)

Кодировка микрокода