# Basiskennis informatica/Snelheid
## Capaciteit en snelheid

Als je capaciteit gebruikt om aan te geven hoeveel gegevens per tijdseenheid verstuurd kunnen worden, dan spreek je over "snelheid". Als 1 MB in 1 seconde verstuurd kan worden, dan spreek je over een snelheid van 1 MBps of 1 MB/s. Ook de term bandbreedte wordt vaak gebruikt: hoeveel data per seconde door een verbinding verstuurd kan worden. Alle afgeleide eenheden die je kent vanuit capaciteit kan je dan koppelen met de eenheid ps of /s.
Grace Hopper - Nanoseconds
Bij een seconde kunnen we ons iets voorstellen, maar bij een nanoseconde (1 ns = 10$^{-9}$ s) of microseconde (1 µs = 10$^{-6}$ s) is dit moeilijk. Grace Hopper werkte bij de Amerikaanse marine en is beroemd geworden omwille van haar visuele hulpstukken om ns en µs te kunnen voorstellen (en ze maakte de term debuggen populair). Ze kreeg vaak de vraag waarom de communicatie per satelliet zo lang duurt. Daarop begon ze stukjes touw uit te delen van net iets minder dan dertig centimeter lengte, de afstand die licht in 1 ns aflegt. In 1 µs (1000 keer meer dan 1 ns) kan licht ook verder geraken: dit zou een stuk touw van ongeveer 300 meter betekenen. Hoe verder een satelliet, hoe langer het dus duurt om ermee te communiceren. Ze gebruikte hetzelfde middel om uit te leggen waarom computers klein moeten zijn: hoe kleiner een computeronderdeel gemaakt kan worden, hoe sneller de informatie verplaatst kan worden en hoe sneller dat onderdeel kan werken.
(en) Visualizing a nanosecond. Hack a Day (2012-02-27).
Snelheid lijkt een simpel getal te zijn, maar de interpretatie en context kan een belangrijk verschil maken. De ene snelheid kan je dus niet zomaar vergelijken met de andere. Je leest er meer over bij de snelheid in een computernetwerk.

## Kloksnelheid

We weten al dat een computer binair werkt, bv. een 'hoog' signaal (bv. 3,3 V) zou dan een 1 kunnen beteken, een 'laag' signaal (bv. 0 V) zou dan overeenkomen met een 0. Zoals je in onderstaande tekening kan zien kan zo'n signaal maar betekenis krijgen als je weet wanneer je moet lezen. Naast het infosignaal is er dus ook een klok nodig, die als een soort van dirigent bepaalt wanneer er gelezen moet worden.
De kloksnelheid, vaak uitgedrukt in Hertz of een veelvoud daarvan, duidt aan hoe vaak per seconde een signaal gelezen, geschreven of verwerkt wordt in bijvoorbeeld een computer. Een kloksnelheid van 1 Hz komt overeen met één bewerking of signaal per seconde. Elektronische circuits vertalen de golfvorm in een vierkante golf van dezelfde frequentie.
Uit bovenstaande tekening kunnen we volgende zaken besluiten:
* In het groen wordt steeds een periode aangeduid: het stukje dat steeds terugkeert.
* Bij de eerste is de periodetijd 1 seconde en de frequentie 1 Hz.
* Bij de tweede is de periodetijd een halve seconde. Daar de periode 2 keer per seconde wordt herhaald, is de frequentie 2 Hz. Zo merk je ook het wiskundig verband: de frequentie is altijd het omgekeerde van de periodetijd.
* Bij de derde is de periodetijd een derde van een seconde. De frequente is 3 Hz.
* Een frequentie van 2,7 GHz zou visueel niets opleveren in bovenstaande tekening: er zouden zo 2,7 * 2$^{10}$ = 2.700.000.000 periodes ("golfjes") in die ene seconde moeten worden weergegeven.
De klok kan je dus a.h.w. beschouwen als de dirigent van een computersysteem. Een dirigent die een snellere maat aangeeft, zal het orkest sneller laten spelen. Hij moet natuurlijk wel zorgen dat alle "componenten" (nl. diegene met een instrument) nog kunnen volgen. Ook bij een processor kan je deze soms laten "overklokken", waardoor deze sneller werkt (de bandbreedte tussen componenten verhoogt hierdoor), maar ook hier moeten de componenten kunnen volgen of je systeem zal vaak vastlopen (bv. een systeem dat te warm wordt en zichzelf uitschakelt). Daarnaast bestaat ook "onderklokken" (throttling), waardoor een systeem minder warmteontwikkeling en energieverbruik heeft.
Wanneer men spreekt over de kloksnelheid van een computer, wordt hiermee meestal de kloksnelheid van de processor bedoeld. Men moet echter opletten om kloksnelheden van processors met een verschillende architectuur (bv. Snapdragon versus AMD versus ARM versus PowerPC) zomaar onderling met elkaar te vergelijken. Een dirigent van een kamerorkest kan je ook niet vergelijken met een dirigent van een symfonieorkest. Bij computers is dit bekend als de Megahertz mythe. Kloksnelheid beschouwen als een synoniem voor processorsnelheid is dan ook verkeerd.

## Transfers

Tranfers per seconde (en de afgeleiden megatranfers per seconde en gigatransfers per seconde) wijzen op het aantal operaties m.b.t. data die per seconde plaatsvinden. Je zou het kunnen bekijken als een synoniem van de kloksnelheid, wat echter niet altijd het geval is. Zo kan met een bepaalde interne kloksnelheid gewerkt worden, maar kan er beslist worden om twee keer per kloktik iets te doen (DDR=double data rate) of zelfs vier keer per kloktik (QDR=quad data rate). Enkele voorbeelden:
* DDR SDRAM geheugen dat werkt met een kloksnelheid van 100 MHz, heeft als transfers per seconde 200 MT/s. Net omdat het hier gaat om DDR.
* Een overklokker is er in geslaagd om DDR4-geheugen te laten draaien op 3008,4 MHz. Dit resulteert dus in 6016,8 MT/s.
* De Celeron D werkt met een FSB-snelheid van 133 MHz, waarbij gebruik wordt gemaakt van quad pumping. Het aantal transfers per seconde is dan 133 * 4 = 532 MT/s.

## Parallel versus serieel

Communicatie tussen twee computeronderdelen kan parallel of serieel uitgevoerd zijn:
* een parallelle link stuurt een zo groot mogelijk aantal bits informatie (bv. 1 of 4 bytes) tegelijk door over een verzameling van kabels (bv. draden of 'lijnen' op een printplaat). Een voorbeeld is PCI.
* een seriële link stuurt alle bits informatie één voor één door. Voorbeelden zijn USB (=Universal Serial Bus), PCI Express en SATA (=Serial Ata).
Op het eerste zicht lijkt het alsof een seriële link wel minder goed moet zijn dan een parallelle, omdat het minder data per kloktik kan versturen. Enkele factoren zorgen ervoor dat nu vaak wordt gekozen voor seriële technologieën:
* Als bits bij parallelle lijnen ('draden') op hetzelfde moment vertrekken, betekent dit niet dat ze ook op hetzelfde moment toekomen, door imperfecties bij de lijntjes (stel bv. dat het ene lijntje een fractie langer is dan het andere). Dit maakt het juist aflezen van bits moeilijker, zeker bij een hoge kloksnelheid. Een seriële link heeft hier minder last van.
* De parallelle lijnen kunnen elkaar door middel van elektromagnetische interferentie verstoren, waardoor de informatie onderweg wordt gewijzigd. Bij seriële communicatie is er meer plaats, waardoor deze extra ruimte kan gebruikt worden om deze beter te isoleren van de omgeving (zodat ze dus minder last van storing hebben).
* Serieel hoeft niet te betekenen "1 lijntje", want meerdere seriële links kunnen gecombineerd worden. Zo heb je bij PCI Express de x1 met één enkel serieel kanaal (een snelheid van 250 MB/s) en de x16-variant met 16 kanalen (een snelheid van 4 GB/s).

## Bussnelheid

Door alle info te combineren kan je de bussnelheid tussen twee punten bepalen.
* De PCI-bus werkt aan een kloksnelheid van 33 MHz: er gebeurt dus 33 miljoen keer per seconde 'iets'. Dat 'iets' is bij de 32-bit uitvoering het versturen van 32 bits per kloktik (want de busbreedte is 32 bit). Dat brengt de snelheid op:
       32 b * 33 Mps = 1056 Mbps = 1056/8 MBps = 132 MBps
* Bij de Celeron D hadden we al bepaald dat het aantal transfers per seconde 532 MT/s is. De interne bus heeft een breedte van 64 bit. De snelheid is dus:
       532 MT/s * 64 b = 34048 Mbps = 34048 / 8 MBps = 4256 MBps.

## Cache

Als er tussen twee samenwerkende onderdelen een snelheidsverschil is, dan wordt de uiteindelijke snelheid bepaald door de snelheid van de traagste component. Door gebruik te maken van een cache wordt dit snelheidsverschil verkleind: binnen deze snellere opslag worden zaken bewaard in de hoop dat ze (opnieuw) nodig zijn. Deze info hoeft dan niet van het tragere deel opgehaald te worden. Enkele voorbeelden:
* Bij de browsercache zal de browser bv. afbeeldingen bewaren op het opslagmedium. Als de volgende keer die website opnieuw wordt bezocht kan deze afbeelding sneller worden geladen van het opslagmedium, dan deze terug te moeten downloaden van het internet.
* Bij de processorcaches worden caches gebruikt omdat de processor veel sneller werkt dan het RAM-geheugen.
* Bij een opslagmedium (bv. HDD) kan een cache worden gebruikt, om de kloof tussen RAM-geheugen en het opslagmedium te overbruggen.
Enkele belangrijke opmerkingen:
* Het verdubbelen van de cache betekent niet automatisch het verdubbelen van de snelheid. Een cache is maar een voordeel als de data die erin wordt bewaard ook echt opnieuw nodig is.
* Cache wordt vaak gemaakt uit een duurdere (en snelle) geheugenvorm, waardoor altijd een afweging gemaakt moet worden tussen de kostprijs en de verhoopte snelheidswinst.onen
Het snelste compbronent vult de cache of de buffer, zodat dit component iets anders kan doen of voor een andere doel in gezet kan worden en als de cache bijna leeg is dan wordt deze weer gevuld. Zo kunnen snelle componenten door meerder gebruikers gebruikt worden. Of bijvoorbeeld componenten die snel warm worden tijdelijk uit geschakeld worden om af te koelen.

## Benchmarks

Kloksnelheid beschouwen als een synoniem voor processorsnelheid is verkeerd (zie hoger). Het is beter om gebruik te maken van benchmarks: een reeks van berekeningen, waarbij de tijd die de computer nodig heeft om ze af te werken gemeten wordt.
Hardwarefabrikanten zijn voortdurend bezig betere en snellere computers te ontwikkelen. Bij het onderling vergelijken van nieuwe modellen is het een probleem dat de prestatie (performantie/performance) van een model afhangt van het toepassingsgebied. Om toch een zo objectief mogelijke vergelijking te kunnen maken worden er standaardopgaven gepubliceerd. Bijvoorbeeld Zoek alle priemgetallen tussen 1 en 1.000.000 volgens een bepaald algoritme.
Binnen één benchmarkprogramma kunnen vaak meerdere soorten opgaven gekozen worden. Zo bestaan er opgaven die de snelheid van de CPU testen en andere die de snelheid van de grafische kaart testen. Daarmee is een objectieve vergelijking mogelijk. Als blijkt dat de benchmark van jouw CPU goed is, maar deze van de grafische kaart tegenvalt, dan kan het de moeite zijn om de grafische kaart te actualiseren (de grafische kaart is dan de bottleneck). Uiteraard moet je steeds rekening houden met het beoogde gebruik (voor kantoortoepassingen is de grafische kaart minder van belang, dan voor videobewerking), kostprijs en performantie.
Benchmarks zeggen echter niet alles over "het beste systeem": zo kan je een snelle laptop hebben (en bijhorende goede benchmark), met een 4K-scherm (en bijhorende prijs), maar waarbij blijkt dat de accu van die laptop snel leeg is. De eindgebruiker kan dan een tragere laptop beter vinden, want trager werken is nog beter dan niet kunnen werken en deze kan dan ook nog eens goedkoper zijn.
Bovendien zijn er meerdere gevallen bekend van hardware die benchmarks onterecht extra "aandacht" geeft, waardoor ze betere resultaten opleveren dan bij een normale situatie. Dit is dus te vergelijken met dieselgate en de sjoemelsoftware.
Smartphone past zich aan om benchmarks tot 20% hoger te laten scoren
De Samsung Galaxy Note 3 bleek wel heel goed te scoren bij benchmarks. Nader onderzoek wees uit dat de Note 3 kon detecteren dat een benchmark aan het draaien was. Daarop ging hij zijn kernen nooit laten idlen, wat wel gebeurt bij normaal gebruik, om zo energie te besparen. Het gevolg was dat hij veel sneller leek dan bv. de Optimus LG G2, terwijl ze eerder vergelijkbare snelheden hebben bij normaal gebruik. De consument werd hier dus duidelijk bedrogen door Samsung.
(en) Note 3’s benchmarking “adjustments” inflate scores by up to 20%. Ars Technica (2013-01-10).
* ↑ De kloksnelheid is vaak bepaald door de frequentie van een kristaloscillator. Typisch voor deze kristaloscillator is een vaste sinusoïdale golfvorm, het frequentie referentie signaal.
* ↑ The Megahertz Myth (YouTube) Hoe Apple de megahertz mythe bekijkt. Kennis van de werking van een processor is aangewezen bij het bekijken van deze video.
* ↑ Part Three: Double Pumping, Quad Pumping, and DDR
* ↑ Tweakers.net: Overklokker zet ddr4-snelheidsrecord op 6017MT/s De commentaren op dat artikel gaan oa. in op het verschil tussen kloksnelheid en transfers.
* ↑ Nog meer informatie over seriële en parallelle communicatie kan gevonden worden bij Wikibooks: IB Computer Science > Further System Fundamentals > Serial and Parallel Transmission, ecomputernotes.com: What is Data Transmission? Types of Data Transmission. en Computerworld.com: Serial vs. Parallel Storage
* ↑ en.wikipedia.org: The challenges for benchmarking