SCI-systemer med
HIC som transportmedium
Båndbredde Min. latency Latency
a) Enkel b) 8-mu c) 8+4-mu d) 8+2-mu e) 3x3-ma f) 4x4-ma g) 3a-2c h) 4a-2c
Båndbredde (Mbytes/s)
0.00 200.00 400.00 600.00 800.00 1000.00 1200.00 1400.00 1600.00 1800.00
Latency (ns)
500.00 1000.00 1500.00 2000.00 2500.00 3000.00 3500.00 4000.00 4500.00 5000.00
Hovedoppgave i informatikk av
Thomas Waadeland 13. februar 1995
Institutt for informatikk Universitetet i Oslo
Denne oppgaven er satt i 11pt Times ved hjelp av LATEX.
Figurer er laget i Freehand 3.1 på Macintosh og idraw.
Grafer er laget med programmet wingz.
iii
Forord
Dette er min hovedoppgave for cand. scient.-graden ved Institutt for Informatikk, Universitetet i Oslo.
Jeg vil takke mine veiledere Ernst Kristiansen, SINTEF og Fysisk institutt, og Øystein Gran Larsen, Institutt for informatikk, for all hjelp og nyttige diskusjoner.
Jeg vil også takke John Bothner, nå ved Dolphin, og Geir Horn, SINTEF, for deres bidrag. Ellers takk til de i newsgruppene uio.c og ifi.tex som har hjulpet til med henholdsvis C++ og LATEX-koden, og takk til alle andre som har bidratt på forskjellig vis i form av råd og tips og ikke minst korrekturlesing.
Til slutt vil jeg også takke alle de nye vennene jeg har fått underveis. Studietiden hadde ikke vært det samme uten dere.
Thomas Waadeland
iv
Innhold
Forord iii
Innhold iv
Figurer viii
Tabeller ix
1 Introduksjon 1
2 Scalable Coherent Interface 4
2.1 Generelt : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 4 2.2 Protokollene : : : : : : : : : : : : : : : : : : : : : : : : : : : : 5 2.2.1 Transaksjonene : : : : : : : : : : : : : : : : : : : : : : 5 2.2.2 Pakkeformatene : : : : : : : : : : : : : : : : : : : : : : 5 2.3 Cache-koherens : : : : : : : : : : : : : : : : : : : : : : : : : : 7
3 Hetrogeneous InterConnect 9
3.1 Generelt : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 9 3.2 Protokollen: : : : : : : : : : : : : : : : : : : : : : : : : : : : : 9 3.2.1 SL-laget : : : : : : : : : : : : : : : : : : : : : : : : : : 10 3.2.2 CL-laget : : : : : : : : : : : : : : : : : : : : : : : : : : 10 3.2.3 EL-laget : : : : : : : : : : : : : : : : : : : : : : : : : : 10 3.2.4 PL-laget : : : : : : : : : : : : : : : : : : : : : : : : : : 10 3.2.5 TL-laget : : : : : : : : : : : : : : : : : : : : : : : : : : 12 3.3 Definerte linker : : : : : : : : : : : : : : : : : : : : : : : : : : 12 3.3.1 HS-link : : : : : : : : : : : : : : : : : : : : : : : : : : 13 3.4 BULLIT : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 14 3.4.1 Generelt : : : : : : : : : : : : : : : : : : : : : : : : : : 14 3.4.2 Block 2 : : : : : : : : : : : : : : : : : : : : : : : : : : 15
4 HIC som transportmedium for SCI 17
4.1 Pakkeformat og adressering : : : : : : : : : : : : : : : : : : : : 17 4.2 Deadlock: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 18 4.2.1 Move-pakker : : : : : : : : : : : : : : : : : : : : : : : 19 4.2.2 Doble linker : : : : : : : : : : : : : : : : : : : : : : : : 19 4.2.3 Retry: : : : : : : : : : : : : : : : : : : : : : : : : : : : 19
5 HIC-svitsj 21
5.1 Wormhole-ruting: : : : : : : : : : : : : : : : : : : : : : : : : : 21 5.2 Intervall-ruting : : : : : : : : : : : : : : : : : : : : : : : : : : : 21 5.3 Deadlock og rutingalgoritmer : : : : : : : : : : : : : : : : : : : 22
v
5.3.1 West-first-ruting : : : : : : : : : : : : : : : : : : : : : : 23 5.3.2 Random-ruting : : : : : : : : : : : : : : : : : : : : : : 23 5.3.3 Gruppering av linker: : : : : : : : : : : : : : : : : : : : 23 5.4 Oppsummering : : : : : : : : : : : : : : : : : : : : : : : : : : 24
6 Konstruksjon av simulatoren 26
6.1 Klasser og funksjoner : : : : : : : : : : : : : : : : : : : : : : : 27 6.1.1 Nodene : : : : : : : : : : : : : : : : : : : : : : : : : : 27 6.1.2 Svitsjene : : : : : : : : : : : : : : : : : : : : : : : : : : 28 6.1.3 Klassen HIC interface : : : : : : : : : : : : : : : : : : : 29 6.1.4 Klassen HICchar : : : : : : : : : : : : : : : : : : : : : 30 6.1.5 Funksjonen transmitter() : : : : : : : : : : : : : : : : : 30 6.1.6 Funksjonen receiver() : : : : : : : : : : : : : : : : : : : 31 6.1.7 Klassen Fifo : : : : : : : : : : : : : : : : : : : : : : : : 31 6.1.8 Klassen Delay : : : : : : : : : : : : : : : : : : : : : : : 31 6.2 Ruting : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 32 6.3 Flytkontroll : : : : : : : : : : : : : : : : : : : : : : : : : : : : 32 6.4 Variasjon av nettverksbelastning : : : : : : : : : : : : : : : : : : 32 6.5 Innhenting av statistikk : : : : : : : : : : : : : : : : : : : : : : 33 6.6 Konstruksjon av nettverk: : : : : : : : : : : : : : : : : : : : : : 34 6.6.1 I programmet : : : : : : : : : : : : : : : : : : : : : : : 36 6.6.2 Filsyntaks : : : : : : : : : : : : : : : : : : : : : : : : : 36 6.7 Randomfunksjoner : : : : : : : : : : : : : : : : : : : : : : : : : 36
7 Resultater 37
7.1 Latency : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 37 7.1.1 Latency-fordeling : : : : : : : : : : : : : : : : : : : : : 38 7.2 Maksimum teoretisk båndbredde : : : : : : : : : : : : : : : : : 38 7.3 Simulering av systemer med 8x8-svitsjer : : : : : : : : : : : : : 39 7.3.1 Enkel svitsj med 8 noder: : : : : : : : : : : : : : : : : : 40 7.3.2 Multi-stage med 32 noder : : : : : : : : : : : : : : : : : 41 7.3.3 Indirekte multi-stage med 32 noder : : : : : : : : : : : : 42 7.3.4 Indirekte multi-stage med 48 noder : : : : : : : : : : : : 43 7.3.5 3x3-matrise med 48 noder : : : : : : : : : : : : : : : : : 44 7.3.6 4x4-matrise med 80 noder : : : : : : : : : : : : : : : : : 45 7.3.7 3-ary 2-cube med 36 noder : : : : : : : : : : : : : : : : 46 7.3.8 4-ary 2-cube med 64 noder : : : : : : : : : : : : : : : : 47 7.4 Gjennomsnittlig trafikk på linkene : : : : : : : : : : : : : : : : : 48 7.5 Oppsummering for systemene med 8x8-svitsjer : : : : : : : : : : 48 7.6 Sammenligning med [HulBot 93] : : : : : : : : : : : : : : : : : 50 7.7 Enkle svitsjer sammenlignet med [Bothner 94] : : : : : : : : : : 50 7.8 Usikkerheter ved resultatene : : : : : : : : : : : : : : : : : : : : 52
8 Konklusjon 54
Referanser 55
vi
Appendiks
A Ordliste 58
B C++ 60
C Bruk av simulatoren 61
C.1 Opsjoner : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 61 C.2 Konstanter : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 62 C.3 Filsyntaks : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 62
D Utregning for matrisene 64
D.1 3x3-matrisen : : : : : : : : : : : : : : : : : : : : : : : : : : : : 64 D.2 4x4-matrisen : : : : : : : : : : : : : : : : : : : : : : : : : : : : 65
vii
Figurer
1.1 Fra referent til simulert modell: : : : : : : : : : : : : : : : : : : 2 2.1 SCI-node: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 5 2.2 SCI fjerntransaksjon eksempel: : : : : : : : : : : : : : : : : : : 6 2.3 Request-Send pakkeformat : : : : : : : : : : : : : : : : : : : : 6 2.4 Response-Send pakkeformat : : : : : : : : : : : : : : : : : : : : 7 2.5 Echo pakkeformat : : : : : : : : : : : : : : : : : : : : : : : : : 7 2.6 Cache-koherens : : : : : : : : : : : : : : : : : : : : : : : : : : 8 3.1 HIC’s EL-lag: : : : : : : : : : : : : : : : : : : : : : : : : : : : 11 3.2 HIC’s pakkeformat: : : : : : : : : : : : : : : : : : : : : : : : : 11 3.3 HIC’s protokollstack : : : : : : : : : : : : : : : : : : : : : : : : 12 3.4 HIC-karakter 8B/12B DC-koding : : : : : : : : : : : : : : : : : 14 3.5 BULLIT Block 2: : : : : : : : : : : : : : : : : : : : : : : : : : 15 3.6 BULLIT’s flytkontroll : : : : : : : : : : : : : : : : : : : : : : : 16 4.1 Fra SCI- til HIC-pakkeformat : : : : : : : : : : : : : : : : : : : 17 4.2 Fra SCI- til HIC-pakkeformat 2 : : : : : : : : : : : : : : : : : : 18 4.3 Fra SCI-symbol til HIC-karakterer: : : : : : : : : : : : : : : : : 18 4.4 Deadlock ved enkle linker : : : : : : : : : : : : : : : : : : : : : 19 4.5 SCI-system med HIC : : : : : : : : : : : : : : : : : : : : : : : 20 5.1 Deadlock eksempel : : : : : : : : : : : : : : : : : : : : : : : : 22 5.2 West-first-ruting : : : : : : : : : : : : : : : : : : : : : : : : : : 23 5.3 HIC-svitsjen : : : : : : : : : : : : : : : : : : : : : : : : : : : : 25 6.1 Fra referent til simulert modell: : : : : : : : : : : : : : : : : : : 26 6.2 Skisse av objektene Node og Switch : : : : : : : : : : : : : : : : 28 6.3 Pakke bestående av HICchar-objekter : : : : : : : : : : : : : : : 30 6.4 Fifo’en : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 31 6.5 Topologiene som er simulert : : : : : : : : : : : : : : : : : : : : 35 7.1 Latency-fordeling av pakker : : : : : : : : : : : : : : : : : : : : 39 7.2 Latency versus båndbredde for enkel svitsj : : : : : : : : : : : : 40 7.3 Latency versus båndbredde for 8-mu : : : : : : : : : : : : : : : 41 7.4 Latency versus båndbredde for 8+4-mu : : : : : : : : : : : : : : 42 7.5 Latency versus båndbredde for 8+2-mu : : : : : : : : : : : : : : 43 7.6 Latency versus båndbredde for 3x3-ma : : : : : : : : : : : : : : 44 7.7 Latency versus båndbredde for 4x4-ma : : : : : : : : : : : : : : 45 7.8 Latency versus båndbredde for 3a-2c : : : : : : : : : : : : : : : 46 7.9 Latency versus båndbredde for 4a-2c : : : : : : : : : : : : : : : 47
viii
7.10 Sammenligning av de forskjellige systemene med 8x8-svitsjer : : 48 7.11 Enkel 4x4-svitsj sammenlignet med [Bothner 94] : : : : : : : : : 51 7.12 Enkel 16x16-svitsj sammenlignet med [Bothner 94] : : : : : : : : 52
ix
Tabeller
3.1 HIC’s definerte linker : : : : : : : : : : : : : : : : : : : : : : : 13 3.2 BULLIT: Block 1 og Block 2 : : : : : : : : : : : : : : : : : : : 14 6.1 Parameterverdier for simulatoren : : : : : : : : : : : : : : : : : 33 7.1 Simulerte resultater og teoretiske verdier : : : : : : : : : : : : : 49
x
1
1
Introduksjon
Flere av deltagerene ved utviklingen av SCI-standarden1har startet prosjekter med studier av forskjellige topologier for SCI-systemer. Det har vært aktiviteter rundt dette ved CERN i Genève, ved Universitetet i Wisconsin og i Oslo, hvor det har vært et samarbeid mellom Dolphin ICS, SINTEF Instrumentering og Institutt for informatikk og Fysisk institutt ved Universitetet. Tidligere simuleringer av SCI- systemer gjort i Oslo, har gitt tilnærmet like resultater som simuleringer av tilsvar- ende topologier andre steder [Bothner 94].
Høyhastighetsversjonen av SCI vil kunne være en essensiell byggesten for en rekke systemer. Disse SCI-systemene kan ha behov for å bli knyttet sammen. Derfor er det interessant å se på forskjellige måter å gjøre dette på. En mulig løsning kan være bruk av HIC2, et serielt grensesnitt for utveksling av pakker.
Denne oppgaven tar for seg bruk av HIC som et transportmedium for SCI. Ho- vedmålene med oppgaven er å se på hvordan ytelsen i et slikt system blir med hen- syn på effektiv båndbredde og latency, og hvilke nettverkstopologier som kan være gunstige. Videre er det interessant å se hvordan ytelsen blir sammenlignet med SCI- systemene undersøkt i [HulBot 93] og SCI-systemene med HIC-svitsj undersøkt i [Bothner 94].
For å se nærmere på dette, er det laget en simulator. En skisse av hvordan det virkelige systemet er modellert i simulatoren er gitt i figur 1.1. SCI-noden er mo- dellert etter Dolphin’s NodeChip3. HIC-interfacet er modellert etter BULLIT4, som er en HIC-implementasjon fra BULL. HIC-svitsjen er modellert med utgangspunkt i ST C1045.
1Scalable Coherent Interface [IEEE-SCI 92].
2Hetrogeneous InterConnect [IEEE-HIC 95].
3Dolphin GaAs NodeChipTM [Dolphin 92].
4BULLIT [BULLIT 94].
5ST C104 asynchronous packet switch [ST C104 94].
2 1 Introduksjon
HIC-nettverk for requester
HIC-nettverk for responser
Svitsjenett for requester
Svitsjenett for responser Simulert
node
Utveksling av HIC-karakterer
Til annen svitsj eller node
Simulert svitsj Simulert svitsj
Simulert node SCI-node
med HIC-interface
SCI-node med HIC-interface
Figur 1.1: Fra referent til simulert modell.
3
Denne oppgaven er delt inn i følgende kapitler:
Kapittel 2 gir en kort innføring i SCI for lesere som ikke er kjent med SCI.
Kapittel 3 gir en beskrivelse av HIC. Protokollen, pakkeformat, flytkontroll og de- finerte linker. Tilslutt litt om BULLIT.
Kapittel 4 tar for seg noen aspekter ved bruk av HIC som transportmedium for SCI, blant annet hvordan en SCI-pakke blir overført til HIC-format og prob- lemer med deadlock.
Kapittel 5 beskriver HIC-svitsjen og hvilke rutingalgoritmer som er brukt. Siden det ikke fantes noen HIC-svitsj for HS-link da denne oppgaven ble påbegynnt, er det modellert en egen svitsj for bruk i simuleringene.
Kapittel 6 tar for seg selve simulatoren. Hvordan den er konstruert, dens forskjel- lige moduler og funksjoner, og hvordan den virker.
Kapittel 7 presenterer resultatene fra simuleringene, og gir en sammenligning med teoretiske verdier. Resultatene er også sett i forhold til hverandre og i forhold til andre arbeider gjort på området.
Kapittel 8 gir en kort konklusjon og oppsummering av hva som er gjort i oppgaven.
Appendiks A inneholder en ordliste.
Appendiks B forteller litt om programmeringsspråket C++, og hvorfor det er valgt.
Appendiks C forklarer bruk av simulatoren, HICsim. Opsjoner, konstanter og fil- syntaks.
Appendiks D inneholder teoretiske utregninger for matrisenettverkene.
Ettersom jeg har valgt å skrive på norsk, oppstår det fort et problem med å finne norske ord i steden for engelske. Det er en del faguttrykk og navn på fenomener, som vanskelig lar seg oversette uten at det låter merkelig. Derfor har jeg valgt å bruke engelske navn og uttrykk der jeg synes dette faller naturlig. For eksempel har jeg brukt ord som «latency» og «deadlock». Enkelte steder der det er brukt norske oversettelser, er det engelske ordet satt i parentes. Noen ord og uttrykk er også forklart i appendiks A.
Tabeller og figurer hentet fra de forskjellige databladene, er stort sett beholdt i sin opprinnelige form.
I kapittel 6 hvor det er referert til navn på variabler, klasser og funksjoner i programmet, er navnet skrevet i kursiv.