Datamaskiners ydeevne Martin Zachariasen, DIKU Litteratur: Patterson & Hennessy, kap. 2 Måling af ydeevne Simple ydelsesmål: Klokfrekvens CPI MIPS Benchmarks SPEC 1
Brugerkrav Som brugere af en datamaskine/system er vi ved løsningen af en given opgave bl.a. interesserede i følgende parametre: 1. Programmers totale køretid (og ventetider) hvor lang tid tog det at afvikle hele programmet? hvor lang tid skulle jeg vente hver gang programmet havde fået noget input? 2. Systemers totalkapacitet (throughput) hvor mange brugere kan afvikle deres applikationer samtidig? hvor længe skal de enkelte brugere i gennemsnit vente på systemet? 2
Måling af ydeevne Tid er målestokken for processorers ydeevne. Naturlig definition af tid: Sand urtid svartid forløbet tid Forløbet tid kan deles op i: CPU-tid bruger CPU-tid system CPU-tid Øvrig tid (ventetid for I/O, tid til andre prog. o.s.v.) Hvordan måles CPU-tid? 3
Almindeligt brugte ydelsesmål Klokfrekvens i MHz CPI (antal klokcykler pr. ordre) MIPS (millioner ordrer pr. sekund) MFLOPS (millioner flydende-tals ordrer pr. sekund) Benchmarks 4
Klokfrekvens i MHz Er klokfrekvensen i MHz et godt processor ydelsesmål? CPU-tid #Klokcykler Klokcyklustid Klokcyklustiden er den reciprokke værdi af klokfrekvensen: Klokcyklustid 1 / Klokfrekvens Uden viden om antallet af klokcykler kan vi ikke sige noget om computerens ydeevne! Antallet af klokcykler afhænger bl.a. af ordretypen: Multiplikation tager længere tid end addition Flydende-tals operationer tager længere tid end heltals-operationer Lagertilgang kræver længere tid end registerbanktilgang 5
Hvordan opnår vi en højere ydelse? Maskinkonstruktøren kan øge ydeevnen ved at (a) reducere klokcyklustiden (b) formindske antallet af klokcykler Oftest må (a) afvejes mod (b) Hvorfor? En kortere klokcyklustid vil normalt kræve et højere antal klokcykler mindre arbejde kan udføres pr. klokcyklus. Eksempel: Enkelt-cyklus: Få klokcykler men høj klokcyklustid Fler-cyklus: Mange klokcykler men lav klokcyklustid Pipelining: Få klokcykler og lav klokcyklustid! 6
Eksempel Der er givet et program P. Maskine A: CPU-tiden for P er 10 s Maskine B: Ønsket CPU-tid for P: 6 s Antag at det er muligt at øge klokfrekvensen, men at det kræver 20% flere klokcykler til afvikling af P: Klokfrekvens #Klokcykler CPU-tid Klokfrekvens #Klokcykler CPU-tid hvoraf Klokfrekvens #Klokcykler CPU-tid Klokfrekvens 7
Processorydelsesligningen I de foregående eksempler er ingen henvisning til antal ordrer i programmet P. CPU-tiden afhænger (også) af antallet af ordrer i P. CPU-tid #Ordrer Ordretid CPI (Cycles Per Instruction): Gennemsnitligt antal klokcykler pr. ordre for P. Heraf fås: CPU-tid #Ordrer CPI Klokcyklustid eller #Sekunder #Ordrer #Klokcykler #Sekunder Program Program Ordrer Klokcyklus 8
Hvordan bestemmer vi de tre parametre? CPU-tiden kan måles. Klokcyklustiden kan findes i maskinens dokumentation. Antal ordrer kan bestemmes via en profiler eller ved arkitektursimulering. Bestemmelse af CPI kræver detaljeret simulering af maskinen. Antal klokcykler kan beregnes ved formlen CPI hvor er antal ordrer af klassen, CPI er antal klokcykler pr. ordre for klassen, og er antallet af ordreklasser. 9
CPI-eksempel Samme ordresæt. Givet: Maskine A: Klokcyklustid = 10 ns, CPI = 2.0. Maskine B: Klokcyklustid = 20 ns, CPI = 1.2. Hvilken maskine udfører programmet hurtigst og hvor meget hurtigere? Da ordresættene er ens udføres det samme antal ordrer. CPU-tid ns ns CPU-tid ns ns Altså er A er gange hurtigere end B. 10
Oversættereksempel En oversætterkonstruktør skal vælge mellem to kodesekvenser for en bestemt maskine. Han ved følgende: Ordretype CPI for ordretypen A 1 B 2 C 3 For en bestemt højniveau ordre, der skal oversættes, betragtes to mulige maskinkodesekvenser: Antal ordrer for ordretype Kodesekvens A B C 1 2 1 2 2 4 1 1 11
Oversættereksempel (forts.) Vi betragter følgende spørgsmål: 1. Hvilken kodesekvens udfører flest ordrer? Kodesekvens 1 udfører Kodesekvens 2 udfører 2. Hvilken er hurtigst? Vi skal tælle klokcykler: ordrer ordrer #Klokcykler #Klokcykler 3. Hvad er CPI for hver sekvens? CPI CPI Her ses risikoen ved blot at bruge én parameter (ordreantallet) til vurdering af ydeevnen. Man skal se på alle tre parametre, som samlet giver CPU-tiden. 12
MIPS MIPS: Millioner ordrer pr. sek. for et givet program: MIPS #Ordrer CPU-tid Fordele: simpelt og nemt at forstå hurtigere maskiner har generelt højere MIPS Ulemper: uafhængig af ordresættet (kraftigt/svagt) på en given datamat afhænger MIPS af programmet kan variere omvendt med ydelsen! 13
MIPS-eksempel To forskellige oversættere afprøves på en 500 MHz maskine med tre forskellige ordretyper: klasse A, klasse B og klasse C, som kræver henholdvis 1, 2 og 3 klokcykler. Begge oversættere bruges til at generere kode for et stort program. Ordretype A B C Klokcykler pr. ordre 1 2 3 Oversætter 1: antal ( ) 5 1 1 Oversætter 2: antal ( ) 10 1 1 CPU-tid CPU-tid s s MIPS MIPS Konklusion: MIPS er ikke nødvendigvis et mål for den reelle CPU-tid! 14
Benchmarks Ydelse bestemmes bedst ved at køre et rigtigt brugerprogram programmer med typisk forventet belastning eller: typiske for de forventede anvendelser, f.eks. oversættere, editorer, videnskabelige beregninger, grafik o.s.v. Små benchmark tests praktiske for arkitekter og konstruktører lette at standardisere kan misbruges SPEC (Systems Performance Evaluation Cooperative) producenterne blevet enige om et sæt rigtige programmer og inddata vigtig målestok for ydeevne (og oversætterteknik) kan stadig misbruges 15
SPEC Non-profit group of computer vendors, systems integrators, universities, research organizations, publishers and consultants throughout the world Nogle aktuelle benchmark pakker: CPU2000 Evaluering af processorydelse (består af bl.a. CINT2000 og CFP2000) www.spec.org JVM98 Sammenligning af Java virtual machine (JVM) klient platforme MAIL2001 Mail-server benchmark WEB99 WWW-server benchmark 16
SPEC CINT2000 CINT2000 pakken, der er skrevet i C og C++, omfatter 12 CPU-intensive heltals-benchmarks. SPECint2000 The geometric mean of 12 normalized ratios (one for each integer benchmark) when compiled with aggressive optimization for each benchmark. SPECint base2000 The geometric mean of 12 normalized ratios when compiled with conservative optimization for each benchmark. SPECint rate2000 The geometric mean of 12 normalized throughput ratios when compiled with aggressive optimization for each benchmark. SPECint rate base2000 The geometric mean of 12 normalized throughput ratios when compiled with conservative optimization for each benchmark. www.spec.org 17
SPEC CINT2000: Individuelle benchmarks gzip Data compression utility vpr FPGA circuit placement and routing gcc C compiler mcf Minimum cost network flow solver crafty Chess program parser Natural language processing eon Ray tracing perlbmk Perl gap Computational group theory vortex Object Oriented Database bzip2 Data compression utility twolf Place and route simulator www.spec.org 18
SPEC CPU2000: CFP2000 CFP2000 pakken, der er skrevet i FORTRAN og C, indeholder 14 CPU-intensive flydende-tal benchmarks. SPECfp2000 The geometric mean of 14 normalized ratios (one for each floating point benchmark) when compiled with aggressive optimization for each benchmark. SPECfp base2000 The geometric mean of 14 normalized ratios when compiled with conservative optimization for each benchmark. SPECfp rate2000 The geometric mean of 14 normalized throughput ratios when compiled with aggressive optimization for each benchmark. SPECfp rate base2000 The geometric mean of 14 normalized throughput ratios when compiled with conservative optimization for each benchmark. www.spec.org 19
SPEC CFP2000: Individuelle benchmarks wupwise Quantum chromodynamics swim Shallow water modeling mgrid Multi-grid solver in 3D potential field applu Parabolic/elliptic partial differential equations mesa 3D Graphics library galgel Fluid dynamics: analysis of oscillatory instability art Neural network simulation; adaptive resonance theory equake Finite element simulation; earthquake modeling facerec Computer vision: recognizes faces ammp Computational chemistry lucas Number theory: primality testing fma3d Finite element crash simulation sixtrack Particle accelerator model apsi Solves problems regarding temperature, wind, velocity and distribution of pollutants www.spec.org 20
SPEC: Nogle eksempler Resultater af base test, dvs. med konservativ optimering af oversætteren. Processor CINT2000 CFP2000 AMD Athlon (2.2 GHz) 1376 873 AMD Opteron 144 (1.8 GHz) 1081 1122 Intel Xeon (2.8 GHz) 1204 774 Intel Pentium 4 (3.2 GHz) 1583 1267 Intel Itanium 2 (1.5 GHz) 1322 2119 Konklusion: Klokfrekvensen fortæller langt fra hele historien når man skal evaluere ydeevnen af en maskine. 21