Se o processador solicitar algo de um dispositivo e o dispositivo não estiver pronto, o processador normalmente entrará em estado de espera. Isso significa que o processador irá parar de executar instruções até que o dispositivo esteja pronto. O tempo que o processador espera dependerá do dispositivo. Alguns dispositivos podem estar prontos em alguns ciclos de clock, enquanto outros podem levar vários milissegundos ou até segundos.
Em alguns casos, o processador pode continuar executando instruções enquanto espera pelo dispositivo. Isso é conhecido como execução fora de ordem. A execução fora de ordem pode melhorar o desempenho, permitindo que o processador mantenha todas as suas unidades de execução ocupadas. No entanto, a execução fora de ordem também pode dificultar a depuração de programas.
Se o dispositivo não ficar pronto dentro de um período de tempo razoável, o processador poderá gerar uma interrupção. Isso fará com que o processador pare de executar as instruções e passe para um manipulador de interrupções. O manipulador de interrupções pode então tomar as medidas apropriadas para lidar com o dispositivo que não está pronto.
Aqui está um exemplo do que pode acontecer se o processador solicitar algo de um dispositivo e o dispositivo não estiver pronto:
1. O processador solicita dados de uma unidade de disco rígido.
2. A unidade de disco rígido não está pronta para fornecer os dados.
3. O processador entra em estado de espera.
4. A unidade de disco rígido fica pronta.
5. O processador retoma a execução das instruções.
Neste exemplo, o processador entra em estado de espera por um curto período de tempo enquanto a unidade de disco rígido fica pronta. Isto não afeta o desempenho do programa de forma significativa. No entanto, se a unidade de disco rígido demorasse muito para ficar pronta, o processador seria forçado a esperar por um longo período de tempo. Isso pode afetar significativamente o desempenho do programa.