Als de processor iets vraagt van een apparaat en het apparaat is nog niet gereed, zal de processor doorgaans in een wachttoestand komen. Dit betekent dat de processor stopt met het uitvoeren van instructies totdat het apparaat gereed is. De tijdsduur dat de processor wacht, is afhankelijk van het apparaat. Sommige apparaten kunnen binnen een paar klokcycli gereed zijn, terwijl bij andere enkele milliseconden of zelfs seconden nodig zijn.
In sommige gevallen kan de processor doorgaan met het uitvoeren van instructies terwijl hij op het apparaat wacht. Dit staat bekend als buiten-order-uitvoering. Uitvoering buiten de juiste volgorde kan de prestaties verbeteren doordat de processor alle uitvoeringseenheden bezig kan houden. Een onjuiste uitvoering kan het echter ook moeilijker maken om programma's te debuggen.
Als het apparaat niet binnen een redelijke tijd gereed is, kan de processor een interrupt genereren. Dit zorgt ervoor dat de processor stopt met het uitvoeren van instructies en naar een interrupthandler springt. De interrupthandler kan dan passende actie ondernemen om het apparaat aan te pakken dat nog niet gereed is.
Hier is een voorbeeld van wat er kan gebeuren als de processor iets van een apparaat vraagt en het apparaat nog niet gereed is:
1. De processor vraagt gegevens op van een harde schijf.
2. De harde schijf is niet gereed om de gegevens te leveren.
3. De processor komt in een wachttoestand.
4. De harde schijf is gereed.
5. De processor hervat het uitvoeren van instructies.
In dit voorbeeld komt de processor gedurende een korte periode in een wachttoestand terwijl de harde schijf gereed wordt. Dit heeft geen significante invloed op de prestaties van het programma. Als het echter lang zou duren voordat de harde schijf gereed is, zou de processor een langere tijd moeten wachten. Dit kan de prestaties van het programma aanzienlijk beïnvloeden. |