background image

 

LISTA ROZKAZÓW PROCESORA 
 
Jest funkcjonalnie pełna – nie ważna jest budowa listy rozkazów, ile jest 

rozkazów ani jakie są, ale każdy program da się opisać i wykonać tym 
procesorem – co byśmy nie wymyślili, da się zrobić, ograniczenia to głównie 

czas wykonania i brak pamięci. 
Podział ze względu na budowę listy rozkazów: 

-  CISC, idea – jak najwięcej rozkazów (300, 500...), sporo działań na 

danych -> wykonanie trwa długo; 

-  RISC – lista okrojona – mało rozkazów (około 30), rozkazy proste i 

szybko się wykonują -> lepsze od CISC. 

W 8051 jest 111 rozkazów. 
 

GRUPY ROZKAZÓW 
 

-  rozkazy przesłań – rejestr -> rejestr, pamięć -> rejestr, ... – 

przemieszczanie danych 

-  rozkazy arytmetyczne 
-  rozkazy logiczne 
-  rozkazy sterujące 

 

Wykonanie rozkazów w procesorze: 

 

-  pobranie rozkazu z pamięci (FETCH) – PC wskazuje, który rozkaz i 

pobieramy do procesora; 

 
-  dekodowanie – co do zrobienia, skąd wziąć dane, gdzie przesłać wyniki; 

 

-  liczenie adresu efektywnego, może być dostęp do pamięci albo układów 

I/O, powiązane z trybami adresowania procesora – sposób dostępu do 
danych (zasobów): 

  tryb rejestrowy – dane są w rejestrach ogólnego przeznaczenia, wynik 

może trafić do rejestru – b. szybki, 

  tryb rejestrowy pośredni – w rejestrze jest adres, spod którego trzeba 

pobrać dane, nie trzyma adresu wprost, wynik tak samo - adres, gdzie 
umieścić wynik, 

  tryb bezpośredni – adres podany po kodzie rozkazu, mamy dany 

adres efektywny, nie trzeba go liczyć, ale odwołujemy się do innych 
elementów systemu -> dłużej to trwa niż w trybie rejestrowym, 

  tryb natychmiastowy – dane zawarte wprost w rozkazie (dane 

szczątkowe) 

  tryb bazowo-indeksowy – jest odmianą 

trybu rejestrowego pośredniego, przydaje 

się, gdy konstrukcje programistyczne są tak 
poukładane (np. tablica). 

background image

 

 

-  pobranie operandów (operands fetch); 
-  wykonanie (execute); 
-  przechowanie rezultatów (results store). 

 

Ile czasu jest potrzebne na wykonanie rozkazu? Tam, gdzie jest kontakt z 
pamięcią, I/O – 3*T. W sumie około 14*T. 

Jak to przyspieszyć? 
 

S1  S2  S3  S4  S5  S6  S1  S2  S3  S4  S5  S6 

rozkaz 1 

rozkaz 2 

 

 

 

S1  S2  S3  S4  S5  S6  3T 

 

S1  S2  S3  S4  S5  S6   

3T 

S1  S2  S3  S4  S5  S6   

 

18T 

 
Wady – niektóre S trwają T, a inne 3T. Rozwiązanie – wszystko po 3T. Wada – 

wykonanie po 18T, ale za to kolejne rozkazy są wykonywane po 3T, a to już 
całkiem nieźle :) 

Inny problem – PC jest tylko jeden, skąd wziąć kolejne? 
 

 

 

 

S1  S2  S3  S4  S5  S6  3T 

 

S1  S2  S3  S4  S5  S6   

3T 

S1  S2  S3  S4  S5  S6   

 

18T 

 

Rozkaz następny – ten po bieżącym wykonywanym, wtedy 1 licznik PC 
wystarcza (jeśli program jest wykonywany liniowo). Jest to przetwarzanie 

potokowe. 
 

Liniowość może być zachwiana – poprzez: 
 

-  skoki: 

  bezwarunkowe – jeśli trzeba zmienić porządek programu, to to się 

stanie 

  warunkowe – zmiana porządku programu zależy od warunku (np. 

overflow) 

 

-  wysyłanie procedur funkcji: 

  warunkowe (testowanie flag, znaczników). 

 
Skoki – kiedy znamy nowe miejsce wykonania? 3. etap – liczenie adresu 

efektywnego, dla skoku warunkowego – w 5. etapie (wykonanie), najpierw 
testowanie warunków. 

 
Jeśli wystąpi skok to procesor może: 

 

 

?

  

PC

 

PC

 

background image

 

1)  przeczekać – dla skoku bezwarunkowego czekamy do S3, dla 

warunkowego do S5 (i tracimy takt procesora jeśli skoku nie ma); 

 

2)  nie martwię się – pobieramy dalsze rozkazy „bez zastanowienia”, bo 

dla >0,5 przypadków skoków nie ma, poza tym jak jednak będzie skok i 

kilka taktów pójdzie na marne to nic strasznego się nie stanie. Jednak w 
tym podejściu następuje przepływ bezużytecznych informacji; 

 

3)  ORMO czuwa :) – wymagana specjalna konstrukcja procesora, procesor 

wykonuje działania potokowe i jeszcze jak pozna miejsce nowego 
działania programu to buforuje te rozkazy bez przetwarzania ich. Jeśli 

skok się wykonał – to już mamy te rozkazy i je dekoduje, itd. – 
przyspieszone działanie. 

 
Przetwarzanie potokowe – wiele kolejnych rozkazów realizowanych nie do 

końca równolegle („na zakładkę”).