Hoofdstuk 1: computer abstractions and technology Flashcards
Personal computers +
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
Servers +
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)
Supercomputer
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
Embedded computers
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)
Defining performance
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)
Algorithm: influence on performance equation
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).
Compiler: influence on performance equation
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.
Programming language: influence on performance equation
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.
Wet van Moore
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.
Eight great ideas in computer architecture +
- Ontwerp voor de wet van Moore
- Gebruik abstractie om design te versimpelen.
- abstracties helpen om details te verbergen - Maak the common case snel
- Peformantie via parallelisme
- meerdere dingen tegelijk doen - Performantie via pipelining
- principe van lopende band (vorm van parallelisme) - Performance via prediction
- In plaats van te wachten: anticiperen - 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. - 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
Software as a Service (SaaS)
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.
Systeemsoftware +
Systeemsoftware bestaat o.a. uit
- het besturingssysteem (zie def andere kaart)
- compiler (zie def andere kaart)
Besturingssysteem
= 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)
Cloud computing
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.
Compilers +
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)
Assembler +
Een programma dat de symbolische versie van instructies vertaalt naar binaire getallen. (zie hfdstk 2 voor uitgebreide def)
Assembly language
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.
Machine language
Een binaire representatie van machine instructies. Dit is de taal die de machine verstaat. (HLL -> assembly language -> machine language).
High-level programming language (HLL)
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.
Basisfuncties van een computer? +
- input van gegevens
- verwerking van gegevens
- output van gegevens
- opslag van gegevens
5 basiscomponenten van een computer? +
- input
- output
- geheugen
- datapad
- controle
Input device
Dit is een basiscomponent van de computer. Dit is elk apparaat waarmee gegevens in een computer kunnen worden ingevoerd (bv. een toetsenbord).
Output device
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)
CPU / Processor +
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).