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

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

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

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

КОНКУРЕНТНЕ ВИКОНАННЯ МАШИННИХ ІНСТРУКЦІЙ

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» / ІКТА З В І Т до лабораторної роботи №4 з курсу: «Архітектура комп’ютерних систем» на тему: «КОНКУРЕНТНЕ ВИКОНАННЯ МАШИННИХ ІНСТРУКЦІЙ» Варіант № 16 Мета: Опанування технікою конвеєрного виконання RISC інструкцій для операндів формату рухомої коми. Завдання: Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що команди опрацювання операндів в форматі з рухомою комою. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його. Вихідний прототип виконання роботи: Вводимо його на перевірку в програму asm.exe ; 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 - 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 Тому запускаємо код: PS C:\Users\Admin\Desktop\aks\lab> .\asm.exe hali.s 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 ???????? beqz r3,loop halt Pass 2 completed with 1 errors Вихідний код тест не пройшов тож виправляємо це. . Далі запускаємо код в WINMIPS64: / Бачимо велику кількість переривань, та погано оптимізовану роботу. Після оптимізації коду та його часткового переписання (кінцевий варіант нижче) ми забрали частину коду, яка не несе нам великої користі, але забирає ресурси процесора, із включеним передбаченням, та включеним випередженням код став набагато краще працювати, а кількість переривань зменшилась до 1 (було 445). / ; 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 - change it! .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 Висновок За час виконання даної лабораторної роботи я опанував техніку конвеєрного виконання RISC інструкцій для операндів формату рухомої коми на рівні апаратури, провів тестування коду даного за завданням, покращив код для його швидкодії та зумів досягти непоганого результату.
Антиботан аватар за замовчуванням

08.04.2025 12:04-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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