🚀 Вийди на новий рівень крипто-торгівлі!
Easy Trade Bot — автоматизуй свій прибуток уже зараз!

Ми пропонуємо перелік перевірених прибуткових стратегій на такі пари як BTC, DOT, TRX, AAVE, ETH, LINK та інші. Ви можете підключити автоматичну торгівлю на своєму акаунті Binance або отримувати торгові рекомендації на email у режимі реального часу. Також можемо створити бота для обраної вами монети.

Всі результати торгів ботів доступні для перегляду у зручних таблицях на головній сторінці. Швидко, динамічно та прозоро!

Перейти до бота + 30$ бонус

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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА Кафедра БІТ З В І Т до лабораторної роботи №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:04-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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