Model pr II(TAK9)

background image

z

Wykład

Temat:

Model programowy komputera, część II.

Zawartość wykładu:

1. Cykl rozkazowy i jego realizacja w komputerze

2. Realizacja programu w komputerze

3. Potokowe wykonywanie operacji obliczeniowych

4. Potokowe wykonywanie rozkazów

background image

z

Cykl rozkazowy i jego realizacja w komputerze

Rozkazy wewnętrzne komputera są wykonywane w procesorze w ramach tzw.
cyklu wykonania rozkazu, który składa się z dwu faz: pobrania rozkazu i
wykonania rozkazu.

Start

Pobranie

następnego

rozkazu

Wykonanie

rozkazu

Stop

Faza pobierania

Faza wykonania

background image

z

Wprowadzenie

adresu rozkazu

Pobranie rozkazu

Dekodowanie

kodu operacji rozkazu

Obliczenie

adresu argumentu

Pobranie argumentu

Operacja na danych

Obliczenie

adresu wyniku

Zapisanie wyniku

1

2

3

4

5

6

7

8

Łańcuch

lub

wektor

Następny

rozkaz

wiele argumentów

wiele wyników

F

az

a w
y

ko
n

a

ni

a

F

a

za

po
bi

er

a

n

ia

Składniki faz w cyklu wykonania rozkazu.

background image

z

Fazy należące do cyklu wykonania rozkazu mają długości czasowe określone
przez sygnały taktujące pochodzące z zegara.

W każdej fazie generator sygnałów sterujących dostarcza odpowiednich
sygnałów, które powodują realizację operacji przewidzianych w tych fazach.

Odbywa się to metodą otwarcia odpowiednich dróg przesyłania informacji w
komputerze (np. szyn) i aktywacji odpowiednich działań w układach
wykonawczych (np. ALU – dodanie/ odjęcie, układ następnika licznika
rozkazów, itp.).

background image

z

Realizacja programu w komputerze

Realizację wykonania prostego programu rozważymy w uproszczonym
komputerze składającym się mikroprocesora i pamięci operacyjnej
podłączonej do niego za pomocą szyny systemowej ( szyna danych, szyna
adresowa i szyna sterująca).

Program , którego wykonanie rozpatrzymy składa się z 4 rozkazów
zapisanych pod kolejnymi adresami w pamięci od 0 do 3 oraz z 3 danych dla
których przeznaczono komórki o adresach od 4 do 6.

background image

z

Program składa się z następujących rozkazów, (rozkazy zapisujemy za
pomocą typowch skrótów języka asemblera) :

move 4 - pobierz daną z pamięci spod adresu 4 do rejestru akumulatora,

add 5 - dodaj do akumulatora daną spod adresu 5,

store 6 - zapamiętaj zawartość akumulatora w pamięci pod adresem 6,

stop - zatrzymaj wykonanie programu.

Po wykonaniu programu wynik obliczeń znajduje się w komórce pamięci
operacyjnej o adresie 6.

background image

z

Podłączenie mikroprocesora do pamięci operacyjnej zawierajacej

program.

Mikroprocesor

Nr komórki

Zawartość

0

move 4

1

add 5

2

store 6

3

stop

4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

Szyna danych

Szyna adresowa

Szyna sterowania

Pamięć operacyjna

background image

z

Założona strukturą blokową procesora.

Kod

operacji

Adres

Dekoder

Generator

sygnałów

Selektor

±

1

0

RR

LR

0

A

ALU

0

0

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

Szyna danych

Szyna adresowa

Szyna sterowania

Pamięć operacyjna

Zawartość

move 4

add 5
store 6

stop

RR – rejestr rozkazów LR – licznik rozkazów

A – rejestr akumulatora Warunki – rejestr warunków (flagi)

RBD – rejestr buforowy danych RBA – rejestr buforowy adresu

background image

z

Pamięć operacyjna zawiera komórki, które symbolicznie są przedstawione

w postaci wierszy składających się z numeru komórki i pola zawartości
komórki. W rzeczywistości komórka zawiera tylko pole zawartości.

Adres jest podawany do pamięci z zewnątrz (z procesora prze szynę adresów)
i po zdekodowaniu przez dekoder adresu, powoduje uaktywnienie (wybranie)
komórki o podanym adresie.

Może być wykonany odczyt lub zapis zawartości (rodzaj operacji

zależy od sygnału podanego przez szynę sterującą do układu sterowania
pamięci).

background image

z

Sposób wykonania kolejnych rozkazów komputera można omawiać
wykorzystując symboliczny zapis operacji, czyli :

tzw. język przesłań między-rejestrowych (ang. register transfer language).

Nazwa języka pochodzi od tego, że podstawową operacją wyrażalną w tym
języku są przesłania informacji między rejestrami, komórkami pamięci i
blokami funkcjonalnymi (obliczeniowymi) w komputerze.

Języki takie należą do większej grupy języków służących do opisu sprzętu
komputera i sposobu jego działania, tzw. języków opisu sprzętu (ang.
hardware description languages).

background image

z

Język przesłań między-rejestrowych wykorzystuje reprezentacje elementów
pamięciowych lub bloków
obliczeniowych komputera (rejestrów, pamięci
operacyjnej, pamięci pomocniczej, jednostki arytmetyczno-logicznej) w
postaci ich nazw, np. A, RR , LR, pamięć, P, ALU, itp..

Zawartość elementów pamięciowych lub wyjściowe dane z bloku
obliczeniowego (rozumiane jako ciąg bitów) symbolizuje nazwa elementu
wzięta w nawias prostokątny, np. [A], [RR], [RBD], [ALU].

background image

z

Adresowanie informacji wewnątrz elementu pamięciowego lub słowa
wyjścia z bloku obliczeniowego opisuje się za pomocą nazwy elementu, po
którym występuje specyfikacja wybranego fragmentu zawartości w nawiasie
okrągłym.

Przykłady:

RR (Kod Operacji) – pole rejestru RR o nazwie Kod Operacji,

RR (Adres) – pole rejestru RR o nazwie Adres,

ALU (bity 10 – 24) – bity od 10 do 24 słowa stanowiącego wynik operacji
ALU.

background image

z

Komórki pamięci mogą być opisane przy pomocy nazwy całej pamięci np. P
dla pamięci operacyjnej oraz specyfikacji adresu w nawiasie okrągłym

Przykłady

P (999) – komórka pamięci P o adresie 999,

P (RBA) – komórka pamięci P o adresie zawartym w rejestrze RBA,

P (LR) ( Kod Operacji) – pole Kod Operacji w komórce pamięci P o adresie
zawartym w rejestrze LR.

background image

z

Na zawartościach elementów pamięciowych można wykonać operacje, które
symbolizowane są operatorami, np.

prześlij, + dodaj, - odejmij, itp.

Przykłady

[A]

P (1024) – oznacza prześlij zawartość rejestru A do komórki pamięci o

adresie 1024,

[RR (Adres)]

LR – prześlij zawartość pola Adres rejestru RR do rejestru

LR,

[A (0-15)] + [LR]

LR – dodaj zawartość bitów od 0 do 14 rejestru A do

zawartości LR i wynik zapisz do LR.

background image

z

Przesyłanie zawartości bitowej odbywa się z wpisywaniem bitów na te same
pozycje w elemencie docelowym ( bit na pozycji zero elementu źródłowego
wpisuje się na pozycje zero w elemencie docelowym), chyba, że jest to
określone inaczej.

Przykład

[RR (Adres)]

LR (14 –31) – przesłanie pola Adres z rejestru RR na bity

14-31 rejestru LR.

background image

z

Wykonanie przykładowego programu opisane za pomocą

języka przesłań miedzy-rejestrowych

Dla prezentacji użyty będzie schemat blokowy komputera

Elementy komputera, które biorą udział w opisywanej operacji zaznaczać
będziemy na

czerwono

.

Pod schematem blokowym podany jest opis operacji w języku przesłań
między-rejestrowych

background image

z

Faza pobrania rozkazu

Przed wykonaniem każdego programu, adres komórki pamięci operacyjnej,
która zawiera pierwszy rozkaz programu musi być wprowadzony do licznika
rozkazów LR.

Wykonuje to system operacyjny na podstawie odpowiedniej dyrektywy
użytkownika np.„ Wykonaj program o nazwie alfa.”.

We współczesnych komputerach taka dyrektywa jest nazwa zbioru
zawierającego wykonywalny kod binarny programu, a więc alfa.exe.

Nazwa jest zamieniana na adres pierwszego rozkazu programu o nazwie alfa.

W przypadku naszego przykładowego programu jest to adres 0. Jest on
wprowadzony do rejestru LR przed wykonaniem programu.

background image

z

Kod

operacji

Adres

Dekoder

Generator

sygnałów

Selektor

±

1

0

RR

LR

0

A

ALU

0

0

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

Zawartość

move 4

add 5
store 6

stop

Operacja [LR]

RBA

W tej operacji zawartość licznika rozkazów LR jest przesłana do rejestru
buforowego pamięci operacyjnej RBA. Odbywa się to pod wpływem
sygnałów sterujących wysyłanych z układu sterującego, a ściślej jego
generatora sygnałów.

background image

z

Kod

operacji

Adres

Dekoder

Generator

sygnałów

Selektor

±

1

1

RR

LR

0

A

ALU

0

0

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

Zawartość

move 4

add 5
store 6

stop

Operacja [LR] + 1

LR

Jako następna operacja jest wykonany następnik na zawartości licznika
rozkazów LR. W ten sposób LR zawiera adres potencjalnego następnego
rozkazu do wykonania. O ile pobrany rozkaz nie zmieni zawartości LR, to
zawartość LR postała w wyniku operacji następnika będzie adresem
następnego rozkazu. W naszym przypadku będzie to adres 1. Operacja
następnika na LR w fazie pobierania rozkazu jest charakterystyczną cechą
komputera o modelu von Neumana.

background image

z

Kod

operacji

Adres

Dekoder

Generator

sygnałów

Selektor

±

1

0

RR

LR

0

A

ALU

0

Warunki

T

ak

to

w

an

ie

Nr komórki

1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

0

RBD

RBA

M

ov

e 4

Zawartość

move 4

add 5
store 6

stop

Operacja [P (RBA)]

RBD

Kolejna operacja w fazie pobrania rozkazu jest odczyt komórki pamięci o
adresie zawartym w RBA do rejestru buforowego RBD. Generator sygnałów
sterujących podaje wtedy do układu sterowania pamięcią sygnał „odczyt
pamięci” (ang. memory read). Po odczycie, rejestr RBD zawiera rozkaz
„move 4”.

background image

z

Move

4

Dekoder

Generator

sygnałów

Selektor

±

1

1

RR

LR

0

A

ALU

0

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

M

ov

e 4

Zawartość

move 4

add 5
store 6

stop

Operacja [RBD]

RR

Następna operacja polega na przepisaniu zawartości rejestru RBD do rejestru
rozkazów RR. Pole „Kod operacji” rejestru RR zawiera kod binarny rozkazu
„move” a pole adresowe „Adres” zawiera liczbę binarną 4. Ta operacja
kończy fazę pobrania pierwszego rozkazu naszego programu. Następna faza
cyklu rozkazu to faza wykonania.

background image

z

Faza wykonania rozkazu

Move

4

Dekoder

Generator

sygnałów

Selektor

±

1

1

RR

LR

0

A

ALU

0

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

M

ov

e 4

Zawartość

move 4

add 5
store 6

stop

Dekodowanie rozkazu „move 4”

Faza wykonania rozkazu rozpoczyna się od zdekodowania rozkazu a ściślej
od zdekodowania pola „Kod operacji” rejestru RR.

Generator sygnałów sterujących wysyła sygnały, który otwierają:

1) drogę z pola „kod operacji rejestru RR do Dekodera rozkazów

2) drogę z Dekodera rozkazów do Generatora sygnałów sterujących

background image

z

Te dwie drogi w układzie sterującym pozostaną otwarte już do końca
wykonania rozkazu.

Dekoder rozkazów podaje na wejście Generatora sygnałów sygnały
odpowiadające kodowi „move”.

Sygnały z dekodera są kombinowane logicznie w Generatorze sygnałów z
sygnałami zegarowymi Taktowanie.

W wyniku kombinacji logicznej powstają sygnały sterujące, które w
kolejnych chwilach czasowych są wysyłane do wszystkich układów
komputera, aby umożliwić tam wykonanie odpowiednich operacji
składających się na wykonanie rozkazu „move”.

Część tych sygnałów jest wysyłana z powrotem do układu zegarowego, aby
wytwarzał sygnały „Taktowanie” odpowiednie dla rozkazu „move”.

background image

z

Move

4

Dekoder

Generator

sygnałów

±

1

1

RR

LR

0

A

ALU

4

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

M

ov

e 4

Selektor

Zawartość

move 4

add 5
store 6

stop

[RR (Adres)]

RBA

Następuje obecnie przesłanie zawartości pola adresowego „Adres” rejestru
rozkazów RR do rejestru buforowego adresu pamięci RBA. Liczba binarna 4
znajdzie się w RBA aby posłużyć w następnym takcie czasowym do wybrania
komórki pamięci dla odczytu określonego w rozkazie „move”.

background image

z

Przy przesłaniu zawartości pola „Adres” z rejestru RR następuje
wykorzystanie tylko części linii wewnętrznej szyny danych.

Na wyjściu z wewnętrznej szyny danych do zespołu rejestrów znajduje się
układ Selektor, który otwiera drogę do potrzebnego rejestru, w tym przypadku
rejestru RBA.

Operacją sterują odpowiednie sygnały z Generatora sygnałów sterujących.

W przypadku np. rozkazu „jump” lub „call” układ Selektor otworzyłby drogę
z pola „Adres” rejestru RR do licznika rozkazów LR.

background image

z

Move

4

Dekoder

Generator

sygnałów

Selektor

±

1

1

RR

LR

0

A

ALU

4

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

4

10

RBD

RBA

10

Zawartość

move 4

add 5
store 6

stop

Operacja [P (RBA)]

RBD

Nastepuje taraz odczyt z pamięci słowa o adresie 4 wskazanym przez rejestr
buforowy adresu RBA i wpisanie tego słowa do rejestru buforowego danych
pamięci RBD.

Generator sygnałów sterujących wysyła do pamięci sygnał „odczyt pamięci”
oraz sygnał otwierający zewnętrzną szynę danych do rejestru RBD.

W ten sposób dana binarna 10 znajdzie się w rejestrze RBD.

background image

z

Move

4

Dekoder

Generator

sygnałów

Selektor

±

1

1

RR

LR

10

A

ALU

0

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

10

Zawartość

move 4

add 5
store 6

stop

Operacja [RBD]

A

Następna operacja to przesłanie poprzez wewnetrzną szynę danych zawartości
rejestru RBD do rejestru akumulatora A. Ta operacja kończy wykonanie
rozkazu „move 4”.

background image

z

Generator sygnałów sterujących wyśle teraz sygnały sterujące, które
spowodują pobranie do rejestru rozkazów RR następnego rozkazu do
wykonania.

Jest to rozkaz „add 5”. Jego adres 1 czeka już w liczniku rozkazów LR.

Pobranie składać się będzie z takich samych operacji jak pobranie rozkazu
„move 4” ale dotyczyć będzie innego adresu pobranego z licznika rozkazów
LR.

Operacje te są następujące:

[LR]

RBA

[LR] + 1

LR

[P (RBA)]

RBD

[RBD]

RR

background image

z

Po odczycie z pamięci rozkaz „add 5” znajdzie się w rejestrze rozkazów RR.

Pole „Kod operacji” rozkazu „add 5” zawiera więc kod binarny „add”

Pole „Adres” zawiera liczbę binarną 5.

Jednocześnie w liczniku rozkazów LR mamy adres następnego rozkazu do
wykonania, liczbę binarną 2.

background image

z

Wykonanie rozkazu „add 5”

Pomijamy rysunek przedstawiający otwarcie dekodera na dekodowanie części
operacyjnej rozkazu „add 5”.

Rozkaz „add 5” ma dodać zawartość rejestru akumulatora do zawartości
komórki pamięci o adresie 5 i zapisać wynik w akumulatorze.

background image

z

Add

5

Dekoder

Generator

sygnałów

Selektor

±

1

2

RR

LR

10

A

ALU

5

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

Ad

d 5

Zawartość

move 4

add 5
store 6

stop

Operacja [RR(Adres)]

RBA

Rysunek przedstawia pierwszą po zdekodowaniu rozkazu operację, która
składa się na wykonanie „add 5”. Jest to przesłanie adresu 5 z pola „Adres”
rejestru rozkazów RR do rejestru buforowego adresu RBA.

background image

z

Add

5

Dekoder

Generator

sygnałów

Selektor

±

1

2

RR

LR

10

A

ALU

5

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

6

0

Dekoder

adresu

Sterowanie

pamięcią

5

20

RBD

RBA

20

Zawartość

move 4

add 5
store 6

stop

Operacja [P(5)]

RBD

Kolejna operacja to odczyt słowa pamięci spod adresu 5 do rejestru
buforowego danych RBD przez zewnętrzną .szynę danych. Generator
sygnałów sterujących generuje sygnał „odczyt pamięci” i otwiera wyjście z
pamięci na szynę i wyjście z szyny do rejestru RBD. RBD zawiera po tej
operacji dana binarną 20.

background image

z

Add

5

Dekoder

Generator

sygnałów

Selektor

±

1

2

RR

LR

10

A

ALU

5

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

20

Zawartość

move 4

add 5
store 6

stop

Operacja {[A], [RBD]}

ALU

Następuje teraz dodanie danych w jednostce arytmetyczno-logicznej ALU.
Zauważmy, że akumulator zawiera daną 10 pobrana w poprzednim rozkazie.

Generator sygnałów sterujących wysyła sygnały, które otwierają wyjście z
rejestru A oraz wyjście z RBD na wewnętrzną szynę danych i wejścia ALU.
Sygnały te trwają tak długo, jak długo trwa operacja dodawania w sumatorze
ALU.

background image

z

Add

5

Dekoder

Generator

sygnałów

Selektor

±

1

2

RR

LR

30

A

ALU

5

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

20

Zawartość

move 4

add 5
store 6

stop

Operacja [ALU]

A i wpisanie warunków


Gdy wynik dodawania jest gotowy, następuje zamknięcie dostępu do wejść
ALU ze strony wyjścia z rejestru A i wewnętrznej szyny danych oraz
zamknięcie wyjścia z rejestru RBD na wewnętrzną szynę danych.

W tej samej chwili następuje otwarcie wyjścia ALU na wewnętrzną szynę
danych i wejścia z tej szyny do rejestru akumulatora A.

background image

z

Otwarcie wejścia do A trwa tylko tak długo jak to jest potrzebne do zapisania
w nim wyniku z ALU.

Wynik z ALU utrzymuje się jeszcze stabilnie przez ten czas, ze względu na
opóźnienie reakcji ALU na stan swoich wejść spowodowane propagacją
sygnałów u układach logicznych.

Jednocześnie z wpisaniem wyniku z ALU do A, zostają wpisane wyniki
testów wyniku ALU do rejestru warunków - Warunki. Ta operacja kończy
wykonanie rozkazu „add 5”.

Przed pobraniem następnego rozkazu, bit „Nadmiar ALU” rejestru warunków
jest analizowany w Generatorze sygnałów sterujących.

Jeśli wystąpił nadmiar ALU wykonywanie programu jest przerywane i
pobierany jest rozkaz programu obsługi przerwania wewnętrznego
(wyjątku), który sygnalizuje użytkownikowi błąd arytmetyczny. Generator
sygnałów sterujących emituje niezbędne dla tego sygnały sterujące.

Jeśli nadmiar ALU nie wystąpił, następuje pobranie następnego rozkazu
naszego programu. Jest to rozkaz „store 6” zapisany w pamięci pod adresem
2. Pobranie zostaje dokonane w znany już nam sposób, zgodnie z
zawartością licznika rozkazów LR równą 2.

background image

z

Wykonanie rozkazu „store 6”

Podobnie jak przy poprzednim rozkazie nie rysujemy rysunku dekodowania
rozkazu.

Po pobraniu rozkazu pole „kod operacji rejestru RR zawiera kod „store” a
pole „Adres” RR zawiera liczbę 6.

Rozkaz „store 6” ma zapisać do komórki pamięci o adresie 6 zawartość
rejestru akumulatora A.

background image

z

Store

6

Dekoder

Generator

sygnałów

±

1

3

RR

LR

30

A

ALU

6

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

S

to

re

6

Selektor

Zawartość

move 4

add 5
store 6

stop

Operacja [RR (Adres)]

RBA

Pierwszą operacją po zdekodowaniu rozkazu jest przesłanie zawartości pola
„Adres” rejestru RR do rejestru buforowego adresu RBA. W ten sposób adres
binarny 6 potrzebny dla wykonania rozkazu „store” znajdzie się w RBA.

background image

z

Store

6

Dekoder

Generator

sygnałów

Selektor

±

1

2

RR

LR

30

A

ALU

6

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

0

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

30

Zawartość

move 4

add 5
store 6

stop

Operacja [A]

RBD

Następna operacja jest przesłanie zawartości rejestru A do rejestru
buforowego danych RBD, aby można było wyprowadzić te zawartość na
zewnętrzna szynę danych wiodąca do pamięci operacyjnej. W ten sposób
liczba 30 znajdzie się w RBD.

background image

z

Store

6

Dekoder

Generator

sygnałów

Selektor

±

1

2

RR

LR

30

A

ALU

6

Warunki

T

ak

to

w

an

ie

Nr komórki

0
1
2
3
4

10

5

20

6

30

Dekoder

adresu

Sterowanie

pamięcią

RBD

RBA

30

Zawartość

move 4

add 5
store 6

stop

Operacja [RBD]

P (RBA)

Ostatnią operacją składową rozkazu „store 6” jest zapis danej 30 z rejestru
buforowego danych do komórki pamięci o adresie 6 wskazywanej przez
zawartość rejestru RBA.

Generator sygnałów sterujących podaje do układu sterowania pamięcią sygnał
„zapisz pamięć” oraz otwiera drogi (szynę adresową i danych) dla przesłania
adresu z rejestru RBA oraz danych z rejestru RBD.

background image

z

Potokowe wykonywanie operacji obliczeniowych

Potokowe przetwarzanie danych (ang. pipelined processing) polega na
zorganizowaniu wykonywania operacji w komputerze, w sposób podobny do
wytwarzania produkowania wyrobów w fabryce przy pomocy taśmy
produkcyjnej.

Taśma produkcyjna (ang. production pipeline) jest to urządzenie, które
przesuwa wytwarzane produkty między kolejnymi stanowiskami, na których
wykonywane są kolejne składowe operacje na produktach potrzebne do
wytworzenia całego wyrobu.

Stanowiska są ustawione w szereg wzdłuż taśmy w kolejności odpowiadającej
kolejnym fazom procesu produkcyjnego.

background image

z

Przed każdym przesunięciem taśmy na jej początek wstawia się kolejny
nieobrobiony przez taśmę produkt inicjalny (mogą to być surowce lub produkt
w stanie inicjalnym).

Produkt jest przesuwany następnie przez wszystkie stanowiska robocze.

Na każdym stanowisku produkt jest wzbogacany o wyniki wykonanych na
nim odpowiednich operacji.

Po przejściu przez wszystkie stanowiska produkt zamienia się w gotowy
wyrób.

Czas wykonania operacji na wszystkich stanowiskach na taśmie jest w
przybliżeniu taki sam.

W czasie między kolejnymi przesunięciami taśmy, muszą zakończyć się
operacje na wszystkich stanowiskach, by taśma mogła być przesunięta o jedno
stanowisko w kierunku ostatniej operacji w procesie produkcyjnym.

Podczas pracy taśmy produkcyjnej na której jest n stanowisk, obrabianych jest
jednocześnie n produktów.

background image

z

Po każdym przesunięciu taśmy schodzi z niej gotowy produkt, o ile na
początek taśmy stale podawane są produkty w stanie inicjalnym.

Przy produkcji taśmowej na n stanowiskach, szybkość uzyskiwania
gotowych wyrobów jest n razy większa
w porównaniu z taką organizacją
produkcji, gdzie nie ma przesuwającej się taśmy a cały wyrób jest
wytwarzany od początku do końca na jednym stanowisku.

background image

z

W informatyce taśmowe wykonywanie operacji obliczeniowych jest
nazywane przetwarzaniem potokowym.

Aby operacje obliczeniowe mogły być wykonywane w sposób potokowy
musimy zbudować układ wykonawczy, który będzie działał podobnie jak
taśma produkcyjna.

background image

z

W celu zaprojektowania potokowego wykonania danej operacji obliczeniowej
należy:

podzielić operację obliczeniową na pewną liczbę n operacji składowych,
wykonywanych sekwencyjnie - jedna po drugiej, takich, że czas wykonania
wszystkich operacji składowych jest w przybliżeniu identyczny,

zbudować dla każdej operacji składowej odrębny układ wykonawczy – tzw.
stopień potoku (ang. pipeline stage),

połączyć stopnie potoku w taki sposób, aby wyjście z poprzedniego stopnia
było podawane na wejście następnego stopnia,

zbudować układ synchronizacji przekazywania danych między stopniami,
aby dane przekazywane były między wszystkimi stopniami jednocześnie, w
odstępach czasu równych czasowi wykonania operacji składowych,
zwanych taktami potoku,

background image

z

zapewnić, aby w chwili przekazywania danych miedzy stopniami na
wejście pierwszego stopnia podawane były nowe argumenty operacji
obliczeniowej,

odbierać co każdy takt wyniki z ostatniego stopnia potoku, stanowiące
wyniki wykonania całej operacji obliczeniowej.

background image

z

Rzadko udaje się

podzielić operacje obliczeniową

na dokładnie równe

czasowo operacje składowe.

Dlatego, między stopniami potoku wstawia się układy buforowe, do których
wpisuje się wyniki działania stopni (patrz rysunek poniżej po prawej stronie).

Każdy układ buforowy stanowi układ dwu rejestrów: rejestru wyjściowego
stopnia poprzedniego i rejestru wejściowego stopnia następnego.

Rejestr wyjściowy służy do asynchronicznego zapamiętania wyniku stopnia
poprzedniego.

Rejestry w obrębie jednego bufora są połączone ze sobą równolegle, w taki
sposób, że co takt potoku następuje przepisanie zawartości rejestru
wyjściowego do wejściowego.

Przepisanie następuje we wszystkich buforach równocześnie, co zapewnia
układ sterowania potoku.

background image

z

Wyznacza się najdłuższy czas wykonania operacji wśród wszystkich stopni,
włączając w to zapis wyniku stopnia do wyjściowego rejestru buforowego i
ten czas przyjmuje się za długość taktu potoku.

Wyniki działania stopni przekazuje się ze wszystkich buforów na wejście
następnego stopnia w odstępach czasu równych przyjętemu taktowi potoku,
równemu najdłuższemu czasowi działania stopnia.

Pojedyncze rejestry buforowe umieszcza się również na wejściu pierwszego
stopnia i wyjściu ostatniego stopnia potoku.

Tak zbudowany potok pozwala na wykonanie przetwarzania potokowego
również dla operacji, które nie dają się podzielić na dokładnie równe czasowo
operacje składowe.

background image

z

Struktura potoku dla wykonania operacji obliczeniowej

Stopień 1 (operacja 1)

bufor 1

Stopień 2 (operacja 2)

bufor 2

Stopień n-1 (operacja n-1)

bufor n-1

Stopień n (operacja n)

rejestr we

rejestr wy

Sterowanie
przesłaniem danych
między stopniami

background image

z

Budowa bufora między stopniami potoku

Rejestr buforowy wy

Rejestr buforowy we

Do następnego stopnia

Z poprzedniego stopnia

Sterowanie
przesłaniem danych
między stopniami

background image

z

Łatwo zauważyć, że przez n-1 – pierwszych taktów działania potoku na
wyjściu potoku nie pojawi się żaden wynik.

Pierwszy wynik operacji pojawi się po n-tym takcie i odtąd po każdym takcie
będziemy odbierać wynik operacji obliczeniowej.

Pomijając początkowe opóźnienie,

potok obliczeniowy zawierający n stopni

przyspiesza więc wykonanie operacji obliczeniowej n–krotnie

.

background image

z

Potokowe wykonywania rozkazów

Ideę przetwarzania potokowego można z powodzeniem zastosować do
wykonania rozkazów w procesorze.

Jak wiadomo cykl wykonawczy rozkazu można podzielić na następujące
operacje składowe:

Pobranie rozkazu

Zdekodowanie rozkazu

Wyznaczenie adresu argumentów

Pobranie argumentów

Wykonanie operacji

Zapis wyników do pamięci

background image

z

Sprzęt wykonawczy komputera możemy zbudować w ten sposób, że każda z
podanych operacji składowych cyklu rozkazu będzie wykonana przez odrębny
układ wykonawczy.

Układ ten jest wstawiony jako stopień do potoku wykonania rozkazu, jak
pokazano na rysunku poniżej.

Założymy, że takt potoku ustalimy równy czasowi wykonania najdłuższej z
powyższych operacji składowych.

Między stopniami potoku wstawimy buforowe układy pamiętające, które będą
przechowywać wyniki wykonania stopnia poprzedniego jako wejście dla
stopnia następnego.

Na wejście potoku będziemy podawać adresy kolejne rozkazy programu
wykonywanego przez procesor.

background image

z

Stopnie potoku wykonującego rozkazy komputera

Pobranie rozkazu

Zdekodowanie rozkazu

Wyznaczenie adresu arg.

Pobranie argumentu

Wykonanie rozkazu

Zapis wyniku

adres rozkazu

background image

z

W kolejnych taktach potoku coraz to nowe adresy rozkazów będą
wprowadzane do pierwszego stopnia potoku i pobierane będą z pamięci
operacyjnej kolejne rozkazy programu.

Po 6-tym takcie potoku otrzymamy wykonanie pierwszego rozkazu programu
i po każdym następnym takcie będziemy mięć wykonany kolejny rozkaz
programu, o ile potok będzie pracował bez przestojów - tzn. każdy stopień
potoku będzie miał w każdym takcie gotowe dane wejściowe .

Potok wykonania rozkazów zawierający 6 stopni, pracujący bez przestojów,
przyspiesza wykonanie programu 6-ciokrotnie.

Dzieje się tak dlatego, że przy pomocy potoku

wykonanie programu zostaje

zrównoleglone

.

Każdy stopień potoku pracuje dla innego rozkazu

.

background image

z

Wykonanie potokowe rozkazów

2

2

2

2

2

2

3

4

5

6

7

8

3

4

5

6

7

3

4

5

6

3

4

5

3

4

3

1

1

1

1

1

1

1

2

3

4

5

6

7

8

nr rozkazu

takty zegara

Stopnie potoku:

pobranie rozkazu

zdekodowanie rozkazu

wyznaczenie adresu operandów

pobranie argumentów

wykonanie operacji rozkazu

zapis wyniku

background image

z

Przy wykonywaniu programów metodą potokową

występują problemy

z

wykonaniem pewnych typów rozkazów oraz z wykonaniem programów o
pewnych strukturach następstwa rozkazów.

Rozkazy te powodują tzw. przestoje w potoku, z powodu braku danych na
wejściu stopni potoku.

Brak danej wejściowej uniemożliwia pracę danego stopnia, brak wyniku do
przesłania do następnego stopnia a w konsekwencji, z pewnym opóźnieniem,
brak wyniku na wyjściu potoku.

Jeśli brak danych wejściowych trwa więcej niż jeden takt, powoduje to
zatrzymanie pracy całego potoku (jego końcowego stopnia) na tyle taktów, dla
ilu brak było danych wejściowych.

background image

z

Problem rozkazów skoku

Pierwszym typem rozkazów, które powodują przestoje w potoku wykonania
rozkazów są rozkazy skoku.

Wynikiem rozkazu skoku jest wprowadzenie do licznika rozkazów adresu
następnego rozkazu do wykonania tj. adresu wytworzonego (lub zawartego) w
tym rozkazie.

background image

z

Przykład

0

1

2

3

4

5

6

7

8

9 10 11 12 13

rozkaz skoku

r

1

r

2

r

3

r

4

r

5

r

6

czas

Pobranie rozkazu

Zdekodowanie rozkazu

Wyznaczenie adresu arg.

Pobranie argumentu

Wykonanie rozkazu

Zapis wyniku

adres rozkazu

Dla pobrania rozkazu R

4

, jego adres powinien znaleźć się w liczniku

rozkazów już w chwili 3. Natomiast rozkaz skoku R

3

dostarczy ten adres

dopiero w chwili 8. Tak więc, pierwszy stopień potoku nie będzie mógł
pracować w chwilach od 3 do 7, powodując w konsekwencji przestoje
dalszych stopni potoku i brak wyników na wyjściu potoku.

background image

z

Sytuację tę można poprawić w trakcie kompilacji programu.

Kompilator umieszcza w programie za rozkazem skoku odpowiedniej liczby
rozkazów „nic nie rób”, które zastepuje nastepnie rozkazami obliczeniowymi
obojętnymi z punktu widzenia miejsca ich wykonania w programi.

W ten sposób lukę w ciągłej pracy potoku może być wypełniona.

Metoda ta nosi nazwę opóźnionych skoków (ang. delayed branches).

background image

z

Problem wzajemnej zależności kolejnych rozkazów

Inna sytuacją w programie, w której potok zostaje wstrzymany jest
bezpośrednia zależność kolejnych rozkazów ze względu na dane.

Dzieje się tak, gdy następny rozkaz wykonuje operację na wyniku
poprzedniego.

Przykład

M (125) = M (125) + R1 (ADD)

R2 := R2

M (125) (MUL)

gdzie: ADD, MUL oznacza rozkazy dodaj, pomnóż;

M(125), R1, R2 oznaczają odpowiednio zawartości: komórki pamięci o
adresie 125, rejestru R1, rejestru R2.

background image

z

0

1

2

3

4

5

6

7

8

9 10 11 12 13

ADD

r

1

r

2

r

3

r

4

r

5

czas

MUL

Przestój potoku
z powodu braku
danej M (125)
wytworzonej
przez ADD

Pobranie rozkazu

Zdekodowanie rozkazu

Wyznaczenie adresu arg.

Pobranie argumentu

Wykonanie rozkazu

Zapis wyniku

adres rozkazu

Przestój potoku w wyniku zależności sąsiednich instrukcji

Na rysunku wykonania programu powyżej, widzimy przerwę długości 2
taktów potoku w wykonywaniu instrukcji MUL z powodu braku wyliczonego
i odesłanego do pamięci wyniku dodawania ADD.

background image

z

Przerwa ta może być wypełniona przez wykonanie dwu obojętnych instrukcji
obliczeniowych, wstawionych przez kompilator do programu bezpośrednio po
instrukcji ADD.

Podsumowanie

Na wstępie wykładu omówiono organizację cyklu wykonania rozkazów w
komputerze o modelu architekturalnym von Neumana. W wykładzie
przedstawiono sposób wykonywania rozkazów w prostym programie.
Następnie przedstawiono zasady potokowego wykonywania operacji w
komputerach. W ostatniej części wykładu, omówiono metody potokowego
wykonywania rozkazów w programach komputerowych.

Przedstawiono problemy związane z uzyskaniem pełnej wydajności potoku
rozkazowego.

background image

z

Spis literatury do wykładu

1. Organizacja i architektura komputerów, B.S. Chalk, WNT, 1996,

2. Podstawy budowy i działania komputerów, A. Skorupski, WKŁ, 2000.

3. Architektura komputerów, J. Biernat, Oficyna Wydawnicza Politechniki

Wrocławskiej, 1999.

4. Organizacja i architektura systemu komputerowego, W. Stallings, WNT,

2000.


Wyszukiwarka

Podobne podstrony:
niemiecki pr ii 2011
PR s II
angielski PR II
2007 MAJ OKE PR II ODP
2 historia sztuki model PR A1 A Nieznany (2)
2005 GRUDZIEŃ OKE PR II
2005 MAJ OKE PR II ODP
francuski pr ii 2013
lacina model PR
Model odpowiedz II etap 2012 id Nieznany
Model pr I(TAK8)
hiszpanski pr ii 2013
2006 MAJ OKE PR II ODP
2006 GRUDZIEŃ OKE PR II
hiszpanski PR II
2011 MAJ OKE PR II

więcej podobnych podstron