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

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

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

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

ДОСЛІДЖЕННЯ КОНВЕЄРНОГО ВИКОНАННЯ ІНСТРУКЦІЙ РУХОМОЇ КОМИ

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА Кафедра ЗІ / Лабораторна робота №4 з дисципліни: «Архітектура комп’ютерних систем» на тему: «ДОСЛІДЖЕННЯ КОНВЕЄРНОГО ВИКОНАННЯ ІНСТРУКЦІЙ РУХОМОЇ КОМИ» Мета роботи: опанування технікою конвеєрного виконання RISC інструкцій для операндів формату рухомої коми. Завдання Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що команди опрацювання операндів в форматі з рухомою комою. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його. Виконання роботи Змінюємо початкове число- 27 та виконуємо наступний фрагмент коду: ; 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 Перевірка коду за допомогою утиліти asm.exe: / Перевірка синтаксису програми Синтаксис коду правильний. Відкриємо програму WINMIPS64 і запустимо цей код використавши апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB). / Вікно налаштування Configure Вмикаємо дозвіл на використання випередження (forwarding) і апаратуру передбачення напрямку умовного переходу (branch target buffer), запускаємо програму ще раз. / Основне вікно симулятора по завершенню симулювання програми Програма відпрацювала за 1639 циклів, виконуючи 1013 інструкцій, з 445 пригальмовуваннями RAW (Read after write). СPI = 1.611. Для оптимізації коду змінимо деяку послідовність виконання функцій, та надамо дозвіл на використання випередження (forwarding) і апаратури передбачення напрямку умовного переходу (branch target buffer). Оптимізований код: .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 andi r5,r1,1 ; test odd or even loop: dadd r2,r1,r1 ; times 2 beqz r5,even odd: dadd r1,r2,r1 ; times 3 ld r4,max(r0) daddi r1,r1,1 ; plus 1 slt r3,r4,r1 ; compare with max andi r5,r1,1 beqz r3,loop sd r1,max(r0) ; new max j loop even: dsrl r1,r1,1 ;divide by 2 slti r3,r1,2 ; test for finished andi r5, r1,1 beqz r3,loop halt Перевіркакоду за допомогою утиліти asm.exe: / Перевірка синтаксису програми Синтаксис є коректним. Відкриємо програму WINMIPS64 і запустимо цей код ввімкнувши forwarding та branch target buffer: / Вікно налаштування Configure / Основне вікно симулятора по завершенню симулювання програми Програма відпрацювала за 976 циклів, виконуючи 781 інструкцій, з 1 пригальмуванням RAW (Read after write). СPI = 1.250. Висновок Під час виконання цієї лабораторної роботи я опанувала техніку конвеєрного виконання RISC інструкцій для операндів формату рухомої коми. Також оптимізувала наданий програмний код, дослідила дію запропонованої оптимізації та отримала такий результат в порівнянні з початковим кодом: було – 1639 циклів, стало – 976; було – 445 RAW, стало – 1; було CPI – 1.611, стало – 1.250.
Антиботан аватар за замовчуванням

08.04.2025 12:04-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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