Heterogén számítási rendszerek Bevezető Szerver architektúrák Kommunikációs interfészek
Szántó Péter BME MIT, FPGA Laboratórium
HPC alkalmazások Computational Fluid Dynamics (CFD) Folyadék (gáz) áramlás szimuláció Időjárás előrejelzés Szeizmikus analízis Olaj/gáz kutatás Földrengés előrejelzés Kémiai informatika molekula fejlesztés Bioinformatika Gén kutatás, dokkolás Pénzügyi számítások Kockázat analízis
HPC példák: véráramlás szim. Az halálozási okok ~50%-a szívés érrendszeri betegségekre vezethető vissza a nyugati világban Az artériás betegségek kialakulása erősen korrelál a vér áramlási mintázatával Egy perc alatt a szív a teljes vérmennyiséget (~5 l) a teljes (~100.000 km) érhálózaton átpumpálja
HPC példák: időjárás előrejelzés Egyenletek: Newton 2. törvénye (3D) Termodinamikai egyenlet Kontinuitási egyenlet Ideális gáz egyenlete Horizontális felbontás Néhány 10 km Vertikális szintek Néhány 10 (OMSZ: 60) Pl. globális előrejelzés: 134.000 rácspont, 31 szint 24 millió ismeretlen és 24 millió egyenlet Időlépcső: 4 perc
HPC példák: virtual screening Molekula adatbázis: több millió molekula 1D (vagy 2D) leírója („ujjlenyomat”) Cél: adatbázisok teljes összehasonlítása, „kevéssé” hasonló molekulák keresése c D 1 S 1 Dlimit Pl. Tanimoto távolság a ,b a ,b abc
HPC példák: gén szekvenálás Humán genom: ~3 milliárd bázispár Next generation sequencing: ~100 bázispár hosszú darabok, 10-szeres lefedés ~300 millió szekvencia („read”) Cél: a read illesztése egy referencia genom mintához Eltérések (akár kihagyások, beillesztések) megengedettek Szekvenálási hibák Genom eltérések
HPC TOP 8 Gép Sunway TaihuLight (Sunway SW26010 260C 1.45GHz), Kína
Magok
Max. Tflops/s
Linpack Tflops/s
Power (kW)
10.649.600
125.435
93.014
15.371
3.120.000
54.902
33.862
17.808
361.760
25.326
19.590
2.272
19.860.000
28.192
19.135
1.350
560.640
27.112
17.590
8.209
1.572.864
20.132
17.173
7.890
Trinity (Cray XC40, Intel Xeon Phi 7250 68C 1.4GHz), USA
979.968
43.902
14.137
3.844
Cori (Cray XC40, Intel Xeon Phi 7250 68C 1.4GHz), USA
622.336
27.880
14.014
3.939
Tianhe-2 (Xeon E5-2692 12C 2,2G + Xeon Phi 31S1P), Kína Piz Daint (Cray XC50, Xeon E5-2690v3 12C 2.6GHz, NVIDIA Tesla P100), Svájc
Gyoukou (Xeon D-1571 16C 1.3GHz, PEZY-SC2 700Mhz), Japán Titan (Cray XK7 – Opteron 6274 16C, 2,2G + NVIDIA K20x), USA Sequoia (IBM BlueGene – PowerPC BQC 16C, 1,6G), USA
HPC – TOP 8: 1. & 2. Sunway TaihuLight Sunway SW26010 260C 1.45GHz CPU 10.649.600 mag 1,310 TB RAM 93.014 LP TFlop/s 15.37 MW
Tianhe-2
Intel Xeon E5-2692 16.000 CPU+2xPhi 3.120.000 mag 1 TB RAM 54.902 TFlop/s 17 MW
HPC – TOP 8: 3. & 4. Piz Daint
Xeon E5-2690v3 12C 2.6GHz NVIDIA Tesla P100 GPU 361.760 mag 0,34 TB RAM 15.590 LP TFlop/s 2.27 MW
Gyoukou
Xeon D-1571 16C 1.3GHz PEZY-SC2 700Mhz 19.860.000 mag 0,575 TB RAM 19.135 TFlop/s 1.35 MW
HPC Green TOP 8 Gép
Magok
Max. Tflops/s
Power Eff. (Gflops/W)
Shoubu system B (Xeon D-1571 16C 1.3GHz, PEZY-SC2), Japán
794.400
842
17
Suiren2 (Xeon D-1571 16C 1.3GHz, PEZYSC2), Japán
762.624
788
16,76
Sakura (Xeon E5-2618Lv3 8C 2.3GHz, PEZY-SC2), Japán
794.400
824
16,65
22.440
1.070
15,11
19.860.000
19.135
14,17
135.828
8.125
13,7
AIST AI Cloud (Xeon E5-2630Lv4 10C 1.8GHz, NVIDIA Tesla P100), Japán
23.400
961
12,68
RAIDEN GPU (Xeon E5-2698v4 20C 2.2GHz, NVIDIA Tesla P100), Japán
11.712
635
10,6
DGX SaturnV Volta (Xeon E5-2698v4 20C 2.2GHz, NVIDIA Tesla V100), USA Gyoukou (Xeon D-1571 16C 1.3GHz, PEZYSC2 700Mhz), Japán TSUBAME3.0 (Xeon E5-2680v4 14C 2.4GHz, NVIDIA Tesla P100), Japán
Sunway SW26010 Kína saját fejlesztésű HPC processzora MPE: Management Processing Engine 64-bit RISC, 256-bit vector, 32 kB L1, 256 kB L2 CPE: Computing Processing Element 8x8 64-bit RISC mag, 256-bit vector, 16 kB L1 Icache, 64 kB Scratch Pad memory
Pezy SC-2
Környékünk… NIIF HPC cluster Budapest Budapest 2
Típus
HP CP4000S HP SL250s L
Szeged
Debrecen
Debrecen 2 Debrecen
HP SGI HP Apollo HP SL250s CP4000BL ICE8400EX 8000
Pécs
Miskolc
SGI UV 1000
SGI UV 2000
CPU magok
768
280
2400
1536
1344
1080
1152
352
Memória / node
66 GB
63 GB
132 GB
47 GB
125 GB
125 GB
6 TB
1.4 TB
-
-
Gyorsítók
-
Linpack (Rmax)
5 Tflops
28 db Intel 12 db Nvidia Xeon Phi M2070 27 Tflops
20 Tflops
-
18 Tlops
204 db Nvidia K20x 88 db Intel 48 db Nvidia Xeon Phi K40x
254 Tflops 106 Tflops 10 Tflops
8 Tflops
Párhuzamos architektúrák
Amdahl törvény Gyorsíthatunk, de….. B: Az algoritmus sorosan végrehajtandó része (0…1) n: a párhuzamosítható részek gyorsítási szorzója 𝟏
𝑺 𝒏 =
𝑩+
𝟏 𝟏−𝑩 𝒏
Még ha az algoritmus 95%-a párhuzamosítható is….
Alapfogalmak Symmetric MultiProcessing Minden mag látja a teljes memóriát Minden mag teljes hozzáféréssel rendelkezik a memóriához Tipikusan max. ~32 mag Non-Uniform Memory Architecture (NUMA) Minden processzor saját memóriával rendelkezik, a processzoronkénti sávszélesség jóval nagyobb A memória elérés függ a processzor – memória távolságtól ccNUMA: cache coherent NUMA
Alapfogalmak Pipeline végrehajtás (IF-ID-EX-WB) instruction 1 2 3 4 5 6 7
IF
cycle
1
RD IF
2
EX RD IF
3
WB EX RD IF
4
WB EX RD IF
5
WB EX RD IF
6
WB EX RD IF
WB EX RD
WB EX
WB
7
8
9
10
Szuperskalár processzor Több utasítás fetch órajelenként (!= pipeline) instruction 1
IF IF
2
RD RD IF IF
3 cycle
1
2
EX EX RD RD IF IF
WB WB EX EX RD RD
WB WB EX EX
WB WB
3
4
5
6
Alapfogalmak In-order utasítás végrehajtás Az assembly utasítások a kódnak megfelelő sorrendben hajtódnak végre (fetch – wait – execute - write) Out-of-order (OoOE) utasítás végrehajtás A processzor átrendez(het)i az utasítások sorrendjét Fetch - dispatch (wait) – execute – queue – write Elágazás becslés Statikus (pl. backward igen, forward nem) Dinamikus (pl. szaturációs számláló) Pl. 2 biten 0…3 között számoljuk, hogy hányszor ugrottunk Becslés: >= 2 esetén ugrás Több számláló, PC néhány bitje választja ki, hogy adott elágazáshoz melyik tartozik
Alapfogalmak SISD Single Instruction Single Data SIMD Single Instruction Multiple Data Intel MMX, SSEx, AMD 3DNow!, Intel AVX, Power AltiVec, ARM NEON MIMD Multiple Instruction Multiple Data Pl. GPU VLIW: Very Long Instruction Word Utasítás szintű párhuzamosítás fordítási időben
Alapfogalmak (MT) Többszálúság (multi-threading) Temporal MT: az egymást követő utasítások származhatnak más szálból Simultaneous MT: a processzor feldolgozó egységei ugyanazon órajelben más-más szállal foglalkoznak (szuperskalár) Multi-core: több, teljes processzor mag egy szilíciumon Architektúrák Intel HT: SMT, 2 szál IBM POWER5, POWER6: SMT, 2 szál IBM POWER7: SMT, 4 szál Sun Niagara: TMT, 8 szál
CPU Cache Miért kell? DRAM hozzáférés tulajdonságai Kis késleltetés Cache-ben: Tárolt memória cím (TAG) – cache találat megállapítás Adat – cache line Memória írás Write-through: minden cache írás hatására frissül a RAMban az adat Write-back: adat kiírás a cache frissítése esetén Cache koherencia Több CPU mag, DMA képes HW (cache invalidálás)
Direct-Mapped Cache A memória minden egyes címe pontosan egy Cache blokkban lehet cache-elve
Cache
Memória
Full-Associative Cache Bármelyik memória a Cache bármelyik blokkjában lehet cache-elve Cache
Memória
Set-Associative Cache N-way associative (N utas): a memória adott címe N cache-blokkban lehet cache-elve Cache
Memória
Pl. Core i7: 8-way L1 & L2 cache; 16-way L3
Intel Xeon
Broadwell architektúra Xeon-D-15xx: SoC, 4-16 mag, 1,3-2,4 GHz, 20-65W, $200-$1700 Xeon E3 v4/v5: 4 mag, 1,8-3,5 GHz, 1 utas, $400-$600 Xeon E5-16xx v4: 4-8 mag, 2,8-3,7 GHz, 1 utas, $300-$1700 Xeon E5-26xx v4: 4-22 mag, 1,9-3,5 GHz, 2 utas, $200-$4500 Xeon E5-46xx v4: 8-22 mag, 1,8-2,5 GHz, 4 utas, $1200-$7000 Xeon E7-48xx v4: 8-16 mag, 2 GHz, 4 utas, $1200-$3000 Xeon E7-88xx v4: 4-24 mag, 2-3,2 GHz, 8 utas, $3000-$9000 Skylake architektúra Xeon E3-12xx/15xx v5: 4 mag, 2-3,7 GHz , 1 utas, $200-$1200 Xeon W-21xx: 4-18 mag, HT, 2,3-3,7 GHz , 1 utas, $200-$2500 Xeon Bronze/Silver: 4-12 mag, HT, 1,7-2,6 GHz, 2 utas, $200-$1000 Xeon Gold: 4-22 mag, HT, 2-3,5 GHz, 4 utas, $1200-$5200 Xeon Platinum: 4-28 mag, HT, 2-3,6 GHz, 8 utas, $3000-$13000 Kaby Lake architektúra Xeon E3-12xx/15xx v6: 4 mag, 3-4 GHz, 1 utas, $200-$600
A múlt: Intel Xeon 5400/7400 Intel Core mikroarchitektúrájú processzorok 14 lépcsős pipeline ALU: 3 végrehajtóegység FPU: FMUL/FDIV + FADD SSE: 3x128 bit végrehajtóegység Xeon 5400, Socket 771 Max: FSB 1600 MHz, 4 mag, 3,4 GHz, $1500 256 kbyte L1, 2x6 mbyte L2 cache Xeon 7400, PGA604, 2mrd tr. Max: FSB 1066 MHz, 6 mag, 2,66 GHz, $2800 256 kbyte L1, 3x3 mbyte L2, 12 mbyte L3 cache
Xeon 7400 4 utas PGA604 foglalat Memória DDR2-667 4x64 bit Max. 32 DIMM Max. 512 Gbyte PCIe 1.1 Max. x8 PCI-X 133 MHz
CPU
CPU
CPU
FSB
FSB
FSB
FSB
PCIe x4
Memória
PCIe x4
PCIe x4
CPU
Intel 7300 MCH
Memória Memória
PCIe x4
Memória PCIe PCIe ESI x4 x4
SATA
PCIe x8
PATA
PCIe x4 Intel ICH
USB
PCI-X
ETH
PCI
Front Side Bus (FSB) „Igazi” párhuzamos busz (~170 vezeték) Szétválasztott cím és adatbusz 36 bites címbusz 2 irányú, 64 bites adatbusz, strobe jelek 2 byte-onként Max. 5 egység (800 MHz) – max. 2 egység (1066 MHz) „quad data rate” Minden kommunikáció az FSB-n keresztül! utasítások beolvasása a központi memóriából adatok beolvasása a memóriából, ill. kiírása a központi memóriába adatcsere a processzorok között periféria hozzáférések (a periféria buszától függetlenül)
FSB cím/control ciklus Cím/control: double data rate
FSB adatciklus Adat: quad data rate
XtremeData XD2000i LGA771 foglalatba illeszkedő FPGA alapú gyorsító Max. 1066 MHz FSB 3 Altera Stratix-III FPGA 1 FSB interfész 2 szabadon felhasználható 9,6 Gbyte/s busz kapcsolat 142k LE/FPGA 5,5 Mbit BRAM, 378 MUL 2x8 Mbyte QDRII SRAM 2x2,8 Gbyte/s
Nallatech FSB Accelerator PGA604 foglalatba illeszkedő FPGA alapú gyorsító Max. 1066 MHz FSB, stack-struktúra 1x FSB interfész modul, busz kapcsolat a többi modullal Felhasználói modulok 2x LX330T/SX240T/FX200T FPGA ~max 2 x 33000 LE 2x2 bank DDR-II SRAM Közvetlen FPGA-FPGA
1x LX330T/SX240T/FX200T FPGA ~max 33000 LE 4 bank DDR-II SRAM 20 GTP I/O
Intel Xeon 3000/5500 Intel Nehalem mikroarchitektúrájú 16 lépcsős pipeline, SMT ALU: 3 végrehajtóegység FPU: FMUL/FDIV + FADD SSE: 3x128 bit végrehajtóegység Memóriavezérlő a processzorban DDR3-1333 Xeon 5500, LGA1366 Max: 4 mag, 3,33 GHz, $1600 4x64k L1, 4x256k L2, 8 mbyte L3 cache
Xeon 5500 A processzorok QPI linken keresztül kapcsolódnak, gyakorlatilag megegyezik az Opteron struktúrával 19 – 25 Gbyte/s Memória Memória QPI 2-utas SMT Memória CPU CPU Memória Memória Memória Integrált memória QPI QPI vezérlő PCIe 2.0 x16 DDR3-1333 PCIe 2.0 x4 Intel IOH 3x64 bit PCIe 2.0 x4 72 Gbyte/CPU ESI PCIe SATA PCIe x1 2.0, x16 USB Intel ICH PCI ETH
Xeon E7-8870 v3
Több-utas szerverekbe 18 mag/processzor SMT, 32 szál 4 csatornás DDR4 memóriavezérlő Max 1,5 TB memória 32 PCIe lane 3 QPI interfész 45 MB L3 cache QPI: 9,6 GT/s TDP: 140 W
Memória
Memória
Memória Memória
Memória
QPI
CPU
CPU
Memória
Memória QPI
QPI QPI
QPI
Memória
Memória
Memória Memória
Memória
CPU
QPI
Memória CPU
Memória
Memória Memória
DMI
Intel IOH
Xeon E5-2690 Intel Ivy Bridge mikroarchitektúra 14 lépcsős pipeline, SMT ALU: 3 végrehajtóegység FPU: FMUL/FDIV + FADD SSE: 3x128 bit végrehajtóegység AVX: 256 bites SIMD 25 MB cache 4 csatornás memóriavezérlő a processzorban DDR31866 40 PCIe lane 2 db 8 GHz QPI link
Intel QPI Hasonló a HyperTransport-hoz Egyirányú DDR adatvonalak (jelenleg 20 bit) Külön órajel A két irány adatszélessége eltérő lehet Nincs 8B/10B kódolás Max. 3,2 GHz órajel 25,6 Gbyte/s sávszélesség Csomag alapú 8 bit fejléc, 8 bit CRC, 64 bit adat Nallatech QPI gyorsító?
Xeon Skylake (31xx/41xx/51xx/61xx) QPI helyett UPI 2-4-8 utas konfigurációk (Bronze+Silver/Gold/Platinum)
Intel Xeon Phi (1.) Intel „Many Integrated Core” architektúra Sok, egyszerű x86 mag (P54C – eredeti Pentium) Széles (512 bit) vektor feldolgozóegység
Intel Xeon Phi (2.) Vector ALU 16x512b RF
Magok között belső „ring bus”
Xeon Phi 7120P PCIe kártya X16, 2.0 61 mag 30,5 MB cache 1,23 GHz (1,33 turbó) 512 bit GDDR5 memória interfész 352 GB/s sávszélesség 16 GB RAM
Xeon Phi - SW Programozás, API-k Intel matematikai könyvtár (Xeon Phi optimalizált) OpenMP pragmák, Intel ICC C fordító OpenCL
AMD Opteron AMD K10 mikroarchitektúra 12 lépcsős pipeline ALU: 3 végrehajtóegység SSE/FPU: 3 végrehajtóegység Integrált DDR2 memória vezérlő (800 MHz) AMD Opteron 23xx/837x (700m tr.) 4 mag; 3,1 GHz; $870/$2600 4x64k L1, 4x512k L2, 6M L3 cache AMD Opteron 24xx/84xx (900m tr.) 6 mag; 2,8 GHz; $1000/$2600 6x64k L1, 6x512k L2, 6M L3 cache
AMD Opteron A processzorok HyperTransport linken keresztül kapcsolódnak (a chipszethez is) x3xx: 1,1 GHz Memória CPU CPU Memória x4xx: 2,2 GHz Memória vezérlő a processzorban Memória CPU CPU Memória 2x64 bit DDR2-800 >32 Gbyte/mag PCIe 2.0 x16 Chipset SR5690 SR5690 PCIe 2.0 x16 ATI, NVIDA, Broadcom PCI PCIe 2.0 x16 SP5100 HT
HT
Memória
HT
HT
HT
Memória
Memória Memória
HT
PCIe 2.0 x16 PCIe 2.0 x16
A-Link
USB
SATA PATA
AMD Opteron 6000 AMD Magny-Cours Piledriver magok Magasabb IPC Jobb elágazásbecslés AVX utasításkészlet Max. 16 mag/CPU MCM (2x8 mag egy tokban) Max. 2,8 GHz (3,5 GHz turbó) frekvencia 4 csatornás 1866 MHz DDR3 memória interfész 16 MB cache
AMD Epyc A Zen architektúra (Ryzen CPU-k) szerver verziója 4 die multi-chip module 8-32 core, SMT; 8 DDR4 interfész 1 utas és 2 utas verziók Az egy tokban levő CPU-k, illetve a két utas tokok között „Infinity Fabric” kapcsolat – 150 GB/s 8 csatornás DDR4 vezérlő tokonként 128 PCIe lane
HyperTransport „Csomag-orientált” pont-pont kapcsolat Egyirányú DDR adatvonalak 2, 4, 8, 16 vagy 32 bit 8 bitenként egy órajel és egy control vonal A két irány szélessége tetszőleges lehet Jelenleg 3.1 verzió HT 1.1 HT 2.0 HT 3.0
Max. órajel frekvencia 800 MHz 1.4 GHz 3.2 GHz
Max. link szélesség 32 32 32
Sávszélesség (16 bit link, egy irányban) 3,2 GByte/s 5,6 Gbyte/s 12,8 Gbyte/s
HyperTransport HT csomag: 8-12 byte fejléc + 4-64 byte adat Megegyezik a fizikai rétegben és az átviteli rétegben 8B/10B kódolás opcionális (>HT 3.0) Szorosan csatolt periféria illesztést tesz lehetővé Kihasználtásg az átvitt adatméret (payload) függvényében
HT csomag (példa) Cmd: csomag típus SeqID: csomag csoportosítás, egy csoporton belül a csomagok sorrendje nem változik UnitID: eszköz azonosító (a másik fél a host bridge)
XtremeData XD2000F Socket-F foglalatba illeszkedő koprocesszor 400 MHz HT link! HT interfész FPGA Felhasználói FPGA Altera Stratix-II 180 180000 LE, 9 Mbit BRAM, 384 MUL18 4 bank QDRII SRAM 36 Mbyte 36 bit, 175 MHz
DRC Accelium Socket-F foglalatba illeszkedő koprocesszor 400 MHz HT link! FPGA Xilinx Virtex-5 LX330 330000 LE; 10,6 Mbit BRAM, 128 MUL 512 Mbyte RLDRAM 3,2 Gbyte/s 2x2 Gbyte DDR2 DRAM 6,4 Gbyte/s
x86 architektúrák Memória sávszélesség
HPC alkalmazás
Intel Itanium (1.) HP – Intel közös fejlesztés 2001: Merced (~2 éves késés) ~VLIW utasítás, 2 mag 64 bites architektúra, órajelenként 6 utasítás FSB alapú architektúra, ~1,6 GHz max. órajel 2002: Itanium-2 2010: Itanium 9300 (~2 éves késés) 4 mag, 8 szál (SMT) 2 integrált memória vezérlő + SMI (Scalable Memory IF) Közös infrastruktúra a Nehalem-EX-szel QPI interfész, SMI 1,7 GHz órajel
Intel Itanium (2.) 2012: Itanium 9500 Új mikroarchitektúra 2x utasításfeldolgozás Max. 8 mag, 16 szál (SMT) 2 integrált memória vezérlő QPI interfész 32 nm, 1,7 – 2,5 GHz órajel 32 MB L3 cache
Itanium-2 (HP zx2) Chipkészlet: HP zx2 CPU
CPU
CPU
CPU
FSB
Memória
Memória
Memória
Memória Memória
Memória
sme
mio
sme
Memória
Memória Memória Memória
Memória
Memória
PCIe x8
ioa
ioa
PCI-X 133
PCIe x8
ioa
ioa
PCI-X 133
PCI-X 266
ioa
ioa
PCI-X
PCI-X 266
ioa
ioa
PCI-X
SGI Altix 4700 Itanium-2 alapú szerver család SGI NUMAlink-4 Elosztott osztott memória hozzáférés, kis késleltetés, jó skálázódás
SGI RC100 Altix 4700 rendszerbe illeszkedő, FPGA alapú gyorsító 2x Virtex-4 LX200 2x 5 csatorna QDR SRAM NUMAlink-4 kapcsolat TIO IC-n keresztül
IBM POWER6 POWER6 architektúra 2 CPU mag In-order, 2x SMT 2x ALU 2x FPU AltiVec vektor egység 5 GHz órajel 2x64k L1, 2x4M L2, 32M L3 (MCM) cache On-chip memória vezérlő (DDR2/DDR3)
IBM POWER7 POWER7 architektúra Out-of-order végrehajtás 4/6/8 CPU mag 3 – 4 GHz órajel 4x SMT magonként 2 ALU 4 FPU 1 AltiVec Magonként 32k L1, 256k L2 osztott 32M L3 2x DDR3 memória vezérlő Max. 32 utas kialakítás
IBM POWER8 POWER8 architektúra Out-of-order végrehajtás 4-12 CPU mag 2,5 – 5 GHz órajel 64K D, 32K L1 I-Cache 512K L2, 96MB eDRAM L3 4x Off-chip memória vezérlő 128MB eDRAM L4 DDR3, DDR4 max. 230 GB/s 8x SMT PCIe 3.0
SPECint/SPECfp SPECint 2006 & SPECfp 2006 eredmények (8 mag)
Itanium – Core2 Bioinformatikai algoritmus
Power8 vs. Haswell IBM által publikált számok, úgyhogy…..
PCI PCI, PCI-X: „igazi” busz struktúra Multiplexált cím/adatvonal Half-duplex Multi-master, DMA 4 interrupt vonal
Szabvány
Adatszélesség
Frekvencia
PCI PCI 2.1 PCI-X 1.0 PCI-X 2.0
32/64 bit 32/64 bit 64 bit 64 bit
33 MHz 66 MHz 66/133 MHz 266/533 MHz
Sávszélesség Mbyte/s 133/266 266/528 528/1056 2112/4224
PCI Fontosabb jelek AD: cím/adatvonal C/BE#: parancs vagy byte engedélyezés FRAME#: aktív átvitel IRDY#: initiator (master) ready TRDY#: target ready Perifériák Target: nem kezdeményezhet buszciklust Bus master: lehet master a buszon A központi PCI vezérlő tipikusan NEM tartalmaz DMA vazérlőt!
PCI Parancsok (BUS CMD) Interrupt Ack Special Cycle I/O Read és Write Memory Read és Write Configuration Read és Write Dual Address Cycle (pl.: 64bit címzés)
PCI olvasási ciklus
PCI írási ciklus
PCI Express Soros, pont – pont összeköttetés; helyreállított órajel Csomag alapú átvitel Szoftveresen kompatibilis a PCI-jal 1, 2, 4, 8 vagy 16 lane PCIe 1.1: 2,5 Gbit/s (8b/10b) 2 Gbit/s PCIe 2.0: 5 Gbit/s (8b/10b) 4 Gbit/s PCIe 3.0: 8 Gbit/s (128b/130b) 7,88 Gbit/s Kommunikáció PCIe 1.0 (Gbyte/s) PCIe 2.0 (Gbyte/s) Requester x1 0,25 0,5 Completer x4 1 2
x8
2
4
x16
4
8
PCIe architektúra Root Complex: központi vezérlő Kapcsolat a CPU-val és a memóriával Endpoint: periféria Completer Completer + Requester Nincs központi DMA vezérlő
PCIe Fizikai réteg: differenciális érpár Framing + CRC (2x64 bit) Átviteli réteg Fejléc: 3-4 DW Opcionális CRC: 1 DW Data payload: 128/256/512/1024/2048/4096 byte Root Complex & Endpoint támogatás kell!
PCIe Egy csomagban legfeljebb Data Payload-nyi adat Nagyobb méretű request-ek több csomagban
PCIe A PCIe késleltetése viszonylag nagy De újabb Request-ek elküldhetők a Completion megérkezése előtt
PCIe Egy Request-re adott Completion Egy csomagban Több csomagban – a csomagok sorrendje címsorrendben Több, címfolytonos Request A Completion csomagok sorrendje NEM feltétlenül felel meg a címsorrendnek
Valós átviteli sebesség PCIe 1.1 és 2.0 buszon elérhető sebesség (Intel X58 chip, 256 byte Payload)
PCIe TLP Fejléc 1. DW (minden csomagban)
Fmt
Type
00 01
0_0000
Memory Read Request
10 11
0_0000
Memory Write Request
00
0_1010
Completion, nincs adat
10
0_1010
Completion, adattal
Length: 1…1024 DW (< Data Payload)
PCIe – 32 bites Request TLP fejléc
Requester ID: Bus number + Device Number + Function number Tag: Minden „kintlévő”, Completion-t igénylő üzenet egyedi azonosítója (kintlévő üzenetek száma < 32) BE: byte engedélyezés az első és utolsó DW-re Address: cím (DW cím)
PCIe – 64 bites Request 3 helyett 4 DW a fejlécben
PCIe - Completion Completion TLP fejléc
Tag: A Request-tel megygező Tag Byte Count: A Request-ből még hátralévő byte-ok száma
PCIe FPGA-val Külső PHY Soft-core MAC (minden FPGA) Belső Gbit transmitter Soft-core MAC (pl. V2P, V4)
PCIe x1
PCIe PHY
PCIe Core (soft)
USER TLP Interface LOGIC
FPGA
PCIe x1/x4/x8
Gbit Trmit
PCIe Core (soft)
USER TLP Interface LOGIC
FPGA
Belső Gbit transmitter Hard-core MAC (pl. SP6, V5, V6)
PCIe x1/x4/x8
Gbit Trmit
PCIe Core (hard)
USER TLP Interface LOGIC
FPGA
FPGA megvalósítások FPGA Altera Arria II GX Altera Cyclone IV GX Altera Startix IV GX Altera Arria GX Altera Stratix II GX Xilinx Spartan-6 Xilinx Virtex-II Pro Xilinx Virtex-4 FX Xilinx Virtex-5 Xilinx Virtex-5 FXT Xilinx Virtex-6 Lattice ECP2M Lattice ECP3 Lattice SCP
x1 X X X X X X X X X X X X X X
x4 X X X X X
x8 X
PCIe 2.0
X
X
hard IP X X X
X X
X X X X X X X X
X X X X X
X X
X X X
X
PCIe FPGA interfész Gyakorlatilag Memory Read, Memory Write és Completion csomagok fogadása és generálása szükséges TLP interfész: 64 bites FIFO IF
1/4/8 lane: 62,5/125/250 MHz
PCIe Virtex5 - Transmit
PCIe Virtex5 - Receive
HT vs. PCIe - késleltetés HT: Opteron „natív” interfész (szorosan csatolt) HT: kevesebb járulékos információ ugyanannyi adathoz PCIe 8b/10b kódolás késleltetése
Elérhető sávszélesség
DINI Group DNBFC_S12_PCIe HPC alkalmazásokhoz fejlesztett „olcsó” megoldás 12 db Spartan-6 LX150 FGPA (~90000 LUT/FPGA) 256 Mbyte DDR3 SDRAM minden FPGA-hoz Virtex-6 FPGA a PCIe kapcsolathoz Az FPGA-k között 64 bites buszok
BME MIT ART1 Xilinx Virtex-5 SX240 FPGA 150000 LUT, 18Mbit BRAM, 1056 DSP egység 8-lane PCIe 1.1 csatlakozó 4 db, független DDR2 SODIMM foglalat DVI, Ethernet, SATA csatlakozó