МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра ЗІ
/
Звіт
до лабораторної роботи №2
з курсу: «Архітектура комп’ютерних систем»
на тему: «Дослідження виконання циклів на конвеєрі інструкцій»
Львів 2023
Мета роботи
Опанування технікою конвеєрного виконання RISC інструкцій.
Завдання
Дослідити конвеєрне виконання фрагментів машинних програм, що містять цикли. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Варіант
Числа
2
3, 55, 17, 7, 56, 23, 29, 58, 52, 51
Код програми
; Program: loop.s
; Sum of 10 integer values
.data
values: .word 3, 55, 17, 7, 56, 23, 29, 58, 52, 51 ; 64-bit integers
result: .space 8
.text
MAIN: daddui R1,R0,10 ; R1 <- 10
dadd R2,R0,R0 ; R2 <- 0 POINTER REG
dadd R3,R0,R0 ; R3 <- 0 RESULT REG
LOOP: ld R4,values(R2) ;GET A VALUE IN R4
dadd R3,R3,R4 ; R3 <- R3 + R4
daddi R2,R2,8 ; R2 <- R2 + 8 POINTER INCREMENT
daddi R1,R1,-1 ; R1 <- R1 - 1 DECREMENT COUNTER
bnez R1,LOOP
nop
sd R3,result(R0) ; Result in R3
HALT ; the end
Виконання завдання
Перед виконанням задіюємо апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB)
Рис 1. Основне вікно симулятора зі завантаженою програмою
Після виконання семи циклів симулювання, отримуємо перше RAW (Рис. 2).Після виконання 10 тактів виникає друге RAW пригальмування(Рис.3). А вже після 11 тактів виникає пригальмування за рахунок виконаного умовного переходу(Рис.4).
/
Рис 2. Основне вікно симулятора, виконано 7 циклів симулювання
Рис 3. Виникнення 2 RAW пригальмування.
/Рис. 4.Пригальмування за рахунок виконаного умовного переходу.
По завершення програми, маємо такі результати у вікні симулятора (Рис.5).
Результатом виконання програми було обчислення суми десяти чисел, яку було збережено в змінній R3=351.
/
Рис 5. Вікно симулятора по завершенню виконання програми.
Проаналізуємо вміст вікна статистики (Statistics) по виконанню з оптимізованою апаратурою і зауважимо, що Витратили 84 тактових циклів на виконання 56 інструкцій. Значить, отримали середнє число тактових імпульсів CPI=1.5 на одну інструкцію втрати конвеєра інструкцій склали 20 RAW-пригальмувань, 2 пригальмування під час виконання виконаних взятих, виконаних умовних переходів (Branch taken) і ще 2 пригальмування через помилками передбачення напрямку умовного переходу апаратними засобами Рис. 6.
/
Рис 6. Вікно статистики
Заборонимо випередження, на вкладці «configure» Enable Forwarding а також використання буфера цільових адрес переходів, тим самим заборонимо передбачення напрямку умовних переходів апаратним засобом. Виконаємо програму знову (Рис 7 і Рис 8):
/
Рис 7. Виконана програма без випередження і прогнозування напрямку умовного переходу
/
Рис 8. Вікно статистики
По виконанню нашої програми, але вже без оптимізації, проаналізуємо вмістиме вікна статистики. Зауважимо, що маємо 41 пригальмування RAW. Збільшилась загальна кількість циклів їх стало 110. Середнє число число тактових інтервалів становить CPI=1.964. Branch Taken Stalls (виконаного умовного переходу) = 9. Branch Misprediction Stalls(передбаченні напрямку умовного переходу)= 0
Висновок
Під час виконання даної лабораторної роботи я навчився виконувати RISC інструкції.
Відповідно до даних наданих програмою можна зробити висновок, що з ввімкненими механізмами випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB) програма виконалася на 26 менше ніж з вимкненими.
Середнє число тактових інтервалів з вимкненими механізмами збільшилося на 0.464, також при вимкнених механізмах не було помилок в передбаченні напрямку умовного переходу.