Presentation laddar. Vänta.

Presentation laddar. Vänta.

Prestanda ● Vad påverkar datorprestanda ● Hur mäter man datorprestanda ● Räkna klockcykler - ett sätt att analysera ● Amdahls lag - gräns för förbättringar.

Liknande presentationer


En presentation över ämnet: "Prestanda ● Vad påverkar datorprestanda ● Hur mäter man datorprestanda ● Räkna klockcykler - ett sätt att analysera ● Amdahls lag - gräns för förbättringar."— Presentationens avskrift:

1 Prestanda ● Vad påverkar datorprestanda ● Hur mäter man datorprestanda ● Räkna klockcykler - ett sätt att analysera ● Amdahls lag - gräns för förbättringar

2 Vad påverkar prestanda ● CPU ● primärminne ● program, kompilator ● skivminne ● datornät ● övriga program, operativsystem

3 Testprogram ● Verkliga program ● Verkliga program styrda av skript ● Kernels - extrakt från verkliga program ● Leksaksproblem - quicksort, n-queens, … ● Syntetiska testprogram - specialskrivna endast för utvärdering av prestanda

4 Testprogram verkliga program koncentrat - "kernels" syntetiska testprogram SPEC CPU2000 Winstone Linpack Livermore loops NAS kernels Whetstone Dhrystone

5 Prestandaförbättring körtid för gamla versionen körtid för nya versionen speedup =

6 Exempel: flyttalsprocessor utförda instruktioner tid … add.l FADD add.l and.l cmp.l bne FMUL cmp.l beq... andel som ej kan snabbas upp andel som kan snabbas upp

7 Exempel, forts. andel som ej kan snabbas upp andel som kan snabbas upp total körtid på gamla datorn andel som ej kan snabbas upp andel som snabbats upp total körtid på nya datorn

8 Beteckningar 1 – andel U andel U total körtid på gamla datorn = 1 tidsenhet 1 – andel U andel som snabbats upp = andel U / speedup U total körtid på nya datorn = 1 tidsenhet / total speedup

9 Amdahls lag ● andelU = andel av ursprungliga körtiden som snabba finessen skulle ha behövts ● speedupU = lokal speedup när snabba finessen används andel U + speedup total = andel U speedup U

10 Ur processorns synvinkel ● Körtid = icount x CPI x tclk ● icount = antal utförda instruktioner ● CPI = Cykler Per Instruktion ● tclk = 1/klockfrekvensen

11 Teoretiska CPI-beräkningar ● CPI och andel av utförda instruktioner ● Exempel: – ALU-op: CPI = 1, andel 40% – Load, Store: CPI = 2, andel = 36% – Hopp: CPI = 2, andel = 24% – CPI medel = 1 x 0,4 + 2 x 0, x 0,24 = 1,6

12 Hur man får datorer snabba ● Make the frequent case fast… ● …and the fast case frequent

13 Make the frequent case fast ● Det lönar sig inte att snabba upp en funktion som nästan aldrig används ● Kan man snabba upp en funktion som används ofta så ger det stor utdelning ● För att snabba upp det vanliga fallet, så låter man gärna det ovanliga fallet bli ännu långsammare än förut

14 …and the fast case frequent ● Eftersom det ovanliga fallet är långsamt så ska man helst inte använda det ● Kompilatorn kan använda snabba instruktioner så mycket som det går

15 Fallgrop: klockfrekvens anger prestanda ● Celeron 2,0 GHz visar 21 bilder/s i speltest ● P4 2,26 GHz: 46 bilder/s ● Orsak: Celeron har mindre L2-cache ● AMD Athlon XP med 1,4 GHz klocka visar 37 bilder/s

16 Fallgrop: MIPS ● MIPS = Miljoner Instruktioner Per Sekund ● MIPS = icount/körtid = klockfrekvens/CPI ● MIPS anger prestanda bara så länge icount hålls konstant ● …kan alltså inte användas för att jämföra datorer med olika instruktionsuppsättning (vilket är fler än man tror)

17 Adressöversättning ● Repetition av virtuellt minne ● TLB - cacheminne för sidtabellinformation ● Virtuellt eller fysiskt adresserat cacheminne ● Tricket - det bästa av två världar ● Minneshierarki

18 En process ● Programkod –.text ● Data –.data –.bss ● Stack Program Data Stack minne adress 0 ∞

19 Flera processer samtidigt ● Hur ska detta kunna fungera? Program Data Stack 0 ∞ Program Data Stack 0 ∞ Program Data Stack 0 ∞

20 Virtuellt minne process 1 - virtuell adressrymd 1 process 2 - virtuell adressrymd 2 sidtabell 1sidtabell 2 fysiskt minne skivminne

21 Adressöversättning virtuell adress virtuellt sidnummer (VPN)sidoffset (PO) fysisk adress fysiskt sidnummer (PPN)sidoffset (PO) adress- översättning

22 Vanliga sidstorlekar ● 4 kbyte (Sparc, x86) ● 8 kbyte (Ultrasparc) ● 4 kbyte + 4 Mbyte (Pentium) ● 8k, 64k, 512k, 4Mbyte (Alpha 21264)

23 Enkel sidtabell en minnesadress virtuellt sidnummeroffset Enkel adressöversättning med hjälp av en enkel sidtabell. primär- sida 73 sida 71 sida 72 minne sidtabell fysiskt sidnummer

24 Minneslayout ● Kod, data, stack utspridda ● Många ogiltiga sidor ● Enkel sidtabell blir stor och tom adress 0 största möjliga adress kod data stack utökning av dataområdet utökning av stacken

25 Problem ● Många (möjliga) virtuella sidor medför ● stora sidtabeller som medför ● sidtabeller i primärminnet som medför ● långsam uppslagning

26 Flernivåers sidtabell ● Tomma sidtabeller på nivå 2 och 3 kan ersättas med nollställd giltigbit på nivån ovanför sidoffset (12bit) inkommande adress virtuellt sidnummer... sida index 3 (8 bit)index 2 (8 bit)index 1 (4 bit) sidtabell nivå 3... sidtabell nivå 2sidtabell nivå 1...

27 Flernivåers sidtabell, exempel Sidtabeller för ett program. Själva sidorna finns inte med i figuren. sidtabell nivå tre sidtabeller på nivå 2... fem sidtabeller på nivå tre sidtabeller för programkod en sidtabell för data en sidtabell för stacken

28 TLB Translation Lookaside Buffer ● Cacheminne för adressöversättning ● Delmängd av sidtabellen ● Associativt, mindre än 200 platser ● Sitter på processorchippet ● Miss-rate under 1 procent ● Missar hanteras i programvara i Riscar

29 Misshantering i programvara ● TLB-miss ger felavbrott (exception) ● Felavbrottsrutinen läser sidtabellen ● Sidfel upptäcks som TLB-miss, felavbrotts- rutinen ser i tabellen att det är sidfel ● Vanligt i Riscar, som saknar mikroprogram ● x86 hanterar TLB-miss i hårdvara

30 TLB-miss i mjukvara medför: ● Operativsystemet bestämmer hur sidtabellen ser ut ● Operativsystemet bestämmer TLB:ns utbytesalgoritm ● Instruktioner för att läsa/skriva TLB-platser ● Delar av sidtabell kan hamna i datacachen

31 Statusbitar ● Sidbytesrutin behöver use-bit och dirty-bit ● use-bit: har sidan använts sen sist? Behövs för att approximera LRU ● dirty-bit: har sidan skrivits sen sist? Kan spara skrivning till långsamt skivminne

32 Statusbitar i TLB:n ● TLB kan ha use-bit, men måste inte: endast nyligen använda sidor finns i TLB:n ● TLB kan ha dirty-bit (för prestanda), annars: – när en sidas översättning lagras i TLB:n markeras sidan som skrivskyddad – första skrivning ger felavbrott, programrutinen sätter dirty-bit i sidtabellen

33 Obs! En TLB är inget vanligt cacheminne! ● En dirty-bit i TLB:n anger om sidan ändrats i minnet ● Innehållet i TLB:n ändras inte av att programmet skriver till sidan (undantag: dirty-bit för sidan ettställs) ● Om dirty-bit = 1 så måste sidan sparas i swap-filen innan minnet återanvänds. TLB-innehållet ska inte sparas någonstans!

34 Täckning (coverage) ● Coverage = sidstorlek x antal sidor i TLB ● Större täckning ger färre missar ● Ökad sidstorlek ger ökad täckning ● Två sidstorlekar vanligt, exempelvis 4 kB och 4 MB ● Bildminne (och OS?) kan ligga i stora sidor

35 Virtuellt eller fysiskt adresserat cacheminne CPU TLB cacheminne CPU TLB cacheminne  Virtuella adresser i adresslapparna  TLB används bara vid miss  Fysiska adresser i adresslapparna  TLB används vid varje referens

36 Fördelar med virtuellt adresserade cacheminnen ● Snabbare, behöver inte vänta på TLB:n – kortare cykeltid – större cacheminne – kortare pipeline ● TLB:n används mer sällan – gemensam TLB räcker – TLB:n kan vara större och långsammare ● Falska konflikter undviks i cacheminnet

37 Nackdelar med virtuellt adresserade cacheminnen ● Synonymer - olika virtuella adresser blir samma fysiska – samma fil inmappad på två ställen i en process – samma fil eller delade bibliotek inmappade i två olika processer ● Homonymer - samma virtuella adress blir olika fysiska – vid processbyte

38 Synonymproblem ● Om A och B är två olika virtuella adresser som mappas till samma fysiska, så kan STOREA <- #0 LOADR3 <- B resultera i att B  0 ● Lösning: låt OS:et förbjuda synonymer

39 Homonymproblem ● Om den virtuella adressen A motsvarar den fysiska adressen X som finns i cacheminnet och TLB:n uppdateras så att A motsvarar en annan fysisk adress Y, så kan LOADR3 <- A ge värdet från X i stället för från Y

40 Processbyte i virtuellt adresserat cacheminne ● Hela adressrymden byts vid processbyte. För att lösa homonymproblemen kan man – invalidera hela cacheminnet, eller – lägga till processnummer till varje adresslapp ● Operativsystemet använder egna adresser, varje systemanrop blir byte av adressrymd

41 Fysiskt adresserade cacheminnen ● Fördelar: – Inga synonym- eller homonymproblem – Behöver ej invalideras vid processbyte ● Nackdelar: – TLB-uppslagning före varje referens – Falska konflikter

42 Falska konflikter ● Virtuella adressen visar ingen konflikt ● Adressöversättning skapar konflikten ● OS kan hindra detta processens virtuella adressrymd sidtabell fysiskt minne skivminne direktmappat cacheminne

43 TLB-uppslagning vid varje referens ● Instruktionshämtning (glöm inte den!) ● Datareferens (vid load/store) ● Kräver separat I-TLB och D-TLB, och förstås separata I- och D-cacheminnen ● TLBn tar en extra cykel i pipelinen, om inte tricket med samtidig uppslagning används

44 Tricket - samtidig uppslagning i TLB och cacheminne inkommande (virtuell) adress offsetsidnummer Ett direktmappat cacheminne med parallell TLB-uppslagning. = & fanns/fanns inte Minne 20bit10bit index ³ 1 felavbrott 2bit byte-offset till processorn adress in data ut lagrat ord (32 bit)lagrad adresslapp (20 bit) med 1024 ord om 53bit TLB fysiskt sidnummer... = = = =......

45 Trickets restriktion ● Ingen enda bit från adresslappen får användas som indexbit! Detta medför att: ● Cachestorlek  associativitetstal x sidstorlek

46 Sidfärgning (page coloring) ● Den virtuella adressen används som index, den fysiska finns i adresslappen virtuellt sidnummersidoffset index fysiskt sidnummersidoffset får inte ändras av adressöversättningen

47 Sidfärgning ● Tricket kan användas i större cacheminnen ● Sidbytesalgoritmen väljer alltid sidor så att överlappande bitar ej ändras av TLB:n ● Huvudminnet som cache för hårddisken - inte längre fullt associativt ● Falska konflikter minskar eller försvinner

48 Hierarki av cacheminnen ● Register ● I- och D-cache ● Level 2, Level 3 ● Huvudminne ● Skivminne L2 cache L3 cache En minneshierarki med flera nivåer. primärminne på processor register skivminne virtuella adresser fysiska adresser data D- TLB L1D- cache I- TLB L1I- cache instruk- tioner processor- chippet


Ladda ner ppt "Prestanda ● Vad påverkar datorprestanda ● Hur mäter man datorprestanda ● Räkna klockcykler - ett sätt att analysera ● Amdahls lag - gräns för förbättringar."

Liknande presentationer


Google-annonser