Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №2
з курсу: “ Архітектура комп'ютерних систем” на тему:
«ДОСЛІДЖЕННЯ ВИКОНАННЯ ЦИКЛІВ НА КОНВЕЄРІ ІНСТРУКЦІЙ»
Варіант № 18
Львів – 2022
Мета роботи - опанувати техніку конвеєрного виконання RISC інструкцій.
Завдання
Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що містять цикли. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Варіант
Числа
1
60, 52, 51, 44, 21, 7, 8, 18, 7, 14
Початок виконання роботи
Відкриємо програму WINMIPS64 і запустимо в ній файл loop.s, яким ми попередньо створили. Переконався, що програма завантажена до пам’яті і симулятор готовий до роботи. У вікні “Code” спостерігаємо код програми.
/Основне вікно симулятора з відкритим файлом loop.s
Використав апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB).
/Дозволяємо використання випередження (forwarding) і апаратури передбачення напрямку умовного переходу (branch target buffer).
Покроково симулюємо виконання інструкцій. На 7 циклі отримали RAW (read after write).
/Виконано 7 циклів симулювання
При виконанні 10 такту бачимо ще 1 пригальмовування
/Друге пригальмовування
Після 11 тактів симулювання, сталося перше пригальмовування за рахунок виконаного умовного переходу (branch taken stall).
/Виконання 11-ти тактів
На 76 циклі виконання отримали першу помилку передбачення напрямку умовного переходу (Branch misprediction stall).
/Виникнення першої помилки в передбаченні напрямку умовного переходу
/Завершення програми
Виключаємо апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB).
/Головне вікно стимулятора по завершенню симулювання програми loop.s
Результат виконання програми сумування 10 чисел показав нам правильний результат 0x37. Загальне число виконаних циклів становить 84.
СРІ = 1.500 – це середнє число тактових інтервалів (cycles per instruction), що припало на виконання кожної інструкції програми.
• RAW Stalls (read after write) = 20
• Branch Taken Stalls (виконаного умовного переходу) = 2
• Branch Misprediction Stalls(передбаченні напрямку умовного переходу)= 2
Результат виконання програми без механізмів випередження та прогнозування сумування 10 чисел показав нам такий самий результат 0x37. Загальне число виконаних циклів становить 110. СРІ = 1.964 – це середнє число тактових інтервалів (cycles per instruction), що припало на виконання кожної інструкції програми.
• RAW Stalls (read after write) = 41
• Branch Taken Stalls (виконаного умовного переходу) = 9
• Branch Misprediction Stalls (передбаченні напрямку умовного переходу)= 0
Висновок: на лабораторій роботі, я навчився виконувати певні RISC інструкції. З ввімкненими механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB) програма виконалася на 26 менше ніж з вимкненими механізмами. Середнє число тактових інтервалів без механізмів також виросло на 0.464. При вимкнених механізмах не було помилки в передбаченні напрямку умовного переходу (Branch misprediction stall).