МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра ЗІ
/
Звіт
до лабораторної роботи №2
з курсу: «Архітектура комп’ютерних систем»
на тему: «ДОСЛІДЖЕННЯ ВИКОНАННЯ ЦИКЛІВ НА КОНВЕЄРІ ІНСТРУКЦІЙ»
Варіант №3
Мета роботи: опанувати техніку конвеєрного виконання RISC інструкцій.
Завдання
Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що містять цикли. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Виконання роботи
Код програми :
; Program: loop.s
; Sum of 10 integer values
.data
values: .word 36, 50, 56, 48, 57, 52, 30, 53, 27, 1 ; 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
Відкриємо програму WINMIPS64 і запустимо в ній файл loop.s, який був попередньо створений.
Переконуємося, що програма завантажена до пам’яті і симулятор готовий до роботи. У вікні “Code” спостерігаємо код програми.
/
Основне вікно симулятора з відкритим файлом loop.s
/
Дозволяємо використання випередження (forwarding) і апаратури передбачення напрямку умовного переходу (branch target buffer).
Покроково симулюємо виконання інструкцій. На 7 циклі отримали RAW Stalls (read after write).
/
При виконанні 10 такту з’являється ще одне пригальмування.
/
Після 11 тактів симулювання, сталося пригальмування за рахунок виконаного умовного переходу (branch taken stall).
/
/
Завершення програми
СРІ = 1.5 середнє число тактових інтервалів.
RAW Stalls (read after write) = 20
Branch Taken Stalls (виконаного умовного переходу) = 2
Branch Misprediction Stalls = 2
Виключаємо апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB).
/
СРІ = 1.964 (середнє число тактових інтервалів).
RAW Stalls (read after write) = 41
Branch Taken Stalls (виконаного умовного переходу) = 5
Branch Misprediction Stalls (передбаченні напрямку умовного переходу) = 0
Висновок: виконуючи дану лабораторну роботу, я навчилася застосовувати RISC інструкції. З ввімкненими механізми випередження даними і прогнозуванням напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB).