Частина тексту файла (без зображень, графіків і формул):
Національний університет «Львівська політехніка»
ІКТА кафедра БІТ
/
ЗВІТ
до лабораторної роботи №2
ДОСЛІДЖЕННЯ ВИКОНАННЯ ЦИКЛІВ НА
КОНВЕЄРІ ІНСТРУКЦІЙ
Мета роботи: Опанувати техніку конвеєрного виконання RISC інструкцій.
Вказівки до роботи: Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що містять цикли. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Варіант 3
//
Хід роботи
Виконання програми asm.exe. Вона дозволяє перевірити синтаксис програми, ще до її виконання.
/
Відкриємо програму WINMIPS64 і запустимо в ній цей файл. У вікні “Code” спостерігаємо код програми.
/
Використаємо апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу:
/
Дозволено використання випередження (forwarding) і апаратури передбачення напрямку умовного переходу (branch target buffer).
Покроково симулюємо виконання інструкцій. На 7 циклі отримали RAW (read after write).
/
Виконано 7 циклів симулювання. Є перше RAW (read after write)
При виконанні 10 такту бачимо ще 1 пригальмування
/
Друге пригальмування
Після виконання 11 тактів симулювання, сталося перше пригальмування за рахунок виконаного умовного переходу (branch taken stall).
/
Виконання 11-ти тактів
На 76 циклі виконання отримали першу помилку передбачення напрямку умовного переходу.
/
Стан виникнення першої gомилки в передбаченні напрямку умовного переходу (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 інструкцій.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!