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

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

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

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

до лабораторної роботи №1

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА Кафедра БІТ З В І Т до лабораторної роботи №1 з курсу: «Архітектура комп’ютерних систем» Варіант № 21 Львів 2022 Мета роботи: Опанування технікою роботи з архітектурним симулятором WinMIPS64 машини з 64-розрядною RISC архітектурою MIPS64. Завдання: Дослідити симулюванням виконання заданих викладачем машинних окремих інструкцій і пар інструкцій. За результатами проведених лабораторних досліджень оформити звіт та захистити його. Теоретичні відомості Симулятор WinMIPS64 стартують за правилами Windows. Основне вікно симулятора містить шість дочірніх вікон і ще статусну лінію під ними. Дочірні вікна отримали назви Pipeline, Code, Data, Registers, Statistics і ще вікно часових діаграм (Clock Cycles Diagram) Далі подамо назви і пояснимо призначення дочірніх вікон симулятора. Таблиця 1 – Дочірні вікна симулятора WinMIPS64 Pipeline window ( вікно конвеєра інструкцій, five pipeline stages : IF – instruction fetch from instruction memory, ID – instruction decoding/operand fetch, EX – execute, MEM – to/from data memory, WB – write back to registers file) Вікно містить “схематичне” подання п’ятисходинкового конвеєра інструкцій 64- розрядного процесора MIPS64 разом з апаратними секціями виконання операцій рухомої коми, а саме, додавання/віднімання (addition/subtraction) множення (multiplication) і ділення (division). Рухоме ділення не конвеєризоване. Це вікно показує, на якій сходинці конвеєра знаходиться та чи інша інструкція. Вікно може збільшуватися.  Code window (вікно коду) Вікно виконує триколонкове подання пам’яті інструкцій, а саме, (зліва направо): адреса байта, 32-бітову машинну інструкцію, асемблерну інструкцію. Подвійний лівий щиголь мишею на певній інструкції встановлює/знімає точку зупинки.   Data window (вікно даних) / Це вікно показує вмістиме пам’яті даних,. Ясно, що адресування комірок виконується побайтне, проте у вікні вмістиме подане 64-бітовими пакетами, тобто так, як це вмістиме сприймає 64- розрядний процесор. Аби відредагувати певні дані, треба зробити на них подвійний лівий щиголь мишею (double-left-click). Аби побачити і відредагувати дані з рухомою комою, треба виконати подвійний правий щиголь (double-right-click).  Register window (регістрове вікно) / Вікно подає вмістиме регістрів. Коли вмістиме регістрів подають сірим кольором, тоді воно змінюється під дією програми, що симулюється. Коли вмістиме регістру подається іншим кольором, тоді цей колір відповідає кольору сходинки конвеєра, де знаходиться відповідна інструкція за умови, що з цієї сходинки є можливим так зване випередження (forwarding). Це вікно дозволяє інтерактивну зміну вмістимого будь-якого регістру, тобто, залежно від контексту, зміну коду 64-бітового цілого або рухомого числа, що в поточний момент містить регістр. Останнє можливе лише за умови, що обраний регістр не знаходиться в процесі програмної зміни вмістимого і його вмістиме не має не використовуватися для випередження даними. Аби змінити вмістиме регістра на ньому треба зробити подвійний лівий щиголь (double-left- click on the register). З’явиться модальне спливаюче вікно. Треба натиснути OK, аби записати до регістру 64-бітове гексадецимальне 0х0000000000000777.  Clock Cycle diagram (вікно часової діаграми) Вікно містить часову поведінку конвеєра, що знаходиться під дією поточної програми, що симулюється. Воно фіксує історію кожної інструкції. Коли певна інструкція спричиняє пригальмування конвеєра, тоді її символьне подання в лівій частині циклового вінка міняє колір з чорного на синій. Інструкції, що споживають результат пригальмованої інструкції змінюють колірність на сіру.  Statistics (вікно статистики) Саме це вікно є найважливішим, адже воно накопичує результати виконання кожної лабораторної роботи з дослідження ефективності RISC архітектури. Вікно подає накопичені і поточні статистики програми, що симулюється, а саме, число циклів (тактових інтервалів) на симуляцію ( number of simulation cycles), число виконаних за ці цикли інструкцій, середнє число циклів на одну інструкцію ( average Cycles Per Instruction, тобто CPI), типи затримок (stalls) і числа виконаних особливих інструкцій, а саме, умовних переходів (conditional branches) і інструкцій завантаження / збереження (Load/Store).   Status Line (стан симулятора) Статусна лінія на низу основного вікна симулятора нормально видає повідомлення "Ready", проте протягом симулювання подає різну корисну користувачеві інформацію щодо поточного стану процесу симулювання.   Завантаження програми Користуйтеся стандартним редактором NotePad, аби створити програмний файл, наприклад, sum.s. Ця програма містить код для MIPS64, що вираховує суму двох цілих чисел A і B. Числові коди спочатку вибрати з комірок пам’яті за адресами А і В до регістрів, потім додати на регістрах і, нарешті, записати отриману суму до комірки пам’яті за адресою С. Далі йде текст асемблерної програми. ;*** winMIPS64 //lab1.s// C=A+B *****  ;*** (c) 2003 CA226, DCU  *****   .data A: .word 44 B: .word 7 C: .word 0 .text main: ld r4,A(r0) ld r5,B(r0) dsub r3,r4,r5 sd r3,C(r0) halt Зауважимо, що невеличка за розміром утиліта asm.exe дозволяє ще до симулювання перевірити синтаксис програми, що мають симулювати. Аби перевірити синтаксис потрібно виконати команду операційної системи: C:\winmips64> asm lab1.s Результат побачимо на дисплеї. Коли виконати C:\winmips64> asm lab1.s > report.txt тоді результат вміщуватиме не екран, а файл report.txt, вмістиме якого для програми lab1.s зараз і подамо. Pass 1 completed with 0 errors 00000000 .data 00000000 000000000000002c A: .word 44 00000008 0000000000000007 B: .word 7 00000010 0000000000000000 C: .word 0 00000000 .text 00000000 main: 00000000 dc040000 ld r4,A(r0) 00000004 dc050008 ld r5,B(r0) 00000008 0085182e dsub r3,r4,r5 0000000c fc030010 sd r3,C(r0) 00000010 04000000 halt Pass 2 completed with 0 errors Code Symbol Table main = 00000000 Data Symbol Table A = 00000000 B = 00000008 C = 00000010 Покрокове симулювання В будь-якому стані симулятора натисни F10, аби розпочати новий цикл симулювання. Зауважимо, що на старті перша кольорова лінія в вікні Code з адресою 0х0000 (0000) забарвлена жовтим. Сходинка конвеєра IF у вікні Pipeline також забарвлена жовтим і містить асемблерну мнемоніку першої інструкції програми. Поглянемо до кодового вікна Code I знайдемо там першу інструкцію ld r4,A(r0). У вікні Data можна знайти програмну змінну A. / Clock 1 Натиснути Execute/Single Cycle (або натиснути F7). Симулятор виконає перший цикл (тактовий інтервал) програми. Увага! Не першу інструкцію, а лише перший цикл, що для п’ятисходинкового конвеєра відповідає виконанню 1/5 першої інструкції в найкращому випадку, коли нема вимушених затримок конвеєра. Зауважимо, що абревіатура MIPS відповідає в українському перекладі “мікропроцесору, що немає затримок конвеєра”, а не “мільону операцій на секунду”. У вікні Code колірність першої інструкції змінюється на блакитну і вже друга інструкція забарвлена жовтим. Таке забарвлення вказує на сходинку конвеєра, де знаходиться відповідно забарвлена інструкція: жовтий для IF (вибирання інструкції з пам’яті інструкцій, точніше з кеша інструкцій), блакитний для ID (декодування інструкції і вибирання операндів безпосередніх і з регістрового файла), червоний для EX (виконання інструкції, 1 такт для фіксованих кодів і більше тактів для рухомих кодів), зелений для MEM (запис/читання до/з комірок пам’яті даних), пурпурний для WB (запис результату до регістру регістрового файлу). Коли подивитися на сходинку конвеєра IF у вікні Pipeline , можна побачити, що друга інструкція програми ld r5, B(r0) з’явилася на цій, в той час, як перша інструкція ld r4,A(r0) пересунулася на другу сходинку ID конвеєра. Конвеєр розпочав функціонування. / Clock 2 Наступний натиск на F7 змінює забарвленість в вікні Code через уведення червоного кольору для третьої сходинки EX конвеєра. До конвеєра увійшла інструкція dsub r3,r4,r5. / Clock 3 Третій натиск на F7 знову змінює колірність вікна Code, уводячи зелену забарвленість для четвертої сходинки MEM конвеєра. До конвеєру входить інструкція sd r3,C(r0). У вікні Cycle бачимо історію виконання кожної інструкції програми, тобто сходинку, на якій знаходиться кожна інструкція перед надсиланням чергового тактового імпульса. / Clock 4 Знову натискаємо F7. Кожна сходинка конвеєра отримує нову інструкцію. Регістр r4 має завантажуватися з комірки пам’яті даних. Проте оновлене вмістиме регістра можна отримати завчасно (кажуть – з випередженням в часі, прямо з виходу пам’яті даних, тобто, з виходу сходинки МЕМ (for forwarding from the MEM stage)). Отже, прямо з виходу пам’яті забираємо новий, ще не записаний до регістру призначення операнд (це і є випередження), а далі паралельно виконуємо додавання цього нового операнду і в той самий час пишемо цей операнд до регістру регістрового файлу. Добре, що в конвеєрі водночас знаходиться черга з п’ятьох інструкцій, тобто, всі ці інструкції є «під рукою». Можна бачити, що r4 забарвлюється зеленим (колір сходинки MEM) у вікні Registers. Зауважимо, що остання інструкція програми halt (симулятор не має навіть примітивної програми монітора, що вже казати про операційну систему; отже, програміст мусить вручну гальмувати виконання програми саме такою інструкцією) вже уведена до конвеєра. / Clock 5 Натискаємо F7. Тут відбуваються цікаві події. Значення, призначене для r5, стає доступним для пересилання. Однак значення для r5 не було вчасно доступним для виконання інструкції dadd r3,r4,r5 у EX. Таким чином, він залишається в EX, зупинився. Рядок стану читає «RAW зупинка в EX (R5)», вказуючи, де сталася зупинка, і недоступність якого реєстру спричинила це. / Фігури в вікнах Clock Cycle Diagram і Pipeline чітко вказують на те, що інструкція dsub “застрягла” в сходинці EX, і що всі інструкції за нею також неспроможні пересуватися конвеєром далі. У вікні Clock Cycle Diagram інструкцію dadd підсвічено блакитним, а інструкції, що розташовані за нею “посіріли”. Clock 6 Натискаємо F7. Інструкція dsub r3,r4,r5 нарешті виконується, а щойно отримана сума, призначена для запису до r3, паралельно стає досяжною для виконання випередження (зі сходинки execute). Отримано значення 0x25, що є різницею 44 - 7 = 37 в десятковій. Це і є відповідь програми, а нас більше цікавить не ця відповідь, а часові витрати на виконання програми (вимірюємо числом тактових імпульсів) і скорочення цього часу різними методами. Щойно зауважене є предметом курсу ЛР з архітектури комп’ютерних систем. / Clock 7 Натискаємо F7. Інструкція halt, вже уведена до конвеєра, спричинює ефект “закриття” конвеєра. По ній вже жодна інша інструкція не уводиться до конвеєра, а сам конвеєр поступово спорожнюється, він сходинки IF до сходинки WB. / Clock 8 Натискаємо F7. Перевіряємо пам’ять даних Data , де фіксуємо, що змінна C набула значення 0х25. Інструкція sd r3,C(r0) записала це значення до пам’яті на сходинці MEM конвеєра, використовуючі випереджені дані з виходу IF, які вже нормально, без випередження записуються до регістра r3. / Clock 9 Натискаємо F7. / Clock 10 Натискаємо F7. Програма фінішує. / Проаналізуємо вміст вікна статистики (Statistics) і зауважимо, що ми мали 1 пригальмування RAW. Витратили 10 тактових циклів на виконання п’яти інструкцій. Значить, отримали середнє число тактових імпульсів CPI=2.000 на одну інструкцію. / Заборонимо випередження, на вкладці «configure» Enable Forwarding Виконаємо програму знову: / По виконанню нашої програми, але вже без випередження, проаналізуємо вміст вікна статистики. Зауважимо, що маємо аж 4 пригальмування RAW. Середнє число тактів на виконання інструкції погіршилося і становить CPI=2.600. Висновок: Виконавши цю лабораторну роботу я навчився використовувати програму WinMIPS64 в різних режимах. Режим випередження дає можливість більш детально розглянути програму і зменшує кількість помилок, тому ми отримали 1 пригальмування RAW, а середнє число тактів на виконання інструкції становить CPI = 2.000. Без режиму випередження, отримали аж 4 пригальмування RAW. Середнє число тактів CPI збільшилось до 2.600.
Антиботан аватар за замовчуванням

08.04.2025 12:04-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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