蔡英文丢掉了“九二共识”这把钥匙
![]() | Acest articol sau sec?iune are mai multe probleme. Pute?i s? contribui?i la rezolvarea lor sau s? le comenta?i pe pagina de discu?ie. Pentru ajutor, consulta?i pagina de ?ndrum?ri.
Nu ?terge?i etichetele ?nainte de rezolvarea problemelor. |



Chip multiprocessor (CMP) (multicore, multiprocesor) reprezint? o arhitectur? modern? de microprocesor, bazat? pe existen?a unui grup de uniprocesoare integrate la nivelul unui singur chip, interconectate ?ntre ele pentru asigurarea unui comportament (func?ionalitate, interfa?are, procesare) identic cu cel prezent la arhitecturile conven?ionale single-processor. Implementarea unui sistem de tip chip multiprocessor implic? un efort de proiectare relativ modest (din punct de vedere ingineresc), rezumandu-se la multiplicarea unei genera?ii de procesoare, care vor constitui familia de core-uri ale multiprocesorului, ?i interconectarea logic? a acestora (adaptarea la cerintele de band? ?i de laten??). Totodat?, spre deosebire de multiprocesoarele conven?ionale cu un singur core per chip, arhitectura CMP necesit? modific?ri minore de la genera?ie la genera?ie ?ntrucat nu implic? reproiectarea unui modul core ci doar cre?terea num?rului de module core per chip. Diferen?a major? const? ?n capacit??ile de memorie ?i de band? ale perifericelor I/O, care sunt de cele mai multe ori destul de ridicate ?n cazul CMP.
Performan?a unui chip multiprocessor
[modificare | modificare surs?]Performan?a unui chip multiprocesor poate fi echivalat? cu num?rul de procesoare sau core-uri integrate, f?r? a fi necesar? o reproiectare a fiec?rui procesor ?n mod individual. Prin urmare, acela?i design de procesor, cu mici modific?ri, poate fi folosit pe mai multe genera?ii de produse, amortizandu-se astfel costul de proiectare ?i verificare. De asemenea, scalarea performan?ei unui CMP nu are nevoie de o cre?tere a energiei consumate la nivel de instruc?iune, ci dimpotriv?, performan?a CMP poate cre?te simultan cu reducerea energiei consumate la nivel de instruc?iune.
Prin folosirea unui design de procesor mai pu?in agresiv, este posibil s? se reduc? fluxul de energie per instruc?iune ?i, ?n acela?i timp utiliza mai multe procesoare care s? creasc? performan?a chipului ca ansamblu. Aceast? abordare permite utilizarea unui num?r ridicat de tranzistoare per chip pentru cre?terea performan?ei, men?inandu-se limita de temperatur? critic? (r?cire cu aer)[1]. Trecerea la CMP ajut? la reducerea efectului de ?ntarziere de cablaj. Fiecare procesor ?ntr-un CMP este relativ mic ?n raport cu suprafa?a ?ntregului chip, iar lungimea cablajelor este redus?. Comunicarea interprocessor necesit? totu?i fire lungi ?n ansamblu. Cu toate acestea, laten?a de comunicare interprocessor este mai pu?in critic? pentru performan?a ?ntr-un sistem multi-procesor ?n compara?ie cu laten?a de comunicare ?ntre unit??i din cadrul arhitecturilor cu un singur procesor. De asemenea, ?n cazul cablajelor lungi se poate adopta o politic? pipeline, pentru subdivizarea fiec?rei instruc?iuni ?ntr-un num?r de etape sau segmente, fiecare etap? fiind executat? de cate o unitate func?ional? separat? a procesorului. ?n acest fel are loc o cre?tere a vitezei de execu?ie totale a procesoarelor, f?r? a ridica tactul.
?ntrucat procesoarele independente din cadrul arhitecturii CMP sunt vizibile programatorului ca entit??i distincte, modelul computa?ional Von Neumann[2] a fost ?nlocuit cu modelul de programare paralel? (parallel programming model). Programatorii trebuie s? ??i divid? aplica?iile ?n p?r?i semi-independente, sau thread-uri, pentru operarea simultan? pe mai multe procesoare din cadrul unui sistem CMP. Odat? ce procesul de threading a fost finalizat cu succes, programele vor beneficia de tehnologia thread-level parallelism (TLP) care presupune rularea diverselor thread-uri in paralel, ?n plus fa?? de ILP (instruction level parallelism).
Facilit??i de paralelizare CMP
[modificare | modificare surs?]Instruction (instruc?iune). Toate procesele din cadrul aplica?iei manifest? paralelism ?ntre instruc?iuni individuale. Acest nivel nu este prezentat ?n figur? ?ntrucat granularitatea se rezum? la simple instruc?iuni. Arhitecturile superscalare pot beneficia cu succes de acest tip de paralelism.
Basic Block (bloc de baz?). Grupuri mici de instruc?iuni prezente pe o ramur? de execu?ie poart? numele de blocuri de baz?. Arhitecturile tradi?ionale nu permit exploatarea acestei abord?ri ?n sensul paraleliz?rii ?ntr-un mod distinct fa?? de ILP (instruction level parallelism). ?n esen??, paralelizarea basic block permite aplicarea ILP la nivelul catorva blocuri uzuale ?n mod simultan, ?mbun?t??ind ?n mod substan?ial poten?ialul arhitecturilor superscalare.
Loop Iterations (iteratii in bucla). Fiecare itera?ie a unei bucle utilizeaz? date independente, ?i astfel devine un element independent al procesului de paralelizare. ?n cadrul sistemelor conven?ionale, singura cale pentru a beneficia de avantajele acestui tip de paralelism este utilizarea unui procesor superscalar cu un set de instruc?iuni suficient de mare pentru a determina paralelismul ?ntre instruc?iuni independente ?n multiple itera?ii din cadrul buclelor ?n mod simultan, sau utilizarea unui compilator suficient de evoluat care s? lege instruc?iuni din diverse itera?ii ?n sensul optimiz?rii (procedur? cunoscut? sub numele de software pipelining). Procedura de extragere a TLP este ?nsa greoaie, ?ntrucat buclele trebuie sa fie foarte mult paralelizate pentru a putea fi divizibile ?n elemente independente de cod suficient de mari.
Tasks. Task-urile desemneaz? func?ii independente de mari dimensiuni, extrase din cadrul unei singure aplica?ii. Spre deosebire de tipurile de paralelism men?ionate anterior, numai arhitecturile de procesoare symetric multiprocessor (SMP) (arhitectur? alc?tuit? din chip microprocesoare multiple) pot beneficia de acest tip de paralelism, necesitand programare manual? pentru divizarea codului ?n thread-uri explicite (mecanisme software dedicate precum POSIX).
Processes (procese). Dincolo de task-urile complet independente de procesele sistemului de operare, toate aplica?iile au propriul lor spa?iu separat de adrese virtuale. Exploatarea paralelismului la acest nivel este precum exploatarea paralelismului la nivel de task, cu excep?ia faptului c? granularitatea este mai mare.
Utilitate
[modificare | modificare surs?]Apari?ia CMP schimb? spectrul tehnicilor de paralelizare. Spre deosebire de conven?ionalele uniprocesoare, chip-urile multicore pot utiliza TLP, ?i, prin urmare, pot profita de thead-uri pentru utilizarea paralelismului. ?n plus, datorit? laten?elor de comunicare mici dintre unit??ile core ale procesorului, ?i datorit? abilit??ilor de ?ncorporare a unor noi facilit??i care sa beneficieze de aceste laten?e reduse, arhitectura CMP poate aborda cu succes paralelismul la nivel de bucl?, task ?i chiar la nivelul blocurilor de baz?.
Vezi ?i
[modificare | modificare surs?]Referin?e
[modificare | modificare surs?]- ^ Asigurarea unui flux de aer cu un ansamblu compus din radiator si ventilator
- ^ John von Neumann
Leg?turi externe
[modificare | modificare surs?]Bibliografie
[modificare | modificare surs?]- Kunle Olukotun, Lance Hammond, James Laudon: Chip Multiprocessor Architecture: Techniques to Improve Throughput and Latency
- Alexandre Solomatnikov: POLYMORPHIC CHIP MULTIPROCESSOR ARCHITECTURE