DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

до лабораторної роботи №4

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2025
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Архітектура комп ютерних систем

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА Кафедра БІТ З В І Т до лабораторної роботи №4 з курсу: «Архітектура комп’ютерних систем» Варіант № 21 Львів 2022 Мета: опанування технікою конвеєрного виконання RISC інструкцій для операндів формату рухомої коми. Завдання: Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що команди опрацювання операндів в форматі з рухомою комою. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його. Завантаження програми ; 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 13 ; 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 Результат після виконання команди C:\winmips64> asm lab4.s > report.txt Pass 1 completed with 0 errors ; 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 00000000 .data 00000000 000000000000001b number: .word 27 ; this is input number - change it! 00000008 0000000000000000 max: .word 0 ; max number so far 00000000 .text 00000000 dc010000 start: ld r1,number(r0) ; program start 00000004 30230001 loop: andi r3,r1,1 ; test odd or even 00000008 18030002 beqz r3,even 0000000c 0021102c odd: dadd r2,r1,r1 ; times 2 dadd r1,r2,r1 ; times 3 daddi r1,r1,1 ; plus 1 00000010 08000001 j over 00000014 0020087a even: dsrl r1,r1,1 ; divide by 2 00000018 dc040008 over: ld r4,max(r0) 0000001c 0081182a slt r3,r4,r1 ; compare with max 00000020 18030001 beqz r3,skip 00000024 fc010008 sd r1,max(r0) ; new max 00000028 28230002 skip: slti r3,r1,2 ; test for finished 0000002c 1803fff5 beqz r3,loop 00000030 04000000 halt Pass 2 completed with 0 errors Code Symbol Table start = 00000000 loop = 00000004 odd = 0000000c even = 00000014 over = 00000018 skip = 00000028 Data Symbol Table number = 00000000 max = 00000008 Візьмемо за input number число 13. Запустимо код в симуляторі. / Було виконано 192 цикли і 80 інструкцій. Середнє число тактових інтервалів 2.400. Також було 82 пригальмовування RAW і 26 Branch Taken Stalls. Змінимо код додавши до нього інструкцію nop, також активуємо forwarding і branch target buffer ; 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 13 ; 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 nop 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 nop beqz r3,loop halt Pass 1 completed with 0 errors ; 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 00000000 .data 00000000 000000000000000d number: .word 13 ; this is input number - change it! 00000008 0000000000000000 max: .word 0 ; max number so far 00000000 .text 00000000 dc010000 start: ld r1,number(r0) ; program start 00000004 30230001 loop: andi r3,r1,1 ; test odd or even 00000008 00000000 nop 0000000c 18030004 beqz r3, even 00000010 0021102c odd: dadd r2,r1,r1 ; times 2 00000014 0041082c dadd r1,r2,r1 ; times 3 00000018 60210001 daddi r1,r1,1 ; plus 1 0000001c 08000001 j over 00000020 0020087a even: dsrl r1,r1,1 ; divide by 2 00000024 dc040008 over: ld r4,max(r0) 00000028 0081182a slt r3,r4,r1 ; compare with max 0000002c 18030001 beqz r3,skip 00000030 fc010008 sd r1,max(r0) ; new max 00000034 28230002 skip: slti r3,r1,2 ; test for finished 00000038 00000000 nop 0000003c 1803fff1 beqz r3,loop 00000040 04000000 halt Pass 2 completed with 0 errors Code Symbol Table start = 00000000 loop = 00000004 odd = 00000010 even = 00000020 over = 00000024 skip = 00000034 Data Symbol Table number = 00000000 max = 00000008 / Було виконано 136 цикли і 99 інструкцій. Середнє число тактових інтервалів 1.374. Також було 19 пригальмовування RAW, 10 Branch Taken Stalls і 4 Branch Misprediction Stalls. Висновок Під час виконання цієї лабораторної роботи я опанував техніку конвеєрного виконання RISC інструкцій для операндів формату рухомої коми, оптимізував програмний код та дослідив дію запропонованої оптимізації.
Антиботан аватар за замовчуванням

08.04.2025 12:13

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!