You are on page 1of 175

Višeprocesorski sustavi,

višejezgreni i grafički procesori


1. Oblici i razine paralelizma
2. Paralelne arhitekture
3. Višeprocesorski SIMD sustavi
4. Vektorski procesori
5. Multiprocesorski sustavi – višeprocesorski MIMD sustavi
6. Koherencija priručne memorije u multiprocesorskom sustavu
7. Sinkronizacija procesa i dretvi
8. Višejezgreni procesori
9. Grafički procesori
1. Oblici i razine paralelizma
- do osamdesetih godina prošlog stoljeća – prevladavao
paralelizam na bitovnoj razini (engl. bit-level):
• povećanje duljine riječi procesora – 4-bitni (mikro)procesor,
8-bitni, 16-bitni, 32-bitni, ...
glavni motivi: povećanje adresirljivog prostora, poboljšani
prikaz brojeva s pomičnim zarezom

- od devedesetih godina – paralelizam na razini instrukcija


ILP – instruction-level parallelism:
• protočnost (engl. pipelining)
• superskalarnost
ILP

Paralelne instrukcije:
- ako su dvije instrukcije paralelne one se mogu izvršiti istodobno u
protočnoj strukturi bez izazivanja zastoja (engl. stall) uz
pretpostavku da protočna struktura ima dovoljno resursa, tj. da ne
postoji strukturni hazard.
Vrijedi:
• dvije instrukcije koje su ovisne nisu paralelne,
• dvjema ovisnima instrukcijama ne može se promijeniti redoslijed
izvođenja,
• instrukcije kojima se može promijeniti redoslijed izvođenja su
paralelne instrukcije
Vrste ovisnosti:

1. Podatkovna ovisnost

Neka instrukcija j podatkovno ovisna od instrukcije i ako vrijedi:


• instrukcija i generira rezultat koji koristi instrukcija j,
ili
• instrukcija j je podatkovno ovisna od instrukcije k, a instrukcija
k je podatkovno ovisna od instrukcije i (tzv. tranzitivna ovisnost)

RAW – Read After Write hazard


Primjer:

i loop: load F0, 0(R1)


j add F4,F0, F2
store 0(R1), F4
.
.
.
i’ subi R1, R1, 8
j’ bnez R1, loop

Prikaz zavisnosti pomoću grafa zavisnosti (engl. dependence graph)


2. Imenska ovisnost (engl. name dependence)

- događa se kad dvije instrukcije koriste isti registar ili memorijsku


lokaciju ali kada ne postoji tok podataka između te dvije instrukcije

Pretpostavimo da instrukcija i prethodi instrukciji j programskom


slijedu;
Dvije vrste imenske ovisnosti:
- antiovisnost: instrukcija j je antiovisna od instrukcije i ako izlaz
instrukcije j “prekrije” ulaz instrukcije i (WAR)
- izlazna ovisnost: javlja se kada instrukcija i i instrukcija j pišu u isti
registar ili memorijsku lokaciju (WAW)
Primjer:

i1 load R1, A
i2 add R2, R1
i3 add R3, R4
i4 mul R4, R5
i5 com R6 ; jedinični komplement sadržaja reg. R6
i6 mul R6, R7 ; R6*R7 -> R6

Detektirajmo ovisnosti:
i1 - i2 podatkovna ovisnost
i3 - i4 antiovisnost
i5 - i6 podatkovna ovisnost, izlazna ovisnost
3. Upravljačka ovisnost
- odnosi se na situacije gdje se redoslijed izvršavanja instrukcija ne
može odrediti prije samog trenutka izvođenja (engl. run time);

Primjer:
if p1 {
i1;
};
if p2 {
i2;
};

- instrukcija i1 upravljački je ovisna o uvjetu (ili ishodu procesa) p1


- instrukcija i2 upravljački je ovisna o uvjetu (ili ishodu procesa) p2
Ograničenja u vezi upravljačke ovisnosti:

- instrukcija koja je upravljački ovisna o grananju ne može se


preseliti na mjesto prije grananja;

- instrukcija koja ne ovisi o grananju ne može se preseliti na mjesto


poslije grananja
Paralelizam:
1. raspoloživi paralelizam u programima
2. iskorišteni paralelizam

Raspoloživi paralelizam – sadržan je u karakteru samog problema i


programskom rješenju
- raspoloživi funkcijski paralelizam – očituje se u logičkom
rješenju problema i javlja se u formalnim opisima rješenja
(npr. dijagram toka, grafovi toka podataka)
- raspoloživi podatkovni paralelizam – izvire iz same prirode
podataka svojstvenih problemu te iz struktura podataka
koje se rabe u rješavanju problema
Četiri razine (zrnatosti) raspoloživog funkcijskog paralelizma:

• paralelizam na razini instrukcija (ILP) – fino zrnati


• paralelizam na razini programskih petlji – srednje zrnati
• paralelizam na razini procedura, funkcija i potprograma – srednje
zrnati
• paralelizam na razini programa – grubo zrnati
Primjer - paralelizam na razini programskih petlji – srednje zrnati

Promotrimo programsku petlju kojom se zbrajaju dva


jednodimenzionalna polja svako od 1000 elemenata:

for (i = 1; i <= 1000; i = i + 1)


x[i] = x[i] + y[i];

Svaka od 1000 iteracija može se u izvesti istodobno tako da se


izvođenje preklapa
Razine iskorištenog paralelizma

- raspoloživi funkcijski paralelizam mogu iskoristiti arhitektura


procesora i operacijski sustav procesora da i se povećala brzina
obrade

Razine iskorištenog paralelizma:


- na razini instrukcija
- na razini dretvi (engl. thread)
- na razini procesa
- na korisničkoj razini
- paralelizam na razini instrukcija – isključivo se koristi u
arhitekturi procesora
- paralelizam na razini dretvi i procesa – arhitektura i operacijski
sustav
- paralelizam na korisničkoj razini (višezadaćni rad – multitasking,
višeprogramski rad – multiprogramming, obrada dodjeljivanjem
vremena – time-sharing) – operacijski sustav
Podatkovni paralelizam može se iskoristiti na dva načina:

- izravno uporabom arhitektura procesora koje podržavaju paralelne


operacije na podatkovnim elementima (SIMD, procesori upravljani
tokom podataka (engl. data-flow))
- pretvorbom raspoloživog podatkovnog paralelizma u funkcijski tako
da se uporabom naredbi iz viših programskih jezika označe paralelno
izvodljive operacije na podatkovnim elementima
Paralelizam na razini instrukcija

RISC / CISC procesori

Podaci na slici dobiveni su kao srednja vrijednost brojnih ispitnih


programa čije je izvođenje simulirano na tzv. virtualnim agresivno
oblikovanim strojevima – paralelno izvođenje pod idealnim uvjetima u kojima nema
ograničenja raspoloživih resursa i uz uvjet savršenog predviđanja grananja
- paralelizam na razini tri instrukcije je najveći
- dvije, tri ili četiri paralelne instrukcije prevladavaju u programima
- oko 18 % od ukupnog broja signala vremenskog vođenja troši se na
strogo sekvencijalne instrukcije
- pet, šest i više instrukcija može biti istodobno izdano samo u 10%
slučajeva
- faktor ubrzanja obrade najveći i iznosi između 2.5 i 3 za 15
istodobno izdanih instrukcija
- nakon 5 istodobno izdanih instrukcija u jednoj periodi signala
vremenskog vođenja faktor ubrzanja veći od 2.5 puta
Paralelizam na razini instrukcija je implicitni paralelizam koji
prevodilac ili sklopovlje treba otkriti u slijednom programu
- statički tijekom prevođenja programa ili
- dinamički tijekom izvođenja programa

Djelotvornije iskorištenje paralelizma može postići uporabom


eksplicitnog paralelizma u samoj instrukciji ili nizu instrukcija

Pristup: VLIW – Very Long Instruction Word (kombinacija


koncepta horizontalnog mikroprogramiranja, superskalarne obrade,
višestrukosti funkcijskih jedinica)
EPIC – Explicitly Parallel Instruction Computing)
VLIW
EPIC

Intelova porodica IA-64 Itanium (2001. – 2010. godine) –


Itanium Merced – Itanium 2
Instrukcijska riječ za procesor IA-64 arhitekture duljine je 128 bita
i sadržava tri instrukcije tipa RISC koje tvore tzv. "svežanj"
(engl. bundle). Svaka od instrukcija u svežnju duljine je 41 bita pa
u svežnju tri instrukcije zauzimaju 123 bita, dok se preostalih 5 bitova
koriste kao predložak koji sadržava informaciju o njihovom
raspoređivanju (engl. scheduling). Točnije, 41-bitna "instrukcija"
zapravo nije prava instrukcija (u Intelu je nazivaju slog (engl. syllable))
jer se ona mora kombinirati s 5-bitnim predloškom.
Predložak određuje tipove instrukcija u svežnju i određuje koje će se
instrukcije izvesti paralelno.
Tipovi instrukcija u svežnju mogu biti sljedeći:

  A tip – odnosi se na cjelobrojnu jedinicu (I-unit) i određuje


operacije cjelobrojne ALU jedinice (npr. zbroji, oduzmi, logičko I,
logičko ILI, usporedi),
   I tip – odnosi se na cjelobrojnu jedinicu, ali određuje operacije koje
nisu cjelobrojne aritmetičko-logičke, već se odnose na tzv.
multimedijske operacije kao što multimedijski posmak, ispitivanje
bitova, premještanje,
   M tip – odnosi se na jedinicu za pristup memoriji (M-unit) i određuje
load i store instrukcije za cjelobrojne i FP (floating-point) registre,
    F tip – odnosi se na jedinicu za operacije brojevima s pomičnim
zarezom (F-unit) i određuje operacije brojevima s pomičnim
zarezom,
      
• B tip odnosi se na jedinicu grananja (B-unit) i određuje uvjetno,
bezuvjetno grananje te pozive potprograma,

• L + X tip – izvršavaju se u jedinici grananja ili u cjelobrojnoj


jedinici i određuju mješovite i specijalne instrukcije (npr. nop,
stop).
 
Specifikacija paralelnosti u izvođenju instrukcija može se proširiti i na
dijelove nekoliko svežanja. Zahvaljujući 5-bitnom predlošku
pojednostavljen je postupak dekodiranja instrukcija i izdavanja
instrukcija.
Mogući su sljedeći načini kombiniranja triju instrukcija u
svežnju (ovisno o binarnom uzorka u 5-bitnom predlošku):
 
i1  i2  i3 – sve se tri instrukcije izvode paralelno,
i1 & i2  i3 – prvo se izvodi instrukcija i1, a zatim se instrukcije
i2 i i3 izvode paralelno,
i1  i2 & i3 – prvo se instrukcije i1 i i2 izvode paralelno, a onda
instrukcija i3,
i1 & i2 & i3 – sve se tri instrukcije u svežnju izvode slijedno.
Jedna od najvažnijih metoda za nalaženje i djelotvorno iskorištenje
paralelizma na razini instrukcija u protočnoj i superskalarnoj
arhitekturi procesora je metoda špekulacije ili nagađanja
(engl. speculation). Pojednostavljeno, špekulacija je pristup koji
dopušta prevodiocu ili procesoru nagađanje o svojstvima i/ili ishodu
neke instrukcije, i to tako da omogući započinjanje ostalih instrukcija
koje mogu ovisiti o instrukciji na koju se špekulacija odnosi.

Primjer: nagađanje da se ne radi o RAW hazardu


nagađanje o ishodu instrukcije uvjetnog grananja

Špekulacija se izvodi uporabom prevodioca ili sklopovljem procesora


a u novije vrijeme kombiniraju se obje izvedbe
Paralelizam na razini dretvi i procesa

Dretva (engl. thread) može se objasniti pomoću jednostavnog modela


računala J. Backusa – računalo predočeno memorijskom jdinicom,
procesorom i spojnim putom između njih
- u memorijskoj jedinici pohranjeni su program i podaci
- pretpostavimo da procesor može pristupiti cijelom adresnom prostoru
koji je određen kapacitetom memorije
- program se izvodi tako da se u programsko brojilo upiše adresa prve
instrukcije i procesor započinje izvođenje programa
• izvođenje programa možemo promatrati kao da procesor provlači kroz
program (slijed instrukcija) ili “nit” ili instrukcijsku dretvu
Ilustracija dretve
Razlika između dretve i procesa

- program koji se izvršava organiziran je u jedan ili veći broj


procesa

Proces se sastoji barem od jedne instrukcijske dretve te predstavlja


izvršljivi programski odsječak kojem je dodijeljen
- programsko brojilo,
- adresni prostor,
- registri,
- varijable
Svaki proces ima svoj virtualni procesor
- ako se radi o jednoprocesorskom sustavu tada se stvarni procesor
dijeli između više procesa
Računalnom procesu, budući da je riječ o procesu u vremenu,
pridruženi i neki vremenski atributi:
- trenutak početka izvođenja,
- trenuci zaustavljanja izvođenja,
- trenutak završetka izvođenja,
- trajanje izvođenja

Iako je proces samostalna i nezavisna jedinka vrlo često je u


interakciji s ostalim procesima
- s obzirom na interakciju s ostalim procesima i njihovu
međuzavisnost možemo identificirati tri stanja u kojima se
proces može nalaziti
Stanja u kojima se proces može nalaziti:

i) aktivno stanje procesa (engl. running) – to je proces kojem je


dodijeljen procesor i koji se upravo izvodi,
ii) pripravno stanje procesa (engl. ready) – proces je spreman za
izvođenje i čeka na dodjelu procesora,
iii) blokirani proces (engl. blocked) – proces čeka na ispunjenje
nekog uvjeta za njegovo daljnje napredovanje (npr. proces čeka
na neki vanjski događaj, čeka na istek nekog vremenskog
intervala).
Operacijski sustav održava tablicu procesa (engl. process table)
u kojoj svaki element tablice odgovara jednom procesu i sadržava
informaciju potrebnu za rukovanje procesom (engl. process
management), informaciju potrebnu za rukovanje memorijom
(engl. memory management) te informaciju potrebnu za
rukovanje datotekama (engl. file management).

Sva se informacija koja se odnosi na određeni proces mora pohraniti


u tablicu procesa i to svaki put kada proces iz aktivnog stanja prelazi
u stanje pripravnosti ili blokiranosti
Višeprogramski način rada – više procesa dijeli u vremenu jedan
procesor

- ako računarski sustav ima više procesora – onda je moguće


svakom procesu, umjesto virtualnog procesora, dodijeliti procesor i
tada se međusobno nezavisni procesi mogu izvoditi ISTODOBNO

- proces u najjednostavnijem obliku ima samo jednu dretvu i jedno


programsko brojilo

- suvremeni višenamjenski računalni sustavi podržavaju veći broj


dretvi u jednom procesu
(takve se dretve često nazivaju i “laki” procesi; engl. lightweight
process)
Razlika između procesa i dretve:

- pretpostavimo da imamo u rač. sustavu tri procesa A, B i C


- svaki od njih ima jednu dretvu, programsko brojilo te svaki
proces djeluje u tri različita adresna prostora
Jedan proces u računarskom sustavu koji ima tri dretve:

- dretve imaju svaka svoje programsko brojilo ali dijele zajednički


adresni prostor koji je dodijeljen tom procesu
Prisutnost više dretvi u jednom procesu koje dijele isti adresni
prostor zahtijeva, pored tablice procesa, još i tablicu dretve
(opisnik dretve) s informacijom o identifikatoru dretve, pripadnost
dretve određenom procesu, stanju i prioritetu dretve, početnoj
adresi dretvenog adresnog procesa, sadržaju programskog brojila,
te sadržaju registara – kontekst dretve

Dretva može biti jednako kao i proces u aktivnom stanju, stanju


pripranosti i stanju blokiranosti

Stanje procesa s više dretvi ne može se jednoznačno opisati (npr.


jedna dretva procesa može biti u aktivnom stanju, dvije u stanju
pripravnosti a jedna u stanju blokiranosti). U kojem je stanju
proces?
Proces s više dretvi može se izvoditi u jednoprocesorskom
računarskom sustavu tako da se procesor dodjeljuje naizmjence
pojedinim dretvama.

U tom se slučaju prenosi upravljanje s dretve na dretvu uz


uzastopno pohranjivanje i obnavljanje konteksta dretvi.

U slučaju izvođenja više dretvi u jednoprocesorskom sustavu


teško se može očekivati ubrzanje odvijanja procesa.
Iznimno: ako procesor izvodi neku drugu dretvu za vrijeme dok
druga zbog nekog razloga mora čekati
Potpuno iskorištenje paralelizma na razini dretvi postiže se
u višeprocesorskom sustavu u kojem je svaki procesor zadužen
za jednu od više raspoloživih dretvi u procesu – višedretveni rad
(engl. multithreading).

Opaska: izraz “višedretveni rad” (engl. multithreading) upotrebljava


se za izvođenje više dretvi na jednom procesoru (analogija s
višeprogramskim radom (engl. multiprogramming)

Izvođenje većeg broja dretvi u višeprocesorskom sustavu često se


naziva i hiperdretveni rad (engl. hyperthreading)

Pozor: Intel u Netburst mikroarhitekturi koristi izraz


hiperdretvenost u kontekstu višedretvenosti
Paralelizam na razini dretvi (engl. thread-level paralellism; TLP)
bitna je alternativa paralelizmu na razini instrukcija (ILP) jer se
može ostvariti jednostavnije i jeftinije od ILP-a.

S druge strane, u mnogim je primjenama paralelizam na razini dretvi


svojstven i prirodan samom problemu.

Potrebno je istaknuti da se ove dvije razine paralelizma u


implementaciji arhitekture procesora međusobno ne isključuju,
štoviše, one se podupiru i doprinose većoj performansi procesora
Paralelizam na korisničkoj razini

- višeprogramskog rada u kojem se procesor djelotvorno koristi


tako da se oblikuju pripravni procesi koji pripadaju različitim
korisničkim programima,
- višezadaćni način rada (engl. multitasking) sličan je
višeprogramskom načinu rada te ga stoga neki autori poistovjećuju
s njim, međutim, postoji jedna razlika – istodobno aktivni procesi
u višezadaćnom načinu rada pripadaju istom korisniku,
- pseudoparalelizam na korisničkoj razini postiže se radom
u vremenskoj podjeli (engl. time-sharing) kojim se nudi istodobna
usluga većem broju korisnika koji pristupaju računarskom
sustavu terminalima
Podatkovni paralelizam
- namjenskom arhitekturom koja dopušta paralelne operacije na
podatkovnim elementima, npr. SIMD (Single Instruction Stream
Multiple Data Stream) arhitektura ili arhitektura upravljana tokom
podataka (engl. dataflow)
- pretvorba podatkovnog paralelizma u funkcijski paralelizam tako
da se na slijedan način izraze paralelno izvodljive operacije na
podatkovnim elementima uporabom jezičnog konstrukta za
specifikaciju programskih petlji
SIMD računarski sustavi iskorištavaju podatkovni paralelizam
djelovanjem na vektorima ili dvo- i višedimenzionalnim poljima
podataka.
Na primjer, jednom SIMD instrukcijom mogu se obaviti
zbrajanja 64 para raspoloživih operanada u 64 aritmetičko-logičke
jedinice, i to u jednoj periodi signala vremenskog vođenja.

Osnovne zamisli SIMD-a nalazimo i u arhitekturi suvremenih


procesora:

- SIMD instrukcije koje su namijenjene poboljšanju performansi


za multimedijske aplikacije – istodobno izvođenje jedne operacije
na većem broju operanada u većem broju ALU
SIMD instrukcije rekonfiguriraju jednu ALU koja se koristi dugim
riječima u više manjih ALU koje djeluju paralelno na kraćim
operandima. Tako se, na primjer, 64-bitna ALU pretvara u
dvije 32-bitne ALU ili u četiri 16-bitne ALU ili u osam
8-bitnih ALU koje djeluju istodobno na operandima odgovarajuće
duljine.

Npr. podaci duljine 8 bita koriste za definiranje vrijednosti


primarnih boja (R, G, B) slikovnih elemenata ili se 16-bitni podaci
koriste za prikaz vrijednosti zvučnog uzorka.
Primjer:
Godine 1997. tvrtka Intel je proširila skup instrukcija za procesore
Pentium i PentiumPro s 57 SIMD instrukcija koje su nazvane
MMX (Multi Media Extensions).
MMX instrukcije djeluju nad skupom 64-bitnih registara koji su
nazvani MMX registri. Zapravo, MMX instrukcije koriste osam
registara za podatke s pomičnim zarezom (floating-point registre)
koji se koriste kao MMX 64-bitni registri.
Svaki od 64-bitna MMX registra sadržava ili jedan 64-bitni cijeli broj
ili vektor koji se sastoji od 2, 4 ili 8 cjelobrojnih podataka
(sukcesivno kraćih operanada, npr. osam 8-bitnih operanada).
Različite aritmetičke i logičke MMX instrukcije te MMX instrukcije
za uspoređivanje podataka i njihovo preuređenje djeluju na
64-bitnim i 32-bitnim operandima te 8-, 4- i 2-komponentnim
nezavisnim vektorima koji se mogu "upakirati" u 64-bitnu riječ.
Izvođenje MMX instrukcije paralelnog zbrajanja dvaju vektora
Procesoru Pentium III (1998.) pridodano je još 70 SIMD
instrukcija, nazvanih SSE (Streaming SIMD Extensions) koje
djeluju na osam dodatnih registara duljine 128 bita i podržavaju
operacije jednostruke točnosti podacima s pomičnim zarezom
(engl. single precision floating-point operation) tako da se
istodobno mogu izvesti četiri operacije s pomičnim zarezom na
četiri 32-bitna operanda.

Proširenje skupa SIMD instrukcija nastavilo se pa su 2001. skupu


instrukcija dodane nove 144 instrukcije SSE2 koje podržavaju
SIMD operacije na 64-bitnim podacima s pomičnim zarezom.
Godine 2007. tvrtka AMD uvodi SSE5 sa 170 novih instrukcija,
a 2008. Intel uvodi skup SIMD instrukcija AVE – Advanced Vector
Extension kojim se SSE registri proširuju s 128 na 256 bita duljine
te se skup SIMD instrukcija povećava na više od tri stotine!
3. Višeprocesorski SIMD sustavi

Prema Flynnovoj klasifikaciji arhitekture tri se kategorije arhitekture


odnose na paralelne računarske sustave: MISD, SIMD i MIMD

- višeprocesorski SIMD,
- višeprocesorski MIMD – multiprocesorski sustavi
Osnovna značajka SIMD arhitekture je istodobno izvođenje iste
instrukcije od strane većeg broja procesora koji djeluju na različitim,
višestrukim tokovima podataka.

Višeprocesorski SIMD računarski sustavi namijenjeni su rješavanju


složenih problema s visokim stupnjem inherentnog paralelizma,
prvenstveno sadržanog u podacima.

Višeprocesorski SIMD sustavi iskorištavaju podatkovni paralelizam.


Organizacija višeprocesorskog SIMD računarskog sustava
SIMD arhitektura u nekoliko je posljednjih godina dobila na
značenju, posebno u multimedijskoj primjeni (naročito u
računalnoj grafici) kao jedan od djelotvornih pristupa oblikovanja
trodimenzionalnih virtualnih okruženja u stvarnom vremenu.
4. Vektorski procesori

Jedan od najdjelotvornijih načina iskorištavanja podatkovnog


paralelizma postiže se u računarskim sustavima koji se svrstavaju
u SIMD kategoriju arhitekture i temelje se na vektorskom procesoru
(engl. vector processor)

Vektorski procesor obavlja aritmetičke i logičke operacije na


operandima koji su vektori.
Primjer:
Razmotrimo računanje sume dvaju 64-dimenzionalnih vektora x i y.
Rezultat je vektor w:
w = x + y.
U "običnom" jednoprocesorskom sustavu ta bi se operacija izvela
na temelju programskog odsječka:
for i = 1 to 64
w(i) := x(i) + y(i);
U vektorskom procesoru gornja bi se operacija izvela samo jednom
vektorskom instrukcijom, odnosno instrukcijom tipa vektor-vektor
kojoj su operandi dva 64-dimenzionalna vektora, a rezultat, koji se
dobiva u vektorskoj aritmetičko-logičkoj jedinici (vektorska ALU),
također je 64-dimenzionalni vektor.
Vektorska ALU može istodobno zbrojiti sve odgovarajuće
komponente obaju vektora. Svaki od vektora, koji predstavlja
operand u vektorskoj instrukciji, smješten je u vektorski registar,
npr. Vi, odnosno Vj, a rezultat se smješta u vektorski registar Vk.

Vektorska instrukcija specificira veliku količinu posla i jednakovrijedna je, u


potonjem slučaju, cijeloj programskoj petlji.

- Uporaba vektorske ALU u kojoj se istodobno izvode operacije nad svim


komponentama vektora u vektorskim je procesorima ipak rijetka.
Umjesto, na primjer, vektorskog množila brojevima s pomičnim
zarezom (koji bi istodobno generirao sve produkte), u praksi se
koristi protočno množilo s relativno velikim brojem protočnih
segmenata te se svaki parcijalni rezultat (umnožak dviju
komponenata) dobiva u svakoj periodi signala vremenskog vođenja
čije je trajanje određeno vremenom obrade u jednom protočnom
segmentu.
Razlozi takva rješenja nisu tehnološka ograničenja, već ekonomski
faktor.
Primjer:
Razmotrimo izvođenje vektorske instrukcije množenja dvaju 64-
komponentnih vektora u 7-segmentnom protočnom množilu brojevima s
pomičnim zarezom:
 
MULTV V1, V2, V3 ; V3 = V1 * V2
Svaka horizontalna linija odgovara potpunoj obradi para komponenti 64
komponentnih vektora
Sa r je označeno vrijeme dohvata (čitanja) para komponenti vektora, a s w je
označeno vrijeme upisa rezultata u odredišni vektorski registar V3 (za svaku
njegovu komponentu).
Konačan se rezultat dobiva nakon 9 + 63 periode signala vremenskog vođenja.
Vektorski procesor (pojednostavnjeni prikaz)
Vektorski procesor podržava šest tipova vektorskih instrukcija:

i) instrukcije vektor-vektor
f1 : V i  V k
f2: Vi Vj  Vk,
gdje su Vi i Vj izvorišni vektorski registri, a Vk odredišni vektorski registar;
ii) instrukcije vektor-skalar
f3: sj  Vi  Vk,
gdje je sj skalarni registar;
iii) instrukcija vektor-memorija
f4: M  Vj za operaciju load
f5: Vi  M za operaciju store,
gdje je M glavna memorija;
iv) instrukcija redukcije vektora. Formalno se taj tip instrukcije može
opisati kao:
f6: Vi  sj
f7: Vi  Vj  sj.

v) instrukcije okupljanja (engl. gather) ili raspršivanja (engl. scatter)

f8: M  Vl  V0 okupljanje
f9: V1  V0  M raspršivanje.
- Operacijom okupljanja iz memorije se dohvaćaju elementi različiti od nule, i to tako
da vektorski registar V0 sadržava indekse (kazaljke) na podatke u memoriji, a
vektorski registar V1 sadržava podatke koji se iz memorije dohvaćaju i oblikuju tzv.
rijetko popunjeni vektor.
Operacija raspršivanja obrnuta je operacija u odnosu na operaciju
okupljanja. Pomoću nje se u memoriju pohranjuje rijetko popunjeni vektor;

vi) instrukcije maskiranja – taj tip instrukcije upotrebljava vektor maskiranja Vm


(engl. mask vector) pomoću kojeg sažima ili proširuje izvorni vektor. Formalno
maskiranje može se opisati kao preslikavanje:
f10: V0  Vm  V1.
Npr. Ispituje se jesu li komponente vektora V0 različite od nula, i to samo oni
elementi vektora koji odgovaraju jedinicama u maskirnom registru Vm. U
vektorskom registru V1 pohranjuju se indeksi koji odgovaraju elementima u
ispitnom registru V0 i koji su različiti od 0.
Paralelizam u izvođenju vektorskih instrukcija postiže se uporabom protočnih
funkcijskih jedinica s velikim brojem protočnih segmenata ili većim brojem
istorodnih funkcijskih jedinica koje djeluju istodobno, ili kombinacijom uporabe
većeg broja istorodnih funkcijskih jedinica koje su izvedene kao protočne s
velikim brojem protočnih segmenata.
Svaka od paralelnih protočnih jedinica naziva se traka (engl. lane).
Performansa vektorskog procesora povećava se uporabom metode koja se
naziva višetračna vektorska obrada (engl. multilane vector processing)
Kako se vektorska obrada odražava na performansu procesora?
Performansa takva procesora ovisi o mnogo faktora, na primjer o:
i) razini "vektorizacije" programa – koliki dio od ukupne obrade može biti
izveden vektorskim operacijama,
ii) prosječnoj duljini vektora, odnosno prosječnom broju komponenti
vektora,
iii) razini ulančavanja vektora – mogućnosti izdavanja sljedeće
vektorske instrukcije neposredno nakon što prethodna vektorska instrukcija
generira prvu komponentu vektora rezultata,
iv) razini preklapanja vektorskih, skalarnih i operacija pristupa
memoriji.
 
Performansa vektorskog procesora može se prikazati njemu prilagođenim
Amdahlovim zakonom, gdje je faktor ubrzanja obrade s u odnosu na
skalarni procesor jednak:

1
s
(1  f )  f / k

gdje je f dio vektoriziranog koda, a k brzina vektorske jedinice


u odnosu na skalarnu jedinicu. k je funkcija duljine vektora i tipa
operacije.
s- ubrzanje

Ilustracija Amdahlovog zakona za vektorske procesore


Primjer:
Ilustrirajmo izvođenje operacije y = sx + y, gdje su y i x 64 komponentni
vektori pri čemu je svaka komponenta predočena u notaciji broja s pomičnim
zarezom dvostruke točnosti (duljine 64 bita), a s je skalar također dvostruke
točnosti, na skalarnom procesoru i vektorskom procesoru.
Pretpostavit ćemo da se y, x i s nalaze na početku izvođenja pohranjeni u
memoriji tako da je početna adrese za x jednaka $s0, za y $s1, a za skalar
s $sp.
Programski odsječak za skalarni procesor izgleda ovako:
ld f0, $sp ; dohvati skalar s i pohrani ga u floating-point
; registar f0
addi r4, $s0, #512 ; gornja adresa lokacije na kojoj
; se nalazi vektor x
opet: ld f2, 0($s0) ; dohvati x(i)
mul f2, f0, f2 ; s  x(i)
ld f4, 0($s1) ; dohvati y(i)
add f4, f2, f4 ; s  x(i) + y(i)
st f4, 0($s1) ; pohrani rezultat na y(i)
addi $s0, $s0, #8 ; inkrementiraj indeks za x
addi $s1, $s1, #8 ; inkrementiraj indeks za y
sub $t0, r4, $s0 ; izračunaj granicu
bne $t0, $zero, opet ; provjeri je li sve obavljeno
 
 
(Opaska: adresna zrnatost memorije je bajtna, zato je gornja granica
512, tj. 64  8, gdje je 64 broj komponenti vektora, a svaka je njegova
komponenta duljine 8 bajtova.)
Programski odsječak za vektorski procesor izgleda ovako:
ld f0, $sp ; dohvati skalar s i pohrani ga u
; floating-point registar f0
ldv v1, 0($s0) ; dohvati vektor x i pohrani ga u
;vektorski registar v1
mulvs v2, v1, f0 ; množenje vektora x sa
; skalarom s
ldv v3, 0($s1) ; dohvati vektor y i pohrani ga u
; vektorski registar v3
addv v4, v2, v3 ; pribroji y produktu sx
stv v4, 0($s1) ; pohrani rezultat
 
Usporedba gornjih programskih odsječaka:
• vektorski procesor značajno reducira promet instrukcija – on zahtijeva
samo šest instrukcija, dok se kod skalarnog procesora zahtijeva skoro
600 instrukcija (programska petlja).
• druga zanimljiva razlika je u učestalosti hazarda – za skalarni procesor
svaka add instrukcija mora čekati na mul instrukciju te svaka st instrukcija
mora čekati na add instrukciju.
• za vektorski će procesor svaka vektorska instrukcija biti u zastoju samo
za prvi element svakog od vektora, tako da će ostali elementi glatko
protjecati kroz protočnu strukturu.
Zamisao vektorske obrade stara je više od pedeset godina. Prva vektorska
superračunala pojavljuju se početkom sedamdesetih godina prošlog
stoljeća (CDC STAR-100, TI ASC, 1972.), Cray-1 (1976.) da bi devedesetih
godina na tržištu bio veći broj višeprocesorskih vektorskih superračunala
(Cray Y-MP 816, Hitachi S-820, Fujitsu VP-2000, NEC Sx-8).

Danas vektorska obrada nije rezervirana samo za superračunala, već se


pojavljuje i u procesorima koji se rabe u multimedijskim aplikacijama
(procesori s instrukcijskim podskupovima MMX, SSE, AltiVec) i procesorima
namijenjenim igraćim konzolama.
Razvoj tehnologije visokog stupnja integracije (VLSI) omogućio je
izvedbe vektorskih mikroprocesora – vektorskih procesora s jednom
(npr. SPERT-II procesor) ili više jezgri ostvarenih na jednom čipu.

• Cell dvojezgreni procesor (razvijen u suradnji tvrtki IBM, Toshiba i Sony, 2006.)
koji se sastoji od dvije jezgre, odnosno od dva procesora PowerPC (naziva se PPE
– Power Processing Element) koji djeluju pod "konvencionalnim" operacijskim
sustavom te se koriste za distribuciju poslova osam vektorskih jedinica SPE
(Synergistic Processing Element) koje imaju vlastiti SIMD skup instrukcija. Svaka od
SPE, jedinica, koja je u stvari 128 bitni RISC procesor SIMD organizacije, ima svoju
vlastitu memoriju izvedene statičkim RAM-om umjesto priručne memorije. PPE i
SPE povezani su pomoću visokopropusne (> 300 GB/s) prstenaste sabirnice
podataka nazvane EIB - Element Interconnect Bus.
5. Multiprocesorski sustavi – višeprocesorski MIMD sustavi

MIMD arhitektura obilježena je višestrukim instrukcijskim tokom i višestrukim


tokom podataka. Svaki od procesora pribavlja i izvršava svoje vlastite
instrukcije na svojim podacima. Višeprocesorski MIMD sustavi ili
multiprocesorski sustavi iskorištavaju paralelizam na razini procesa i dretvi.
• U multiprocesorskom sustavu svaki procesor može izvršavati njemu dodijeljen
proces.
• Svaki od procesa može imati više dretvi tako da se izvođenje jednog procesa
s većim brojem dretvi može povjeriti većem broju procesora. Višedretvena
arhitektura temeljena na MIMD-u, u načelu, dopušta istodobno izvođenje većeg
broja procesa s izdvojenim adresnim prostorima i izvođenje više dretvi koje
dijele adresni prostor.
Osnovna značajka multiprocesorskog sustava jest veći broj procesora
približno jednakih (vrlo često) identičnih obilježja koji na izvjestan
način dijele zajednički memorijski prostor.

Ovisno o broju procesora i načinu organizacije memorijskog sustava


multiprocesorski se sustavi mogu klasificirati u sljedeće skupine:
• sustavi s uniformnim pristupom memoriji UMA (engl. Uniform Memory Access),
• sustavi s neuniformnim pristupom memoriji NUMA (engl. Nonuniform Memory
Access),
• sustavi samo s priručnom memorijom COMA (engl. Cache-Only Memory
Architecture).
U UMA modelu multiprocesorskog sustava svi procesori dijele zajedničku
fizičku memoriju i svi imaju jednako vrijeme pristupa svakoj od riječi u memoriji
(uniformni, odnosno ujednačeni pristup memoriji). Svaki od procesora može
imati i svoju vlastitu priručnu memoriju organiziranu u jednu ili više razina. Na
sličan način kao što dijele memoriju, procesori dijele resurse U/I podsustava.
UMA model multiprocesorskog sustava
UMA model se još naziva i multiprocesorski sustav sa središnjom dijeljenom
memorijom (engl. centralized shared-memory) ili simetrični multiprocesorski
sustav s dijeljenom memorijom SMP (engl. symmetric shared-memory
multiprocessor) – zato što memorija ima isti ("simetrični") odnos spram svih
procesora.
• Komunikacija procesora sa zajedničkom memorijom i U/I podsustavom
ostvaruje se prospojnom mrežom koja ovisno o zahtijevanoj propusnosti može
biti ostvarena sabirničkim sustavom, crossbar prospojnom matricom ili
višerazinskom prospojnom mrežom (npr. Omega).
Značajke:

• UMA model pogodan je za relativno mali broj procesora (manji od 100) jer je
za taj broj procesora još uvijek moguće ostvariti dijeljenje i uniformni pristup
memoriji. UMA model još se naziva i čvrsto povezan multiprocesorski sustav
(engl. tightly coupled) zbog visokog stupnja dijeljenja zajedničkih resursa
(memorije i U/I podsustava).
• UMA model multiprocesorskog sustava najčešće se koristi zato što je
podesan za primjene opće namjene i izvedbu obrade dodjeljivanjem vremena
u višekorisničkim okruženjima.
Multiprocesorski sustavi s neuniformnim pristupom memoriji NUMA
nazivaju se još i sustavi s porazdijeljenom memorijom
(engl. distributed-memory multiprocessor) imaju umjesto centralizirane
memorije, memoriju porazdijeljenu procesorima.
Zbirka svih lokalnih memorija oblikuje globalni adresni prostor kojem mogu
pristupiti svi procesori u sustavu. Zbog takve organizacije memorije
razlikujemo dvije vrste pristupa memoriji:
• brzi pristup memoriji (kraće vrijeme pristupa) kada procesor pristupa svojoj
lokalnoj memoriji,
• sporiji pristup (dulje vrijeme pristupa) kada procesor pristupa "udaljenoj"
memoriji koja je, zapravo, lokalna memorija nekog drugog procesora. Dulje
vrijeme pristupa uzrokovano je dodatnim kašnjenjima jer se "udaljenoj"
memoriji pristupa kroz prospojnu mrežu.
• Multiprocesorski sustavi oblikovani u skladu s modelom NUMA imaju veliki
broj procesora, npr. nekoliko stotina ili tisuća, i zato se za toliki broj procesora
teško može realizirati središnja memorija sa zahtijevanom, odnosno
prihvatljivom propusnosti (engl. memory bandwidth).

• Svaki čvor u NUMA modelu sastoji od procesora, lokalne memorije, U/I


podsustava i sučelja za pristup prospojnoj mreži. Ovisno o izvedbi NUMA
modela, čvor može biti sastavljen od određenog broja procesora i lokalnih
memorijskih modula tako da čini procesorsku nakupinu (engl. processor
cluster).
- Primjer takve organizacije je multiprocesorski sustav velikih
razmjera (engl. large-scale multiprocessor) Cedar.
Multiprocesorski sustavi temeljeni na modelu NUMA često se zbog načina
na koji je ostvarena veza između procesora nazivaju i labavo povezanim
(engl. loosely coupled).
Multiprocesorski sustavi temeljeni na modelu COMA (Cache-Only Memory
Architecture) su poseban slučaj NUMA multiprocesorskog sustava u kojem je
umjesto glavne memorije porazdijeljena priručna memorija tako da sve priručne
memorije oblikuju globalni adresni prostor.

Udaljeni pristup priručnoj


memoriji ostvaruje se pomoću
distribuiranih direktorija.
• Multiprocesorski sustavi temeljeni na UMA modelu dijele zajednički
memorijski prostor tako da procesori mogu međusobno izmjenjivati podatke
instrukcijama load i store (zato se i nazivaju sustavi s dijeljenom memorijom).

• U sustavima temeljenim na NUMA modelu komunikacija između procesora


odvija se porukama koje procesori izmjenjuju preko prospojne mreže – takvi se
multiprocesorski sustavi nazivaju još i multiprocesorski sustavi s
prosljeđivanjem poruka (engl. message-passing multiprocessor).
• Organizacija multiprocesorskog sustava s dijeljenom memorijom
najraširenija te da mnogi proizvođači računala (npr. Sun, AMD,
Intel, IBM) imaju proširenje svojih proizvodnih uniprocesorskih
ili jednoprocesorskih linija na multiprocesorske sustave na čipu -
višejezgreni mikroprocesori (engl. multicore microprocessor) ili kraće višejezgreni
procesori (izraz "jezgra" (engl. core) upotrebljava se za procesor u višejezgrenom
procesoru).
Višejezgreni je procesor, zahvaljujući tehnologiji visokog stupnja
integracije, procesor koji ima dva ili više procesora (jezgri) na jednom čipu.
Osnovne značajke:
• manji potrošak snage,
• djelotvorna istodobna obrada više zadataka (programa, procesa, dretvi)
6. Koherencija priručne memorije u multiprocesorskom sustavu

• problem koherencije, i to za multiprocesorski sustav sa središnjom dijeljenom


memorijom (UMA model)
• budući da svaki procesor ima svoju privatnu priručnu memoriju, ali dijeli i središnju
zajedničku memoriju, u svakoj od priručnih memorija pohranjeni su "privatni" podaci
koji se odnose na lokalni proces, ali i zajednički podaci koji se odnose na procese
drugih procesora i koji su dohvaćeni i pohranjeni u pojedine priručne memorije na
temelju komunikacije procesora, odnosno njihovim pristupom zajedničkoj memoriji.
- istodobno se dijeljeni podatak nalazi u zajedničkoj memoriji, a
njegove kopije distribuirane su u priručne memorije pojedinih procesora.

Sada nastupa problem!

- Ako neki od procesora promijeni vrijednost zajedničkog podatka u svojoj


priručnoj memoriji, taj se podatak treba promijeniti i u zajedničkoj memoriji, ali i
u svim priručnim memorijama ostalih procesora koji koriste taj podatak (uvjet
koherencije priručne memorije)
Primjer:
Pretpostavimo, radi jednostavnosti, da imamo multiprocesorski sustav koji ima
samo dva procesora (jezgre) i da je ostvaren kao sustav sa središnjom
dijeljenom memorijom. Dakle, sustav ima zajedničku memoriju, a svaki od
procesora ima priručnu memoriju. Neka priručne memorije koriste tehniku
obnavljanja sadržaja memorije „pohranjivanje-kroz“ (engl. store-through) .

- Pretpostavimo da oba procesora (procesor 1 i procesor 2) dijele zajedničku


varijablu V koja je pohranjena u središnjoj dijeljenoj memoriji na lokaciji X.
- Pretpostavimo, također, da se u trenutku t = 0 varijabla V ne nalazi u
priručnim memorijama procesora 1 i procesora 2.
• U trenutku t = 1 procesor 1 dohvaća (čita) varijablu V iz središnje memorije i
pohranjuje je u svoju priručnu memoriju.
• U sljedećem trenutku (t = 2) procesor 2 dohvaća (čita) varijablu V iz središnje
memorije i pohranjuje je u svoju priručnu memoriju
• U ovom trenutku (t = 2) koherencija podataka nije narušena: oba procesora
imaju pohranjenu vrijednost varijable V jednaku onoj koja je pohranjena na
memorijskoj lokaciji X u središnjoj memoriji
• Pretpostavimo da u sljedećem trenutku (t = 3) procesor 1 mijenja vrijednost
varijable V u V' i pohranjuje je u svoju priručnu memoriju. Uporabom tehnike
„pohranjivanje-kroz" procesor 1 upisuje novu vrijednost V' na memorijsku lokaciju
X u središnjoj memoriji.
• Sada u vremenskom trenutku t = 3 imamo sljedeću situaciju:
procesor 1 u svojoj priručnoj memoriji ima pohranjenu novu
vrijednost varijable V, tj. V', središnja dijeljena memorija ima
također na memorijskoj lokaciji X pohranjenu novu vrijednost V'.

• Međutim, procesor 2 ima u svojoj priručnoj memoriji pohranjenu staru vrijednost


varijable V. Ako u sljedećem trenutku (t = 4) procesor 2 dohvaća varijablu V iz
svoje priručne memorije – dohvatit će staru vrijednost V, a ne V'. Došlo je do
povrede koherencije – umjesto prave vrijednosti V' (koja je pohranjena i priručnoj
memoriji procesora 1 i u središnjoj memoriji), procesor 2 koristit će se starom
vrijednosti V.
Problem (ne)koherencije priručne memorije rješava se programski ili
sklopovski.

-Relativno jednostavno programsko rješenje sastoji se u tome da prevodilac


tijekom prevođenja programa označi informaciju (podatke) koja se smije
pohraniti (engl. cacheable) i onu koja se ne smije pohraniti u priručnu
memoriju (engl. non-cacheable). Sve zajedničke varijable koje se mogu
mijenjati upisivanjem označavaju se kao nepodesne (non-cacheable) za
pohranu u priručne memorije i njima procesori jedino mogu pristupiti tako da
pristupe središnjoj dijeljenoj memoriji.
Ovo rješenje degradira performansu sustava zbog pojačanog prometa
između središnje dijeljene memorije i procesora.
Multiprocesorski sustavi obično koriste sklopovska rješenja kojima se održava
koherencija priručnih memorija.

Protokoli kojima se održava koherencija u multiprocesorskim sustavima


nazivaju se protokoli koherencije priručne memorije (engl. cache coherence
protocol) i mogu se klasificirati na:

• snooping protokole (engl. snoop – njuškati),


• protokole koji se temelje na direktoriju (engl. directory based).
Snooping protokol prvenstveno je namijenjen multiprocesorskim sustavima
koji se temelje na prospojnoj mreži koja je izvedena kao zajednička
sabirnica.

Taj se protokol može koristiti i u multiprocesorskim sustavima sa složenijom


prospojnom mrežom (npr. višerazinskom) uz izvjesne sklopovske preinake
kojima se omogućuje odašiljanja informacije svim procesorima o
promašajima u priručnoj memoriji.
Protokoli koji se temelje na direktoriju obično se koriste u multiprocesorskim
sustavima koji imaju prospojnu mrežu izvedenu kao višerazinsku.

Protokoli ove vrste mogu se temeljiti na jednom središnjem direktoriju u


kojem je pohranjena informacija o statusu dijeljenih blokova fizičke memorije
– središnji direktorij sadržava kopije svih direktorija priručnih memorija s
informacijom u kojim se priručnim memorijama kopije blokova podataka
nalaze.
Snooping protokolom postiže se koherencija podataka u priručnim
memorijama i središnjoj dijeljenoj memoriji tako da svi upravljači priručnih
memorija (engl. cache controller) nadgledaju događaje na zajedničkoj
sabirnici ("njuškaju" zajedničku sabirnicu) i određuju trebaju ili ne trebaju
kopirati dijeljeni blok podataka.
Održavanje koherencije temelji se na dvjema operacijama:
- čitanju i
- pisanju.

Višestruke kopije koje se nalaze u priručnim memorijama pojedinih


procesora nisu problem kada je riječ o operaciji čitanja, međutim,
procesori imaju i ekskluzivno pravo upisivanja podataka u te dijeljene
blokove podataka.

Koherencija podataka u multiprocesorskom sustavu zahtijeva da bilo koji


procesor koji koristi dijeljeni blok podataka i kada čita podatak mora čitati
njegovu novu vrijednost (onu nakon operacije upisivanja)
Snooping protokol mora, na temelju nadgledanja sabirnice kojom se i
ostvaruju prijenosi dijeljenih blokova podataka između središnje dijeljene
memorije i priručne memorije, locirati sve priručne memorije koje dijele taj
podatak koji će se upisati.
Posljedica upisivanja (promjene) dijeljenog podatka može biti dvojaka
(ovisno o vrsti protokola):
• sve ostale kopije dijeljenog bloka podataka koje se nalaze u ostalim
priručnim memorijama proglašavaju se nevažećima (tehnika "piši i proglasi
nevažećim"; engl. write-invalidate)
• aktivira postupak osvježavanja svih ostalih kopija dijeljenog bloka u ostalim
priručnim memorijama (tehnika "piši i obnovi"; engl. write-update).
U tehnici "piši i proglasi nevažećim" procesor koji će modificirati dijeljeni
podatak mora, neposredno prije nego što to učini, generirati poseban signal
"nevažeće" (engl. invalidation signal) i postaviti ga na sabirnicu te time
obavijestiti sve druge priručne memorije da su kopije dijeljenog bloka
podataka nevažeće.
Kada upravljači priručnih memorija prime taj signal, provjeravaju sadržava li
ona taj dijeljeni blok podataka, a ako sadržava, taj blok podataka u priručnoj
memoriji proglašava nevažećim. Pokušaj čitanja tog podatka od strane nekog
procesora, zbog nevažećeg bloka, izazvat će promašaj tako da će se iz
središnje dijeljene memorije dohvatiti blok s modificiranom (novom) vrijednosti
podatka.
Tehnika "piši i obnovi" umjesto da kopije dijeljenog bloka podataka proglasi
nevažećim, dopušta procesoru koji je modificirao podatak da taj modificirani
podatak pošalje preko sabirnice tako da se obnove sve kopije u ostalim
priručnim memorijama.
Tehnika "piši i obnovi" slična je postupku "pohranjivanja-kroz" jer se svaka
promjena zajedničkog podatka šalje preko sabirnice središnjoj dijeljenoj
memoriji, samo što se ovdje obnavljaju i sadržaji priručnih memorija.
- Svaka promjena (upisivanje u zajednički dijeljeni blok podataka) ima za
posljedicu prijenos tog podatka zajedničkom sabirnicom.
Primjer:
Osnovna zamisao dviju tehnika snooping protokola u multiprocesorskom
sustavu sa središnjom dijeljenom memorijom.

Pretpostavimo da imamo u sustavu osam procesora P1, P2, ... , P8 koji imaju
svoje priručne memorije C1, C2, ... , C8 te da se kao prospojna mreža koristi
zajednička sabirnica. Pretpostavimo da se dijeljeni blok podataka X nalazi u
priručnim memorijama procesora P1, P2, i P4, tj. u C1, C2 i C4
Pretpostavimo da je procesor P1 promijenio podatak u bloku X (promijenjeni
sadržaj bloka X označit ćemo s X').
- Stanje multiprocesorskog sustava nakon operacije koja odgovara tehnici "piši i
proglasi nevažećim“:

I - nevažeći (engl.
invalidate).
- Stanje multiprocesorskog sustava nakon operacije koja odgovara snooping
protokolu "piši i obnovi" . Vidimo da su obnovljeni dijeljeni blokovi X u X' u
priručnim memorijama C2 i C4 i u središnjoj dijeljenoj memoriji
- jedan od poznatijih snooping protokola koherencije priručne memorije MESI
(engl. modified-exclusive-shared-invalid) koji se djelotvorno koristi kako u
jednoprocesorskim sustavima, tako i u multiprocesorskim sustavima.
7. Sinkronizacija procesa i dretvi

• u paralelnim procesnim okruženjima dva ili više konkurentna procesa (ili


dretve) trebaju međusobno komunicirati (na primjer, tijekom izvođenja
proces 2 u nekom trenutku treba podatke koje generira proces 1)

• Komunikacija između procesa temelji se na osnovnom aksiomu da se ne


mogu predvidjeti ili pretpostaviti relativne brzine procesa. To znači da bi se
ostvarila komunikacija ili izmjena podataka između procesa 1 i procesa 2 u
točno definiranoj točki, oba procesa moraju biti sinkronizirana.
- jedan važan detalj – sinkronizacija mora biti ugrađena programski u procese
(ili dretve), a ne ostvarena procesorima, npr. nekim satnim mehanizmom –
signalom vremenskog vođenja.

Ovisno o tome jesu li procesi ili dretve takve da se međusobno natječu ili
konkuriraju (na primjer, međusobno se natječu za dobivanje nekog resursa),
ili su pak kooperativni, tj. međusobno surađuju, razlikujemo dvije vrste
sinkronizacije:
i) međusobno isključivanje (engl. mutual exclusion),
ii) uvjetovana sinkronizacija (engl. condition synchronization).
-Dva procesora Pi i Pj i dva nezavisna procesa proces 1 i proces 2 koji se
paralelno izvršavaju.

• dva procesa međusobno natječu


za neki resurs
U nekoj točki izvršavanja oba procesa, proces 1 i proces 2, zahtijevaju
modifikaciju zajedničke strukture podataka D koja se nalazi u središnjoj
dijeljenoj memoriji.
-Pretpostavimo da programski segmenti procesa 1 i procesa 2 izgledaju
ovako:
proces 1: ...
ld r1, D
addi r1, 1
st r1, D
...
proces 2:

ld r2, D
addi r2, 2
st r2, D
...
Budući da su oba procesa konkurentna i da nemamo pretpostavke o njihovim
relativnim brzinama, može se dogoditi da se instrukcije gornjih dvaju
programskih odsječaka međusobno isprepliću što vodi nepredvidljivom
rezultatu:
- ako pretpostavimo da je početna vrijednost za D bila 0, onda vrijednost D-a
nakon procesa 1 i procesa 2 kada se oba izvrše može biti 1, 2 ili 3, ovisno o
relativnim vremenima u kojima se instrukcije izvode.
Da bi se ta neodređenost izbjegla, odnosno da bismo imali jamstvo da će
vrijednost za D biti 3 kadgod se procesi 1 i 2 izvrše, zahtijeva se da gornji
programski odsječci budu nedjeljivi, što znači da pristupaju i modificiraju D
na međusobno isključivi način i promatraju se kao kritični programski
odsječci.
- mehanizam zaključavanja (engl. locking), i to na sljedeći način:
Pretpostavimo da smo strukturi podataka D pridružili "ključ" k i dvije
operacije lock(k) i unlock(k) kojima se k postavlja u 1 ("zaključana brava"),
odnosno 0 ("otključana brava"). Proces može izvesti operaciju lock(k) samo
kada je k = 0, odnosno kada je brava otključana. Rezultat operacije lock je
postavljanje k u 1 i zato onemogućavanje ostalih procesa da izvedu
operaciju lock(k).
proces 1: ...
lock (k)
ld r1, D
addi r1, 1
st r1, D
unlock(k)
...
proces 2:
...
lock(k)
ld r2, D
addi r2, 2
st r2, D
unlock(k)
...
 

Pretpostavka: inicijalna vrijednost k = 0


Problem uvjetovane sinkronizacije:
-procesi proces 1 i proces 2 kooperativni procesi, odnosno procesi koji
međusobno surađuju. Pretpostavimo da proces 1 generira niz rezultata i
pohranjuje ih slijedno u D, a proces 2 slijedno uzima te podatke iz niza i
konzumira ih.
Radi jednostavnosti, pretpostavimo da D može pohranjivati samo jednu
vrijednost tako da se mora osigurati sljedeće:
procesi proces 1 i proces 2 kooperativni procesi, odnosno procesi koji
međusobno surađuju.
Pretpostavimo da proces 1 generira niz rezultata i pohranjuje ih slijedno u
D, a proces 2 slijedno uzima te podatke iz niza i konzumira ih. Radi
jednostavnosti, pretpostavimo da D može pohranjivati samo jednu
vrijednost tako da se mora osigurati sljedeće:
i) kad proces 1 generira vrijednost Vi i smješta je u D, on čeka sve
dok proces 2 ne konzumira vrijednost Vi. Tek će poslije toga pohraniti
sljedeću vrijednost Vi+1 u D;
ii) nakon što proces 2 konzumira vrijednost Vi iz D, on čeka sve
dok proces 1 ne generira sljedeću vrijednost Vi+1. Tek poslije toga ponovo
čita iz D.
proces 1:
...
lock (k1)
generiraj vrijednost i pohrani je u
D
unlock(k2)
...
 
proces 2:
...
lock (k2)
konzumiraj vrijednost iz D
unlock(k1)
...
Pretpostavka: početna vrijednosti k1 jednaka 0, a početna vrijednost k2
jednaka 1
Iz operacijskih sustava znamo da postoje dva osnovna pristupa koji se
primjenjuju za izvedbu mehanizma za obje vrste sinkronizacije: sinkronizacija
uporabom dijeljenih varijabli (engl. shared variables) uporabom test-and-set
primitiva, fetch-and-add primitiva, semafora ili na temelju prosljeđivanja
poruka.
Prvi mehanizam sinkronizacije pogodan je i zato prevladava u
multiprocesorskim sustavima sa središnjom dijeljenom memorijom, dok se
drugi koristi u multiprocesorskim sustavima s porazdijeljenom memorijom.
8. Višejezgreni procesori

- Višedretvenost (engl. multithreading) podrazumijeva da se više dretvi izvodi u


jednom procesoru tako da se izvođenje dretvi međusobno isprepliće,
odnosno dretve se naizmjenično izvode u dodijeljenim funkcijskim jedinicama
procesora uz nužno prospajanje konteksta sadržanog u tablici dretvi, i to
nakon svake izmjene dretve.
Dva su glavna pristupa višedretvenosti:
   finozrnata višedretvenost (engl. fine-grained multithreading),
  grubozrnata višedretvenost (engl. coarse-grained multithreading).
Finozrnata višedretvenost podrazumijeva prospajanje dretvi nakon svake
instrukcije.
-Procesori s takvom značajkom nazivaju se još i "bačvasti", odnosno barrel
procesori

Te su instrukcije međusobno nezavisne jer pripadaju različitim dretvama tako


da se protočna struktura djelotvorno iskorištava. - povećani broj promašaja
priručne memorije zbog narušavanja lokalnosti programa. Obično se
izvođenje dretvi u tom slučaju temelji na kružnom prioritetu (engl. round-
robin) uz "preskakanje" dretvi koje su u stanju zastoja.
Višedretveni procesori imaju sklopovski podržano brzo prospajanje
konteksta dretvi (tzv. hardware based fast context switching) koje se temelji
na tome da svaka dretva ima dodijeljene fizičke registre za pohranu
konteksta dretvi

Primjer:

Višedretveni procesor Tera podržava 128 dretvi, pri čemu je svakoj dretvi
dodijeljen 41 64-bitni registar u procesoru. Jezgre, osim sklopovski
podržanog brzog prospajanja konteksta, imaju i dinamičku izvedbu
preimenovanja registara kojim se rješavaju hazardi WAW i WAR koji se
nazivaju još i lažne zavisnosti
Grubozrnata višedretvenost predviđa prospajanje dretvi samo onda kada
nastupa dulji zastoj u tekućoj dretvi (npr. promašaj u priručnoj memoriji). Za
kraće zastoje, na primjer one izazvane u instrukcijskoj protočnoj strukturi
uslijed hazarda, ne predviđa se izmjena dretvi te je to jedan od glavnih
nedostataka grubozrnate višedretvenosti.
- Razlog da se ne koristi prospajanje dretvi kod zastoja izazvanih u protočnoj
strukturi leži u procjeni cijene i količine posla za pražnjenje protočne strukture
da bi se u nju mogao uputiti instrukcijski tok druge dretve.
- Izmjena dretvi i prospajanje njihova konteksta može se događati i pri svakoj
load instrukciji (neovisno o tome je li se dogodio promašaj) ili nakon
programskog odsječka (bloka instrukcija) koji pripadaju jednoj dretvi.
Grubozrnata i finozrnata višedretvenost može se kombinirati s
paralelizmom na razini instrukcija ILP, ali i sa superskalarnosti
(višestrukim protočnim strukturama u jednom procesoru). Tri su
procesorske konfiguracije moguće u tom slučaju:
• superskalarnost s grubozrnatom višedretvenosti,
• superskalarnost s finozrnatom višedretvenosti,
• superskalarnost sa simultanom višedretvenosti.
Superskalarni procesori s gubozrnatom višedretvenosti izvode istodobno veći
broj instrukcija koje pripadaju istoj dretvi sve do trenutka kada nastupi dulji
zastoj, u tom se trenutku prospaja kontekst dretvi i nastavlja se s izvođenjem
druge dretve.

• Superskalarni procesori s finozrnatom višedretvenosti isprepliću dretve i na


taj način eliminiraju možebitne zastoje u izdavanju instrukcija. Budući da samo
jedna dretva izdaje instrukcije tijekom periode signala vremenskog vođenja, još
uvijek postoje ograničenja u paralelizmu na razini instrukcija. Višejezgreni
procesori tvrtke Sun nazvani T1(Niagara 1) i T2 (Niagara 2) koriste finozrnatu
višedretvenost.
Simultana višedretvenost SMT (engl. simultaneous multithreading) zasniva
se na činjenici da suvremeni (superskalarni) procesori imaju paralelizam na
razini funkcijskih jedinica veći od onog koji jedna dretva može iskoristiti.

-dinamičkim raspoređivanjem izdaje istodobno više instrukcija iz nezavisnih


dretvi u istoj periodi signala vremenskog vođenja.
U SMT-u se iskorištava paralelizam na razini dretvi i paralelizam na
instrukcijskoj razini u kombinaciji s izdavanjem više instrukcija u jednoj
periodi signala vremenskog vođenja.

Primjeri procesora koji se temelje na SMT zamislima su Intelovi višejezgreni


procesori Nehalem i Pentium D te IBM-ovi višejezgreni procesori Power 5,
Power 6 i Power 7.
- razlika između superskalarnosti, višedretvenosti (MT) i simultane
višedretvenosti (SMT), poslužit ćemo se jednostavnim modelom obrade koji
su predložili S. J. Eggers i suradnici.
x os – priključci za izdavanje instrukcija
y os – vrijeme (periode signala vremenskog vođenja)
Nekorišteni priključci za izdavanje instrukcija mogu se promatrati kao
"horizontalno neiskorišteni priključci" i kao "vertikalno neiskorišteni priključci"
Pod horizontalno neiskorištenim priključcima podrazumijevamo slučaj kada su u
jednom retku jedan ili više priključaka neiskorišteni (ali ne svi!).
Vertikalno neiskorišteni priključci događaju se kada su tijekom jedne
periode svi priključci neiskorišteni – to nastupa zbog dulje latencije
(duljeg zastoja u izvođenju) instrukcije, npr. pristupa memoriji, kada je
privremeno spriječeno daljnje izdavanje instrukcija.
Za SMT vidimo da u svakoj periodi signala vremenskog vođenja procesor
"izabire" instrukcije za izvođenje iz svih dretvi.
- iskorištava se paralelizam na razini instrukcija izborom instrukcija iz bilo
koje dretve.
- Nakon toga procesor dinamički raspoređuje resurse procesora između
instrukcija i osigurava visoku razinu iskoristivosti sklopovskih resursa.
- Ako neka od dretvi ima visok stupanj paralelizma na razini instrukcija, onda
se te instrukcije izvode i pritom je vrlo malo horizontalno neiskorištenih
priključaka.
- Ako paralelizam na razini instrukcija za jednu dretvu nije dovoljno visok,
onda se izabire još jedna dretva (ili više njih) s nižim stupnjem paralelizma
koja će popuniti prazne horizontalne priključke. Na taj se način postiže
uklanjanje i vertikalnih neiskorištenih priključaka i u velikoj mjeri horizontalnih
neiskorištenih
Posebno zanimljiv pristup arhitekturi procesora je pristup koji se naziva
treća generacija DPL (engl. Data Parallel Processor) u kojem se
kombiniraju vektorske instrukcije, izdavanje instrukcija izvan redoslijeda i
preimenovanje registara te simultano izvođenje više dretvi.
Procesori s tim značajkama nose oznaku SMV – Simultaneous
Multithreaded Vector – simultano višedretveni vektorski procesori.
IBM POWER4 dvojezgreni procesor

-Godine 2001. tvrtka IBM oblikovala je prvi komercijalni 64-bitni


multiprocesorski sustav na čipu (višejezgreni procesor) opće namjene –
POWER4
- dvije jezgre – dva superskalarna procesora na čipu
- dvojezgreni procesor namijenjen je iskorištavanju paralelizma na razini
dretvi. Značajke POWER4 arhitekture su superskalarnost i izvođenje
instrukcija izvan redoslijeda.
Jezgra:
• Osam nezavisnih izvršnih
jedinica:
- FPU
- FXU
- load/store
- jedinica grananja BR
- logička jedinica CR
- priručna memorija L1
kapaciteta 64 KB (I cache) / 32
KB (D cache)
Superskalarna jezgra može
izvoditi do osam operacija u
jednoj periodi signala
vremenskog vođenja
• dvojezgreni procesor POWER4
Značajke
• dva superskalarna procesora na čipu
• dijeljena zajedničku priručnu memoriju druge razine (L2) (organizirana
u tri bloka –svaki po 470 KB)
• direktorij za priručnu memoriju razine L3 (kapaciteta 32 MB)
• dvije jedinice NC – Non-Cacheable odgovorne su za rukovanje
operacijama koje ne koriste priručne memorije jezgara
• Fabric Controller glavni je upravljač za sabirničku strukturu i komunikaciju
s L2/L3 upravljačima priručne memorije te za komunikaciju više POWER4
procesora
• sabirnički upravljač GX upravlja komunikacijom s U/I jedinicama i
podržava dvije tzv. GX sabirnice širine 4 bajta.
• POWER4 može se koristiti i u konfiguraciji s više čipova POWER4
uporabom MCM – Multi-Chip Module tako da se mogu kombinirati četiri
POWER4 čipa u jednom pakovanju.

Tehnološke značajke:

-Višejezgreni procesor POWER4 ostvaren je u 180 nm VLSI tehnologiji


SOI (Silicon on Insulator) CMOS i ima 174 milijuna tranzistora, radi na
frekvenciji od 1.3 GHz pri čemu mu je potrošak snage oko 115 W.
- Poboljšana verzija procesora POWER4+ radi na frekvenciji 1.9 GHz i
ima 184 milijuna tranzistora na čipu površine 267 mm2 (tehnologija 0.13
m SOI CMOS).
Ultra SPARC T1 i T2
-2005. tvrtka Sun najavila je višejezgreni (osam jezgri) procesor Ultra SPARC
T1 (Niagara)
- Jedna od arhitektonskih značajki mu je da je orijentiran na djelotvorno
iskorištavanje paralelizma na razini dretvi (višedretvenost), više no na razini
instrukcija.
- Jezgra ima protočnu strukturu koja se sastoji od šest protočnih segmenata
(pribavi, izbor dretve, dekodiraj, izvrši, pristup memoriji, upiši natrag) –
klasična RISC protočna struktura
- Zbog relativne jednostavnosti protočne strukture instrukcije grananja i
instrukcije load prouzrokuju kašnjenje od tri periode signala vremenskog
vođenja (!?), međutim, to se kašnjenje "prekriva" izvođenjem instrukcija
drugih dretvi.
Jezgra izdaje jednu instrukciju i upućuje je u protočnu strukturu – ne koristi
se tehnika izdavanja i završavanja instrukcija izvan redoslijeda što u velikoj
mjeri pojednostavnjuje izvedbu procesora
- Svaka od osam jezgri podržava istodobno četiri dretve, tako da, zapravo,
višejezgreni procesor T1 kombinira višedretvenost na razini procesora
(jezgre) i hiperdretvenost – istodobno izvođenje većeg broja dretvi u osam
jezgri.
- T1 rabi finozrnatu višedretvenost, odnosno da ima značajke "bačvastog"
procesora (engl. barrel CPU) - svaka jezgra u svakoj periodi signala
vremenskog vođenja prospaja dretve.
Organizacija višejezgrenog procesora Sun Ultra SPARC T1 (Niagara 1)
Arhitektonske značajke višejezgrenog procesora T1:
•finozrnata višedretvenost na razini instrukcije,
  - osam jezgri,
  - četiri dretve po jezgri,
  - jedna FPU,
  - crossbar prospojna mreža,
 - relativno jednostavna protočna struktura sastavljena od šest poput RISC
protočnih segmenata,
 - jezgra ima priručne memorije razine L1: 16 KB instrukcijske memorije i 8
KB priručne memorije podataka (blok ili linija duljine je 64 bajta),
  - četiri odvojene priručne memorije razine L2 svaka po 750 KB
Tehnološke značajke:
- izveden je u 90 nm CMOS VLSI tehnologiji,
- ima 279 milijuna tranzistora ostvarenih na silicijskom čipu površine 379
mm2,
- potrošak snage mu je 79 W,
- maksimalna frekvencija signala vremenskog vođenja je 1.2 GHz.
- Vršna performansa višejezgrenog procesora T1 iznosi oko 9600 MIPS-a i
oko 1200 MFLOPS-a
U listopadu 2007. na tržištu se pojavio Ultra SPARC T2 (kodnog imena
Niagara 2) koji je poboljšana verzija prethodnika T1.
- Procesor T2 je realiziran u 65 nm VLSI tehnologiji, ima osam jezgri i svaka
se jezgra može istodobno koristiti s osam dretvi – 64 dretvi istodobno
- Svaka je jezgra ostvarena kao protočna jedinica s osam protočnih
segmenata i ima i dvije aritmetičko-logičke jedinice koje dijele grupe od po
četiri dretve
-Umjesto jedne FPU jedinice, sada ih je u T2 osam – po jedna FPU za
svaku jezgru.
- Kapacitet priručne memorije L2 4 MB
- Frekvencija 1.6 GHz
Konfiguracija 2 x 8-jezgrena procesora SunUltra SPARC T2
(Niagara 2)
AMD Opteron X4 2356

• Višejezgreni procesor Opteron X4 2356 tvrtke AMD jedan je iz brojne


porodice 4-jezgrenih procesora serija 1300, 2300, 4100 i 8300, različitih
kodnih imena – od Budapest (serija 1300) do Shangai (serija 8300)
• Opteron X4 2356, kodnog imena Barcelona, ima četiri jezgre po čipu, a
koristi se kao multiprocesorski sustav koji ima dva podnožja (engl. CPU slot,
CPU socket) tako da oblikuje sustav s 8 jezgri ("broj jezgri po podnožju" )
Organizacija višejezgrenog procesora Opteron X4 2356
Značajke:
-Jezgra je složeni procesor koji ima 6-segmentnu instrukcijsku protočnu
strukturu,
- 72 fizička registra,
- međuspremnik za cjelobrojne i FP operacije u repu čekanja (engl. operation
queue),
- međuspremnik za load/store operacije u repu čekanja,
- tri ALU za cjelobrojne operacije,
- tri FPU (zbrajalo, množilo, mješovite operacije),
- instrukcijska priručna memorija (razina L1, 64 KB) i priručnu memoriju
podataka (razina L1, 64 KB).
- Svaka od jezgri ima i dodatnu 512 KB lokalnu priručnu memoriju, tzv. victim
cache koja sadržava blokove podataka koji su "izbačeni" iz priručne memorije
tijekom zamjene blokova
Svaka od jezgri podržava osam dretvi.
-Na čipu je ostvareno posebno tzv. sistemsko sučelje SRI (System Request
Interface) i prospojna mreža crossbar koja ostvaruje vezu između quasi-
victim priručne memorije, memorijskog upravljača i sučelja za komunikaciju s
višejezgrenim procesorom (HyperTransport link) koji se nalazi u drugom
podnožju.
- za povezivanje višejezgrenih procesora "četiri jezgre po podnožju" u 8-
jezgrenu konfiguraciju AMD Opteron koristi LGA (engl. land grid array)
podnožje tipa F (Socket F) koje ima preko 1200 priključaka.
- Višejezgreni procesor radi s frekvencijom signala vremenskog vođenja od
2.3 GHz i postiže vršnu performansu od 74 GFLOP/s
Krajem ovog desetljeća tvrtka AMD razvila je 12-jezgreni procesor Opteron
kodnog imena "Magny Cours"
-Svaka jezgra Opteron je superskalarni procesor (izdaje do tri instrukcije u
jednoj periodi signala vremenskog vođenja) i koristi izdavanje i završavanje
instrukcija izvan redoslijeda
- Jezgra pribavlja (iz instrukcijske priručne memorije) i dekodira do tri x86-64
instrukcije tijekom svake periode signala vremenskog vođenja.
- Instrukcije promjenjive duljine pakiraju se u tzv. makrooperacije (mops)
čvrste duljine.
- Svaka od Opteron jezgri ima instrukcijsku priručnu memoriju i priručnu
memoriju podataka (svaka kapaciteta 64 KB; razina L1).
- Svakoj je jezgri pridružena i priručna memorija razine L2 kapaciteta 512 KB
(nalazi se na procesorskom čipu) te zajednička dijeljena priručna memorija
razine L3 (6 MB)
IMB Power5 dvojezgreni SMT procesor, Power6 i Power7

-POWER5 je dvojezgreni SMT procesor koji podržava 64-bitnu PowerPC


arhitekturu.
- Na jednom čipu su ostvarena dvije identične jezgre pri čemu svaka od njih
podržava jednu fizičku dretvu i dvije logičke dretve,
- pored instrukcijske priručne memorije razine L1 kapaciteta 32 KB i priručne
memorije podataka razine L1 kapaciteta 32 KB, procesor ima i priručnu
memoriju razine L2 kapaciteta 1.875 MB (koju dijele obje jezgre) i direktorij
za priručnu memoriju razine L3.
- Direktorij je namijenjen priručnoj memoriji kapaciteta 36 MB koja je
realizirana izvan procesorskog čipa.
- Procesor POWER5 koristi crossbar prospojnu mrežu.
- Jezgra POWER5 podržava dva načina rada: simultanu višedretvenost
(SMT način rada) u kojem se izdaje više instrukcija iz različitih dretvi u jednoj
periodi signala vremenskog vođenja, te jednodretveni način rada ST (engl.
single-threaded mode).
- U oba slučaja (SMT i ST) pribavlja se osam instrukcija iz iste dretve,
međutim, njihovo izdavanje će biti, ako je riječ o SMT, takvo da su iz
različitih dretvi.
Instrukcijska protočna struktura za jezgru SMT procesora POWER5
Višejezgreni procesor POWER5 radi s frekvencijom signala vremenskog
vođenja od 1.9 GHz,
- ostvaren je u 130 nm VLSI tehnologiji na čipu površine 389 mm2, ima oko
200 milijuna tranzistora
- potrošak snage od oko 130 W.

Poboljšane verzija POWER5+ (2005. i 2006. godina) rade s frekvencijom


signala vremenskog vođenja do 2.3 GHz i imaju priručnu memoriju razine L3
ostvarene na procesorskom čipu. Power5+ realiziran je u 90 nm tehnologiji na
komadiću silicija površine 389 mm2.
- Poboljšana verzija SMT procesora, također s dvije jezgre, je POWER6
procesor (2007.) koji radi na frekvenciji 5.0 GHz. Svaka jezgra ima dvije
cjelobrojne aritmetičke jedinice, dvije jedinice za operacije brojevima s
pomičnim zarezom FPU, jedinicu za izvođenje SIMD instrukcija (AltiVec unit)
i jednu FP jedinicu za operacije decimalnim brojevima (engl. decimal
floating-point unit).
- Procesor POWER7 (2010.) je prvi IBM-ov 8-jezgreni SMT procesor i
predstavlja procesor za poslužitelje nove generacije. (Svaka od jezgri
podržava četiri istodobne višedretvene operacije, dakle ukupno 32 istodobno
izvršljive dretve.)
- Jezgra ima 12 izvršnih protočnih jedinica
- Procesor POWER7 ostvaren je u 45 nm VLSI tehnologiji, ima 1.2 milijarde
(!) tranzistora na čipu površine 567 mm2.
9. Grafički procesori (grafičke procesne jedinice)
Uobičajena konfiguracija osobnog računala početkom devedesetih godina:
Konfiguracija osobnog računala u prvom desetljeću ovog stoljeća:

Veza GPU – sjeverni premosnik –PCI-express (PCIe)


- krajem devedesetih godina razvoj tehnologije VLSI omogućio je da se VGA
upravljaču pridoda sklopovlje (tzv. sklopovski akceleratori) kojim se
ubrzavaju neke funkcije definirane u logičkoj grafičkoj protočnoj strukturi
(engl. logical graphics pipeline)
- Početkom 2000. počinje se koristiti naziv grafički procesor jer se u jednom
čipu objedinjuju sve uobičajene funkcije potrebne za djelotvorni prikaz 2D i
3D grafike.
- Grafički procesor postaje čvrsto definirana funkcijska protočna struktura
namijenjena visoko kvalitetnom prikazu jednakom filmskom (engl. film-
quality rendreing) u stvarnom vremenu.
- krajem 1999. tvrtka NVIDIA uvela je termin "grafička procesna jedinica"
GPU – Graphics Processing Unit kojim je opisala procesor na čipu GeForce
256 u kojem su integrirane funkcije koje podržavaju logičku grafičku
protočnu strukturu.
- Grafička procesna jedinica GeForce 256 obrađivala je 15 M poligona
(krpica) u sekundi i 480 M slikovnih elemenata u sekundi. Imao je čvrsto
definiranu 32-bitnu FP (engl. floating-point) jedinicu za transformacije
vrhova, procesor za proračun osvjetljenja (engl. lighting processor) i čvrsto
definiranu cjelobrojnu funkciju koja se odnosila na preslikavanje boje i
teksture na poligone.
Trenutačno stanje (2010.) je sljedeće: grafički su se procesori pretvorili u
programirljive paralelne procesore koji svojom procesnom snagom
premašuju višejezgrene (engl. multicore) procesore.

S arhitektonskog gledišta, grafički procesor je visoko paralelni, više dretveni


procesor s vrlo velikim brojem jezgri namijenjen vizualnom računanju (engl.
visual computing). Vizualno računanje je novi pojam koji se odnosi na
složenu mješavinu grafičke obrade i računanja tako da omogućuje vizualnu
interakciju u stvarnom vremenu računalno oblikovanih objekata uporabom
grafike, slika i videa.
- Grafičkim procesorima pridodane su nove instrukcije i memorija tako da
podržavaju više programske jezike i programska okruženja opće namjene.
Grafički procesori sada se mogu programirati u programskim jezicima
sličnim C i C++ i postaju procesori opće namjene s vrlo velikim brojem jezgri
(engl. manycore)!
- definiran je i novi model programiranja jer velika procesna moć koja se
odnosi na operacije brojevima s pomičnim zarezom te veliki stupanj
paralelizma ostvaren vrlo velikim brojem procesora, odnosno jezgri, nudi
djelotvornu primjenu grafičkih procesora na područjima izvan računalne
grafike (na primjer, obrada digitalnih slika i videa, složeni postupci
optimizacije uporabom evolucijskih algoritama, postupci
kriptiranja/dekriptiranja podataka i sl.).
Jedan od modela paralelnog programiranja namijenjen grafičkim
procesorima (ali i višejezgrenim procesorima) nove generacije je CUDA
(Compute Unified Device Architecture) koji predstavlja i programsku
platformu temeljenu na C/C++ programskom jeziku (CUDA C i CUDA C++).
Model CUDA je zapravo SPMD (Single-Program Multiple Data) model u
kojem programer piše program za jednu dretvu koja se potom instancira ili
oprimjeruje u velikom broju dretvi na velikom broju procesora u grafičkoj
procesnoj jedinici.
NVIDIA Tesla – unificirana arhitektura za grafiku i računanje

U studenom 2006. tvrtka NVIDIA definirala je novu arhitekturu


pod nazivom Tesla za grafički procesor GeForce 8800.

Značajke:
- ujednačena visokoparalelna arhitektura procesora (grafičkom procesoru koji se
temelji na Tesla arhitekturi nema razlike između procesora za sjenčanje vrhova i
procesora za sjenčanje slikovnih elemenata.)
- Programi za tu vrstu aplikacija razvijaju se u višim programskim jezicima sličnim
C i C++u skladu s modelom paralelnog programiranja CUDA
Blok-dijagram grafičkog procesora GeForce 8800
Sustavno se arhitektura grafičkog procesora GeForce 8800 može opisati kao
hijerarhijska organizacija koja se sastoji od:

i) polja tokovnih procesora SPA (Streaming Processor Array),


ii) teksturno-procesorske nakupine TPC (Texture /Processor Cluster),
iii) tokovnih multiprocesora SM (Streaming-Multiprocessor),
iv) tokovnih procesora SP (Streaming-Processor) i procesora za rasterske
operacije ROP (Raster Opertions Processor).
 
- Grafički procesor ima polje tokovnih procesora SPA (Streaming Processor
Array) koje se sastoji od 128 tokovnih procesora (ili tokovnih procesorskih
jezgri) SP (engl. streaming-processor core) – 16 x 8
-Tokovni procesori SP organizirani su u 16 tokovnih multiprocesora SM
(engl. streaming-multiprocessor)
/Svaki tokovni procesor SP je višedretveni procesor koji podržava 96
istodobnih dretvi/
- tokovni multiprocesori SM grupirani su u osam nezavisnih procesorskih
jedinica koje se nazivaju teksturno-procesorske nakupine TPC (engl.
texture/processor cluster)
- Teksturno-procesorska nakupina ima po dva tokovna multiprocesora SM,
a svaki od njih ima osam tokovnih procesora. Iz toga slijedi da jedan tokovni
multiprocesor SM može istodobno izvršavati do 896 = 768 dretvi.
Teksturno-procesorska nakupina TPC
Tokovni multiprocesor SM
- Procesorska jezgra SP GeForce 8800 je višedretvena i da rukuje istodobno
s 96 dretvi.
- Jezgra ima skup od 1024 32-bitnih registara kojima podržava 96 dretvi,
skalarnu jedinicu za množenje i zbrajanje brojeva s pomičnim zarezom MAD
(multiply-add) tako da svaki tokovni multiprocesor SM ima osam takvih
jedinica.
- Svaka jezgra podržava 32-bitnu i 64-bitnu cjelobrojnu aritmetiku te logičke
PTX (Parallel Thread eXecution) instrukcije.
- Procesori su povezani sa šest 64-bitnim DRAM modula pomoću prospojne
mreže.
- Svaki od šesnaest tokovnih multiprocesora SM ima, osim osam jezgri SP,
instrukcijsku priručnu memoriju (I cache),
Svaki tokovni multiprocesor SM ima još i:
- višedretvenu instrukcijsku jedinicu za pribavljanje i izdavanje instrukcija MT
- priručnu ispisnu (read-only cache) memoriju za pohranu konstanti C-Cache
(Constant-cache),
-dvije specijalne jedinice SFU (Special Function Unit) te zajedničku, dijeljenu
memoriju

Performansa grafičkog procesora GeForce 8800 ovisno o izvedbi (Ultra ili


GTX) je između 518 GFLOPS-a i 576 GFLOPS-a.
Usporedba GeForce 8800 GTX i 4-jezgrenog procesora Intel Xeon (2.8 GHz)
pokazuje da je grafički procesor otprilike sedam puta brži u računanju brze
Fouriereve transformacije FFT (Fast Fourier Transform)
Krajem 2010. na tržištu se pojavio grafički procesor, odnosno grafička kartica
NVIDIA GeForce GTX 580 marketinški najavljen kao "najbrži grafički
procesor na planeti" koji se temelji na arhitekturi NVIDIA Fermi. GTX 580 ima
512 tokovnih procesora SP koji su organizirani u 16 tokovnih multiprocesora
SM i 48 procesora za rasterske operacije ROP.

Opaska: Podrobniji opis višejezgrenih i grafičkih procesora može se naći u


knjizi S. Ribarić, Građa računala, Arhitektura i organizacija računarskih
sustava, Algebra, Zagreb, izlazi u ožujku 2011. (520 str.)

You might also like