architektura procesora1CA 2011

background image

Architektura komputerów – Procesor

1

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

2

Rys.1. Ogólny schemat funkcjonalny procesora

background image

Architektura komputerów – Procesor

3

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

4

W

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

5

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

6

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

background image

Architektura komputerów – Procesor

7

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

8

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

9

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 inna

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

i

logiczne

w

zależności

od

zaprogramowanej operacji, tj. rozkazu umieszczonego

w

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

3

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

o

takiej

długości,

w

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

w

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

i

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

w

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

1

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

5

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

.


Wyszukiwarka

Podobne podstrony:
Architektura i procesry RISC [loskominos]
gleba procesy W 2011-10-18, gleboznawstwo, notatki
10816,246,architektura i urbanistyka 2011
Architektura procesorow firmy AMD
architektura procesora [1] materialy 8086 1
C Coding Techniques for Intel Architecture Processors
PI 23.11.2011, Notatki UTP - Zarządzanie, Semestr III, Procesy informacyjne
wieleba,technologie informacyjne, Procesor i jego architektura
PI 12.10.2011, Notatki UTP - Zarządzanie, Semestr III, Procesy informacyjne
Struktura źródeł błędów w procesie pomiarowym, PWR Politechnika Wrocławska, podstawy metrologii, Wyk
notatki wyklady 1-6 ok, Architektura i Urbanistyka, Studia, Semestr V, Ekonomika procesu inwestycyjn
02 01 2011 Projektowanie Procesow w VTECid 3497 ppt
PI 19.10.2011, Notatki UTP - Zarządzanie, Semestr III, Procesy informacyjne
Zegar sciaga, Studia Informatyka 2011, Semestr 1, Architektura systemów komputerowych, Ściągi

więcej podobnych podstron