Archief - Megahertz Myth

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Duffman-

Legacy Member
Beste,

ik botste net op dit oudere filmpje: http://youtube.com/watch?v=PKF9GOE2q38
en op 05:00 zegt de spreker dat de lange pipeline uiteindelijk de korte pipeline zal inhalen, indien er geen fouten voorkomen en de instructie langer duurt. Ik begrijp niet hoe de langere pipeline de kortere zal inhalen. Kan iemand mij precies uitleggen wat hij bedoelt? Het is inderdaad zo dat wanneer een processor sneller is, deze de andere zal voorbijsteken. Maar als je nu 2 processoren hebt van dezelfde snelheid (MHz dus), is het dan mogelijk dat de processor met 20 niveaus van pipeline, sneller zal werken dan die met 7 pipelines? Ik zie het voordeel van grote pipelines niet meteen in.

Greetz,
Duffman-

apa

Legacy Member
Een processor voert instructies uit. Tot en met de 80486 processor werd iedere instructie in exact 1 kloktik uitgevoerd, vanaf de Pentium is men overgestapt op een zgn. "superscalar" architectuur waarbij instructies opgesplitst worden in kleinere stukjes.

Ieder van die kleinere stukjes wordt dan in 1 kloktik uitgevoerd (in een eigen pipeline stage van de CPU); het resultaat van de instructie is pas gekend nadat alle deelinstructies doorlopen zijn. Op zich lijkt dit langzamer dan de architectuur van de 80486, maar nadat een eerste deel van één instructie verwerkt is, kan meteen aan het eerste deel van een volgende instructie gewerkt worden.

De maximaal haalbare kloksnelheid van een superscalar CPU wordt bepaald door de langzaamste deelinstructie. Om de kloksnelheid verder te kunnen opvoeren kiezen fabrikanten vaak om die ene deelinstructie verder op te splitsen.

Met de Pentium4 heeft Intel het pad gewandeld van een zo hoog mogelijke kloksnelheid door de deelinstructies zo kort mogelijk te houden (en er meer te creëren indien nodig).

Jammer genoeg heeft een superscalar architectuur ook nadelen. Zo worden instructies niet zomaar in het wilde weg uitgevoerd. Programma's bevatten o.m. selecties waarbij de uit te voeren instructies afhankelijk zijn van het resultaat van een vorige instructie: we noemen dit "branching". De volgende instructies kunnen dan niet uitgevoerd worden vóór het resultaat van de vorige gekend is. Heb je een pipeline met 20 stappen, dan duurt het 20 kloktikken eer je dat resultaat kent. Die hele tijd lang kan je niet weten welke instructies moeten worden uitgevoerd. Je verliest in dit geval 19 kloktikken CPU-tijd. Een CPU met slechts 10 pipeline stages verliest in datzelfde geval slechts 9 kloktikken.

Mocht het verhaal hier eindigen, dan zou geen enkele fabrikant kiezen voor een lange pipeline: branches komen namelijk heel vaak voor in programma's en de CPU zou daardoor een groot deel van de tijd met de vingers draaien.
CPU's "gokken" wat de uitkomst van een selectie zal zijn en voeren de daarbijhorende instructies uit. Mocht achteraf blijken dat er juist gegokt werd, dan zijn de volgende instructies meteen uitgevoerd en win je performance. Werd er verkeerd gegokt, dan moeten de correcte instructies alsnog uitgevoerd worden. Het duurt nu een aantal kloktikken eer deze instructies afgewerkt worden (het aantal kloktikken is gelijk aan het aantal pipeline stages). Hoe langer de pipeline is, hoe meer performance er verloren gaat bij een verkeerde gok.

Een langere pipeline kan winnen van een kortere wanneer die een voldoende veel hogere kloksnelheid kan halen dan de kortere pipeline. Het nadeel van verkeerde gokken wordt dan teniet gedaan door het feit dat iedere stap sneller uitegevoerd wordt.

De fouten waarover de spreker het heeft zijn die "gokfouten".

Bij 2 CPU's die enkel verschillen in aantal pipeline stages zal de CPU met de kortere pipeline de performantste zijn. De reden van bestaan van langere pipelines is immers het halen van een hogere kloksnelheid. Haal je die niet, dan heeft het geen zin. De kloksnelheid is echter niet enkel afhankelijk van de het aantal pipeline stages. Het is ook afhankelijk van de fysieke beperkingen (warmte, elektronenmigratie, ...). Dat is IMHO waar Intel zich aan mispakt heeft met de Pentium4...

Lees hieromtrent ook dit artikel dat ik een tijdje geleden postte...

Duffman-

Legacy Member
Lol ... dat artikel. Knap geschreven
Het bevat identieke leerstof zoals wij die moeten leren voor het vak Computerarchitectuur (eerste jaar Hogeschool, Toegepaste Informatica) maar is zoveel beter omschreven dan in ons boek!

Proficiat :)

Dingetjes die ik niet helemaal begreep zijn nu veel duidelijker.
Wat je misschien nog kan toevoegen bij RISC is dat 20%(1) van de instructies in de instructieset worden gebruikt voor circa 80%(2) van de berekeningen. De 20%(1) die vaak gebruikt wordt, wordt zo in de CPU ingebakken dat de circuits kort zijn. De overige 80%(3) van de instructies in de instructieset, wordt herschreven in functie van die 20%(1).

(ik heb tussen haakjes getalletjes toegevoegd om het verschil te laten zien tussen de 2 '80%'.)

Wat je ook kan toevoegen is misschien iets ver Out-of-order execution. Hierbij gaat de processor 2 pipelines gebruiken en wanneer hij voor een keuze (branch) komt te staan, gaat elke pipeline opgevuld worden met één van de twee mogelijkheden. Zo kan de processor niet fout gokken.

Uiteraard is dit systeem niet feilloos. Zo kan het gebeuren dat de pipelines in de verkeerde volgorde gevuld worden en dat het programma niet verloopt zoals de programmeur voor ogen had. Dan kan het zijn dat er een instructie moet uitgevoerd worden waarvoor er bepaalde resultaten nodig zijn, maar dat die resultaten nog niet berekend zijn door een verkeerde volgorde.

Is het eigenlijk correct wat ik hier zeg? Zo hebben ze het ons toch aangeleerd dus ik veronderstel van wel...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan