МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра БІТ
/
З В І Т
до лабораторної роботи №1
з курсу: “ Архітектура комп'ютерних систем” на тему:
«ПРАКТИКА РОБОТИ З АРХІТЕКТУРНИМ СИМУЛЯТОРОМ WINMIPS64»
Варіант № 11
Мета роботи
Опанування технікою роботи з архітектурним симулятором WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64.
Завдання
/
Завантаження програми
Код для виконання програми:
/
Хід роботи
/
Clock 1
Натиснути Execute/Single Cycle (або натиснути F7). Симулятор виконає перший цикл (тактовий інтервал) програми. Увага! Не першу інструкцію, а лише перший цикл, що для п’ятисходинкового конвеєра відповідає виконанню 1/5 першої інструкції в найкращому випадку, коли нема вимушених затримок конвеєра.
/
Clock 2
Наступний натиск на F7 змінює забарвленість в вікні Code через уведення червоного кольору для третьої сходинки EX конвеєра. До конвеєра увійшла інструкція dadd r3, r4, r5.
/
Clock 3
Третій натиск на F7 знову змінює забарвленість вікна Code, уводячи зелену забарвленість для четвертої сходинки MEM конвеєра. До конвеєру входить інструкція sd r3, C(r0).
/
Clock 4
Знову натискаємо F7. Кожна сходинка конвеєра отримує нову інструкцію. Регістр r4 має завантажуватися з комірки пам’яті даних. Проте оновлене вмістиме регістра можна отримати завчасно (кажуть – з випередженням в часі, прямо з виходу пам’яті даних, тобто, з виходу сходинки МЕМ (for forwarding from the MEM stage).
Отже, прямо з виходу пам’яті забираємо новий, ще не записаний до регістру призначення операнд (це і є випередження), а далі паралельно виконуємо додавання цього нового операнду і в той самий час пишемо цей операнд до регістру регістрового файлу. Добре, що в конвеєрі водночас знаходиться черга з п’ятьох інструкцій, тобто, всі ці інструкції є «під рукою». Можна бачити, що r4 забарвлюється зеленим (колір сходинки MEM) у вікні Registers. Зауважимо, що остання інструкція програми halt (симулятор не має навіть примітивної програми монітора, що вже казати про операційну систему; отже, програміст мусить вручну гальмувати виконання програми саме такою інструкцією) вже уведена до конвеєра.
/
Clock 5
Натискаємо F7. Тут відбуваються цікаві події. Значення, призначене для r5, стає доступним для пересилання. Однак саме значення для r5 не було доступне вчасно для виконання інструкції dadd r3, r4, r5 у EX. Таким чином воно залишається в EX. У рядку стану написано "RAW зупинка в EX (R5)", вказуючи, де сталася зупинка, і відсутність якого регістру була причиною цього.
Фігури в вікнах Clock Cycle Diagram і Pipeline чітко вказують на те, що інструкція dadd “застрягла” в сходинці EX, і що всі інструкції за нею також неспроможні пересуватися конвеєром далі. У вікні Clock Cycle Diagram інструкцію dadd підсвічено блакитним, а інструкції, що розташовані за нею “посіріли”.
/
Clock 6
Натискаємо F7. Інструкція dadd r3,r4,r5 нарешті виконується, а щойно отримана сума, призначена для запису до r3, паралельно стає досяжною для виконання випередження (зі сходинки execute). Отримано значення 0х12, що є сумою 10 + 8 = 18 в десятковій. Це і є відповідь програми.
/
Clock 7
Натискаємо F7. Інструкція halt, вже уведена до конвеєра, спричинює ефект “закриття” конвеєра. По ній вже жодна інша інструкція не уводиться до конвеєра, а сам конвеєр поступово спорожнюється, він сходинки IF до сходинки WB.
/
Clock 8
Натискаємо F7. Перевіряємо пам’ять даних Data , де фіксуємо, що змінна C набула значення 0х12. Інструкція sd r3,C(r0) записала це значення до пам’яті на сходинці MEM конвеєра, використовуючи випереджені дані з виходу IF, які вже нормально, без випередження записуються до регістра r3.
Clock 9 та Clock 10
Натискаємо F7 двічі. Програма фінішує./
/
Висновок: здобув знання в роботі з технікою роботи з архітектурним симулятором WinMIPS64, машини з 64-розрядною RISC архітектурою MIPS64.