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
Тип роботи:
Лабораторна робота
Предмет:
Архітектура комп ютерних систем

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

Міністерство освіти та науки України Національний університет «Львівська політехніка» Кафедра ЗІ / Лабораторна робота №3 «КОНКУРЕНТНЕ ВИКОНАННЯ МАШИННИХ ІНСТРУКЦІЙ» з дисципліни «Архітектура комп’ютерних систем» Львів-2022 Мета роботи: опанувати техніку розпаралелення виконання машинних інструкцій на рівні апаратури. Завдання Засобами архітектурного симулятора WinMIPS64 дослідити на прикладі фрагментів програмного коду можливості паралельного опрацювання машинних інструкцій на рівні апаратури та позитивні ефекти, що при цьому досягаються. За результатами проведених лабораторних досліджень оформити звіт та захистити його. Завдання полягає у дослідженні можливості оптимізації коду. Виконання та аналіз коду до оптимізації Для завдання потрібно проаналізувати і виконати на стимуляторі даний фрагмент коду: .text div.d f7,f9,f10 mul.d f2,f4,f3 sub.d f7,f7,f4 ld    r1,78(r0) add.d f4,f5,f6 halt Наступний крок це перевірити синтаксис програми ще до симулювання за допомогою утиліти asm.exe: / Симулювання Синтаксис є коректним. Далі відкриємо програму WINMIPS64 і запустимо в ній нашу програму та симулюємо виконання інструкцій та отримаєм такий результат. / / Статистика після виконання програми: Загальне число виконаних циклів становить 36. СРІ = 6.000 – це середнє число тактових інтервалів (cycles per instruction), що припало на виконання кожної інструкції програми. RAW Stalls (read after write) = 24 Також, щоб зменшити кількість циклів, можна увімкнути Еnable Forwarding / Статистика після ввімкнення Еnable Forwarding: Загальне число виконаних циклів становить 33. СРІ = 5.500 – середнє число тактових інтервалів. RAW Stalls (read after write) = 22 Перейдемо, до головної оптимізації коду У даному коді є проблеми, які не дозволяють паралельно виконувати усі потрібні функції. Так як функція ділення виконується за 28 кроків, це досить специфічний алгоритм виконання, то затримуючи змінні в регістрах, а саме працюючи з ними, інші функціїї не мають доступу до них. Тому я зробити так званий рефакторинг коду змінивши послідовність початку виконання інструкцій. .text sub.d f7,f7,f4 div.d f7,f9,f10 mul.d f2,f4,f3 add.d f4,f5,f6 ld r1,78(r0) halt Наступний крок це перевірити синтаксис програми ще до симулювання за допомогою утиліти asm.exe: / Синтаксис є коректним. Перейдемо до симулювання та отримаєм ось такий результат: / / Статистика після виконання програми: Загальне число виконаних циклів становить 29. СРІ = 4.833 – це середнє число тактових інтервалів (cycles per instruction), що припало на виконання кожної інструкції програми. RAW Stalls (read after write) = 0 Висновок Під час виконання цієї лабораторної роботи я опанував техніку розпаралелення виконання машинних інструкцій на рівні апаратури, провів тестування коду даного за завданням, покращив код для його швидкодії та отримав досить хороший результат, а саме: На початку було 33 цикли, стало 29; На початку було 22 RAW, стало 0; На початку CPI – 5,500 , стало – 4,833.
Антиботан аватар за замовчуванням

08.04.2025 12:07

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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