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