L7 I3X6S1 14 id 257308 Nieznany

background image

WOJSKOWA AKADEMIA TECHNICZNA

Architektura i organizacja komputerów II

Sprawozdanie z pracy laboratoryjnej

Nr 7

Student : Adrian Kępa
Grupa : I3X6S1
Nr : 14
Data : 23.05.2014r.

background image

Treść zadania

Zadanie laboratoryjne 7_8:

A

. Napisać program Lab7.s w asemblerze komputera DLX, który:

1

. Zadeklaruje dwie tablice przechowujące liczby całkowite: T 110- elementową oraz

TB Rozmiar-elementową (gdzie liczba Rozmiar jest podana w tabeli z punktu A3), a
także zmienną Suma zmiennoprzecinkową podwójnej precyzji.

2

. Komórki tablicy T wypełni rosnąco kolejnymi liczbami całkowitymi począwszy od

numeru w dzienniku studentki/ studenta, powiększonego o liczbę SKŁADNIK, o
wartości podanej poniżej (np. dla numeru 10, TA będzie zawierać kolejne liczby
całkowite 10+SKŁADNIK, 11+SKŁADNIK,…)

3

. Następnie dla każdego elementu tablicy TB wykona operację :

Wersja :

10

Operacja :

(T[i+7] + T[i+9] - T[i+3])* SKŁADNIK

Składnik :

190

Rozmiar tablicy TB :

80

Numer studenta :

14

4

. W zmiennej Suma umieści sumę wszystkich elementów tablicy TB.

B

. Przed napisaniem programu Lab7.s zaprojektować arkusz kalkulacyjny w Excelu (lub innym

arkuszu kalkulacyjnym), wykonujący te same obliczenia. Porównać wyniki z arkusza z wynikami
napisanego programu Lab7.s.

C

. Zmierzyć liczbę cykli zegarowych dla wykonania uzyskanego programu przy 1)załączonym

2)wyłączonym forwardingu (WinDLX, menu Configuration/ Enable Forwarding). Wyniki
pomiarów przedstawić w postaci tabeli. Dla każdego uruchomienia sprawdzić poprawność
obliczonej zmiennej Suma.

D

. W sprawozdaniu naszkicować (lub wydrukować) i porównać diagramy cykli zegarowych dla

wykonania jednej iteracji obliczeń z punktu A3 (TB[i] = …) dla konfiguracji: 1) Forwarding
Enabled
i 2) Forwarding Disabled. Opisać występujące w tej iteracji hazardy i przyczyny ich
powstania. Na podstawie analizy diagramów cykli zegarowych obliczyć liczbę cykli zegarowych,
liczbę instrukcji i CPI (Clock cycles Per Instruction = liczba cykli zegarowych / liczba
wykonanych instrukcji) dla całego programu dla obu wybranych konfiguracji. Wyniki obliczeń
porównać z zawartością okienka Statistics programu WinDLX.

background image

Kod programu

.data

skladnik: .word 190
numerstud: .word 14
a: .word 110
b: .word 80
T: .space 440
TB:

.space 320

Suma: .double 4

.text

pierwszyelem:
addi R9, R0, T
lw R4, skladnik
lw R5, numerstud
add R4, R4, R5
sw 0(R9), R4
lw R20, a
addi R1,R1,1

addi R2, R0, 0

wypelnianie_T:
subi R20, R20, #1
sw 0(R9), R4
add R4, R4, R1
addi R9, R9, #4
bnez R20, wypelnianie_T

przygotowanie_do_sumy:
addi R10, R0, T
lw R19, b
lw R28, skladnik
addi R7, R0, TB
addi R26, R0, 0

obliczenia:
lw R5, 28(r10)
lw R6, 36(r10)
lw R15, 12(r10)
add R8, R5, R6
sub R8, R8, R15
mult R16, R8, R28
addi R10, R10, #4
subi R19, R19, #1
sw 0(R7), R16
addi R7, R7, #4
add R26, R16, R26
bnez R19, obliczenia

movi2fp F10, R26
cvti2d F10, F10
sd Suma, F10

trap 0

background image

Opis programu

Program Lab7.s ma za zadanie wypełnić komórki tablicy T kolejnymi liczbami począwszy od
liczby SKLADNIK + NUMER STUDENTA. W tym przypadku jest to 204. Następnie, każdy
element tablicy TB zostaje wyliczony na podstawie wzoru :

(T[i+7] + T[i+9] - T[i+3])* SKŁADNIK

Ostatnią częścią programu jest zsumowanie wszystkich elementów tablicy TB i zapisanie ich w
zmiennej Suma.

Pierwsze 10 elementów tablic T i TB

T[i]

TB[i]

204

41230

205

41420

206

41610

207

41800

208

41990

209

42180

210

42370

211

42560

212

42750

213

42940

Ostatnie 10 elementów tablic T i TB

T[i]

TB[i]

304

54530

305

54720

306

54910

307

55100

308

55290

309

55480

310

55670

311

55860

312

56050

313

56240

background image

Pozostałe dane

Numer

Studenta

Składnik

TB[1]

TB[80]

Suma

14

190

41230

56240

3,89880E+06

Zawartość pamięci dla

włączonego

forwardingu.

background image
background image

Zawartość pamięci dla

wyłączonego

forwardingu.

background image
background image

Obliczenia

A

. Ilość instrukcji –

Taka sama dla włączonego i wyłączonego forwardingu.

-8 instrukcji początkowych

-Pętla wypełniająca tablicę T zawierająca 5 instrukcji, wykonuje się 110 razy, więc w samej pętli
wykona się 550 instrukcji.

-Następnie w etykiecie przygotowanie_do_sumy wykona się 5 instrukcji.

-Pętla obliczenia zawierająca 12 instrukcji, wykonuje się 80 razy więc w samej pętli wykona się
960 instrukcji.

-Końcowa faza programu zawiera 4 instrukcje.

-Razem wszystkich instrukcji wykonanych podczas działania programu =
8 + 550 + 5 + 960 + 4 =

1527

B

. CPI (

Clock Cycles Per Instruction

) FORWARDING ON

CPI = ilosc cykli / ilosc instrukcji
CPI
= 1880/1527 =

1,23

C

. CPI (

Clock Cycles Per Instruction

) FORWARDING OFF

CPI = ilosc cykli / ilosc instrukcji
CPI
= 2448/1527 =

1,60

Porównanie wyników

Forwarding

ON

OFF

Ilość cykli

1880

2448

Ilość instrukcji

1527

1527

Clock cycles per instr.

1,23

1,60

Zmienna Suma

3,89880E+006

3,89880E+006

background image

Forwarding ON

Na powyższym zdjęciu zamieściłem wycinek cyklu zegarowego wykonanego programu dla pętli
obliczającej elementy tablicy TB. Hazard występuje w momencie gdy rozkaz

sw 0(R7), R16

chce

skorzystać z rejestru R16 który z kolei jest wcześniej wykorzystywany poprzez rozkaz

mult R16,

R8, R29

. W WinDLX mnożenie trwa aż 5 cykli, dlatego rozkaz

sw 0(R7), R16

musiał odczekać 2

cykle by mnożenie w poprzednim rozkazie zostało wykonane. Rozkaz

addi R7, R7, #4

również

musi odczekać 2 cykle, by skorzystać z rejestru R7 zależnego od poprzedniego hazardu.

background image

Forwarding OFF

Powyższe zdjęcie ilustruje przebieg programu bez forwardingu. Oprócz hazardów opisanych dla
poprzedniego przypadku, występują nowe. Na przykład –

add R8, R5, R6

chce skorzystać z

rejestru R6 do którego ładowany jest element tablicy. Z kolei rejestr ten jest obsługiwany przez
rozkaz

lw R6, 36(R10)

i występuje tutaj hazard typu RAW. Kolejny dodatkowy hazard ma miejsce

już w następnym rozkazie –

sub R8, R8, R15

który to rozkaz jest w hazardzie z rozkazem

add R8, R5, R6

. Rozkaz mult

R16, R8, R20

również próbuje skorzystać z rejestru R8 ale jest

uzależniony zarówno od rozkazu

sub R8, R8, R15

jak i

add R8, R5, R6

.

background image

Wnioski

Na podstawie powyższych danych i obliczeń widać, że forwarding to mocne narzędzie które potrafi
przyspieszyć i zoptymalizować działanie komputera. Włączenie/wyłączenie forwardingu dla
badanego programo spowodowało zmianę ilości wykonywanych cykli i zauważalnie zwiększony
czas wykonywania programów. Dodatkowo, wyłączony forwarding przyczynił się do powstania
większej ilości hazardów, które to spowalniały pracę programu. Dla danego programu, wynik
zapisany w zmiennej Suma nie zmieniał się przy wyłączaniu/włączaniu forwardingu.


Wyszukiwarka

Podobne podstrony:
cwiczenie 14 id 125164 Nieznany
Cwiczenia nr 10 (z 14) id 98678 Nieznany
5 14 id 39504 Nieznany (2)
B 14 id 74811 Nieznany (2)
A, TEST 14 id 49148 Nieznany (2)
IMG 14 id 210953 Nieznany
Cwiczenia nr 13 (z 14) id 98681 Nieznany
IMG 14 id 211039 Nieznany
Egzamin 14 id 151512 Nieznany
aud6 14 id 72057 Nieznany (2)
IMG 14 id 211113 Nieznany
IMG 14 id 211100 Nieznany
Obliczenia 14 id 327535 Nieznany
IMG 14 id 211055 Nieznany
cwiczenie9b am 13 14 id 125935 Nieznany
Cwiczenia nr 12 (z 14) id 98680 Nieznany
projekt 14 id 397725 Nieznany
cwiczenie10a am 13 14 id 125803 Nieznany
IMG 14 id 211077 Nieznany

więcej podobnych podstron