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

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

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

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

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

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

Міністерство освіти та науки України Національний університет «Львівська політехніка» Кафедра БІТ / Лабораторна робота №3 «КОНКУРЕНТНЕ ВИКОНАННЯ МАШИННИХ ІНСТРУКЦІЙ» з дисципліни «Архітектура комп'ютерних систем» Варіант - 9 Мета роботи – опанувати техніку розпаралелення виконання машинних інструкцій на рівні апаратури. Завдання Засобами архітектурного симулятора 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 Стан програми перед початком виконання інструкцій / Такт 4 / На даному такті отримаємо затримку виконання інструкції sub.d, оскільки вона використовує регістр f7. Для цього їй потрібно дочекатися виконання інструкції div.d, метою якої є запис значення у регістр f7. Такт 5 / На даному етапі маємо затримку також й інструкції add.d, оскільки інструкція sub.d досі в черзі і буде доти, доки не виконаються ще 21 такт виконання інструкції div.d. Кінець виконання програми / Вікно статистики / Як бачимо, на виконання усіх інструкцій пішло 33 такта із 22 RAW затримками. Перейдімо до оптимізованого коду. Асемблерні інструкції .text sub.d f7,f7,f4 div.d f7,f9,f10 ld r1,78(r0) mul.d f2,f4,f3 add.d f4,f5,f6 halt Стан програми перед початком виконання інструкцій / Кінець виконання програми / Вікно статистики / При зміні порядку виконання функцій на виконання усіх піде уже 29 тактів. Це залежить від того, які регістри використовують інструкції. Перевіримо це на прикладі інструкцій sub.d i div.d, div.d, для запису у регістр f7 використовує значення у регістрах f9 і f10, sub.d, в свою чергу, для запису у той же регістр f7 також має використати значення у f7 та f4. Оскільки sub.d використовує значення регістр f7, то для початку її виконання над цим регістром не повинно проводитися ніяких дій. Тому ця інструкція почне своє виконання лише після div.d, яка проводить дію ділення і вкінці запише значення у цей регістр. Якщо інструкція sub.d почне своє виконання перед div.d, то вони зможуть виконуватися паралельно, адже для виконання ділення потрібно 24 такти, а віднімання – 4, тому над регістром f7 вже буде проведено дію і записано в нього значення, тому для ділення це заважати не буде. Висновок: виконавши дану лабораторну роботу, я опанував техніку розпаралелення виконання машинних інструкцій на рівні апаратури.
Антиботан аватар за замовчуванням

08.04.2025 12:04-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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