МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра БІТ
/
З В І Т
До лабораторної роботи №3
з курсу: «Архітектура комп'ютерних систем»
на тему: «Конкурентне виконання машинних інструкцій»
Мета виконання роботи:
Опанувати техніку розпаралелення виконання машинних інструкцій на рівні апаратури.
Вступ
Інструкції рухомої коми можуть переходити із сходинки ID виконання до сходинки EX у власному конвеєрі виконання операції рухомої коми, або бути призупиненими через неготовність операндів. Для зменшення часових втрат, що є наслідком призупинення, можна використовувати стратегію невпорядкованого завершення виконання (анг. out-of-order completion), але вона може спричинити небезпеку WAR (write after read) конвеєрного виконання. Також тут може допомогти техніка зміни назв (перепризначення) регістрів (register renaming).
Завдання
Засобами архітектурного симулятора WinMIPS64 дослідити на прикладі фрагментів програмного коду можливості паралельного опрацювання машинних інструкцій на рівні апаратури та позитивні ефекти, що при цьому досягаються. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Виконання
Аналіз першого фрагменту коду:
.text
add.d f7,f7,f3
add.d f7,f7,f4
mul.d f4,f5,f6 ; WAR через спільний регістр f4
/
Рис. 1 – Результат аналізу першого фрагменту коду.
Аналіз другого фрагменту коду:
;***************************************
;*** 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
/
Рис. 2 – Результат аналізу другого фрагменту коду.
Як показує діаграма стану конвеєра в процесі роботи виникають затримки типу RAW, що збільшують роботу процесора. Дана затримка виникає тому що процесор чекає на виконання команди ділення, яка є надзвичайно довгою, і тому решта команд простоює.
Для покращення ситуації введемо деякі зміни в код:
Код після оптимізації:
;***************************************
;*** winMIPS64 //hazard3.s// *****
;*** (c) 2003 CA226, DCU *****
;***************************************
.text
div.d f7,f9,f10
mul.d f2,f4,f3
ld r1,78(r0)
add.d f4,f5,f6
sub.d f7,f7,f4
halt
Після чого отримуємо такі результати:
/
Рис. 3 – Результат після зміни коду.
Висновок:
Як видно по статистиці та діаграмах для покращення роботи процесора необхідно розділити та грамотно розставити операції, для того, щоб процесор міг їх виконати фактично паралельно, оскільки він має можливості паралельної обробки різнотипних операцій.