Che cos'è un circuito asincrono?
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 sottoposti a polling per i dati in risposta a un segnale di temporizzazione globale. In un circuito asincrono, i protocolli di trasferimento dei dati determinano quando e come vengono scambiati i dati. Invece di eseguire regolarmente il polling di ciascun componente, i dati vengono trasferiti quando il componente stesso segnala che è pronto.
La maggior parte delle implementazioni di circuiti elettronici utilizza la progettazione sincrona. Questo è un modello più semplice in cui tutti i componenti funzionano 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 i protocolli di handshake e di trasferimento. Eseguono la sincronizzazione, il trasferimento dei dati e la sequenza operativa necessari.
Esistono diversi protocolli di trasferimento utilizzati nei circuiti asincroni. Tutti includono l'handshaking, che assicura che quando un componente è pronto a passare i dati a un vicino, il vicino è libero di riceverli e trasmetterli. Poiché i componenti funzionano senza riferimento a un intervallo di tempo comune, le operazioni possono essere completate in modo non sequenziale. Il protocollo di trasferimento codifica i dati prodotti in modo tale da poter essere assemblati nell'ordine corretto.
Alcuni primi computer impiegavano la progettazione asincrona. L'Illinois Integrator and Automatic Computer, o ILLIAC I, sviluppato dall'Università dell'Illinois nel 1951, era un tale progetto. Il rapido avanzamento della tecnologia dei circuiti integrati ha richiesto tuttavia un progetto più basilare compatibile con le risorse disponibili. La progettazione sincrona con un orologio di sistema divenne l'approccio preferito.
La progettazione di circuiti asincroni presenta numerosi vantaggi potenziali. Il consumo di energia sarebbe molto inferiore con l'eliminazione del circuito di temporizzazione e non sarebbe necessario alimentare transistor non in uso. La velocità operativa sarebbe determinata dalle latenze effettive tra i componenti. Nella progettazione sincrona, la velocità è imposta per accogliere l'elemento più debole. Un circuito progettato per funzionare in logica asincrona sarebbe in genere meno influenzato dalle lievi variazioni dei componenti a causa del 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.