L'aritmetica del segnale analogico è più veloce di quella digitale?


37

Sarebbe teoricamente possibile accelerare i processori moderni se si usasse l'aritmetica del segnale analogico (a costo di accuratezza e precisione) anziché FPU digitali (CPU -> DAC -> FPU analogica -> ADC -> CPU)?

È possibile la divisione del segnale analogico (poiché la moltiplicazione FPU richiede comunque un ciclo CPU)?


Non risponde alla tua domanda, ma ecco un interessante articolo sull'uso dei computer elettromeccanici analogici nelle navi da guerra arstechnica.com/information-technology/2014/03/…
Doombot

Di tanto in tanto ci sono state proposte per utilizzare la logica digitale multi-stato, ad esempio "infradito" con quattro stati anziché due. Questo è stato effettivamente fatto in alcuni chip di memoria di produzione, poiché riduce il collo di bottiglia del cablaggio. (Non so se alcuni chip attualmente prodotti usano la logica multi-stato.)
Hot Licks

Risposte:


45

Fondamentalmente, tutti i circuiti sono analogici. Il problema con l'esecuzione di calcoli con tensioni o correnti analogiche è una combinazione di rumore e distorsione. I circuiti analogici sono soggetti a rumore ed è molto difficile rendere i circuiti analogici lineari su enormi ordini di grandezza. Ogni stadio di un circuito analogico aggiungerà rumore e / o distorsione al segnale. Questo può essere controllato, ma non può essere eliminato.

I circuiti digitali (vale a dire CMOS) fondamentalmente affiancano l'intero problema usando solo due livelli per rappresentare le informazioni, con ogni stadio che rigenera il segnale. Chi se ne frega se l'uscita è disattivata del 10%, deve solo essere al di sopra o al di sotto di una soglia. Chi se ne frega se l'uscita è distorta del 10%, di nuovo deve solo essere al di sopra o al di sotto di una soglia. Ad ogni confronto di soglia, il segnale viene sostanzialmente rigenerato e problemi di rumore / non linearità / ecc. spogliato. Questo viene fatto amplificando e tagliando il segnale di ingresso: un inverter CMOS è solo un amplificatore molto semplice realizzato con due transistor, gestiti ad anello aperto come comparatore. Se il livello viene superato oltre la soglia, viene visualizzato un errore un po '. I processori sono generalmente progettati per avere tassi di errore in bit dell'ordine di 10 ^ -20, IIRC. A causa di ciò, i circuiti digitali sono incredibilmente robusti: sono in grado di funzionare in una vasta gamma di condizioni perché la linearità e il rumore sono fondamentalmente senza problemi. È quasi banale lavorare in digitale con numeri a 64 bit. 64 bit rappresentano 385 dB di gamma dinamica. Sono 19 ordini di grandezza. All'inferno non c'è modo di avvicinarsi a questo con i circuiti analogici. Se la tua risoluzione è 1 picovolt (10 ^ -12) (e questo sarà sostanzialmente sommerso all'istante dal rumore termico) allora devi supportare un valore massimo di 10 ^ 7. Che è di 10 megavolt. Non c'è assolutamente modo di operare su quel tipo di gamma dinamica in analogico: è semplicemente impossibile. Un altro importante compromesso nei circuiti analogici è la larghezza di banda / velocità / tempo di risposta e rumore / gamma dinamica. I circuiti a larghezza di banda ridotta eliminano il rumore e si comportano bene in un ampio intervallo dinamico. Il compromesso è che sono lenti. I circuiti ad ampia larghezza di banda sono veloci, ma il rumore è un problema più grande, quindi la gamma dinamica è limitata. Con il digitale, puoi lanciare bit sul problema per aumentare la gamma dinamica o aumentare la velocità facendo cose in parallelo o entrambi.

Tuttavia, per alcune operazioni, l'analogico presenta dei vantaggi: più veloce, più semplice, un consumo di energia più basso, ecc. Il digitale deve essere quantizzato a livello e nel tempo. L'analogico è continuo in entrambi. Un esempio di vincite analogiche è nel ricevitore radio nella tua scheda wifi. Il segnale di ingresso arriva a 2,4 GHz. Un ricevitore completamente digitale avrebbe bisogno di un ADC che esegua almeno 5 gigasample al secondo. Ciò consumerebbe un'enorme quantità di energia. E questo non sta nemmeno considerando l'elaborazione dopo l'ADC. Al momento, gli ADC di quella velocità sono realmente utilizzati solo per sistemi di comunicazione in banda base ad altissime prestazioni (ad es. Modulazione ottica coerente ad alta velocità di simboli) e nelle apparecchiature di prova. Tuttavia, una manciata di transistor e passivi può essere utilizzata per convertire i 2.

La linea di fondo è che ci sono vantaggi e svantaggi per il calcolo analogico e digitale. Se è possibile tollerare rumore, distorsione, bassa gamma dinamica e / o bassa precisione, utilizzare analogico. Se non riesci a tollerare rumore o distorsione e / o hai bisogno di un'elevata gamma dinamica e un'alta precisione, usa il digitale. Puoi sempre lanciare più bit al problema per ottenere più precisione. Tuttavia, non esiste un equivalente analogico di questo.


Questo merita molto più voti!
Giovanni U

Lo sapevo! Non riuscivo proprio a dirlo in buone parole. Informazioni aggiuntive utili sui ricevitori wireless.
Smithers,

2
Campionare e trattenere il circuito? Nastro magnetico? Registrazione fonografica? Film fotografico? I dispositivi di memoria analogica certamente esistono, ma hanno caratteristiche leggermente diverse da quelle digitali.
alex.forencich,

1
Qualsiasi intervallo, sì. Ma qualsiasi intervallo con una risoluzione arbitraria? Non così tanto.
alex.forencich,

1
L'amplificazione di @ehsan non aumenta la tua gamma dinamica, il tuo valore minimo (il rumore di fondo) viene amplificato insieme al massimo.
mbrig

20

Il mese scorso ho partecipato a una conferenza IEEE intitolata " Ritorno al futuro: elaborazione del segnale analogico ". Il discorso è stato organizzato dalla IEEE Solid State Circuit Society.

È stato proposto che un MAC analogico (moltiplicarsi e accumularsi) potesse consumare meno energia di quello digitale. Un problema, tuttavia, è che un MAC analogico è soggetto a rumore analogico. Quindi, se lo si presenta con gli stessi input due volte, i risultati non sarebbero esattamente gli stessi.


1
(+1 per il rumore analogico.)
George Herold,

Allo stesso modo, un articolo sull'uso dei computer meccanici sulle navi da guerra arstechnica.com/information-technology/2014/03/…
Doombot,

18

Quello di cui stai parlando si chiama Analog Computer ed era abbastanza diffuso nei primi tempi dei computer. Verso la fine degli anni '60 erano sostanzialmente scomparsi. Il problema è che non solo la precisione è molto peggio che per il digitale, ma anche l'accuratezza. E la velocità del calcolo digitale è molto più veloce dei circuiti analogici anche modesti.

I divisori analogici sono infatti possibili e Analog Devices produce circa 10 modelli diversi. Si tratta in realtà di moltiplicatori che vengono inseriti nel percorso di feedback di un amplificatore operazionale, producendo un divisore, ma AD produceva un divisore dedicato ottimizzato per un'ampia gamma dinamica (60 dB, credo) del divisore.

Fondamentalmente, il calcolo analogico è lento e impreciso rispetto al digitale. Non solo, ma la realizzazione di un particolare calcolo analogico richiede la riconfigurazione dell'hardware. Verso la fine del gioco, sono stati prodotti computer analogici ibridi che potevano farlo sotto il controllo del software, ma questi erano ingombranti e non sono mai stati catturati tranne che per usi speciali.


6
Mi piace la tua risposta, (+1) e la domanda. Ma non sarò d'accordo sulla parte della velocità. L'analogico è molto veloce. Il problema è la precisione e forse soprattutto il rumore. L'analogico ha sempre del rumore. Il digitale è privo di rumore, dal punto di vista del computer.
George Herold,

Grazie per le gentili parole. Ma. L'analogico può essere "molto" veloce ma in generale il digitale è più veloce. E il rumore è facile da simulare.
WhatRoughBeast,

4
L'analogo è veloce, se è solo aritmetica, exp, sqrt ecc. Ma non appena aggiungi un condensatore o un induttore, necessario per la differenziazione e l'integrazione, allora è lento. I computer analogici della storia venivano spesso usati per risolvere equazioni differenziali: erano "lenti". Ma alcuni hanno appena fatto l'algebra. Quindi posso capire perché persone diverse possono avere opinioni diverse sulla velocità di calcolo analogica.
DarenW,

1
Potresti spiegare perché l'analogico è lento? Nel computer digitale alcune istruzioni sono "lente" perché richiedono poche iterazioni per essere completate. Ma con analogico credo che ci vuole solo un passaggio per ottenere il risultato.
mppyo,

1
@mrpyo - Assolutamente, puoi fare entrambe le funzioni. Se si prende un moltiplicatore e si collegano entrambi gli ingressi insieme, diventa uno "squadratore". Se si utilizza il circuito Il Photon utilizzato nella sua risposta con entrambi gli ingressi collegati all'uscita dell'amplificatore operazionale genera radici quadrate. La relazione tensione / corrente in un diodo è esponenziale, quindi puoi usarla per generare esponenti. E inserendo un diodo in un percorso di feedback si ottengono i logaritmi. In tutti i casi, tuttavia, la gamma dinamica può essere limitata da offset, derive, ecc. Dell'amplificatore. E per i circuiti a diodi ci sono anche altre fonti di errore.
WhatRoughBeast,

11

È possibile la divisione del segnale analogico (poiché la moltiplicazione FPU richiede comunque un ciclo CPU)?

Se hai un moltiplicatore analogico, un divisore analogico è "facile" da realizzare:

schematico

simula questo circuito - Schema creato usando CircuitLab

Supponendo che X1 e X2 siano positivi, questo risolve Y = X1 / X2.

Esistono moltiplicatori analogici, quindi questo circuito è possibile in linea di principio. Sfortunatamente la maggior parte dei moltiplicatori analogici ha un intervallo abbastanza limitato di valori di input consentiti.

Un altro approccio sarebbe quello di utilizzare prima gli amplificatori di registro per ottenere il logaritmo di X1 e X2, sottrarre e quindi esponenziare.

Sarebbe teoricamente possibile accelerare i processori moderni se si usasse l'aritmetica del segnale analogico (a costo di precisione) invece delle FPU digitali (CPU -> ADC -> FPU analogica -> DAC -> CPU)?

Fondamentalmente è una questione di tecnologia --- così tanto è stato investito in ricerca e sviluppo per rendere più veloci le operazioni digitali, che la tecnologia analogica avrebbe ancora molta strada da fare per recuperare il ritardo a questo punto. Ma non c'è modo di dire che è assolutamente impossibile.

D'altra parte, non mi aspetterei che il mio circuito di divisori grezzi sopra funzionasse sopra forse 10 MHz senza dover fare un lavoro molto attento e forse una profonda ricerca di immersioni per farlo andare più veloce.

Inoltre, dici che dovremmo trascurare la precisione, ma un circuito come quello che ho disegnato è probabilmente preciso solo all'1% circa senza messa a punto e probabilmente solo allo 0,1% senza inventare nuove tecnologie. E la gamma dinamica degli ingressi che può essere utilmente calcolata è similmente limitata. Quindi non solo è probabilmente da 100 a 1000 volte più lento dei circuiti digitali disponibili, ma anche la sua gamma dinamica è circa 10 300 volte peggiore (rispetto al punto in virgola mobile IEEE a 64 bit).


5
Ehi, ho un vecchio moltiplicatore AD che fa 10 MHz. Scommetto che posso ottenere qualcosa più velocemente ora. Solo per lanciare una chiave inglese in questo argomento, se la computazione quantistica dovesse mai essere analizzata sarà analogica.
George Herold,

@ George Herold, questo è il mio miglior argomento per cui il calcolo quantistico è l'olio di serpente.
The Photon,

Trucco molto pulito. Tranne che penso che calcola A (x1) / (1 + A (x2)), che dovrebbe essere preciso per un grande guadagno A.
Yale Zhang

@georgeherold Un mixer è in realtà solo un moltiplicatore analogico veloce con requisiti di input leggermente dispari, e penso che le persone a microonde stiano ottenendo quelle fino a 60 GHz o più in questi giorni
mbrig

@mbrig, la difficoltà è l'amplificatore operazionale e mantenere chiuso il circuito di feedback.
Il fotone

7
  1. No, perché le conversioni DAC e ADC richiedono molto più tempo della divisione o moltiplicazione digitale.

  2. La moltiplicazione e la divisione analogiche non sono così semplici, consumano più energia e non sarebbero convenienti (rispetto all'IC digitale).

  3. I circuiti integrati di moltiplicazione e divisione analogici veloci (gamma GHz) hanno una precisione di circa l'1%. Ciò significa che tutto ciò che puoi dividere su un divisore analogico veloce è ... numeri a 8 bit o qualcosa del genere. I circuiti integrati digitali gestiscono numeri come questo molto velocemente.

  4. 3.410343.41034

Qui puoi vedere divisori e moltiplicatori analogici offerti da Analog Devices ( link )

inserisci qui la descrizione dell'immagine

Queste cose non sono molto utili nell'informatica generale. Questi sono molto meglio nell'elaborazione del segnale analogico.


4. Non esattamente. I numeri in virgola mobile sono rappresentati nella notazione scientifica, sostanzialmente due numeri: coefficiente ed esponente coprono entrambi un intervallo più limitato.
mrpyo,

@mrpyo Sei sicuro? Penso che l'intervallo float a 16 bit sia molto più alto dei numeri che ho scritto prima della modifica (qualcosa come 0000000000000.1 e 10000000000000).
Kamil,

en.wikipedia.org/wiki/IEEE_floating_point Per C floatè 23 bit per coefficiente, 8 bit per esponente e 1 bit per segno. Dovresti rappresentare quei 3 intervalli in analogico.
mppyo,

Non potresti ridurre la frequenza richiesta disponendo di molte unità in serie e utilizzandone solo una alla volta?
mppyo,

4
Il vero equivalente analogico di Floating Point sarebbe il dominio logaritmico, pertanto non è necessario un intervallo dinamico assurdamente elevato (superiore alla mantissa FP). Altrimenti, buoni punti.
Brian Drummond,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.