DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

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

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

Рік:
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 Висновок виконав[ім’я автора приховано]ання задач та ввімкнення випередження. Branch Target Buffer за рахунок великої кількості невгадувань сповільнило програму.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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