|
Проектування комп'ютера |
b>Безадресна - поле адреси в команді відсутнє. Адреса операнда, або немає змісту або є по замовчуванню (наприклад дії на спеціальним регістром - акумулятором). Безадресні команди неможливо використати для інших регістрів чи комірок пам'яті. Одним з різновидів безадресної адресації є використання стеку. В команду вводяться спеціальні ознаки з тим, щоб пристрій керування міг розпізнати використаний спосіб. Це можуть бути додаткові розряди в команді, або для різних типів команд закріплюватись різні способи адресації.Вихідні дані на проектування|
Варіант №9 | | № | Арифметичні | Логічні | Керування | Прапорці | Адресація | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | | 1 | 2 | 3 | | | 9 | 3 | 5 | 9 | 1 | 2 | 17 | 2 | 10 | ZF | 2 | 3 | 5 | 1 | | |
1. Реалізація додаткових команд. Необхідно реалізувати 8 додаткових команд. Серед них 3 арифметичні, 3 логічні та 2 команди керування згідно варіанту. В таблиці представлено повний перелік множини інструкцій. |
№ | Код інструкції | Двійкове значення | Зміст | Тип | | 1 | ADD | 00000 | Додає вміст регістру regA до вмісту regB, та зберігає в destReg | R | | 2 | DIV | 01000 | Беззнакове ділення destReg=regA/regB | R | | 3 | IMUL | 01001 | Знакове множення destReg=regA*regB | R | | 4 | XIDIV | 01010 | Знакове ділення і обмін операндів місцями destReg=regA/regB | R | | 5 | AND | 01011 | Побітове логічне І: destReg=regA & regB | R | | 6 | NAND | 00001 | Виконує логічне побітове І-НЕ вмісту regA з вмістом regB, та зберігає в destReg | R | | 7 | XOR | 01100 | Додавання по модулю 2: destReg=regA # regB | R | | 8 | CMPGE | 01101 | Порівняти regA regB destReg= regA >= regB | R | | |
Інструкції R-типу: біти 24-22: код операції біти 21-19: reg A біти 18-16: reg B біти 15-3: не використовуються (=0) біти 2-0: destReg |
№ | Код інструкції | Двійкове значення | Зміст | Тип | | 9 | LW | 00010 | Завантажує regB з пам'яті. Адреса пам'яті формується додаванням зміщення до вмісту regA. | I | | 10 | SW | 00011 | Зберігає вміст регістру regB в пам'ять. Адреса пам'яті формується додаванням зміщення до вмісту regA. | I | | 11 | BEQ | 00100 | Якщо вміст регістрів regA та regB однаковий, виконується перехід на адресу програмний лічильник (ПЛ) + 1+зміщення, в ПЛ зберігається адреса поточної тобто beq інструкції. | I | | 12 | JMAE | 01110 | Беззнакове більше/рівно if (regA>= regB) PC=PC+1+offSet | I | | 13 | JMNAE | 01111 | Беззнакове не більше/рівно if (regA! >= regB) PC=PC+1+offSet | I | | 14 | JNE | 10010 | Перейти, якщо більше чи рівно, if (ZF! =0) PC=offset | I | | |
I-тип інструкцій: біти 24-22: код операції біти 21-19: reg A біти 18-16: reg B біти 15-0: зміщення (16 біт, значення від - 32768 до 32767) |
№ | Код інструкції | Двійкове значення | Зміст | Тип | | 15 | JARL | 00101 | Спочатку зберігає ПЛ+1 в regB, в ПЛ адреса поточної (jalr) інструкції. Виконує перехід на адресу, яка зберігається в regA. Якщо в якості regA regB задано один і той самий регістр, то спочатку в цей регістр запишеться ПЛ+1, потім виконається перехід до ПЛ+1. | J | | 16 | BSF | 10000 | Побітове сканування в прямому (від молодших до старших) напрямку regA в пошуках біта з 1, повертає номер позиції в destReg. Якщо 1 знайдено ZF=1, інакше ZF=0 | J | | 17 | BSR | 10001 | Побітове сканування в зворотньому напрямку (від старших до молодших) regA в пошуках біта з 1, повертає номер позиції в destReg. Якщо 1 знайдено ZF=1, інакше ZF=0 | J | | |
J-тип інструкцій: біти 24-22: код операції біти 21-19: reg A біти 18-16: reg B біти 15-0: не використовуються (=0) Додатковий тип адресації - безадресна (реалізація стеку). Ця адресація имагає двох додаткових інструкцій: PUSH, POP. |
№ | Код інструкції | Двійкове значення | Зміст | Тип | | 18 | HALT | 00110 | Збільшує значення ПЛ на 1, потім припиняє виконання, стимулятор має повідомляти, що виконано зупинку. | O | | 19 | NOOP | 00111 | Нічого не виконується | O | | 20 | PUSH | 10011 | Записати в стек з 1 регістру | O | | 21 | POP | 10100 | Зчитати з стеку в 1 регістр | O | | |
O-тип інструкцій: біти 24-22: код операції біти 21-0: не використовуються (=0) \ Роз'яснення та аналіз основних принципів побудови комп'ютерів на прикладі визначених на реалізацію інструкційСтруктура СК після модифікації:Рис 1. Функціональна схема СК після модифікаціїВ СК було додано 13 інструкцій, внаслідок чого поле КОП збільшилося на 2 біти до 5 біт (максимально 32 інструкції з яких використано 21). Решта частина коду операції не зазнала зміни. Був доданий стек глибиною 32 слова по 32 біти, покажчик вершини стеку, прапорець стану ZF.Перевірка правильності роботи реалізованих команд у прикладах1. div: 45/5=9. Програма: lw 0 1 num1 lw 0 2 num2 div 1 2 3 done halt num1 .fill 45 num2 .fill 5 Машинний код: 8454148 8519685 34209795 25165824 45 5 Кінцевий стан: @@@ state: pc 4 ZF = 0 stack: memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 34209795 mem[ 3 ] 25165824 mem[ 4 ] 45 mem[ 5 ] 5 registers: reg[ 0 ] 0 reg[ 1 ] 45 reg[ 2 ] 5 reg[ 3 ] 9 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state 2. imul: 3*(-4)=-12. Програма: lw 0 1 num1 lw 0 2 num2 imul 1 2 3 done halt num1 .fill 3 num2 .fill -4 Машинний код: 8454148 8519685 34209795 25165824 3 -4 Кінцевий стан: @@@ state: pc 4 ZF = 0 stack: memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 38404099 mem[ 3 ] 25165824 mem[ 4 ] 3 mem[ 5 ] -4 registers: reg[ 0 ] 0 reg[ 1 ] 3 reg[ 2 ] -4 reg[ 3 ] -12 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0 reg[ 7 ] 0 end state 3. xidiv: 30/(-5)=-6, обміняти операнди місцями. Програма: lw 0 1 num1 lw 0 2 num2 xidiv 1 2 3 done halt num1 .fill 30 num2 .fill -5 Машинний код: 8454148 8519685 42598403 25165824 30 -5 Кінцевий стан: @@@ state: pc 4 ZF = 0 stack: memory: mem[ 0 ] 8454148 mem[ 1 ] 8519685 mem[ 2 ] 42598403 mem[ 3 ] 25165824 mem[ 4 ] 30 mem[ 5 ] -5 registers: reg[ 0 ] 0 reg[ 1 ] -5 reg[ 2 ] 30 reg[ 3 ] -6 reg[ 4 ] 0 reg[ 5 ] 0 reg[ 6 ] 0
Страницы: 1, 2, 3, 4, 5
|
|
|
© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент. |
|
|