Aормування та аналіз збіжності сіракузької послідовності на конвеєрі інструкцій
Автор: Mr Fly • Январь 1, 2025 • Лабораторная работа • 847 Слов (4 Страниц) • 13 Просмотры
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра ЗІ
[pic 1]
Звіт
до лабораторної роботи №4
з курсу: «Архітектура комп’ютерних систем»
на тему: «Aормування та аналіз збіжності сіракузької послідовності на конвеєрі інструкцій»
Варіант-13
Виконав:
студент групи КБ-303
Закала Р.І.
Прийняв:
Ісаков О. В.
ЛЬВІВ – 2024
Мета роботи
Опанувати технікою конвеєрного виконання RISC інструкцій, що реалізують цикли та операції розгалуження.
Завдання
Засобами архітектурного симулятора WinMIPS64 для 64-розрядної RISC
архітектури MIPS64 дослідіть конвеєрне виконання програм мовою асемблера,
що включають команди порівняння, умовного та безумовного переходу. Виявте
наявні залежності (небезпеки) даних і керування, оптимізуйте програмний код
та проаналізуйте вплив оптимізації на продуктивність. Оформіть результати
дослідження у звіті та підготуйтеся до його захисту.
Для дослідження проаналізуйте наведений нижче фрагмент коду, який
обчислює елементи Cіракузької послідовності (також відомої як Hailstone
sequence) для заданого початкового натурального числа n. Проведіть симуляцію
формування цієї послідовності для початкового значення, що відповідає
вашому варіанту, і визначте, чи є отримана послідовність збіжною. Занотуйте
всі елементи, визначте довжину послідовності та її пікове значення. Друга
частина завдання полягає у дослідженні можливості оптимізації коду і/або
підвищення швидкодії програми.
Варіант 13 (n = 16)
Хід роботи
Створимо файл з кодом, який будемо виконувати:
[pic 2]
Перевіримо правильність синтаксису:
[pic 3]
Синтаксис є коректним. Далі відкриємо програму WINMIPS64 і запустимо в ній файл з кодом та дозволимо випередження:
[pic 4]
Виконуємо інструкції і бачимо, що на 4 циклі виникає перше RAW (Read After Write) пригальмування і отримуємо наступний елемент послідовності на дев’ятому такті в шістнадцятковій системі числення 0x10 = 16 в регістрі r1.
[pic 5]
На наступному 5-му циклі виникає друге RAW пригальмування на етапі декодування (ID) інструкції beqz r3, even
[pic 6]
Після шести тактів симулювання стається перше пригальмування (branch taken stall) через виконання безумовного переходу j over.
На 9 такті отримуємо значення 8 в регістрі:
[pic 7]
На 11-му та 12-му такті виникає третя та четверта RAW затримка під час виконання інструкції порівняння slt r3, r4, r1 та умовного переходу beqz r3, skip.
[pic 8]
На шістнадцятому циклі виникає ще одна RAW затримка. Після 17-го такту виникає друга затримка branch taken stall. Після 20-го такту в цей раз виконується умова переходу в інструкції beqz r3, even, виникає затримка(шостий раз RAW), що пов’язана з виконанням умовного переходу, а конвеєр завантажується інструкція dsrl r1, r1, 1 за міткою even. Після 21-го такту виникає третя затримка branch taken stall. Після 24-го такту отримуємо наступне значення послідовності 0x4 – 4.
...