DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

Рік:
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:09

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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