Hoofdstuk 1: computer abstractions and technology Flashcards

1
Q

Personal computers +

A

Een computer dat ontworpen is om gebruikt te worden door 1 individu, het bevat vaak een muis, toetsenbord en scherm.

  • Personal computers is 1 van de klassen van computers. De andere twee klassen zijn servers en embedded computers.
  • willen goede performantie aanbieden aan 1 gebruiker tegen een zo laag mogelijke kost. - – voeren meestal software uit geleverd door derden.
  • evolutie in computerarchitectuur vaak gedreven door deze klasse
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Servers +

A

Een computer dat gebruikt wordt om grotere programma’s te runnen voor meerdere gebruikers, vaak tegelijkertijd.

  • Servers is 1 van de klassen van computers. De andere twee klassen zijn personal computers en embedded computers.
  • vroeger waren dit mainframes, minicomputers en supercomputers
  • meestal enkel toegankelijk via netwerk
  • draaien zware workloads (soms aparte zware toepassingen of soms vele kleinere jobs)
  • draaien externe software, aangepast aan de functie
  • gebouwd uit zelfde basistechnologie als desktop computers, maar zijn voorzien op uitbreidbaarheid en grote input / output capaciteit en grotere nadruk op betrouwbaarheid (omdat crash meer kost dan voor een single-user PC)
  • overspannen groot bereik in kost en mogelijkheden (van niet veel meer dan een desktop tot een supercomputer tot datacenters)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Supercomputer

A

Een klasse van computers met de hoogste performantie en kost. Ze zijn geconfigureerd als servers en kosten vaak 10 to 100 miljoen dollars.

  • bevatten 100 tot duizenden processoren en terabytes geheugen
  • pentabytes opslagcapaciteit
  • gebruikt voor number crunching toepassingen (wetenschappelijke en technische calculaties)
  • slechts fractie van computermarkt
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Embedded computers

A

Een computer in een apparaat dat gebruikt wordt voor het runnen van een voorafbepaalde toepassing of verzameling van software.

  • Embedded computers is 1 van de klassen van computers. De andere twee klassen zijn personal computers en servers.
  • grootste klasse van computers
  • groot bereik van soorten van applicaties en performantie
  • meestal vast gebakken programma of klein aantal programma’s
  • zowel in massa productie als in niche markten
  • veel mensen weten niet dat dit ook computer zijn
  • groei in embedded computer markt is en blijft groot
  • Embedded applicaties hebben vaak speciale vereisten:
    1. kleine performantie-eisen
    2. beperkingen op kost (zo goedkoop mogelijk)
    3. beperkingen op energieverbruik
    4. hoge betrouwbaarheidseisen
  • vaak gebouwd uit processor cores (gewone processor core met extra functionaliteit)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Defining performance

A

Veel factoren samen bepalen de performantie. De performantie van programma’s is van groot belang. Het is belangrijk op performantie goed te definiëren zodat we kunnen zeggen wanneer een computer performanter is dan een andere.

Voor het definiëren van performantie hebben we verschillende criteria.

  • Voor een desktop ben je geïnteresseerd in hoe snel een taak wordt uitgevoerd. Hier is dus de response time (= uitvoeringstijd, = execution time) van belang. (zie def. andere kaart).
  • Voor een rekencentrum ben je geïnteresseerd in hoeveel jobs je tegelijk kan uitvoeren. Hier is dus de throughput (= doorvoer) van belang.

In het geval van computers willen we dus om performantie te maximaliseren, de response time minimaliseren. Klassiek definieert men performantie als: performantie_x = 1 / uitvoeringstijd_x.

Tijd wordt gebruikt als de maatstaaf voor computerperformantie. De uitvoeringstijd van een programma wordt gemeten in seconde per programma. Er zijn echter verschillende termen en metrieken voor tijd. (elapsed time, CPU time). System performance refers to elapsed time and CPU performance refers to user CPU time.

(Upgraden van processor -> uitvoeringstijd verbetert,
kopen van extra computer -> doorvoer verbetert)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Algorithm: influence on performance equation

A

Het soort algoritme heeft een invloed op de instruction count en de CPI.

Het bepaalt namelijk het aantal instructies rechtstreeks en kan ook invloed hebben op het soort instructies (meer delingen of meer optellingen en aftrekkingen).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Compiler: influence on performance equation

A

De compiler heeft invloed op de de instruction count en de CPI.

Een compiler kan bepaalde stukken code die eigenlijk niet nodig zijn niet uitvoeren en kan de volgorde van instructies aanpassen om stalls te vermijden en zo een lagere CPI te verkrijgen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Programming language: influence on performance equation

A

De programming language heeft invloed op de instruction count en de CPI.

Een hogere programmeertaal leidt gemiddeld tot meer instructies en tot gemiddelde hogere CPI.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wet van Moore

A

In computerarchitectuur moet je anticiperen op vooruitgang. De wet van Moore zegt dat het aantal transistoren op een chip elke 18-24 maand verdubbelt, wat telkens veel meer mogelijkheden geeft. Computer designs kunnen vaak jaren nemen, en dus moeten computerarchitecten vaak anticiperen waar de technologie zal staan wanneer hun design af is.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Eight great ideas in computer architecture +

A
  1. Ontwerp voor de wet van Moore
  2. Gebruik abstractie om design te versimpelen.
    - abstracties helpen om details te verbergen
  3. Maak the common case snel
  4. Peformantie via parallelisme
    - meerdere dingen tegelijk doen
  5. Performantie via pipelining
    - principe van lopende band (vorm van parallelisme)
  6. Performance via prediction
    - In plaats van te wachten: anticiperen
  7. Hierarchy of memories
    - willen graag snel, groot en goedkoop geheugen, we creëren deze illusie via een geheugenhiërarchie
    - we plaatsen het snelste, kleinste en duurste geheugen per bit bovenaan en het traagste, grootste en goedkoopste onderaan.
  8. Betrouwbaarheid via redundantie
    - ontwerpen wetende dat we kunnen falen, we maken systemen betrouwbaar door redundante elementen toe te voegen die kunnen overnemen wanneer een component faalt en die falingen kunnen detecteren
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Software as a Service (SaaS)

A

We zitten in het post-PC tijdperk waar we in plaats van servers cloud computing gebruiken. Cloud computing is afhankelijk van gigantische datacenters. De bedrijven die deze centers gebouwd hebben verhuren delen hiervan aan andere bedrijven. Door cloud computing is er een heel andere software business opgekomen: Software as a Service (SaaS). SaaS levert software en data als een service over het internet, vaak via een dun programma zoals een browser die draait op lokale client devices, ipv binaire code die geïnstalleerd moet zijn en volledig op dat apparaat draait.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Systeemsoftware +

A

Systeemsoftware bestaat o.a. uit

  • het besturingssysteem (zie def andere kaart)
  • compiler (zie def andere kaart)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Besturingssysteem

A

= operating system / OS
Het besturingssysteem is een deel van de systeemsoftware. Een besturingssysteem zorgt voor een interface tussen het programma van de gebruiker en de hardware. Het biedt een variëteit van diensten en functies aan.
- verwerken van input en output operaties
- toewijzen / verdelen van opslag en geheugen
- het mogelijk maken dat meerdere applicaties de processor delen
(vb. Linux, Windows)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Cloud computing

A

Cloud computing heeft de conventionele server vervangen. Cloud computing is afhankelijk van gigantische datatacenters, Warehouse scale computers (WSCs). Bedrijven zoals Amazon en Google hebben deze WSCs die 100 000 servers bevatten, gebouwd en verhuren delen aan andere bedrijven. Zo kunnen deze bedrijven software services aanbieden aan personal mobile devices (deze hebben de PCs vervangen) bv. via internet zonder zelf WSCs te bouwen. De software developers van vandaag hebben vaak een deel van hun applicatie dat op het PMD draait en een deel dat in de Cloud draait.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Compilers +

A

Een compiler is een deel van de systeemsoftware. Compilers vertalen programma’s geschreven in hogere programmeertaal naar instructies die de hardware kan uitvoeren (assembly language statements). Deze translaties is complex. (zie uitgebreide def hfdstk 2)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Assembler +

A

Een programma dat de symbolische versie van instructies vertaalt naar binaire getallen. (zie hfdstk 2 voor uitgebreide def)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Assembly language

A

Een symbolische representatie van machine-instructies.
Vroeger communiceerden programmeurs met computers in binaire getallen, maar dit was niet ideaal en dus vond men nieuwe notaties uit die dichter lagen bij de manier waarop mensen denken. Men bedacht daarom een programma, assembler dat een symbolische versie van instructies vertaalt naar binaire getallen.
Assembly language is dus al een grote verbetering, maar het vereist de programmeur om 1 lijn te schrijven voor iedere instructie dat de computer moet volgen, waardoor de programmeur geforceerd wordt om gelijk de computer te denken. Deze taal is dus niet handig voor complexe systeemsoftware en hierdoor zijn dus hogere programmeertalen en compilers ontstaan.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Machine language

A

Een binaire representatie van machine instructies. Dit is de taal die de machine verstaat. (HLL -> assembly language -> machine language).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

High-level programming language (HLL)

A

Een draagbare taal zoals C++ of Java dat is samengesteld uit worden en algebraïsche notaties. Deze taal kan vertaald worden in assembly language door de compiler. De assembly language wordt op zijn beurt vertaalt in machine language (een taal die de machine verstaat) door de assembler.

Voordelen van HLL:

  • programmeurs kunnen in een meer natuurlijke taal denken
  • talen kunnen specifiek ontworpen worden voor hun beoogde gebruik
  • betere productiviteit: beknopter, leesbaarder, aanpasbaarder
  • onafhankelijk van computer (compilers vertalen naar bepaalde machinetaal)

Nog maar weinig wordt in assembly language geschreven doordat HLL zoveel voordelen biedt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Basisfuncties van een computer? +

A
  • input van gegevens
  • verwerking van gegevens
  • output van gegevens
  • opslag van gegevens
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

5 basiscomponenten van een computer? +

A
  • input
  • output
  • geheugen
  • datapad
  • controle
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Input device

A

Dit is een basiscomponent van de computer. Dit is elk apparaat waarmee gegevens in een computer kunnen worden ingevoerd (bv. een toetsenbord).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Output device

A

Dit is een basiscomponent van de computer. Dit is elk apparaat dat informatie omzet in door mensen leesbare / zienbare / hoorbare vorm. Het leest gegevens van het geheugen. (bv. luidsprekers)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

CPU / Processor +

A

CPU = central processor unit
Een processor krijgt instructies en gegevens van geheugen en het volgt dus deze instructies. Het is een combinatie van datapad (doet rekenwerk) en controle (zegt wat er moet gebeuren).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Controle +

A

Dit is een basiscomponent van de computer. Het stuurt de signalen die de operaties bepalen van datapad, geheugen, input en output.

26
Q

Datapad +

A

Dit is een basiscomponent van de computer. Het voert de rekenkundige bewerkingen uit.

27
Q

Chip / integrated circuit +

A

Een apparaat dat tientallen tot miljoenen transistoren combineert.

28
Q

Geheugen +

A

Dit is een basiscomponent van de computer. Dit is waar de programma’s verblijven terwijl ze worden uitgevoerd en het bevat ook de gegevens van de programma’s. Het geheugen is opgebouwd uit DRAM (Dynamic Random Access Memory) chips.

29
Q

DRAM +

A

= dynamic random access memory, memory built as an integrated circuit; it provides random access to any location.

Dram is voltatiel en is het hoofdgeheugen. Meerdere DRAMs worden gebruikt om de instructies en data van het programma te omvatten.

RAM betekent dat de geheugentoegangen dezelfde tijd nemen ongeacht welk deel van het geheugen wordt gelezen.

30
Q

Cache memory +

A

Geheugen in de processor en soms ook in het moederbord. Het is snel en klein. Het fungeert als een buffer voor DRAM. Het wordt opgebouwd uit SRAM (static random access memory), dit is sneller, maar duurder dan DRAM.

31
Q

Instruction Set Architecture (ISA)

A

Abstractie is zeer belangrijk om ontwerpen te verbeteren, ISA is een van de meest belangrijke abstracties.
Het is een interface tussen de hardware en het laagste niveau van software. Het bevat alles wat een assembler programmeur moet weten om ervoor te zorgen dat het binaire machine taal programma werkt (dus instructieset, registers, I/O devices, geheugentoegang,…) zodat de programmeurs zich geen zorgen hoeven te maken over zulke details.

De ISA laat toe om te spreken over functies zonder iets te weten van de implementatie. Voor dezelfde ISA kunnen meerdere implementaties bestaan die elk verschillen in kost en performantie en die nog steeds dezelfde software uitvoeren.

32
Q

Application Binary Interface

A

Combinatie van basis instructie set en besturingssysteem interface dat aangeboden wordt aan programmeurs.

33
Q

Volatile memory VS nonvolatile memory +

A

Volatiel geheugen houdt enkel data bij als het stroom heeft. Als er geen stroom is, dan is de inhoud van het geheugen verloren. (bv. DRAM) –> primair geheugen (wordt gebruikt om programma’s op te slaan terwijl ze draaien)

Niet-volatiel geheugen houdt ook data bij zelfs al is er geen stroom. Het wordt gebruikt om programma’s bij te houden tussen runs. (bv. DVD player) –> secundair geheugen (wordt gebruikt om programma’s en data op te slaan tussen runs)

34
Q

Magnetic disks +

A

Niet-volatiel secundair geheugen. Het is trager dan DRAM geheugen, maar wel goedkoper.

35
Q

Flash memory +

A

Niet-volatiel secundair geheugen dat standaard gebruikt wordt voor PDMs. Het is trager en goedkoper dan DRAM en duurder, kleiner en energie-efficienter dan disk.

36
Q

Voordelen van computers die met elkaar verbonden zijn? +

A
  • communicatie: informatie-uitwisseling
  • resource sharing: bepaalde devices kunnen gedeeld worden
  • niet-locale toegang: gebruikers moeten niet dicht bij de computer zijn die ze gebruiken.
    (vb. Ethernet)
37
Q

Throughput

A

= bandwidth
Dit is een andere maatstaf van performantie. Het is het aantal taken uitgevoerd per tijdseenheid.

Rekencentrums zijn vaak hierin geïnteresseerd want ze willen zoveel mogelijk jobs kunnen uitvoeren per tijdseenheid.

38
Q

Bandwidth

A

= throughput
Dit is een andere maatstaf van performantie. Het is het aantal taken uitgevoerd per tijdseenheid.

Rekencentrums zijn vaak hierin geïnteresseerd want ze willen zoveel mogelijk jobs kunnen uitvoeren per tijdseenheid.

39
Q

Elapsed time +

A

= response time. Dit is de totale tijd die nodig is om een taak uit te voeren. Hier telt alles mee, het geeft weer hoe lang je moet wachten op een resultaat:
- wachten op I/O
- geheugentoegangen
- disk toegangen
- andere programma’s
Dit is niet zo interessant als we meer willen te weten komen over de performantie van een programma.

40
Q

CPU time +

A

De tijd die de CPU (processor) spendeert aan het uitvoeren van een bepaalde taak. De tijd die men spendeert aan het wachten op I/O en het runnen van andere programma’s is niet inbegrepen.

CPU time wordt opgedeeld in user en system CPU time.

41
Q

User CPU time

A

De CPU time die gespendeerd wordt in het programma zelf.

zie def. CPU time op andere kaart

42
Q

System CPU time

A

De CPU time die gespendeerd wordt in het besturingssysteem aan het uitvoeren van taken names het programma.

43
Q

Clock cycle

A

Hedendaagse computers hebben een klok die tikt aan een constant tempo die aanduidt wanneer er iets gebeurt in de hardware. De tijd wordt dan vaak weergegeven in aantal klokcycli i.p.v. seconden. De klok ‘ticks’ geven de start aan van sommige activiteiten in de CPU. Een clock cycle is dan de tijd tussen 2 ticks.

44
Q

Clock period

A

de lengte van elke klokcyclus (in seconde)

45
Q

Clock rate

A

Aantal klokcycli per seconde (in Hz)

46
Q

Clock cycle time

A

De tijd van elke klokcyclus

47
Q

CPI

A

= klokcycli per instructie.

De tijd die een instructie in een beslag neemt, verschilt van instructie op instructie en hangt erg af van implementatie en de gebruikte instructie mix. CPI is het gemiddelde van al de instructies die uitgevoerd worden in het programma. Door CPI kunnen we 2 verschillende implementaties met een identieke ISA met elkaar vergelijken omdat het aantal instructies dat uitgevoerd wordt door het programma hetzelfde blijft.

48
Q

Instruction count

A

Het aantal instructies dat uitgevoerd wordt door het programma. Dit gegeven is nodig om de CPU time te bepalen en dus de performantie.

Dit hangt af van de architectuur en niet van de implementatie, we kunnen dit dus meten zonder veel af te weten van de implementatie.

49
Q

Performantievergelijking

A

CPU time = instruction count x CPI x clock cylce time
CPU time = instruction count x CPI / clock rate

Performantie wordt dus beïnvloed door 3 factoren. Voor het bepalen van de CPU execution time voer je het programma uit. De klok wordt meestal gegeven in documentatie. De intruction count wordt gemeten door het gebruik van software tools.

We kunnen deze formule gebruiken om 2 verschillende implementaties met elkaar te vergelijken.

50
Q

Instruction mix

A

Geeft een idee van welke instructies het meest frequent zijn binnen 1 of meerdere programma’s

51
Q

ISA: influence on performance equation

A

ISA heeft invloed op de instruction count, CPI en clock rate.

ISA heeft namelijk invloed op de instructies die nodig zijn voor een functie, de kost in cycli van elke instructie en de totale clock rate van de processor.

52
Q

Power wall

A

Over de tijd is de kloksnelheid en het vermogen van microprocessors sterk gestegen, maar onlangs zijn deze curves allebei afgevlakt. We hebben een grens in vermogen bereikt voor het afkoelen van de microprocessors.

De clock cycle frequency en power staan met elkaar in verband. We willen de frequentie verhogen door het vermogen te laten zakken. Als je het vermogen wilt verlagen, stoot je echter op problemen:

  • betere koeling: te duur voor desktop / laptop
  • lagere voltage kan niet meer want te veel vermogen gaat dan verloren aan lekkage
  • stukken van chip afzetten: helpt, maar lekkage blijft

Power wall

  • we kunnen voltage niet verder reduceren
  • we kunnen de hitte niet meer wegnemen
53
Q

Waarom is het moeilijk voor programmeurs om expliciet parallelle programma’s te schrijven? +

A
  • parallel programming is per definitie performance programming wat de moeilijkheidsgraad van het programmeren verhoogt. Het programma moet niet enkel correct zijn, een belangrijk probleem oplossen en een bruikbare interface aanbieden aan andere programma’s die het gebruiken, het moet ook nog eens snel zijn.
  • snel voor parallel hardware betekent dat de programmeur een applicatie moet opdelen zodat elk proces ongeveer hetzelfde te doen heeft op hetzelfde moment.

We must reduce communication and synchronization overhead.

54
Q

Benchmark

A

Een benchmark (prestatiemeting) bij computers is een reeks van berekeningen, waarbij de snelheid van de computer gemeten wordt. Zo wordt het mogelijk om de performantie van verschillende computersystemen met elkaar te vergelijken.

Het zijn dus programma’s die uitgevoerd worden om performantie van verschillende processoren te vergelijken.

55
Q

SPEC CPU benchmark

A

SPEC (System performance evaluation cooperative) is gefinancierd en ondersteund door een aantal computerleveranciers om een standaard set van benchmarks (zie def. andere kaart) te creëren voor moderne computersystemen.

56
Q

Bespreek figuur 1.18: wat valt op?

A

Deze figuur toont de SPEC integer benchmarks en hun execution time on the Intel Core i7. Het toont ook de factoren die de execution time beinvloeden: instruction count, CPI and clock cycle time.

Het valt op dat de CPI varieert met een factor 5.

De SPECratio = execution time / reference time (grote getallen betekent snellere performantie)

57
Q

SPECINTC2006 Benchmark

A

Dit is een deel van de SPEC CPU2006 benchmark die bestaat uit 12 integer benchmarks.

58
Q

Wet van Amdahl

A

execution time after improvement = execution time affected by improvement / amount of improvement + execution time unaffected.

Deze wet vertelt ons dat de prestatieverbetering van een systeem wanneer je een enkel onderdeel wijzigt, wordt beperkt door de tijd dat dat onderdeel wordt gebruikt.

59
Q

MIPS

A

= million instructions per second
MIPS = instruction count / (execution time x 10^6)

Een maatstaf voor de executiesnelheid van een programma gebaseerd op het aantal millioenen instructies. Het is dus een instruction executie rate. Snellere computers hebben dus een groter MIPS rating. Het voordeel van MIPS is dat het makkelijk is om te verstaan en met onze intuïtie matcht (snelle computers = hoge MIPS).

Nadeel van MIPS:

  • het houdt geen rekening met verschillen in complexiteit tussen instructies
  • het houdt geen rekening met verschillen in ISAs tussen computers
60
Q

Dynamic energy consumption VS static energy consumption in CMOS

A

Dynamic energy is the energie die geconsumeerd wordt wanneer transistoren van een status 0 naar 1 en visa versa overschakelen. Deze hangt af van de capatitive load van elke transistor en de toegepaste voltage.

Static energy is de energie die verbruikt wordt door lekkage van stroom die vloeit zelf al staat de transistor af. In servers is lekkage vaak verantwoordelijk voor 40 procent van de energy consumptie.

VALKUIL dat men denkt dat computers aan laag gebruik weinig energie verbruiken.