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

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

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

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

КОНКУРЕНТНЕ ВИКОНАННЯ МАШИННИХ ІНСТРУКЦІЙ

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра ЗІ / З В І Т до лабораторної роботи №3 з дисципліни: “Архітектура комп’ютерних систем” на тему: «КОНКУРЕНТНЕ ВИКОНАННЯ МАШИННИХ ІНСТРУКЦІЙ» Варіант № 21 Мета роботи Опанувати техніку розпаралелення виконання машинних інструкцій на рівні апаратури. Завдання Засобами архітектурного симулятора WinMIPS64 дослідити на прикладі фрагментів програмного коду можливості паралельного опрацювання машинних інструкцій на рівні апаратури та позитивні ефекти, що при цьому досягаються. За результатами проведених лабораторних досліджень оформити звіт та захистити його. Початок виконання роботи Для завдання нам задано наступний код програми: ;*************************************** ;*** 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: / Рис.1 Результати перевірки синтаксису програми Жодних помилок не виявлено, тому ми можемо запустити програму у симуляторі WinMips64. Виконуємо програму до моменту, коли вона буде виконана і ми зможемо переглянути програмні статистики: / Рис.2 Програму виконано, отримано програмні статистики В результаті бачимо, що наша програма відпрацювала за 33 цикли, виконуючи 6 інструкцій, тому на одну інструкцію припадає 5,5 циклів для її виконання. Також бачимо, що присутні 22 пригальмовування RAW (Read after write). У даному коді є проблеми, які не дозволяють паралельно виконувати усі потрібні функції. Так як функція ділення виконується за 28 кроків, оскільки це досить специфічний алгоритм виконання цієї задачі, то затримуючи змінні в регістрах, а саме працюючи з ними, інші функціїї не мають доступу до них. Наприклад, фунція sub чекає на комірку, яка зайнята функцією div. Так само mul займаючи досить багато часу, не дає доступу до комірки функціям sub і add. Тому спробуємо зробити рефакторинг даного коду змінивши послідовність початку виконання фунцій. Функцію ділення поставимо на 2 місце, mul на 4, sub на 1 та add на 3. І отримаємо наступний код програми: .text sub.d f7,f7,f4 div.d f7,f9,f10 ld r1,78(r0) add.d f4,f5,f6 mul.d f2,f4,f3 halt Оновлений код також перевіряємо на правильність за допомогою утиліти asm.exe. / Рис.3 Результати перевірки синтаксису оновленої програми Як бачимо, програма працює успішно. Тепер запустимо наш відредагований код в симуляторі WinMips64 і запустимо: / Рис.4 Перший RAW Stall на 7 циклі / Рис.5 Другий RAW Stall на 8 циклі / Рис.6 Третій RAW Stall на 9 циклі Продовжуємо симулювання аж до повного завершення програми. / Рис.7 Програму з оновленим кодом виконано, отримано програмні статистики Як результат, ми бачимо що наша програма відпрацювала за 29 циклів, (що на 4 цикли менше ніж у попередній), виконуючи 6 інструкцій, тому на одну інструкцію припадає 4,833 циклів для її виконання. Також бачимо, що присутні 3 пригальмовування RAW (Read after write). Результат значно кращий.   Висновок Під час виконання цієї лабораторної роботи я опанував техніку розпаралелення виконання машинних інструкцій на рівні апаратури, провів тестування коду даного за завданням, покращив код для його швидкодії та отримав досить хороший результат, а саме: На початку було 33 цикли, стало 29; На початку було 22 RAW, стало 3; На початку CPI – 5,500 , стало – 4,833.
Антиботан аватар за замовчуванням

08.04.2025 11:04-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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