Akademia Techniczno – Humanistyczna w Bielsku Białej
Wydział: Budowy Maszyn i Informatyki
Kierunek Automatyka i Robotyka
Rok: 2014/2015
Semestr: 4
PODSTAWY Architektury komputerów
ĆWICZENIA 1
Wykonawca sprawozdania
Szymon Gajewski
Cel ćwiczenia
Opanować technikę potokowego wykonania rozkazów RISC.
Zadania
Symulatorem WinMIPS64 wykonać badanie potokowego wykonania fragmentów programów komputerowych z cyklami. Optymizować kod programowy i wykonać badanie kodu.
Kod programu
.data
A: .word 15
B: .word 10
C: .word 0
.text
main:
ld r4,A(r0)
ld r5,B(r0)
dadd r3,r4,r5
sd r3,C(r0)
halt
Okna programu
Główne okno symulatora zawiera sześć filialnych okien w których będziemy odczytywać i analizować potrzebne dla nas informacje .
Do sprawdzenia działanie programu wykonując instrukcję krok po kroku, służył do tego klawisz „F7”.
Takt 1
Instrukcja ld r4,A(r0) została zdekodowana oraz zostały pobrane operandy
Instrukcja ld r5,B(r0) została wybrana z pamięci instrukcji
Takt 2
Instrukcja ld r4,A(r0) została wykonana.
Instrukcja ld r5,B(r0) zdekodowana oraz zostały pobrane operandy.
Instrukcja dadd r3,r4,r5 została wybrana z pamięci instrukcji (napłynięcie instrukcja dadd r3,r4,r5 do potoku )
Takt 3
Instrukcja ld r4,A(r0) została zapisana do komórki danych.
Instrukcja ld r5,B(r0) została wykonana.
Instrukcja dadd r3,r4,r5 ) została zdekodowana oraz zostały pobrane operandy.
Instrukcja sd r3,C(r0) została wybrana z pamięci instrukcji
Takt 4
Instrukcja ld r4,A(r0) zapisana do rejestru.
Instrukcja ld r5,B(r0) została zapisana do komórki danych.
Instrukcja dadd r3,r4,r5 ) została wykonana.
Instrukcja sd r3,C(r0) została zdekodowana oraz zostały pobrane operandy.
Instrukcja Halt (koniec instrukcji) została wybrana z pamięci instrukcji
Takt 5
Instrukcja ld r4,A(r0) operacja poza pętlą
Instrukcja ld r5,B(r0) zapisana do rejestru.
Instrukcja dadd r3,r4,r5 ) została wykonana.
Instrukcja sd r3,C(r0) została zdekodowana oraz zostały pobrane operandy.
Instrukcja Halt (koniec instrukcji) została wybrana z pamięci instrukcji.
Zauważamy w oknie statistisc pojawienie się błędu Raw
Takt 6
Instrukcja dadd r3,r4,r5 zapisana/odczytana z komórek danych.
Instrukcja sd r3,C(r0) została wykonana.
Instrukcja Halt została zdekodowana oraz zostały pobrane operandy.
Takt 7
Instrukcja dadd r3,r4,r5 zapisana do rejestru.
Instrukcja sd r3,C(r0) zapisana/odczytana z komórek danych.
Instrukcja Halt została wykonana.
Takt 8
Instrukcja sd r3,C(r0) zapisana do rejestru.
Instrukcja Halt zapisana/odczytana z komórek danych.
Trakt 9
Instrukcja Halt zapisana do rejestru.
Takt 10 koniec programu
Jak widzimy w oknie Statistics wykonaliśmy 10 cykli, 5 instrukcji, 2.000 Instrukcji na cykl(CPI), oraz 1 błąd RAW który niestety powoduje opóźnienie wykonania programu przez procesor.
W celu poprawienia (optymalizacji) naszego program należy usunąć z niego wszystkie błędy
Wykorzystamy do tego polecenie nop który służy do planowania statystycznego.
.data
A: .word 15
B: .word 10
C: .word 0
.text
main:
ld r4,A(r0)
ld r5,B(r0)
nop
dadd r3,r4,r5
sd r3,C(r0)
halt
końcowe okno po optymalizacji
Jak widzimy z okna Statistics, liczba instrukcji wzrosła o 1 ale ilość Cykli na instrukcje zmalała do 1.667 co przyśpieszyło działanie programu.