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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”

ІКТА

Кафедра ___

ЗВІТ

ДО ЛАБОРАТОРНОЇ РОБОТИ № 2

З КУРСУ:

“ Архітектура комп’ютерних систем”

НА ТЕМУ:

“ Програма Рухома кома

Підготував:

Ст.гр.КБ-24

Войтович О.О.

Прийня__:

___________________

Львів 2019

Базова частна

Метою виконання базової частини кожної лабораторної роботи є опанування студентом технологій обробки потоку інструкцій конвеєром універсальних процесорів (на прикладі обробки програм певних типів) та отримання навичок з кількісного оцінювання ефективності мікроархітектур цих процесорів.

Звіт з роботи

Завдання

1. Завантажити базисну версію програми до симулятора. Спланувати використання комірок головної пам’яті та записати до них вихідні дані.

2. Виконати програму у кроковому режимі. Перевірити виконнання програми.

3. Пояснити подані вікнами(циклове вікно, вікно статистик) симулятора протоколи вионання програми. 4. Зробити висновки за результатами симуляції виконання програми.

Базисна версія програми

;*********************************************************

;*This example calculates the equation: (A*B)+(C*D) *

;*We are assuming that the value of A is stored at *

;*location 100; B is at 200; C, 300; D, 400. The result *

;*will be stored at location 500. *

;*A, B, C, and D are all 32 bit integers *

;*********************************************************

Equation:

lw r1,100(r0) ;load A

lw r2,200(r0) ;load B

lw r3,300(r0) ;load C

lw r4,400(r0) ;load D

movi2fp f1,r1 ;convert A into floating pt

movi2fp f2,r2 ;convert B to fp

movi2fp f3,r3 ;convert C to fp

movi2fp f4,r4 ;convert D to fp

multf f5,f1,f2 ;A*B is stored into f1

movfp2I r1,f5 ;move f1 to r1

multf f6,f3,f4 ;C*D is stored into f3

movfp2I r3,f6 ;move f3 to r3

add r1,r1,r3 ;(A*B)+(C*D)

sw 500(r0), r1 ;store result at mem[500]

trap 0 ;end

Clock Cycle Diagram

Виходячи з минулого скріншоту видно, що для викнання інструкцій 10 та 12 було витрачено 9 циклів(кроків) замість запланованих 5, за рахунок того що в процесі виконання цих інструкцій виникає RAW-залежність між даними, бо порушено коректне виконання правила про те, що наступна інструкція не має права зчитувати значення операнда з цільового регістру ще до того, як операндне значення в ньому зформоване попередньою інструкцією.

На рисунку чітко видно причину затримки у виконанні 10 і 12 інструкцій – це червона стрілка від 9 та 11 інструкцій. Червоні стріли позначають необхідність пригальмування конвеєра (stall); причина такого пригальмування пояснюється в лінії, на яку показує стріла. Також можна побачити випереджувальне пересилання даних до інструкції зміни типу даних, додавання та доступу до пам’яті які в той момент були на сходинці виконання. Зелена стріла символізує використання випереджувального пересилання операнда, потрібного другій інструкції, від попередньої по відношенню до неї інструкції, та ще до того, як формально завершилося виконання цієї попередньої інструкції з описом її результату до цільового регістру.

На виконання програми знадобилося 27 кроків з яких 8 викликані затримкою R-stall.

Експереминтальна частина

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

Завдання

1. Запропонувати заходи з прощення ефективності використання апаратних засобів процесора та скласти відповідну експереминтальну версію базової пограми.

2. Виконати експериментальну у кроковому режимі. Перевірити результат виконання програми.

3.Пояснити подані вікнами(циклове вікно, вікно статистик) симулятора протоколи виконання програми.

4. Подати кількісні значення тих характеристик, які доводять зростання ефективностіроботи апаратних засобів.

5. Зробити висновки за результатами виконання експеременту.

Модифікована програма на асемблерній мові

Equation:

lw r1,100(r0) ;load A

lw r2,200(r0) ;load B

movi2fp f1,r1 ;convert A into floating pt

movi2fp f2,r2 ;convert B to fp

multf f5,f1,f2 ;A*B is stored into f1

lw r3,300(r0) ;load C

lw r4,400(r0) ;load D

movi2fp f3,r3 ;convert C to fp

movi2fp f4,r4 ;convert D to fp

multf f6,f3,f4 ;C*D is stored into f3

movfp2I r1,f5 ;move f1 to r1

movfp2I r3,f6 ;move f3 to r3

add r1,r1,r3 ;(A*B)+(C*D)

sw 500(r0), r1 ;store result at mem[500]

trap 0 ;end

Clock Cycle Diagram

З скріншоту видно, що за допомогою перестановки інструкцій процесора, ми змогли позбутися майже всіх RAW-залежностей між даними(відсутність майже всіх червоних стрілок та затримок конвеєра R-stall та Stall). Також видно випереджувальне пересилання даних(зелені стрілки).

Порівнюючи з вікном статистики базисної програми можна впевнено сказати, що ми позбулися майже всіх затримок типу RAW-stalls та скоротили кількість циклів виконання програми з 27 до 22(-5 циклів).

Висновок

На цій лабораторній роботі я навчився працювати з програмою WinDLX та всіма її компонентами, розібрав принцип роботи базисної програми «Рухома кома» та визначив, що її код не досконалий і викликає 8 затримок в конвеєрі типу R-stall. Програму на асемблерній мові вдалося оптимізувати за допомогою перестановки її рядків, що не змінило логіку виконання програми, але спричинило зменшення кількості цих затримок і скоротило кількість циклів виконання програми з 27 до 22.

Соседние файлы в папке Лаби готові