МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра ЗІ
/
Звіт
до лабораторної роботи №4
з курсу: «Архітектура комп’ютерних систем»
на тему: « ДОСЛІДЖЕННЯ КОНВЕЄРНОГО ВИКОНАННЯ ІНСТРУКЦІЙ РУХОМОЇ КОМИ »
Варіант №3
Мета роботи: Опанування технікою конвеєрного виконання RISC інструкцій для операндів формату рухомої коми.
Завдання
Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що команди опрацювання операндів в форматі з рухомою комою. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Виконання роботи
Запропонований код :
.data
number: .word 27 ; this is input number - change it!
max: .word 0 ; max number so far
.text
start: ld r1,number(r0) ; program start
loop: andi r3,r1,1 ; test odd or even
beqz r3,even
odd: dadd r2,r1,r1 ; times 2
dadd r1,r2,r1 ; times 3
daddi r1,r1,1 ; plus 1
j over
even: dsrl r1,r1,1 ; divide by 2
over: ld r4,max(r0)
slt r3,r4,r1 ; compare with max
beqz r3,skip
sd r1,max(r0) ; new max
skip: slti r3,r1,2 ; test for finished
beqz r3,loop
halt
/
Початок виконання циклу програми
/
Завершення циклу програми
Отримуємо :
Цикли – 1794
Інструкції – 1028
1,75 циклів на одну інструкцію
RAW – 445
Branch Taken Stalls – 317
Далі внесемо зміни в код, який нам було дано на початку :
.data
number: .word 27 ; this is input number - change it!
max: .word 0 ; max number so far
.text
start: ld r1,number(r0) ; program start
andi r5,r1,1 ; test odd or even
loop: dadd r2,r1,r1 ; times 2
beqz r5,even
odd: dadd r1,r2,r1 ; times 3
ld r4,max(r0)
daddi r1,r1,1 ; plus 1
slt r3,r4,r1 ; compare with max
andi r5,r1,1
sd r1,max(r0) ; new max
j loop
even: dsrl r1,r1,1 ; divide by 2
slti r3,r1,2 ; test for finished
andi r5,r1,1
beqz r3,loop
halt
/
Початок виконання підкоректованого циклу програми
/
Завершення циклу підкоректованої програми
Отримуємо :
Цикли – 977 (замість 1794)
Інструкції – 792 (1028)
1, 23 циклів на одну інструкцію (1,75)
RAW – 1 (445)
Branch Taken Stalls – 180 (317)
Висновок : виконуючи дану лабораторну роботу, я опанувала техніку конвеєрного виконання RISC інструкцій для операндів формату рухомої коми.