Дослідження конвеєрного виконання інструкцій рухомої коми

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА Кафедра ЗІ / Звіт до лабораторної роботи №4 з курсу «Архітектура комп’ютерних систем» на тему: «Дослідження конвеєрного виконання інструкцій рухомої коми» Варіант - 18 Львів 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 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 / Рис. 1. Виконана програма без оптимізації / Рис. 2. Вікно статистики після виконання коду Результат виконання програми показав нам такий результат: Загальне число виконаних циклів становить 26. СРІ = 2.600 – це середнє число тактових інтервалів (cycles per instruction), що припало на виконання кожної інструкції програми. RAW Stalls (read after write) = 10 Branch Taken Stalls (виконаного умовного переходу) = 2 Branch Misprediction Stalls(передбаченні напрямку умовного переходу)= 0 Виконавши на симуляторі наступний оптимізований фрагмент коду: .data number: .word 27 max: .word 0 .text start: ld r1,number(r0) loop: andi r3,r1,1 beqz r3,even odd: dadd r2,r1,r1 j over even: dsrl r1,r1,1 over: ld r4,max(r0) slt r3,r4,r1 beqz r3,skip sd r1,max(r0) skip: slti r3,r1,2 beqz r3,loop halt nop Увімкнемо функцію випередження (Enable Forwarding) для оптимізації:/ Рис. 3. Виконана програма з оптимізацією за допомогою Enable Forwarding / Рис. 4. Вікно статистики після виконання оптимізованого коду Проаналізуємо вміст вікна статистики (Statistics) і зауважимо, що ми отримали вже 5 пригальмуваннь RAW. Витратили 21 тактових циклів на виконання 10 інструкцій. Значить, отримали середнє число тактових імпульсів CPI=2 на одну інструкцію. Середнє число тактових інтервалів (cycles per instruction або CPI), що припало на виконання кожної інструкції програми також зменшилось до 2100 Висновок: на даній лабораторній роботі, Я, опанував техніку конвеєрного виконання RISC інструкцій для операндів формату рухомої коми.
Антиботан аватар за замовчуванням

08.04.2025 11:51

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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