Мета виконання роботи: Опанування технікою роботи з архітектурним симулятором WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64.
Завдання: Дослідити симулюванням виконання окремих машинних інструкцій і пар інструкцій. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Теоретичні відомості: Симулятор використовує операційну систему Windows. Симулятор WinMIPS64 запускають за правилами Windows. Основне вікно симулятора містить шість дочірних вікон і ще статусну лінію під ними. Дочірні вікна отримали назви Pipeline, Code, Data, Registers, Statistics і ще вікно часових діаграм (Clock Cycles Diagram).

1)Pipeline window
вікно конвеєра інструкцій, five pipeline stages :
1. IF – instruction fetch from instruction memory
2. ID – instruction decoding/operand fetch
3. EX – execute
4. MEM – to/from data memory
5. WB – write back to registers file
Вікно містить “схематичне” подання п’ятисходинкового конвеєра інструкцій 64-розрядного процесора MIPS64 разом з апаратними секціями виконання операцій рухомої коми, а саме, додавання/віднімання (addition/subtraction) множення (multiplication) і ділення (division). Рухоме ділення не конвеєризоване.Це вікно показує, на якій сходинці конвеєра знаходиться та чи інша інструкція. Вікно може збільшуватися.
2)Code window (вікно коду).
Вікно виконує триколонкове подання пам’яті інструкцій, а саме, (зліва направо): адреса байта, 32-бітову машинну інструкцію, асемблерну інструкцію. Подвійний лівий щиголь мишею на певній інструкції встановлює/знімає точку зупинки.

3)Data window (вікно даних)
Це вікно показує вмістиме пам’яті даних,. Ясно, що адресування комірок виконується побайтне, проте у вікні вмістиме подане 64-бітовими пакетами, тобто так, як це вмістиме сприймає 64-розрядний процесор. Аби відредагувати певні дані, треба зробити на них подвійний лівий щиголь мешею (double-left-click).
Аби побачити і відрегувати дані з рухомою комою, треба виконати подвійний правий щиголь (double-right-click).

4)Register window (регістрове вікно)
Вікно подає вмістиме регістрів. Коли вмістиме регістрів подають сірим кольором, тоді вмістиме цих регістрів змінюється під дією програми, що симулюється. Коли вмістиме регістру подається кольором, тоді цей колір відповідає кольору сходинки конвеєра де знаходится відповідна інструкція за умови, що з цієї сходинки є можливим так зване випередження (forwarding).
Це вікно дозволяє інтерактивну зміну вмістимого будь-якого регістру, тобто, залежно від контексту, зміну коду 64-бітового цілого або рухомого числа, що в поточний момент містить регістр. Останнє можливе лише за умови, що обраний регістр не знаходиться в процес програмної зміни вмістимого і його вмістиме не має не використовуватися для випередженн даними. Аби змінити вмістиме регістра на ньому треба зробити подвійний лівий щиголь (double-left click on the register). З’явиться модальне спливаюче вікно. Треба натиснути OK, аби записати до регістру 64-бітове гексадецимальне 0х0000000000000777.

5)Clock Cycle diagram (вікно часової діаграми)
Вікно містить часову поведінку конвеєра, що знаходиться під дією поточної програми, що симулюється. Воно фіксує історію кожної інструкції. Коли певна інструкція спричиняє пригальмування конвеєра, тоді її символьне подання в лівій частині циклового вінка міняє колір з чорного на синій. Інструкції, що споживають результат пригальмованої інструкції змінюють колірність на сіру.
6)Statistics (вікно статистики)
Саме це вікно є найважливішим, адже воно накопичує результати виконання кожної лабораторної роботи з дослідження ефективності RISC архітектури. Вікно подає накопичені і поточні статистики програми, що симулюється, а саме, число циклів
(тактових інтервалів) на симуляцію ( number of simulation cycles), число виконаних за ці цикли інструкцій, середнє число циклів на одну інструкцію ( average Cycles Per Instruction, тобто CPI), типи затримок (stalls) і числа виконаних особливих інструкцій, а саме, умовних переходів (conditional branches) і інструкцій завантаження / збереження (Load/Store).

7)Status Line (стан симулятора)
Статусна лінія на низу основного вікна симулятора нормально видає повідомлення "Ready", проте протягом симулювання подає різну корисну користувачеві інформацію щодо поточного стану процесу симулювання.
Симулювання: Просимулюєм програму на навчальному стимуляторі WinMIPS_1_55
Текст програми:
.data
A: .wotd 10
B: .word 8
C: .word 0
.text
main:
ld r4,A(r0)
ld r5,B(r0)
dadd r3,r4,r5
sd r3,C(r0)
halt
Часова діаграма виконання цієї програми без використання випередження:

Часова діаграма виконання цієї програми з використанням випередження:

Як видно з часової діаграми на 6 такті при виконанні інструкції dadd r3,r4,r5 стоїть позначка RAW(read after write) це прискорене передання даних, на цей такт ця інструкція ззатримується в EX тому наступні інструкції затримуються на своїх місцях.
Висновок: На даній лаболаторній роботі я навчився працювати в навчальному стимуляторі WinMIPS64 з 64 – розрядногю RISC архітектурою. Дослідив роботу конвеєрного процесора , ознайомився з затримками які виникають при виконанні певних команд.