background image

ARCHITEKTURA PROCESORA 

 

Listy rozkazów: własności i funkcje 

 

Elementy rozkazu maszynowego 

!"

Kod operacji. Określa operację, jaka ma być przeprowadzona (na 
przykład, ADD); 

 

!"

Odniesienie do argumentów źródłowych. Operacja może 
obejmować jeden lub wiele argumentów źródłowych, są one danymi 
wejściowymi operacji; 

 

!"

Odniesienie do wyniku. Operacja może prowadzić do powstania 
wyniku; 

 

!"

Odniesienie do następnego rozkazu. Określa, skąd procesor ma 
pobierać następny rozkaz po zakończeniu wykonania bieżącego 
rozkazu. 

 
Reprezentacja rozkazu 
 
Rozkaz jest reprezentowany wewnątrz komputera jako ciąg bitów. 
Rozkaz dzielony jest na pola odpowiadające elementom składowym 
rozkazu. 
 
 
 
 
 
 
Prosty format rozkazu 
 
 
Formaty rozkazów: 

!"

sztywne 

!"

swobodne 

 
Rodzaje rozkazów: 

!"

rozkazy arytmetyczne i logiczne (przetwarzanie danych), 

!"

rozkazy pamięciowe (przechowywanie danych), 

!"

rozkazy wejścia-wyjścia (przesyłanie danych), 

Kod 

operacji 

Odniesienie do 

argumentu 

Odniesienie 

do argumentu 

background image

!"

rozkazy testowania i rozgałęzienia (sterowanie). 

 
 
 
Liczba adresów: 

!"

rozkazy bezadresowe (działające na stosie), 

!"

rozkazy jednoadresowe, 

!"

rozkazy dwu- lub trzyadresowe. 

Adres następnego rozkazu jest domyślny (uzyskiwany z licznika 
programu). 
 
 
Projektowanie listy rozkazów 
Liczba adresów w rozkazie jest podstawową decyzją projektową.  
 
Do najważniejszych problemów projektowania listy rozkazów należą: 
Repertuar operacji

Rodzaje danych; 
Format rozkazu

. Długość rozkazu, liczba adresów, rozmiary pól itp.; 

Rejestry

. Liczba rejestrów procesora oraz ich zastosowanie. 

Adresowanie

. Tryb lub tryby, w których są specyfikowane adresy 

argumentów. 
 
Rodzaje argumentów: 

!"

adresy, 

!"

liczby (całkowite  lub stałopozycyjne, zmiennopozycyjne, 
dziesiętne), 

!"

znaki, 

!"

dane logiczne (Prawda, Fałsz). 

 

background image

Rodzaje danych Pentium: 
 

!"

Ogólne. Lokacje o dowolnej zawartości binarnej obejmujące bajt, 
słowo (16 bitów), podwójne słowo (32 bity) lub poczwórne słowo. 

 

!"

Całkowite. Wartości binarne ze znakiem, zawarte w bajcie, słowie lub 
podwójnym słowie, w reprezentacji uzupełnienia do dwóch. 

 

!"

Porządkowe. Liczby całkowite bez znaku (bajt, słowo, podwójne 
słowo). 

 

!"

Liczba dziesiętna nieupakowana BCD.  

!"

Liczba dziesiętna upakowana BCD.  

 

!"

Wskaźnik bliski. 32-bitowy adres efektywny, reprezentujący 
przesunięcie wewnątrz segmentu. 

 

!"

Łańcuch bajtów. Sekwencja sąsiadujących bajtów (od zera do 2

32

-1 

bajtów). 

 

!"

Zmiennopozycyjne: 

pojedynczej precyzji – 32-bitowe słowo, mantysa 24-bity, cecha w 
systemie z przesuniętym wykładnikiem; 
podwójnej precyzji – 64-bity, mantysa 52-bity; 
precyzja rozszerzona – 80-bitów, mantysa 64 bitowa. 

background image

Organizacja procesora 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Organizacja rejestrów 
 
Rejestry w procesorze można podzielić na dwie grupy: 

!"

Rejestry widzialne dla użytkownika; 

!"

Rejestry sterowania i stanu. 

 
 
Rejestry widzialne dla użytkownika: 

!"

ogólnego przeznaczenia (ang. general purpose), 

!"

danych, 

!"

adresowe (wskaźniki segmentu, rejestry indeksowe, wskaźnik stosu). 

 

Znaczniki stanu 

Układ przesuwny 

Układ 

dopełniania 

Układy 

logiczne i 

arytmetyczne 

Wew

n

ętrz

n

a

m

ag

is

tral

a

p

ro

ce

so

ra

Jednostka arytmet. - logiczna 

 

 

 

Rejestry 

 

Jednostka 

sterująca 

Ścieżki 

sterowania 

background image

Rejestry sterowania i stanu 
 

!"

Licznik programu (PC). 

!"

Rejestr rozkazu (IR). 

!"

Rejestr adresowy pamięci (MAR). 

!"

Rejestr buforowy pamięci (MBR). 

!"

Słowo stanu programu (ang. program status word – PSW). 

 
W rejestrach PSW występują następujące pola (flagi): 
Znak. Bit znaku ostatniej operacji arytmetycznej; 
Zero. Flaga ustawiana, gdy wynik równy zeru; 
Przeniesienie. Ustawiane, gdy wynikiem operacji jest przeniesienie do 
kolejnego słowa (umożliwia realizacje wielokrotnej precyzji); 
Przepełnienie. Nadmiar arytmetyczny. 
Zezwolenie /blokowanie przerwania. Używane do obsługi przerwań. 
Pułapka (ang. Trap). 
Tryb procesora. Wskazuje , czy procesor pracuje w trybie nadzorcy, 
czy użytkownika. 
Wskaźnik do bloku sterowania procesem
Wskaźnik tablicy stron. Dla systemu pamięci wirtualnej. 
itp. 
 
 
 
 
 
 

background image

Przykładowe organizacje rejestrów w mikroprocesorach 

Architektura mikroprocesora 8086 

AH

BL

BH

AL

CH

DL

DH

CL

SP

DI

SI

BP

CS

ES

SS

DS

0000

0000

0000

0000

PC

0

7

8

15

AX

BX

CX
DX

0

15

0

15

Magistrala wewnętrzna

Bufor

magistrali

zewnętrznej

6

3

4

5

2
1

Kolejka rozkazów

ALU

Jednostka sterująca

Rejestr znaczników

Rejestr rozkazów

Jednostka sterująca

BIU

Jednostka wykonawcza

EU

0

15

 

 

background image

Rejestry mikroprocesora 8086 

  Mikroprocesor 8086 zawiera 14 szesnastobitowych rejestrów 

widocznych dla programisty: 

1. Rejestry ogólnego przeznaczenia, służące głównie do przechowywania wyników 

pośrednich, ich zawartości mogą być argumentami większości rozkazów: 

AX - akumulator; niektóre rozkazy dotyczące tego rejestru wykonują się szybciej 

niż na innych rejestrach ogólnych lub są o 1 bajt krótsze. 

BX - rejestr bazowy; dodatkowo może być wykorzystany do tzw. adresowania 

bazowego - zawiera wówczas przesunięcie (OFFSET) argumentu. 

CX - rejestr zliczający lub licznikowy; może być wykorzystywany w rozkazach jako 

licznik wykonań - jest wówczas zmniejszany o 1 za każdym wykonaniem i 

jego zawartość podlega badaniu, czy nie uległa wyzerowaniu. 

DX - rejestr danych, jako jedyny może być wykorzystywany do adresowania 

obiektów w przestrzeni adresowej wej/wyj (portów) w rozkazach wej/wyj, a 

także w rozkazach o argumentach lub wynikach długości większej niż jedno 

słowo (np. rozkazy mnożenia lub dzielenia). 

Szesnastobitowe rejestry ogólnego przeznaczenia mogą być interpretowane 

jako pary rejestrów ośmiobitowych stanowiących mniej i bardziej znaczącą część 

rejestru szesnastobitowego. Identyfikator rejestru stanowiącego mniej znaczącą 

część rejestru ogólnego kończy się na L, zaś identyfikator rejestru stanowiącego 

bardziej znaczącą część rejestru ogólnego kończy się na H. Argumentami 

rozkazów mogą być zarówno rejestry ogólne jako całość, jak i ich ośmiobitowe 

części. 

background image

0

7

8

15

0

15

IP

SP

BP

SI

Rejestry adresowe

Wskaźnik rozkazu

Wskaźnik wierzchołka stosu

Wskaźnik bazy

Indeks źródła

DI

Indeks celu

0

15

CS

SS

DS

ES

Rejestry segmentowe

Segment kodu programu

Segment stosu

Segment danych

Segment dodatkowy

0

15

F

Rejestr znaczników (flag)

AH AX AL

BH BX BL

CH CX CL

DH DX DL

Rejestry ogólnego przeznaczenia

Akumulator

Rejestr bazowy

Rejestr zliczający

Rejestr danych

 

 Rejestry mikroprocesora 8086 

 

 

 

 

background image

Przemieszczenie

0  0  0  0

Segment

0  0  0  0

Adres efektywny

Adres bazowy segmentu

0

0

15

15

Adres fizyczny

20 bitowy

 

2. Rejestry adresowe, służące głównie do przechowywania adresów względnych 

(OFFSET), chociaż mogą być też wykorzystywane jako rejestry robocze - 

możliwości użycia ich zawartości jako argumentów rozkazów są tylko w niewielkim 

stopniu ograniczone w porównaniu z rejestrami ogólnego przeznaczenia: 

IP - wskaźnik rozkazu (ang. instruction pointer), zawiera zawsze adres względny 

(względem początku segmentu określonego przez zawartość rejestru CS) 

aktualnie pobieranego do wykonania rozkazu, rejestr ten stanowi z punktu 

widzenia programisty (wraz z rejestrem CS) część licznika rozkazów; 

rejestr IP nie może być zmieniany przez program

SP - wskaźnik wierzchołka stosu; zwykle zawiera adres względny (względem 

początku segmentu określonego przez zawartość rejestru SS) wierzchołek 

stosu, tzn. adres ostatniego słowa odłożonego na stosie; w przypadku 

pisania programów przeznaczonych do pracy pod kontrolą systemu 

operacyjnego należy rejestrem SP posługiwać się ze szczególną 

ostrożnością. 

BP - rejestr wskaźnika bazy; zwykle zawiera adres względny (względem początku 

segmentu określonego przez zawartość rejestru SS) parametrów odłożonych 

na stosie (dla procedur w językach wysoko poziomowych); rejestr BP może 

być wykorzystany także do innych celów. 

SI - rejestr indeksu źródła (miejsca, z którego pobierane są dane w operacjach 

przesyłania danych); zwykle zawiera adres danych względem początku 

segmentu określonego zawartością rejestru DS; rejestr SI wykorzystywany 

jest do tzw. adresowania indeksowego oraz w rozkazach łańcuchowych 

background image

(operacjach na ciągach znaków), może też być wykorzystany do innych 

celów. 

DI - rejestr indeksu celu; zwykle zawiera adres danych względem początku 

segmentu określonego zawartością rejestru DS; rejestr DI wykorzystywany 

jest do tzw. adresowania indeksowego oraz w rozkazach łańcuchowych - w 

tym przypadku jednak zawiera adres względem początku segmentu 

określonego zawartością rejestru ES, może też być wykorzystany do innych 

celów. 

3. 

Rejestry segmentowe służą do przechowywania wartości (SEGMENT) 

określających adresy początkowe segmentów przy odwołaniach do pamięci: 

CS - rejestr segmentu kodu programu określa adres początku segmentu używany 

w przypadku wszystkich dostępów do pamięci z adresowaniem względnym za 

pomocą rejestru IP, tzn. pobierania rozkazów. Z punktu widzenia 

programisty rejestr CS razem z rejestrem IP tworzy licznik rozkazów 

mikroprocesora 8086 (CS:IP)

SS - rejestr segmentu stosu programu określa adres początku segmentu używany 

w przypadku wszystkich dostępów do pamięci z adresowaniem względnym za 

pomocą rejestru SP lub BP, jeśli zadano wykorzystanie tego rejestru, tzn. BP 

specjalnym rozkazem. 

DS - rejestr segmentu danych określa adres początku segmentu używany w 

przypadku wszystkich dostępów do pamięci danych (np. za pomocą rejestrów 

BX, SI, DI lub za pomocą adresu podanego bezpośrednio w rozkazie). 

ES -  rejestr segmentu danych określa adres początku segmentu używany w 

przypadku wszystkich dostępów do pamięci danych w rozkazach 

łańcuchowych - działania na ciągach adresowanych za pomocą rejestru DI. 

Rejestry segmentowe mogą być argumentami wyłącznie rozkazów przesłania 

MOV, PUSH i POP. 

4. Rejestr znaczników F jest konstrukcją składającą się z szeregu jednobitowych 

rejestrów określających stan procesora. Rejestr znaczników zawiera tzw. słowo 

stanu. Słowo stanu ma postać jak na rys. 

background image

X

X

X

X OF DF IF TF

ZF

X

AF X

PF

X CF

SF

15 14 13 12 11 10

9

8

6

5

4

3

2

1

0

7

nadmiar

kierunek

maska przerwań

maska przerwań po każdym

rozkazie

wskaźnik ujemnego wyniku

wskaźnik wyniku zerowego

przeniesienie pomocnicze

wskaźnik parzystości

przeniesienie

 

Słowo stanu mikroprocesora 8086 

   

Poszczególne bity rejestru wskaźnika dzielą się na dwie grupy: 

1. Wskaźników określających sposób działania procesora: 

TF - bit 8, powoduje (stan 1) przerwanie nr. 3, z jednoczesnym zgaszeniem TF, po 

wykonaniu jednego rozkazu - wykorzystywany przez specjalistyczne 

oprogramowanie uruchomieniowe; 

IF - bit 9, zezwala (stan 1) na przyjmowanie przerwań zewnętrznych; wyzerowanie 

tego bitu powoduje zablokowanie przyjmowania przerwań zewnętrznych, poza 

tzw. przerwaniem niemaskowalnym (NMI); 

DF - bit 10, określa czy zawartości rejestrów SI i DI w trakcie wykonywania 

rozkazów  łańcuchowych mają być zwiększane (DF=0), czy zmniejszane 

(DF=1). 

2. Wskaźników ustawianych w wyniku wykonywania różnych rozkazów: 

CF - wskaźnik przeniesienia globalnego, zmieniany rozkazami arytmetycznymi i 

przesunięć, zerowany rozkazami logicznymi; 

OF - wskaźnik nadmiaru, zmieniany rozkazami arytmetycznymi i zerowany 

rozkazami logicznymi; OF jest zmieniany również w rozkazach przesunięć, 

których drugi argument jest równy 1; 

 

background image

 

Układ wyboru

banku pamięci

A0

Dekoder
adresów
A1...A19

 

1

Bank pamięci

zawierający mniej

znaczące bajty

D0...D7

Układ wyboru

banku pamięci

Dekoder
adresów
A1...A19

 

2

D0...D7

Bank pamięci

zawierający bardziej

znaczące bajty

Multipleksowana

szyna adresów i

danych

AD8...AD15

AD0...AD7

BHE

A1...A19

A1...A19

A0

Szyna danych

Szyna adresowa

 

Organizacja pamięci w systemie z mikroprocesorem 8086

background image

SF - wskaźnik znaku (ujemnego wyniku), zmieniany rozkazami arytmetycznymi i logicznymi; 

ZF - wskaźnik zera wyniku, zmieniany rozkazami arytmetycznymi i logicznymi; 

PF - wskaźnik parzystej liczby jedynek w zapisie binarnym wyniku, zmieniany rozkazami arytmetycznymi i logicznymi; 

AF - wskaźnik przeniesienia pomocniczego (z bitu 3 na 4) ustawiany na potrzeby rozkazów arytmetyki dziesiętnej. 

 

background image

Ste- 

rowa-

nie 

Sterowanie magistrali 

S1, S0, COD/ INTA 

LOCK, HLDA

 

 

Sumator 

przemieszczenia

 

Sumator 
adresów 

fizycznych

 

Bazy 

segmentów 

Rozmiary 

segmentów 

Kontrola 

ograniczeń 

Blok 

generacji 

adresów 

ALU

 

Blok 

rejestrów 

roboczych 

Blok przetwarzania 

Kolejka zdekodowanych 

rozkazów 

Dekoder 

rozkazów 

Blok 

dekodera 

Zatrzaskujące bufory adresów 

Układ 

wprowadzania 

rozkazów 

Interfejs 

z układami 

rozszerzającymi 

(koprocesorami) 

Bufory danych 

6-bajtowa 

kolejka 

rozkazów 

A23....A0 

BHE,M / IO

 

PEACK

 

PEREQ

 

READY, HOLD

 

D15...D0

 

RESET

 

CLK

 

GND

 

U

CC

 

CAP

 

BUSY

 

ERROR

 

INTR

 

NMI

 

Blok 

interfejsu 

 

Schemat blokowy mikroprocesora 80286. 

background image

 

Dane

ALU

Zestaw

rejestrów

Rejestr

przesuwający

Blok

segmentacji

Tablica
deksry-

ptorów

Blok

interfejsu

Sterowanie

Adresy

Blok

wprowadzania

Kolejka

rozkazów

Dekoder

rozkazów

Kolejka

Sterowanie

Blok

kontroli

dostępu

Blok prze-

twarzania

danych

Blok programu

Blok

stronicowania

TLB

 

Schemat funkcjonalny mikroprocesora 80386. 

Mikroprocesor

Rozkaz n+2

Rozkaz n

Rozkaz n+1

Blok wyprzedzającego

wprowadzania

Rozkaz n-1

Dekoder rozkazów

Rozkaz n-2

Rozkaz n

Rozkaz n-1

Rozkaz n+1

Rozkaz n+3

Rozkaz n+2

Pamięć programu

 

Mechanizm wyprzedzającego wprowadzania kodów rozkazów. 

background image

Układ przesuwania

Blok rejestrów

ALU

Blok segmentacji

Deskryptory

Długości segmentów

i prawa dostępu

Blok

stronnicowania

Blok pamięci

Cache

Kolejka

rozkazów

Blok

wprowadzania

Dekoder

instrukcji

Jednostka

zmiennopozycyjna

Blok rejestrów

zmiennopozycyjnych

Blok

interfejsu

szyny

Sterowanie

Pamięć

mikroprogramów

20

32

32

32

2

128

Adres fizyczny

Szyna adresu liniowego

32

24

Zdekodowane

instrukcje

Strumień
instrukcji

PCD, PWT

32

Adres A2..A31

Dane D0..D31

Sterowanie

JTAG

mikroinstrukcje

Szyna danych

Szyna danych

64-bitowa wewnętrzna szyna danych

 

Schemat blokowy mikroprocesora 80486. 

 

background image

Kolejka rozkazów 

Dekoder instrukcji 

Jednostka sterująca 

Blok rejestrów 

 

Bufor 

kierunku 

skoków 

TLB 

Cache programu 

8 KB 

Cache danych 

8 KB 

TLB 

Układ generacji 

adresów  

(potok U

Układ generacji 

adresów  

(potok V

ALU  

(potok U

ALU  

(potok V

Rejestr 

przesuwny 

Blok 

stroni-

cowania 

256 

Wskaźnik 

instrukcji 

Pamięć 

mikroinstrukcji 

ROM 

Blok 

interfejsu 

64-bitowa 

szyna 

danych 

32-bitowa 

szyna 

adresowa 

Sterowanie 

Jednostka zmienno-

przecinkowa 

Blok rejestrów 

Dodawanie 

Dzielenie 

Mnożenie 

80 

80 

64-bitowa 

szyna 

danych 

32-bitowa 

szyna 

adresowa 

32 

32 

32 

32 

32 

32 

Schemat blokowy 

mikroprocesora Pentium

 

background image

 

18 

Rozszerzenie systemu operacyjnego

PL = 2

Jądro

PL = 0

Usługi systemowe

PL = 1

Zadania użytkowe

PL = 3

Interfejsy

programowe

realizowane

przez CPU.

 

Hierarchiczny system poziomów uprzywilejowania. 

 

 

background image

 

19 

Organizacja rejestrów procesora PENTIUM 

 

Rodzaje rejestrów: 

!"

Ogólnego przeznaczenia (robocze). Występuje 8 32-bitowych 
rejestrów ogólnego przeznaczenia; 

!"

Segmentowe. Sześć  16-bitowych rejestrów segmentowych zawiera 
selektory segmentu służące jako indeksy w tablicach segmentów. 

!"

Znaczniki stanu. Rejestr EFLAGS zawiera kody warunkowe i różne 
bity trybu. 

!"

Wskaźnik rozkazu. Zawiera adres bieżącego rozkazu. 

!"

Rejestry do współpracy z jednostką zmiennopozycyjną
numeryczne – 8 rejestrów 80-bitowych, dostępnych jako stos; rejestr 
sterowania – 16-bitowy rejestr sterowania; 
rejestr stanu
słowo wyróżników

 

background image

 

20 

Rejestry sterowania 
Pentium wykorzystuje cztery 32-bitowe rejestry sterowania CR0, CR2, 
CR3, CR4. 
Rejestr CR0 zawiera znaczniki stanu sterowania systemowego, które 
sterują trybami lub wskazują stany odnoszące się raczej do procesora 
niż do wykonywanego programu. Znaczniki te są następujące: 
Zezwolenie ochrony (PE). Włącza lub blokuje tryb chroniony. 
Monitorowanie koprocesora (MP).  
Emulacja (EM).
 Ustawiany, gdy procesor nie ma jednostki 
zmiennopozycyjnej. 
Błąd numeryczny (NE). Umożliwia standardowy mechanizm zgłaszania 
błędów zmiennopozycyjnych na zewnętrznych liniach danych. 
Ochrona zapisu (WP). Gdy ten bit jest zerem, strony tylko do odczytu 
na poziomie uprzywilejowania użytkownika mogą być zapisane przez 
program nadzorczy (SO). 
Brak zapisu jednoczesnego (NW). Wybiera tryb pracy pamięci 
podręcznej danych. Gdy bit ten jest ustawiony, operacje zapisu 
jednoczesnego pamięci podręcznej są zablokowane. 
Blokowanie pamięci podręcznej (CD). Włącza lub blokuje mechnizm 
zapełniania wewnętrznej pamięci podręcznej. 
 
Rejestr CR2  służy do przechowania 32-bitowego adresu liniowego 
ostatniej strony, która spowodowała błąd strony. 
 
Rejestr CR3 (20 bardziej znaczących bitów) – adres podstawowego 
katalogu stron. 
 
W rejestrze CR4 jest zdefiniowanych 6 dodatkowych bitów kontrolnych. 
 
 
 
 
 
 

background image

 

21 

Komputery o złożonej liście rozkazów (CISC) 
 
Charakteryzowały się stosowaniem bogatej listy rozkazów, które 
zawierały zarówno większą liczbę rozkazów, jak i rozkazy bardziej 
złożone. 
 
Powody takiej tendencji: 
-  dążenie do uproszczenia kompilatorów (architekci dążyli do 

zaprojektowania maszyn, które zapewniałyby lepsze wsparcie 
języków wysokiego poziomu), 

-  dążenie do poprawy wydajności 
 
 
Własności architektur o zredukowanej liście rozkazów (RISC) 
 

!"

Jeden rozkaz na cykl 

!"

Operacje typu „z rejestru do rejestru” 

!"

Proste tryby adresowania 

!"

Proste formaty rozkazów 

background image

 

22 

 

Układy wej / wyj

Układy współpracujące

z klawiaturami

i wskaźnikami

Układy sterujące

minitory ekranowe

Układy sterujące
dyski elastyczne

Programowane układy

sterowania przerwań

Układy sterowania

kanału DMA

Programowane

liczniki

Układy

wielofunkcyjne

Układy służące do

równoległego

przesyłania informacji

Programowane

układy wej / wyj

Proste układy typu:
 - rejestr zatrzaskowy;
 - bufor.

Układy służące do

szeregowego przesyłania

informacji

Synchroniczne

Asynchroniczne

Synchroniczne

i asynchroniczne

Podstawowe

uniwersalne

układy wej / wyj

Specjalizowane

układy wej / wyj

Układy

sterujące

Inne

układy

 

Układy wej / wyj współpracujące z monitorem 

 

 

 

background image

 

23 

 

 

 

 

 

 

Porównanie parametrów procesorów PENTIUM 

Wyszczególnienie 

Pentium 

Pentium Pro 

Pentium MMX 

Pentium II 

Częstotliwość procesora 

[MHz] 

75 - 200 

150 - 200 

166/200/233 233-400 

Częstotliwość magistrali 

[MHz] 

50/60/66 60/66 

66 

66 

Szerokość magistrali 

wewnętrznej 

64-bity 64-bity 300-bitów  300 

Pamięć podręczna L1 [KB] 

8 + 8 

/rozkazy+dane/ 

8 + 8 

/rozkazy+dane/ 

16 + 16 

/rozkazy+dane/ 

16 + 16 

/rozkazy+dane/ 

Częstotliwość magistrali 

pamięci L1 [MHz] 

75 - 200 

150-200 

166/200/233 233-400 

Pamięć podręczna L2 [KB] 

----------- 256/512 ------------  512 

Częstotliwość magistrali 

pamięci L2 [MHz] 

----------- 

150-200 ------------ 

Częstotliwość L1 / 

 

background image

 

24 

Potokowe przetwarzanie danych (Pipelining). 

 

Mechanizm ten pozwala procesorowi na rozbicie pojedynczego rozkazu na 

kilka-kilkanaści części - etapów, które są następnie przetwarzane potokowo niczym 

na taśmie produkcyjnej. Im więcej etapów, tym na pojedynczy etap przypada 

mniejszy zakres zadań i może zostać zastosowana większa częstotliwość 

taktowania. Każde z typów zadań ma przydzieloną oddzielną jednostkę do jego 

wykonywania. Każda jednostka rozwiązuje tylko jeden, określony typ zadań i wyniki 

przekazuje do następnego etapu. W rezultacie uzyskuje się wzrost prędkości 

roboczej procesora. 

Superskalarność 

 

Jest to właściwość procesorów, w których jest więcej niż jeden potok. Procesor 

przydziela realizację określonych instrukcji wolnym w danym momencie potokom, 

przy jednoczesnym usuwaniu zależności pomiędzy poszczególnymi instrukcjami, aby 

uniknąć zbędnego oczekiwania. W wyniku tego żaden z rozkazów znajdujących się 

w potoku nie musi oczekiwać na wynik realizacji rozkazu w innym potoku i 

wstrzymywać przetwarzania pozostałych poleceń. 

Dynamiczne wykonywanie rozkazów (Dynamic Execution). 

Pod tym pojęciem kryje się kombinacja trzech technik, po raz pierwszy 

zastosowana w Pentium Pro, dzięki którym procesor osiąga znaczny wzrost 

wydajności. Są to: 

• 

mechanizm prognozowania rozgałęzień, 

• 

analiza przepływu danych, 

• 

spekulacyjne wykonywanie rozkazów. 

Mechanizm prognozowania rozgałęzień. 

Zadaniem tego mechanizmu jest przewidywanie miejsca gdzie nastąpi skok po 

wykonaniu rozkazu warunkowego. Działanie mechanizmu polega na porównywaniu i 

analizie sekwencji rozkazów na poszczególnych etapach potoku. Dzięki czemu jest 

on wstanie z dużym prawdopodobieństwem określić, które rozgałęzienie zostanie 

wybrane oraz która sekwencja rozkazów będzie przetwarzana jako kolejna, po czym 

kontynuuje wykonywanie programu od tego miejsca. Efektywność tego mechanizmu 

w praktyce sięga 90%. 

 

background image

 

25 

Analiza przepływu danych 

Jest to jeden z mechanizmów dynamicznego wykonywania rozkazów w 

procesorze. Polega na analizie i ustalaniu optymalnej kolejności wykonywania 

instrukcji. Analizując przepływające dane procesor sprawdza i określa, czy kolejne 

rozkazy są dostępne i czy mogą być wykonane, tzn. czy ich realizacja nie jest 

zależna od wyników aktualnie wykonywanych rozkazów. 

Spekulacyjne wykonywanie rozkazów (Speculation Execution). 

Jest to mechanizm, który pozwala rozpocząć wykonywanie rozkazu wcześniej, 

niż to wynika z normalnej sekwencji rozkazów. Procesor wykonuje następne rozkazy, 

mimo  że czeka na wynik realizowanej równolegle instrukcji skoku. Jeśli za pomocą 

mechanizmu prognozowania skoków, procesor prawidłowo ocenił adres skoku, 

przyjęta spekulacyjnie koncepcja jest właściwa i przynosi w efekcie duży wzrost 

wydajności. Wyniki przetwarzania spekulacyjnego są przetrzymywane chwilowo w 

buforze ROB (Re-Order Buffer). 

Bufor translacji adresów TLB (Translation Lookside Buffer). 

Jest to element pamięci podręcznej, w którym przechowywane są ostatnio 

używane odwołania do tablicy pamięci podręcznej. Używany jest do przyspieszenia 

wyznaczania adresu fizycznego pamięci. Jeżeli odwołanie do pamięci wykorzystuje 

informację zawartą w TLB to czas translacji adresu wynosi tylko pół taktu zegara. 

Łączny czas przetwarzania adresu logicznego na fizyczny (wyliczenie adresu 

efektywnego, segmentacja i stronicowanie) zajmuje wówczas 2 takty zegara. 

Procesor ma zwykle dwa bufory tego typu: jeden dla pamięci podręcznej danych, 

drugi dla pamięci podręcznej rozkazów. 

Bufor rozgałęzień (Branch target buffer). 

Jest to pamięć skojarzeniowa o nie wielkiej pojemności (zwykle 128-512 

pozycji) będąca elementem mechanizmu prognozowania rozgałęzień, której 

zadaniem jest prognozowanie skoków w programie. Wykorzystując złożone 

algorytmy  śledzi ona zawartość pamięci podręcznej programu i wskazuje, opierając 

się na historii skoków, który rozkaz powinien być pobrany w następnej kolejności. 

 

 

background image

 

26 

Przekazywanie danych (Data forwarding). 

Jest to mechanizm, którego działanie polega na przekazaniu danych 

odczytanych z pamięci na żądanie jednej instrukcji wszystkim instrukcjom, które ich 

żądają a są przetwarzane w innych potokach. Przekazaniem danych steruje 

procesor. Dzięki niemu uzyskuje się dane dla kilku instrukcji, przy jednokrotnym 

dostępie do pamięci. Mechanizm ten realizuje również czynność przekazania wyniku 

operacji z jednego potoku do instrukcji przetwarzanej w drugim potoku w sposób 

bezpośredni, tzn. bez zapisu do pamięci czy rejestrów. Mechanizm ten może być 

stosowany w procesorach superskalarnych.