| Scoreboarding is een techniek in de computerarchitectuur die wordt gebruikt voor het afhandelen van afwijkende uitvoeringen in een pijplijnprocessor. Het is een meer geavanceerde aanpak dan eenvoudige reserveringsstations, die meer flexibiliteit en mogelijk betere prestaties biedt. In plaats van alleen de beschikbaarheid van bronnen bij te houden, houdt het ook de gegevensafhankelijkheden tussen instructies bij.
Hier is hoe het werkt:
* Instructieprobleem: Instructies worden opgehaald en afgegeven aan de uitvoeringseenheden van de processor zodra hun operanden beschikbaar zijn en de vereiste uitvoeringseenheden vrij zijn. Dit staat in contrast met strikte uitvoering in volgorde, waarbij instructies worden voltooid in dezelfde volgorde waarin ze zijn opgehaald.
* Scorebord: Dit is een centrale datastructuur die voor elke instructie de volgende informatie bijhoudt:
* Instructiestatus: Geeft aan of de instructie is uitgegeven, uitgevoerd of voltooid.
* Operanden: Geeft een overzicht van de bronoperands die vereist zijn voor de instructie.
* Operandstatus: Voor elke operand wordt aangegeven of de operand beschikbaar is of nog steeds wordt berekend door een andere instructie.
* Bestemmingsregister: Specificeert het bestemmingsregister waar het resultaat zal worden geschreven.
* Executie-eenheid: Geeft aan aan welke uitvoeringseenheid de instructie is toegewezen.
* Het bijhouden van gegevensafhankelijkheid: Het scorebord bewaakt de gegevensafhankelijkheden tussen instructies. Een instructie kan pas worden uitgevoerd als alle operanden gereed zijn. Dit vermijdt gevaren die kunnen optreden bij een onjuiste uitvoering.
* Bronnentoewijzing: Het scorebord houdt de beschikbaarheid van uitvoeringseenheden en andere middelen bij. Wanneer een instructie klaar is om uit te voeren, wijst het scorebord deze toe aan een beschikbare uitvoeringseenheid.
* Resultaten schrijven: Zodra de uitvoering van een instructie is voltooid, werkt het scorebord de status van het bestemmingsregister bij. Andere instructies die op dat resultaat wachten, kunnen dan doorgaan.
Belangrijkste voordelen van scoreboarden ten opzichte van eenvoudigere technieken:
* Verbeterd parallellisme: Door uitvoering in de verkeerde volgorde toe te staan, kan scoreboarding het parallellisme op instructieniveau (ILP) aanzienlijk vergroten.
* Verminderde kraampjes: Omdat het gegevensafhankelijkheden bijhoudt, minimaliseert het het vastlopen van pijpleidingen als gevolg van gegevensrisico's.
* Behandelt complexere afhankelijkheden: Het is robuuster dan eenvoudigere methoden bij het beheren van verschillende soorten gegevensafhankelijkheden (lezen-na-schrijven, schrijven-na-lezen, schrijven-na-schrijven).
Beperkingen van scoreboarden:
* Complexiteit: Scoreboarding is een complexer mechanisme vergeleken met in-order uitvoering of eenvoudigere out-of-order technieken. De implementatie van het scorebord zelf vereist aanzienlijke hardwarebronnen.
* Beperkte uitvoering van buiten de bestelling: Hoewel het parallellisme verbetert, heeft het nog steeds beperkingen vergeleken met geavanceerdere technieken zoals het algoritme van Tomasulo, dat een meer dynamische planning mogelijk maakt. Scoreboarding kent over het algemeen een beperktere mate van buitensporige uitvoering.
Samenvattend is scoreboarding een waardevolle techniek voor het verbeteren van de prestaties van gepijplijnde processors door uitvoering in de verkeerde volgorde mogelijk te maken en tegelijkertijd de gegevensafhankelijkheden en de toewijzing van middelen effectief te beheren. Door zijn complexiteit is het echter mogelijk niet de optimale keuze voor alle processorontwerpen. |