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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА Кафедра ЗІ Звіт до лабораторної роботи №4 з курсу: «Архітектура комп’ютерних систем» на тему: «ДОСЛІДЖЕННЯ КОНВЕЄРНОГО ВИКОНАННЯ ІНСТРУКЦІЙ РУХОМОЇ КОМИ» Варіант-15 ЛЬВІВ – 2022 Мета: опанування технікою конвеєрного виконання RISC інструкцій для операндів формату рухомої коми. Завдання Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що команди опрацювання операндів в форматі з рухомою комою. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його. Виконання роботи Для завдання дано наступний код програми: .data number: .word 27 max: .word 0 .text start: ld r1,number(r0) ; program start loop: andi r3,r1,1 beqz r3,even odd: dadd r2,r1,r1 dadd r1,r2,r1 daddi r1,r1,1 j over even: dsrl r1,r1,1 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 виконав 1028 інструкцій і 1703 цикла. На одну інструкцію припадає 1657 циклів для її виконання і можна помітити , що присутні 445 пригальмовування RAW (Read after write). У даному коді є проблеми, які не дозволяють паралельно виконувати усі потрібні функції. Тому спробуємо порефакторити даний код змінивши послідовність початку виконання фунцій. .data number: .word 27 max: .word 0 .text start: ld r1,number(r0) ; program start andi r5,r1,1 loop: dadd r2,r1,r1 beqz r5,even odd: dadd r2,r1,r1 ld r4,max(r0) daddi r1,r1,1 slt r3,r4,r1 andi r5,r1,1 beqz r3,loop sd r1,max(r0) j loop even: dsrl r1,r1,1 slti r3,r1,2 ; test for finished andi r5,r1,1 beqz r3,loop halt Перевіримо цей код з допомогою asm.exe: / Перевірка пройшла успішно. З кодом все в порядку. Тепер запустимо наш підкоректований код у програмі: / Можна зробити висновок, що програма відпрацювала за 256 циклів. Виконуючи 252 інструкцій, тому на одну інструкцію припадає 1016 циклів для її виконання. Також бачимо, що без пригальмовувань RAW (Read after write). Результат на багато кращий. Висновок: під час виконання цієї лабораторної роботи я опанувала техніку конвеєрного виконання RISC інструкцій для операндів формату рухомої коми. Провела тестування коду даного за завданням і як результат, код покращився для його швидкодії та добився досить хорошого результату, а саме: Було Стало  Цикли 1703 256  CPI 1657 1016  RAW 445 0  
Антиботан аватар за замовчуванням

08.04.2025 12:04-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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