🚀 Вийди на новий рівень крипто-торгівлі!
Easy Trade Bot — автоматизуй свій прибуток уже зараз!

Ми пропонуємо перелік перевірених прибуткових стратегій на такі пари як BTC, DOT, TRX, AAVE, ETH, LINK та інші. Ви можете підключити автоматичну торгівлю на своєму акаунті Binance або отримувати торгові рекомендації на email у режимі реального часу. Також можемо створити бота для обраної вами монети.

Всі результати торгів ботів доступні для перегляду у зручних таблицях на головній сторінці. Швидко, динамічно та прозоро!

Перейти до бота + 30$ бонус

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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА Кафедра ЗІ / Звіт до лабораторної роботи №2 з курсу: «Архітектура комп’ютерних систем» на тему: «Дослідження виконання циклів на конвеєрі інструкцій» Мета роботи Опанувати техніку конвеєрного виконання RISC інструкцій. Завдання Засобами архітектурного симулятора WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64 дослідити конвеєрне виконання фрагментів машинних програм, що містять цикли. Виявити наявні залежності (небезпеки) даних і керування, оптимізувати програмний код та дослідити дію запропонованої оптимізації. За результатами проведених лабораторних досліджень оформити звіт та захистити його. Варіант Числа  24 26, 7, 60, 58, 32, 8, 11, 11, 42, 4   Початок виконання роботи .data values:     .word 26, 7, 60, 58, 32, 8, 11, 11, 42, 4 result:     .space 8 .text MAIN:   daddui R1,R0,10         dadd R2,R0,R0         dadd R3,R0,R0 LOOP:   ld R4,values(R2)         dadd R3,R3,R4         daddi R2,R2,8         daddi R1,R1,-1         bnez R1,LOOP nop         sd R3,result(R0)         HALT Код програми мовою асемблера Секція .data містить дані, над якими програма виконує операцію. Це послідовність з 10 чисел та зарезервований простір розміром у 8 байт (64 біти). Мітка MAIN секції .text позначає основний код програми, який, згідно з логікою програми, виконується однократно. Код, який повинен виконуватися в циклі, починається від мітки LOOP. Інструкція LD rt, offset(base) завантажує подвійне машинне слово з пам’яті в вказаний регістр rt значення з пам’яті зі зсувом offset. Інструкція DADD rd, rs, rt виконує додавання значень регістрів rs та rt зі збереженням результату в регістр rd. Інструкція DADDI rt, rs, immediate виконує додавання до значення регістру rs константи immediate зі збереженням результату в регістр rt. Інструкція BNEZ r1, label повертає лічильник програми на мітку label, якщо значення r1 не дорівнює 0, Branch (if) Not Equal Zero Інструкція SD rt, offset(base) виконує протилежну до LD функцію, тобто зберігає значення регістру в комірку пам’яті зі зсувом offset. Інструкція NOP (No Operation) є пустою операцією, яка не впливає не виконання програми та має опкод 00. Аналогом даної інструкції в високорівневих мовах програмування є pass в Python або null statement в С та С++. Інструкція HALT переводить процесор в стан HALT. В цьому стані виконання інструкцій зупиняється до отримання зовнішнього переривання. Pass 1 completed with 0 errors 00000000          .data 00000000 000000000000001a values:     .word 26, 7, 60, 58, 32, 8, 11, 11, 42, 4          0000000000000007          000000000000003c          000000000000003a          0000000000000020          0000000000000008          000000000000000b          000000000000000b          000000000000002a          0000000000000004 00000050          result:     .space 8 00000000          .text 00000000 6401000a MAIN:   daddui R1,R0,10 00000004 0000102c         dadd R2,R0,R0 00000008 0000182c         dadd R3,R0,R0 0000000c dc440000 LOOP:   ld R4,values(R2) 00000010 0064182c         dadd R3,R3,R4 00000014 60420008         daddi R2,R2,8 00000018 6021ffff         daddi R1,R1,-1 0000001c 1c01fffb         bnez R1,LOOP 00000020 00000000 nop 00000024 fc030050         sd R3,result(R0) 00000028 04000000         HALT Pass 2 completed with 0 errors Code Symbol Table                 MAIN = 00000000                 LOOP = 0000000c Data Symbol Table               values = 00000000               result = 00000050 Результат перевірки Бачимо, що програма пройшла процес перевірки без помилок. Відкриваємо симулятор WinMIPS64 та завантажуємо в нього написану програму. / Виконання програми займе 84 цикли з форвардингом та BPB і 105 циклів без форвардингу з BPB, тому перейдемо до результатів виконання всієї програми: / Програма виконується інструкція за інструкцією, проходячи всі стадії конвеєра: завантаження, ідентифікація, виконання, доступ до регістрів, доступ до пам’яті. Деякі інструкції можуть не взаємодіяти з пам’яттю, регістрами або не доходити до стадії виконання взагалі (інструкція NOP). / / Бачимо послідовність стадій конвеєра для кожної виконаної інструкції в порядку виконання / Бачимо, що програма виконалася і повернула значення 0x103, яке еквівалентне 259 в десятковій системі. / Статистика виконання з увімкненим форвардингом / Статистика виконання з вимкненим форвардингом Без використання Branch Target Buffer відбулося 9 Branch Taken Stalls (пригальмовувань виконання умовних переходів). При увімкненні Branch Target Buffer отримуємо 2 Branch Taken Stalls і 2 Branch Misprediction Stall (пригальмовування неправильного передбачення напрямку умовного переходу). Висновок В даній лабораторній роботі розглядалося виконання інструкцій на конвеєрі в процесорах архітектури MIPSv4 на прикладі програми, яка додає 10 чисел за допомогою умовного циклу, керованого інструкцією BNEZ. В результаті дослідження виконання було зроблено висновок про можливі пригальмовування виконання програми.
Антиботан аватар за замовчуванням

08.04.2025 12:04-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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