МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИНАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ЛАБОРАТОРНА РОБОТА №2
з дисципліни: «Архітектура Комп’ютера»
«ДОСЛІДЖЕННЯ ВИКОНАННЯ ЦИКЛІВ НА КОНВЕЄРІ ІНСТРУКЦІЙ»
Мета: Опанувати техніку конвеєрного виконання RISC інструкцій.
Завдання: Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що містять цикли. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Хід роботи
Початкова версія коду:
.data
values: .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; 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
/
Рис. 1. Статистика симуляції початкового коду
Код після оптимізації:
.data
values: .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; 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
daddi R1,R1,-1 ; R1 <- R1 - 1 DECREMENT COUNTER
dadd R3,R3,R4 ; R3 <- R3 + R4
daddi R2,R2,8 ; R2 <- R2 + 8 POINTER INCREMENT
bnez R1,LOOP
nop
sd R3,result(R0) ; Result in R3
HALT ; the end
/
Рис. 1. Статистика симуляції коду після оптимізації
Висновок: на даній лабораторній роботі я опанував техніку конвеєрного виконання RISCінструкцій.