WOJSKOWA AKADEMIA TECHNICZNA
ARCHITEKTURA I ORGANIZACJA KOMPUTERÓW
SPRAWOZDANIE Z ĆWICZENIA LABORATORYJNEGO NR 7-8
Temat: Analiza i projektowanie programów na poziomie asemblera. Przetwarzanie tablic. Ocena wpływu doboru konfiguracji sprzętowej na szybkość realizacji postawionego zadania.
PROWADZĄCY ZAJĘCIA:
mgr inż. Artur Miktus
SPRAWOZDANIE WYKONAŁ:
Artur Piersa
GRUPA:
I2Y3S1
Treść zadania
A. Napisać program Lab7.s w asemblerze komputera DLX, który:
Zadeklaruje dwie tablice przechowujące liczby całkowite: T 110- elementową oraz TB 70-elementową, a także zmienną Suma zmiennoprzecinkową podwójnej precyzji.
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(=150), o wartości podanej poniżej (np. dla numeru 10, TA będzie zawierać kolejne liczby całkowite 10+SKŁADNIK, 11+SKŁADNIK,…)
Następnie dla każdego elementu tablicy TB wykona operację :
(T[i+4] + T[i+7]) * SKŁADNIK
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.
Kod programu:
.data
T: .space 440
TB: .space 280
Suma: .double 0
numer: .word 7
skladnik: .word 150
.text
;Deklaracja pierwszej tablicy
addi r1,r0,0 ;adres poczatku
addi r2,r0,0 ;licznik
lw r11,skladnik
petla1:
subi r3,r2,109 ;sprawdzanie czy to ostatni element
lw r17, numer
lw r18, skladnik
add r17, r17, r18
add r4, r2,r17
addi r2,r2,1 ;uaktualnienie licznika
sw T(r1),r4 ;zapisanie w pamieci wartosci
addi r1,r1,4 ;ustawienie wskaznika na nastepny element tablicy
bnez r3,petla1
;Deklaracja drugiej tablicy
addi r5,r0,T ;adres poczatku
addi r2,r0,0 ;licznik
addi r1,r0,0
petla2:
subi r3,r2,69 ;sprawdzanie czy to ostatni element
lw r4,16(r5)
lw r8,28(r5)
add r4,r4,r8
mult r4,r4,r11 ;wyraz do zapisania w tablicy
addi r2,r2,1 ;uaktualnienie licznika
sw TB(r1),r4 ;zapisanie w pamieci wartosci
addi r1,r1,4 ;ustawienie wskaznika na nastepny element tablicy
addi r5,r5,4
add r10,r10,r4 ;Suma
bnez r3,petla2
MOVI2FP f2,r10
CVTI2D f2, f2
sd Suma,f2
trap 0
SUMA | 4,13700E+06 |
---|
Indeks: | T | TB |
---|---|---|
1 | 157 | 48750 |
2 | 158 | 49050 |
3 | 159 | 49350 |
4 | 160 | 49650 |
5 | 161 | 49950 |
6 | 162 | 50250 |
7 | 163 | 50550 |
8 | 164 | 50850 |
9 | 165 | 51150 |
10 | 166 | 51450 |
61 | 217 | 66750 |
---|---|---|
62 | 218 | 67050 |
63 | 219 | 67350 |
64 | 220 | 67650 |
65 | 221 | 67950 |
66 | 222 | 68250 |
67 | 223 | 68550 |
68 | 224 | 68850 |
69 | 225 | 69150 |
70 | 226 | 69450 |
101 | 257 |
---|---|
102 | 258 |
103 | 259 |
104 | 260 |
105 | 261 |
106 | 262 |
107 | 263 |
108 | 264 |
109 | 265 |
110 | 266 |
Forwarding włączony:
Dzięki użyciu forwardingu, wystąpiło mniej hazardów typu RAW co skróciło czas działania programu. CPI= 1,32
Forwarding wyłączony:
Bez użycia forwardingu znacznie wydłużyły się hazardy. CPI=1,77
Forwarding | Liczba cykli | Suma |
---|---|---|
Włączony | 2342 | 4,13700E+06 |
Wyłączony | 3139 | 4,13700E+06 |