Зміст
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.
Формати команд і їх кодування
Коди команд
Формат команд
При читанні старшої частини регістра команд, на шину 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 допоміжних регістрів, які за бажанням програміста можуть бути акумуляторами, індексними регістрами або використовуватися для запам'ятовування проміжних результатів.
Формат мікрокоманд
A, B, C - номер регістра для здійснення читання (A, B) або запису (C)
A MUX, B MUX, C MUX - звідки брати номер регістра
(0 - з команди IR, 1 - з мікрокоманд MIR)
RD - читання з ОЗУ
При цьому адреса пам'яті береться з шини А, а результат подається на шину З
WR - запис в ОЗУ
При цьому адреса пам'яті береться з шини А, а дані - з шини B
ALU - код операції АЛП
COND - умова для визначення адреси наступної виконуваної мікрокоманд
JMP ADDRESS - адресу в пам'яті мікропрограм, куди здійснюється перехід
Мікрокод
Кодування мікрокоду
DEPTH = 64;% кількість слів%
WIDTH = 24;% розмір слова в бітах%
ADDRESS_RADIX = DEC;% система числення для адреси%
DATA_RADIX = BIN;% система числення для даних%
CONTENT
BEGIN
[0 .. 63]: 0;% за замовчуванням скрізь нулі%
% Ініціалізація%
0: 101100011101100000000000;% IR_HI = NOP (PC); READ%
1: 101111011011000100000000;% PC = ADD (PC, IR_HI)%
2: 101100011111100000000000;% IR_LO = NOP (PC); READ%
3: 000100011001000001000000;% DECODE%
% ADD Rx, Ry, Rz%
4: 000000000000000110111110;% Rx = ADD (Ry, Rz); JMP 62%
% NAND Rx, Ry, Rz%
12: 000000000000001110111110;% Rx = NAND (Ry, Rz); JMP 62%
% SHR Rx, Ry%
20: 000000000000001010111110;% Rx = SHR (Ry); JMP 62%
% JC address%
28: 100110011001000011011110;% Temp0 = NOP (Temp0); JC 30%
29: 100110011001000010111110;% JMP 62%
30: 111110011011000010000000;% PC = NOP (IR_LO); JMP 0%
% DEC Rx, Ry%
36: 110100011001001000000000;% Temp0 = SHR (IR_HI)%
37: 100110011001001100000000;% Temp0 = NAND (Temp0, Temp0)%
38: 000010010000000110111110;% Rx = ADD (Ry, Temp0); JMP 62%
% SUB Rx, Ry, Rz%
44: 110100011001001000000000;% Temp0 = SHR (IR_HI)%
45: 100100001001000100000000;% Temp0 = ADD (Temp0, Rz)%
46: 100110011001001100000000;% Temp0 = NAND (Temp0, Temp0)%
47: 100111011001000100000000;% Temp0 = ADD (Temp0, IR_HI)%
48: 000010010000000110111110;% Rx = ADD (Ry, Temp0); JMP 62%
% LD Rx, address%
52: 111100010000100010111110;% Rx = NOP (IR_LO); READ; JMP 62%
% ST Ry, address%
60: 000000011001000000000000;% Temp0 = NOP (Ry)%
61: 111110011001010010111110;% Temp0 = NOP (IR_LO, Temp0);
WRITE; JMP 62%
62: 101111011011000110000000;% PC = ADD (PC, IR_HI); JMP 0%
END;
Приклади виконання команд
Приклади виконання кожної команди із зазначенням значення всіх основних сигналів і вмістом основних регістрів на кожному такті виконання наведені на електронному носії.
Основні сигнали і регістри
DEPTH = 256;% Memory depth and width are required%
WIDTH = 8;% Enter a decimal number%
ADDRESS_RADIX = DEC;% Address and value radixes are optional%
DATA_RADIX = BIN;% Enter BIN, DEC, HEX, or OCT; unless%
CONTENT
BEGIN
%-------------------%
0: 11001000;% LD Rg1, [6]%
1: 00000110;
2: 11010000;% LD Rg2, [7]%
3: 00000111;
4: 00011011;% ADD Rg3, Rg1, Rg2%
5: 00000000;
6: 00010110;% const 22 (DEC)%
7: 00100001;% const 33 (DEC)%
END;
ПРИКЛАД 2
DEPTH = 256;% Memory depth and width are required%
WIDTH = 8;% Enter a decimal number%
ADDRESS_RADIX = DEC;% Address and value radixes are optional%
DATA_RADIX = BIN;% Enter BIN, DEC, HEX, or OCT; unless%
CONTENT
BEGIN
%-----------------%
0: 11001000;% LD Rg1, [10]%
1: 00001010;
2: 01010010;% SHR Rg2, Rg1%
3: 00000111;
4: 01100000;% JC 8%
5: 00001000;
6: 10010010;% DEC Rg2, Rg1%
7: 00000000;
8: 11100010;% ST Rg1, [10]%
9: 00001010;
10: 00000001;% const = 1%
END;
Значення основних сигналів і вміст основних регістрів на кожному такті виконання даних прикладів програм наведені у вигляді часових діаграм на електронному носії.
Підвищити продуктивність процесора можна одним з таких способів:
§ Збільшити розрядність шини-приймача з 8 до 16 біт, і зчитувати команду з ОЗУ не за три такти, а за один;
§ Збільшити функціональність АЛУ, при цьому можна буде скоротити довжину мікрокоду для деяких команд (особливо для SUB і DEC);
§ Перейти від мікропрограмного управління до управління на основі жорсткої логіки;
§ Застосувати конвейеризацию;
§ Що-небудь распараллеліть.
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 | |||||||||
| |||||||||||||||||
КОП | 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 | |||
Структурна схема процесора
P C |
Регістри
Номер | Під час запису (по шині С) | При читанні (по шині 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 | |||
Розрядність РОН (регістри загального призначення) - 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 MUX, B MUX, C MUX - звідки брати номер регістра
(0 - з команди IR, 1 - з мікрокоманд MIR)
RD - читання з ОЗУ
При цьому адреса пам'яті береться з шини А, а результат подається на шину З
WR - запис в ОЗУ
При цьому адреса пам'яті береться з шини А, а дані - з шини B
ALU - код операції АЛП
КОП АЛП | Операція АЛП |
00 | NOP |
01 | ADD |
10 | SHRA |
11 | NAND |
COND | Куди переходимо | |
00 | NEXT | на наступну мікрокоманду |
01 | DECODE | декодування команди, Address = [KOP] 100 |
10 | JMP | безумовний перехід |
11 | JC | умовний перехід по переносу (Carry Flag) |
Мікрокод
Адреса | Мікрокоманда | Пояснення |
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) |
Кодування мікрокоду
DEPTH = 64;% кількість слів%
WIDTH = 24;% розмір слова в бітах%
ADDRESS_RADIX = DEC;% система числення для адреси%
DATA_RADIX = BIN;% система числення для даних%
CONTENT
BEGIN
[0 .. 63]: 0;% за замовчуванням скрізь нулі%
% Ініціалізація%
0: 101100011101100000000000;% IR_HI = NOP (PC); READ%
1: 101111011011000100000000;% PC = ADD (PC, IR_HI)%
2: 101100011111100000000000;% IR_LO = NOP (PC); READ%
3: 000100011001000001000000;% DECODE%
% ADD Rx, Ry, Rz%
4: 000000000000000110111110;% Rx = ADD (Ry, Rz); JMP 62%
% NAND Rx, Ry, Rz%
12: 000000000000001110111110;% Rx = NAND (Ry, Rz); JMP 62%
% SHR Rx, Ry%
20: 000000000000001010111110;% Rx = SHR (Ry); JMP 62%
% JC address%
28: 100110011001000011011110;% Temp0 = NOP (Temp0); JC 30%
29: 100110011001000010111110;% JMP 62%
30: 111110011011000010000000;% PC = NOP (IR_LO); JMP 0%
% DEC Rx, Ry%
36: 110100011001001000000000;% Temp0 = SHR (IR_HI)%
37: 100110011001001100000000;% Temp0 = NAND (Temp0, Temp0)%
38: 000010010000000110111110;% Rx = ADD (Ry, Temp0); JMP 62%
% SUB Rx, Ry, Rz%
44: 110100011001001000000000;% Temp0 = SHR (IR_HI)%
45: 100100001001000100000000;% Temp0 = ADD (Temp0, Rz)%
46: 100110011001001100000000;% Temp0 = NAND (Temp0, Temp0)%
47: 100111011001000100000000;% Temp0 = ADD (Temp0, IR_HI)%
48: 000010010000000110111110;% Rx = ADD (Ry, Temp0); JMP 62%
% LD Rx, address%
52: 111100010000100010111110;% Rx = NOP (IR_LO); READ; JMP 62%
% ST Ry, address%
60: 000000011001000000000000;% Temp0 = NOP (Ry)%
61: 111110011001010010111110;% Temp0 = NOP (IR_LO, Temp0);
WRITE; JMP 62%
62: 101111011011000110000000;% PC = ADD (PC, IR_HI); JMP 0%
END;
Приклади виконання команд
Приклади виконання кожної команди із зазначенням значення всіх основних сигналів і вмістом основних регістрів на кожному такті виконання наведені на електронному носії.
Основні сигнали і регістри
Скорочення | Примітка |
CLOCK | синхронізуючий сигнал |
C_SEL [2 .. 0] | номер регістра обраного в якості приймача |
A_SEL [2 .. 0] | номер регістра обраного в якості джерела 1 |
B_SEL [2 .. 0] | номер регістра обраного в якості джерела 2 |
Rx [2 .. 0] | номер регістра приймача з IR (регістру команд) |
Ry [2 .. 0] | номер регістра джерела 1 з IR (регістру команд) |
Rz [2 .. 0] | номер регістра джерела 2 з IR (регістру команд) |
MIR_A [2 .. 0] | номер регістра приймача з MIR (р-ра мікрокоманд) |
MIR_B [2 .. 0] | номер регістра джерела 1 з MIR (розчину мікрокоманд) |
MIR_C [2 .. 0] | номер регістра джерела 2 з MIR (р-ра мікрокоманд) |
AMUX | Звідки брати номер регістра (0 - з IR, 1 - з MIR) Ці сигнали управляють відповідними мультиплексорами. |
BMUX | |
CMUX | |
A_bus [7 .. 0] | Дані на шинах джерелах, що виходять з блоку регістрів |
B_bus [7 .. 0] | |
C_ALU [7 .. 0] | Результат виходить з АЛП |
C_RAM [7 .. 0] | Дані, лічені з ОЗУ |
C_bus [7 .. 0] | Вибрані дані для запису (С_ALU або C_RAM) |
RD | сигнал читання з ОЗУ |
WR | сигнал запису в ОЗУ |
KOP_ALU [1 .. 0] | код операції АЛУ (надходить з MIR) |
COND [1 .. 0] | визначення наступної мікрокоманди (з MIR) |
CBL_SEL [1 .. 0] | результат роботи Control Branch Logic (логіка управління розгалуженням) - визначає наступну мікрокоманду |
CF | прапор переносу, який надходить з АЛУ Control Branch Logic |
JMP_ADR [5 .. 0] | адреса наступної мікрокоманди (з MIR) |
MIR [23 .. 0] | повне значення регістра мікрокоманд (24 біт) |
PC | програмний лічильник (адреса в ОЗУ) |
Приклади програм
ПРИКЛАД 1DEPTH = 256;% Memory depth and width are required%
WIDTH = 8;% Enter a decimal number%
ADDRESS_RADIX = DEC;% Address and value radixes are optional%
DATA_RADIX = BIN;% Enter BIN, DEC, HEX, or OCT; unless%
CONTENT
BEGIN
%-------------------%
0: 11001000;% LD Rg1, [6]%
1: 00000110;
2: 11010000;% LD Rg2, [7]%
3: 00000111;
4: 00011011;% ADD Rg3, Rg1, Rg2%
5: 00000000;
6: 00010110;% const 22 (DEC)%
7: 00100001;% const 33 (DEC)%
END;
ПРИКЛАД 2
DEPTH = 256;% Memory depth and width are required%
WIDTH = 8;% Enter a decimal number%
ADDRESS_RADIX = DEC;% Address and value radixes are optional%
DATA_RADIX = BIN;% Enter BIN, DEC, HEX, or OCT; unless%
CONTENT
BEGIN
%-----------------%
0: 11001000;% LD Rg1, [10]%
1: 00001010;
2: 01010010;% SHR Rg2, Rg1%
3: 00000111;
4: 01100000;% JC 8%
5: 00001000;
6: 10010010;% DEC Rg2, Rg1%
7: 00000000;
8: 11100010;% ST Rg1, [10]%
9: 00001010;
10: 00000001;% const = 1%
END;
Значення основних сигналів і вміст основних регістрів на кожному такті виконання даних прикладів програм наведені у вигляді часових діаграм на електронному носії.
Визначення продуктивності
Середня кількість мікрокоманд при виконанні команди процесора можна приблизно оцінити як 4 + 17 / 8 + 1 = 7 мікрокоманд на команду процесора. Таким чином, при максимальній тактовій частоті в 33,3 МГц середня продуктивність процесора складе 4, 7 MOPS (або 33,3 М μops / сек). Тестова програма | Кількість команд процесора | Кількість мікрокоманд | Час виконання, нс | N / сек |
ПРИКЛАД 1 | 3 | 18 | 540 | 1851851 |
ПРИКЛАД 2 | 5 | 34 | 1020 | 980398 |
§ Збільшити розрядність шини-приймача з 8 до 16 біт, і зчитувати команду з ОЗУ не за три такти, а за один;
§ Збільшити функціональність АЛУ, при цьому можна буде скоротити довжину мікрокоду для деяких команд (особливо для SUB і DEC);
§ Перейти від мікропрограмного управління до управління на основі жорсткої логіки;
§ Застосувати конвейеризацию;
§ Що-небудь распараллеліть.