Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра електронних
обчислювальних машин
Звіт
про виконання ознайомчої лабораторної роботи
з курсу „ Архітектура комп’ютерів та комп’ютерних систем ”
Тема:
Додавання двох цілих чисел.
Виконав:
студент групи КІ-3
Львів – 2004
Мета: Опанування технологій обробки потоку інструкцій конвеєром універсальних процесорів на прикладі програми додавання двох чисел та отримання навичок з кількісного оцінювання ефективності мікроархітектур цих процесорів; прищеплення навичок з самостійного планування експерименту та розв’язування інженерних задач, що при цьому виникають , з подальшим оцінюванням ефективності запропонованих та втілених пропозицій за обраними критеріями.
Завдання.
Скласти асемблерну програму додавання двох цілих чисел. Дослідити виконання цієї програми симулятором DLX. Пояснити та проаналізувати інформацію, отриману в результаті виконання обчислень за програмою.
Текст програми для базової частини:
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
Текст програми для експериментальної частини:
lw r2,0x10(r1) ; get A value
lw r3,0x14(r1) ; get B value
nop ; compiler scheduling, cycle bypass
add r2,r2,r3 ; update A=A+B
sw 0x14(r1),r2 ; store new A
trap 0 ; end
Планування використання комірок головної пам’яті:
Сутність експерименту: скоректуємо код програми за правилами статичного планування, що насправді виконує автоматично оптимізуючий компілятор введенням команди nop щоб скасувати залежність даних.
Протоколи виконання програми:
Рис.1 Протокол роботи конвеєра.
Рис.2 Протокол вмісту комірок головної пам’яті.
Рис.3 Протокол статистик.
Рис.4 Протокол роботи конвеєра для експериментальної програми із статичним плануванням.
Рис.5 Протокол статистик для експериментального режиму.
На рис.1 показано протокол роботи конвеєра. Усього опрацьовано 5 повних інструкцій. На 4 перші інструкції витрачено 9 циклів замість теоретично очікуваних 8-ми. При цьому на виконання інструкцій 3 та 4 витрачено по шість циклів замість очікуваних п’яти через те, що дані між інструкціями 2 і 3 перебувають у RAW-залежності, тому спричиняється затримка на один відповідний цикл інструкції 3 та 4. На рис.4 показано протокол роботи конвеєра для експериментальної програми із статичним плануванням, як можна побачити за допомогою інструкції NOP нам вдалося минути затримки. Це можна побачити порівнюючи протоколи статистики ( рис.3 та рис.5 ).
Висновок: Існування притаманної програмі залежності даних спричинило виникнення RAW-залежності, яку автоматично визначила та за допомогою затримки на один цикл знищила апаратна частина машини. При цьому втрата швидкодії склала 1-9/8=12.5%. Можливе скасування залежності даних уведенням інструкції NOP після другої інструкції програми, що відповідає не динамічному, а статичному плануванню процесу виконання програми. У великих програмах зустрічаються випадки, коли при статичному плануванні компілятор замість операції NOP уводить корисну інструкцію, яка розташована ближче до початку програми, та за умови, коли її позачергове опрацювання не спотворює сенс програми.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!