Pipelining uitgelegd

0 reacties
Inhoudsopgave
  1. 1. Pipelining Uitgelegd
  2. 0 reacties

Pipelining Uitgelegd

Aangezien Pipelining het codewoord is voor de hoge performance van o.a. de AMD Athlon floating-point units zal ik met dit artikel uitleggen wat Pipelining precies inhoudt. Dit systeem wordt uiteraard bij vrijwel iedere processor toegepast. Om alles wat toegankelijker te maken gebruik ik een mooi voorbeeld wat ik vond op de website van de Universiteit van Hawaï. Stel we gaan de was doen: er zijn vier zakken vol met vuile was en die moeten allemaal gewassen, gedroogd en gestreken worden.

In bovenstaande afbeelding zijn de zier vakken en drie bewerkingen te zien. Zoals te zien duurt wassen 30 minuten, drogen 40 minuten en strijken 20 minuten. Uiteraard is er maar 1 wasmachine, maar 1 droger en maar 1 strijkijzer aanwezig. Als we dit probleem nu op de "domme" wijze zouden aanpakken zouden we eerst zak A helemaal afwerken, dan zak B, etc. Dat is te zien in de volgende afbeelding:

De tijd die we met het hele project kwijt zijn in: 4 * (30m + 40m + 20m) = 6 uur !

We gaan het nu proberen wat slimmer aan te pakken: we beginnen uiteraard weer met het wassen van de vuile was uit zak A:

Hierna gaan we niet alleen verder met het drogen van de was uit zak A, maar ook meteen met het wassen van de was uit zak B: de wasmachine is nu namelijk vrijgekomen.

Na stap 2 kan de was uit zak A gestreken worden en de was uit zak B in de droger worden gestopt. De wasmachine is weer vrij voor de was uit zak C.

Na stap 3 zijn we al klaar met zak A. Tijden stap 4 wordt B gestreken, C gedroogd en D gewassen.

De bedoeling is nu wel duidelijk. Nog twee stappen te gaan en we zijn op ons eindresultaat:

Na 6 stappen is het project geklaard. We zullen nu nogmaals berekenen hoeveel tijd het project heeft gekost: 30m + (4 * 40m) + 20m = 3,5 uur! Met deze methode koste het nog maar bijna de helft van de oorspronkelijke tijd. Je begrijpt dat hoe grote het aantal zakken was, hoe grote de relatieve tijdwinst.

Bij een processor heet dit systeem "pipelining". Stel dat het verwerken van een instructie bestaat uit vijf bewerkingen (in werkelijkheid zijn het er een stuk meer), die allemaal 1 klokslag duren:

Oudere processoren zouden meerdere instructies op de "domme" methode achter elkaar door uitvoeren:

Door de toepassing van pipelining in nieuwe processoren wordt er een flinke snelheidswinst behaald:

Uiteraard is het zo dat hoe dieper de pipeline, hoe groter de performance winst kan zijn. 

Toch zitten ook aan dit systeem nog wat haken en ogen. Zo is het in veel gevallen bijvoorbeeld onmogelijk om tegelijkertijd te lezen en te schrijven in het geheugen. Of soms is het zo dat een volgende instructie afhankelijk is van een vorige. In beide gevallen moet er gewacht worden en krijg je een zogenaamde pipeline-stall. We zullen in deze korte uitleg echter niet verder ingaan op deze pipeline-stalls en de voorzorgsmaatregelen om die te voorkomen.

Ik denk dat het iedereen nu wel precies duidelijk is wat met pipelining wordt bedoeld.

0
*