procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/skaidres/hps4.pdf · risc reduced...

29
Procesorių architektūriniai sprendimai Procesorių architektūriniai sprendimai ISA, daugelio gijų procesoriai 4 paskaita

Upload: others

Post on 26-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Procesorių architektūriniai sprendimaiProcesorių architektūriniai sprendimai

ISA, daugelio gijų procesoriai4 paskaita

Page 2: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

ISA sprendimai

� CISC Complex Instruction Set Computer � CISC Complex Instruction Set Computer

� RISC Reduced Instruction Set Computer

� ZISC Zero Instruction Set Computer

� OISC One Instruction Set Computer

� VLIW Very Long Instruction Word

� Vektorinis procesorius

� EPIC Explicitly Parallel Instruction Computing

Page 3: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

EPICEPIC – Explicitly Parallel Instruction Computing

Našumas

EPIC

aparatūra atpažįsta neišreikštą lygiagretumąaparatūra inicijuoja komandas ir ne eilės tvarka

aparatūra pakeičia registrų vardus VLIW

paprastos, fiksuoto ilgio komandos

nuoseklumą valdo kompiliatorius

sudėtingos, įvairaus ilgio komandos

nuoseklumą valdo aparatūra

RISC

CISC

Laikas

Page 4: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Ankstesnių ISA trūkumai

� RISC vykdymo riba - 1 instrukcija per 1 ciklą� RISC vykdymo riba - 1 instrukcija per 1 ciklą

� Nepakankamai užpildomas konvejeris

� Sudėtingas galimai lygiagrečių instrukcijų vykdymas. Lygiagretumas nustatomas pačiame CPU.

� VLIW – instrukcijų rinkinys vykdomas nuosekliai

� Nauji VLIW procesoriai nesuderinamas su ankstesniaisankstesniais

� Lėtas duomenų atsisiuntimas iš CPU spartinančios atminties ir operatyvios atminties

Page 5: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Kodėl EPIC?

� Tranzistorių skaičius procesoriuose sparčiai auga ir viršija dešimtis milijonųviršija dešimtis milijonų

� Didėja spartinančiosios atminties dydis (L1, L2)

� Didėja funkcinių įrenginių skaičius procesoriuje� Didėja konvejerio pakopų skaičius� Reikalingas geresnis šakų spėjimo algoritmas� Didėja sankcijos neatspėjus šakosDidėja sankcijos neatspėjus šakos� Reikia daugiau registrų

� Kompiliatorius galėtų detektuotiir kontroliuoti lygiagrečias instrukcijas

Page 6: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Nuoseklus vykdymo modelis

Originalus išeities tekstas

Nuoseklus mašinos

kodastekstas kodas

Lygiagretintas kodas

APARATŪRA

FĮFĮFĮ

Kodo lygiagretinimas

FĮFĮFĮ

6 instrukcijos per taktą

Page 7: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Išreikštas lygiagretumas

Originalus išeities tekstas

Kompiliatorius

Lygiagretintas mašininis kodas

“Expose”

“Enhance”

“Exploit”

Page 8: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

x86 architektūra

� Naudojamos sudėtingos A

� Naudojamos sudėtingos įvairaus ilgio komandos, apdorojamos po vieną

� Komandų srautą pertvarko (pakeičia eilės tvarką) ir optimizuoja vykdymo metu CPU

C

B

� Bando įspėti, kokia kryptimi bus vykdomas perėjimas ir spekulatyviai vykdo tik prognozuojamos šakos komandas ?

Page 9: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

x86 architektūra

addCache

CPU

ld

sub

add

addCache

RAM

� Duomenis iš atminties įkrauna tik tuomet, kai jų prireikia; pirmiausia jų ieško spartinačiojoje atmintyje

CPU

Page 10: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

IA-64 architektūra (EPIC)

Pagrindiniai IA-64 bruožai� labai ilgas instrukcijos žodis – VLIW� spekuliatyvumas� predikacija

� pirminė duomenų paieška vykdoma spart. atmintyje

Page 11: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

IA-64 funkciniai įrenginiai

� I-Unit� Integer arithmetic� Integer arithmetic� Shift and add� Logical� Compare� Integer multimedia ops

� M-Unit� Load and store

� Between register and memory� Between register and memory� Some integer ALU

� B-Unit� Branch instructions

� F-Unit� Floating point instructions

Page 12: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Instrukcijų formatai

Page 13: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

IA-64 komandų formatas

� 128 bitų grupė - “ilgas komandos žodis”:

T 1 komanda 2 komanda 3 komanda

OpK PR GPR GPR GPR

� T - Template laukas, identifikuojantis šio trejeto ir kitų trejetų � T - Template laukas, identifikuojantis šio trejeto ir kitų trejetų komandas, kurios gali būti vykdomos lygiagrečiai.

� PR - 6 bitų laukas; nurodo vieną iš 64 predikato registrų.� GPR - 7 bitų laukas; nurodo vieną iš 128 bendrųjų (sveikųjų

skaičių ar slankaus taško skaičių) registrų.

Page 14: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

IA-64 architektūra (EPIC)

VLIW� Naudojamos paprastos

CBA� Naudojamos paprastos

fiksuoto ilgio komandos, sugrupuotos po tris

� Komandų srautą pertvarko (pakeičia eilės tvarką) ir optimizuoja kompiliavimo metu

PredikcijaVykdo abiejų šakų komandas

CPU

� Vykdo abiejų šakų komandas� Paaiškėjus perėjimo krypčiai,

atmeta kitos šakos komandų vykdymo rezultatus

PR[2]

PR[1]

Page 15: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

IA-64 architektūra (EPIC)

Spekuliatyvumas

add

Spekuliatyvumas

� Spekulatyviai iš anksto įkrauna duomenis iš atminties; Šis procesas leidžia kompiliatoriui identifikuoti duomenis, kurių reikės ateityje. Tai leidžia išvengti procesoriaus prastovų. CPU

ld

sub

add

CPU

Page 16: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Spekulatyvaus įkrovimo principai

1 komanda

2 komanda2 komanda

Spekulatyvus įkrovimas

7 komanda4 komanda

3 komanda (šakojim.)

3

8 komanda (duom. Įkrov.)

Spekulatyvus tikrinimas

9 komanda (naudoja duomenis)

5 komanda

6 komanda

1

2 5

4

Page 17: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Spekulatyvaus įkrovimo principai

Kompiliatorius analizuoja toliau esantį kodą ir aptinka load komandą (Nr.8). Vietoje jos:

1

a) prieš komandą, kuriai reikia įkrautų duomenų, įterpiaspekulatyvią tikrinimo komandą;

IA-64 faktiškai perkėlė load komandą prieš šakojimąsib) spekulatyvią load komandą įterpia čia;

vykdymo metu ši komanda įkrauna vėliau reikalingus duomenis; jei įkrovimas iššaukia pertrauktį, CPU sulaiko jos signalą.

Kompiliatorius pakeitė šią load komandą aukščiau parodyta

2

3

Kompiliatorius pakeitė šią load komandą aukščiau parodyta spekulatyvia load komanda.

Ši komanda tikrina, ar duomenys tikri. Jei viskas tvarkoj, CPU apie pertrauktį nutyli.

5

4

Page 18: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Intel Itanium procesoriai

Page 19: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Intel Itanium procesorius

Page 20: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Superskaliarinio ir IA-64 lyginimas

Page 21: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Procesorių našumo didinimas taikant lygiagretinimą

� Bitų lygmens lygiagretumas (4, 8, 16, 32, 64 bitų žodžiai). � Bitų lygmens lygiagretumas (4, 8, 16, 32, 64 bitų žodžiai).

� Instrukcijų lygmens lygiagretumas (Instruction Level

Parallelism)

� Gijų lygmens lygiagretumas (Multi-Threading)� Branduolių lygmens lygiagretumas (Multi-core)� Procesorių lygmens lygiagretumas (Multi-processing)� Procesorių lygmens lygiagretumas (Multi-processing)

Page 22: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Gijos (Threads)

Gija vadiname trumpinį vykdymo gija (thread of execution).

Gijos – tai būdas, padalinti programos vykdymą į du dar daugiau vienu metu vykdomus darbus.

Gijos gali būti vykdomos lygiagrečiai keliuose procesoriuose arba klasteriuose. Gija panaši į procesą, tačiau gijos egzistuoja vieno proceso rėmuose ir dalinasi resursais, kurie skirti procesui, todėl daugiaprocesorinės užduotys yra lėtesnės už daugelio gijų darbus.

Gijos valdomos per sisteminių kvietimų (system calls) sąsają. (open, read, write, close, wait, exec, fork, exit, kill. Linux OS yra 319 skirtingų sisteminių kvietimų ).

Page 23: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Skirtumai tarp gijų ir procesų

� ProcesasProcesas� Atskira atminties adresų erdvė� Atskiras priėjimas prie I/O sistemos� Komunikacijos vykdomos tarp procesų naudojant tarprocesorinės

komunikacijas (MPI, sinchronizacija, bendra atmintis, RPC)� Gija

� Naudoja proceso, kuriam ji priklauso atminties adresų erdvę� Naudojami proceso priėjimo prie I/O sistemos kanalai� Komunikacijos vykdomos per procesui išskirtą atminties erdvę

� Gijų tipai: branduolio gijos (threads), vartotojo gijos (fibers).� Gijų valdymo būdai:

� prioritetinis (preemptive multithreading ), � kooperatyvinis (cooperative multithreading).

Page 24: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Daugelio gijų skaičiavimai

� Daugelio gijų skaičiavimai (multi-threading) –procesorius perjungiamas nuo vienos gijos prie kitos. procesorius perjungiamas nuo vienos gijos prie kitos.

Kadangi šiuolaikinės kristalų gamybos technologijos įgalina viename kristale sutalpinti dešimtis milijonų tranzistorių, atsirado galimybė į kristalo vidų perkelti net ir tokias sudėtingas schemas, kurios reikalingos dinaminei programos kodo analizei, gijų išskyrimui, jų sąlyginei programos kodo analizei, gijų išskyrimui, jų sąlyginei

inicializacijai bei kelių gijų palaikymui.

Page 25: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Daugelio gijų skaičiavimai(dalinimasis resursais)

� Kvantuojami daugelio gijų skaičiavimai (time-slice multithreading) – procesorius reguliariai perjungiamas nuo Kvantuojami daugelio gijų skaičiavimai (time-slice multithreading) – procesorius reguliariai perjungiamas nuo vienos gijos prie kitos (fiksuoto dydžio intervalais).

� Proginiai daugelio gijų skaičiavimai (switch-on-event multithreading) – procesorius perjungiamas nuo vienos gijos prie kitos, kai vykdytoje gijoje atsiranda priverstinė pauzė (pvz., nepataikius į spart. atmintyje esančius duomenis).

� Vienalaikiai daugelio gijų skaičiavimai (simultaneous multithreading) – procesorius vykdo skirtingas gijas “vienu metu”, be perjungimo nuo vienos gijos prie kitos. Resursai skirstomi dinamiškai (”nereikalingas tau – atiduok kitam”).

Page 26: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Daugelio gijų skaičiavimai

Daugelio gijų technologijos:

� Multi-threaded: vykdomos instrukcijos iš skirtingų gijų persijunginėjant nuo vienos gijos prie kitos.

� Simultaneous multithreading (SMT): vykdoma daug instrukcijų iš skirtingų gijų per vieną ciklą (superskaliariniai procesoriai).

� Chip-level multiprocessing (CMP arba Multi-core): integruojama du ar daugiau superskaliarinių procesorių/branduolių į vieną mikro-schemą. Kiekvienas branduolys vykdo atskirą giją nepriklausomai.schemą. Kiekvienas branduolys vykdo atskirą giją nepriklausomai.

� Kombinacija SMT/CMP

Daugelio gijų skaičiavimai leidžia geriau išnaudoti esamus ALU. Paprastai procesorius modifikuojamas didinant registrų skaičių, kad galėtų saugoti kelių gijų duomenis. Vykdomas vienu metu gijų skaičius būna 2, 4, 8.

Problema – konfliktų sprendimai naudojant bendra atmintį gijoms.

Page 27: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Hyper-Threading technologija

Pirmą kartą simultaneous multithreading technologija komerciškai sėkmingai panaudota buvo panaudotas Intel Xeon MP (Foster MP). Ji pavadinta Hyper-panaudota buvo panaudotas Intel Xeon MP (Foster MP). Ji pavadinta Hyper-Threading Technology. 2002 m. HTT pradėta naudoti ir Pentium 4 (nuo 3,0GHz). Kiti procesoriai su SMT: IBM POWER5, MIPS MP, SUN SPARC

Page 28: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Hyper-Threading technologija

Page 29: Procesori ų architekt riniai sprendimaidma.vgtu.lt/hps/Skaidres/hps4.pdf · RISC Reduced Instruction Set Computer ZISC Zero Instruction Set Computer OISC One Instruction Set Computer

Hyper-Threading technologijos nauda