Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Кафедра ЗІ
/
Лабораторна робота №2
«ДОСЛІДЖЕННЯ ВИКОНАННЯ ЦИКЛІВ НА
КОНВЕЄРІ ІНСТРУКЦІЙ»
з дисципліни
«Архітектура комп'ютерних систем»
Варіант - 4
Мета роботи - опанувати техніку конвеєрного виконання RISC інструкцій.
Завдання
Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною
RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів
машинних програм, що містять цикли. Виявити наявні залежності (небезпеки)
даних і керування, оптимізувати програмний код та дослідити дію
запропонованої оптимізації. За результатами проведених лабораторних
досліджень оформити звіт та захистити його.
Текст асемблерної програми
.data
values: .word 24, 30, 39, 49, 22, 24, 53, 28, 44, 22
result: .space 8
.text
MAIN: daddui R1,R0,10
dadd R2,R0,R0
dadd R3,R0,R0
LOOP: ld R4,values(R2)
dadd R3,R3,R4
daddi R2,R2,8
daddi R1,R1,-1
bnez R1,LOOP
nop
sd R3,result(R0)
HALT
Виконання роботи
Програма при запуску WinMIPS64.
/
Перед початком виконання покрокової симуляції виконання інструкцій, увімкнемо апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB) у Configure – Enable Forwarding і Enable Branch Target Buffer та натиснемо F7:
/
На 11 циклі вперше утворилося пригальмування за рахунок виконаного умовного переходу (branch taken stall).
/
На 76 циклі симуляції виконання інструкцій, трапилася помилка передбачення напрямку умовного переходу (Branch misprediction stall у вікні статистики):
/
На 77 циклі симуляції виконання інструкцій, трапилася помилка знову:
/
І на 84 циклі була завершена програма з такими результатами:
/
Результат виконання програми 000000000000014f у шістнадцятковій системі числення, після переведення у десяткову систему числення отримуємо 335.
Перевіримо розрахунки завдяки калькулятору:
/
Значення співпадають, отже програма спрацювала вірно.
Повторно запускаємо програму вимкнувши апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу, отримаємо ось такі результати:
/
Порівняння вікон статистики
З увімкненим
/
Без увімкнення
/
Висновок: Виконавши дану лабораторну роботу, я навчився виконувати певні RISC інструкції. Слід зазначити, що при вимкнених механізмах випередження та прогнозування не було помилки в передбаченні напрямку умовного переходу (Branch misprediction stall).