1
Obniżony pobór mocy
Mikrokontrolery rodziny Intel 8051 wykonane w technologii CHMOS mogą pracować przy obniżonym poborze mocy.
Istnieją 2 tryby pracy z obniżonym poborem mocy
1 IDLE
2 POWER DOWN
2
Obniżony pobór mocy
OSC
PD IDL
CPU przerwania
port szeregowy liczniki
Generator sygnału
zegarowego
3
Obniżony pobór mocy
Tryb IDLE:
• oscylator pracuje
• bloki systemu przerwań, liczników i
portu szeregowego taktowane zegarem
• CPU nie jest taktowane zegarem
Wyjście z trybu IDLE:
• przyjęcie przerwania lub
• sprzętowy RESET
4
Obniżony pobór mocy
Tryb POWER DOWN:
• oscylator nie pracuje
Wyjście z trybu POWER DOWN:
• sprzętowy RESET
Rejestr specjalny PCON
SMOD
- - -
GF1 GF0 PD IDL5
Obniżony pobór mocy
TRYB IDLE
Wywołanie - ustawienie bitu IDL
Utrzymywany stan rejestrów specjalnych i wewnętrznej pamięci RAM
Końcówki portów zachowują stan sprzed wywołania trybu IDLE
Wyjście za pomocą przerwania
Zgłoszenie aktywnego przerwania powoduje sprzętowe zerowanie bitu IDL i zakończenie pracy w trybie IDLE
6
Obniżony pobór mocy
TRYB IDLE (c.d.)
Wyjście za pomocą przerwania (c.d.)
Za pomocą 1 rozkazu można wywołać tryb IDLE i nadać wartość bitom GF0 i/lub GF1 - można zatem sprawdzić czy przerwanie zgłosiło się w czasie normalnej pracy, czy podczas pracy w trybie IDLE
Po wykonaniu rozkazu RETI procesor wykonuje instrukcję następną po tej, która wywołała tryb IDLE
7
Obniżony pobór mocy
TRYB IDLE (c.d.)
Wyjście za pomocą sprzętowego RESETU Sygnał zerujący podany na wejście RST
powoduje asynchroniczne wyzerowanie bitu IDL, co kończy tryb IDLE
CPU podejmuje wykonywanie programu od
rozkazu następnego po tym, który wywołał tryb IDLE
2-3 rozkazy po tym, który wywołał tryb IDLE, nie powinny wpisywać nic do końcówek portów,
ani do zewnętrznej pamięci danych
8
8051 - Zerowanie
S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 RST
ALE PSEN
P0 I A I A I A I A
19 taktów oscylatora
wewn. sygnał zerujący próbkowanie
RST (S5P2)
9
Obniżony pobór mocy
TRYB IDLE (c.d.)
Wyjście za pomocą sprzętowego RESETU (c.d.) Zanim nastąpi zerowanie, dostęp do
wewnętrznej pamięci RAM jest blokowany
Po 2 lub 3 cyklach maszynowych kontrolę nad procesorem przejmuje wewnętrzny algorytm zerujący
RESET powoduje wyzerowanie bitów GF1 i GF0, ale nie zmienia zawartości wewnętrznej pamięci RAM
10
Obniżony pobór mocy
TRYB POWER DOWN
Wywołanie - ustawienie bitu PD
Utrzymywany stan rejestrów specjalnych i wewnętrznej pamięci RAM.
Podczas trybu POWER DOWN można obniżyć napięcie zasilania do 2 V, ale przed wyjściem z tego trybu należy przywrócić normalną
wartość.
Wyjście za pomocą sprzętowego RESETU
Sygnał zerujący trzeba utrzymywać na wejściu RST przez ok. 10 ms, aby ustabilizował się
oscylator.
11
Obniżony pobór mocy
Przykład:
80C31BH - prąd zasilania:
praca normalna - 20 mA IDLE - 5 mA
POWER DOWN - 50μA
12
80XC51FX
Wyjście z trybu POWER DOWN także za pomocą przerwania zewnętrznego.
W rejestrze PCON zaimplementowano bit POF (POWER-OFF FLAG), który jest sprzętowo
ustawiany po wykryciu zmiany napięcia zasilania od zera do 5 V.
13
Pobranie rozkazu
S1 S2 S3 S4 S5 S6 S1 S2
PCL PCL PCL
PCH PCH PCH
próbkowanie
danych próbkowanie
danych próbkowanie danych
XTAL:
ALE:
PSEN:
P0:
P2:
14
Rozkaz 2-bajtowy
S1 S2 S3 S4 S5 S6 S1 S2
Odczyt kodu op.
XTAL:
ALE:
PSEN:
Odczyt
2 bajtu Odczyt następnego
kodu op.
S1 S2 S3 S4 S5 S6 S1
ADD A, #30H długość = 2 bajty, czas = 1 cykl
15
Rozkaz skomplikowany
Odczyt
kodu op. Odczyt
jałowy Odczyt jałowy
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1
Odczyt jałowy
INC DPTR długość = 1 bajt czas = 2 cykle
16
Rozkaz prosty, 1-bajtowy
INC A długość = 1 bajt, czas = 1 cykl
Odczyt
kodu op. Odczyt jałowy
S1 S2 S3 S4 S5 S6 S1 S2 S3
Odczyt następnego
kodu op.
W liście rozkazowej 8051 jest 37 takich
rozkazów (całkowita liczba rozkazów wynosi 111).
Ponad 30% rozkazów ma długość 1 bajtu i trwa przez cały cykl maszynowy, chociaż być może mogłyby być wykonane w ciągu połowy cyklu.
17
DALLAS DS80C320
Podstawowy cykl maszynowy składa się z 4 taktów zegara i można się w nim odwołać do pamięci programu tylko jeden raz.
37 rozkazów 1-bajtowych wykonuje się w ciągu 4 taktów zegara, zamiast 12.
Przy tej samej częstotliwości oznacza to, że DS80C320 jest 3 razy szybszy.
18
DALLAS DS80C320
Niestety, nie wszystkie rozkazy mogą być wykonane w jednym cyklu maszynowym.
2 cykle maszynowe - rozkazy 2-bajtowe lub takie, które wymagają dwóch odwołań do pamięci zewnętrznej:
ANL A, #dane (2 bajty) (x 1.5) MOVX A, @DPTR (1 bajt) (x 3)
19
DALLAS DS80C320
3 cykle maszynowe - rozkazy 3-bajtowe lub krótsze, które długo się wykonują:
ANL direct, #dane (3 bajty) (x 2)
INC DPTR (1 bajt) (x 2)
SJMP adres (2 bajty) (x 2)
20
4 cykle maszynowe - rozkazy wykonujące się długo:
CJNE (max. 3 bajty) (x 1.5)
RET (1 bajt) (x 1.5)
RETI (1 bajt) (x 1.5)
5 cykli maszynowych:
MUL AB (1bajt) (x 2.4)
DIV AB (1bajt) (x 2.4)
DALLAS DS80C320
21
DALLAS DS80C320
Szybkość działania dodatkowo zwiększona przez wprowadzenie drugiego rejestru
DPTR.
Przełączania między dwoma rejestrami
DPTR dokonuje się przez zmianę wartości najmłodszego bitu w rejestrze specjalnym DPS (podobnie do przełączania banków
rejestrów). Robi się to za pomocą instrukcji:
INC DPS
22
DALLAS DS80C320
Przykład: przepisanie 64 bajtów z jednego
obszaru zewnętrznej pamięci danych do innego:
R5 - licznik bajtów do przepisania DPTR(1) - adres przeznaczenia
DPTR(2) - adres źródła
23
8051
mov R5, #64
mov R7, #High(DHDL) mov R6, #Low(DHDL) mov DPTR, #SHSL
petla:
movx A, @DPTR ; 2 cykle, 1 bajt inc DPTR ; 2 cykle, 1 bajt push DPH ; 2 cykle, 2 bajty push DPL ; 2 cykle, 2 bajty mov DPH, R7 ; 2 cykle, 2 bajty mov DPL, R6 ; 2 cykle, 2 bajty movx @DPTR, A ; 2 cykle, 1 bajt
24
8051
inc DPTR ; 2 cykle, 1 bajt mov R7, DPH ; 2 cykle, 2 bajty mov R6, DPL ; 2 cykle, 2 bajty pop DPL ; 2 cykle, 2 bajty pop DPH ; 2 cykle, 2 bajty djnz R5, petla ; 2 cykle, 2 bajty
Wykonanie jednego obrotu pętli trwa 26 cykli maszynowych!!!! Kod pętli zajmuje 22 bajty
25
DALLAS DS80C320
mov R5, #64
mov DPTR, #DHDL
inc DPS
mov DPTR, #SHSL petla:
movx A, @DPTR ; 2 cykle, 1 bajt inc DPTR ; 3 cykle, 1 bajt inc DPS ; 2 cykle, 2 bajty movx @DPTR, A ; 2 cykle, 1 bajt inc DPTR ; 3 cykle, 1 bajt inc DPS ; 2 cykle, 2 bajty djnz R5, petla ; 3 cykle, 2 bajty
Wykonanie jednego obrotu pętli trwa 17 cykli maszynowych.
Kod pętli zajmuje 10 bajtów
26
BC - licznik słów
HL - wskaźnik źródła
DE - wskaźnik przeznaczenia
Przesłania z automatyczną dekrementacją
LDD - load and decrement M(DE) := M(HL)
HL := HL - 1 DE := DE - 1 BC := BC - 1
jeżeli BC=0, wyzeruj wskaźnik parzystości P/V jeżeli BC≠0, ustaw wskaźnik parzystości P/V
Z80 - przesyłanie bloku danych
27
Przesłania z automatyczną dekrementacją (c.d.)
LDDR - Load, decrement and repeat (dopóki BC ≠0)
LD BC, 500
LD HL, adres_zrodla
LD DE, adres_przeznaczenia LDDR
Z80 - przesyłanie bloku danych
28
8051 - przesłanie bloku danych
R2 - licznik słów
R0 - wskaźnik źródła
R1 - wskaźnik przeznaczenia mov R2, #50
mov R0, #adres_zrodla
mov R1, #adres przeznaczenia petla:
mov A, @R0 mov @R1, A dec R0
dec R1
djnz R2, petla
29
BC - licznik słów
HL - wskaźnik bloku A - szukany wzorzec
Przeszukiwanie z automatyczną dekrementacją CPD - compare and decrement
jeżeli A=M(HL), ustaw wskaźnik zera Z jeżeli A≠M(HL), wyzeruj wskaźnik zera Z HL := HL - 1
BC := BC - 1
jeżeli BC=0, wyzeruj wskaźnik parzystości P/V jeżeli BC≠0, ustaw wskaźnik parzystości P/V
Z80 - przeszukiwanie bloku danych
30
Przeszukiwanie z automatyczną dekrementacją (c.d.)
CPDR - compare, decrement and repeat (dopóki BC≠0 lub nie znaleziono wzorca)
LD BC, 500
LD HL, adres_poczatkowy LD A, wzorzec
CPDR
Z80 - przeszukiwanie bloku danych
31
8051 - przeszukiwanie bloku danych
R2 - licznik słów
R0 - wskaźnik początku R1 - szukany wzorzec
mov R2, #50
mov R0, #adres_poczatkowy mov R1, #wzorzec
petla:
mov A, @R0 dec R0
clr C
subb A, R1
jz znaleziono djnz R2, petla
32
Power management
Monitorowanie niestabilnego napięcia zasilania
• Wczesne ostrzeganie o spadku napięcia zasilania (przerwanie POWER-FAIL
WARNING)
• Zerowanie po włączeniu zasilania (POWER- ON RESET)
• Zerowanie wskutek spadku napięcia zasilania (POWER-FAIL RESET)
• Napięcie referencyjne (bandgap)
• Wyjście z trybu IDLE za pomocą watchdoga
33
Power management
Wczesne ostrzeganie o spadku napięcia
zasilania (przerwanie POWER-FAIL WARNING) Stan napięcia stale monitorowany za pomocą układu napięcia referencyjnego i bloku
analogowego.
Jeżeli napięcie zasilania spadnie poniżej VPFW, generowane jest przerwanie (o ile zostało
uaktywnione)
34
Power management
Wczesne ostrzeganie o spadku napięcia
zasilania (przerwanie) (POWER-FAIL WARNING) Procedura obsługi przerwania zapisuje np.
krytyczne dane do pamięci nieulotnej.
Nawet jeżeli przerwanie zostało zablokowane, jego znacznik jest nadal ustawiany sprzętowo tak długo, jak napięcie zasilania jest niższe niż VPFW.
35
Power management
Wczesne ostrzeganie o spadku napięcia
zasilania (przerwanie) (POWER-FAIL WARNING) Po wykonaniu procedury obsługi przerwania:
1) Zablokować przerwanie
2) Na przemian zerować i testować znacznik PFI, do momentu, aż testowanie wykaże 0 (oznacza to, że VCC > VPFW)
3) Podjąć normalne wykonywanie programu
36
Power management
Zerowanie wskutek spadku napięcia zasilania (POWER-FAIL RESET)
Jeżeli napięcie zasilania spadnie poniżej
wartości VRST, automatycznie generowany jest sygnał zerowania (nie można go zablokować).
Zerowanie po włączeniu zasilania (POWER-ON RESET).
Programowo można stwierdzić, że zerowanie
nastąpiło w wyniku włączenia napięcia zasilania dzięki znacznikowi POR (WDCON.6). Znacznik ten jest ustawiany po POWER-ON RESET.
37
Power saving
Kontroler wykonano w technologii CMOS
Dwa tryby pracy z obniżonym poborem mocy:
IDLE - wstrzymanie wykonywania programu (pracują liczniki, watchdog, port szeregowy oraz monitorowanie napięcia zasilania)
Wyjście za pomocą dowolnego przerwania lub zerowania.
Jeżeli watchdog jest aktywny, trzeba go obsługiwać.
38
Power saving
STOP - wszystkie zegary zatrzymane - stan w pełni statyczny
Wyjście za pomocą dowolnego przerwania
„niezegarowego” (tj. zewnętrznego lub power- fail) lub zerowania.
39
DALLAS 80C320
VPFW - 4.25 - 4.5 V VRST - 4.0 - 4.25 V f = 33 MHz
ACTIVE I = 35 mA
IDLE I = 20 mA
STOP(z BGS) I = 50 μA STOP (bez BGS) I = 1 μA PMM1 (64 takty) I = 12 mA PMM2 (1024 takty) I = 10 mA
40
μC przeciwko μP
Architektura
• Mikroprocesor to jednostka centralna zawarta w jednym układzie scalonym.
• Mikrokontroler to prosty system
mikroprocesorowy zawarty w jednym układzie scalonym.
41
μC przeciwko μP
Zastosowania
• Mikroprocesorów używa się głównie po to, żeby przetwarzać dane w systemach
komputerowych.
• Mikrokontrolerów używa się po to, aby odpowiadały w czasie rzeczywistym na bodźce zewnętrzne (sterowanie urządzeń WE/WY). Dlatego muszą one szybko
przełączać kontekst, tzn. zawiesić jedno
zadanie i rozpocząć wykonywanie innego w odpowiedzi na jakieś wydarzenie zewnętrzne.
42
μC przeciwko μP
Lista rozkazowa
• Mikroprocesory zajmują się głównie
przetwarzaniem danych, toteż potrzebują złożonych trybów adresowania oraz
rozkazów przetwarzania dużej liczby danych
• Mikrokontrolery potrzebują głównie instrukcji do sterowania wejściami i wyjściami.
43
μC przeciwko μP
Lista rozkazowa
• Mikrokontrolery posiadają odpowiednie obwody oraz rozkazy do wykonywania
operacji wejścia-wyjścia, odmierzania czasu lub zliczania, uaktywniania systemu
przerwań i ustalania priorytetów.
• Mikroprocesory zazwyczaj wymagają
dołączenia urządzeń zewnętrznych (np.
układy czasowo-licznikowe, kontrolery przerwań, interfejsy komunikacyjne), aby wykonać podobne operacje.
44
Cykl pracy procesora
IR := M(PC)
PC := PC + 1
Dekodowanie
Wykonanie
fetch execute
45
Jak zwiększyć szybkość działania takiego procesora?
• Poprawa technologii wytwarzania
• Optymalizacja projektu układu.
46
Poprawa technologii wytwarzania
Bardzo kosztowna - miniaturyzacja przyrządów półprzewodnikowych wymaga odpowiedniej
aparatury np. do fotolitografii.
Korzyści mogą być wątpliwe ze względu na gwałtowny wzrost długości połączeń
Przewiduje się, że w 2010 roku łączna długość połączeń w przeciętnym, zaawansowanym
układzie scalonym będzie wynosiła ok. 10 km!
47
Wzrost długości połączeń
Coraz większa liczba tranzystorów w układzie możliwa dzięki miniaturyzacji tranzystorów oraz wzrostowi powierzchni układu scalonego.
48
Cykl pracy procesora
IR := M(PC)
PC := PC + 1
Dekodowanie
Wykonanie
fetch execute
49
Cykl pracy procesora
SKUTEK!!!
W trakcie całego cyklu maszynowego obwody odpowiedzialne za realizację określonego etapu pracują przez stosunkowo krótki czas, a resztę spędzają bezczynnie !
50
Cykl pracy procesora
P D W P
rozkaz 1
rozkaz 2
51
Cykl pracy procesora
P D W
P D W
P D W
rozkaz 1
rozkaz 2
rozkaz 3
Przetwarzanie potokowe (pipelining)
52
Przetwarzanie potokowe
Szybkość działania systemu nie jest już określona przez czas wykonania danego zadania, ale przez czas, który musi
upłynąć od momentu rozpoczęcia tego zadania, do chwili, kiedy można będzie rozpocząć następne zadanie.
Kolejne zadania „wychodzą” z potoku z szybkością znacznie większą niż
wynikałoby to z czasu potrzebnego do wykonania jednego zadania.
53
Przetwarzanie potokowe
Problemy
Właściwy podział potoku na stopnie
Realizacja zadania związanego z każdym stopień powinna trwać mniej więcej tyle samo (ogólna szybkość działania jest ograniczona przez
najwolniejszy stopień).
Każdy stopień powinien być możliwie jak najbardziej niezależny od pozostałych.
Liczba stopni nie może być zbyt wysoka (komplikacja sprzętu i koordynacji między stopniami).
54
Przykład: rozbicie cyklu rozkazowego procesora na poszczególne czynności:
1. Pobranie rozkazu
2. Dekodowanie rozkazu
3. Generacja adresu (argumentu) 4. Pobranie argumentów
5. Wykonanie operacji 6. Zapamiętanie wyniku
7. Aktualizacja zawartości licznika rozkazów
Przetwarzanie potokowe
55
Przetwarzanie potokowe wymaga
odpowiedniej konstrukcji listy rozkazowej RISC - Reduced Instruction Set Computer
Przetwarzanie potokowe
56
Przetwarzanie potokowe
Pobranie rozkazu
Różna długość rozkazów byłaby dużą
komplikacją (dopiero na etapie dekodowania procesor zorientowałby się, że trzeba pobrać kolejny bajt).
Listę rozkazową konstruuje się tak, aby wszystkie rozkazy miały tę samą długość.
57
Przetwarzanie potokowe
Wykonanie rozkazu
Odwołania do zewnętrznej pamięci danych zwykle trwają długo.
Zazwyczaj nie ma rozkazów, które zarówno
czytają, jak i zapisują do pamięci. Rozkazy albo realizują odczyt, albo zapis (LOAD/STORE).
Zdecydowana większość operacji musi się odbywać na rejestrach roboczych, dlatego procesor musi posiadać duży zestaw takich rejestrów.
58
Przetwarzanie potokowe
Nawet po spełnieniu wszystkich tych warunków pojawiają się problemy:
1. Strukturalne
2. Dotyczące danych
3. Dotyczące sterowania wykonaniem programu
59
Przetwarzanie potokowe
Problemy strukturalne:
Konflikt przy próbie dostępu do określonych zasobów procesora
Przykład:
Jeden rozkaz wymaga odczytu danej z pamięci, drugi rozkaz jest w tym czasie pobierany -
rywalizacja o dostęp do szyny danych i adresowej
60
Przetwarzanie potokowe
Problemy dotyczące danych:
Rozkazy znajdujące się w potoku nie są od siebie niezależne, toteż ich częściowe nakładanie się
uniemożliwia poprawne wykonanie.
Przykład: odczyt po zapisie (read after write) ADD R1, R2, R3; R1 = R2+R3
ADD R4, R5, R1; R4 = R5+R1
61
Przykład: rozbicie cyklu rozkazowego procesora na poszczególne czynności:
1. Pobranie rozkazu
2. Dekodowanie rozkazu
3. Generacja adresu (argumentu)
4. Pobranie argumentów (m.in. zawartości R1) 5. Wykonanie operacji
6. Zapamiętanie wyniku (w rejestrze R1)
7. Aktualizacja zawartości licznika rozkazów
Przetwarzanie potokowe
62
Przetwarzanie potokowe
Problemy dotyczące danych:
Odczyt po zapisie (read after write):
Jeden rozkaz produkuje wynik, który będzie
odczytany przez następny rozkaz. Obróbkę tego ostatniego rozkazu należy wstrzymać do
momentu, kiedy wynik będzie dostępny.
63
Przetwarzanie potokowe
Problemy dotyczące danych:
Zapis po odczycie (write after read):
Pierwszy rozkaz odczytuje jakąś daną, drugi coś do niej zapisuje. Jeżeli kolejność zostanie
odwrócona, to pierwszy rozkaz odczyta wartość już zmienioną przez drugi rozkaz.
DIVF R1, R2, R3; dzielenie trwa długo ADDF R2, R5, R4;
64
Przetwarzanie potokowe
Problemy dotyczące danych:
Zapis po odczycie (write after read):
Trudność łatwo zlikwidować, używając w rozkazie drugim innych rejestrów:
DIVF R1, R2, R3;
ADDF R6, R5, R4;
65
Przetwarzanie potokowe
Problemy dotyczące danych:
Zapis po zapisie (write after write):
Kiedy może się zdarzyć ???
66
Przetwarzanie potokowe
Problemy dotyczące danych:
Zapis po zapisie (write after write):
Dwa, niezbyt odległe od siebie, rozkazy wpływają na wartość tych samych znaczników stanu
(przeniesienie, znak, itd.).
Jeżeli po drodze żaden rozkaz z tych znaczników nie korzysta, rezygnujemy z zapisu, który
teoretycznie powinien nastąpić wcześniej.
Jeżeli rozkazy korzystają ze znaczników, trzeba zachować kolejność zapisu.
67
Przetwarzanie potokowe
Problemy dotyczące danych:
Odwołania do zewnętrznej pamięci danych:
Nawet przy zastosowaniu architektury
LOAD/STORE, rozkazy odwołujące się do
zewnętrznej pamięci danych wykonują się długo.
Teoretycznie rozkaz wykonywany jest w jednym cyklu. Zwykle jednak wynik takiej operacji jest
dostępny dopiero po upływie jeszcze jednego lub nawet kilku cykli.
68
Przetwarzanie potokowe
Problemy dotyczące danych:
Odwołania do zewnętrznej pamięci danych:
Rozkaz następujący po operacji LOAD nie może korzystać z rejestru, do którego właśnie
wpisywane są dane z pamięci.
Rozkaz następujący po operacji STORE nie może być operacją LOAD
Tego typu problemy zwykle można rozwiązać za pomocą kompilatora.
69
Przetwarzanie potokowe
Problemy dotyczące sterowania wykonaniem programu:
Skoki bezwarunkowe i warunkowe
Skoki sprawiają kłopoty, bo jeszcze zanim będzie wiadomo czy skok nastąpi, do potoku wchodzą
rozkazy znajdujące się tuż za rozkazem skoku (czyli jakby założono, że skoku nie będzie).
Najgorsze są skoki warunkowe, bo trzeba
sprawdzić warunek i stosunkowo późno ustala się czy skok będzie wykonany
70
Przetwarzanie potokowe
Problemy dotyczące sterowania wykonaniem programu:
Skoki bezwarunkowe i warunkowe
Konieczność opróżnienia potoku z rozkazów, których obróbkę już rozpoczęto i pobrania
nowych, to duże opóźnienie.
Skoki mogą stanowić do 15% programu
71
Przetwarzanie potokowe
Problemy dotyczące sterowania wykonaniem programu:
Skoki opóźnione
jump (warunek)
add ...
72
Przetwarzanie potokowe
Problemy dotyczące sterowania wykonaniem programu:
Skoki opóźnione
Po pobraniu skoku pobiera się następny rozkaz (ADD).
Podczas pobierania testowany jest warunek skoku i uaktualniany licznik rozkazów.
Wykonanie następnego rozkazu (ADD) i
jednoczesne pobranie właściwego rozkazu (po decyzji czy skok nastąpi, czy nie).
73
Przetwarzanie potokowe
Problemy dotyczące sterowania wykonaniem programu:
Skoki opóźnione
W rezultacie skok został opóźniony o 1 cykl (najpierw wykonano rozkaz następny).
Jeżeli warunek skoku nie został spełniony, pobierany jest kolejny rozkaz (po ADD).
Jeżeli warunek skoku był spełniony, rozkaz ADD został wykonany niepotrzebnie.
74
Przetwarzanie potokowe
Problemy dotyczące sterowania wykonaniem programu:
Skoki opóźnione
W programie zwykle przed skokiem występuje kilka rozkazów, które wykonywane są bez
względu na to czy warunek skoku jest spełniony, czy nie.
Jeden z nich można ustawić po skoku (o ile nie wpływa na warunek).
75
Przetwarzanie potokowe
Problemy dotyczące sterowania wykonaniem programu:
Skoki opóźnione
Jeżeli potok ma więcej niż dwa stopnie, też można zastosować skoki opóźnione, tyle że trzeba je tak skonstruować, żeby było jak
najszybciej było wiadomo czy skok nastąpi.
Dlatego warunki muszą być bardzo proste.
76
Przetwarzanie potokowe
Problemy dotyczące sterowania wykonaniem programu:
Przewidywanie skoków
Błędne założenie dotyczące skoku, to spore opóźnienie.
Można próbować oszacować czy skok nastąpi.
Wszystkie rezultaty uzyskane po oszacowaniu na oznacza się jako próbne. Jeżeli szacunek okazał się błędny, są one usuwane.
77
Przetwarzanie potokowe
Jak przewidywać czy nastąpi skok???
Adres
Prawdopodobieństwo wystąpienia skoku zależy od tego czy skok wykonywany jest do tyłu, czy do przodu.
Skok do tyłu, to najczęściej pętla, która wykonuje się przynajmniej kilka razy.
Statystycznie, wykonuje się 90% skoków w tył i ok. 50% skoków w przód.
78
Przetwarzanie potokowe
Jak przewidywać czy nastąpi skok???
Historia skoku
Rejestrowanie za każdym razem czy skok się odbył, czy nie. Decyzja podejmowana na
podstawie zebranych informacji.