| 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 | Temp 0 = 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 | програмний лічильник (адреса в ОЗУ) |
Приклади програм ПРИКЛАД 1 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; Значення основних сигналів і вміст основних регістрів на кожному такті виконання даних прикладів програм наведені у вигляді часових діаграм на електронному носії. Визначення продуктивності Середня кількість мікрокоманд при виконанні команди процесора можна приблизно оцінити як 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); Перейти від мікропрограмного управління до управління на основі жорсткої логіки; Застосувати конвейеризацию; Що-небудь распараллеліть.
Додати в блог або на сайт
Цей текст може містити помилки. Програмування, комп'ютери, інформатика і кібернетика | Реферат 92.4кб. | скачати
Схожі роботи: Лінійне програмування симплекс методом Данцига Рішення задач лінійного програмування симплекс методом Рішення задачі лінійного програмування симплекс методом Розвязання задач графічним методом методом потенціалів методом множників Лангранжа та симплекс-методом Рішення задач симплекс методом Лінійне програмування 2 Лінійне програмування Лінійне програмування Лінійне та нелінійне програмування
|