🚀 Вийди на новий рівень крипто-торгівлі!
Easy Trade Bot — автоматизуй свій прибуток уже зараз!

Ми пропонуємо перелік перевірених прибуткових стратегій на такі пари як BTC, DOT, TRX, AAVE, ETH, LINK та інші. Ви можете підключити автоматичну торгівлю на своєму акаунті Binance або отримувати торгові рекомендації на email у режимі реального часу. Також можемо створити бота для обраної вами монети.

Всі результати торгів ботів доступні для перегляду у зручних таблицях на головній сторінці. Швидко, динамічно та прозоро!

Перейти до бота + 30$ бонус

Конкурентне виконання машинних інструкцій

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра ЗІ / З В І Т до лабораторної роботи №3 з курсу: « Архітектура комп'ютерних систем » на тему: «Конкурентне виконання машинних інструкцій» Варіант № 22 Львів 2022 Мета роботи - опанувати техніку розпаралелення виконання машинних інструкцій на рівні апаратури. Завдання Засобами архітектурного симулятора WinMIPS64 дослідити на прикладі фрагментів програмного коду можливості паралельного опрацювання машинних інструкцій на рівні апаратури та позитивні ефекти, що при цьому досягаються. За результатами проведених лабораторних досліджень оформити звіт та захистити його. Виконання завдання Код 1 Використовуючи середовище розробки Visual Studio Code, створив програмний файл example1.s, який містить код для MIPS64. Код програми на мові асемблер : .text add.d f7,f7,f3 add.d f7,f7,f4 mul.d f4,f5,f6 ; WAR через спільний регістр f4 Ще до симулювання перевіряємо синтаксис програми з допомогою утиліти asm.exe, прописуючи команду операційній системі : Синтаксис є коректним, результат з’являється на дисплеї (лише коментар написаний українською вивело некоректно). / Запускаємо програму WINMIPS64 і відкриваємо в ній програмний файл example1.s / Виконуємо симулювання файлу example1.s програми в WINMIPS64 і отримуємо результат. / / Проаналізувавши та виконавши на стимуляторі фрагмент коду, що наведено вище, можна зауважити, що першою почала виконуватися інструкція mul.d, тоді вона в певний момент перегнала другу інструкцію add.d і перешим запишеться його результат тому потрібно затримувати інструкцію mul.d на сходинці ID. Код 2 Аналіз другого коду на мові асемблер, назва програмного файлу example2.s: ;*************************************** ;*** winMIPS64 //hazard3.s// ***** ;*** (c) 2003 CA226, DCU ***** ;*************************************** .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, прописуючи команду в powershell: / Відкриваємо програму WINMIPS64 та програмний файл example2.s : / Виконуємо покрокове симулювання файлу example2.s програмі в WINMIPS64 та отримуємо результат : / / Проаналізувавши вікно статистики (Statistics) зроблено висновок, що у було виконано 33 цикли на 6 інструкцій та CPI (число циклів на одну інструкцію) 5.500 на виконання однієї інструкції. Також пригальмування RAW(Read after write) дорівнює 22. Також у Cycles видно, що в коді є проблеми, які не дозволяють виконувати паралельно усі необхідні функції. Функція div.d (ділення) виконується 28 кроків і можна побачити, що ця функція займає регістри і не дає весь цей час доступу до регістрів іншим функціям, наприклад sub чекає на комірку заняту функцією div.d. Так само функція mul.d займає багато часу і не надає доступу до комірок функціям add.d і sub.d. Для оптимізації, змінюємо послідовність коду: ;*************************************** ;*** winMIPS64 //hazard3.s// ***** ;*** (c) 2003 CA226, DCU ***** ;*************************************** .text mul.d f2,f4,f3 sub.d f7,f7,f4 div.d f7,f9,f10 ld r1,78(r0) add.d f4,f5,f6 halt Виконуємо програму asm.exe для перевірки синтаксису програми. Синтаксис є коректним: / Відкриваємо програму WINMIPS64 для виконання файлу з текстом програми та отримую результат: / Проаналізувавши вікно статистики (Statistics) бачимо, що було 36 циклів стало - 30 при цьому кількість інструкцій не змінна, CPI (число циклів на одну інструкцію) було 5.500 стало 5.000 на виконання однієї інструкції. Також пригальмувань RAW(Read after write) було 22, а стало 0. / / Висновок : виконавши дану лабораторну роботу я опанував техніку паралельного виконання машинних інструкцій на рівні апаратури; провів тестування кодів заданих в завданні, також провів покращенні коду і добивсяі збільшення швидкості виконання, тобто кращого результату, який полягає в наступному: кількість циклів зменшилася( було 36 цикли, стало 30); кількість пригальмувань 22 RAW стала дорівнювати нулю; було CPI – 5,500 , стало – 5,000.
Антиботан аватар за замовчуванням

08.04.2025 12:04-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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