Un circuito asincrono è una rete di componenti ampiamente indipendenti che inoltrano i dati quando le loro operazioni sono state completate. Ciò è in contrasto con un circuito sincrono in cui gli elementi vengono interrogati per i dati in risposta a un segnale di temporizzazione globale. In un circuito asincrono, i protocolli di trasferimento dati determinano quando e come i dati vengono scambiati. Invece di interrogare regolarmente ogni componente, i dati vengono trasferiti quando il componente stesso segnala che è pronto.
La maggior parte delle implementazioni di circuiti elettronici utilizza il design sincrono. Questo è un modello più semplice in cui tutti i componenti operano nello stesso lasso di tempo. In un circuito asincrono, i componenti funzionano indipendentemente da qualsiasi intervallo di tempo. Invece di un tempo discreto imposto a livello globale, i componenti utilizzano protocolli di handshake e trasferimento. Questi eseguono la sincronizzazione necessaria, il trasferimento dei dati e la sequenza delle operazioni.
Esistono diversi protocolli di trasferimento utilizzati nei circuiti asincroni. Tutti includono l’handshaking, che assicura che quando un componente è pronto per passare i dati a un vicino, il vicino è libero di riceverli e passarli. Poiché i componenti funzionano senza riferimento a un orizzonte temporale comune, le operazioni possono essere completate fuori sequenza. Il protocollo di trasferimento codifica i dati prodotti in modo che possano essere assemblati nell’ordine corretto.
Alcuni dei primi computer utilizzavano il design asincrono. L’Illinois Integrator and Automatic Computer, o ILLIAC I, sviluppato dall’Università dell’Illinois nel 1951, era un progetto di questo tipo. Tuttavia, il rapido progresso della tecnologia dei circuiti integrati richiedeva un design più basilare che fosse compatibile con le risorse disponibili. Il design sincrono con un orologio di sistema è diventato l’approccio preferito.
La progettazione di circuiti asincroni presenta diversi potenziali vantaggi. Il consumo di energia sarebbe molto inferiore con l’eliminazione del circuito di temporizzazione e non essendo necessario alimentare i transistor non utilizzati. La velocità operativa sarebbe determinata dalle latenze effettive tra i componenti. Nella progettazione sincrona, la velocità è imposta per adattarsi all’elemento più debole. Un circuito progettato per funzionare in logica asincrona sarebbe tipicamente meno influenzato dalle leggere variazioni nelle parti componenti dovute al processo di fabbricazione.
Gli svantaggi della progettazione di circuiti asincroni derivano principalmente dalla sua complessità. Il numero di elementi necessari può essere molto maggiore di quello richiesto per un circuito sincrono. Esistono pochi strumenti CAD (Computer Assisted Design) realizzati per la progettazione di circuiti asincroni. Questi circuiti sono anche molto più difficili da eseguire il debug e la risoluzione dei problemi rispetto ai progetti convenzionali. Il sovraccarico hardware aggiuntivo e la difficoltà di implementazione possono compensare i guadagni in termini di consumo energetico ed efficienza.