DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Дослідження виконання циклів на конвеєрі інструкцій

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
КН
Кафедра:
ЗІ

Інформація про роботу

Рік:
2022
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Архітектура комп ютерних систем

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра ЗІ / З В І Т до лабораторної роботи №2 з курсу: « Архітектура комп'ютерних систем » на тему: «Дослідження виконання циклів на конвеєрі інструкцій» Варіант № 22 Львів 2022 Мета роботи - опанувати техніку конвеєрного виконання RISC інструкцій. Завдання Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що містять цикли. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його. Варіант Числа  22 11, 58, 54, 8, 14, 7, 58, 20, 57, 1   Виконання завдання Використовуючи середовище розробки Visual Studio Code, створив програмний файл loop.s , який містить код для MIPS64, що знаходить суму десяти чисел. Код програми на мові асемблер : ; Program: loop.s ; Sum of 10 integer values .data values: .word 11, 58, 54, 8, 14, 7, 58, 20, 57, 1 ; array of ints result: .space 8 ; place for result 64 bits .text MAIN: daddui R1,R0,10 ; R1 <- 10 ; iterations number dadd R2,R0,R0 ; R2 <- 0 pointer for values dadd R3,R0,R0 ; R3 <- 0 result LOOP: ld R4,values(R2) ; load value with r2 pointer to R4 dadd R3,R3,R4 ; R3 <- R3 + R4 daddi R2,R2,8 ; R2 <- R2 + 8 POINTER INCREMENT daddi R1,R1,-1 ; R1 <- R1 - 1 DECREMENT COUNTER bnez R1,LOOP nop sd R3,result(R0) ; Result in R3 HALT ; the end Ще до симулювання перевіряємо синтаксис програми з допомогою утиліти asm.exe, прописуючи команду в терміналі powershell : / У симуляторі WINMIPS64 відкриваємо файл loop.s з текстом програми на мові асемблер. / Встановлюємо дозволи на використання апаратури випередження (forwarding) і апаратури передбачення напрямку умовного переходу (branch target buffer) у налаштуваннях. / Далі я виконуємо покрокове симулювання, натискаючи Execute/Single Cycle (або F7). Після виконання семи циклів симулювання, отримую перше RAW, що видно на наступному скріншоті. / Після виконання десяти циклів симулювання, отримую друге RAW пригальмування, що видно на наступному скріншоті. / Виконую одинадцять тактів симулювання, стається перше пригальмування за рахунок виконаного умовного переходу (branch taken stall). / Стан виникнення першої помилки в передбаченні напрямку умовного переходу (Branch misprediction stall) можна спостерігати після виконання 76 циклів симулювання. В вікні статистика (Statistics) видно що в пункті (Branch misprediction stall) з’явилася перша помилка (наступний скрін). / Після виконання 84 тактів симулювання завершується. Загальне число виконаних циклів становить 84 на 56 інструкцій. На наступному скріншоті видно головне вікно симулятора по завершенню симулювання програми. / Підсумовуючи можна сказати, що після виконання програми з оптимізованою апаратурою втрати конвеєра інструкцій склали 20 RAW-пригальмувань. СРІ = 1.500 – це середнє число тактових інтервалів (cycles per instruction), що припало на виконання кожної інструкції програми. RAW Stalls (read after write) = 20. Branch Taken Stalls (виконаного умовного переходу) = 2. Branch Misprediction Stalls (передбаченні напрямку умовного переходу) = 2. Ці дані розміщено у вікні Statistics, яке показано на наступному скріншоті. / Змінюючи налаштування виконую симулювання ще раз для того, щоб переконатися, що при використанні неоптимізованої апаратури час виконання програми зросте. Вимикаємо апаратні механізми випередження даними і прогнозування напрямку умовного переходу за допомогою буфера цільових адрес переходу (branch target buffer). / Виконуємо повторне симулювання. / Аналізуючи вікно статистики (Statistics), можна побачити, що у загальне число виконаних циклів становить 110 на 56 інструкцій. СРІ = 1.964 – це середнє число тактових інтервалів (cycles per instruction), що припало на виконання кожної інструкції програми. RAW Stalls (read after write) = 41. Branch Taken Stalls (виконаного умовного переходу) = 9. Branch Misprediction Stalls (передбаченні напрямку умовного переходу) = 0. /
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!