Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Національний університет «Львівська політехніка»
ІКТА
Кафедра ЗІ
/
Лабораторна робота №2
з дисципліни: «Архітектура комп’ютерних систем»
на тему: «ДОСЛІДЖЕННЯ ВИКОНАННЯ ЦИКЛІВ НА
КОНВЕЄРІ ІНСТРУКЦІЙ»
Варіант - 26
Львів 2022
Мета роботи - опанувати техніку конвеєрного виконання RISC інструкцій.
Завдання
Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною
RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів
машинних програм, що містять цикли. Виявити наявні залежності (небезпеки)
даних і керування, оптимізувати програмний код та дослідити дію
запропонованої оптимізації. За результатами проведених лабораторних
досліджень оформити звіт та захистити його.
/
/
Виконання роботи
Виконання програми asm.exe за допомогою Windows PowerShell, яка дозволяє перевірити синтаксис програми до її виконання та її результат:
/
Оскільки синтаксис є правильним, наступним кроком буде виконання програми у WinMIPS64. Ось так виглядає головна сторінка програми після відкриття файлу labka2.s:
/
Перед початком виконання покрокової симуляції виконання інструкцій, увімкнемо апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer, BTB) у Configure – Enable Forwarding і Enable Branch Target Buffer та натиснемо F7:
/
На 7 циклі було отримано RAW (read after write), що показано на скріншоті:
/
Було отримано 2 RAW на 10 циклі:
/
Після 11 циклів симуляції виконання інструкцій, утворилося перше пригальмування за рахунок виконаного умовного переходу (branch taken stall).
/
За 40 циклів було отримано 10 RAW та 2 BTS (branch taken stall):
/
На 76 циклі симуляції виконання інструкцій, трапилася помилка передбачення напрямку умовного переходу (Branch misprediction stall у вікні статистики):
/
І на 84 циклі була завершена програма з такими результатами:
/
Проте вимкнувши апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу, отримаємо ось такі результати:
/
Результат виконання програми сумування 10 чисел з механізмами випередження та прогнозування:
Загальне число виконаних циклів становить 84.
СРІ = 1.500 – середнє число циклів (cycles per instruction), що припало на виконання кожної інструкції програми.
• RAW Stalls (read after write) = 20;
• Branch Taken Stalls (виконаного умовного переходу) = 2;
• Branch Misprediction Stalls (передбачені напрямку умовного переходу)= 2;
Результат виконання програми сумування 10 чисел без механізмів випередження та прогнозування:
Загальне число виконаних циклів становить 110.
СРІ = 1.964 – середнє число циклів (cycles per instruction), що припало на виконання кожної інструкції програми.
• RAW Stalls (read after write) = 41;
• Branch Taken Stalls (виконаного умовного переходу) = 9;
• Branch Misprediction Stalls (передбачені напрямку умовного переходу)= 0;
Висновок: У даній лабораторній роботі я навчився виконувати певні RISC інструкції. Дізнався, що при вимкнених механізмах випередження та прогнозування не було помилки в передбаченні напрямку умовного переходу (Branch misprediction stall).