МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра ЕОМ
/
Лабораторна робота № 2
Дослідження макроалгоритмів та мікроалгоритмів виконання машинних інструкцій.
Мета роботи: зрозуміти і дослідити макроалгоритм та мікроалгоритм виконання кожної машинної інструкції машини Ноймана.
Завдання: покроковим режимом протестувати виконання кожної машинної інструкції, проаналізувати і пояснити отримані результати, потактовим режимом протестувати поокреме виконання кожної машинної інструкції, проаналізувати і пояснити отримані результати, скласти звіт з виконання лабораторних досліджень та захистит.
В покроковому (по-інструкційному, покомандному) режимі виконання програма може містити навіть одну машинну інструкцію. Її виконують одноразовим натисканням влавіші S. Перезапустимо симулятор та уведемо до нульової комірки пам’яті машинну інструкцію обчислення модуля різниці, тобто, дослідимо алгоритм виконання машинної інструкції віднімання. При цьому сплануємо використання пам/яті, до якої треба увести код машинної інструкції, коди операндів і виділити місце для запису результату. Наприклад, операнди розташуємо в комірках з адресами 13 і 14, а результат – в комірці з адресою 15. Код інструкції запишемо до комірки з нульовою адресою. Нагадаємо, що в симуляторі покроковий режим має назву ШАГ.
/
Рис. 3.1 – Стан симулятора з інструкцією віднімання [ - A1 A2 A3 чи – 1310 1410 1510]. Отже, наказали відняти від вмістимого комірки 13 вмістиме комірки 14, а модуль результату записати до комірки 15. Іншими словами, наказали обчислити модуль mod (7 – 52) = ?.
Після одноразового натискання на клавішу S отримуємо наступний стан симулятора:
/
Рис. 3.2 – Стан симулятора з інструкцією віднімання [ - A1 A2 A3 чи – 1310 1410 1510]. Отже, наказали відняти від вмістимого комірки 13 вмістиме комірки 14, а модуль результату записати до комірки 15. Коректно обчислили mod (7 – 52) = 45.
Дослідження алгоритму виконання інструкції віднімання завершено.
В покроковому (інші назви: поінструкційний, покомандний режим) режимі виконання окремої машинної інструкції досліджують мікроалгоритм виконання цієї інструкції. Якщо прийняти до уваги, що в класі універсальних машин алгоритми програмують, програми завантажують до комп’ютерів і ними виконують, то зараз вийде наступне.
1. Програми складають з машинних інструкцій. Кожна інструкція має свій алгоритм виконання і цей алгоритм має точно уявляти системний програміст, що пише програму машинним кодом (як не дивно, але таке трапляється і трапляється не так зрідка). Алгоритми виконання кожної окремої машинної інструкції, що сприймає програміст, називають макроалгоритмами.
2. Для комп’ютерного інженера кожний макроалгоритм, особливий для кожної машинної інструкції, теж потрібно «запрограмувати», тобто, в певній формі записати «програму», що реалізує макроалгоритм виконання тої чи іншої машинної інструкції. Це подібно до програмування, але є іншим.
3. Кажимо, що програміст програмує задачу, а комп’ютерний інженер (мікропрограміст) мікропрограмує макроалгоритм виконання машинної інструкції. Виконання однієї такої мікропрограми є для програміста еквівалентним виконанню однієї машинної інструкції. Якщо програміст розуміє, як поокремі машинні інструкціями складають цілістну програму, то мікропрограміст цим не цікавиться. Задача мікропрограміста - надати в розпорядження програміста ефективний за певними критеріями набір машинних інструкцій (кажуть, множину машинних інструкцій).
Наприклад, множина з вісьми машинних інструкцій симулятора Кроха і його дуже обмежена пам’ять в 16 15-розрядних комірок дозволяє створити для нього компілятор мови Паскаль.
Отже, технології програмування комп’ютерів і їхнього проектування (створення мікрокодів для кожної машинної інструкції) є досить спорідненими.
4. Коли програми складені з машинних інструкцій (команд), тоді кожну машинну інструкцію складають з мікрокоманд, що всі разом утворюють мікропрограму виконання певної машинної інструкції команди).
/
Рис. 4.1 – Машина Ноймана з машинною інструкцією пересилання в нульовій комірці пам’яті та оперендом на пересилання в 14 комірці.
/
Рис. 4.2 – Стан машини Ноймана після натиснення клавіші R вибору режиму з подальшим вибором режиму ТАКТ.
МК1: memory(0000) → IR.
/
Рис. 4.3 – Натиснемо клавішу Т (такт) і отримаємо цей стан машини Ноймана, коли виконалася друга мікродія мікропрограми виконання машинної інструкції пересидання. МК2: PC + 1 → PC.
/
Рис. 4.4 – Ще раз натиснемо клавішу Т (такт) і отримаємо цей стан машини Ноймана. МК3: memory(1110) → ACC.
/
Рис. 4.5 – Ще раз натиснемо клавішу Т (такт) і отримаємо цей стан машини Ноймана. Четвертою мікрокомандою мікропрограми бінарний код операнда переслано з акумулятора до цільової комірки пам’яті з адресою 15 (11112). Виконання інструкції пересилання завершено так само, як завершено виконання її мікропрограми. Отже, маємо четверту і завершальну мікрокоманду мікропрограми виконання машинної інструкції пересилання:
МК4: ACC → memory(1111).
/
Рис. 4.6 – Якщо по завершенню мікропрограми ще раз натиснути клавішу Т (такт), тоді отримаємо цей стан машини Ноймана з виконаною першою мікрокомандою мікропрограми виконання машинної інструкції, яку містить перша комірка пам’яті. Нехай там маємо нульове сміття (ми це не писали, машина Ноймана сприймає це сміття за бінарний код машинної інструкції і починає його виконувати. Проте виконання наступної машинної інструкції є іншою історією. Що нас зараз не цікавить.
В результаті ми отримали наступну мікропрограму виконання машинної інструкції пересилання:
МК1: memory(0000) → IR.
МК2: PC + 1 → PC.
МК3: memory(1110) → ACC.
МК4: ACC → memory(1111).
Цим дослідження мікропрограми виконання машинної інструкції пересилання вмістимого однієї комірки пам’яті до іншої завершено.
Варіант завдань на лабораторну роботу №14
Створити програму у машинних кодах для обчислення виразу згідно наведених варіантів. Результат виконання має виводитися у вікно результату. Для змінних та констант визначити відповідні комірки пам’яті.
r =100x-101x-…-119x
Результат виконання програми
/
Висновок: я зрозумітв і дослідив макроалгоритм та мікроалгоритм виконання кожної машинної інструкції машини Ноймана