GeeksforGeeks
om de prestaties van een CPU te verbeteren hebben we twee opties:
1) Verbeter de hardware door snellere circuits te introduceren.
2) Schik de hardware zodanig dat meer dan één operatie tegelijkertijd kan worden uitgevoerd.
aangezien er een limiet is aan de snelheid van hardware en de kosten van snellere circuits vrij hoog zijn, moeten we de tweede optie gebruiken.
Pipelining : Pipelining is een proces van opstelling van hardware-elementen van de CPU, zodat de algehele prestaties worden verhoogd. Gelijktijdige uitvoering van meer dan één instructie vindt plaats in een pipelined processor.
laat ons een voorbeeld uit het echte leven zien dat werkt op het concept van pipelined operatie. Overweeg een waterfles verpakking plant. Laat er 3 fasen zijn waar een fles doorheen moet, waarbij de fles(I) wordt ingebracht, water in de fles(F) wordt gevuld en de fles(en) wordt afgesloten. Laten we deze fasen beschouwen als respectievelijk fase 1, Fase 2 en fase 3. Laat elke fase 1 minuut duren om de werking te voltooien.
nu, in een niet-pijplijn operatie, wordt een fles eerst in de installatie geplaatst, na 1 minuut wordt het verplaatst naar Fase 2 waar water wordt gevuld. In Fase 1 gebeurt er niets. Op dezelfde manier, wanneer de fles beweegt naar Fase 3, zowel fase 1 en fase 2 zijn inactief. Maar in pipelined verrichting, wanneer de fles in stadium 2 is, kan een andere fles in stadium 1 worden geladen. Evenzo, wanneer de fles in stadium 3 is, kan er één fles elk in stadium 1 en stadium 2 zijn. Dus, na elke minuut, krijgen we een nieuwe fles aan het einde van Fase 3. De gemiddelde tijd die nodig is om 1 fles te vervaardigen is dus:
zonder pipelining = 9/3 minuten = 3m
I F S | | | | | || | | I F S | | || | | | | | I F S (9 minutes)
met pipelining = 5/3 minuten = 1,67 m
I F S | || I F S || | I F S (5 minutes)
aldus verhoogt de werking van Pipelines de efficiëntie van een systeem.
ontwerp van een basic pipeline
- In een pipelined processor heeft een pipeline twee uiteinden, Het input end en het output end. Tussen deze einden, zijn er meerdere stadia/segmenten zodanig dat de output van één stadium met input van volgende fase wordt verbonden en elke fase een specifieke verrichting uitvoert.
- Interfaceregisters worden gebruikt om de tussenliggende uitvoer tussen twee fasen vast te houden. Deze interfaceregisters worden ook wel latch of buffer genoemd.
- alle fasen in de pijplijn samen met de interfaceregisters worden bestuurd door een gemeenschappelijke klok.
uitvoering in een pipelined processor
uitvoering van instructies in een pipelined processor kan worden gevisualiseerd met behulp van een ruimte-tijddiagram. Bijvoorbeeld, overweeg een processor met 4 fasen en laat er 2 instructies worden uitgevoerd. We kunnen de uitvoeringssequentie visualiseren aan de hand van de volgende ruimtetijddiagrammen:
niet overlappende uitvoering:
Stage / Cycle | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
S1 | I1 | I2 | ||||||
S2 | I1 | I2 | ||||||
S3 | I1 | I2 | ||||||
S4 | I1 | I2 |
Total time = 8 Cycle
Overlapped execution:
Stage / Cycle | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
S1 | I1 | I2 | |||
S2 | I1 | I2 | |||
S3 | I1 | I2 | |||
S4 | I1 | I2 |
Total time = 5 Cyclus
Pipeline Stages
RISC processor heeft 5 traps instructie pipeline om alle instructies in de RISC instructie set uit te voeren. Hierna volgen de 5 stappen van de RISC-pijplijn met hun respectievelijke bewerkingen:
- Fase 1 (Instructie Fetch)
In deze fase leest de CPU instructies van het adres in het geheugen waarvan de waarde aanwezig is in de programmateller. - Fase 2 (Instructie Decode)
In deze fase wordt de instructie gedecodeerd en wordt het register bestand geopend om de waarden uit de registers te krijgen die in de instructie worden gebruikt. - Fase 3 (instructie uitvoeren)
In deze fase worden ALU-bewerkingen uitgevoerd. - Fase 4 (Memory Access)
In deze fase worden geheugenoperanden gelezen en geschreven van/naar het geheugen dat aanwezig is in de instructie. - Fase 5 (terugschrijven)
In deze fase wordt de berekende/opgehaald waarde teruggeschreven naar het register dat aanwezig is in de instructies.
prestaties van een pipelined processor
beschouw een ‘k’ – segmentpijplijn met klokcyclustijd als’Tp’. Laat er’ n ‘ taken worden uitgevoerd in de pipelined processor. Nu, de eerste instructie zal ‘k’ cycli nemen om uit de pijplijn te komen, maar de andere ’n – 1′ instructies zullen slechts ‘1’ cyclus nemen elk, dat wil zeggen, een totaal van ’n – 1′ cycli. Dus, tijd die nodig is om ‘n’ instructies uit te voeren in een pipelined processor:
ETpipeline = k + n – 1 cycles = (k + n – 1) Tp
In hetzelfde geval, voor een niet-pipelined processor, zal de uitvoertijd van ‘n’ instructies zijn:
ETnon-pipeline = n * k * Tp
So, versnelling (S) van de pipelined processor over de niet-pipelined processor, wanneer ‘n’ taken worden uitgevoerd op de dezelfde processor is:
S = Performance of pipelined processor / Performance of Non-pipelined processor
Als de prestaties van een processor is omgekeerd evenredig met de uitvoering van de tijd, hebben we,
S = ETnon-pipeline / ETpipeline => S = / S = /
Wanneer het aantal taken ‘n’ zijn aanzienlijk groter dan k, dat is, n >> k
S = n * k / n S = k
waar ‘k’ zijn het aantal fasen in de pijplijn.
ook Efficiency = gegeven snelheid / Max Snelheid = s / Smax
We weten dat, Smax = k
So, efficiëntie = s / k
doorvoer = aantal instructies / Totale tijd om de instructies
So te voltooien, doorvoer = n / (k + n – 1) * TP
opmerking: de cycli per instructie (CPI) waarde van een ideale pipelined processor is 1
alstublieft zie set 2 voor afhankelijkheden en data Hazard en Set 3 voor soorten pijplijn en stalling.