Computerprestaties en abstractielagen

Ontdek hoe een computersysteem uit lagen is opgebouwd, van applicaties en het besturingssysteem via de instructieset tot logische poorten en transistors, en hoe een regel code machine-instructies wordt. Leer daarna prestaties goed te meten: uitvoeringstijd en doorvoer, CPU-tijd, klokfrequentie en cycli per instructie, gecombineerd in de prestatieformule. Gebruik de wet van Amdahl om te voorspellen wat een verbetering of extra processorkernen werkelijk kunnen opleveren, en ontdek waarom vermogensgrenzen een einde maakten aan de wedloop naar hogere klokfrequenties en processors meerdere kernen kregen.

GemiddeldLes 1 van 6 in Cursus Computerarchitectuur: processors, geheugen en prestaties

Wat je leert

  1. Leg uit hoe abstractielagen een applicatie verbinden met de transistors die haar uitvoeren, volg een instructie van code in een hogere programmeertaal tot machine-instructies en herken de instructiesetarchitectuur als het contract tussen software en hardware.
    • Doorloop de abstractielagen van applicaties tot transistors
      Benoem de lagen van een computersysteem, geef aan wat elke laag biedt en verbergt, en leg uit waarom abstractie het ontwerpen van complexe systemen mogelijk maakt.
    • Volg een programma van code in een hogere programmeertaal tot machine-instructies
      Beschrijf hoe compilers, assemblers, linkers en loaders een programma in een hogere programmeertaal omzetten in binaire machine-instructies, en werk één instructie uit tot aan het bitpatroon.
    • Leg uit hoe de instructiesetarchitectuur de interface tussen hardware en software vormt
      Maak onderscheid tussen de ISA, de binaire applicatie-interface en de implementatie, en leg uit waarom één ISA veel implementaties met verschillende prestaties kan hebben.
  2. Gebruik uitvoeringstijd en doorvoer om prestaties te definiëren, vergelijk twee computers correct en meet de tijden die voor een programma van belang zijn.
    • Vergelijk computers op basis van responstijd en doorvoer
      Definieer responstijd en doorvoer, druk prestatie uit als het omgekeerde van uitvoeringstijd en geef correct aan hoeveel keer sneller de ene computer is dan de andere.
    • Meet verstreken tijd, CPU-tijd en klokcycli
      Maak onderscheid tussen verstreken tijd en CPU-tijd, interpreteer tijdmetingen en reken met de juiste eenheden om tussen klokperiode en klokfrequentie.
  3. Leg het verband tussen CPU-tijd, aantal uitgevoerde instructies, cycli per instructie en klokfrequentie, bereken elk van deze waarden uit de andere en beoordeel welke ontwerpkeuzes en beweringen over prestaties de uitvoeringstijd werkelijk veranderen.
    • Leg het verband tussen CPU-tijd, klokcycli en klokfrequentie
      Bereken de CPU-tijd uit klokcycli en klokfrequentie en los ontwerpopgaven op waarbij een hogere klokfrequentie extra cycli kost.
    • Bereken de CPI uit een instructiemix
      Definieer cycli per instructie, bereken de gemiddelde CPI als gewogen gemiddelde over instructieklassen en gebruik die om instructiereeksen te vergelijken.
    • Pas de klassieke CPU-prestatieformule toe
      Gebruik CPU-tijd = aantal uitgevoerde instructies × CPI × klokcyclustijd om uitvoeringstijden te berekenen en te vergelijken, en bepaal welke factoren veranderen door het algoritme, de taal, de compiler, de ISA, de organisatie en de technologie.
    • Beoordeel beweringen over prestaties en samenvattingen van benchmarkresultaten
      Leg uit waarom MIPS en klokfrequentie misleiden, hoe benchmarkverzamelingen zoals SPEC CPU resultaten als verhoudingen rapporteren en waarom het meetkundig gemiddelde wordt gebruikt om die samen te vatten.
  4. Bereken de totale versnellingsfactor als slechts een deel van een programma sneller wordt, bepaal de grens van die versnellingsfactor en pas dezelfde redenering toe op programma's die op veel processorkernen draaien.
    • Bereken de totale versnellingsfactor van een verbetering
      Pas de wet van Amdahl toe op een gedeeltelijke verbetering, bepaal welke verbetering nodig is voor een gewenste versnellingsfactor en herken wanneer een doel onmogelijk is.
    • Gebruik de wet van Amdahl om de versnellingsfactor van multicoreverwerking te beredeneren
      Bereken de versnellingsfactor en efficiëntie van een gedeeltelijk parallel programma op veel processorkernen, leg uit waarom werkelijke versnellingsfactoren lager zijn en vergelijk problemen met een vaste omvang met problemen waarvan de omvang groeit.
  5. Bereken hoe spanning, frequentie en capaciteit het vermogen en de energie van een chip bepalen, leg uit waarom stijgend vermogen een einde maakte aan het tijdperk van steeds snellere afzonderlijke processorkernen en leg uit waarom processors meerdere kernen kregen en wat dat van software vraagt.
    • Bereken dynamisch vermogen en dynamische energie in CMOS-chips
      Gebruik de verbanden tussen capaciteit, spanning, frequentie, vermogen en energie om het effect van ontwerpwijzigingen te schatten en maak onderscheid tussen dynamisch en statisch vermogen.
    • Leg de vermogensgrens en het einde van Dennard-schaling uit
      Beschrijf hoe kleinere transistors vroeger hogere klokfrequenties bij een constante vermogensdichtheid opleverden en waarom lekstroom en de spanningsgrens de stijging van klokfrequenties na het midden van de jaren 2000 stopten.
    • Leg uit waarom processors meerdere kernen kregen en wat dat van software vraagt
      Laat met de vermogensformule zien waarom meerdere langzamere kernen beter kunnen presteren dan één snelle kern en leg uit waarom snelheidswinst door multicoreprocessors afhangt van parallelle software.

Computerprestaties: uitleg

5 hoofdstukken

1

Verbind software met hardware

Een regel broncode passeert meerdere interfaces voordat een processor die kan uitvoeren. Applicaties steunen op systeemsoftware, machine-instructies steunen op een ISA en hardwareontwerpers implementeren die instructies met logica en transistors. Door dat pad te volgen kun je het vereiste gedrag van een programma onderscheiden van de ontwerpkeuzes die de snelheid bepalen en zien waarom compatibele processors heel verschillend kunnen presteren.

1.1 Van applicaties naar fysieke schakelaars

Een abstractie laat zien wat een onderdeel doet en verbergt de details van hoe het werkt. Een browser kan het besturingssysteem vragen een bestand te lezen zonder de schakelingen van het opslagapparaat aan te sturen. Dankzij vastgelegde interfaces kunnen mensen onderdelen van een systeem ontwerpen, testen en vervangen zonder elke laag tegelijk opnieuw te bouwen.

De lagen en hun taken

Een gebruikelijke volgorde, van de taak van de gebruiker tot de fysieke componenten, is:

  1. Applicatiesoftware voert taken uit zoals een spreadsheet bewerken of op internet surfen.
  2. Systeemsoftware levert gedeelde diensten en vertaalt programma's. Hieronder vallen besturingssystemen, compilers, assemblers, linkers en bibliotheken.
  3. De instructiesetarchitectuur (ISA) definieert de machine-instructies en ander gedrag dat zichtbaar is voor software op laag niveau.
  4. De microarchitectuur, of organisatie, implementeert die ISA met een datapad, besturingseenheid, pipelines en caches.
  5. Digitale logica bouwt bewerkingen en opslag op uit poorten, optellers, multiplexers en registers.
  6. Schakelingen verbinden elektronische componenten om die logica te realiseren.
  7. Componenten, vooral transistors, zorgen voor het fysieke schakelgedrag.

Deze grenzen zijn nuttige manieren om naar één machine te kijken. Verschillende diagrammen kunnen aangrenzende lagen samenvoegen. Een besturingssysteem is software: de CPU voert de instructies ervan uit, waaronder instructies met bijzondere bevoegdheden die helpen om bronnen veilig te beheren.

Volg één optelling

Bekijk de C-instructie total = price + tax;. Een compiler kiest waar waarden worden bewaard en welke instructies de optelling uitvoeren. De compiler kan een optelinstructie kiezen zonder een opteller te ontwerpen. Een microarchitect koppelt die instructie aan uitvoeringshardware. Een logicaontwerper bouwt de opteller uit poorten; een schakelingontwerper houdt zich bezig met de elektrische details achter die poorten. Ieder gebruikt een eenvoudigere interface naar het onderliggende niveau.

De fysieke computer heeft vijf klassieke onderdelen: invoer, uitvoer, geheugen, datapad en besturingseenheid. Het datapad voert bewerkingen uit op gegevens. De besturingseenheid stuurt bewerkingen aan en coördineert geheugen, invoer en uitvoer. Samen vormen datapad en besturingseenheid de processor, of CPU.

OpslagBelangrijkste rolBehoudt gegevens zonder stroom?
DRAMHoofdwerkgeheugenNee
SRAMKleine, snelle caches bij de processorNee
Flashgeheugen of magnetische schijfSecundaire opslagJa

Een transistor werkt als een elektrisch aangestuurde schakelaar. Een geïntegreerde schakeling, of chip, verenigt veel transistors op één stuk silicium. Die schakelaars ondersteunen logica; de logica ondersteunt instructies; instructies ondersteunen software.

Meer transistors en verschillende snelheden

De wet van Moore begon met een observatie van Gordon Moore uit 1965 en werd in 1975 herzien tot een trend waarbij het aantal transistors ongeveer elke twee jaar verdubbelde. Tien van zulke verdubbelingen vermenigvuldigen een aantal in ongeveer 20 jaar met 210=1024. Dit is een productietrend, geen natuurkundige garantie; het tempo is vertraagd.

Als een onderdeel aan een interface voldoet, blijft het door die interface beloofde gedrag behouden. Dat legt de prestaties, het energieverbruik of de kosten niet vast. Twee processors kunnen dezelfde optelinstructie correct implementeren en toch verschillende schakelingen, caches en klokfrequenties gebruiken. De applicatie krijgt hetzelfde berekende resultaat, maar wacht er niet even lang op.

Belangrijkste punten

  • Een abstractie toont nuttig gedrag en verbergt implementatiedetails.
  • De lagen verbinden applicaties, systeemsoftware, de ISA, microarchitectuur, logica, schakelingen en componenten.
  • De CPU combineert datapad en besturingseenheid; geheugen, invoer en uitvoer maken het klassieke beeld met vijf onderdelen compleet.
  • DRAM en SRAM zijn vluchtig; flashgeheugen en magnetische schijven behouden gegevens zonder stroom.
  • De wet van Moore beschrijft een trend in het aantal transistors, geen gegarandeerde prestatiegroei.
  • Compatibele interfaces behouden het vastgelegde gedrag, terwijl snelheid en energie nog steeds afhangen van lagere lagen.

1.2 Hoe broncode instructies wordt

Een processor voert machinetaal uit: instructies die als bits zijn gecodeerd. Code in een hogere programmeertaal beschrijft een berekening met variabelen, expressies, lussen en functies. Vertaling overbrugt die twee weergaven en breidt een korte instructie vaak uit tot meerdere machine-instructies.

Het pad van een gecompileerd programma

Voor een C-programma zijn de belangrijkste stappen:

StapInvoer en resultaat
CompilerVertaalt broncode naar assembleertaal of rechtstreeks naar objectcode
AssemblerZet symbolische assembleertaal om in machinecode in een objectbestand
LinkerCombineert objectbestanden en bibliotheekcode en lost verwijzingen ertussen op
LoaderBrengt het uitvoerbare bestand in het geheugen onder en start het programma

Een objectbestand kan machinecode bevatten zonder al een volledig uitvoerbaar programma te zijn. Voor een aanroep van een functie die in een ander bestand is gedefinieerd, moet de linker bijvoorbeeld die verwijzing oplossen. De loader maakt deel uit van de uitvoeringsondersteuning van het besturingssysteem en is geen extra vertaler van broncode.

Volg één C-instructie

Stel dat price in register x6 staat, tax in x7 en de compiler total in x5 plaatst. Dan kan:

total = price + tax;

worden omgezet in deze RISC-V-instructie:

add x5, x6, x7

De bestemming staat vooraan in de assembleertekst. De instructie telt de waarden in x6 en x7 op en schrijft het resultaat naar x5. De 32-bits R-typecodering plaatst de velden in een andere volgorde:

VeldBetekenis hierBits
funct7Selecteert samen met de andere bewerkingsvelden de optelbewerking0000000
rs2Bronregister 700111
rs1Bronregister 600110
funct3Bewerkingsselector000
rdDoelregister 500101
opcodeInstructiefamilie0110011

Door de velden samen te voegen krijg je 0000000 00111 00110 000 00101 0110011, of 0x007302B3. De spaties maken de velden leesbaar; ze worden niet als deel van de instructie opgeslagen.

Eén instructie in de broncode hoeft niet één machine-instructie te betekenen. Zelfs als alle operanden in registers staan, vereist f = (g + h) - (i + j); twee optellingen en een aftrekking. Operanden uit het geheugen laden voegt instructies toe. Het aantal uitgevoerde instructies hangt dus af van de vertaling en de ISA, niet alleen van het aantal broncoderegels.

Andere routes naar machinecode

Een programma in een hogere programmeertaal kan vaak opnieuw worden gecompileerd voor een andere ISA. Het bestaande uitvoerbare bestand is gebonden aan zijn ISA en de conventies van het besturingssysteem. Een uitvoerbaar x86-64-bestand moet opnieuw worden gecompileerd, geëmuleerd of binair vertaald om te draaien op een Arm- of RISC-V-machine die het niet rechtstreeks kan uitvoeren.

Bytecode is een tussenformaat voor instructies van een uitvoeringsomgeving voor een programmeertaal. CPython compileert Python-broncode naar bytecode en interpreteert die met een interpreter. Virtuele Java-machines gebruiken vaak just-in-timecompilatie (JIT-compilatie) om veelgebruikte bytecode tijdens de uitvoering van het programma om te zetten in machinecode. In beide gevallen voert de fysieke CPU uiteindelijk machine-instructies uit.

Assembleertaal blijft tekst, ook als een regel sterk op een echte instructie lijkt. Een pseudo-instructie is een hulpmiddel dat de assembler accepteert: RISC-V mv x5, x6 wordt addi x5, x6, 0. Nauwkeurige controle over instructies kan nuttig zijn in code van besturingssystemen en kritieke lussen, maar je levert daarmee een deel van de overdraagbaarheid en de vrijheid van de compiler bij code in een hogere programmeertaal in.

Belangrijkste punten

  • Compileren, assembleren, linken en laden hebben verschillende taken.
  • Assembleertaal is symbolische tekst; machinecode is de binaire codering die de processor uitvoert.
  • Eén instructie in een hogere programmeertaal kan leiden tot meerdere uitgevoerde machine-instructies, waaronder geheugenbewerkingen.
  • Interpreters en JIT-compilers steunen op hardwareniveau nog steeds op machine-instructies.
  • Een bronprogramma kan opnieuw worden gecompileerd voor een andere ISA; het bestaande uitvoerbare bestand is doorgaans niet overdraagbaar.

1.3 De ISA, de ABI en het processorontwerp

De instructiesetarchitectuur (ISA) is het contract tussen hardware en software op het laagste niveau. Ze vertelt een programmeur in machinetaal welke bewerkingen bestaan en wat die betekenen. Het interne ontwerp van een processor kan veranderen terwijl dat contract stabiel blijft.

Wat het contract vastlegt

Een ISA definieert instructies en hun binaire codering, voor de programmeur zichtbare registers, adresseringsgedrag, ondersteunde gegevenstypen en de architecturale mechanismen voor toegang tot invoer en uitvoer. Een compiler richt zich op deze eigenschappen wanneer die een berekening omzet in instructies.

Een implementatie is een fysiek ontwerp dat aan de ISA voldoet. De microarchitectuur beschrijft interne keuzes zoals uitvoeringseenheden, pipelinestappen, cachegroottes en sprongvoorspelling. Die keuzes hebben veel invloed op de uitvoeringstijd.

VraagSoort keuze
Bestaat er een vermenigvuldigingsinstructie en welk resultaat levert die op?ISA
Duurt die vermenigvuldiging één cyclus of vier?Microarchitectuur
Welke registers bevatten functieargumenten?ABI-conventie
Hoe groot is de cache op het eerste niveau?Microarchitectuur

Het onderscheid gaat over het beloofde gedrag. Een programma moet het vastgelegde resultaat van de vermenigvuldiging krijgen. Het hoeft meestal niet te weten hoe de vermenigvuldiger is gebouwd om dat resultaat te krijgen.

Waarom een ISA alleen niet genoeg is voor binaire compatibiliteit

De binaire applicatie-interface (ABI) voegt de interface van het besturingssysteem en binaire conventies toe aan de ISA op gebruikersniveau. De ABI legt aanroepconventies vast, zoals argumentregisters, samen met de indeling van gegevens en conventies voor systeemaanroepen. Twee machines kunnen dezelfde instructiecoderingen uitvoeren en toch verschillen in hoe een functie een argument ontvangt.

Voor binaire compatibiliteit moeten de ISA-eigenschappen en ABI van het programma worden ondersteund. Zelfs binnen de x86-familie, die begon met de Intel 8086 uit 1978, zijn ondersteuning door het besturingssysteem en uitvoeringsmodi van belang. Achterwaartse compatibiliteit heeft veel oudere programma's behouden terwijl processorimplementaties zijn veranderd, maar een gedeelde familienaam garandeert niet dat elk historisch uitvoerbaar bestand in elke omgeving draait.

Eén architectuur, veel implementaties

Intel en AMD implementeren x86-64 met verschillende interne ontwerpen. Arm en RISC-V ondersteunen eveneens implementaties met sterk verschillende vermogensbudgetten en prestaties. RISC-V ontstond in 2010 aan de University of California, Berkeley en is een open ISA zonder licentievergoedingen. De basisinstructiesets voor gehele getallen omvatten RV32I en RV64I; standaarduitbreidingen omvatten M voor vermenigvuldiging en deling van gehele getallen en F en D voor drijvendekommabewerkingen.

Een programma dat een optionele uitbreiding gebruikt, heeft een implementatie nodig die deze ondersteunt. Een gedeelde basis betekent niet dat elke uitbreiding overal beschikbaar is. Het RISC-V-voorbeeld met optelling illustreert dezelfde grens tussen hardware en software als bij Arm en x86, al verschillen hun instructies en coderingen.

Uitgebreide instructiesets en uitvoeringstijd

Een ISA kan meer werk in één instructie uitdrukken en zo het aantal instructies verminderen. Die instructie kan ook meer cycli kosten of een langere cyclus vereisen. De relevante berekening is het volledige product:

CPU-tijd=aantal uitgevoerde instructies×CPI×cyclustijd.

Een uitgebreidere instructieset volstaat niet om te bepalen welke machine sneller is. Een gedeelde ISA betekent evenmin dat de snelheid gelijk is: compatibele processors kunnen verschillende klokfrequenties, caches en uitvoeringseenheden gebruiken om dezelfde vereiste resultaten te leveren.

Belangrijkste punten

  • De ISA legt machinegedrag vast dat zichtbaar is voor de programmeur; de microarchitectuur implementeert het.
  • De ABI voegt binaire conventies en de interface van het besturingssysteem toe die uitvoerbare bestanden nodig hebben.
  • Binaire compatibiliteit vereist de relevante ISA-eigenschappen, uitvoeringsomgeving en ABI.
  • RISC-V combineert een basis-ISA voor gehele getallen met optionele standaarduitbreidingen.
  • De uitgebreidheid van een instructieset verandert de afwegingen tussen het aantal uitgevoerde instructies, de CPI en de cyclustijd.
2

Meet de prestaties die ertoe doen

Prestaties beginnen bij het werk dat iemand voltooid wil hebben: één taak, een stroom verzoeken of een combinatie van beide. De juiste tijdmaat hangt van die behoefte af. Maak onderscheid tussen de tijd die een gebruiker wacht en de tijd die een processor rekent en reken vervolgens om tussen klokfrequentie en cyclusduur. Door dit onderscheid blijven een snelle processor, een server met hoge capaciteit en een snel reagerende applicatie drie verschillende beweringen, in plaats van ze achter hetzelfde woord te verbergen.

2.1 Tijd voor één taak en werk per seconde

Iemand die op een bestandsconversie wacht, wil een korte responstijd. Een dienst die veel conversies verwerkt, heeft ook een hoge doorvoer nodig. Deze maten beantwoorden verschillende vragen, ook als ze dezelfde computer beschrijven.

Kies de grootheid die bij de taak past

De responstijd, ook wel uitvoeringstijd of latentie genoemd, loopt van het begin van de taak tot de voltooiing ervan. Daaronder vallen rekentijd, toegang tot geheugen en opslag, invoer en uitvoer en relevante activiteit van het besturingssysteem. Als de taak na het indienen in een wachtrij staat, telt die wachttijd mee voor de responstijd van de gebruiker.

Doorvoer is voltooid werk per tijdseenheid. De eenheid kan bijvoorbeeld verzoeken per seconde of taken per uur zijn. Een machine kan veel taken per uur voltooien terwijl elke afzonderlijke taak toch lang duurt.

BehoefteNuttige maatVerbetering
Eén interactief verzoek afhandelenResponstijdMinder seconden per verzoek
Een grote onafhankelijke werklast verwerkenDoorvoerMeer verzoeken per seconde
Veel mensen op aanvaardbare wijze bedienenBeideMeer voltooid werk met aanvaardbare wachttijden

Extra processors kunnen de doorvoer verhogen door onafhankelijke taken tegelijk uit te voeren. Ze hoeven de berekening van een taak zelf niet te verkorten, al kunnen ze de wachttijd op een vrije processor verminderen. Een snellere processor helpt vaak bij beide maten.

Vergelijk prestaties in de juiste richting

Definieer voor dezelfde taak:

PrestatieX=1TX.

Als A 10 s nodig heeft en B 15 s, is de prestatie van A ten opzichte van B:

PrestatieAPrestatieB=TBTA=1510=1,5.

A is 1,5 keer zo snel. De prestatie van B is twee derde van die van A. Zet de grotere uitvoeringstijd boven de kleinere als je aangeeft hoeveel keer zo snel de snellere machine is.

Bij een verbetering is de versnellingsfactor de oude tijd gedeeld door de nieuwe tijd. Een bouwproces dat van 60 s naar 48 s gaat, heeft als versnellingsfactor:

6048=1,25.

De tijdsvermindering is:

60−4860=0,20=20%.

De prestatie steeg met 25%, terwijl de tijd met 20% daalde. Deze percentages gebruiken verschillende noemers. Als je “20% sneller” zegt, kan onduidelijk blijven welke grootheid veranderde; de verhouding en de gemeten tijden maken de bewering helder.

Gelijke doorvoer kan verschillende wachttijden verbergen

Een dienst die 1.200 verzoeken per minuut voltooit, levert 20 verzoeken per seconde. Die snelheid kan ontstaan door elke 50 ms één verzoek te verwerken, waarbij elk verzoek 50 ms duurt. Ze kan ook ontstaan door tien verzoeken parallel te verwerken die elk 500 ms duren: tien voltooide verzoeken per halve seconde geeft opnieuw 20 per seconde.

De tweede inrichting heeft dezelfde doorvoer maar tien keer zoveel verwerkingstijd per verzoek. Een doorvoerresultaat alleen kan niet vaststellen welke latentie een gebruiker ervaart. Vergelijk hetzelfde voltooide werk, vermeld het tijdsinterval en behoud de eenheden wanneer je omrekent tussen minuten en seconden.

Belangrijkste punten

  • Responstijd meet hoe lang één taak duurt; doorvoer meet voltooid werk per tijdseenheid.
  • Voor dezelfde taak is prestatie het omgekeerde van uitvoeringstijd.
  • De versnellingsfactor is de oude tijd gedeeld door de nieuwe tijd; de procentuele tijdsvermindering gebruikt de oude tijd als noemer.
  • Extra processors kunnen de doorvoer verhogen zonder de berekening van een sequentiële taak te verkorten.
  • Bij gelijke doorvoer kunnen de latentietijden van verzoeken sterk verschillen.

2.2 Lees tijdmetingen en reken klokeenheden om

Een stopwatch meet alles tussen begin en einde. De CPU-prestatieformule meet processorwerk. Door die twee manieren van kijken te onderscheiden, voorkom je dat je een processorupgrade winst toeschrijft voor wachttijd die deze niet kan wegnemen.

Verstreken tijd en processortijd

Verstreken tijd, of wandkloktijd, omvat rekentijd, wachten op bestanden of het netwerk en perioden waarin andere processen draaien. CPU-tijd registreert processortijd die aan de taak wordt toegerekend. CPU-gebruikerstijd is de tijd voor het uitvoeren van de programmacode; CPU-systeemtijd is de tijd voor het uitvoeren van code van het besturingssysteem namens het programma.

Stel dat de Unix-opdracht time “real 2.50 s, user 1.80 s, sys 0.20 s.” rapporteert. Het programma gebruikte:

1,80+0,20=2,00 s

aan CPU-tijd. In dit tijdmetingsvoorbeeld met één thread staat de resterende 0,50 s voor tijd die niet als CPU-uitvoering is toegerekend, zoals wachttijd of tijd waarin een ander proces werd ingepland. Als een processorverbetering het CPU-deel halveert terwijl die wachttijd gelijk blijft, wordt de verstreken tijd:

0,50+2,002=1,50 s.

Als je de volledige 2,50 s zou halveren, zou je ten onrechte ook het wachten versnellen. Bij CPU-prestaties ligt de nadruk vaak op gebruikerstijd; systeemprestaties worden beoordeeld met de verstreken tijd bij een gecontroleerde systeembelasting.

Bij een parallel programma wordt de CPU-tijd opgeteld over de threads en kernen. Vier kernen die het grootste deel van één seconde werken, kunnen 3,6 s gebruikerstijd opleveren tijdens 1,0 s verstreken tijd. In dat geval meet je de wachttijd niet door de opgetelde CPU-tijd van de verstreken tijd af te trekken.

Klokfrequentie is het omgekeerde van de periode

Een klok geeft synchrone hardware een tijdritme. De klokperiode is het aantal seconden per cyclus; de klokfrequentie is het aantal cycli per seconde:

periode=1frequentie.

Bij 4 GHz is de frequentie vier miljard cycli per seconde. Eén cyclus duurt:

14×109 s=0,25 ns=250 ps.

Bij 2,5 GHz is de periode 400 ps. Andersom geeft 312,5 ps per cyclus:

1312,5×10−12 Hz=3,2 GHz.
Voorvoegsel of eenheidWaarde
GHz109 cycli/s
ns10−9 s
ps10−12 s
KiB210=1024 bytes
GiB230=1.073.741.824 bytes

Voorvoegsels voor tijd en frequentie gebruiken machten van tien. Binaire geheugenvoorvoegsels gebruiken machten van twee. Aanduidingen zoals “GB” worden soms losjes gebruikt voor binaire grootheden, dus controleer de betekenis voordat je een grootte omrekent.

Interpreteer een meting als één uitvoering

De opgegeven frequentie van een processor is geen registratie van elk moment van de uitvoering. Tijdelijke frequentieverhoging, energiebeheer en thermische snelheidsbegrenzing veranderen de frequentie. Ook cache-inhoud en achtergrondactiviteit veranderen de gemeten tijd. Door een meting te herhalen en een typische waarde te rapporteren, zoals de mediaan, kun je een stabiel resultaat onderscheiden van een uitzonderlijk gunstige uitvoering. Gebruik tijd- en frequentiemetingen uit hetzelfde uitvoeringsinterval wanneer je die aan aantallen cycli koppelt.

Belangrijkste punten

  • Verstreken tijd omvat wachttijd; CPU-tijd omvat de aan de taak toegerekende gebruikers- en systeemtijd.
  • CPU-tijd die over meerdere kernen is opgeteld, kan groter zijn dan de verstreken tijd.
  • Klokperiode en klokfrequentie zijn elkaars omgekeerde; gebruik seconden, nanoseconden en picoseconden consistent.
  • GHz gebruikt decimale machten van tien; KiB en GiB gebruiken binaire machten van twee.
  • Tijdelijke frequentieverhoging, thermische snelheidsbegrenzing, caches en achtergrondwerk kunnen het resultaat per uitvoering veranderen.
  • Een CPU-versnelling vermindert het CPU-deel van de verstreken tijd, terwijl wachttijden waarop die geen invloed heeft blijven bestaan.
3

Bereken en vergelijk CPU-tijd

De CPU-tijd van een programma volgt uit hoeveel instructies het uitvoert, hoeveel cycli die instructies vereisen en hoe lang elke cyclus duurt. Deze factoren kunnen in tegengestelde richtingen veranderen wanneer een compiler of processor verandert. Werk cyclusbudgetten en instructiemixen uit voordat je volledige uitvoeringstijden vergelijkt en gebruik daarna dezelfde verbanden om beweringen over klokfrequentie, instructiesnelheid en samenvattingen van benchmarkresultaten te beoordelen.

3.1 Zet een cyclusbudget om in CPU-tijd

Een klokcyclus is een eenheid van processortijd, geen instructie. Sommige instructies hebben veel cycli nodig en door overlappende uitvoering kunnen meerdere instructies per cyclus worden voltooid. Begin met het totale aantal cycli dat het hele programma nodig heeft.

Deel cycli door cycli per seconde

Als een programma een bekend aantal cycli nodig heeft, is de CPU-tijd:

T=cycli×periode=cycliklokfrequentie.

Voor zes miljard cycli bij 3 GHz:

T=6×1093×109=2 s.

De eenheden verklaren de deling: cycli gedeeld door cycli per seconde geeft seconden. Cycli vermenigvuldigen met frequentie zou cycli in het kwadraat per seconde opleveren, geen tijdsduur. Vermenigvuldigen met de periode werkt wel, omdat de eenheid daarvan seconden per cyclus is.

Met dezelfde formule kun je een andere onbekende bepalen. Vermenigvuldig tijd met frequentie om het aantal cycli terug te vinden; deel cycli door de doeltijd om de benodigde frequentie te vinden. Gebruik Hz voor de frequentie als de tijd in seconden is gegeven, of streep overeenkomstige factoren van een miljard expliciet tegen elkaar weg.

Als een hogere klokfrequentie meer cycli vereist

Processor A voert een programma uit in 10 s bij 3 GHz. Het cyclusbudget is:

10×3×109=3×1010 cycli.

Een voorgesteld ontwerp B verhoogt dat aantal cycli met 20%. B moet daarom uitvoeren:

1,2×3×1010=3,6×1010 cycli.

Om in 9 s klaar te zijn, heeft B nodig:

fB=3,6×10109=4×109 Hz=4 GHz.

De verhouding tussen de klokfrequenties is vier derde, ongeveer 1,33. De werkelijke versnellingsfactor is slechts tien negende, ongeveer 1,11, omdat B meer kloktikken nodig heeft om het werk te voltooien. Als je ervan uitgaat dat het oude aantal cycli gelijk blijft, voorspel je een klokfrequentie die te laag is om het doel te halen.

Vergelijk een afweging zonder een programmaomvang te kiezen

Stel dat een ontwerp het oude aantal cycli vermenigvuldigt met een factor a en de oude klokfrequentie met een factor b. Dan geldt:

TnieuwToud=ab.

Het ontwerp is sneller als de groeifactor van het aantal cycli kleiner is dan de groeifactor van de frequentie. Als beide met dezelfde factor groeien, blijft de CPU-tijd gelijk. Deze verhouding is nuttig als een ontwerpvoorstel procentuele veranderingen vermeldt maar geen absoluut aantal cycli geeft.

Waarom de periode een fysieke grens heeft

Tussen registers gaan signalen door combinatorische logica en moeten ze stabiel worden voordat hun resultaten worden vastgelegd. Het traagste vereiste pad is het kritieke pad. De schakelingstechnologie en de hoeveelheid werk die aan een stap is toegewezen, begrenzen hoe kort een veilige klokperiode kan zijn.

Een ontwerper kan werk over kortere pipelinestappen verdelen om een hogere klokfrequentie mogelijk te maken, maar die reorganisatie kan ook het aantal cycli veranderen. Meer GHz is dus een uitspraak over de frequentie van kloktikken. Om een prestatieverbetering vast te stellen, combineer je die met het aantal cycli dat het programma onder dat ontwerp daadwerkelijk nodig heeft.

Belangrijkste punten

  • CPU-tijd is gelijk aan het aantal cycli maal de cyclusperiode, of het aantal cycli gedeeld door de klokfrequentie.
  • Tijd maal klokfrequentie geeft het aantal cycli; cycli gedeeld door de doeltijd geeft de vereiste klokfrequentie.
  • Vergelijk de factor voor het aantal cycli met de frequentiefactor als beide veranderen.
  • Het kritieke pad begrenst de klokperiode en het werk anders indelen kan het aantal cycli veranderen.

3.2 Weeg de CPI naar de uitgevoerde instructies

Cycli per instructie (CPI) is het totale aantal CPU-cycli van een programma gedeeld door het aantal uitgevoerde instructies. Het is een gemiddelde over één uitvoering en kan dus een gebroken getal zijn. De CPI hangt af van welke instructies worden uitgevoerd en hoe die met de machine samenwerken.

Tel de cycli op voordat je het gemiddelde neemt

Voor instructieklassen met aantallen Ci en CPI's per klasse ci geldt:

cycli=∑iCici,CPI=∑iCici∑iCi.

Je kunt ook de CPI van elke klasse vermenigvuldigen met het aandeel van die klasse in het aantal instructies en de bijdragen optellen. De aandelen moeten uitgevoerde instructies beschrijven, geen broncoderegels of aantallen instructietypen.

Stel dat ALU-instructies 1 cyclus kosten, laad- en opslaginstructies 4 en voorwaardelijke sprongen 2. Een mix van 50%, 30% en 20% geeft:

0,50(1)+0,30(4)+0,20(2)=0,50+1,20+0,40=2,1.

Voor vijf miljard instructies bij 3 GHz is het totaal 10,5 miljard cycli en de CPU-tijd 3,5 s. Het ongewogen gemiddelde van de drie kosten per klasse, ongeveer 2,33, is onjuist: de klassen komen niet even vaak voor.

Meer instructies kunnen toch minder cycli betekenen

Twee compilerversies gebruiken dezelfde kosten per klasse:

KlasseCycli per instructieVersie 1, miljoenenVersie 2, miljoenen
ALU1400600
Laden en opslaan4300150
Voorwaardelijke sprong2100100

Versie 1 voert 800 miljoen instructies uit. De bijdragen aan het aantal cycli zijn 400, 1.200 en 200 miljoen, in totaal 1.800 miljoen. De CPI is:

1800800=2,25.

Versie 2 voert 850 miljoen instructies uit. De bijdragen zijn 600, 600 en 200 miljoen, in totaal 1.400 miljoen. De CPI is:

1400850≈1,65.

Bij 3 GHz zijn de tijden 0,60 s en ongeveer 0,467 s. Versie 2 is ongeveer 1,29 keer zo snel, hoewel die 50 miljoen instructies meer uitvoert. Veel dure geheugeninstructies vervangen door meer goedkope ALU-instructies kan die afweging lonend maken.

CPI hoort bij een werklast op een machine

Geheugenwachtcycli, cachemissers, spronggedrag en compilerkeuzes veranderen de effectieve CPI. Eén “processor-CPI” kan niet elk programma beschrijven. Hardwarematige prestatietellers of een simulator kunnen de totale aantallen instructies en cycli meten voor de werklast die wordt geanalyseerd.

Instructies per cyclus (IPC) gebruikt dezelfde totalen in omgekeerde volgorde:

IPC=1CPI.

Een IPC van 2,5 geeft een CPI van 0,4. Meerdere instructies kunnen overlappen in een processor die meerdere instructies per cyclus uitgeeft en voltooit. Een gemiddelde onder één betekent niet dat een afzonderlijke instructie haar volledige traject in een fractie van een kloktik aflegt.

Belangrijkste punten

  • Bereken het totale aantal cycli door voor elke klasse het aantal instructies maal de CPI op te tellen.
  • De gemiddelde CPI weegt de kosten per klasse naar het aandeel van die klasse in de uitgevoerde instructies.
  • Een langere instructiereeks kan sneller draaien als het totale aantal cycli kleiner is.
  • De CPI hangt af van het programma, de compiler en het gedrag van de machine tijdens de uitvoering.
  • IPC is het omgekeerde van CPI; door overlappende uitvoering kan de CPI onder één komen.

3.3 Combineer het aantal uitgevoerde instructies, de CPI en de klokfrequentie

De CPU-prestatieformule brengt de drie tijdfactoren samen:

T=I×CPI×tcyclus=I×CPIf.

Hier telt I de uitgevoerde instructies en is f de klokfrequentie die tijdens de uitvoering geldt. Instructies maal cycli per instructie geeft cycli. Delen door cycli per seconde geeft vervolgens seconden.

Bereken een tijd en bepaal een onbekende

Een programma voert twee miljard instructies uit bij een CPI van 1,5 op een processor van 2,5 GHz. Bepaal eerst het totale aantal cycli en zet dat daarna om in tijd:

2×109×1,5=3×109 cycli, T=3×1092,5×109=1,2 s.

Om de CPI uit de gemeten tijd af te leiden, herleid je dezelfde formule:

CPI=TfI.

Voor 1,6 miljard instructies in 0,8 s bij 3,2 GHz zijn er 2,56 miljard cycli. Delen door 1,6 miljard instructies geeft een CPI van 1,6.

Vergelijk volledige producten

Twee processors voeren hetzelfde gecompileerde programma uit met hetzelfde aantal instructies. A heeft 4 GHz en een CPI van 1,8; B heeft 2,5 GHz en een CPI van 1,0. Hun tijd per instructie is:

1,84×109=0,45 ns,1,02,5×109=0,40 ns.

B is 1,125 keer zo snel. De lagere CPI van B compenseert de lagere klokfrequentie ruimschoots. Het aantal instructies valt hier weg omdat het gelijk is; dat zou niet zo zijn als de twee programma's verschillende instructiereeksen volgden.

Een compileroptie die het aantal instructies met 10% vermindert maar de CPI met 15% verhoogt, bij dezelfde frequentie, verandert de tijd met een factor:

0,90×1,15=1,035.

De tijd stijgt met 3,5%. Als je alleen naar de vermindering van het aantal instructies kijkt, wijst die in de verkeerde richting.

Verbind ontwerpkeuzes met de factoren
KeuzeFactoren die kunnen veranderen
AlgoritmeAantal uitgevoerde instructies en mogelijk CPI
Programmeertaal of compilerAantal uitgevoerde instructies en CPI
ISAAantal uitgevoerde instructies, CPI en klokfrequentie
OrganisatieCPI en klokfrequentie
SchakelingstechnologieKlokfrequentie

Deze verbanden zijn nuttig voor analyse, maar zijn geen onafhankelijke regelknoppen die je altijd zonder gevolgen kunt aanpassen. Een cache vermindert geheugenwachtcycli en verlaagt daarmee de effectieve CPI. Pipelining laat opeenvolgende instructies overlappen en kan de effectieve CPI verlagen of een kortere klokperiode mogelijk maken. Zulke veranderingen kunnen andere kosten meebrengen die in de gemeten totalen zichtbaar worden.

Houd het meetinterval gelijk

Meet CPU-tijd, aantal uitgevoerde instructies, cycli en frequentie voor hetzelfde werk. Tellers of simulatie leveren aantallen instructies en cycli. De opgegeven GHz-waarde van een product is geen registratie van de frequentie tijdens een uitvoering waarbij die wordt verhoogd of verlaagd. Als de frequentie varieert, is het bijbehorende gemiddelde het totale aantal getelde cycli gedeeld door de CPU-tijd voor dat interval.

De formule voorspelt de CPU-uitvoeringstijd. Wachten op opslag of het netwerk hoort bij de verstreken tijd en moet afzonderlijk worden meegenomen als de gebruiker die tijd nodig heeft.

Belangrijkste punten

  • CPU-tijd is het aantal uitgevoerde instructies maal de CPI, gedeeld door de klokfrequentie.
  • Herleid de formule om de CPI, het aantal uitgevoerde instructies of de vereiste frequentie uit gemeten grootheden af te leiden.
  • Laat het aantal instructies alleen wegvallen als de vergeleken uitvoeringen hetzelfde aantal hebben.
  • Veranderingen in compiler en hardware kunnen de ene factor verbeteren en een andere verslechteren.
  • Gebruik de frequentie en aantallen van dezelfde uitvoering, niet een opgegeven klokfrequentie.
  • Tel wachttijden die niet veranderen afzonderlijk mee als je de verstreken tijd voorspelt.

3.4 Beoordeel benchmarkscores en beweringen over instructiesnelheid

Een nuttige bewering over prestaties gaat over werk dat voor de gebruiker van belang is. Een benchmark voert een gekozen werklast uit om prestaties te meten. Een benchmarkverzameling neemt meerdere werklasten als steekproef wanneer één applicatie niet de volledige behoefte kan vertegenwoordigen.

Lees welk soort SPEC-resultaat je hebt

SPEC CPU 2026, uitgebracht in mei 2026, volgt op SPEC CPU 2017. De verzamelingen belasten processors, geheugensystemen en compilers. SPECspeed meet de voltooiingstijd van één exemplaar van een programma; dat exemplaar kan zelf meerdere threads gebruiken. SPECrate meet de doorvoer met meerdere exemplaren. De verzamelingen voor gehele getallen en voor drijvendekommagetallen dienen verschillende soorten werklasten en het product ondersteunt ook energiemaatstaven.

Een snelheidsverhouding voor één programma vergelijkt de referentietijd met de gemeten tijd:

r=TreferentieTgemeten.

Een referentietijd van 3.000 s en een gemeten tijd van 250 s geven 12. Hoger is beter. Een doorvoerverhouding omvat het aantal exemplaren dat in het gemeten interval is voltooid. Vergelijk gelijksoortige maatstaven en dezelfde versie van de verzameling; een snelheidsscore en een doorvoerscore beantwoorden verschillende vragen.

Vat verhoudingen samen met een meetkundig gemiddelde

Voor positieve verhoudingen gebruikt de verzameling:

G=r1r2⋯rnn.

De verhoudingen 2, 8 en 4 geven een product van 64 en een derdemachtswortel van 4. Hun rekenkundig gemiddelde is ongeveer 4,67, een ander resultaat.

De vergelijking van meetkundige gemiddelden hangt niet af van de referentiemachine die de verhoudingen bepaalt. Stel dat X 10 s en 40 s nodig heeft voor twee programma's, terwijl Y 20 s en 25 s nodig heeft. Referentietijden van 100 s voor beide geven verhoudingen van 10 en 2,5 voor X en 5 en 4 voor Y. De meetkundige gemiddelden zijn 5 en ongeveer 4,47, dus X ligt ongeveer een factor 1,12 voor.

Verander de referentietijden naar 50 s en 200 s: X krijgt verhoudingen van 5 en 5, Y krijgt 2,5 en 8. Hun meetkundige gemiddelden blijven 5 en ongeveer 4,47. De rekenkundige gemiddelden veranderen daarentegen van 6,25 tegenover 4,5 naar 5 tegenover 5,25, waardoor de rangorde omkeert. Normalisatie op basis van de referentie mag niet bepalen welke machine sneller lijkt.

Waarom MIPS langzamere code kan belonen

MIPS, miljoen instructies per seconde, is:

MIPS=ITCPU×106=fCPI×106.

Instructies verrichten verschillende hoeveelheden nuttig werk in verschillende ISA's. Zelfs op één machine verandert MIPS met het programma en kan een hogere instructiesnelheid samengaan met een langere uitvoeringstijd.

Stel dat bij 3 GHz ALU-instructies, laad- en opslaginstructies en voorwaardelijke sprongen 1, 4 en 2 cycli kosten. Code Q voert er 400, 300 en 100 miljoen van uit: 800 miljoen instructies, 1.800 miljoen cycli, 0,60 s, ongeveer 1.333 MIPS. Code P voert er 1.500, 100 en 100 miljoen uit: 1.700 miljoen instructies, 2.100 miljoen cycli, 0,70 s, ongeveer 2.429 MIPS. P voltooit instructies sneller maar rondt de taak later af.

Piekverwerkingssnelheden beschrijven de ideale hardwarecapaciteit. Werkelijke werklasten kunnen veel minder bereiken door afhankelijkheden, geheugenwachttijden en andere grenzen. Gebruik de werkelijke taaktijd om de prestaties voor die taak te beoordelen; frequentie, MIPS en piekverwerkingssnelheden verklaren er slechts bepaalde delen van.

Belangrijkste punten

  • Kies benchmarks die de beoogde werklast vertegenwoordigen.
  • SPECspeed meet de voltooiingstijd van één exemplaar; SPECrate meet de doorvoer over meerdere exemplaren.
  • Een grotere verhouding tussen referentietijd en gemeten tijd duidt op betere prestaties.
  • Gebruik het meetkundig gemiddelde om positieve genormaliseerde verhoudingen samen te vatten zonder dat de rangorde van de referentie afhangt.
  • MIPS kan stijgen terwijl een taak langzamer wordt en instructies uit verschillende ISA's verrichten verschillende hoeveelheden werk.
  • Piekverwerkingssnelheden beschrijven de ideale capaciteit, niet de gemeten uitvoeringstijd van een taak.
4

Bepaal de grenzen van een verbetering

Een verbetering helpt alleen tijdens het deel van een taak dat er gebruik van kan maken. Een snellere rekeneenheid verandert niets aan wachttijd voor bestanden en extra kernen laten sequentieel werk op één kern draaien. De wet van Amdahl zet die verdeling om in een tijdbudget en maakt zo zowel waarschijnlijke winst als harde grenzen zichtbaar. Dezelfde redenering helpt bij het kiezen van een optimalisatie, het terugrekenen vanuit een doel en het verklaren waarom parallelle werklasten met vaste en groeiende omvang verschillende uitkomsten geven.

4.1 Bereken de winst door een deel van een taak te verbeteren

De wet van Amdahl begint met het verdelen van de oorspronkelijke uitvoeringstijd in een beïnvloed deel en een onbeïnvloed deel. Versnel alleen de beïnvloede tijd en tel de delen daarna weer bij elkaar op. Zo voorkom je dat je een lokale verbetering toepast op werk dat niet kan veranderen.

Bouw de nieuwe tijd op uit oude tijden

Als het beïnvloede deel s keer zo snel wordt:

Tnieuw=Tbeı¨nvloeds+Tonbeı¨nvloed.

Neem f als de beïnvloede fractie van de oorspronkelijke uitvoeringstijd. Delen door de oorspronkelijke tijd geeft de vorm met de versnellingsfactor:

S=1(1−f)+f/s.

Een programma van 120 s besteedt 90 s aan drijvendekommabewerkingen en 30 s aan ander werk. De beïnvloede fractie is dus 0,75. Door drijvendekommabewerkingen drie keer zo snel te maken, daalt de tijd daarvoor naar 30 s:

Tnieuw=903+30=60 s,S=12060=2.

De drijvendekommabewerkingen worden een factor drie sneller; het volledige programma wordt een factor twee sneller. De onveranderde 30 s verklaart het verschil.

Reken terug vanuit een doel

Om dezelfde taak in 40 s te voltooien, heeft het onveranderde werk nog steeds 30 s nodig. Voor het deel met drijvendekommabewerkingen dat oorspronkelijk 90 s duurde, blijft slechts 10 s over. Daarom geldt:

40=90s+30,s=9010=9.

Een doel van 30 s zou geen tijd overlaten voor dat werk. Geen eindige versnelling zorgt ervoor dat een positieve hoeveelheid beïnvloed werk precies nul tijd kost. Als de lokale versnellingsfactor onbegrensd groeit, nadert de totale versnellingsfactor:

Sgrens=11−f.

Hier is de grens 4, die van onderaf wordt benaderd. Bij een onbeïnvloede fractie van de helft is de grens 2. Als al het werk wordt beïnvloed, is er geen onveranderde positieve tijd die zo'n eindige bovengrens oplegt.

Optimaliseer waar de tijd naartoe gaat

Het principe maak het veelvoorkomende geval snel betekent dat je vaststelt waaraan de uitvoeringstijd werkelijk wordt besteed. Prestatieprofilering meet die verdeling. Een deel dat 60% van de tijd kost twee keer zo snel maken, geeft:

S=10,40+0,60/2≈1,43.

Een tienvoudige verbetering van een deel van 10% geeft slechts:

S=10,90+0,10/10≈1,10.

Een grote lokale factor kan minder opleveren dan een bescheiden verbetering die op een groter deel van de taak wordt toegepast.

De beïnvloede fractie moet een tijdsfractie zijn. Als laad- en opslaginstructies 30% van de instructies vormen maar 60% van de cycli kosten, is hun tijdsfractie bij een vaste klokfrequentie 0,60. Als je instructies even zwaar telt, mis je hun hogere kosten.

Pas dezelfde verdeling toe op wachten

Voor een taak met 2,00 s CPU-werk en 0,50 s vaste wachttijd voor bestanden geeft een verdubbeling van de CPU-snelheid in totaal 1,50 s. De versnellingsfactor is ongeveer 1,67. Hetzelfde tijdbudget werkt voor verbeteringen van hardware, software en invoer en uitvoer: bepaal precies welke oorspronkelijke tijd verandert voordat je de factor toepast.

Belangrijkste punten

  • De wet van Amdahl versnelt de beïnvloede tijd en laat de onbeïnvloede tijd in het totaal staan.
  • De beïnvloede fractie is een fractie van de oorspronkelijke tijd, niet van instructies of broncoderegels.
  • Gebruik de doeltijd min de onbeïnvloede tijd om de vereiste lokale verbetering te bepalen.
  • Een positieve onbeïnvloede fractie stelt de grens voor de versnellingsfactor op één gedeeld door die fractie.
  • Prestatieprofilering helpt verbeteringen te vinden die een groot deel van de uitvoeringstijd beïnvloeden.

4.2 Schat de versnellingsfactor en efficiëntie over processorkernen

Meer kernen verkorten een taak alleen als werk tegelijk kan worden uitgevoerd. Verdeel de oorspronkelijke tijd van een vaste taak op één kern in een sequentieel en een parallel deel en bekijk vervolgens wat extra kernen kunnen veranderen.

De wet van Amdahl voor een taak met vaste omvang

Neem p als de paralleliseerbare fractie van de oorspronkelijke tijd op één kern. Bij een perfecte verdeling over N kernen en zonder overhead geldt:

S(N)=1(1−p)+p/N.

Bij een paralleliseerbare fractie van 0,95 is de sequentiële fractie 0,05. Acht kernen geven:

S(8)=10,05+0,95/8≈5,93.

Bij 100 kernen is de versnellingsfactor ongeveer 16,8; bij 1.000 kernen ongeveer 19,6. De sequentiële 5% houdt de versnellingsfactor bij vaste omvang onder 20, hoeveel kernen je ook toevoegt.

Parallelle efficiëntie is de versnellingsfactor gedeeld door het aantal kernen. De efficiëntie bij acht kernen is ongeveer 0,74, of 74%. Bij 100 kernen is die ongeveer 17%. Een grotere versnellingsfactor kan samengaan met lagere efficiëntie, omdat elke extra kern minder bijdraagt aan de vaste taak.

Waarom gemeten winst kleiner kan zijn

Het ideale model geeft het parallelle werk gelijke delen en kent geen coördinatiekosten. Werkelijke programma's communiceren en synchroniseren en sommige kernen krijgen meer werk dan andere.

Bij 100 gelijke eenheden onafhankelijk werk op vier identieke kernen geeft een evenwichtige verdeling elke kern 25 eenheden. Als één kern 40 eenheden krijgt terwijl de rest eerder klaar is, moet de voltooiing wachten op die drukste kern. De versnellingsfactor is 100 gedeeld door 40, ofwel 2,5, zelfs voordat communicatiekosten worden toegevoegd. De eerdere eindtijden van de andere kernen optellen zou niet de voltooiingstijd geven: het laatste vereiste resultaat bepaalt die tijd.

Een programma met één thread heeft geen paralleliseerbare fractie om te verdelen. Meer kernen kunnen nog steeds andere programma's draaien en de systeemdoorvoer verbeteren, maar ze verdelen de instructiestroom van dat programma niet automatisch.

Vast en groeiend werk stellen verschillende vragen

Sterke schaling houdt de totale probleemomvang vast en vraagt hoeveel sneller meer processors het probleem kunnen afhandelen. Zwakke schaling laat het totale werk evenredig met het aantal processors groeien, zodat het werk per processor ongeveer constant blijft. Een grotere simulatie kan een fijner raster gebruiken en tegelijk ongeveer dezelfde werklast per processor behouden.

De wet van Gustafson beschrijft geschaald werk wanneer de sequentiële tijd gelijk blijft terwijl het parallelle werk groeit. De sequentiële fractie s wordt gemeten tijdens de parallelle uitvoering, anders dan de oorspronkelijke fractie op één kern bij Amdahl:

Sgeschaald=s+(1−s)N.

Bij een gemeten sequentiële fractie van 0,05 op 100 kernen is de geschaalde versnellingsfactor 95,05. Dit spreekt Amdahls grens van 20 voor een vaste taak met een oorspronkelijke sequentiële fractie van 5% niet tegen. De taakomvang en de meetbasis van de fractie verschillen.

Parallelle software moet onafhankelijk werk beschikbaar maken, evenwichtig verdelen en de resultaten coördineren. Meer hardware biedt capaciteit; de structuur van het programma bepaalt hoeveel van die capaciteit de voltooiingstijd verkort.

Belangrijkste punten

  • Deel bij ideale schaling met vaste omvang alleen de oorspronkelijke parallelle tijd door het aantal kernen.
  • De oorspronkelijke sequentiële fractie bepaalt de grens van Amdahl voor de versnellingsfactor met meerdere kernen.
  • Parallelle efficiëntie is de versnellingsfactor gedeeld door het aantal kernen.
  • Communicatie, synchronisatie en ongelijke werkverdeling verminderen de winst.
  • Sterke schaling houdt het totale werk vast; zwakke schaling houdt het werk per processor ongeveer gelijk.
  • De wet van Gustafson gebruikt voor een groeiende werklast een sequentiële fractie die tijdens de parallelle uitvoering is gemeten.
5

Verbind vermogensgrenzen met multicoreontwerp

Een processor moet werk voltooien binnen zowel een tijdbudget als een vermogensbudget. Schakelende transistors verbruiken energie, spanning beïnvloedt die kosten sterk en warmte begrenst hoe intensief een chip kan draaien. Verbind die verbanden met het einde van de ideale schaling van transistors en de overstap naar meerdere kernen. Zo wordt duidelijk waarom meer transistors nog steeds nuttig kunnen zijn wanneer hogere klokfrequenties alleen niet voor de volgende prestatiewinst kunnen zorgen.

5.1 Bereken schakelvermogen en energie voor een taak

CMOS-processors verbruiken energie wanneer signalen schakelen en ook door lekstroom zolang ze onder spanning staan. Dynamische energie hangt samen met schakelen; statisch vermogen wordt ook opgenomen zonder nuttige schakelactiviteit. Hun onderlinge aandelen hangen af van de chip en de werklast.

Spanning heeft een kwadratisch effect

De energie die bij een overgang hoort, schaalt met de capaciteit en het kwadraat van de voedingsspanning. Een gebruikelijke uitdrukking gebruikt de helft van de capaciteit maal de spanning in het kwadraat; een volledige laad- en ontlaadpuls schaalt met de capaciteit maal de spanning in het kwadraat. Gebruik voor het gemiddelde dynamische vermogen:

Pdynamisch=αCV2f.

Hier is C de capacitieve belasting, V de voedingsspanning, f de klokfrequentie en beschrijft α de schakelactiviteit volgens de gekozen telconventie. Sommige conventies nemen een factor een half op in de activiteitsfactor. Verhoudingen zijn eenvoudig te berekenen als je dezelfde activiteitsconventie blijft gebruiken.

Bij ongewijzigde capaciteit en activiteit geeft een verlaging van zowel spanning als frequentie met 20%:

PnieuwPoud=0,82×0,8=0,512.

Het nieuwe dynamische vermogen is 51,2% van het oorspronkelijke. Alleen de spanning met 10% verlagen geeft een factor 0,81, een vermindering van 19% van het dynamische vermogen en de energie per overgang.

Een lagere spanning vertraagt ook het schakelen van transistors. Dynamische spannings- en frequentieschaling (DVFS) past spanning en frequentie samen aan, zodat de schakelingen op de gekozen snelheid kunnen blijven werken.

Vermogen en energie beantwoorden verschillende vragen

Vermogen is een hoeveelheid per tijdseenheid, gemeten in watt; één watt is één joule per seconde. Energie voor een taak is het gemiddelde vermogen vermenigvuldigd met de duur:

E=PgemiddeldT.
UitvoeringGemiddeld vermogenTijdEnergie
A20 W3 s60 J
B30 W1,5 s45 J

B neemt tijdens het draaien meer vermogen op maar gebruikt minder energie om de taak te voltooien. De koeling moet de snelheid van warmteproductie aankunnen; batterijverbruik en elektriciteitsverbruik tellen de energie over de tijd op.

Bij vast werk met hetzelfde aantal overgangen, dezelfde spanning en activiteit spreidt alleen de frequentie verlagen die overgangen over meer tijd. Het dynamische vermogen daalt, maar de dynamische energie voor de taak blijft gelijk. De spanning verlagen vermindert ook de energie van elke overgang. Als het statische vermogen gedurende de langere uitvoering blijft bestaan, kan vertragen dat deel van de taakenergie zelfs verhogen.

Lekstroom en niet-actieve hardware

Transistors die in principe uitstaan, laten nog steeds lekstroom door. Kleinere componenten en lagere drempelspanningen maken lekstroom tot een belangrijk ontwerpvraagstuk. Voedingsuitschakeling koppelt de voeding van een niet-actief deel los om het statische verbruik te verminderen.

Een licht belaste server kan nog steeds een aanzienlijk deel van zijn piekvermogen verbruiken. Het verbruik laten meegroeien met nuttig werk, energieproportionaliteit genoemd, is een ontwerpdoel. Een taak snel voltooien en een energiezuinige toestand ingaan kan energie besparen doordat de periode korter wordt waarin lekstroom en ander achtergrondvermogen worden verbruikt. Prestaties en energie-efficiëntie kunnen daardoor samen verbeteren.

Belangrijkste punten

  • Dynamisch vermogen schaalt met schakelactiviteit, capaciteit, spanning in het kwadraat en frequentie.
  • Een lagere spanning vermindert de energie per overgang en vereist meestal een aanpassing van de frequentie.
  • De energie voor een taak is het gemiddelde vermogen maal de duur; een uitvoering met hoger vermogen kan minder energie verbruiken.
  • Alleen de frequentie verlagen verandert de dynamische taakenergie bij een vast aantal overgangen niet.
  • Lekstroom veroorzaakt statisch vermogen en voedingsuitschakeling vermindert het verbruik in niet-actieve delen.
  • Lage benutting garandeert geen laag vermogen; energieproportionaliteit is een ontwerpdoel.

5.2 Waarom hogere klokfrequenties op een vermogensgrens stuitten

Decennialang brachten kleinere transistors zowel meer componenten als sneller schakelen binnen een beheersbaar warmtebudget. De vermogensgrens ontstond toen de spanning niet meer genoeg kon blijven dalen om dat patroon te ondersteunen. Daardoor veranderde de manier waarop ontwerpers nieuwe transistors omzetten in nuttige prestaties.

Het ideale verband van Dennard-schaling

In het ideale schalingsmodel dat Robert Dennard en collega's in 1974 ontwikkelden, beschrijft een factor k>1 de verkleining. Afmetingen, capaciteit, spanning en vertraging worden door die factor gedeeld. De frequentie kan met die factor worden vermenigvuldigd. Het dynamische vermogen per transistor verandert daardoor met:

1k×1k2×k=1k2.

Het oppervlak per transistor daalt ook met het kwadraat van de verkleiningsfactor. Op hetzelfde oppervlak passen zoveel meer transistors, wat het lagere vermogen per component compenseert. De vermogensdichtheid, watt per oppervlakte-eenheid, blijft in dit ideale model ongeveer constant.

Bij een factor 1,4 dalen capaciteit en spanning tot ongeveer 0,71 van hun oorspronkelijke waarde en stijgt de frequentie met factor 1,4. Het vermogen per transistor daalt tot ongeveer 0,51. Er passen ongeveer 1,96 keer zoveel transistors, zodat het totale vermogen op hetzelfde oppervlak ongeveer gelijk blijft.

Waarom de spanning de grootte niet meer volgde

Transistors hebben een bruikbare schakeldrempel nodig. Als de drempelspanning te ver wordt verlaagd, neemt de lekstroom sterk toe. Rond het midden van de jaren 2000 kon de voedingsspanning niet langer in hetzelfde tempo krimpen als de afmetingen van transistors. Bij een vrijwel vaste spanning verhoogt een hogere frequentie het dynamische vermogen en verhoogt het plaatsen van meer actieve transistors op een oppervlak de warmte die moet worden afgevoerd.

De historische cijfers laten de omvang van de eerdere verandering zien: klokfrequenties van desktopprocessors stegen van ongeveer 10 MHz begin jaren 1980 naar 3,8 GHz in 2004, terwijl voedingsspanningen daalden van ongeveer 5 V naar 1 V. Dit zijn globale historische waarden, geen universele specificaties. Ongeveer 100 W was al een moeilijk te koelen vermogensbudget voor veel gangbare ontwerpen uit die periode.

Intels annulering in 2004 van de geplande Pentium 4 van 4 GHz en het Tejas-ontwerp markeerde de omslag naar ontwerpen die rekening hielden met vermogen en naar twee kernen. Klokfrequenties bleven daarna in de orde van enkele gigahertz in plaats van de eerdere snelle stijging te volgen. De microarchitectuur bleef de prestaties van afzonderlijke kernen verbeteren, maar frequentieverhogingen leverden veel minder van de winst.

Beheer het thermische budget

Thermisch ontwerpvermogen (TDP) is een doelwaarde voor het thermische ontwerp die wordt gebruikt om een koeloplossing te dimensioneren onder gespecificeerde bedrijfsomstandigheden. Het is geen momentane vermogensmeting of universeel maximum. Wanneer thermische grenzen worden bereikt, verlaagt thermische snelheidsbegrenzing de werksnelheid om de warmte te verminderen.

Als een chip meer hardware bevat dan binnen het vermogensbudget tegelijk op volle snelheid kan draaien, moeten sommige delen worden vertraagd of uitgeschakeld. Niet gelijktijdig activeerbaar silicium duidt dit verschil aan tussen beschikbare transistors en actieve hardware die tegelijk kan worden gebruikt.

De wet van Moore en Dennard-schaling beschrijven verschillende trends: aantallen transistors tegenover schalingsgedrag waarbij rekening wordt gehouden met vermogen. Het wegvallen van dat laatste betekende niet dat de groei van het aantal transistors stopte. Het obstakel voor het onbeperkt verhogen van de frequentie is vooral vermogen en warmte, niet een plotseling onvermogen van transistors om nog sneller te schakelen.

Belangrijkste punten

  • Ideale Dennard-schaling verlaagde de spanning met de grootte van componenten en hield de vermogensdichtheid ongeveer constant.
  • Lekstroom en beperkingen van de schakeldrempel verhinderden dat de spanning ideaal bleef schalen.
  • Zonder bijpassende spanningsverlagingen verhogen hogere klokfrequenties en meer actieve componenten de vermogensdichtheid.
  • TDP stuurt het koelontwerp onder gespecificeerde omstandigheden; thermische snelheidsbegrenzing verlaagt de snelheid bij thermische grenzen.
  • Niet gelijktijdig activeerbaar silicium beschrijft hardware die niet allemaal tegelijk op volle snelheid actief kan zijn binnen het vermogensbudget.
  • De trend van Moore voor aantallen transistors staat los van het schalingsverband van Dennard.

5.3 Gebruik meer kernen binnen een vermogensbudget

Een multicoreprocessor plaatst meerdere kernen op één chip. Elke kern voert een instructiestroom uit, terwijl de kernen het hoofdgeheugen en vaak ook sommige caches delen. Gangbare desktop- en laptopontwerpen gingen rond 2005–2006 over op twee kernen, omdat het verhogen van de klokfrequentie van één kern steeds meer vermogen kostte.

Vergelijk twee langzamere kernen met één snellere kern

Bekijk één kern op 4 GHz en 1,2 V tegenover twee kernen op 3 GHz en 1,0 V. Houd de capaciteit per kern en de schakelactiviteit voor deze vergelijking gelijk. Het relatieve dynamische vermogen is:

2×(1,01,2)2×34≈1,04.

Bij evenveel werk per cyclus en genoeg onafhankelijk werk voor beide kernen verandert de ideale doorvoer met:

2×34=1,5.

Het paar biedt ongeveer 50% meer doorvoer voor ongeveer 4% meer dynamisch vermogen. Door het kwadratische effect van de spanningsverlaging is de extra kern in dit model betaalbaar. Statisch vermogen, beperkingen van het gedeelde geheugen en coördinatiekosten blijven van belang bij het beoordelen van een volledige chip.

Voor een sequentieel programma dat slechts één nieuwe kern gebruikt, dalen de prestaties tot drie kwart van de oorspronkelijke waarde bij evenveel werk per cyclus. Het duurt vier derde keer zo lang. De twee frequenties van 3 GHz samen “6 GHz” noemen zou die uitkomst verhullen: geen van beide kernen tikt op 6 GHz.

Software moet het werk beschikbaar maken

Vóór de vermogensgrens versnelden een hogere frequentie en overlap door hardware bestaande code vaak zonder grote veranderingen. Extra kernen hebben onafhankelijke instructiestromen nodig. Een programma profiteert daarvan door zijn werk in gelijktijdige taken te verdelen, de toewijzingen in evenwicht te brengen en resultaten te coördineren. Parallelle bibliotheken kunnen die structuur bieden, maar het werk moet nog steeds een bruikbare parallelle vorm hebben.

Parallellisme op instructieniveau laat instructies binnen een stroom overlappen met hardware- en compilertechnieken zoals pipelining en meervoudige instructie-uitgifte. Parallellisme op threadniveau voert verschillende threads uit op verschillende kernen. Dit zijn verschillende bronnen van gelijktijdigheid: de eerste garandeert niet dat een programma elke kern kan bezighouden.

Onafhankelijke serververzoeken leveren vanzelf veel stromen op, zodat multicoreverwerking de doorvoer kan verbeteren, ook als elk verzoek sequentieel blijft. Om de berekening van één verzoek te verkorten, is parallellisme binnen dat verzoek nodig. De sequentiële fractie daarvan legt dan de grens van Amdahl op.

Gebruik transistors voor efficiënt werk

Meer transistors kunnen grotere caches, meerdere algemene processorkernen of gespecialiseerde hardware ondersteunen. GPU's en domeinspecifieke hardwareversnellers richten zich op werklasten zoals grafische verwerking, machinaal leren en videocodering. Chips kunnen ook snelle kernen met hoog vermogen combineren met kleinere, efficiëntere kernen, zoals in de big.LITTLE-ontwerpen van Arm.

Binnen een vast vermogensbudget vergelijkt prestatie per watt de nuttige prestatie met het opgenomen vermogen. SPEC CPU 2026 ondersteunt naast prestatiemaatstaven ook energiemetingen. Een goede ontwerpbeslissing houdt rekening met de voltooiingstijd van de werklast, de energiekosten en het vermogen dat het systeem kan volhouden.

Belangrijkste punten

  • Multicorechips voeren meerdere instructiestromen uit op afzonderlijke kernen.
  • Lagere spanning en frequentie per kern kunnen de totale doorvoer binnen een vergelijkbaar budget voor dynamisch vermogen verbeteren.
  • Een sequentiële taak krijgt geen extra uitvoeringscapaciteit van ongebruikte kernen.
  • Overlap op instructieniveau en parallellisme op threadniveau zijn verschillende mechanismen.
  • Onafhankelijke verzoeken kunnen de systeemdoorvoer verbeteren zonder de rekentijd van elk verzoek te verminderen.
  • Gespecialiseerde hardware en hardware met verschillende soorten kernen bieden andere manieren om transistors efficiënt te gebruiken.

Computerprestaties: voorbeelden

5 Walkthroughs

1

Volg een berekening van code naar hardware

16 stappen
Volg een optelling door systeemlagen, vertaling en de interfaces waarmee verschillende processors compatibele software kunnen draaien.
  1. 1
    IntroductieEén optelling, meerdere weergaven

    De C-instructie total = price + tax; beschrijft een resultaat, maar vermeldt geen registers, instructiecoderingen of schakelingen. Die details bevinden zich in verschillende lagen, elk een abstractie die haar werk achter een interface verbergt.

    Volg de optelling naar beneden en vraag daarna wat moet overeenkomen om een binair bestand op een andere machine te draaien: de ISA en de bijbehorende conventies. Zo onderscheid je het gedrag waarop software vertrouwt van de hardwarekeuzes die de prestaties bepalen.

  2. 2
    UitlegEen interface verbergt intern werk

    Een abstractie biedt een nuttige dienst en verbergt de interne implementatie ervan. Een applicatie kan vragen een bestand te lezen zonder de opslagelektronica aan te sturen.

    Een gebruikelijk pad naar beneden is applicaties → systeemsoftware → ISA → microarchitectuur → digitale logica → schakelingen → transistors. Elke weergave maakt het systeem beheersbaar door een grens te bieden waarop een andere ontwerper kan werken.

  3. 3
    VoorbeeldWie kiest wat voor de optelling?

    Voor total = price + tax; kan de compiler registers en een optelinstructie kiezen. De compiler hoeft de poorten van de opteller niet te ontwerpen.

    De microarchitect kiest uitvoeringshardware; de logicaontwerper bouwt een opteller uit poorten; schakelingontwerpers houden zich bezig met elektrisch gedrag. Doordat aan de interfaces wordt voldaan, past elke keuze in de volledige berekening zonder elk onderliggend detail aan de programmeur te tonen.

  4. 4
    VerbandPlaats de fysieke onderdelen

    De vijf klassieke onderdelen zijn invoer, uitvoer, geheugen, datapad en besturingseenheid. De CPU combineert datapad en besturingseenheid: het ene onderdeel voert bewerkingen op gegevens uit, het andere stuurt het werk aan.

    DRAM vormt het werkgeheugen, SRAM levert kleine snelle caches en beide zijn vluchtig. Flashgeheugen en magnetische schijven behouden gegevens zonder stroom. Een besturingssysteem beheert deze bronnen als software die op de CPU draait.

  5. 5
    UitdagingBepaal welke laag is veranderd

    Een technicus vervangt de poorten in een opteller. De machine-instructies leveren nog steeds allemaal dezelfde vereiste resultaten. Heeft de technicus noodzakelijkerwijs de ISA veranderd? Leg uit.

    ---reveal---

    Nee. De technicus heeft de implementatie van de digitale logica veranderd. De ISA legt het zichtbare optelgedrag vast; verschillende poortschakelingen kunnen aan dezelfde specificatie voldoen. Ze kunnen toch verschillen in vertraging, vermogen of oppervlak.

  6. 6
    KernpuntMeer componenten leggen geen taaktijd vast

    Een transistor werkt als een elektrisch aangestuurde schakelaar en een chip integreert veel van zulke componenten. De wet van Moore beschrijft de historische trend waarbij het aantal transistors ongeveer elke twee jaar verdubbelde.

    Tien verdubbelingen geven in ongeveer 20 jaar een factor 1.024. Die productietrend, waarvan het tempo is vertraagd, legt niet vast hoe snel één programma draait. De extra componenten hebben nog steeds een nuttige organisatie en een haalbaar vermogensbudget nodig.

  7. 7
    UitlegBouw een uitvoerbaar bestand

    Een compiler vertaalt broncode in een hogere programmeertaal naar assembleertaal of objectcode. Een assembler codeert assembleertaal in een objectbestand. Een linker combineert objectbestanden en bibliotheekcode en lost verwijzingen ertussen op.

    De loader brengt vervolgens het uitvoerbare bestand onder in het geheugen en start het. Dit zijn afzonderlijke taken: in vertaalde code kan nog een bibliotheekverwijzing moeten worden opgelost voordat die het uitvoerbare bestand voor de uitvoering vormt.

  8. 8
    VoorbeeldKies registers en een instructie

    Stel dat price in x6 staat, tax in x7 en het resultaat in x5 moet komen. De optelling in C kan worden:

    add x5, x6, x7
    

    De bestemming staat vooraan in deze assembleersyntaxis. De instructie leest de twee bronregisters, telt hun waarden op en schrijft het resultaat naar de bestemming. De tekst is een symbolische instructie; de processor heeft de binaire codering ervan nodig.

  9. 9
    VoorbeeldCodeer dezelfde optelling

    De coderingsvelden van het R-type zijn, in de opgeslagen bitvolgorde:

    • funct7: 0000000
    • rs2: 00111
    • rs1: 00110
    • funct3: 000
    • rd: 00101
    • opcode: 0110011

    Samengevoegd coderen ze 0x007302B3. De bronregistervelden staan in de bitindeling vóór het doelveld, hoewel de bestemming in de assembleertekst vooraan staat. Door de veldposities kan hardware dezelfde bits consequent interpreteren.

  10. 10
    TipTel bewerkingen, geen broncoderegels

    Zelfs als operanden al in registers staan, heeft f = (g + h) - (i + j); twee optellingen en één aftrekking nodig. Laadinstructies komen erbij wanneer gegevens aanvankelijk in het geheugen staan.

    Een verkorte notatie in assembleertaal kan ook een vertaalstap verbergen: mv x5, x6 wordt addi x5, x6, 0. CPython interpreteert tussentijdse bytecode en Java gebruikt doorgaans JIT-compilatie, maar langs elke route voert de fysieke CPU uiteindelijk machine-instructies uit.

  11. 11
    UitdagingZoek een onopgeloste functie

    Assembleertaal is omgezet in objectcode, maar een aanroep verwijst nog naar een functie in een ander objectbestand. Welke stap handelt die verwijzing af en welke latere stap start het programma?

    ---reveal---

    De linker lost de verwijzing op terwijl die de objectbestanden combineert. De loader brengt later het resulterende uitvoerbare bestand onder in het geheugen en start het. Laden vervangt niet het vertalen en oplossen van verwijzingen uit de eerdere bouwstappen.

  12. 12
    UitlegScheid het contract van de implementatie

    De ISA legt instructies, coderingen, registers, adressering en ander zichtbaar machinegedrag vast. De microarchitectuur bepaalt interne pipelines, uitvoeringseenheden, caches en verwante structuren.

    Of vermenigvuldiging bestaat en welk resultaat die oplevert, zijn ISA-vragen. Of die vermenigvuldiging één cyclus of vier duurt, is een implementatievraag. Twee compatibele processors kunnen dus hetzelfde resultaat met verschillende snelheden berekenen.

  13. 13
    VerbandVoeg de binaire conventies toe

    De ABI voegt interfaces van het besturingssysteem en conventies zoals argumentregisters en gegevensindeling toe aan de ISA op gebruikersniveau. Een binair bestand heeft zowel de instructie-eigenschappen nodig die het gebruikt als een compatibele uitvoeringsomgeving.

    RISC-V biedt de basisinstructiesets RV32I en RV64I plus optionele uitbreidingen, waaronder M voor vermenigvuldiging en deling van gehele getallen en F en D voor drijvendekommagetallen. Alleen een gedeelde basis-ISA garandeert niet elke uitbreiding of ABI die een programma verwacht.

  14. 14
    UitdagingBepaal wat compatibiliteit werkelijk vereist

    Een binair bestand draait op een nieuwe machine met een andere cachegrootte, maar werkt niet op een andere machine die een gebruikte instructie-uitbreiding mist. Wat verklaart de verschillende uitkomsten?

    ---reveal---

    Cachegrootte is een implementatiekeuze die de snelheid kan beïnvloeden terwijl het vereiste ISA-gedrag behouden blijft. Door de ontbrekende uitbreiding ontbreekt instructieondersteuning die het binaire bestand nodig heeft. Voor hergebruik van een binair bestand zijn de relevante ISA-eigenschappen en ABI nodig; identieke caches maken geen deel uit van die eis.

  15. 15
    UitdagingBeoordeel de bewering over een uitgebreidere instructie

    Een voorgestelde ISA-instructie vervangt meerdere oudere instructies. De ontwerper beweert dat dit op zichzelf bewijst dat een programma sneller is op de nieuwe machine. Wat moet je nog meer vergelijken?

    ---reveal---

    Vergelijk het aantal uitgevoerde instructies, het gemiddelde aantal cycli per instructie en de klokperiode voor de volledige taak. De nieuwe instructie kan het aantal verminderen terwijl de cycli per instructie toenemen of een langere periode nodig is. Het vertaalvoordeel wordt pas prestatiewinst door het volledige tijdproduct.

  16. 16
    SamenvattingBekijk het hele pad

    Een expressie in de broncode wordt door vertaling en linken omgezet in instructies en draait daarna op hardware die een ISA implementeert. De ABI voegt de conventies toe die de omgeving van het uitvoerbare bestand nodig heeft.

    Gebruik dat pad om een verandering te plaatsen: codekeuzes veranderen de instructiestroom; implementatiekeuzes veranderen hoe die wordt uitgevoerd. Compatibiliteit gaat over vereist gedrag, terwijl prestaties afhangen van het werk en de timing in de lagere lagen.

2

Kies en interpreteer een prestatiemaat

12 stappen
Vergelijk de tijd van één taak met de systeemdoorvoer, lees daarna CPU-tijdmetingen en reken klokeenheden om.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieBepaal wat voltooiing betekent
  2. 2
    UitlegMeet één taak of een stroom
  3. 3
    VoorbeeldKeer de tijdverhouding om
  4. 4
    UitdagingKan dezelfde doorvoer dezelfde wachttijd betekenen?
  5. 5
    UitlegLees verstreken tijd, gebruikers- en systeemtijd
  6. 6
    KernpuntParallelle CPU-seconden tellen op
  7. 7
    VoorbeeldNeem het omgekeerde in seconden
  8. 8
    TipHoud decimale en binaire voorvoegsels gescheiden
  9. 9
    UitdagingLeid een klokperiode af
  10. 10
    TipBeschrijf een werkelijke uitvoering
  11. 11
    UitdagingVoorspel verstreken tijd na een CPU-upgrade
  12. 12
    SamenvattingKoppel de juiste eenheid aan de bewering
3

Maak en toets een voorspelling van CPU-tijd

21 stappen
Combineer cycli, instructiemix en klokfrequentie en controleer daarna of beweringen over prestaties voltooid werk beschrijven.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieDrie factoren vormen één uitvoeringstijd
  2. 2
    UitlegBegin met het cyclusbudget
  3. 3
    VoorbeeldBepaal het aantal cycli voordat je het ontwerp verandert
  4. 4
    VerbandDe klok kan niet sneller zijn dan de vereiste logica toelaat
  5. 5
    UitdagingIs de verhoging van de klokfrequentie genoeg?
  6. 6
    UitlegCPI is een naar uitvoering gewogen gemiddelde
  7. 7
    VoorbeeldWerk een instructiemix uit
  8. 8
    VoorbeeldEen langere stroom kan minder cycli kosten
  9. 9
    KernpuntEen gemiddelde onder één is mogelijk
  10. 10
    UitdagingBereken cycli en de omgekeerde snelheid
  11. 11
    UitlegReken instructies helemaal om naar tijd
  12. 12
    VoorbeeldVergelijk twee gelijke aantallen instructies
  13. 13
    VerbandBepaal welke ontwerpkeuze invloed heeft
  14. 14
    UitdagingBepaal een gemeten CPI
  15. 15
    UitlegKies de benchmarkmaatstaf
  16. 16
    VoorbeeldVermenigvuldig verhoudingen en neem dan de wortel
  17. 17
    UitdagingLees een doorvoerverhouding
  18. 18
    VoorbeeldControleer wat een hoog MIPS-resultaat beloont
  19. 19
    TipLees piekwaarden als capaciteit
  20. 20
    UitdagingCombineer de veranderingen in compiler en hardware
  21. 21
    SamenvattingToets de volledige bewering
4

Bepaal welk deel een versnellingsfactor begrenst

15 stappen
Gebruik tijdbudgetten om een lokale verbetering, een gewenste versnellingsfactor en parallelle uitvoering op meer kernen te beoordelen.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieHoud het onveranderde werk in het budget
  2. 2
    UitlegVerdeel de oorspronkelijke tijd voordat je versnelt
  3. 3
    VoorbeeldVersnel het deel met drijvendekommabewerkingen
  4. 4
    VoorbeeldReken terug vanuit de doeltijd
  5. 5
    KernpuntOnderzoek welk deel veel tijd kost
  6. 6
    UitdagingKies de betere verbetering
  7. 7
    UitlegGebruik kernen alleen voor parallelle tijd
  8. 8
    VoorbeeldVoeg veel kernen toe aan een taak die voor 95% parallel is
  9. 9
    UitlegDeel de versnellingsfactor door het aantal kernen voor de efficiëntie
  10. 10
    VoorbeeldVoltooiing wacht op de drukste kern
  11. 11
    UitdagingBepaal de beperking door het sequentiële deel
  12. 12
    VerbandVerander de vraag als het werk groeit
  13. 13
    UitdagingControleer of twee beweringen strijdig zijn
  14. 14
    UitdagingNeem CPU-werk en wachten op bestanden mee
  15. 15
    SamenvattingBepaal eerst de resterende tijd
5

Leg de vermogensgrens en de reactie met multicoreprocessors uit

19 stappen
Bereken dynamisch vermogen en energie, volg hoe ideale schaling wegviel en toets de winst van langzamere kernen.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductiePrestaties hebben een warmtebudget
  2. 2
    UitlegTel schakelen en lekstroom afzonderlijk mee
  3. 3
    VoorbeeldPas het kwadraat van de spanning toe
  4. 4
    VoorbeeldVergelijk energie voor een volledige taak
  5. 5
    KernpuntEen lagere frequentie neemt geen overgangen weg
  6. 6
    UitdagingHoud de statische component onveranderd
  7. 7
    UitlegDe ideale verkleining hield de vermogensdichtheid stabiel
  8. 8
    VoorbeeldControleer één ideale technologiegeneratie
  9. 9
    UitlegDe spanning kon de grootte niet blijven volgen
  10. 10
    VerbandZie thermische grenzen als bedrijfsbeperkingen
  11. 11
    UitdagingAnalyseer waarom schaling niet lukt
  12. 12
    UitlegMeer kernen bieden afzonderlijke stromen
  13. 13
    VoorbeeldBereken de dynamische vermogenskosten van twee langzamere kernen
  14. 14
    VoorbeeldVraag of de werklast beide kernen kan gebruiken
  15. 15
    VerbandOnderscheid overlap van instructies en threads
  16. 16
    VerbandGebruik gespecialiseerde hardware voor geschikt werk
  17. 17
    UitdagingKies een ontwerp voor onafhankelijk werk
  18. 18
    UitdagingCombineer vertraging, energie en voltooiingstijd
  19. 19
    SamenvattingStem het ontwerp af op het nuttige werk

Computerprestaties: oefenvragen

50 Oefenvragen in 5 sets

Set 1: Interpreteer werklasten, mixen en ontwerpwijzigingen10 Oefenvragen

Vraag 1 van 10

Een ontwerper verandert de poorten in een opteller terwijl elk voor de ISA zichtbaar resultaat gelijk blijft. Bij welke laag hoort de verandering op poortniveau?
  1. Applicaties
  2. Digitale logica
  3. Systeemsoftware
  4. ABI-conventies
Toon antwoordVerberg antwoord
Antwoord: B
Poorten en combinaties daarvan horen bij digitale logica. Een verandering van een opteller op poortniveau kan het gedrag behouden dat de bovenliggende ISA belooft. Het besturingssysteem biedt softwarediensten; het bepaalt niet hoe de poorten van de opteller zijn verbonden.

Vraag 2 van 10

Een compiler heeft al assembleertekst gegenereerd en het programma heeft nog een externe bibliotheekfunctie nodig. Wat zijn de volgende hoofdstappen voordat de uitvoering begint?
  1. Linken, compileren en dan laden
  2. Laden, assembleren en dan linken
  3. Assembleren, laden en dan linken
  4. Assembleren, linken en dan laden
Toon antwoordVerberg antwoord
Antwoord: D
De assembler codeert de assembleertaal tot objectcode, de linker lost de bibliotheekverwijzing op en de loader bereidt het uitvoerbare bestand voor op uitvoering. Laden vóór linken zou de beschreven bouw- en startvolgorde omkeren. In dit scenario heeft compilatie de assembleertaal al geproduceerd.

Vraag 3 van 10

Een uitvoering gebruikt vier kernen en rapporteert 2,0 s verstreken tijd met 6,8 s aan gecombineerde CPU-gebruikers- en CPU-systeemtijd. Wat laat die rapportage zien?
  1. Gemiddeld 3,4 kernen aan CPU-werk
  2. Een natuurkundig onmogelijk tijdresultaat
  3. Precies 4,8 s wachttijd voor opslag
  4. Een klokfrequentie van 3,4 GHz per actieve kern
Toon antwoordVerberg antwoord
Antwoord: A
CPU-tijd telt uitvoering over kernen op, dus 6,8 CPU-seconden tijdens 2,0 verstreken seconden is gemiddeld 3,4 kernen aan werk. Opgetelde CPU-tijd kan groter zijn dan verstreken tijd. Door deze totalen af te trekken kun je de wachttijd voor opslag niet vaststellen en hun verhouding is geen klokfrequentie.

Vraag 4 van 10

Een processor voltooit tijdens een uitvoering gemiddeld 2 instructies per cyclus. Wat is de bijbehorende CPI?
  1. 2,0
  2. 1,0
  3. 0,5
  4. 0,2
Toon antwoordVerberg antwoord
Antwoord: C
CPI en IPC zijn elkaars omgekeerde als ze dezelfde totale aantallen instructies en cycli gebruiken, dus de CPI is één gedeeld door twee, oftewel 0,5. De waarde 2,0 aanhouden zou instructies per cyclus verwarren met cycli per instructie. Overlappende uitvoering maakt een gemiddelde CPI onder één mogelijk.

Vraag 5 van 10

Op één processor met vaste frequentie kosten ALU-instructies 1 cyclus en geheugeninstructies 4. Bouwversie U voert 600 miljoen ALU- en 200 miljoen geheugeninstructies uit; bouwversie V voert 900 miljoen ALU- en 100 miljoen geheugeninstructies uit. Welke versie is het eerst klaar en met welke versnellingsfactor?
  1. V; ongeveer 1,077 keer zo snel
  2. U; ongeveer 1,250 keer zo snel
  3. V; ongeveer 1,400 keer zo snel
  4. U; ongeveer 1,077 keer zo snel
Toon antwoordVerberg antwoord
Antwoord: A
U heeft 600 plus 800, oftewel 1.400 miljoen cycli nodig; V heeft 900 plus 400, oftewel 1.300 miljoen nodig. Bij dezelfde klokfrequentie wint V met 1.400 gedeeld door 1.300, ongeveer 1,077. Het kleinere aantal instructies van U compenseert het grotere aandeel duur geheugenwerk niet.

Vraag 6 van 10

Drie programma's leveren genormaliseerde snelheidsverhoudingen van 1, 4 en 16 op. Welke score als meetkundig gemiddelde vat die samen?
  1. 7
  2. 8
  3. 4
  4. 16
Toon antwoordVerberg antwoord
Antwoord: C
Vermenigvuldig de verhoudingen om 64 te krijgen en neem daarna de derdemachtswortel omdat er drie programma's zijn. Het meetkundig gemiddelde is 4. Het rekenkundig gemiddelde is 7, maar rekenkundig middelen van genormaliseerde verhoudingen behoudt niet de referentieonafhankelijke vergelijking die voor scores van benchmarkverzamelingen wordt gebruikt.

Vraag 7 van 10

Een vaste taak duurt 160 s op één kern, waaronder 40 s die sequentieel moet blijven. Op acht kernen wordt het parallelle werk gelijkmatig verdeeld en voegt coördinatie na het werk 5 s toe. Wat zijn de totale versnellingsfactor en de parallelle efficiëntie?
  1. Ongeveer 2,91 en 36,4%
  2. Ongeveer 3,20 en 40,0%
  3. Ongeveer 2,67 en 66,7%
  4. Ongeveer 2,67 en 33,3%
Toon antwoordVerberg antwoord
Antwoord: D
Het sequentiële werk duurt 40 s en het parallelle werk duurt 120 gedeeld door 8, oftewel 15 s; met 5 s erbij geeft dat 60 s. De versnellingsfactor is 160 gedeeld door 60, ongeveer 2,67, en de efficiëntie is die waarde gedeeld door acht, ongeveer 33,3%. Als je de coördinatie weglaat, krijg je de te hoge versnellingsfactor 2,91.

Vraag 8 van 10

Welke verandering doorbrak het ideale schalingspatroon dat hogere klokfrequenties bij een ongeveer constante vermogensdichtheid mogelijk had gemaakt?
  1. Het aantal transistors op elke chip stopte met groeien
  2. De spanning daalde niet meer mee met de componentgrootte
  3. Klokperioden werden onafhankelijk van schakelingsvertraging
  4. Het aantal instructies werd vastgelegd door broncoderegels
Toon antwoordVerberg antwoord
Antwoord: B
Ideale Dennard-schaling berustte op spanning die samen met de afmetingen van componenten daalde. Beperkingen door drempelspanning en lekstroom verhinderden dat de spanning bleef dalen, zodat sneller schakelen de vermogensdichtheid verhoogde. Het aantal transistors kon nog steeds groeien; de vermogensgrens was niet hetzelfde als het einde van die groei.

Vraag 9 van 10

Een chip vervangt één kern van 3 GHz door vier kernen van 3 GHz met dezelfde prestatie per kern. Een volledig sequentiële taak had geen wachttijd in een wachtrij. Hoe beïnvloedt de verandering van het aantal kernen de rekentijd van die taak?
  1. Die wordt een kwart zo lang
  2. Die blijft gelijk op één kern
  3. Die wordt drie kwart zo lang
  4. Die wordt vier keer zo lang
Toon antwoordVerberg antwoord
Antwoord: B
De taak heeft geen werk dat op meerdere kernen tegelijk kan worden uitgevoerd en de prestatie per kern blijft gelijk. De taak kost daarom op één kern evenveel rekentijd. Vier kernen kunnen de doorvoer van onafhankelijke taken verbeteren, maar vormen voor deze taak samen geen klok van 12 GHz.

Vraag 10 van 10

Een processor voltooit 1,8 miljard instructies in 1,2 CPU-seconde en tellers registreren 3,6 miljard cycli. Een rapport vermeldt de processor als “3,6 GHz”. Welke CPI en effectieve gemiddelde frequentie beschrijven deze uitvoering?
  1. CPI 2,0 en 3,0 GHz
  2. CPI 1,5 en 3,6 GHz
  3. CPI 2,4 en 3,6 GHz
  4. CPI 2,0 en 4,32 GHz
Toon antwoordVerberg antwoord
Antwoord: A
Deel de getelde cycli door de getelde instructies om een CPI van 2,0 te krijgen. Deel dezelfde 3,6 miljard cycli door 1,2 CPU-seconde voor een effectief gemiddelde van 3,0 GHz. Met de opgegeven 3,6 GHz zou je 4,32 miljard cycli afleiden, wat in strijd is met het gemeten totale aantal cycli.
Set 2: Verbind de lagen en de belangrijkste prestatiematen10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een ontwikkelaar behandelt het lezen van een bestand als een dienst van het besturingssysteem zonder de opslagelektronica aan te sturen. Welk idee maakt die scheiding mogelijk?
  1. Compilatie naar een nieuwe instructieset
  2. Fysieke opslag toevoegen aan het hoofdgeheugen
  3. Abstractie via een vastgelegde interface
  4. Datapad en besturingslogica combineren
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een objectbestand roept een functie aan die in een afzonderlijk objectbestand is gedefinieerd. Welk hulpmiddel lost die verwijzing op bij het bouwen van het uitvoerbare bestand?
  1. De linker
  2. De compiler
  3. De assembler
  4. De loader
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een dienst voltooit 1.800 taken in 90 s. Wat is de doorvoer?
  1. 30 taken/s
  2. 0,05 taken/s
  3. 1.710 taken/s
  4. 20 taken/s
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Dezelfde conversie duurt 18 s op machine L en 12 s op machine M. Hoe verhouden de prestatie en uitvoeringstijd van M zich tot die van L?
  1. 1,5 keer de prestatie; 50,0% minder tijd
  2. 1,5 keer de prestatie; 33,3% minder tijd
  3. 0,67 keer de prestatie; 33,3% minder tijd
  4. 1,33 keer de prestatie; 25,0% minder tijd
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een tijdrapportage voor één thread vermeldt “real 4.4 s, user 2.7 s, sys 0.5 s.” Welke CPU-tijd wordt aan deze taak toegerekend?
  1. 4,4 s
  2. 3,2 s
  3. 2,7 s
  4. 1,2 s
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een taak gebruikt 7,5 miljard cycli bij een constante 2,5 GHz. Wat is de CPU-tijd?
  1. 3,0 s
  2. 0,3 s
  3. 5,0 s
  4. 18,75 s
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een programma voert 70% ALU-instructies uit die elk 1 cyclus kosten en 30% geheugeninstructies die elk 5 cycli kosten. Wat is de gemiddelde CPI?
  1. 3,0
  2. 1,8
  3. 2,5
  4. 2,2
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een taak voert oorspronkelijk 1,5 miljard instructies uit bij een CPI van 2,0 en 3 GHz. Nieuwe code voert 1,2 miljard instructies uit bij een CPI van 2,8. Welke constante klokfrequentie zou de nieuwe code 20% eerder laten eindigen dan de oorspronkelijke?
  1. 3,36 GHz
  2. 3,5 GHz
  3. 4,2 GHz
  4. 4,0 GHz
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een taak van 100 s besteedt 40 s aan een routine. De routine wordt vier keer zo snel en al het resterende werk blijft onveranderd. Wat is de nieuwe taaktijd?
  1. 25 s
  2. 85 s
  3. 70 s
  4. 60 s
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een CMOS-ontwerp verlaagt de spanning tot 90% en de frequentie tot 80% van hun vorige waarde, bij ongewijzigde capaciteit en activiteit. Welke fractie van het oorspronkelijke dynamische vermogen blijft over?
  1. 0,648
  2. 0,720
  3. 0,810
  4. 0,576
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Zoek knelpunten en vergelijk volledige ontwerpen10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Twee processors ondersteunen dezelfde ISA op gebruikersniveau en uitbreidingen, maar hun besturingssystemen gebruiken verschillende conventies voor systeemaanroepen en functieaanroepen. Waarom draait een binair bestand voor de ene omgeving niet gegarandeerd ongewijzigd in de andere?
  1. Hun ABI's verschillen ondanks de gedeelde ISA
  2. Hun cachegroottes moeten identiek zijn
  3. Hun ISA's moeten optellingen anders coderen
  4. Hun klokfrequenties moeten overeenkomen voor compatibiliteit
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een onveranderd deel van een taak kost 25% van de oorspronkelijke tijd. Welke totale versnellingsfactor wordt benaderd als alleen het resterende deel wordt versneld en de lokale versnellingsfactor onbegrensd groeit?
  1. 3
  2. 2,5
  3. 4
  4. 5
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een ontwerp heeft voor een programma 15% meer cycli nodig, maar verhoogt de klokfrequentie met 25%. Wat is de nieuwe CPU-tijd als fractie van de oude CPU-tijd?
  1. 0,80
  2. 1,10
  3. 1,4375
  4. 0,92
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

De periode van een klok wordt verkort van 625 ps naar 500 ps. Wat zijn de nieuwe frequentie en de procentuele stijging van de frequentie?
  1. 2,0 GHz; 20% hoger
  2. 2,0 GHz; 25% hoger
  3. 1,6 GHz; 25% hoger
  4. 1,6 GHz; 20% hoger
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Voor dezelfde taak op één processor rapporteert bouwversie H 2.000 MIPS en 0,9 CPU-seconde; bouwversie J rapporteert 1.500 MIPS en 0,8 CPU-seconde. Wat stelt deze vergelijking vast?
  1. H voert 33% meer instructies uit en is sneller
  2. H voert 50% meer instructies uit en is langzamer
  3. H voert 50% meer instructies uit en is sneller
  4. H voert 33% meer instructies uit en is langzamer
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een taak van 200 s besteedt 120 s aan een routine die kan worden versneld. Een ontwerper belooft een drievoudige totale versnellingsfactor door alleen die routine te veranderen. Hoe moet je die belofte beoordelen?
  1. Haalbaar; een drievoudige lokale versnellingsfactor haalt het doel
  2. Haalbaar; een zesvoudige lokale versnellingsfactor haalt het doel
  3. Alleen mogelijk als de tijd van de routine precies nul wordt
  4. Onmogelijk; de onveranderde 80 s is langer dan de doeltijd
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een programma bereikt een versnellingsfactor van 6 op 10 kernen. Wat is de parallelle efficiëntie?
  1. 60%
  2. 40%
  3. 67%
  4. 6%
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Bij een vaste spanning duurt een taak 2 s met 40 W dynamisch vermogen en 10 W statisch vermogen. De frequentie halveren verdubbelt de duur en halveert het dynamische vermogen, terwijl het statische vermogen 10 W blijft. Wat is de nieuwe totale taakenergie?
  1. 80 J, dat is 20 J minder
  2. 100 J, dat blijft gelijk
  3. 120 J, dat is 20 J meer
  4. 200 J, dat is 100 J meer
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Hoe veranderen het vermogen per transistor en de transistordichtheid bij een ideale Dennard-verkleining met een factor 2?
  1. Vermogen wordt de helft; dichtheid wordt tweevoudig
  2. Vermogen wordt een kwart; dichtheid wordt viervoudig
  3. Vermogen blijft gelijk; dichtheid wordt viervoudig
  4. Vermogen wordt een achtste; dichtheid wordt viervoudig
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Eén kern op 4 GHz en 1,2 V wordt vervangen door twee kernen op 3 GHz en 1,0 V, met gelijke capaciteit en activiteit per kern en evenveel werk per cyclus. Een werklast heeft op de oorspronkelijke kern een paralleliseerbare fractie van 80%. Hoe verhoudt de nieuwe voltooiingstijd zich zonder overhead tot de oude tijd?
  1. 0,67 keer zo lang
  2. 0,75 keer zo lang
  3. 0,80 keer zo lang
  4. 1,33 keer zo lang
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Analyseer beweringen en reconstrueer ontbrekende grootheden10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een applicatie produceert dezelfde resultaten op twee compatibele computers, maar geheugenintensief werk is op de ene veel langzamer. Hoe kan abstractie beide waarnemingen verklaren?
  1. Interfaces vereisen identieke hardware wanneer resultaten overeenkomen
  2. Verschillende tijden tonen dat de applicatie een andere ISA moet gebruiken
  3. Geheugenprestaties zijn vastgelegd door de specificatie van de hogere programmeertaal
  4. Interfaces behouden vereist gedrag terwijl ontwerpen van lagere lagen de tijd beïnvloeden
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

In RISC-V-assembleertaal kan mv x9, x10 worden geassembleerd als addi x9, x10, 0. Wat voor assembleerconstructie is mv hier?
  1. Een interface voor systeemaanroepen
  2. Een pseudo-instructie
  3. Een binair bestandsformaat
  4. Een klokcyclus van de hardware
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een taak met één thread rapporteert 9 s verstreken tijd, 5 s gebruikerstijd en 1 s systeemtijd. De ene upgrade verdubbelt de CPU-snelheid; een andere halveert de tijd buiten de CPU. Alle andere tijden blijven gelijk. Welke verstreken tijd volgt als beide upgrades worden toegepast?
  1. 4,5 s
  2. 3,0 s
  3. 4,0 s
  4. 6,0 s
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een processor van 2,4 GHz voert een taak uit in 5 s. Een vervangende processor heeft 30% meer cycli nodig en heeft een klokperiode van 250 ps. Wat zijn de CPU-tijd op de vervangende processor en de versnellingsfactor voor de taak?
  1. 3,0 s en ongeveer 1,67
  2. 6,5 s en ongeveer 0,77
  3. 3,9 s en ongeveer 1,28
  4. 3,9 s en ongeveer 0,78
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een programma gebruikt de RISC-V-uitbreiding M en een bepaalde ABI van het besturingssysteem. Een nieuwe machine ondersteunt dezelfde ABI-conventies maar alleen de basis-ISA RV64I. Welke extra rechtstreekse ondersteuning heeft het binaire bestand nodig?
  1. Een identieke cachecapaciteit op het eerste niveau
  2. Ondersteuning voor de instructies uit de M-uitbreiding
  3. Een klokfrequentie gelijk aan die van de oorspronkelijke machine
  4. Een compiler die precies evenveel instructies genereert
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Twee programma's duren 8 s en 32 s op X en 16 s en 18 s op Y. Hoe verhoudt X zich tot Y als je het meetkundig gemiddelde van hun snelheidsverhoudingen per programma gebruikt?
  1. X is ongeveer 1,281 keer zo snel
  2. Y is ongeveer 1,061 keer zo snel
  3. X is ongeveer 1,061 keer zo snel
  4. Y is ongeveer 1,176 keer zo snel
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een doorvoerbenchmark gebruikt een referentietijd van 240 s en voltooit zes exemplaren in een gemeten interval van 120 s. Wat is de doorvoerverhouding?
  1. 12
  2. 2
  3. 6
  4. 3
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een vaste taak bevat 10% sequentieel werk. Een ontwerper wil een ideale parallelle efficiëntie van minstens 50% op 16 kernen. Kan deze taak dat doel halen zonder de sequentiële fractie te veranderen?
  1. Ja; de ideale efficiëntie is ongeveer 64%
  2. Ja; de ideale efficiëntie is ongeveer 53%
  3. Nee; de ideale efficiëntie is slechts 10%
  4. Nee; de ideale efficiëntie is slechts 40%
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Uitvoering A gebruikt gemiddeld 24 W gedurende 2,5 s. Uitvoering B gebruikt 36 W gedurende 1,5 s voor dezelfde taak. Welke uitvoering gebruikt minder energie en hoeveel minder?
  1. A gebruikt 12 J minder
  2. B gebruikt 24 J minder
  3. B gebruikt 6 J minder
  4. A gebruikt 6 J minder
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een technologische verandering halveert de capaciteit en verviervoudigt de dichtheid van actieve componenten, maar de spanning kan niet dalen. Ontwerpers houden de frequentie en activiteit per component constant. Wat gebeurt er met het dynamische vermogen per oppervlakte-eenheid?
  1. Het blijft constant
  2. Het verdubbelt
  3. Het daalt tot de helft
  4. Het verviervoudigt
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 5: Combineer tijd, parallellisme en vermogensbudgetten10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Welke interface legt vast hoe een gecompileerde functie argumenten doorgeeft in registers?
  1. De instructiesetarchitectuur
  2. De binaire applicatie-interface
  3. De microarchitectuur van de processor
  4. De geheugenindeling van de loader
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een dienst heeft aanvankelijk één kern; elk sequentieel verzoek heeft 0,20 s rekentijd nodig. De dienst stapt over op vier kernen die elk 0,25 s per verzoek nodig hebben. Wat gebeurt er bij onafhankelijke verzoeken en zonder andere beperkingen met de maximale doorvoer en de rekentijd van elk verzoek?
  1. Doorvoer stijgt 4 keer; rekentijd daalt 75%
  2. Doorvoer stijgt 3,2 keer; rekentijd daalt 20%
  3. Doorvoer stijgt 3,2 keer; rekentijd stijgt 25%
  4. Doorvoer stijgt 5 keer; rekentijd stijgt 25%
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Vijf gecontroleerde metingen van verstreken tijd zijn 1,8 s, 1,9 s, 7,2 s, 2,0 s en 2,1 s. Welke mediaantijd vertegenwoordigt deze uitvoeringen?
  1. 2,0 s
  2. 1,9 s
  3. 3,0 s
  4. 2,1 s
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Bij een vaste klokfrequentie voert een programma 75% ALU-instructies uit die 1 cyclus kosten en 25% geheugeninstructies die 5 cycli kosten. Een optimalisatie laat de aantallen gelijk en halveert alleen de cycluskosten van de geheugenklasse. Welke totale CPU-versnellingsfactor volgt daaruit?
  1. Ongeveer 1,143
  2. Ongeveer 1,600
  3. Ongeveer 1,818
  4. Ongeveer 1,455
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een nieuwe compiler vermindert het aantal instructies met 20% en verhoogt de CPI met 25%. De klokfrequentie van de nieuwe hardware is 10% hoger. Wat is voor dezelfde taak de uiteindelijke versnellingsfactor?
  1. 1,00
  2. 1,125
  3. 1,10
  4. 1,375
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een chip verdubbelt het aantal identieke actieve kernen en verlaagt de frequentie per kern tot 75% van de oude waarde. Wat is bij ongewijzigde capaciteit en activiteit per kern de grootste spanningsverhouding waarbij het totale dynamische vermogen op of onder de oude waarde blijft?
  1. Ongeveer 0,667
  2. Ongeveer 0,866
  3. Ongeveer 0,943
  4. Ongeveer 0,816
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een taak van 180 s bevat 45 s die een verbetering niet kan veranderen. Welke lokale versnellingsfactor van het resterende werk is nodig om een drievoudige totale versnellingsfactor te bereiken?
  1. 9
  2. 3
  3. 6
  4. 12
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een geschaalde werklast op 20 kernen besteedt 10% van de gemeten tijd tijdens de parallelle uitvoering aan sequentieel werk. Welke geschaalde versnellingsfactor volgt volgens het model van Gustafson en kan die waarde worden gebruikt als de versnellingsfactor van Amdahl voor een onveranderde taak op één kern met een sequentiële fractie van 10%?
  1. 10,0; ja, beide modellen gebruiken dezelfde fractie
  2. 18,1; nee, de werklast en de basis van de fractie verschillen
  3. 18,1; ja, beide modellen beschrijven vast werk
  4. 6,90; nee, de werklast en de basis van de fractie verschillen
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een ontwerp heeft 50 W dynamisch vermogen en 20 W statisch vermogen. De frequentie blijft gelijk, de spanning daalt met 10% en het statische vermogen blijft 20 W. Wat is het nieuwe totale vermogen?
  1. 56,7 W
  2. 63,0 W
  3. 40,5 W
  4. 60,5 W
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een mediaserver vervangt één CPU-kern door vier kernen die elk conversies langzamer uitvoeren. Het ongewijzigde conversieprogramma gebruikt één CPU-thread. Waarom kunnen veel onafhankelijke conversies sneller na elkaar worden voltooid terwijl elke conversie langer duurt?
  1. Meer taken draaien tegelijk, terwijl elke taak één langzamere kern gebruikt.
  2. Elke taak combineert vier langzamere kernen tot één snellere instructiestroom.
  3. De nieuwe kernen verkorten de CPU-tijd van elke taak door sequentieel werk weg te nemen.
  4. De klokfrequenties van de vier kernen tellen bij elke conversie samen op.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

93 Kernbegrippen, elk met een definitie

A

Aanroepconventie
Een aanroepconventie is een ABI-regel voor communicatie tussen gecompileerde functies, waaronder waar argumenten en resultaten worden doorgegeven.
De aanroepconventie vertelt afzonderlijk gecompileerde functies welke registers hun binnenkomende argumenten bevatten.
Aantal uitgevoerde instructies
Het aantal uitgevoerde instructies is het aantal machine-instructies dat daadwerkelijk voor een taak wordt uitgevoerd, inclusief herhaalde lusiteraties.
Een compiler kan het aantal uitgevoerde instructies verhogen en tegelijk het totale aantal cycli verlagen door dure instructies te vervangen door goedkopere.
Abstractie
Een abstractie is een vereenvoudigde weergave die nuttig gedrag toont en details verbergt van hoe een onderdeel dat gedrag implementeert.
Een bestandsinterface van het besturingssysteem is een abstractie waarmee een applicatie gegevens kan opvragen zonder schijfschakelingen aan te sturen.
Achterwaartse compatibiliteit
Achterwaartse compatibiliteit is ondersteuning voor software die voor een eerdere interface of een eerder platform is gebouwd, binnen de ondersteunde omgeving van het nieuwere systeem.
Achterwaartse compatibiliteit kan oude binaire bestanden behouden terwijl interne processorontwerpen aanzienlijk veranderen.
Activiteitsfactor
Een activiteitsfactor drukt uit hoeveel capaciteit per klokcyclus schakelt volgens de telconventie die in een vermogensmodel wordt gebruikt.
Een verhouding van dynamisch vermogen waarbij de activiteitsfactor gelijk blijft, gaat ervan uit dat de schakelactiviteit vergelijkbaar blijft.
Assembleertaal
Assembleertaal is een symbolische tekstvorm van machine-instructies, met register- en bewerkingsnamen die mensen kunnen lezen.
De assembleerregel add x5, x6, x7 noemt een doelregister en twee bronregisters.
Assembler
Een assembler vertaalt symbolische assembleertaal naar coderingen van machine-instructies en produceert meestal een objectbestand.
De assembler zet add x5, x6, x7 om in de binaire codering en breidt ondersteunde pseudo-instructies uit.

B

Benchmark
Een benchmark is een vastgelegde programmawerklast waarmee de prestatie van een systeem wordt gemeten op werk dat is gekozen om een praktische behoefte te vertegenwoordigen.
Een benchmark die bij het gedrag van een applicatie past, geeft meer informatie dan een piekverwerkingssnelheid die geen verband houdt met die werklast.
Benchmarkverzameling
Een benchmarkverzameling is een verzameling werklasten waarmee meerdere aspecten van een systeem worden gemeten in plaats van op één programma te vertrouwen.
Een benchmarkverzameling kan verschillen blootleggen die één gunstig programma in een processorvergelijking zou verbergen.
Besturingseenheid
De besturingseenheid is het processoronderdeel dat bewerkingen van het datapad aanstuurt en geheugen, invoer en uitvoer volgens de instructies coördineert.
De besturingseenheid selecteert de bewerking en bestemming die nodig zijn wanneer de CPU een machine-instructie uitvoert.
Besturingssysteem
Een besturingssysteem is software die hardwarebronnen beheert en diensten biedt zodat programma's de computer veilig kunnen delen.
Het besturingssysteem plant een ander programma in terwijl een applicatie op een opslagbewerking wacht.
Binair voorvoegsel
Een binair voorvoegsel duidt een vermenigvuldigingsfactor aan die een macht van twee is, zoals KiB voor 1.024 bytes of GiB voor 1.073.741.824 bytes.
Het binaire voorvoegsel in KiB onderscheidt eenheden van 1.024 bytes van de decimale machten die in eenheden voor klokfrequentie worden gebruikt.
Binaire applicatie-interface
Een binaire applicatie-interface legt naast de ISA op gebruikersniveau ook binaire conventies en interfaces van het besturingssysteem vast.
Een overeenkomende binaire applicatie-interface zorgt ervoor dat een functieaanroep de argumentregisters kan gebruiken die de aangeroepen functie verwacht.
Bytecode
Bytecode is een tussenformaat voor instructies van een uitvoeringsomgeving voor een programmeertaal, die deze kan interpreteren of verder naar machinecode kan vertalen.
CPython compileert broncode naar bytecode voordat de interpreter de bijbehorende bewerkingen uitvoert.

C

Capacitieve belasting
Een capacitieve belasting is de elektrische capaciteit die een signaal moet laden en ontladen, bepaald door de componenten en verbindingen die het aanstuurt.
Een lagere capacitieve belasting verlaagt het dynamische vermogen wanneer spanning, frequentie en schakelactiviteit gelijk blijven.
CMOS
CMOS is de transistortechnologie die in moderne processors wordt gebruikt, met energiekosten door het schakelen van signalen en statische lekstroom.
Een schatting van CMOS-vermogen onderscheidt dynamisch schakelverbruik van verbruik dat zonder nuttige overgangen blijft bestaan.
Compiler
Een compiler vertaalt programmacode in een hogere programmeertaal naar een vorm op lager niveau, zoals assembleertaal of objectcode voor een doelmachine.
De compiler kiest registers en een optelinstructie bij het vertalen van een rekenkundige expressie.
CPU-gebruikerstijd
CPU-gebruikerstijd meet de processortijd die wordt besteed aan de eigen code van een programma op gebruikersniveau, zonder uitvoering door het besturingssysteem.
Een tijdmeethulpmiddel rapporteert CPU-gebruikerstijd afzonderlijk van de tijd besteed aan systeemdiensten die het programma heeft aangevraagd.
CPU-klokcycli
CPU-klokcycli zijn het totale aantal processortikken dat aan de uitvoering van een programma wordt toegerekend, inclusief de cycli die door de effectieve instructiekosten worden vereist.
Zes miljard CPU-klokcycli duren 2 s wanneer de gemeten klokfrequentie gedurende de hele uitvoering 3 GHz is.
CPU-prestatieformule
De CPU-prestatieformule legt het verband tussen CPU-tijd, aantal uitgevoerde instructies, gemiddelde CPI en klokperiode door de drie factoren te vermenigvuldigen.
De CPU-prestatieformule laat zien waarom een kleiner aantal instructies zijn voordeel kan verliezen wanneer de CPI stijgt.
CPU-systeemtijd
CPU-systeemtijd meet de processortijd die wordt besteed aan het uitvoeren van code van het besturingssysteem namens de taak waarvan de tijd wordt gemeten.
De CPU-tijd van een programma omvat CPU-systeemtijd die wordt gebruikt om verzoeken aan het besturingssysteem af te handelen.
CPU-tijd
CPU-tijd is de aan een taak toegerekende processoruitvoeringstijd, bestaande uit gebruikersuitvoering en systeemuitvoering namens de taak.
CPU-tijd die over meerdere bezige kernen wordt opgeteld, kan groter zijn dan de verstreken tijd van begin tot eind van de taak.
Cycli per instructie
Cycli per instructie is het totale aantal CPU-cycli gedeeld door het aantal uitgevoerde instructies tijdens een uitvoering, als gemiddelde van de effectieve kosten van die instructies.
Cycli per instructie stijgt wanneer dure geheugenwachtcycli een groter deel van de uitvoering van hetzelfde programma vormen.
Cyclusbudget
Een cyclusbudget is het totale aantal processorcycli dat voor een taak beschikbaar of vereist is bij een vastgesteld tijdsdoel.
Een processor van 4 GHz heeft een cyclusbudget van 36 miljard cycli als de taak binnen 9 s CPU-tijd moet zijn voltooid.

D

Datapad
Een datapad is het deel van een processor dat gegevens bewaart en erop werkt door bewerkingen uit te voeren die de besturingseenheid aanstuurt.
Het datapad telt twee registerwaarden op wanneer de besturingseenheid de machine aanstuurt om een optelling uit te voeren.
Dennard-schaling
Dennard-schaling is een ideaal model voor het schalen van componenten waarbij kleinere afmetingen en lagere spanning een hogere snelheid bij ongeveer constante vermogensdichtheid mogelijk maken.
Dennard-schaling gaat niet meer op wanneer de spanning niet genoeg daalt om het vermogen van meer actieve, snellere componenten te compenseren.
Doorvoer
Doorvoer is de hoeveelheid voltooid werk per tijdseenheid, zoals verzoeken per seconde of taken per uur.
Onafhankelijke taken op meer kernen uitvoeren kan de doorvoer verhogen terwijl de berekening van elke taak even lang duurt.
DRAM
DRAM is een vluchtige hoofdgeheugentechnologie die programma's en gegevens bewaart terwijl een computer draait; zonder stroom verliest DRAM zijn inhoud.
De werkgegevens van een programma kunnen in DRAM staan terwijl een opgeslagen bestand op niet-vluchtige opslag blijft staan.
Dynamisch vermogen
Dynamisch vermogen is het energieverbruik per tijdseenheid door schakelen, evenredig met activiteit, capaciteit, spanning in het kwadraat en frequentie.
Een spanningsverlaging van 10% bij ongewijzigde frequentie en activiteit verlaagt het dynamische vermogen tot 81% van de oude waarde.
Dynamische energie
Dynamische energie is energie die bij signaalovergangen wordt gebruikt en schaalt met de capacitieve belasting en het kwadraat van de voedingsspanning.
Bij dezelfde spanning gebruikt een vast aantal identieke overgangen dezelfde dynamische energie, ook als ze langzamer verlopen.
Dynamische spannings- en frequentieschaling
Dynamische spannings- en frequentieschaling (DVFS) past de spanning en werkfrequentie van een chip tijdens het gebruik samen aan.
DVFS kan de spanning verlagen voor een werkpunt met lagere frequentie wanneer de vereiste schakelsnelheid dat toestaat.

E

Effectieve gemiddelde frequentie
De effectieve gemiddelde frequentie voor een uitvoering is het aantal getelde CPU-cycli gedeeld door de bijbehorende CPU-uitvoeringstijd.
De effectieve gemiddelde frequentie houdt rekening met een uitvoering waarbij de frequentie wordt verhoogd of verlaagd in plaats van één opgegeven frequentie te gebruiken.
Energie
Energie is de opgetelde hoeveelheid die over een tijdsinterval wordt gebruikt, voor een taak berekend als gemiddeld vermogen vermenigvuldigd met de duur.
Een gemiddeld opgenomen vermogen van 20 W gedurende 3 s gebruikt 60 J energie, wat verschilt van het werkvermogen van 20 W.
Energieproportionaliteit
Energieproportionaliteit is het ontwerpdoel om het vermogensverbruik van een systeem te laten meegroeien met de hoeveelheid nuttig werk die het uitvoert.
Een server met hoog verbruik in niet-actieve toestand voldoet niet aan energieproportionaliteit, ook als de efficiëntie bij piekbelasting goed is.

G

Geïntegreerde schakeling
Een geïntegreerde schakeling is een chip met veel verbonden elektronische componenten, waaronder transistors, op een stuk halfgeleidermateriaal.
Eén geïntegreerde schakeling kan meerdere processorkernen, caches en andere ondersteunende hardware bevatten.
Gewogen gemiddelde
Een gewogen gemiddelde geeft elke waarde een bijdrage die evenredig is met haar gewicht, zoals de uitvoeringsfractie van een instructieklasse.
Bij de gewogen gemiddelde CPI telt een veelvoorkomende ALU-instructie zwaarder mee dan een zelden uitgevoerde klasse van voorwaardelijke sprongen.

H

Hardwareversneller
Een hardwareversneller is gespecialiseerde hardware die is ontworpen om een bepaalde klasse werk efficiënt uit te voeren in vergelijking met algemene verwerking.
Een videoversneller kan geschikte coderingswerkzaamheden verbeteren wanneer software dat werk naar de gespecialiseerde hardware leidt.
Heterogene processorkernen
Heterogene processorkernen zijn verschillende kernontwerpen binnen één processor, vaak een combinatie van snelle kernen met hoog vermogen en kleinere efficiënte kernen.
Een chip met heterogene processorkernen kan verschillend werk toewijzen aan kerntypen met verschillende prestaties en vermogenskosten.

I

Instructiemix
Een instructiemix is de verdeling van uitgevoerde instructies over klassen, waarmee de cycluskosten van elke klasse worden gewogen.
Een mix met veel dure laadinstructies kan een hogere CPI hebben dan een mix die vooral uit eenvoudige rekenkundige instructies bestaat.
Instructies per cyclus
Instructies per cyclus is het aantal uitgevoerde instructies gedeeld door het aantal CPU-cycli tijdens een uitvoering, het omgekeerde van de gemiddelde CPI.
Instructies per cyclus kan groter zijn dan één wanneer een processor genoeg instructies laat overlappen om er meerdere per cyclus te voltooien.
Instructiesetarchitectuur
Een instructiesetarchitectuur definieert de machine-instructies, registers, adressering en het gedrag die zichtbaar zijn voor software op laag niveau.
Twee verschillende processorontwerpen kunnen aan dezelfde instructiesetarchitectuur voldoen en toch verschillende tijden nodig hebben voor een taak.
Interpreter
Een interpreter is een programma dat bewerkingen in een andere programmaweergave leest en tijdens zijn eigen uitvoering uitvoert.
Een bytecode-interpreter voert machine-instructies uit om de bytecodebewerkingen die hij leest te implementeren.

J

Just-in-timecompilatie
Just-in-timecompilatie vertaalt code tijdens de uitvoering naar machine-instructies en richt zich vaak op veelgebruikte code.
Een virtuele Java-machine kan just-in-timecompilatie gebruiken nadat een veel uitgevoerde methode is herkend.

K

Klokfrequentie
De klokfrequentie is het aantal hardwareklokcycli per seconde, gemeten in hertz en vaak uitgedrukt in gigahertz.
Een klokfrequentie van 4 GHz levert vier miljard cycli per seconde, niet vier miljard voltooide instructies in de broncode.
Klokperiode
De klokperiode is de duur van één klokcyclus, gelijk aan het omgekeerde van de klokfrequentie wanneer de eenheden consistent zijn.
Een klokperiode van 250 ps komt overeen met 4 GHz omdat periode en frequentie elkaars omgekeerde zijn.
Kritiek pad
Een kritiek pad is het traagste vereiste logische pad tussen registers en begrenst hoe kort een veilige synchrone klokperiode kan zijn.
Minder werk langs het kritieke pad kan een kortere klokperiode mogelijk maken, al kan ook het aantal cycli veranderen.

L

Lekstroom
Lekstroom is stroom die loopt door transistors die in principe uitstaan en die bijdraagt aan statisch vermogen in een chip onder spanning.
Het verlagen van schakeldrempels kan de lekstroom verhogen, wat verdere verlaging van de voedingsspanning bemoeilijkt.
Linker
Een linker combineert objectbestanden en bibliotheekcode en lost verwijzingen op naar functies en gegevens die in afzonderlijke bestanden zijn gedefinieerd.
De linker verbindt een aanroep in het ene objectbestand met de bibliotheekfunctie die de implementatie ervan levert.
Loader
Een loader is een voorziening van het besturingssysteem die een uitvoerbaar bestand onderbrengt in het geheugen en voorbereidt om op de machine te starten.
Nadat een programma is gelinkt, richt de loader de geheugenindeling ervan in voordat de uitvoering begint.
Lokale versnellingsfactor
Een lokale versnellingsfactor is de factor waarmee een verbetering het beïnvloede deel versnelt, voordat rekening wordt gehouden met de rest van de taak.
Een lokale versnellingsfactor van vier deelt de oorspronkelijke beïnvloede tijd door vier en laat ander werk onveranderd.

M

Machinetaal
Machinetaal bestaat uit binair gecodeerde instructies die een processor volgens zijn instructiesetarchitectuur kan uitvoeren.
De hexadecimale waarde 0x007302B3 stelt een machinetaalcodering voor een RISC-V-optelling voor.
Meetkundig gemiddelde
Het meetkundig gemiddelde van positieve waarden is de wortel van hun product, waarbij de graad van de wortel gelijk is aan het aantal waarden.
Het meetkundig gemiddelde van genormaliseerde benchmarkverhoudingen houdt vergelijkingen tussen machines onafhankelijk van de referentiekeuze.
Microarchitectuur
Een microarchitectuur is de interne organisatie van hardware die een ISA implementeert, waaronder uitvoeringseenheden, pipelines en caches.
Een grotere cache verandert de microarchitectuur zonder noodzakelijkerwijs de instructiecoderingen te veranderen die een binair bestand gebruikt.
MIPS
MIPS is een snelheid in miljoenen uitgevoerde machine-instructies per seconde CPU-tijd en meet het nuttige werk van een taak niet rechtstreeks.
Een bouwversie kan een hogere MIPS-waarde hebben en toch later klaar zijn als die genoeg extra instructies voor dezelfde taak uitvoert.
Multicoreprocessor
Een multicoreprocessor bevat meerdere kernen op één chip die elk een eigen instructiestroom kunnen uitvoeren en tegelijk sommige bronnen delen.
Een multicoreprocessor kan onafhankelijke verzoeken gelijktijdig afhandelen zonder zijn kernen samen te voegen tot één snellere klok.

N

Niet gelijktijdig activeerbaar silicium
Niet gelijktijdig activeerbaar silicium beschrijft hardware op een chip die niet allemaal tegelijk op volle snelheid kan werken binnen het beschikbare vermogens- en warmtebudget.
Een chip kan sommige eenheden niet-actief laten omdat niet gelijktijdig activeerbaar silicium het gelijktijdige gebruik beperkt, ook al zijn de componenten op de chip aanwezig.

O

Objectbestand
Een objectbestand bevat vertaalde code en bijbehorende informatie die met andere bestanden kunnen worden gecombineerd om een uitvoerbaar bestand te bouwen.
Een objectbestand kan machine-instructies bevatten en toch nog verwijzen naar een functie die de linker moet oplossen.
Ongelijke werklastverdeling
Een ongelijke werklastverdeling is een ongelijke verdeling van parallel werk waardoor sommige processors wachten terwijl een andere zijn grotere aandeel afmaakt.
Als één kern 40 werkeenheden krijgt en de andere veel minder, bepaalt die kern door de ongelijke werklastverdeling wanneer de taak klaar is.

P

Paralleliseerbare fractie
De paralleliseerbare fractie in een Amdahl-analyse van een vaste taak is de fractie van de oorspronkelijke tijd op één kern die over kernen kan worden verdeeld.
Een paralleliseerbare fractie van 0,95 laat 5% van de oorspronkelijke tijd sequentieel, wat de winst van extra kernen begrenst.
Parallelle efficiëntie
Parallelle efficiëntie is de behaalde of voorspelde versnellingsfactor gedeeld door het aantal processors en drukt de winst uit ten opzichte van ideale lineaire versnelling.
Een versnellingsfactor van zes op acht kernen geeft een parallelle efficiëntie van 75%, ook al is de taak aanzienlijk sneller.
Parallellisme op instructieniveau
Parallellisme op instructieniveau laat bewerkingen binnen een instructiestroom overlappen en gebruikt hardware- en compilertechnieken om de uitvoeringssnelheid te verhogen.
Pipelining draagt bij aan parallellisme op instructieniveau zonder dat het programma voor elke bewerking een thread hoeft te maken.
Parallellisme op threadniveau
Parallellisme op threadniveau voert afzonderlijke software-instructiestromen gelijktijdig uit, zodat meerdere kernen aan de uitvoering kunnen bijdragen.
Een parallelle bibliotheek kan parallellisme op threadniveau beschikbaar maken, zodat onafhankelijke delen van één taak verschillende kernen gebruiken.
Piekverwerkingssnelheid
Een piekverwerkingssnelheid beschrijft een ideale maximale verwerkingscapaciteit onder gunstige omstandigheden, in plaats van een gemeten resultaat van een applicatie.
Een geheugenintensief programma kan veel minder bereiken dan de piekverwerkingssnelheid van een chip doordat de uitvoering op gegevens wacht.
Pipelining
Pipelining laat stappen van opeenvolgende instructies overlappen, zodat een processor werk sneller kan voltooien dan bij volledig sequentiële verwerking.
Pipelining kan de effectieve CPI verbeteren of een kortere klokperiode toestaan zonder de door de ISA beloofde resultaten te veranderen.
Prestatie
Voor een vaste taak is prestatie het omgekeerde van de uitvoeringstijd, zodat een kortere duur een grotere prestatiewaarde betekent.
De tijd voor dezelfde voltooide taak halveren verdubbelt de prestatie, mits het vergeleken werk onveranderd is.
Prestatie per watt
Prestatie per watt is de nuttige verwerkingsprestatie gedeeld door het opgenomen vermogen en drukt uit hoeveel prestatie een vermogensbudget ondersteunt.
Meer doorvoer bij vergelijkbaar vermogen verbetert de prestatie per watt wanneer beide resultaten hetzelfde soort nuttig werk beschrijven.
Prestatieprofilering
Prestatieprofilering meet hoe uitvoeringstijd of bijbehorende activiteit over delen van een programma is verdeeld om zinvolle verbeteringen te vinden.
Prestatieprofilering kan laten zien dat een bescheiden verbetering van een veelgebruikte routine meer tijd bespaart dan grote winst bij een zeldzame routine.
Prestatieteller
Een prestatieteller is een hardwarevoorziening die uitvoeringsgebeurtenissen, zoals cycli of instructies, over een gemeten interval telt.
Een prestatieteller registreert cycli die door het bijbehorende aantal instructies kunnen worden gedeeld om de CPI te schatten.
Pseudo-instructie
Een pseudo-instructie is een verkorte notatie in assembleertaal die een assembler uitbreidt tot één of meer echte machine-instructies.
mv x5, x6 in RISC-V is een pseudo-instructie die kan worden geïmplementeerd als addi x5, x6, 0.

R

Responstijd
Responstijd is de duur vanaf het begin van een taak tot de voltooiing ervan, inclusief relevante rekentijd, invoer, uitvoer en wachttijd.
Een gebruiker die op een conversieresultaat wacht, vindt de responstijd belangrijk, ook als de dienst veel andere taken voltooit.
RISC-V
RISC-V is een open instructiesetarchitectuur zonder licentievergoedingen, met basisinstructiesets voor gehele getallen en optionele standaarduitbreidingen voor instructies.
Een RISC-V-programma dat instructies voor vermenigvuldiging van gehele getallen gebruikt, heeft ondersteuning voor de betreffende uitbreiding nodig.

S

Sequentiële fractie
De sequentiële fractie is het aandeel van de uitvoeringstijd dat moet verlopen zonder verdeling over kernen, gemeten op de in het model aangegeven basis.
Amdahl gebruikt een oorspronkelijke sequentiële fractie op één kern, terwijl Gustafson de fractie tijdens de parallelle uitvoering gebruikt.
SPECrate
SPECrate is de SPEC CPU-maatstaffamilie die de doorvoer meet door meerdere exemplaren uit te voeren en het voltooide werk mee te tellen.
Een SPECrate-verhouding omvat naast de referentietijd gedeeld door het gemeten interval ook het aantal exemplaren.
SPECspeed
SPECspeed is de SPEC CPU-maatstaffamilie die de voltooiingstijd van één exemplaar van een benchmark meet; dat exemplaar kan meerdere threads gebruiken.
Een SPECspeed-resultaat gaat over de tijd van één programma-exemplaar en mag dus niet worden gelezen als de doorvoer van veel afzonderlijke exemplaren.
SRAM
SRAM is een vluchtige geheugentechnologie voor kleine, snelle opslagstructuren zoals caches dicht bij de uitvoeringshardware van de processor.
Een processor bewaart recent gebruikte gegevens in een SRAM-cache om de tijd voor toegang tot het hoofdgeheugen te verkorten.
Statisch vermogen
Statisch vermogen is verbruik dat zonder nuttige schakelactiviteit blijft bestaan doordat componenten onder spanning lekstroom doorlaten.
Statisch vermogen blijft tijdens een langere uitvoering bestaan, ook als een lagere frequentie het dynamische vermogen vermindert.
Sterke schaling
Sterke schaling meet hoe de uitvoeringstijd verandert met het aantal processors terwijl de totale probleemomvang gelijk blijft.
Een test van sterke schaling voert een simulatie van dezelfde omvang op meer kernen uit en meet hoeveel eerder die klaar is.
Systeemsoftware
Systeemsoftware biedt gedeelde diensten en ondersteuning voor het vertalen van programma's, waaronder besturingssystemen, compilers, linkers en bibliotheken.
Een applicatie vertrouwt op systeemsoftware om geheugen toe te wijzen en uitvoerbare code voor de processor voor te bereiden.

T

Thermisch ontwerpvermogen
Thermisch ontwerpvermogen is een doelwaarde voor het thermische ontwerp waarmee onder gespecificeerde bedrijfsomstandigheden koeling wordt gekozen, geen momentane vermogensmeting.
Bij koeling die op het thermisch ontwerpvermogen is ontworpen, moet rekening worden gehouden met de gespecificeerde bedrijfsomstandigheden van de processor.
Thermische snelheidsbegrenzing
Thermische snelheidsbegrenzing verlaagt de werksnelheid van een processor wanneer de temperatuur grenzen bereikt en helpt de chip zo de warmteproductie te beheersen.
Thermische snelheidsbegrenzing kan de CPU-tijd verlengen door de effectieve klokfrequentie tijdens een langdurige werklast te verlagen.
Transistor
Een transistor is een elektrisch aangestuurde component die als schakelaar werkt en de schakelingen ondersteunt waarmee digitale logica wordt gebouwd.
Veel transistors werken samen in een schakeling die een opteller in een processor implementeert.

U

Uitvoerbaar bestand
Een uitvoerbaar bestand is een programmabestand dat is voorbereid voor een bepaalde machine en besturingssysteemomgeving en dat de loader kan starten.
De linker produceert een uitvoerbaar bestand na het combineren van objectcode en het oplossen van de vereiste verwijzingen.

V

Vermogen
Vermogen is het energieverbruik per tijdseenheid, gemeten in watt, waarbij één watt gelijk is aan één joule per seconde.
Een hoger opgenomen vermogen kan toch minder taakenergie gebruiken wanneer het programma voldoende eerder klaar is.
Vermogensdichtheid
Vermogensdichtheid is het afgevoerde vermogen per oppervlakte-eenheid, bij chips vaak uitgedrukt in watt per vierkante millimeter.
Meer actieve transistors op hetzelfde oppervlak kunnen de vermogensdichtheid verhogen, tenzij het vermogen per component genoeg daalt.
Vermogensgrens
De vermogensgrens is de beperking van verdere groei van de klokfrequentie door het vermogensverbruik en de warmte die een praktisch systeem kan afvoeren.
De vermogensgrens stimuleerde ontwerpers om extra transistors voor meerdere kernen te gebruiken in plaats van voor steeds hogere klokfrequenties.
Versnelbare fractie
De versnelbare fractie is het aandeel van de oorspronkelijke uitvoeringstijd dat wordt besteed aan werk dat een voorgestelde verbetering kan versnellen.
Geheugenbewerkingen kunnen een versnelbare fractie van 60% van de tijd hebben terwijl ze slechts 30% van de instructies vormen.
Versnellingsfactor
Een versnellingsfactor is de verhouding tussen een oorspronkelijke uitvoeringstijd en de nieuwe uitvoeringstijd voor dezelfde taak na een verandering.
Een versnellingsfactor van 1,25 betekent dat de nieuwe tijd 80% van de oude tijd is, een vermindering van de duur met 20%.
Verstreken tijd
Verstreken tijd is de wandkloktijd van begin tot eind van een uitvoering, inclusief CPU-werk, wachttijd en vertraging door de procesplanning.
Wachten op een bestand kan de verstreken tijd verhogen zonder een even grote hoeveelheid CPU-uitvoering aan de taak toe te voegen.
Voedingsuitschakeling
Voedingsuitschakeling koppelt de voeding van een niet-actief hardwaredeel los om lekstroom te verminderen, in plaats van dat deel alleen ongebruikt te laten.
Een chip gebruikt voedingsuitschakeling nadat een taak klaar is, zodat niet-actieve schakelingen minder statisch vermogen opnemen.

W

Wet van Amdahl
De wet van Amdahl legt het verband tussen de totale versnellingsfactor, de verbeterde fractie van de oorspronkelijke tijd en de lokale versnellingsfactor, waarbij de onbeïnvloede tijd gelijk blijft.
De wet van Amdahl verklaart waarom een routine drie keer zo snel maken minder dan een drievoudige verbetering voor de hele taak geeft.
Wet van Gustafson
De wet van Gustafson modelleert de geschaalde versnellingsfactor wanneer parallel werk met het aantal processors groeit terwijl de sequentiële tijd in het model gelijk blijft.
De wet van Gustafson gebruikt een sequentiële fractie die tijdens de parallelle uitvoering is gemeten, anders dan de fractie in een Amdahl-analyse van een vaste taak.
Wet van Moore
De wet van Moore is de historische productietrend waarbij het aantal transistors op een chip ongeveer elke twee jaar verdubbelde.
Tien verdubbelingen volgens de wet van Moore zouden het aantal transistors met 1.024 vermenigvuldigen, zonder dezelfde versnellingsfactor te garanderen.

Z

Zwakke schaling
Zwakke schaling laat de totale probleemomvang evenredig met het aantal processors groeien, zodat de hoeveelheid werk per processor ongeveer gelijk blijft.
Een onderzoek naar zwakke schaling breidt de simulatie uit wanneer meer processors beschikbaar komen en houdt het werk per processor vergelijkbaar.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag