Частина тексту файла (без зображень, графіків і формул):
Національний університет «Львівська політехніка»
ІКТА кафедра БІТ
/
ЗВІТ
до лабораторної роботи №4
КОНКУРЕНТНЕ ВИКОНАННЯ МАШИННИХ ІНСТРУКЦІЙ
Мета роботи: Опанування технікою конвеєрного виконання RISC інструкцій для операндів формату рухомої коми.
Вказівки до роботи: Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що команди опрацювання операндів в форматі з рухомою комою. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Варіант 3
Хід роботи
Виконання програми asm.exe. Вона дозволяє перевірити синтаксис програми, ще до її виконання.
/
Відкриємо програму WINMIPS64 і запустимо в ній файл main.s.
/
/
/
/
В результаті, програма відпрацювала і за 70 циклів сталось 18 пригальмовування RAW (Read after write).
У даному коді є проблеми, які не дозволяють паралельно виконувати всі потрібні функції. Додамо інструкції nop для невеликої затримки в програмі. Це дасть змогу уникнути RAW.
Змінений код:
; hail.s
; Hailstone numbers iteration
; If number is odd, multiply by 3 and add 1
; If number is even, divide it by 2
; repeat this iteration until number is 1
.data
number: .word 27 ; this is input number
.text
start: ld r1,number(r0) ; program start
loop: andi r3,r1,1 ; test odd or even
nop
beqz r3,even
odd: dadd r2,r1,r1 ; times 2
dadd r1,r2,r1 ; times 3
daddi r1,r1,1 ; plus 1
j skip
even: dsrl r1,r1,1 ; divide by 2
skip: slti r3,r1,2 ; test for finished
nop
beqz r3,loop
halt
/
/
/
/
Кількість пригальмовувань RAW на 70 циклів зменшилась до 1 з 18.
Висновок: на цій лабораторній роботі я опанував техніку конвеєрного виконання RISC інструкцій для операндів формату рухомої коми.