Um circuito como uma unidade lógica aritmética terá alguns números como entradas e produzirá um número como saída. Pode garantir que, dentro de um período de tempo, todos os bits da saída tenham atingido seus estados finais corretos, mas a quantidade real de tempo para a validação dos bits de saída poderá variar consideravelmente com base em vários fatores.
Seria possível construir uma ALU com uma entrada "válida" e uma saída "válida" e especificar que, desde que a entrada "válida" seja baixa por um período de tempo suficiente antes de uma computação ser realizada, e as entradas de dados contenham o valores desejados antes que a entrada "válida" seja alta, a saída "válida" não será alta até que os bits de saída estejam de fato corretos. Esse projeto provavelmente exigiria cerca de duas vezes mais circuitos que uma ULA convencional [basicamente teria que controlar se cada bit era "conhecido" como zero ou "conhecido" como um; sua saída "válida" se tornaria verdadeira assim que o estado de cada bit de saída fosse conhecido].
Para piorar as coisas, permitir que as partes de uma CPU capazes de rodar mais rapidamente o faça apenas será útil se não estiverem esperando o tempo todo que as peças mais lentas sejam atualizadas. Para que isso aconteça, deve haver lógica para decidir qual parte da máquina está "à frente" em um determinado momento e selecionar um curso de ação com base nisso. Infelizmente, esse tipo de decisão é uma das mais difíceis para os eletrônicos tomarem com segurança. Decidir com segurança qual dos dois eventos ocorreu primeiro é geralmente fácil apenas se for possível garantir que nunca haverá "fechamentos". Suponha que um seqüenciador de memória esteja manipulando uma solicitação da unidade de processamento nº 1 e a unidade nº 1 tenha outra solicitação pendente depois disso. Se a unidade nº 2 enviar uma solicitação antes da conclusão da primeira solicitação nº 1, a unidade de memória deve lidar com isso; caso contrário, ele deve atender à próxima solicitação da unidade nº 1. Parece um design razoável, mas acaba surpreendentemente problemático. O problema é que, se houver algum momento no tempo em que uma solicitação recebida antes desse momento seja processada imediatamente e uma solicitação recebida depois disso tenha que esperar, a quantidade de tempo necessária para determinar se uma solicitação ultrapassará o prazo final. aproximadamente inversamente proporcional à diferença entre a hora em que a solicitação foi recebida e o prazo. O tempo necessário para a unidade de memória determinar que uma solicitação do nº 2 ultrapassa o prazo de um femptossegundo pode exceder substancialmente a quantidade de tempo necessária para atender a uma segunda solicitação da unidade nº 1, mas a unidade não pode atender solicite até que decida qual atender primeiro.
Tendo tudo funcionando em um relógio comum, não apenas elimina a necessidade de o circuito determinar quando a saída de um cálculo é válida, mas também permite que as "chamadas fechadas" sejam eliminadas. Se tudo no sistema executar um relógio de 100Mhz, nenhum sinal será alterado em resposta a um relógio até 1ns após a borda do relógio e tudo o que acontecerá em resposta a uma borda do relógio ocorrerá dentro de 7ns, tudo o que acontecerá antes de um uma determinada borda do relógio "vencerá" em pelo menos 3ns e tudo o que não acontecerá até depois de uma borda do relógio "perderá" em pelo menos 1ns. Determinar se um sinal de chances antes ou depois do relógio, quando é garantido que não esteja "próximo", é muito mais fácil do que determinar qual dos dois sinais de tempo arbitrário ocorre primeiro.