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

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

11

Отриману суму, що дорівнює 0хАА + 0хВВ = 0х165 містить комірка з адресою 0х14. Це стверджує протокол зміни вмістимого комірок основної пам’яті (рис. 4.2). Видно, що другий доданок заміщено сумою.

Рис. 4.3 містить протокол статистик, отриманих під час опрацювання програми. Характеристики цього протоколу визначено з врахуванням загалом 10-ти витрачених циклів. [Далі подають аналізроз’яснення щодо кожного розділу протоколу статистик із ручним прорахунком-підтвердженням наведених у машинному протоколі значень статистичних характеристик].

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

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

;Compiler Scheduling. Example DLX code

;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

nop

r2,r2,r3

;compiler scheduling, cycle bypass

add

;update A=A+B

sw

0x14(r1),r2

;store new A

trap

0

;end

Протокол роботи конвеєра подано рисунком 4.4.

Рис. 4.4. Протокол роботи конвеєра для експериментальної програми із статичним плануванням

Бачимо, що пригальмування зникли. [Далі розглядаємо решту протоколів, як це було зроблено вище для базисної версії програми].

Зрозуміло, що наші пропозиції щодо усунення залежностей даних в спосіб статичної диспетчеризації підтверджено.

4.5. Висновки

А. Існування притаманних програмі залежностей даних спричинило виникнення залежності RAW, яку автоматично визначила та в спосіб затримки на один цикл знищила апаратна частина машини. При цьому втрата швидкодії склала 1 – 9/8 = - 12.5 %.

В. Можливе скасування залежності даних уведенням інструкції nop після другої інструкції програми, що відповідає не динамічному, а статичному плануванню процесу виконання програми. С. У великих програмах зустрічаються випадки, коли при статистичному плануванні компілятор замість операції nop уводить корисну інструкцію, яка розташована ближче до початку програми, та за умови, коли її пересунення (після чергове опрацювання)не спотворює сенс програми.

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

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

12

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

Далі подано інформацію щодо тематики, обсягу та термінів виконання лабораторних робіт. Фактично кожна лабораторна робота містить дві частини, а саме, базову частину та експериментальну частину.

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

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

Лабораторні роботи розрізняють за типом програми, виконання якої симулюють. При цьому базова (Б) та експериментальна (Е) частини усіх лабораторних робіт мають формально збіжні завдання, як це подано нижче.

Завдання до роботи .

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

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

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

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

5.Оформити звіт Б та захистити його.

Завдання до роботи 1Е.

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

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

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

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

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

6.Оформити звіт Е та захистити його.

Звіт з кожної лабораторної роботи містить:

-титульну сторінку,

-завдання (базове, або ж експериментальне, у тому числі текст програми),

-чітко викладену студентом мету роботи,

-планування використання комірок головної пам’яті (для роботи Б),

-сутність експерименту (для роботи Е),

-необхідні витяги з протоколів, складених симулятором за результатом опрацювання програми,

-стисле пояснення результатів, що містять зазначені витяги,

-чисельні значення тих кількісних характеристик, що доводять ефективність або ж, навпаки, спростовують ефективність запропонованої студентом експериментальної версії програми у порівнянні з наданою базисною програмою (лише для роботи Е),

-стисло сформульовані висновки.

Звіти (у роздрукованому та зшитому вигляді) подають на захист на початку наступної лабораторної роботи. Обсяг кожного звіту – до 4-х друкованих (шрифтом 10) стандартних аркушів.

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

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

13

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

План виконання лабораторних робіт подано наступною таблицею.

Номер

Вид роботи

Тип програми

Бали

заняття

 

 

 

1

Вступ

 

n/a

2

Ознайомча робота

Додавання двох цілих чисел

3

3

Робота 1Б. Базисна версія

Цикл

3

4

Робота 1Е. Експеримент

 

3

5

Робота 2Б. Базисна версія

Рухома кома

6

Робота 2Е. Експеримент

 

3

7

Робота 3Б. Базисна версія

Просте число

8

Робота 3Е. Експеримент

 

3

9

Робота 4Б. Базисна версія

Факторіал

19Робота 4Е. Експеримент

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

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

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

;*

Example DLX code without the use of loop unrolling and

*

;*

rescheduling.

 

*

;*

Assumtions:

 

*

;*

R1 initially holds the value 0

*

;*

A is an integer array, stored beginning at address 0

*

;*

B is an integer array, stored beginning at address 4000

*

;*

 

 

 

*

;*

Written by Dr. Michelle Hugue

*

;*

(Worksheet Loop Unrolling and Rescheduling 1)

*

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

 

Loop:

r2,0(r1)

 

 

 

lw

;get next A value

 

 

lw

r3,20(r1)

;get next B value

 

 

add

r2,r2,r3

;update A

 

 

sw

40(r1),r2

;store new A

 

 

addi

r1,r1,#4

;update counter

 

 

subi

r4,r1,#16

;check to see if done

 

 

bnez

r4,Loop

;repeat loop if not done

 

 

trap

0

;end

 

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

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

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

;*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:

r1,100(r0)

 

lw

;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

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

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

14

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

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

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

;WINDLX Exp.2: Generate prime number table

;(c) 1991 Guenther Raidl

;Modified 1992 Maziar Khosravipour

;Program begins at symbol main

;generates a table with the first 'Count' prime numbers from 'Table' ;---

.data

 

;--- size of table

 

Count:

.global

Count

 

.word

10

 

Table:

.global

Table

 

.space

Count*4

 

.text

main

 

main:

.global

 

;--- Initialization

 

 

 

 

addi

r1,r0,0

;Index in Table

 

addi

r2,r0,2

;Current value

NextValue:

;--- Determine, if R2 can be divided by a value in table

addi

r3,r0,0

;Helpindex in Table

Loop:

seq

r4,r1,r3

;End of Table?

 

bnez

r4,IsPrim ;R2 is a prime number

 

lw

r5,Table(R3)

 

 

divu

r6,r2,r5

 

 

multu

r7,r6,r5

 

 

subu

r8,r2,r7

 

 

beqz

r8,IsNoPrim

 

 

addi

r3,r3,4

 

IsPrim:

j

Loop

 

;--- Write value into Table and increment index

 

sw

Table(r1),r2

 

 

addi

r1,r1,4

 

 

;--- 'Count' reached?

 

 

lw

r9,Count

 

 

srli

r10,r1,2

 

 

sge

r11,r10,r9

 

IsNoPrim:

bnez

r11,Finish

 

;--- Check next value

 

 

addi

r2,r2,1

;increment R2

Finish:

j

NextValue

 

;--- end

0

 

 

trap

 

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

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

15

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

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

;WINDLX Ex.3: Factorial

;(c) 1991 Guenther Raidl

;Modified: 1992 Maziar Khosravipour

;Program begin at symbol main

;requires module INPUT

;read a number from stdin and calculate the factorial (type: double)

;the result is written to stdout

;---

.data

 

 

 

 

 

Prompt:

 

"An integer value >1 : "

 

.asciiz

 

PrintfFormat:

.asciiz

"Factorial = %g\n\n"

PrintfPar:

.align

 

 

2

 

 

.word

 

PrintfFormat

 

 

PrintfValue:.space

 

 

8

 

 

 

.text

 

main

 

 

 

main:

.global

 

 

 

;--- Read value from stdin into R1

 

 

 

 

addi

 

r1,r0,Prompt

 

 

 

jal

 

InputUnsigned

 

 

;--- init values

 

;R1 -> D0

D0..Count register

 

movi2fp

f10,r1

 

 

cvti2d

 

f0,f10

 

;1 -> D2

D2..result

 

addi

 

r2,r0,1

 

movi2fp

f11,r2

 

 

 

 

cvti2d

 

f2,f11

 

;1-> D4

D4..Constant 1

 

movd

 

f4,f2

 

Loop:

;--- Break loop if D0 = 1

 

led

 

f0,f4

 

;D0<=1 ?

 

 

bfpt

 

Finish

 

 

 

 

;--- Multiplication and next loop

 

 

multd

 

f2,f2,f0

 

 

 

subd

 

f0,f0,f4

 

 

Finish:

j

 

Loop

 

 

 

;--- write result to stdout

 

 

sd

 

PrintfValue,f2

 

 

addi

 

r14,r0,PrintfPar

 

 

trap

 

5

 

 

 

 

;--- end

0

 

 

 

 

trap

 

 

 

 

На цьому подання матеріалів для виконання лабораторних робіт завершено.

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

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

16

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

Інструкція, тип та код

 

Сутність інструкції

 

 

Move data between registers and memory, or between the integer and

Пересилання даних

 

FP or special registers; only memory address mode is 16-bit displacement

 

 

+ contents

LB, LBU, SB

 

Load byte, load byte unsigned, store byte

LH, LHU, SH

 

Load halfword, load halfword unsigned, store halfword

LW, SW

 

Load word, store word

LF, LD, SF, SD

 

Load single precision float, load double precision float, store single precision

 

 

float, store double precision float

MOVI2S, MOVS2I

 

Move from/to integer register to/from a special register

MOVF, MOVD

 

Copy one floating point register or a DP pair to another register or pair

MOVFP2I, MOVI2FP

 

Move 32 bits from/to a FP register to/from an integer register

Арифметичні та логічні

 

Operations on integer or logical data in integer registers; signed arithmetic

 

 

instructions trap on overflow

ADD, ADDI, ADDU, ADDUI

 

Add, add immediate (all immediates are 16 bits); signed and unsigned

SUB, SUBI, SUBU, SUBUI

 

Subtract, subtract immediate; signed and unsigned

MULT, MULTU, DIV, DIVU

 

Multiply and divide, signed and unsigned; operands must be floating-point

 

 

registers; all operations take and yield 32-bit values

AND, ANDI

 

And, and immediate

OR, ORI, XOR, XORI

 

Inclusive or, Inclusive or immediate, exclusive or, exclusive or immediate

LHI

 

Load high immediate - loads upper 16 bits of register with immediate and zeros

 

 

the lower 16 bits

SLL, SRL, SRA,

 

Shifts; both immediate (S__I) and variable form (S__); shifts are left logical, righ

SLLI, SRLI, SRAI

 

logical and right arithmetic

SEQ, SNE, SLT,

 

Set conditional; set equal zero, set not equal zero, set less than, set greater than,

SGT, SLE, SGE

 

set less than or equal, set greater than or equal

Керування

 

Conditional branches and jumps; PC-relative or through register

BEQZ, BNEZ

 

Branch integer register equal/not equal to zero; 16 bit offset from PC+4

BFPF, BFPT

 

Test comparison bit in the FP status register and branch; 16 bit offset from PC+4

J, JR

 

Jumps; 26 bit offset from PC+4 (J) or target register (JR)

JAL, JALR

 

Jump and link; save PC+8 to R31, target is 26 bit offset from PC+4 (JAL) or a

 

 

register (JALR)

TRAP

 

Transfer to operating system at a vectored address

RFE

 

Return to user code from an exception; restore user mode

Рухома кома

 

Floating-point operations on DP and SP floats

ADDD, ADDF

 

Add DP and SP floats

SUBD, SUBF

 

Subtract DP and SP floats

MULTD, MULTF

 

Multiply DP and SP floats

DIVD, DIVF

 

Divide DP and SP floats

CVTD2F, CVTD2I,

 

Convert instructions; CVTx2y converts from type x to type y, where x and y are

CVTF2D, CVTF2I,

 

one of D (double precision float), F (single precision float) or I (integer); both

CVTI2D, CVTI2F

 

operands are in floating point registers

EQD, EQF, NED, NEF, LTD, LTF,

 

DP and SP compares; set comparison bit in FP status register

GTD, GTF, LED, LEF, GED, GEF

 

 

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