МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра БІТ
ЗВІТ
до лабораторної роботи №2
з курсу: «Архітектура комп’ютерних систем»
на тему: «Дослідження виконання циклів на конвеєрі інструкцій»
Варіант-16
Львів — 2022
Мета роботи
Опанувати техніку конвеєрного виконання RISC інструкцій.
Завдання
Засобами архітектурного симулятора WinMIPS64 машини з 64- розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що містять цикли. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його.
Порядок виконання роботи
Спершу через стандартний текстовий редактор створюємо програмний файл, Lab2(16).s. В цій програмі міститиметься код для MIPS64, записаний мовою асемблер, що знаходить згідно з варіантом завдання суму десяти чисел 17, 43, 15, 22, 34, 17, 53, 11, 40, 23 з кроком 1. Тобто в пам’яті програмно резервуємо .word з ініціалізацією 10 комірок для заданих чисел, а також без ініціалізації, .space, що призначається як місце для збереження результату суми. Далі подається власне сам текст асемблерної програми, що обчислює суму заданих заданих чисел (рис. 1).
/
Рис. 1. Текст асемблерної програми
Далі подається основне вікно програми MIPS64 до її виконання (рис. 2). якій дозволено використання апаратного механізму випередження даних (forwarding), а також апаратури прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer).
/
Рис. 2. Основне вікно симулятора зі завантаженою програмою
Тепер протиснувши Execute/Single Cycle або F7 на клавіатурі можна побачити покрокове симулювання.
/
Рис. 3. Виконання сьомого циклу програми
Після десятого циклу у дочірньому вікні “конвеєра” симулятора можна побачити виконання другого RAW пригальмування (рис. 4).
/
Рис. 4. Виконання десятого циклу програми
На одинадцятому циклі симулювання, відбувається перше пригальмування за рахунок виконаного умовного переходу (branch taken stall) (рис. 5).
/Рис. 5. Виконання одинадцятого циклу програми
Пройшовши 84 циклів симулювання, спостерігаємо стан виникнення першої помилки в передбаченні напрямку умовного переходу (Branch misprediction stall) (рис. 6). Branch prediction «вгадує» наступну інструкцію, яку потрібно виконати, і вставляє наступну передбачувану інструкцію в конвеєр. Неправильне вгадування інструкції спричиняє Branch misprediction stall. Таке пригальмування уповільнює виконання програми, оскільки частково оброблені інструкції в конвеєрі після розгалуження повинні бути відкинуті, а конвеєр повинен початися спочатку з правильної гілки.
/
Рис. 6. Виконання вісімдесят четвертого циклу програми
/
Рис. 7. Вікно симулятора по завершенню виконання програми з увімкненим branch target buffer
На рисунку 7 можна бачити головне вікно симулятора по завершенню симулювання програми з використанням forwarding та branch target buffer. Тепер поглянемо на головне вікно по виконанні симуляції цієї ж програми, але вже коли вимкнемо симулювання апаратури прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer) (рис. 8).
/
Рис. 8. Вікно симулятора по завершенню виконання програми з вимкненим branch target buffer
Отже, як бачимо з рисунків 7 та 8, по виконанню програми з оптимізованою апаратурою втрати конвеєра інструкцій склали 20 RAW- пригальмувань, 2 пригальмування під час взятих, виконаних умовних переходів (Branch Taken Stall) і ще 2 пригальмування (Branch Misprediction Stalls) через помилкове передбачення напрямку умовного переходу апаратними засобами, де й власне використовується буфер цільових адрес переходів - branch target buffer. При вимкненні branch target buffer втрати конвеєра інструкцій теж склали 20 RAW-пригальмувань, але тут вже маємо 9 пригальмувань - Branch Taken Stall. Ну і пригальмування Branch Misprediction Stalls, звичайно, рівне 0.
Висновок: під час виконання даної лабораторної роботи набув як теоретичних так і практичних навичок, зокрема опанував техніку конвеєрного виконання RISC інструкцій.