Sunteți pe pagina 1din 19

Structura sistemelor de

calcul
Cursul 6
Sisteme multi-core
Multithreading si multi-processing -
(sisteme) multifir si multiprocesor
 Exploatarea diferitelor forme de paralelism:
 Paralelism la nivel de date - data level parallelism (DLP) – aceeasi
operație pe un set de date – arhitectura SIMD, UAL multiple
 Paralelism la nivel de instructiuni - instruction level parallelism (ILP) –
fazele instructiunilor executate in paralel – arhitectura pipeline
 Paralelism la nivel de fire de executie -thread level parallelism (TLP) –
fluxuri de instructiuni executate in paralel – hyper-treading, arhitecturi
multiprocesor (multi-core, GRID, cloud, parallel computers)

 Probleme generate de paralelismul la nivel de fire de executie:


 Sincronizarea intre fire
 Consistenta datelor
 Acces concurent la date partajate
 Comunicatia intre fire de executie
Multiprocesare
 Limitarea cresterii de
performanta
 Legea lui Amdahl
 S - speedup cresterea de viteza
 ts – timp pentru executie
secventiala
 tp – timp de executie paralela
 q – fractiunea de program care se
poate executa in paralel
 n – numarul de noduri/fire

t ts
S s   Exemple:
tp (1  q )ts  qts / n q=50%, n->∞ => S=2
1
 q=75%, n->∞ => S=4
1 q  q / n
q=95%, n->∞ => S=20
Hyper-threading
 hyper-treading – executia paralela a mai multor fluxuri de
instructiuni pe un singur UCP (pipeline)
 Idea: atunci când un fir este blocat din cauza unor cazuri de
hazard, un alt fir poate fi executat
 Solutia:
 două fire executate în paralel pe aceeași linie pipeline
 Dupa fiecare faza se pun 2 buffere (registre) care pastreaza rezultatele
partiale pentru cele doua fire
 Cresterea de performanta - Speedup – aproximativ 30%
 Sistemul de operare va detecta 2 UCP-uri logice !!
Un fir de Thread IF ID Ex M Wb
executie
Thread 1

Hyper
threaded IF ID Ex M Wb
Thread 2
Multiprocesoare
 Executarea în paralel a fluxurilor de instrucțiuni pe mai
multe UCP-uri
 Implementari:
 Arhitecturi multi-core – UCP-uri multiple intr-un singur circuit
integrat
 Calculatoare paralele – UCP-uri multiple in circuite integrate
separate, dar in acelasi sistem de calcul
 Sistem de calcul distribuit – UCP-uri multiple in calculatoare
diferite, conectate intr-o retea
• PC-uri in retea
• Arhitecturi GRID – Resurse de calcul distribuite pentru organizatii
virtuale, pentru procesare pe loturi (batch)
• Arhitecturi cloud– resurse de calculator(executie si stocare) oferite ca
servicii (inchiriabile in mod dinamic);
 Combinatii intre toate cele de mai sus: multi-core pe calculatoare
paralele, conectate intr-un sistem distribuit
Procesoare multi-core
 De ce multi-core:
 Dificil de a mari frecvențele ceasului pe un core; în ultimii 4-5 ani
creșterea frecvenței ceasului s-a saturat la 2,5-3 GHz
 consumul de energie ridicat și problemele de disipare (frecvența
mai mare înseamnă mai multă putere)
 arhitecturile pipeline și-au atins limitele de eficiență (aproximativ
20 faze este maxim posibil)
 proiectarea unui procesor foarte complex (cu mai multe scheme
de optimizare implicate) necesită coordonarea unor echipe de
proiectare foarte mari
 multe aplicații noi sunt multithreaded (de exemplu, servere care
rezolvă mai multe solicitări concurente, sisteme de agenți, jocuri,
simulare etc..)
Procesoare multi-core (multi-nucleu)
 Probleme (decizii posibile):
 funcționalități identice sau diferite pentru procesoare (procesoare
omogene v.s. eterogene)
• symmetric cores (SMP – Symmetric multi-core processor) – fiecare
nucleu are aceeași structură și funcționalitate
• asymmetric cores (ASMP) – există nuclee de coordonare și nuclee
specializate (mai simple)
 relația cu memoria
• symmetric memory access - the SYMA - acces simetric la memorie
• non-uniform memory access – NUMA - acces asimetric la memorie
 conexiunea dintre nuclee
• Magistrala comuna – paralela sau de tip retea (vezi network-on-chip)
• crossbar – conexiuni multiple controlate peintr-un comutator
• Ierarhie de memorii (cache) – zone comune de memorie
Procesoare multi-core
 Solutii arhitecturale

Core Core Core Core Core Core

L1 L1 L1 L1
L1 L1

Switch L2 L2
crossbar
L2
L3 L3

Memory Memory Memory


Module 1 Module 2
Multi-core simetric cu memorie cache Multi-core simetric, cu cache L2 și
L1 privată și L2 și memorie partajată L3 parțial partajate
Procesoare multi-core
 architectural solutions (cont.)
Processor 1 Processor 2
Local Local
Core (2x SMT) Core Core Core Core
Store Store
Core Core
L1 L1 L1 L1 L1
Ring network

L2 Switch Switch
Core Core
Local Local L2 L2
Store Store

Memory Memory
I/O
Module

Multi-core eterogen cu memorie Două procesoare cu două nuclee și


cache locală și partajată memorie partajată
Procesoare multi-core
 Memorie cache partajata
 memorie de mare viteză utilizată de un număr de nuclee (UCP-uri)
 Avantaje:
• alocarea eficientă a spațiului de memorie existent
• un nucleu poate accesa date in avans pentru celălalt nucleu
• Partajarea datelor comune
• Nu sunt probleme de coerenta a cache-ului intre nuclee
• mai puține accese la memoria principala
 Dezavantaje:
• conflict între nuclee la alocarea spațiului pe memoria cache; un nucleu
poate înlocui datele celuilalt nucleu
• circuit de control mai complex și timp de latență mai lung din cauza
comutației intre nuclee
• un nucleu poate bloca accesul pentru celălalt nucleu
Procesoare multi-core
 Coerența cache-ului in cazul memoriilor private
 Cum să păstrați consistenta datelor în memoriile cache?
• solutii:
 write through – fiecare scriere se face, SI în memoria principala –
mai putin eficient
 Write-back – inconsistenta este rezolvate atunci când linia cache
este descărcat din c ache – o perioada lungă de inconsistenta
poate genera erori
 snooping and invalidation – nucleele spioneaza magistrala și
invalidează linia cache dacă o scriere dintr-un alt nucleu afectează
conținutul cache-ului său (de exemplu, magistrala P6 a Pentium Pro
- faza de snooping)
core 1 core 2 core 3 core 4

cache cache cache cache

write inconsistency
Read Memory
Procesoare multi-core
 Nuclee asimetrice v.s. simetrice
 Arhitectură simetrică
• toate nucleele sunt la fel
• nucleele pot îndeplini orice sarcini; ele sunt interschimbabile
• Avantaje:
 ușor de construit (replicare simplă),
 ușor de programat, de compilat și de executat programe
multithreaded
• Dezavantaj:
 Nuclee mai putine (nu incap prea multe nuclee complexe)
• exemple:
 Intel, AMD - Dual si Quad core, Core2,
 SUN - UltraSparc T1 (Niagara) – 8 coruri identice
Procesoare multi-core
 Nuclee asimetrice v.s. simetrice(cont.)
 Arhitectură asimetrică (eterogenă)
• unele nuclee au funcționalități diferite:
 1-2 nuclee master si mai multe nuclee slave (mai simple)
 1 nucleu principal și mai multe nuclee specializate (grafică,
virgula flotanta, multimedia)
• compilatoarele ar trebui să ia în considerare funcționalitățile
care pot fi efectuate de fiecare nucleu
• Advantaje:
 poate integra mai multe nuclee simple
• Dezavantaj:
 Compilare mai dificila; compilatorul sa tina cont de tipurile de
nuclee existente
• exemple:
 IBM – cell processor – folosit pentru Playstation 3
Procesoare multi-core
 Arhitectură asimetrică
(eterogenă)
 Arhitectura IBM cell: 9 nuclee
• 1 PPE - power processor element
 coordonarea și transferul de date
• 8 SPEs - Synergistic Processing
Element
 unități matematice specializate
• aplicatii:
 superccalculatoare
 Playstation-uri
 home cinema
 Interfete video
Procesoare multi-core
 Avantajele procesoarelor multi-core:
 Semnalele între diferite procesoare parcurg distanțe mai scurte,
aceste semnale se degradează mai puțin.

 Aceste semnale de calitate superioară permit trimiterea mai


multor date într-o anumită perioadă de timp, deoarece
semnalele individuale pot fi mai scurte

 Circuitele care asigura coerenta cache-ului pot funcționa la o


rată de ceas mult mai mare decât este posibil în cazul în care
semnalele trebuie să călătorească in afara circuitului.

 Un procesor dual-core utilizează mai puțină putere decât două


procesoare single-core cuplate.
Procesoare multi-core
 Dezavantajele procesoarelor multi-core:
 Capacitatea procesoarelor multi-core de a crește performanța
aplicațiilor depinde de utilizarea mai multor fire de executie în
cadrul aplicațiilor.

 Majoritatea jocurilor video actuale vor rula mai rapid pe un


procesor single-core de 3 GHz decât pe un procesor dual-core de
2GHz (cu aceeași arhitectură de bază ).

 Două nuclee care partajează aceeași magistrală de sistem și


aceeași lățime de bandă a memoriei , limitează avantajul de
performanță pentru aplicatii uzuale (din lumea reala).

 Dacă un singur nucleu este la limita superioara a latimii de banda


a memoriei, un dual-core ar putea oferi doar o îmbunătățire de
30% până la 70%.

 Dacă lățimea de bandă a memoriei nu este o problemă, se poate


aștepta o îmbunătățire de 90%.
Procesoare multi-core
 Afinitatea firelor de executie (fata de
anumite nuclee)
 putem specifica dacă un fir de executie poate fi
executat pe orice nucleu sau doar pe un
anumit nucleu
• soft affinity: - controlat de sistemul de operare
 un fir întrerupt ar trebui să continue pe același miez
• hard affinity – indicatori asociati unui fir de executie
care indică pe cenucleu poate fi executat
 util pentru aplicații în timp real și de control – pentru a
reduce sarcina pe un nucleu pe care sunt executate fire
critice
Procesoare multi-core
 Tendinte si limitari
 Cand vom avea un PC cu peste 100 core-uri?
• Avem deja la nivelul GPU peste 100 de core-uri
• Procesorul principal se limiteaza la 8-16 nuclee
• Problema: accesul eficient la memorie
 Pentru probleme specifice cu grad ridicat de paralelizare –
sute de nuclee care efectueaza calcule matematice
complexe:
• Exemple: procesare de imagini, generare de imagini (realitate
virtuala), modelare si simulare in fizica, chimie, biologie
 Pentru aplicatii diverse, rulate pe un 2calculator personal:
paralelizare dificila
• Comutare de context, acces la baza de date, comunicatia in retea
Procesoare multi-core
 Limitari:
 Numar limitat de tranzistoare integrabile pe un circuit
integrat
 Putere limitata de disipare a energiei consumate
 Acces concurent la o memorie cu latime de banda
limitata
 Probleme de comunicare intre core-uri – fire de
executie
 Pana unde poate merge paralelizarea anumitor
aplicatii – Legea lui Amdahl
 Poate s-a atins un maxim in ceea ce priveste
cresterea de performanta obtenabila printr-o
arhitectura multi-core de uz general

S-ar putea să vă placă și