background image

Architektura komputerów – Procesor 
 

 

 Architektura procesora

 

 

 

W  architekturze  procesora  można  wyróżnić  dwa  podstawowe 

elementy funkcjonalne (patrz rys.1):  

 

jednostkę wykonawczą, której zadaniem jest wykonywanie 

operacji arytmetycznych i logicznych w zależności od 

wewnętrznych sygnałów sterujących, 

 

jednostkę sterującą, której zadaniem jest dekodowanie z 

programu rozkazu i na jego podstawie generowanie 

wewnętrznych i zewnętrznych sygnałów sterujących. 

background image

Architektura komputerów – Procesor 
 

 

 

Rys.1. Ogólny schemat funkcjonalny procesora  
 

 

background image

Architektura komputerów – Procesor 
 

 

Rejestry 

 

Zgodnie ze schematem blokowym mikroprocesora, zarówno 

jednostka arytmetyczno-logiczna, jak i układ sterowania 

współpracują z określonym zestawem rejestrów. Zawartość pewnej 
części rejestrów z tego zestawu może być zmieniana w wyniku 

wykonania przez procesor określanej instrukcji. Rejestry takie 

nazywamy 

rejestrami dostępnymi programowo

. Pozostałe rejestry 

są niedostępne dla użytkownika i ich zestaw nie jest zwykle znany.  

 

 

 
 

background image

Architektura komputerów – Procesor 
 

 

 

 

rejestrach dostępnych programowo

 występują takie typy 

rejestrów, których odpowiedniki znajdują się praktycznie w każdym 
procesorze. Ich pojemność czy ilość może się zmieniać, jednak 

wykonywane zadania pozostają takie same.  

 

Na rysunku 2. przedstawiono przykładowy zestaw rejestrów 

oparty na prostym 

procesorze 8086/8088

.  

 

 

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

 

Zasadniczo  każdy  z  rejestrów  ma  swoje  zadanie  do  spełnienia, 

każdy  z  nich  pełni  swoją  rolę  i  dają  się  one  pogrupować  według 

podobnych zadań:  

 

rejestry powszechnego stosowania, 

 

rejestry segmentowe, 

 

rejestry wskaźnikowe i indeksowe, 

 

wskaźnik rozkazów, 

 

rejestr znaczników (rejestr flagowy). 

background image

Architektura komputerów – Procesor 
 

 

 

Rys.2. Rejestry dostępne programowo procesora 8086/8088  

 

background image

Architektura komputerów – Procesor 
 

 

 

Rejestry powszechnego zastosowania 

 

Osiem rejestrów powszechnego zastosowania (każdy o długości 

16 bitów) są używane do najczęściej stosowanych rozkazów, jako 

miejsce, skąd pobieramy 

dane

miejsce przeznaczenia, wskaźniki 

do pamięci i wreszcie jako liczniki

. Każdy z tych ośmiu rejestrów 

może być załadowany zarówno z pamięci, jak też z nich można do 

pamięci załadować, można ich używać do operacji arytmetycznych i 

logicznych. Pomimo wspólnych cech rejestrów powszechnego 

zastosowania, każdy znich, z osobna, ma swoją osobowość .  
 

 

background image

Architektura komputerów – Procesor 
 

 

 

 

 

Rejestr AX

 - znany jako akumulator. Używany zawsze tam, gdzie 

zachodzi 

mnożenie

dzielenie

. Jest to najbardziej efektywny rejestr 

używany  w  operacjach  arytmetycznych,  logicznych,  przesyłania 

danych.  Dolna,  8-bitowa  część  rejestru 

AX

  nosi  nazwę  AL  (ang.  A-

Low), część górna, też 8-bitowa, nosi nazwę 

AH

  

(ang. A-High). Taki podział rejestru na dwie 8-bitowe części jest 
wygodny podczas działań na danych l-bajtowych, tworząc dwa 

niezależne rejestry.

  

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

 

 

 

 

Rejestr BX

 - może wskazywać położenie, lokalizację w pamięci. 

16-bitowa wartość zapamiętana w tym rejestrze może być po części 
użyta do adresowania położenia w pamięci. Domyślnie rejestr 

BX

wraz z rejestrom segmentowym 

DS

 jest używany jako wskaźnik 

pamięci. Rejestr 

BX

 może być traktowany jako dwa 8-bitowe 

rejestry  

BH

 i 

BL

.  

 

 

 
 

 

background image

Architektura komputerów – Procesor 
 

 

10 

 

 

 

 
Rejestr CX

 - używa się go głównie jaka licznika odliczającego 

powtarzające się fragmenty programów bądź pojedynczych 

rozkazów. Rejestr 

CX

 może być traktowany jaka dwa 8-bitowe 

rejestry 

CH

 i 

CL

.  

 

 
 

 

 
 

background image

Architektura komputerów – Procesor 
 

 

11 

 

 
 

 

Rejestr  DX

  -  jego  głównym  przeznaczeniem  jest  użycie  go  jako 

wskaźnika  adresów  w  rozkazach  wejścia/wyjścia.  Nie  ma  bowiem 

innej  drogi  do  zaadresowania  portów,  aniżeli  użycie  rejestru 

DX

Rejestr 

DX

  może  być  również  użyty  w  operacjach  mnożenia  i 

dzielenia. Może on być traktowany jako dwa 8-bitowe rejestry 

DH

 i 

DL

.  

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

12 

Rejestry wskaźnikowe i indeksowe 

 

Rejestr SI

 - podobnie jak rejestr 

BX

, może być użyty juko 

wskaźnik pamięci. 

    

Rejestr  DI

 - jest bardzo podobny w użyciu do rejestru 

SI

. Może 

być użyty jako wskaźnik pamięci; ma specjalne własności, gdy 

zastanie zastosowany w rozkazach związanych z łańcuchami 
znakowymi. Rejestry 

DI

 i 

SI

 wespół z rejestrem 

DS

 związane są z 

adresowaniem łańcuchów znakowych, z tym że rejestr 

SI

 występuje 

zawsze, gdy adresowanie dotyczy źródła danych, zaś rejestr 

DI

 

występuje wówczas, gdy adresowanie to dotyczy przeznaczenia 
(celu). 

background image

Architektura komputerów – Procesor 
 

 

13 

 

  
 

Rejestr  BP

  -  podobnie  jak 

BX,  SI,  DI

  może  być  użyty  jako 

wskaźnik pamięci, ale z pewną różnicą. Podczas gdy rejestry 

BX, SI, 

DI

,  wskazując  na  adres  w  pamięci  odnoszą  się  względem  rejestru 

segmentowego 

DS

,  to  rejestr 

BP

,  służąc  za  wskaźnik  pamięci, 

odnosi  się  do  rejestru 

SS

,  rejestru  segmentu  stosu.  Adresowanie 

poprzez  segment  stosu,  stosowane  zwłaszcza  w  procedurach 
języków C, Pascal, dokonuje się właśnie przy użyciu rejestru 

BP

.  

 

 

 
 

background image

Architektura komputerów – Procesor 
 

 

14 

 

 

 

Rejestr SP

 - znany jest jako wskaźnik stosu i należy do ostatnich 

rejestrów  powszechnego  stosowania.  Rejestr 

SP

  daje  położenie 

bieżącego wierzchołka stosu i jest analogiczny do 

IP

.  

 

 

 

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

15 

 
 
Rejestry segmentowe 

  

Tak  jak  rejestry  powszechnego  stosowania  odgrywają  swoje 

specyficzne  role,  tak  też  rejestry  segmentowe  przeznaczone  są  do 
wyspecyfikowanych zadań.  

 

 
 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

16 

 

Rejestr CS

 - wskazuje kod programu, rejestr 

DS

 wskazuje dane, 

rejestr 

SS

  związany  jest  ze  stosem,  zaś  rejestr 

ES

  (ang.  extra 

segment)  jest  dodatkowym  rejestrem,  który  może  być  gdzieś 
potrzebny. 

Rejestr 

CS

 

wskazuje 

na 

początek  

64  KB  bloku  pamięci  lub  na  segment  kodu,  w  którym  rezyduje 

następny do wykonania rozkaz. Dokładne położenie tego rozkazu w 
segmencie  kodu  wskazywane  jest  poprzez  offset
,  którego  wartość 

zawiera  rejestr 

IP

.  Pełny  adres  położenia  rozkazu  w  segmencie 

kodu ma postać: 

CS:IP

. Procesor 8086 nigdy nie pobiera rozkazów z 

segmentu  innego  niż  segment 

CS

.  Rejestr 

CS

  maże  być  zmieniany 

przez niektóre rozkazy, włączając w to rozkazy skoków, wywołań i 

powrotów. Rejestru tego nie można ładować bezpośrednio. 

 

background image

Architektura komputerów – Procesor 
 

 

17 

 

 

 

Rejestr  DS

  - 

wskazuje  początek  segmentu  danych

,  czyli  64  KB 

blok  pamięci  zawierający  argumenty.  Zazwyczaj  rejestrami 

stowarzyszanymi  z 

DS

,  określającymi  offset  w  tym  segmencie  są 

rejestry 

BX, SI

 lub 

DI

.  

 

Rejestr  ES

  - 

wskazuje  początek  64  KB  bloku  pamięci

,  zwanego 

dodatkowym  segmentem.  Nie  jest  on  przypisany  do  pojedynczych 

zastosowań; stosowany jest do różnych pojawiających się potrzeb

.  

Offset tablica bądz inn

struktura danych

 zawierająca informacje o odległości od poczatku pamięci. 

W inżynierii komputerowej używana jest w programowaniu niskopoziomowym (assemblingu). Offset najczęściej jest dodawany do 
adresu bazowego i tworzy z nim adres absolutny. 

Przykład dla tablicy znaków zawierajacej litery abcdef elemnet d ma offset 3 gdyż znajduje się na miejscu nr 3 (numeracja od zera). 

background image

Architektura komputerów – Procesor 
 

 

18 

 

 

 

Rejestr  SS

  - 

wskazuje  początek  64  KB  bloku  pamięci

,  zwanego 

segmentem  stosu.  Wszystkie  rozkazy,  które  niejawnie  używają 
rejestru 

SP

 - odkładanie na stos, zdejmowanie ze stosu, wywołania 

i  powroty  -  używają  segmentu  stosu,  ponieważ  rejestr 

SP

  jest 

zdolny  tylko  do  adresowania  pamięci  w  obszarze  segmentu  stosu 

SS

. Również rejestr BP - o czym była już mowa - odnosi się też do 

segmentu  stosu;  stąd  też  rejestr 

BP

  jest  używany  do  adresowania 

parametrów i zmiennych zawartych na stosie.  

 

 

 

background image

Architektura komputerów – Procesor 
 

 

19 

 

Wskaźnik rozkazów 

 

Rejestr  IP

  - 

nazywany  jest  wskaźnikiem  rozkazów

  i  zawiera 

zawsze offset  pamięci,  w którym zawarty  jest następny rozkaz do 

wykonania.  Bazowy  segment  kodu  zawarty  jest  w  rejestrze 

CS

Pełny  adres  logiczny  wykonywanego  rozkazu  wskazywany  jest 
więc przez parę rejestrów 

CS:IP

.  

 

 

 
 

 

background image

Architektura komputerów – Procesor 
 

 

20 

 

 

Gdy  jeden  rozkaz  jest  wykonywany,  wskaźnik  rozkazów 

ustawiany  jest  do  następnego  adresu  pamięci,  pod  którym 
znajduje się rozkaz do wykonania. 
Zazwyczaj następnym rozkazem 

w  pamięci  jest  właśnie  rozkaz,  który  będzie  wykonywany. 

Jednakże  niektóre  rozkazy,  takie  jak  rozkazy  wywołania  i  skoku, 
mogą  spowodować  rozgałęzienie  w  wykonywaniu  kodu  programu, 

a  tym  samym  w  rejestrze 

IP

  nie  wystąpi  kolejna  wartość  offsetu 

wskazująca następny rozkaz do wykonania.  

 

 
 

 

background image

Architektura komputerów – Procesor 
 

 

21 

Rejestr znaczników 

  

Rejestr  znaczników  (rejestr  flagowy)  -  FLAGS

  jest  czternastym 

rejestrem procesora 8086. Rejestr ten jest zbiorem poszczególnych 

bitów kontrolnych, zwanych znacznikami (flagami), które wskazują 
wystąpienie  określonego  stanu.  Każdy  znacznik  jest  bitem  w 

rejestrze,  który  wskazuje  czy  wystąpił  określony  stan.  Znaczniki 

mogą  być  wykorzystywane  zarówno  przez  procesor,  jak  też  i 

programistę na dwa sposoby:  

 

ustawienie znacznika dla zapamiętania określonego stanu po 

wykonaniu rozkazu 

 

testowanie znacznika celem umożliwienia decyzji o sposobie 

dalszego postępowania (przetwarzania danych) 

background image

Architektura komputerów – Procesor 
 

 

22 

 

Znaczniki stanu: 

  

CF 

- flaga przeniesienia lub pożyczki, ustawiana przy przekroczeniu 

zakresu długości słowa, w którym zapisywany jest wynik (1 

wystąpiło przeniesienie);  

PF

 - flaga parzystości (1) wskazuje na parzystą lub nieparzystą 

liczbę bitów o wartości jedynki;  

ZF

 - flaga zera - sygnalizująca, że wynikiem ostatnio wykonywanej 

operacji jest zero;  

 
 

 

 

background image

Architektura komputerów – Procesor 
 

 

23 

 

PF 

- flaga przeniesienia pomocniczego jest wykorzystywana przy 

działaniach na liczbach w kodzie BCD. Ustawiana jest gdy następuje 

przeniesienie lub pożyczka z najstarszego bitu pierwszej tetrady 
wyniku;  

SF 

- flaga znaku, ustawiana gdy najstarszy bit wyniku jest równy 1 

(operacje liczb ze znakiem - kod U2);  

OF

 - flaga przepełnienia, sygnalizująca przekroczenie zakresu dla 

operacji arytmetycznych (operacje liczb ze znakiem - kod U2);  

 

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

24 

 

Znaczniki kontrolne:  

 

TF-

 znacznik pracy krokowej - ustawienie 1 pozwala na wykonanie 

przez procesor po wykonaniu każdego rozkazu przerwania i 
przejście do specjalnych procedur obsługi;  

IF 

- znacznik zezwolenia na przerwanie - ustawienie 1 powoduje 

odblokowanie systemu przerwań w procesorze (0 - procesor 
ignoruje przerwania);  

DF

 - znacznik kierunku - umożliwia realizację przetwarzania 

łańcuchów (ciągu słów) przy rosnących adresach (1) lub malejących 

adresach (0).  

 

 
 

background image

Architektura komputerów – Procesor 
 

 

25 

ALU 

 

Blok  arytmetyczno-logiczny  ALU 

(ang.  arithmetic-logical  unit)

 

jest często nazywany układem wykonawczym procesora, ponieważ 

wykonuje on większość rozkazów zlecanych procesorowi. 

Blok ALU

 

jest  uniwersalnym  układem  kombinacyjnym,  który  realizuje 

operacje 

matematyczne 

logiczne 

zależności 

od 

zaprogramowanej  operacji,  tj.  rozkazu  umieszczonego 

programie.  

 

 
 

 

background image

Architektura komputerów – Procesor 
 

 

26 

Rozkazy mogą dotyczyć  

a) operacji dwuargumentowych:  

 

operacji arytmetycznych (dodawanie i odejmowanie) 

 

operacji logicznych (sumowanie mnożenie, sumowanie mod 2, 

itp.) 

b)  operacji  jednoargumentowych  (np.  negowanie  bitów  lub 
przesuwanie 

   zawartości rejestrów) 

Na  rys.  3.  przedstawiono  oznaczenie  wejść  i  wyjść  bloku 

ALU

Pośród  sygnałów  wejściowych  można  wyróżnić  dwie  ich  grupy: 
wejścia 

informacyjne

 i wejścia 

sterujące

.  

 

background image

Architektura komputerów – Procesor 
 

 

27 

Na wejścia informacyjne podawane są dwa słowa (A

0

– A

i B

0

 

–  B

3

),  które  są  argumentami  wykonywanej  operacji.  W 

zależności  od  długości  słowa  stosowanego  w  danym  procesorze 

mówi się także o liczbie bitów ALU.  

 

Rys. 3. Oznaczenie końcówek 4-bitowego ALU  

Wejścia  sterujące  S

0

  –  S

3

   i  M  służą  do  programowania 

funkcji wykonywanych przez układ.  
 

background image

Architektura komputerów – Procesor 
 

 

28 

 

 

Układ sterowania 

 

Zwykle lista rozkazów procesora zawiera 

rozkazy proste

, które 

procesor wykonuje w jednym kroku (np. rozkaz dodawania dwóch 
liczb ) oraz złożone, wykonywane w kilku krokach (na przykład 

rozkazy mnożenia i dzielenia są wykonywane jaka ciąg dodawań i 

przesuwań).  
    

W  celu  zapewnienia  właściwego  wysterowania  układu  procesora 

trzeba  zapewnić  odpowiednie  sekwencje  słów  podawanych  na 

wejścia sterujące układu 

ALU

.  

background image

Architektura komputerów – Procesor 
 

 

29 

Do  tego  celu  stosuje  się  specjalne  układy,  które  są  złażonymi 

automatami  sekwencyjnymi.  Przy  projektowaniu  układów,  które 

mają  wymuszać  odpowiednie  pobudzenia  układów  wykonawczych 

występuje szereg trudności:  

 

 

dla wymaganej liczby wykonywanych rozkazów automaty 

sterujące moją dużą liczbę stanów; 

 

wymagane jest zapewnienie synchronizacji pracy układu 

sterowania i układu wykonawczego, tj. konieczność 

uwzględniania, podczas projektowania układu logicznego, czasu 

wykonywania poszczególnych operacji. 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

30 

 

Aby  przezwyciężyć  te  trudności  poszukiwano  od  dawna 

efektywnych  metod  projektowania  układów  sterujących.  W 
zasadzie spotyka się dwa typy układów sterowania:  

 

generatory sekwencji budowane ze standardowych układów 

logicznych, 

 

układy mikro-programowane

Te  ostatnie  znalazły  największe  praktyczne  zastosowanie  w 

systemach  komputerowych  i  chociaż  jest  to  znana  od  dawna  
(1951  r)  koncepcja  podana  przez  Wilkesa,  to  dopiero  możliwości 

stworzone  przez  technologię  LSI  pozwoliły  praktycznie  ją 

zastosować.

  

  

background image

Architektura komputerów – Procesor 
 

 

31 

Cykl rozkazowy procesora 

 

 

 
Realizując program, 

system mikroprocesorowy

 wykonuje pewne 

powtarzające  się  czynności,  polegające  na  cyklicznym  pobieraniu 

kodów rozkazów z pamięci i wczytywaniu ich do układu sterowania 
mikroprocesora,  a  następnie  realizacji  rozkazu,  którego  kod  został 

pobrany.  W  cyklu  tym  możemy  wyróżnić 

dwie  fazy

  zwane: 

fazą 

pobrania (ang. fetch)

 i 

fazą wykonania (ang. execution

).  

 
 

 

background image

Architektura komputerów – Procesor 
 

 

32 

Schematycznie następstwo kolejnych faz przedstawia rysunek 4.  

 

Rys.4. Fazy cyklu rozkazowego  

 

Faza pobrania

 polega na pobraniu kodu rozkazu z komórki 

pamięci o adresie przechowywanym w 

liczniku rozkazów

, a 

następnie na umieszczeniu tego kodu w 

rejestrze rozkazów

 

znajdującym się w układzie sterowania mikroprocesora.  

background image

Architektura komputerów – Procesor 
 

 

33 

 

Kod rozkazu przesyłany jest do mikroprocesora magistralą 

danych. Następnie zawartość licznika rozkazów jest modyfikowana 

tak, aby wskazywał on na kolejny kod rozkazu

 

przeznaczony do 

pobrania. 

Po zakończeniu fazy pobrania następuje faza wykonania

Polega ona na zdekodowaniu kodu rozkazu znajdującego się w 

rejestrze rozkazów, czyli stwierdzeniu, jaki to rozkaz. Po 

zdekodowaniu kodu rozkazu układ sterowania wytwarza 

wewnętrzne lub zewnętrzne sygnały sterujące realizujące dany 

rozkaz.  

 

 

background image

Architektura komputerów – Procesor 
 

 

34 

 

Kolejne etapy realizacji fazy pobrania i fazy wykonania rozkazu 

można przedstawić następująco:  

 

A. Faza pobrania  

1. Adresowanie czyli podanie zawartości licznika rozkazów na 

magistralę adresową.  

2. Wczytanie zawartości zaadresowanej komórki pamięci do 

rejestru rozkazów mikroprocesora  

3. Zwiększenie zawartości licznika rozkazów 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

35 

 

 

B. Faza wykonania  

4. Zdekodowanie kodu rozkazu i wytworzenie sygnałów 

sterujących realizujących dany rozkaz. 

Obieg  informacji  dla  fazy  pobrania  i  wykonania  przedstawiony  jest 

na rysunku 5.  

 

 

background image

Architektura komputerów – Procesor 
 

 

36 

 

 
Rysunek 5. Schemat przepływu informacji przy pobieraniu kodu rozkazu  

 

background image

Architektura komputerów – Procesor 
 

 

37 

 

 

Oczywiście w przypadku kodów rozkazów zajmujących kilka 

komórek pamięci etapy od 1 do 3 muszą być kilkakrotnie 

powtórzone, zanim zrealizowane zostanie ostateczne wykonanie 

rozkazu

.  

Realizacja wszystkich wymienionych etapów wykonania rozkazu 

tworzy pewien cykl, zwany od nazwiska jego twórcy cyklem von 

Neumana.  

    

 

 

background image

Architektura komputerów – Procesor 
 

 

38 

 

Czas trwania fazy pobrania rozkazu zależy od rodzaju procesora 

i rodzaju rozkazu. Jeśli procesor jest 8-bitowy i rozkaz zawiera 8-

bitowy kod operacyjny rozkazu i 16-bitowy adres argumentu, to 

faza pobrania rozkazu składa się z 3 cykli maszynowych odczytu 

pamięci:  

 

odczytu kodu operacyjnego (faza pobrania rozkazu), 

 

odczytu jednego bajtu adresu, 

 

odczytu drugiego bajtu adresu

 
 

 

 

background image

Architektura komputerów – Procesor 
 

 

39 

 

 

Jeśli  procesor  (i  rozkaz)  jest  32-bitowy,  to  zarówno  kod 

operacyjny,  jak  i  adres  argumentu  można  odczytać  z  pamięci  w 
jednym  cyklu  maszynowym.  Pobranie  argumentu  może  być  zatem 

jednocyklowe  lub  wielocyklowe.  Często  argument  ma  długość 

równą długości słowa w pamięci i wówczas pobranie odbywa się w 
jednym cyklu.  

 

 

 
 

 

 

background image

Architektura komputerów – Procesor 
 

 

40 

 

 

Ale  czasem  można  spotkać  argumenty  o  znacznej  długości.  

Na  przykład  w  16-bitowych  mikrokomputerach  stosowane  są 
nawet 

80-bitowe 

argumenty 

(argumenty 

operacji 

zmiennopozycyjnych). 

Argument 

takiej 

długości, 

mikroprocesorach  16-bitowych,  jest  pobierany  w  5  cyklach 
odczytu pamięci.  

 

 
 

 

 

background image

Architektura komputerów – Procesor 
 

 

41 

Dla  zilustrowania  podanego  opisu  rozpatrzono  sposób 

wykonania 

programu dodawania dwóch stałopozycyjnych liczb 16-

bitowych

  w 

komputerze  16-bitowym

.  Kod  rozkazowy  ma  długość 

12  bitów

,  a  adres  jest 

20-bitowy

.  Założono,  że  komórka  pamięci 

zawiera 

16  bitów

.  Pozwala  to  na  umieszczenie  zarówno  kodu 

rozkazowego,  jak  i  adresu  w 

2

  komórkach  pamięci  (razem 

32 

bity

). Założono ponadto, że:  

 

adres pierwszego rozkazu programu wynosi 

300,

 

 

argumenty operacji znajdują się w komórkach pamięci o 

numerach 

ADR1=841

 i 

ADR2=915

 

wynik operacji powinien zostać zapisany do komórki pamięci o 

adresie 

ADR2

background image

Architektura komputerów – Procesor 
 

 

42 

 

Rys. 6. Mapa pamięci i zawartości rejestrów procesora dla przykładowego programu  

background image

Architektura komputerów – Procesor 
 

 

43 

 

Na  rysunku  6  pokazano  mapę  pamięci  programu  i  zawartości 

rejestrów  procesora  dla  omawianego  przypadku.  Program  składa 

się z 4 rozkazów:  

 

rozkazu odczytu pierwszego argumentu i zapisania go do 

rejestru A, 

 

rozkazu odczytu drugiego argumentu i zapisania go do  

rejestru B, 

 

rozkazu dodania obu argumentów, 

 

rozkazu przesłania wyniku do pamięci. 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

44 

 

Celem pokazania zmian zachodzących w rejestrach procesora, w 

czasie  wykonywania  tego  programu,  przedstawiono  zawartości 
rejestrów 

A,  B,  PC,  AD

  i 

RR

  w  kolejnych  fazach  wykonywania 

programu.  Dwa  pierwsze  rozkazy  składają  się  z  trzech  cykli 

maszynowych:  

1. pobrania kodu operacyjnego oraz 4 bitów adresu,  
2. pobrania dalszych 16 bitów adresu,  

3. odczytu argumentu. 

Rozkaz  dodawania  nie  wymaga  dostępu  do  pamięci  oprócz 

pobrania kodu rozkazu, ponieważ  jest to rozkaz z argumentami w 

rejestrach. Dlatego jest to 

rozkaz jednocyklowy

. Pozostałe rozkazy 

są rozkazami 

trzycyklowymi.

  

 

background image

Architektura komputerów – Procesor 
 

 

45 

Lista rozkazów i tryb adresowania 

 

 

 

Komputer,  będący  systemem  mikroprocesorowym,  przetwarza 

informacje  zgodnie  z  wykonywanym  programem.  Program  jest 

ciągiem  instrukcji  realizujących  pewien  algorytm  działania 
systemu.  W  pamięci  systemu  mikroprocesorowego  program 

przechowywany  jest  w  postaci  binarnych  kodów  instrukcji 

maszynowych (rozkazów) właściwych dla danego procesora.  

 

 

 

background image

Architektura komputerów – Procesor 
 

 

46 

Lista rozkazów 

 

   

Określenie:

 Rozkazem (instrukcją maszynową) 

nazywamy najprostszą operację, której wykonania 

programista może żądać od procesora. 

 

Sposób  realizacji  rozkazu  nie  jest  istotny  dla  użytkownika 

systemu  i  z  reguły  nie  jest  znany.  Nawet  jeżeli  wiemy,  że  dany 

rozkaz  jest  realizowany  jako  ciąg  prostszych  operacji,  zwanych 
mikrooperacjami  czy  mikrorozkazami,  to  i  tak  nie  mamy  żadnego 

wpływu na sposób realizacji rozkazu.  

 

background image

Architektura komputerów – Procesor 
 

 

47 

Rozkazy  są  więc  najprostszymi  operacjami,  których  możemy 

używać  przy  tworzeniu  programów. 

Tworzenie  programów 

bezpośrednio  przy  pomocy  instrukcji  maszynowych  jest  bardzo 

efektywne  jednak  dość  żmudne  i  nie  nadaje  się  do  tworzenia 
bardzo  rozbudowanych  programów

.  W  takich  przypadkach 

używamy  tak  zwanych  języków  wysokiego  poziomu  (np.  Pacal, 

C++,  itp.),  w  których  jednej  instrukcji  odpowiada  wiele  instrukcji 
maszynowych.Zestaw 

instrukcji 

maszynowych 

zależy 

od 

konkretnego procesora. 

 

Określenie:

 Listą rozkazów nazywamy zestaw wszystkich 

instrukcji maszynowych (rozkazów), jakie potrafi wykonać 

dany procesor. 

  

 

background image

Architektura komputerów – Procesor 
 

 

48 

 

Rozkazy  tworzące  listę  rozkazów  można  podzielić  na  kilka 

podstawowych grup, w zależności od ich przeznaczenia:  

1. rozkazy przesłań,  

2. rozkazy arytmetyczne i logiczne,  

3. rozkazy sterujące wykonywaniem programu,  

4. rozkazy sterujące pracą procesora

Rozkazy przesłań

 są najczęściej wykonywanymi rozkazami. Nie 

zmieniają one wartości informacji, natomiast przenoszą ją z miejsca 

na miejsce. Ich duża częstotliwość wykonywania jest dość 

oczywista. Jeśli chcemy wykonać jakąś operację, musimy zwykle 
pobrać jej argumenty, a po jej wykonaniu zapisać wynik.  

 

background image

Architektura komputerów – Procesor 
 

 

49 

 

Wśród rozkazów przesłań wyróżnia się czasami operacje na 

stosie (będące jednak też formą przesłań) czy instrukcje 

wejścia/wyjścia, przesyłające lub odczytujące dane z portów 
wejścia/wyjścia.  

 

Typowymi przykładami rozkazów przesłań są:  

 

MOV - move

 - przesłanie słowa pomiędzy rejestrami procesora;  

STR - store

 - przesłanie słowa ze wskazanego w rozkazie rejestru 

procesora do komórki    pamięci;  

LD - load

 - przesłanie słowa z pamięci do wskazanego rejestru 

procesora;  

 

background image

Architektura komputerów – Procesor 
 

 

50 

 

XCH - exchange

 - wymiana zawartości rejestrów;  

IN - input

 - odczyt słowa z urządzenia wejściowego;  

OUT - output

 - przesianie zawartości wskazanego rejestru 

procesora do urządzenia wyjściowego;  

CLR - clear

 - zerowanie rejestru;  

SET - set

 - zapisanie do rejestru jedynek;  

PUSH - push

 - zapisanie zawartości rejestru na stos;  

POP - pop

 - odczyt słowa z wierzchołka stosu i przesłanie go do 

rejestru; 

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

51 

 

 

Pierwsze 6 rozkazów to rozkazy jednoargumentowe

. Muszą one 

jednak  specyfikować  dwa  adresy  operandów. 

Pierwszy

  z  nich 

wskazuje  miejsce  skąd  pochodzi  argument  operacji  (źródło),  a 

drugi

 wskazuje miejsce jego przesłania przeznaczenie).  

 
Istnieją procesory, w których rozkazy takie mogą być 

modyfikowane w taki sposób, aby ich wykonanie było wielokrotne, 

tj. powtarzane określoną przez rozkaz liczbę razy. Umożliwia to 

przesyłanie całych bloków słów

.  

 

 

 

background image

Architektura komputerów – Procesor 
 

 

52 

 

 

 

 
Mówimy, że są to rozkazy z powtarzaniem. W takim przypadku 

rozkazy te są 

dwuargumentowe

, gdyż drugi argument specyfikuje 

ile razy ten rozkaz ma być wykonany. Pozostałe cztery rozkazy 
wymienione w tej grupie są rozkazami 

jednoargumentowymi

.  

 

 

 

 

 
 

 

background image

Architektura komputerów – Procesor 
 

 

53 

 

Rozkazy  arytmetyczne  i  logiczne

  służą  do  przetwarzania 

informacji,  czyli  w  wyniku  ich  wykonania  jest  ona  zmieniana.  Do 
rozkazów tych zaliczamy:  

rozkazy arytmetyczne, np.: 

ADD - addition

 - dodawanie;  

SUB - subtraction

 - odejmowanie;  

MUL - multiplication

 - mnożenie;  

DIV - diyision

 - dzielenie;  

ABS - absolute

 - wartość bezwzględna liczby;  

NEG - negate

 - zmiana znaku liczby;  

INC - increment

 - zwiększenie wartości o jeden;  

DEC - decrement

 - zmniejszenie wartości o jeden. 

background image

Architektura komputerów – Procesor 
 

 

54 

 

 

Pierwsze 4 rozkazy

 tej grupy są argumentowe. Dlatego rozkazy 

te muszą wskazywać trzy operandy: 

dwa dla dwóch argumentów 

operacji i jeden dla wyniku

. Zatem każdy taki rozkaz musi 

specyfikować trzy adresy. Ponieważ takie rozwiązanie zmuszałoby 

do wydłużania instrukcji, a co za tym idzie programów, to zmierza 

się do zmniejszania liczby adresów operandów. Można przyjąć 
wtedy, że jeden z argumentów jest zawsze przechowywany w tym 

samym miejscu, np. w akumulatorze i tam też przesyłany jest 

wynik operacji. W takim przypadku specyfikacji wymaga tylko 

jeden operand.  
 

 

background image

Architektura komputerów – Procesor 
 

 

55 

 

 

 

 

Następne  4  podane  rozkazy

  są  jednoargumentowe  i  dlatego 

każdy z nich specyfikuje jedynie dwa adresy operandów. Wszystkie 
podane  rozkazy  powodują  odpowiednie  ustawianie  bitów  w 

rejestrze  znaczników  na  wyjściu 

ALU

.  Argumentami  takich 

rozkazów mogą być liczby stałopozycyjne i zmiennopozycyjne.  

 
 

 
 

 

 

background image

Architektura komputerów – Procesor 
 

 

56 

 

rozkazy logiczne, np.: 

AND - conjuction

 - iloczyn;  

OR - disjunction

 - suma;  

EXOR- exclusive-OR

 - suma mod 2;  

NOT - complement

 - negacja. 

Pierwsze trzy rozkazy

 są dwuargumentowe i tylko ostatni rozkaz 

jest  jednoargumentowy.  Argumenty  tych  rozkazów  mogą  być 
adresowane  na  różne  sposoby.  Wykonanie  omawianych  rozkazów 

także powoduje odpowiednie ustawienie znaczników.  

 
 

 
 

background image

Architektura komputerów – Procesor 
 

 

57 

 

rozkazy przesuwania informacji, np.:

 

 

SHL - shift left

 - przesuwanie zawartości rejestru w lewo (na 

najmniej znaczącą pozycję wpisywane jest 0, a na najbardziej 
znaczącą pozycję jest zapisywany znacznik przeniesienia).  

SHR - shift right

 - przesuwanie zawartości rejestru w prawo (na 

najbardziej znaczącą pozycję wpisywane jest 0, a na najmniej 

znaczącą pozycję jest zapisywany znacznik przeniesienia). 

 

 

background image

Architektura komputerów – Procesor 
 

 

58 

 

 

SAL - shift arithmetic left

 - przesuwanie arytmetyczne w lewo 

(jak SHL), czyli mnożenie przez 2 z zachowaniem bitu znaku.  

SAR - shift arithmetic right

 - przesuwanie arytmetyczne w 

prawo, czyli dzielenie przez 2 (najbardziej znaczący bit jest 
pozostawiany a najmniej znaczący jest zapisywany na pozycję 

znacznika przeniesienia).  

ROL - rotate left

 - przesuwanie cykliczne w lewo (najbardziej 

znaczący bit jest zapisywany na najmniej znaczącą pozycję 

oraz na pozycję znacznika przeniesienia).  

 

background image

Architektura komputerów – Procesor 
 

 

59 

 

ROR - rotate right

 - przesuwanie cykliczne w prawo (najmniej 

znaczący bit jest zapisywany na najbardziej znaczącą pozycję i 

na pozycję znacznika przeniesienia).  

RCL - rotate left with extend

 - przesuwanie cykliczne w lewo 

rejestru wydłu-żonego o znacznik przeniesienia.  

RCR - rotate right with extend

 - przesuwanie cykliczne w 

prawo rejestru wydłu-żonego o znacznik przeniesienia. 

Wszystkie podane operacje są jednoargumentowe

. Rozkazy 

przesunięć mogą dotyczyć zarówno zawartości rejestrów jak i 
zawartości komórki pamięci.  

 

background image

Architektura komputerów – Procesor 
 

 

60 

 

Rozkazy  sterujące

 

wykonywaniem  programu  stanowią  grupę 

rozkazów  pozwalającą  zmieniać  kolejność  wykonywania  instrukcji 
programu.  

 

Należą do nich przykładowo:  

JMP - jump

 - skok bezwarunkowy do miejsca w pamięci 

wyspecyfikowanego w rozkazie;  

Jc - jump conditional

 - skok warunkowy gdzie c określa jaki 

warunek musi być spełniony, aby rozkaz wykonać;  

 

 

 

background image

Architektura komputerów – Procesor 
 

 

61 

 

 

CALL - jump to subroutine

 - wywołanie podprogramu polegające 

na tym, że wykonywany jest skok wraz z zapamiętaniem na 
stosie zawartości licznika rozkazów (ostatni adres);  

Cc - call conditional

 - warunkowe wywołanie podprogramu;  

RET - return

 - skok powrotny z podprogramu polegający na 

przesłaniu ze stosu zapamiętanej wcześniej zawartości licznika 

rozkazów;  

SKIP - skip

 - przeskok przez jeden rozkaz; 

 
 

 

 

background image

Architektura komputerów – Procesor 
 

 

62 

 

 

Rozkazy warunkowe są wykorzystywane do realizacji rozgałęzień 

w programach. Jeśli warunek nie jest spełniony, to rozkaz nie jest 
wykonywany, a wykonywany jest rozkaz następny, tj. znajdujący 

się w programie po rozkazie warunkowym. Rozkazy skoków i 

wywołań zawierają adres skoku, tj. adres komórki pamięci, w której 
znajduje się rozkaz wykonywany bezpośrednio po wykonaniu 

rozkazu skoku.  

 

 
 

 
 

background image

Architektura komputerów – Procesor 
 

 

63 

 

 

Rozkazy  sterujące  pracą  procesora

 

stanowią  niewielką 

grupę rozkazów do której należą m.in.:  

HALT - stop

 - zatrzymanie wykonywania programu;  

NOP - no operation

 - rozkaz pusty. 

 
Rozkaz 

HALT

  zatrzymuje  pracę  procesora,  aż  do  momentu 

ponownego  uruchomienia  programu  przez  zdarzenie  zewnętrzne 

(ponowną  inicjalizację  procesora,  czyli  po  pojawieniu  się  sygnału 

RESET

  lub  po  zgłoszeniu  przerwania,  tj.  pojawieniu  się  sygnału 

HIT

), a rozkaz 

NOP

 jest rozkazem pustym nic nie rób.  

 

 

background image

Architektura komputerów – Procesor 
 

 

64 

 

Przedstawiona  lista  rozkazów  stanowi  uproszczony  przykład 

zbioru  rozkazów  procesora.  Z  tego  opisu  wynika  jednak  kilka 

ważnych problemów. 

Pierwszym z nich

 jest problem liczby adresów, 

które 

powinny 

zostać 

wyspecyfikowane 

rozkazie.  

W  zasadzie  każdy  rozkaz  powinien  podawać  adresy  3  operandów 

(

dwa  adresy  argumentów  danego  rozkazu  i  jeden  adres  wyniku 

operacji)

  oraz  adres  następnego  rozkazu.  Komputery,  których 

rozkazy  zawierają  te  wszystkie  adresy  nazywane  są 

komputerami 

czteroadresowymi

.Dla  wyspecyfikowania  podanych  4  adresów 

potrzebne są bardzo długie słowa rozkazowe.  

 

 

background image

Architektura komputerów – Procesor 
 

 

65 

 

Celem 

zmniejszenia  długości  rozkazu

  stosuje  się  rozwiązania 

pozwalające  wyeliminować  pewną  liczbę  adresów. 

Jednym  z  nich

 

było  wprowadzenie  licznika  rozkazów,  co  pozwoliło  na  eliminację 
adresu 

następnego 

rozkazu 

konstrukcję 

komputerów 

trzyadresowych. 

Celem  dalszego  ograniczenia  liczby  adresów

 

można  przyjąć  założenie,  że  dla  wszystkich  operacji  wynik  będzie 

przesyłany w miejsce jednego z argumentów.  

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

66 

 

Wówczas można zmniejszyć liczbę adresów 

do dwóch

 W komputerach o 

bardzo krótkim słowie rozkazowym

 (np. 

mikrokomputery 8-bitowe) stosuje się dalsze ograniczenie liczby 

adresów przez rozwiązanie polegające na tym, że jeden z 
argumentów wszystkich rozkazów i wynik jest zawsze w tym 

samym miejscu (na przykład w rejestrze akumulatora). 

Takie 

komputery nazywane są jednoadresowymi.  

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

67 

SPOSÓB PREZENTOWANIA ROZKAZU  

 
 

Lista rozkazów procesora powinna zawierać następujące 

informacje: 

 

Oznaczenie symboliczne. 

 

 

 

Rozkazy przechowywane są w postaci binarnej, jednak dla 
większej czytelności stosuje się zapis symboliczny. Składa się on 
z mnemonika (nazwy rozkazu) i argumentu.  
 

background image

Architektura komputerów – Procesor 
 

 

68 

Mnemonik

 

jest skrótem, który sugeruje rodzaj operacji 

wykonanej przez rozkaz. W większości są to skróty angielskich 
nazw.  
 

Kod rozkazu:  

a. musi  zawierać  określenie  rodzaju  wykonywanej  operacji, 

czyli  tzw.  kod  operacji.  Kod  operacji  musi  być  określony  w 
początkowej  części  (pierwszym  bajcie  lub  bajtach)  kodu 
rozkazu  w  celu  określenia,  w  jaki  sposób  ma  przebiegać 
dalsza realizacja rozkazu przez mikroprocesor.  

b. może 

zawierać 

operandy 

i/lub 

adresy 

operandów 

wykonywanych  operacji  (dotyczy  to  także  adresów 
wyników). 

Oczywiście 

przypadku 

rozkazów 

wymagających argumentów informacja ta musi być zawarta 
w rozkazie.  

 

 

background image

Architektura komputerów – Procesor 
 

 

69 

Opis działania rozkazu. 

 
Symbolicznie działanie rozkazu możemy zapisać:  

(PC) << (PC) + OFFSET 

 
Słownie opis tego układu byłby następujący: 

 
Wykonaj skok i pobierz kod rozkazu z komórki pamięci o adresie 
równym etykieta. 
 

 

 

Format rozkazu. 

 
W formacie rozkazu oprócz sposobu rozmieszczenia informacji w 
kodzie rozkazu zawarta jest również informacja o jego długości.  

 

Ustawiane flagi.  

 

Szybkość wykonywania rozkazu.  

 

background image

Architektura komputerów – Procesor 
 

 

70 

 

PRZYKŁADOWE ROZKAZY  
 

Przykładowe rozkazy:  
 

1. 

MOV  

 
Instrukcja MOV przesyła dane pomiędzy dwoma miejscami. 
Obydwa argumenty muszą być tego samego rozmiaru.  
 

Składnia:  

 

MOV

 mem, accum (prześlij zawartość akumulatora do komórki o 

podanym adresie)  

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

71 

Format:  

 

 

 

gdzie: address low, address high - przemieszczenie względem 
początku segmentu  
w=1 - operacja na słowach  
w=0 - operacja na bajtach  
 

2. 

ADC  

 

Instrukcja ADC sumuje dwie liczby umieszczone we wskazanych 
miejscach oraz bit CY (przeniesienia). Należy ona do grupy 
instrukcji arytmetycznych.  
 

3. 

LOOP

 etykieta  

background image

Architektura komputerów – Procesor 
 

 

72 

Tryb adresowania

 

 

Rozkazy, jak każdy inny rodzaj informacji w systemie 

mikroprocesorowym, są przechowywane w postaci kodów 
binarnych. Kod rozkazu musi zawierać informacje niezbędne do 

jego poprawnej realizacji. Informacje te muszą być rozmieszczone 

w rozkazie w określony sposób.  

   

Określenie: 

Formatem rozkazu nazywamy sposób 

rozmieszczenia informacji w kodzie rozkazu. 

 

 

background image

Architektura komputerów – Procesor 
 

 

73 

 

Kod rozkazu:  

1. 

musi  zawierać  określenie  rodzaju  wykonywanej  operacji, 

czyli tak zwany kod operacji. Kod operacji musi być określony w 

początkowej części (pierwszym bajcie lub bajtach) kodu rozkazu 

w celu określenia, w jaki sposób ma przebiegać dalsza realizacja 
rozkazu przez mikroprocesor. 

2. 

może 

zawierać 

operandy 

i/lub 

adresy 

operandów 

wykonywanych  operacji  (dotyczy  to  także  adresów  wyników). 

Oczywiście  w  przypadku  rozkazów  wymagających  argumentów 

informacja ta musi być zawarta w rozkazie. 

 

background image

Architektura komputerów – Procesor 
 

 

74 

 

Właśnie z tym drugim warunkiem określającym zawartość kodu 

związane są tryby adresowania.  

 
   

Określenie:

 Trybem adresowania nazywa się sposób 

określenia miejsca przechowywania argumentów rozkazu. 

 

Można rozróżnić następujące tryby adresowania:  

 

adresowanie natychmiastowe, w którym argument rozkazu 

zawarty jest w kodzie rozkazu; 

 

adresowanie bezpośrednie, w którym kod rozkazu zawiera adres 

komórki pamięci przechowującej argument rozkazu; 

background image

Architektura komputerów – Procesor 
 

 

75 

 

 

adresowanie rejestrowe, w którym w kodzie rozkazu określony 

jest rejestr zawierający argument rozkazu; 

 

adresowanie pośrednie (rejestrowe pośrednie), w którym kod 

rozkazu zawiera określenie rejestru, bądź rejestrów 
zawierających adres komórki pamięci z argumentem rozkazu; 

 

adresowanie indeksowe z przemieszczeniem, w którym adres 

argumentu przechowywanego w pamięci obliczany jest jako 

suma zawartości rejestru i wartości (tzw. przemieszczenia) 

określonych w kodzie rozkazu. 

Interpretacja  graficzna  trybów  adresowania  została  przedstawiona 
na rys. 6.  

background image

Architektura komputerów – Procesor 
 

 

76 

 

Rys.6. Tryby adresowania a) adresowanie natychmiastowe,  
           b) adresowanie bezpośrednie, c) adresowanie rejestrowe, 
           d) adresowanie pośrednie, e) adresowanie indeksowe z 
                przemieszczeniem  

background image

Architektura komputerów – Procesor 
 

 

77 

 

Rozwiązania zapewniające zwiększenie 
efektywności procesora  

 

Kolejka instrukcji 

Pobieranie  instrukcji  z  rejestru  instrukcji 

IR

  do  dalszego 

przetwarzania  (dekodowania,  wykonania)  odbywa  się  z  różna 
prędkością w zależności od:  

 

trybu adresowania, 

 

liczby argumentów, 

 

czasu ich pobierania z pamięci, 

 

liczby taktów zegara w jakich wykonywana jest instrukcja.

 

background image

Architektura komputerów – Procesor 
 

 

78 

 

Również w różnym tempie odbywa się dostarczanie instrukcji do 

rejestru  rozkazów  IR

  w  zależności  od  obciążenia  szyny  danych. 

Mogą  zatem  powstawać  sytuacje,  w  których 

dekoder  instrukcji

 

czeka na instrukcję w 

IR

 a układ pobierania instrukcji nie może jej 

na  czas  dostarczyć  bo  szyna  danych  jest  akurat  zajęta  innymi 

transmisjami albo sytuacje w których szyna i pamięć są gotowe i 
mogą  dostarczyć  instrukcję,  natomiast  procesor  jest  jeszcze 

zajęty przetwarzaniem instrukcji poprzedniej. 

 

 
 

 

 

background image

Architektura komputerów – Procesor 
 

 

79 

 

 

 

 
W obu przypadkach jest konieczność wstrzymania pracy bloków 

nie mających zajęcia  i potrzeba wygenerowania martwego cyklu 

ich pracy, tzn. czynności polegającej na nie zrobieniu nic w danym 
cyklu zegara.  

 

 

 
 

background image

Architektura komputerów – Procesor 
 

 

80 

Aby martwych cykli pracy pamięci i ALU było jak najmniej 

stosuje się kolejkę instrukcji.  

   

Określenie:

 Kolejka jest strukturą danych dualną do stosu. 

Podobnie  jak  na  stosie  w  jednym  cyklu  dostępu  może  być  z 
niej zdjęta tylko jedna dana. Na stosie była to dana ostatnio 
odłożona,  w  kolejce  jest  nią  dana  odłożona  wcześniej. 
Obowiązuje tu reguła FIFO (first input first output
). 

 

Ponieważ  obciążenie  bloku  wykonawczego  procesora  oraz 

pamięci  zmienia  się  dynamicznie  i  raz  jedno  jest  większe  raz 
drugie,  duże  korzyści  daje 

zamienienie  rejestru  IR

  na 

wielopozycyjny  bufor  instrukcji

  i  stworzenie  w  nim  kolejki 

instrukcji.  

 

background image

Architektura komputerów – Procesor 
 

 

81 

 

 

 

Gdy 

ALU

 pracuje akurat wolniej a szyna dostarcza instrukcje 

szybciej kolejka się zapełnia kilkoma instrukcjami. Gdy później 

szyna stanie się z jakiegoś powodu wolniejsza w 

stosunku do 

ALU

, instrukcje będą pobierane z kolejki i nie nastąpi przestój w 

pracy 

ALU

. Ilustruje to rys. 7. 

 

background image

Architektura komputerów – Procesor 
 

 

82 

Kolejka ma pięć pozycji

Dekoder aktualnie dekoduje 
instrukcję 

„instrukcję 0”

 

pierwszej odczytywanej 
pozycji kolejki, a instrukcje 
następne „

instrukcja 1”, 

„instrukcja 2”, „instrukcja 
3”, „instrukcja 4”

 zostały 

pobrane i oczekują w 
kolejce. Rejestr 

PC 

wskazuje adres 

„instrukcji 

4”

, która została ostatnio 

pobrana. Gdy zakończy się 
dekodowanie 

„instrukcji 0”

zostanie ona usunięta z 

kolejki, a na zwolnione miejsce zostanie wpisana 

„instrukcja 5”

 w ten 

sposób, że rejestr 

PC 

zwiększy się o 

i wystawi adres 

„instrukcji 5”

Sprawdzaniem stanu kolejki i uzupełnianiem jej w razie wolnego miejsca 
przez zwiększanie 

PC

 i kolejki zajmuje się specjalny blok włączony pomiędzy 

szynę a bufor kolejki w pamięci  
FIFO zwany 

Blokiem Wyprzedzającego Wprowadzania Instrukcji

 

(BWWI)

.

background image

Architektura komputerów – Procesor 
 

 

83 

 

Cykl pracy kolejki wygląda zatem następująco:  

 

jeżeli kolejka posiada wolne miejsca, 

Blok Wyprzedzającego 

Wprowadzania Instrukcji

 (BWWI) wprowadza na nie kolejne 

instrukcje w tempie wyznaczonym przez zegar (max 1 

instr./takt), ale ograniczonym również przez obciążenie szyny, 

 

równocześnie jeżeli kolejka zawiera instrukcje, są one pobierane 

do dekodowania w tempie wyznaczonym przez pracę dekodera. 

Zanim przedstawione zostanie, jak wprowadzenie kolejki 

instrukcji odbija się na procesie pobierania instrukcji należy 

przypomnieć, że w skład cyklu instrukcyjnego procesora wchodzi 

5 faz:  

background image

Architektura komputerów – Procesor 
 

 

84 

 

 

pobranie instrukcji (PI), 

 

dekodowanie instrukcji (DI), 

 

obliczenie adresu argumentów i pobranie argumentów (OA+PA), 

 

wykonanie instrukcji (WI), 

 

zapamiętanie wyników (ZW). 

Wśród nich trzy fazy 

PI, PA i ZW

 wymagają wykonania dostępów 

do pamięci. Dostępy te są najkrytyczniejsze w całym cyklu 

instrukcyjnym ponieważ zajmują i obciążają szynę adresową i 

szynę danych.  

 

 

 

background image

Architektura komputerów – Procesor 
 

 

85 

 

Wymienione 5 faz rozłożonych na trzy bloki:  

 

pamięć i układy adresujące, 

 

dekoder, 

 

ALU 

rozkłada się w czasie w sposób pokazany na rys. 8..  
 

Pomiędzy trzema dostępami do pamięci występują dwa martwe 

cykle pamięci 

(MCP)

, pomiędzy wykonaniami instrukcji występują 

martwe cykle 

ALU (MCA)

.  

background image

Architektura komputerów – Procesor 
 

 

86 

 

 Rys 8. Fazy wykonania cyklu instrukcyjnego bez kolejki instrukcji  

Jeżeli  szyna  jest  mało  obciążona

  i  transmisje  adresu  do  pamięci 

oraz  instrukcji  i  danych  z  pamięci  nie  wymaga  oczekiwania  na 

zwolnienie  szyny,  to  pobranie  instrukcji  odbywa  się  w  jednym 

takcie.  

background image

Architektura komputerów – Procesor 
 

 

87 

 

 

 

Wówczas w każdym martwym cyklu pamięci

 układ wyprzedzającego 

wprowadzania  instrukcji  może  dokonać  co  najmniej  jednego 

pobrania  następnej  instrukcji  do  kolejki.  Otrzymujemy  schemat 

pokazany na rys. 9.  

background image

Architektura komputerów – Procesor 
 

 

88 

 

 

Rys 9. Fazy wykonania cyklu instrukcyjnego z jednotaktowym 
           wykonaniem instrukcji pierwszej(WI1)przy kolejce instrukcji  
   

background image

Architektura komputerów – Procesor 
 

 

89 

Może  wystąpić  również  sytuacja,  w  której  wykonanie  instrukcji 

pierwszej 

(WI1)

  trwa  więcej  taktów  zegara  i  wówczas  pojawia  się 

więcej  martwych  cykli,  które  można  przeznaczyć  na  pobranie 
większej  liczby  instrukcji,  np. 

PI3  i  PI4

,  jak  pokazuje  rys.  10. 

Przypadkom z rys.9 i 10. towarzyszyć będzie zapełnianie kolejki.  

 

 

Rys  10.  Fazy  wykonania  cyklu  instrukcyjnego  z  dwutaktowym  WI1 
              przy kolejce instrukcji  

 

background image

Architektura komputerów – Procesor 
 

 

90 

 

 

 

Jeżeli  jednak  na  rys.9  szyna  będzie 

przeciążona

  i  po  zażądaniu 

pobrania 

drugiej 

instrukcji

 

przez 

Blok 

Wyprzedzającego 

Wprowadzania  Instrukcji  nie  nastąpi  przesłanie,  ale  oczekiwanie 
na  zwolnienie  szyny,  np. 

przez  jeden  takt

,  to  nie  uda  się  zapełnić 

kolejki. 

PI2

 nie zmieści się w żadnym z jednotaktowych martwych 

cykli  pamięci  (

nie  tylko  PI2  i  PI3  będą  opóźnione,  ale  także 

pobrania  argumentu  PA1  i  zapisania  wyniku  ZW1

).  Kolejka 

instrukcji  nie  będzie  się  zapełniała,  a  w  realizacjach  w  których 

dekoder

  i 

ALU

  nie  czekają  na  zakończenie  cyklu  instrukcyjnego 

(potokowych),  lecz  pobierają  następne  dane  kolejka  będzie  wręcz 
malała.  

 

 

background image

Architektura komputerów – Procesor 
 

 

91 

 

Jeżeli  w  kodzie  programu  pojawi  się  instrukcja 

skoku  JMP

 

(zwykła  lub  warunkowa)  lub  wywołanie  podprogramu 

CALL

 

wówczas mechaniczne pobieranie przez 

BWWI

 do kolejki kolejnych 

instrukcji  za  instrukcją  skoku  jest  problematyczne.  Najprostszy 

układ 

BWWI

 nie bada typu instrukcji pobieranej.  

 

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

92 

 

Kolejka  jest  zapełniana  kolejno  instrukcjami: 

„instrukcja  1”, 

JMP,  „Instrukcja  2”,  „Instrukcja  3”,  ....

  Gdy 

JMP 

dojdzie  do 

dekodowania  i  dekoder  stwierdzi 

skok

,  zostanie  on  wykonany, 

następuje przerwa w pracy procesora, kolejka zostanie opróżniona 
z  instrukcji  „Instrukcja  2”,  „Instrukcja  3”
,...  i  zacznie  się  jej 

ponowne  zapełnianie  instrukcjami  wyznaczonymi  przez  skok  (lub 

podprogram).  

Ta przerwa znacznie spowalnia działanie procesora, bo skoki  są 

częstym  elementem  programu. 

Sytuację  można  poprawić

  jeżeli 

BWWI

  będzie  rozpoznawał  instrukcję 

JMP

  po  jej  wprowadzeniu  i 

przełączy się na pobieranie następnych instrukcji za skokiem.  

background image

Architektura komputerów – Procesor 
 

 

93 

 

 

Jeszcze  trudniejsza  sytuacja  występuje  jeżeli  skok  jest 

warunkowy  i  zajdzie  tylko  w  przypadku  odpowiedniej  wartości 

zmiennej  określonej  argumentem  instrukcji  skoku.  Wówczas 

opróżnianie kolejki może nastąpić dopiero po wyliczeniu przez 

ALU

 

wartości  tego  argumentu.  Jeśli  z  wartości  argumentu  wynika,  że 

skok  nastąpi,  kolejka  i  dekoder  są  opróżniane,  i  zacznie  się  nowe 

zapełnianie kolejki instrukcjami za skokiem.  

 

 

 

background image

Architektura komputerów – Procesor 
 

 

94 

 

Osobnym  problemem  jest  dobór  długości  kolejki

.  Jeżeli  kolejka 

jest krótka,  wówczas  nawet  przy  niewielkiej  przewadze  szybkości 

pobierania  instrukcji  nad  szybkością  dekodowania  i  wykonywania 

(tzn

.  gdy  szyna  jest    mało  obciążona  działa  szybko  a  procesor 

wykonuje  długie  instrukcje  i  działa  wolno)

  łatwo  się  zapełnia  i 

przestaje spełniać swoja rolę.  

Z  drugiej  strony

,  gdy  kolejka  jest  długa,  wówczas 

Blok 

Wyprzedzającego  Wprowadzania  Instrukcji

  przez  większość  czasu 

swojej  pracy  ma  do  czynienia  z 

kolejką  nie  zapełnioną

  i  stale 

pobiera instrukcje do kolejki obciążając nadmiernie szynę.  

 

background image

Architektura komputerów – Procesor 
 

 

95 

 

 

 

Powoduje to globalne spowolnienie systemu

.  

Jak widać obydwie sytuacje są niekorzystne i należy dobrać 

kompromisową długość kolejki. W praktyce stosuje się na ogół 

kolejkę, która zawiera kilka pozycji.  

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

96 

Przetwarzanie potokowe 

W  przetwarzaniu  omawianym  wyżej,  w  czasie 

jednego  cyklu 

instrukcyjnego

  cały  procesor  zajmował  się  tylko  jedna  instrukcją. 

Gdy  dekoder  dekodował,  układ  pobierania  już  zakończył  pracę,  a 

układ  adresowania  i  pobierania  danych  oczekiwał  na  wynik  pracy 

poprzednika.  

Było to tzw. przetwarzanie szeregowe (rys.11).  

 

Rys 11. Wykonywanie faz cyklu instrukcyjnego w sposób 

         szeregowy  

background image

Architektura komputerów – Procesor 
 

 

97 

 

 

W  przetwarzaniu  tym  wynik  otrzymujemy  w 

fazie  ZW

,  co 

następuje  jeden  raz  w  każdym cyklu instrukcyjnym.  Wielką zaletą 
takiego  przetwarzania  jest  to,  że  dopuszcza  dowolne  uzależnienia 
rejestrowe 

instrukcji 

później 

wykonywanej 

od 

wcześniej 

wykonywanej, np. wynik obliczony w 

WI1

 i zapisany w 

ZW1

 może 

być argumentem następnej instrukcji pobieranym w fazie PA2.  

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

98 

Inną możliwością jest przetwarzanie 

równolegle

, w którym 

wszystkie odpowiadające sobie fazy wszystkich zrównoleglonych 

instrukcji są wykonywane równocześnie, jak pokazuje rys. 12.  

 

Rys.12. Wykonywanie faz cyklu instrukcyjnego w sposób  

               równoległy  

 

background image

Architektura komputerów – Procesor 
 

 

99 

 

 

 

System wymaga zwielokrotnienia sprzętu i daje w jednym cyklu 

instrukcyjnym tyle wyników ilekrotnie zrównoleglono sprzęt. 

Jednak nie dopuszcza on wzajemnych uzależnień rejestrowych 

instrukcji, wynik jednej nie może być argumentem innej.  

 

 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

100 

Najczęściej  stosowany  obecnie  jest 

system  przetwarzania 

potokowego

, w którym jeżeli cykl instrukcyjny jest podzielony na 

faz

, to rozpoczęcie przetwarzania następnej instrukcji następuje z 

opóźnieniem  względem  poprzedniej  o 

1/5  cyklu

,  czyli  np.  jeden 

takt zegara.  

Pokazuje to rys. 13.  

 

Rys.13. Wykonywanie faz cyklu instrukcyjnego w sposób  
             potokowy  

background image

Architektura komputerów – Procesor 
 

 

101 

 

 

 

W systemie tym otrzymanie i zapis wyniku 

ZW

 następuje co 

1/5 

cyklu instrukcyjnego

, a wiec mamy pięć wyników w czasie jednego 

cyklu.  

System ten w zasadzie nie wymaga zwielokrotnienia sprzętu a 

jedynie zapewnienia, aby każdy z pięciu podukładów procesora 
mógł niezależnie od innego wykonywać dowolną fazę cyklu 
podczas gdy pozostałe będą wykonywać pozostałe fazy
.  
 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

102 

 

 

Przetwarzanie  potokowe

  w  formie  ogólnej  stawia  duże 

wymagania  sprzętowi,  bo  występuje  w  niej  jednoczesność  faz

  PI, 

PA i ZW

 wymagających dostępu do pamięci. Okazuje się to bardzo 

trudne  w 

klasycznej  architekturze  von  Neumanna

.  W  praktyce  w 

różnych  architekturach  istnieją  różne  ograniczone  wersje  tego 

przetwarzania.  

 
 
 

 

 

background image

Architektura komputerów – Procesor 
 

 

103 

 

Architektura Harvard 

 
W klasycznym przetwarzaniu potokowym korzystanie z dostępu 

do  pamięci  może  powodować  przeciążenie  szyny  adresowej  i 

opóźnień  pobierania  i  zapisu.  Aby  zmniejszyć  to  obciążenie 
stosowana  jest 

architektura  Harvard

.  Polega  ona  na  tym,  że 

rozdzielone  zostają  obszary  adresowania  instrukcji  oraz  danych  i 

dostępy do instrukcji oraz danych. 

  
 

 

 

background image

Architektura komputerów – Procesor 
 

 

104 

 

 

Architektura systemu dzieli się na trzy układy:  

 

układ obsługujący instrukcje (licznik rozkazów, bufor pobierania 

instrukcji i pamięć programu), 

 

układ obsługujący dane (dekoder, generator adresów danych, 

rejestry i pamięć danych), 

 

układ wykonawczy (ALU i blok sterowania). 

 

 

background image

Architektura komputerów – Procesor 
 

 

105 

 
Rys 14. Architektura Harvard  

 

 

background image

Architektura komputerów – Procesor 
 

 

106 

 

W  tych  trzech  układach  wyróżnić  można  pięć  bloków,  które  mogą 
pracować niezależnie:  

 

blok pobierania instrukcji (PI), 

 

blok dekodowania instrukcji (DI), 

 

blok obliczania adresów danych (AG), 

 

blok pobierania danych i zapisywania wyników (PA), 

 

blok wykonania operacji (WI) 

co implikuje możliwość uruchomienia pięciu potoków (rys. 15.):  
 

1.  licznik rozkazów wystawia na szynę adresów instrukcji kolejne 

adresy, pamięć programu zwraca instrukcje na szynę instrukcji i 

zostają one zapisane do bufora pobierania instrukcji aż do 
zapełnienia kolejki, 

 

background image

Architektura komputerów – Procesor 
 

 

107 

 

2.  dekoder pobiera instrukcje z bufora instrukcji i dekoduje je, 

3.  blok obliczania adresów określa adresy danych i zapisuje je w  

rejestrach adresowych, 

 

4. adresy danych są wystawiane na szynę adresów danych, 

pamięć danych zwraca dane na szynę danych i zostają one 

zapisane do rejestrów danych (w potoku tym zamiast 

pobierania argumentów może być również wykonany zapis 
zawartości rejestrów do pamięci), 

 

5.  ALU  pobiera  dane  z  rejestrów,  wykonuje  operacje  i  wynik 

zapisuje w rejestrze. 

background image

Architektura komputerów – Procesor 
 

 

108 

 

 

Rys.15. Schemat przetwarzania potokowego w architekturze 
                Harvard  
 
 
 

 

 

background image

Architektura komputerów – Procesor 
 

 

109 

Architektura typu RISC 

 

Konstruktorzy 

klasycznych  komputerów

  dążyli  do  wyposażenia 

ich procesorów w możliwie uniwersalny zestaw rozkazów, tak aby 

umożliwiał  on  optymalizację  programów  pisanych  w  języku 

symbolicznym.  Komputery  takie  nazwano  komputerami  z 

rozbudowaną  listą  instrukcji  CISC  (

complex  instruction  set 

computer

).  Lista  rozkazów  w  takich  komputerach  sięgała 

200

  lub 

300 

rozkazów.  Różnią  się  one  formatem  i  wykorzystywanymi 

trybami adresowania.  

 
 

 

background image

Architektura komputerów – Procesor 
 

 

110 

 

Natomiast  w  praktyce,  częstość  występowania  różnych 

rozkazów  i  różnych  trybów  adresowania,  upoważnia  do 

wprowadzenia pewnej ich klasyfikacji, np. pod względem częstości 
ich występowania..  

 

Są  rozkazy  powtarzające  się  w  programach  bardzo  często,  jak 

np.  rozkazy 

przesłań

,  które  stanowią  ok. 

33%

  wszystkich 

występujących  rozkazów.  Inne  rozkaz,  jak  np. 

skoki

  (

15%

), 

rozkazy 

arytmetyczne i logiczne

 (

15%

), rozkazy 

porównań

 (

10%

mają mniejszą częstotliwość występowania..  

 

 

 

background image

Architektura komputerów – Procesor 
 

 

111 

 

Można  także  stwierdzić,  że  wiele  rozkazów  występuje  w 

programach  jeszcze  rzadziej.  Są  to  rozkazy 

mnożenia,  dzielenia, 

alokacji stosu 

itp.  

 

Podobnie  pośród  trybów  adresowania  są  jedne  występujące 

częściej 

(rejestrowe pośrednie i rejestrowe bezpośrednie) i drugie 

występujące 

rzadziej

 (względne).  

 

Z  drugiej  strony,  wyróżnić  można  rozkazy  wykonywane  w 

niewielkiej liczbie cykli maszynowych

 (szczególne znaczenie mają 

rozkazy jednocyklowe), czyli rozkazy trwające krótko.  

 

 

background image

Architektura komputerów – Procesor 
 

 

112 

 

 

Przesłanki  te

  nasunęły  myśl  budowania  szybkich  komputerów, 

które  wyposażone  byłyby  w  zestaw  instrukcji  zawierający  tylko 
rozkazy trwające krótko i często powtarzające się w programach
.  

 

Taka  filozofia  projektantów  doprowadziła  do  powstania 

komputerów  ze  zredukowaną  listą  instrukcji  typu 

RISC

  (

reduced 

instruction  set  computer

).  Charakteryzują  się  one  nie  tylko 

uboższym zestawem rozkazów; ale i rozkazy dobierane są według 

pewnych cech.  

 

 

 

background image

Architektura komputerów – Procesor 
 

 

113 

 

 

Lista 

instrukcji 

komputerów 

RISC

 

charakteryzuje 

się 

następującymi cechami:  

 

dostęp do pamięci operacyjnej  jest możliwy tylko rozkazami 

przesłań, 

 

 

operandy wszystkich rozkazów znajdują się tylko w rejestrach 

procesora, 

 

 

 

background image

Architektura komputerów – Procesor 
 

 

114 

 

 

 

stosowane są tylko rozkazy o stałym formacie (długości), co 

pozwala przyspieszać operację pobierania rozkazów i ułatwia 

synchronizację faz w potoku, 

 

 

stosowanie niewielkiej liczby trybów adresowania pozwala 

uprościć sterowanie procesorem i zapewnia dużą szybkość fazy 

obliczania adresu danych. 

 

 
 

background image

Architektura komputerów – Procesor 
 

 

115 

 

W  porównaniu  z  klasycznym  rozwiązaniem 

von  Neumana

 

architektura komputerów typu 

RISC

 odznacza się także cechami, z 

których najważniejsze to:  

 

architektura potokowa umożliwiająca skrócenie cyklu dostępu do 

pamięci, ponieważ różne bloki procesora jednocześnie wykonują 

różne zadania, 

 

 

zwykle bardzo prosty układ sterowania procesora, gdyż 

niewielka liczba rozkazów, stały ich format oraz proste tryby 

adresowania pozwalają na zmniejszenie pamięci 

mikroprogramów; 

 

background image

Architektura komputerów – Procesor 
 

 

116 

 

 

 

rozdzielenie obszarów pamięci dla programów i dla danych 

stosujące architekturę typu Harvard, 

 

 

sprzętowe rozwiązanie stosu ze względu na odpowiednio dużą 

liczbę rejestrów procesora, co przyspiesza wywoływanie i 

zagnieżdżanie podprogramów

.