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

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

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

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

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

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

Міністерство освіти та науки України Національний університет «Львівська політехніка» Кафедра ЗІ / Лабораторна робота №4 «ДОСЛІДЖЕННЯ КОНВЕЄРНОГО ВИКОНАННЯ ІНСТРУКЦІЙ РУХОМОЇ КОМИ» з дисципліни «Архітектура комп’ютерних систем» Варіант-10 Львів-2022 Мета роботи - опанувати техніку конвеєрного виконання RISC інструкцій для операндів формату рухомої коми. Завдання Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що команди опрацювання операндів в форматі з рухомою комою. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його. Виконання та аналіз коду до оптимізації Розглянемо програмний код (з умови завдання), що опрацьовує дані з форматом рухомої коми рис.1.(змінив дані на свій варіант 10) / Рисунок 1. Прототиний програмний код, що опрацьовує дані з форматом рухомої коми. Наступний крок це перевірити синтаксис програми ще до симулювання за допомогою утиліти asm.exe: / Синтаксис є коректним. Відкриваємо програму WinMips64 та запускаємо в ній файл з нашим кодом. Симулювання Синтаксис є коректним. Далі відкриємо програму WINMIPS64 і запустимо в ній нашу програму та симулюємо виконання інструкцій та отримаєм такий результат. / Налаштування конфігурації середовища: / Виконуємо симулювання файлу програми в WINMIPS64 і отримуємо результат. / / Статистика після виконання програми: Загальне число виконаних циклів становить 320. СРІ = 2.336 – це середнє число тактових інтервалів (cycles per instruction), що припало на виконання кожної інструкції програми. RAW Stalls (read after write) = 138 Перейдемо, до оптимізації коду: Включення Enable Forwarding (випередження) Також, щоб зменшити кількість циклів, можна увімкнути Еnable Forwarding / Ця оптимізація дозволяє зменшити кількість тактів за рахунок вгадування наступної інструкції, наприклад на моментів коли потрібно обрати логіку із парним або непарним числом. / / Статистика після ввімкнення Еnable Forwarding: Загальне число виконаних циклів становить 129. СРІ = 1.277 – середнє число тактових інтервалів. RAW Stalls (read after write) = 1 Включення Enable Branch Target Buffer Умикаємо Enable Branch Target Buffer: / Ця оптимізація дозволяє зменшити кількість тактів за рахунок вгадування наступної інструкції, наприклад на моментів коли потрібно обрати логіку із парним або непарним числом. / / Статистика після ввімкнення Еnable Forwarding: Загальне число виконаних циклів становить 132. СРІ = 1.307 – середнє число тактових інтервалів. RAW Stalls (read after write) = 1 Бачимо, що кількість циклів збільшилася на 3; CPI (число циклів на одну інструкцію) збільшилося на 0,03; Пригальмування RAW(Read after write) не змінилося і становить 1; Branch taken stalls зменшилося на 7. Але бачимо, що відбулося лише 6 вгадувань та 10 невгадувань(Branch misprediction stalls). По CPI бачимо, що цей метод оптимізації не допоміг. Використання можливості асинхронного виконування команд Для цього ми редагуємо код, а саме перенесемо інструкції andi (логічне І), виконання якої тривало 2 цикла. Команди було переставлено, щоб не було «простою» в 1 цикл, поки наступна інструкція чекає на результат виконання попередньої. / Також перевіримо синтаксис програми ще до симулювання за допомогою утиліти asm.exe: / Синтаксис є коректним, результат з’являється на дисплеї. Перейдемо до симулювання: / / Статистика після виконання програми: Загальне число виконаних циклів становить 184. СРІ = 1.822 – середнє число тактових інтервалів. RAW Stalls (read after write) = 56 Висновок виконавши дану лабораторну роботу я опанував техніку конвеєрного виконання RISC інструкцій для операндів формату рухомої коми. В оптимізації коду допомогли використання асинхронного виконання задач та ввімкнення випередження. Branch Target Buffer за рахунок великої кількості невгадувань сповільнило програму.
Антиботан аватар за замовчуванням

08.04.2025 12:04-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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