МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
/
ІКТА
З В І Т до лабораторної роботи №2
з курсу: «Архітектура комп’ютерних систем»
на тему: «ДОСЛІДЖЕННЯ ВИКОНАННЯ ЦИКЛІВ НА КОНВЕЄРІ ІНСТРУКЦІЙ»
Варіант № 9
Мета роботи:
Опанувати техніку конвеєрного виконання RISC інструкцій.
Завдання:
Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що містять цикли. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Варіант
Числа
9
58, 47, 44, 14, 38, 27, 60, 5, 7, 27
Поочинаємо з того що відкриваємо програму WINMIPS64 і запустимо в ній файл loop.s, яким ми попередньо створили.
; Program: loop.s
; Sum of 10 integer values
.data
values: .word 58, 47, 44, 14, 38, 27, 60, 5, 7, 27 ; 64-bit integers
result: .space 8
.text
MAIN: daddui R1,R0,10 ; R1 <- 10
dadd R2,R0,R0 ; R2 <- 0
dadd R3,R0,R0 ; R3 <- 0
LOOP: ld R4,values(R2) ;
dadd R3,R3,R4 ; R3 <- R3 + R4
daddi R2,R2,8 ; R2 <- R2 + 8
daddi R1,R1,-1 ; R1 <- R1
bnez R1,LOOP
nop
sd R3,result(R0)
HALT
Переконався, що програма завантажена до пам’яті і симулятор готовий до роботи. У вікні «Code» спостерігаємо код програми.
/
«Основне вікно симулятора з відкритим файлом loop.s»
Використав апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB).
«Дозволяємо використання випередження (forwarding) і апаратури передбачення напрямку умовного переходу (branch target buffer)».
Покроково симулюємо виконання інструкцій. На 7 циклі отримали RAW (read after write).
/
«Виконано 7 циклів симулювання»
При виконанні 10 такту бачимо ще 1 пригальмування
/
«Друге пригальмування»
Після 11 тактів симулювання, сталося перше пригальмування за рахунок виконаного умовного переходу (branch taken stall).
/
«Виконання 11-ти тактів»
На 76 циклі виконання отримали першу помилку передбачення напрямку умовного переходу (Branch misprediction stall).
/
«Виникнення першої помилки в передбаченні напрямку умовного переходу»
/
«Завершення програми»
Виключаємо апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB).
/
«Головне вікно стимулятора по завершенню симулювання програми loop.s»
Результат виконання програми сумування 10 чисел показав нам правильний результат 11e. Загальне число виконаних циклів становить 84.
СРІ = 1.500 – це середнє число тактових інтервалів (cycles per instruction), що припало на виконання кожної інструкції програми.
--- RAW Stalls --- (read after write) = 20
--- Branch Taken Stalls --- (виконаного умовного переходу) = 2
--- Branch Misprediction Stalls--(передбаченні напрямку умовного переходу)= 2
Результат виконання програми без механізмів випередження та прогнозування сумування 10 чисел, показав нам такий же результат 11е. Загальне число виконаних циклів становить 110. СРІ = 1.964 – це середнє число тактових інтервалів (cycles per instruction), що припало на виконання кожної інструкції програми.
--- RAW Stalls --- (read after write) = 41
--- Branch Taken Stalls --- (виконаного умовного переходу) = 9
--- Branch Misprediction Stalls--(передбаченні напрямку умовного переходу)= 0
Висновок:
На даній лабораторій роботі, я опанував виконання певних RISC інструкції. З ввімкненими механізмами випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB) програма виконалася на 26 менше ніж з вимкненими механізмами. Середнє число тактових інтервалів без механізмів також виросло на 0.464. При вимкнених механізмах не було помилки в передбаченні напрямку умовного переходу (Branch misprediction stall).