МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра ЗІ
/
Лабораторна робота №4
з дисципліни: «Архітектура комп’ютерних систем»
на тему: «ДОСЛІДЖЕННЯ КОНВЕЄРНОГО ВИКОНАННЯ ІНСТРУКЦІЙ РУХОМОЇ КОМИ»
Мета роботи: опанування технікою конвеєрного виконання RISC інструкцій для операндів формату рухомої коми.
Завдання
Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що команди опрацювання операндів в форматі з рухомою комою. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Виконання роботи
Змінивши початкове число- 27 виконуємо наступний фрагмент коду:
.data
number: .word 27
max: .word 0
.text
start: ld r1,number(r0)
loop: andi r3,r1,1
beqz r3,even
odd: dadd r2,r1,r1
dadd r1,r2,r1
daddi r1,r1,1
j over
even: dsrl r1,r1,1
over: ld r4,max(r0)
slt r3,r4,r1
beqz r3,skip
sd r1,max(r0)
skip: slti r3,r1,2
beqz r3,loop
halt
Перевіряємо код за допомогою asm:
/
Як бачимо, помилок не виникло. Програму можна відкривати та запускати у WinMips64. Для оптимізації коду, включимо Forwarding та Branch Target Buffer.
/
Виконуємо програму та отримуємо наступний результат:
/
Програма виконала 1639 циклів, виконуючи 1013 інструкцій, з 445 пригальмовуваннями RAW (Read after write). СPI = 1.611.
Оптимізуємо код наступним чино, та залишимо Forwarding та Branch Target Buffer включеними:
.data
number: .word 27
max: .word 0
.text
start: ld r1,number(r0)
andi r5,r1,1
loop: dadd r2,r1,r1
beqz r5,even
odd: dadd r1,r2,r1
ld r4,max(r0)
daddi r1,r1,1
slt r3,r4,r1
andi r5,r1,1
beqz r3,loop
sd r1,max(r0)
j loop
even: dsrl r1,r1,1
slti r3,r1,2
andi r5, r1,1
beqz r3,loop
halt
Запускаємо перевірку коду за допомогою asm.exe:
/
Як бачимо, помилок не виникло. Програму можна відкривати та запускати у WinMips64.
/
Програма відпрацювала за 976 циклів, виконуючи 781 інструкцій, з 1 пригальмуванням RAW (Read after write). СPI = 1.250.
Висновок
В ході виконання даної лабораторної роботи, я опанував технікою конвеєрного виконання RISC інструкцій для операндів формату рухомої коми. Також було оптимізовано заданий код, після чого CPI змінилося з 1.611 до 1.250.