Добавил:
Допоможу чим зможу) Відсигнальте якщо знайшли шось корисне) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
31
Добавлен:
11.03.2020
Размер:
457.58 Кб
Скачать

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра безпеки інформаційних технологій

Віктор Мельник

ЛАБОРАТОРНИЙ ПРАКТИКУМ

АРХІТЕКТУРА КОМП’ЮТЕРНИХ СИСТЕМ

Львів - 2012

Лабораторний практикум

2

ЗМІСТ

1.Передмова_______________________________________________________3

2.Симулятор WinDLX ______________________________________________3

2.1.Запуск та конфігурування __________________________________________ 3

2.2.Завантаження тестових програм ____________________________________ 4

2.3.Симулювання _____________________________________________________ 4

2.3.1.Конвеєрне вікно (Pipeline window)___________________________________________4

2.3.2.Кодове вікно (Сode window)________________________________________________5

2.3.3.Циклове вікно (Сlock Cycle window) _________________________________________5

2.3.4.Вікно точок зупинки ( Breakpoint window) ____________________________________6

2.3.5.Регістрове вікно (Register window ) __________________________________________7

2.3.6.Вікно статистики (Statistics window) _________________________________________8

3.Подальші експерименти з симулятором ____________________________8

4.Вступна лабораторна робота _____________________________________8

4.1.Завдання _________________________________________________________ 8

4.2.Складання програми_______________________________________________ 9

4.3.Симулювання базисної програми____________________________________ 9

4.4.Експериментальна частина________________________________________ 11

4.5.Висновки ________________________________________________________ 11

5.Лабораторні роботи ____________________________________________12

5.1.План виконання робіт_____________________________________________ 13

5.2.Лабораторна робота 1. Програма ЦИКЛ_____________________________ 13

5.3.Лабораторна робота 2. Програма РУХОМА КОМА___________________ 13

5.4.Лабораторна робота 3. Програма ПРОСТЕ ЧИСЛО __________________ 14

5.5.Лабораторна робота 4. Програма ФАКТОРІАЛ ______________________ 15

6.ДОДАТОК. Таблиця інструкцій процесора ________________________16

В. Мельник. Кафедра БІТ. Національний університет “Львівська політехніка”

Лабораторний практикум

3

1. Передмова

DLX процесор (вимовляти як "Deluxe") є конвеєрним. Симулятор цього процесора з назвою WinDLX створено у Віденському університеті. Симулятор використовується як наочний посібник до підручника американських викладачів-науковців, засновників RISC-архітектури, а саме:

J. Hennessy and D. Patterson. Computer Architecture. A quantitative approach. – MK Publishing, CA, 1996.

Надана далі інформація з використання симулятора є нескладною. Але за її допомогою можна виконати перші кроки, тобто коротенькі програми DLX та опанувати методологією користування симулятором. Зауважимо, що симулятор надає контекстно-залежну допомогу у скрутних випадках, яка активується натисканням клавіші F1.

2. Симулятор WinDLX

Робота виконується з асемблерним файлом FACT.S, що містить програму, написану мовою “WinDLX assembler”. Програма вираховує значення факторіалу цілого числа, яке має бути уведеним оператором з клавіатури. Разом із цим файлом використовується файл INPUT.S.

2.1. Запуск та конфігурування

WinDLX стартує як звичайна Windows-програма. При цьому відчиняється головне вікно із шістьма іконками, що мають статус зменшених дочірніх вікон. Подвійний щиголь клавішею миші на кожній іконці розгортає її в звичайне вікно .

Симулятор має бути приведеним до першостану (скинутим) за допомогою щигля клавішею миші, коли її курсор позначає опцію Reset all у пункті File меню головного вікна. При цьому з’являється модальне вікно "Reset DLX" window”, яке вимагає підтвердження пункту OK, аби зачинитися.

Симулятор має бути приведеним до першостану (скинутим) за допомогою щигля клавішею миші, коли її курсор позначає опцію Reset all у пункті File меню головного вікна. При цьому з’являється модальне вікно "Reset DLX window”, яке вимагає підтвердження пункту OK, аби зачинитися.

WinDLX спроможний працювати у декількох конфігураціях. Проте від початку роботи з симулятором важливо переконатися у його стандартному конфігуруванні, а як треба, то поновити таке конфігурування. Для цього викликають пункт меню Configuration / Floating Point Stages і переконуються про встановлення наступних значень кодів конфігурування “апаратних” засобів (якщо потрібно, тоді виправляють значення кодів на надані нижче значення).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Count

 

 

Delay:

 

 

 

Addition Units

 

 

1

 

 

2

 

 

 

 

Multiplication Units

 

 

1

 

 

 

5

 

 

 

 

Division Units

 

 

1

 

 

 

19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В. Мельник. Кафедра БІТ. Національний університет “Львівська політехніка”

Лабораторний практикум

4

На завершення, за допомогою щигля мишею на OK зачиняють відчинене модальне вікно. Другим кроком, знову за допомогою пункту меню головного вікна Configuration / Memory Size, визначають місткість пам'яті як 0х8000 та відомим способом виходять з поточного модального вікна.

Можна користуватися трьома іншими опціями меню Configuration , а саме - Symbolic addresses, Absolute Cycle Count та Enable Forwarding .

2.2. Завантаження тестових програм

До початку симуляції, до WinDLX потрібно завантажити програми, що симулюються. Це виконується за допомогою пункту меню File / Load Code or Data. Вибирання цього пункту мишею викликає нове вікно, що містить файли із розширенням .S. Саме ці файли завантажують до симулятора. Нагадаємо, що програма fact.s вираховує значення факторіалу цілого числа. Допоміжна програма. input.s містить процедуру читання стандартного вводу (the keyboard) та зберігає отримане ціле число в регістрі загального призначення (the general purpose register) r1 DLX процесора.

Аби завантажити ці два файли до пам'яті симулятора, потрібні наступні кроки:

-позначити мишею файл fact.s,

-натиснути мишею кнопку select,

-позначити мишею файл input.s,

-натиснути мишею кнопку select,

-натиснути мишею кнопку load.

Послідовність натискання позначок екрану є суттєвою у визначенні коректної послідовності завантаження файлів-програм до пам'яті симулятора. Опрацювання повідомлення File(s) loaded successfully. Reset DLX? виконується натисканням клавіші OK. Після цього файли рахуються завантаженими до пам'яті симулятора.

Стартові роботи завершено. Симулятор готовий до виконання програм.

2.3. Симулювання

Зараз ми бачимо у головному вікні симулятора шість іконок, які відповідають наступним робочим і допоміжним вікнам "Register", "Code", "Pipeline", "Clock Cycle Diagram", "Statistics" and "Breakpoints". Щиголь мишкою на кожній іконці перетворює її на відчинене вікно. Далі розглядаються призначення і функції цих вікон.

2.3.1. Конвеєрне вікно (Pipeline window)

Перед усім, бажано унаочнити внутрішню структуру конвеєра DLX процесора. Зробімо клавішею миші щиголь на іконці Pipeline. Виникає дочірнє вікно, яке презентує класичний п’яти сходинковий конвеєр DLX IF, ID, EX, MEM, WB. Отримане вікно бажано зробити ширшим, або бачити послідовність опрацювання конвеєром стандартних і нестандартних (за часовими витратами) комп’ютерних інструкцій.

Наведений вище рисунок відтворює конвеєр DLX процесора та додаткові вузли виконання операцій з рухомою комою, а саме - addition / subtraction, multiplication and division.

В. Мельник. Кафедра БІТ. Національний університет “Львівська політехніка”

Лабораторний практикум

5

2.3.2. Кодове вікно (Сode window)

Наступне вікно має назву Code window. Коли виконати подвійний щиголь на його іконці, тоді можна побачити трьох колонкове представлення пам'яті симулятора, у якому послідовно відтворено (в межах одного рядка) наступне:

-адресу (символьно чи чисельно);

-гексадецимальний машинний код інструкції;

-саму інструкцію, записану асемблерною мовою.

$TEXT

0x20011000

addi r1, r0, 0x1000

Main+4

0x0c00003c

jal InpUnSigned

Аби розпочати симулювання, потрібно викликати Execution з меню головного вікна. Результатом є поява нового меню типу pull down. Далі робимо щиголь на підфункції Single Cycle. Значно спрощує справу еквівалентне за дією натискання клавіші F7 клавіатурі, яке також спричинює один крок процесу симуляції.

Можна зауважити, що перше натискання F7 підсвічує у кодовому вікні лінію з адресою $TEXT жовтим кольором. Наступне натискання F7 спричинює другий крок симулювання і змінює підсвічування першої лінії на помаранчовий колір, тоді як друга лінія отримує жовте підсвічування. Тут барвами відтінюють процес просування інструкцій конвеєром DLX. Якщо вікно Pipeline виявилося зачиненим, його треба відчинити подвійним щиглем на відповідній іконці. Якщо це вікно є недостатньо довгим і “приховує” частину лінії, яка відповідає за графічне представлення часових витрат на виконання інструкції, тоді це вікно мишкою подовжується в горизонтальному напрямку, аби побачити, що інструкція jal InputUnsigned розташована на сходинці IF тоді, як її попередник інструкція addi r1, r0, 0x1000 пересунулася вже на другу сходинку конвеєра ID. Інші блоки, позначені хрестом, свідчать про те, що на відповідних їм сходинках конвеєра інструкція не викликала жодних дій.

Наступний натиск F7 змінює кольорове забарвлення кодового вікна – додається червоний колір, що свідчить про роботу третьої сходинки конвеєра з назвою intEX. Ще одне натискання F7 змінює кольорове забарвлення в цілому. Жовта лінія з’являється нижче і, ймовірно, є лише єдиною забарвленою лінією у вікні. Перегляд конвеєрного вікна інформує про те, що сходинки конвеєра IF, intEX and MEM використовуються, а сходинка ID не використовується. Чому?

2.3.3. Циклове вікно (Сlock Cycle window)

Інші вікна надають додаткову інформацію про роботу конвеєра. Від моменту старту вони знаходяться у зменшеному стані, тобто виглядають як іконки. Розгортання іконок виконується за допомогою щигля клавішею миші за умови, що курсор миші знаходиться у відповідному місці головного (батьківського) вікна.

Можна побачити, що симуляція знаходиться на 4-тому циклі. Перша інструкція (машинна команда) опрацьовується на сходинці MEM конвеєра, друга інструкція – на сходинці intEX (integer EX), третя – анульована, а четверта – на вхідній сходинці IF. Щодо третьої інструкції зауважимо наступне. Вона завантажилася до конвеєра “поза законом”, за “інерцією, саме тому, що її попередником є інструкція безумовного переходу. Анулювання третьої інструкції викликало, як кажуть, бульбашку (“bubble”) на конвеєрі замість корисної роботи.

В. Мельник. Кафедра БІТ. Національний університет “Львівська політехніка”

Лабораторний практикум

6

Цільова адреса переходу jal має назву "InputUnsigned". Аби визначити конкретне чисельне значення, що відповідає символічному запису адреси, треба викликати опцію Memory з меню головного вікна, а потім – опцію Symbols. Ми побачимо відповідність символічного і чисельного запису нашої та інших адрес. Отримані значення відповідності можна сортувати за назвами або за чисельними значеннями. Символ "G" після значення адреси позначає глобальну цільову адресу, а

символ "L"

-- локальну. Цільова адреса "InputUnsigned" розташована у модулі "input" , тому вона

є глобальна.

Завжди треба зачиняти викликане вікно натисканням на позначку ОК.

Натискання

на F7 просуває першу інструкцію addi на останню сходинку конвеєра. Що

відбувається у середині конвеєра, можна зрозуміти за допомогою швидкого подвійного щигля мишею на лінії кодового вікна, де розташована інструкція addi. Це спричинює появу нового вікна, яке містить детальну інформацію про мікроподії на кожній сходинці конвеєрі, що стосуються обраної інструкції. Нове вікно, що з’явилося позначене як "Information about ...". Зачиніть нове вікно за допомогою миші і позначки OK. Швидкий подвійний щиголь на лінії з інструкцією movi2fp надає інформацію лише про першу сходинку виконання цієї інструкції з тої причини, що вона була анульована своїм наступником, тобто інструкцією jump. Зачиніть це вікно за допомогою миші і позначки OK.

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

2.3.4. Вікно точок зупинки ( Breakpoint window)

Ми виконували код (програми) крок за кроком, натискаючи клавішу F7 та, водночас, спостерігали за порядком вибирання інструкцій (команд) у кодовому (програмному) вікні. Зараз за допомогою кодового вікна бачимо, що мають виконуватися дві ідентичні інструкції завантаження (SW – Store Word), що завантажують 32-х бітові слова до регістрів. Проте кількість натисків у режимі покрокового виконання занадто велика. Її можна зменшити за рахунок застосування точок зупинки.

Зараз треба позначити лінію 0x0000015c в кодовому вікні, де міститься інструкція trap 0x5. Це є системний виклик запису на екран. Пересуньте курсор миші на лінію в кодовому вікні з вказаною вище адресою та дайте щигля клавішею миші (колір лінії має інвертуватися). Потім дайте щигля на напису Code в меню головного вікна. Оберіть опцію Set Breakpoint за допомогою одноразового щигля. Проте треба впевнитися, що потрібна інструкція у кодовому вікні позначена інвертуванням кольору. Має виникнути нове вікно "Set Breakpoint". Це дозволить Вам вказати на бажану сходинку конвеєра, де призупиниться виконання позначеної у кодовому вікні інструкції. Стандартно обирається сходинка ID. Аби припинити процес встановлення точки зупинки, дайте мишкою щигля на позначці OK . Вікно повинно зачинитися.

Зауважимо, що у кодовому вікні на позначеній нами лінії інвертування кольору зникло. Проте з’явилася позначка-покажчик на точку зупинки, а саме “BID” біля інструкції системного виклику trap 0x5. Ця позначка свідчить про те, що автоматичне виконання програми загальмується на позначеній інструкції на сходинці (інші назви – це фаза чи цикл) декодування.

Аби перевірити налаштування точки зупинки треба відчинити вікно Breakpoints. Це вікно містить опис нашої точки у формі інформаційного рядка. Точку можна скасувати. Якщо зробити щигля мишкою на рядку опису точки, тоді у меню головного вікна мусить виникнути опція Breakpoints ( якщо є позначеною лінія з описом точки зупинки). І зараз можна скасувати призначений нами breakpoint.

Найшвидший спосіб продовжити виконання нашої програми в автоматичному режимі – це натиснути клавішу F5. Існує стандартний спосіб – викликати мишкою пункт меню головного вікна

В. Мельник. Кафедра БІТ. Національний університет “Львівська політехніка”

Лабораторний практикум

7

Execution / Run чи спрощено -- F5. За малий часовий інтервал виникне вікно, що інформує про виконання зупинки у призначеній точці -- "ID-Stage: reached at Breakpoint #1"; це вікно треба зачинити підтвердженням мишею його клавіші OK.

Зараз треба звернутися до вікна Clock Cycle Diagram. Тут ми побачимо суттєву особливість.Симуляція призупинилася на циклі 14, а лінія trap 0x5 виглядає так

Т-stall позначує застрявання з причини виконання інструкції trap (пастка). Головний мотив, що унаочнено, полягає в скиданні конвеєра DLX за умови виконання trap-інструкції. Це не найкращій спосіб перемикання на іншу системну програму з точки зору забезпечення продуктивності. Проте він спрощує роботу конвеєра та керування ним. Подія скидання (спорожнювання) конвеєра фіксується в інформаційному вікні, яке викликається подвійним щиглем мишкою за умови розташування курсора мишки на рядку з інструкцією, поміченою як точка зупинки в кодовому вікні – “3 stall(s) because of Trap-Pipeline-Clearing!" in the IF stage”. Обов”язково зачиніть це вікно за допомогою щигля на OK.

Інструкція trap 0x5 пише повідомлення на екран. Це можна перевірити, якщо дати щигля на опції Execute/Display DLX-I/O у меню головного вікна. Зрозуміло, що потім треба підтвердити OK у вікні, що відчинилося.

2.3.5. Регістрове вікно (Register window )

Подальше ефективне використання симулятора пов’язано з регістровим вікном, яке треба відчинити за допомогою відповідного щигля мишкою. Спочатку у кодовому вікні перейдемо до лінії з адресою 0x00000194. Тут міститься інструкція

lw r2, SaveR2(r0)

завантаження слова з комірки пам'яті з базовою адресою SaveR2 та зсувом, що міститься у регістрі r0

[ address = base + offset = SaveR2 + (r0) ]

до регістра r2.

Треба позначити лінію з цією інструкцією як точку зупинки. Зробіть мишею щигля на цій лінії та натисніть клавішу Ins ( це скорочений варіант подання вже відомого виклику послідовності Code / Set Breakpoint / OK). Ще одну точку зупинки треба поставити на лінії 0x000001a4 jar r31. Натиском F5 продовжіть виконання програми в автоматичному режимі. На Вас чекає сюрприз. З’являється вікно уводу/виводу, яке має назву “The DLX-Standard-I/O window”. У цьому вікні курсор миготить після повідомлення "An integer value >1:". Наберіть 20 і натисніть Enter. Симуляційне виконання нашої програми триватиме доти, доки не стане досяжною точка зупинки breakpoint # 2 (OK!).

Схема у вікні the clock cycle diagram window (відчиніть це вікно, якщо потрібно) містить щось нове

– червоні і зелені стріли поміж інструкціями (якщо цього не видно, прокрутіть інформацію у вікні доки не побачите симуляційні цикли з номерами 52, 53, 54, 55 та 56). Червоні стріли позначають необхідність пригальмування конвеєра (stall); причина такого пригальмування пояснюється в лінії, на яку показує стріла. У випадку, що розглядається, маємо так званий R-Stalls, тобто такий, який виникає за рахунок RAW-небезпеки (Read After Write, тобто порушено коректне виконання правила про те, що наступна інструкція не має права зчитувати значення операнда з цільового регістру ще до того, як операндне значення в ньому зформоване попередньою інструкцією). Зелена стріла символізує використання випереджувального пересилання операнда, потрібного другій інструкції, від попередньої по відношенню до неї інструкції, та ще до того, як формально завершилося виконання цієї попередньої інструкції з описом її результату до цільового регістру.

Настав час перевірити вмістиме регістрів. Відчиніть вікно Register , яке може бути скороченим до іконки. У цьому вікні бачите значення, що зберігаються у регістрах. Зверніть увагу на регістри від R1 до R5. Виконуючи ще один крок симуляції до наступної точки зупинки (F5, OK) побачите, що декотрі значення в регістрах змінилися. Пояснення цьому – інструкція lw, що завантажує значення з пам'яті до регістрів Можна виконувати симуляцію в інший спосіб, без використання точок зупинки. У меню головного

вікна треба реалізувати послідовність дій Execute/Multiple Cycles, чи одразу натиснути F8. Відчиниться вікно, у якому треба набрати 17 та натиснути Enter. У цьому випадку симуляція триватиме 17 циклів, доки не зупиниться (зупинка у випадку, що розглядається, не має за мету повне виконання програми обчислення факторіалу).

Зробіть скролінг у вікні the clock cycle diagram доки не побачите цикли з номерами від 72 до 78 як мінімум. Дві операції з рухомою комою (multd and subd - multiply/subtract double) виконуються на окремих вузлах на сходинці EX конвеєра. Але вони обидві вимагають на опрацювання операндів

В. Мельник. Кафедра БІТ. Національний університет “Львівська політехніка”

Лабораторний практикум

8

не одного, а декількох тактів. З вказаної причини наступна після них інструкція (j Fact.Loop) може вибиратися, декодуватися та виконуватися. Але потім повинна пригальмуватися на один цикл, аби дозволити інструкції subd завершити власну MEM фазу.

2.3.6. Вікно статистики (Statistics window)

Лишилося розглянути останнє вікно обчислення статистик програм, що симулюються. Дозволимо програмі завершити виконання натиском клавіші F5. Побачимо повідомлення "Trap #0 occurred" (OK), що свідчить про завершення виконання програми з останньою інструкцією trap 0 , яка виконалася в режимі симуляції. Пастка (Trap) з номером 0 не є визначеною. Вона застосовується, аби завершити виконання будь-якої програми. Зачиніть усі вікна та відчиніть

Statistics.

У вікні надано інформацію про найбільш важливі аспекти нашої програми. Вказано кількість виконаних циклів симуляції, конфігурацію апаратної частини, пригальмування (stalls) та причини їхнього виникнення, питомі ваги умовних переходів, інструкцій завантаження і і збереження, інструкцій з операціями рухомої коми та інструкцій-пасток (traps). Стандартно, усі характеристики надано у відсотках, наприклад , “RAW stalls: 17(7.91 % of all Cycles)".

Статистичні характеристики надзвичайно корисні у дослідженнях впливів зміни конфігурації апаратної частини на ефективність (продуктивність) RISC-машини.

Розглянемо, наприклад, вплив випереджувального пересилання результату від попередньої інструкції-виробника до наступної інструкції-споживача цього результату. Іншими словами, надамо відповідь на питання – як змінюється час виконання програми з використанням випередження та без нього.

Аби зробити це, занотуємо загальну кількість циклів (215) та пригальмувань (stalls) -- 17 RAW, 25 Control, 12 Trap; 54 Total. Зачинимо вікно статистики та відчинимо вікно Configuration. Заборонимо випереджування (disable forwarding) за допомогою щигля на опції Enable Forwarding (видимий “гак” або “гава” має зникнути). На наступне повідомлення-запитання симулятора

"WARNING: OK resets automatically the processor! Disable Forwarding?" треба відповісти OK.

Знищимо усі точки зупинок за допомогою розділа меню Breakpoints , де задамо опцію Delete All та завершимо знищення стандартним OK. Далі, викликаємо одноразову симуляцію усієї програми послідовністю F5, 20 Enter та натиснемо OK , коли виконається trap 0 . Другий перегляд вікна статистики повідомить про те, що кількість призупинок конвеєра типу Control stalls тa Trap stalls лишилася незмінною, але кількість RAW stalls зросла від 17 до 53 (погано !), що збільшило загальну кількість симуляційних циклів нашої програми до 236 (було 215). Тобто виключення випередження збільшило час виконання програми на 236 / 215 = 1.098. Зрозуміло, що варіант

DLXвипереджна 9.8 % скоріший від DLXневип на програмі fact.s).

3. Подальші експерименти з симулятором

Існує можливість виконання цілої низки досліджень за допомогою симулятора. Можна змінювати конфігурацію апаратної частини машини, аби бачити як ефективно використовується допоміжний суматор рухомої коми чи як змінюється продуктивність машини в цілому за рахунок використання прискореного вузла ділення (із зменшеною кількістю циклів). Потім можна дослідити ефекти від застосування оптимізуючого компілятора за допомогою сенсовної, тобто обгрунтованої, зміни порядку розташування інструкцій програми з метою зменшення кількості загроз виду RAW-stalls. Інтенсивно використовуйте контекстно-залежну допомогу Help. Вона містить багато додаткової і детальної інформації про роботу і можливості симулятора.

4. Вступна лабораторна робота

4.1. Завдання

Скласти асемблерну програму додавання двох цілих чисел. Дослідити виконання цієї програми симулятором DLX. Пояснити та проаналізувати інформацію, отриману в результаті виконання обчислень за програмою. Скласти звіт та захистити його.

В. Мельник. Кафедра БІТ. Національний університет “Львівська політехніка”

Лабораторний практикум

9

4.2. Складання програми

Нехай два доданки А та В містяться у головній пам’яті за наступними адресами та набувають наступних значень:

Доданок

Адреса

Вмістиме

А

0х10

0хАА

В

0х14

0хВВ

Сума дорівнює 0хАА + 0хВВ = 0х165. Сума має замістити операнд за адресою 0х14. Зараз текст асемблерної програми подамо як:

;Assumtions:

;R1 initially holds the value 0

;A is an integer, stored beginning at address 0x10

;B is an integer array, stored beginning at address 0x14

lw

r2,0x10(r1)

;get A value

lw

r3,0x14(r1)

;get B value

add

r2,r2,r3

;update A=A+B

sw

0x14(r1),r2

;store new A

trap

0

;end

Інструкцією trap #0 завершують усі програми у випадку відсутності в системі додаткових програмних засобів моніторингу та системного керування.

Програму є текстовим файлом типу (my.s). Її текст зручно набирати засобами менеджера файлів

FAR.

4.3. Симулювання базисної програми

Наступними рисунками подано зафіксовано стан симулятора на момент завершення виконання сходинки IF інструкції nop, що вже не належить до програми та є розташованою після інструкції trap #0. Іншими словами, виконання програми було припинено виконанням інструкції trap #0, яка надіслала модальне повідомлення “Trap #0 occurred!”, згашене щиглем миші. Наступний рисунок містить протокол роботи конвеєра машини.

Рис. 4.1. Протокол роботи конвеєра

Усього опрацьовано повних 5 інструкцій. На перші чотири інструкції витрачено 9 циклів замість теоретично очікуваних 8-ми циклів. При цьому на виконання 3-ї та 4-ї інструкцій витрачено по шість циклів на кожну замість очікуваних п’яти. Це пояснюється затримкою конвеєра (R-stall, що доданий в інструкції 3) через RAW-залежність даних поміж інструкціями 2 та 3, і автоматично спричиненою цим затримкою (stall, що доданий в інструкції 4) на відповідний один цикл інструкції 4.

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

В. Мельник. Кафедра БІТ. Національний університет “Львівська політехніка”

Лабораторний практикум

10

Рис. 4.2. Протокол вмістимого комірок головної пам’яті

Рис. 4.3. Протокол статистик

В. Мельник. Кафедра БІТ. Національний університет “Львівська політехніка”