O sinal analógico é aritmético mais rápido que o digital?

37

Seria teoricamente possível acelerar os processadores modernos se alguém usasse aritmética de sinal analógico (ao custo de exatidão e precisão) em vez de FPUs digitais (CPU -> DAC -> FPU analógica -> ADC -> CPU)?

É possível a divisão de sinal analógico (como a multiplicação de FPU geralmente leva um ciclo da CPU)?

mrpyo
fonte
Não te responder pergunta, mas aqui está um artigo interessante sobre o uso de computadores eletromecânicos analógicos em navios de guerra arstechnica.com/information-technology/2014/03/...
Doombot
Ocasionalmente, existem propostas para usar a lógica digital de vários estados - por exemplo, "flip-flops" com quatro estados em vez de dois. Na verdade, isso foi feito em alguns chips de memória de produção, pois reduz o gargalo da fiação. (Eu não sei se qualquer chips produzidos atualmente usar a lógica multi-estado, embora.)
Hot Licks

Respostas:

45

Fundamentalmente, todos os circuitos são analógicos. O problema ao realizar cálculos com tensões ou correntes analógicas é uma combinação de ruído e distorção. Os circuitos analógicos estão sujeitos a ruído e é muito difícil linearizar circuitos analógicos em grandes ordens de magnitude. Cada estágio de um circuito analógico adicionará ruído e / ou distorção ao sinal. Isso pode ser controlado, mas não pode ser eliminado.

Os circuitos digitais (ou seja, o CMOS) basicamente desviam esse problema usando apenas dois níveis para representar informações, com cada estágio regenerando o sinal. Quem se importa se a saída estiver desativada em 10%, ela só deve estar acima ou abaixo de um limite. Quem se importa se a produção é distorcida em 10%, novamente só precisa estar acima ou abaixo de um limite. Em cada comparação de limiar, o sinal é basicamente regenerado e problemas de ruído / não linearidade / etc. retirados. Isso é feito amplificando e cortando o sinal de entrada - um inversor CMOS é apenas um amplificador muito simples, feito com dois transistores, operados em circuito aberto como um comparador. Se o nível for pressionado acima do limite, você receberá um pequeno erro. Os processadores geralmente são projetados para ter taxas de erro de bits da ordem de 10 ^ -20, IIRC. Por causa disso, os circuitos digitais são incrivelmente robustos - eles são capazes de operar em uma ampla gama de condições, porque a linearidade e o ruído são basicamente problemas. É quase trivial trabalhar com números de 64 bits digitalmente. 64 bits representa 385 dB de faixa dinâmica. São 19 ordens de magnitude. Não há nenhuma maneira no inferno de você chegar perto disso com circuitos analógicos. Se a sua resolução for de 1 picovolt (10 ^ -12) (e isso será basicamente inundado instantaneamente por ruído térmico), será necessário suportar um valor máximo de 10 ^ 7. Qual é 10 megavolts. Não há absolutamente nenhuma maneira de operar sobre esse tipo de faixa dinâmica em analógico - é simplesmente impossível. Outro trade-off importante nos circuitos analógicos é a largura de banda / velocidade / tempo de resposta e o ruído / faixa dinâmica. Circuitos de largura de banda estreitos calcularão a média do ruído e terão bom desempenho em uma ampla faixa dinâmica. A desvantagem é que eles são lentos. Os circuitos de largura de banda são rápidos, mas o ruído é um problema maior, portanto a faixa dinâmica é limitada. Com o digital, você pode jogar bits no problema para aumentar o alcance dinâmico ou obter um aumento na velocidade fazendo as coisas em paralelo, ou ambos.

No entanto, para algumas operações, o analógico tem vantagens - mais rápido, mais simples, menor consumo de energia, etc. O digital deve ser quantizado em nível e em tempo. O analógico é contínuo em ambos. Um exemplo em que as vitórias analógicas estão no receptor de rádio da sua placa wifi. O sinal de entrada chega a 2,4 GHz. Um receptor totalmente digital precisaria de um ADC executando pelo menos 5 gigasamples por segundo. Isso consumiria uma enorme quantidade de energia. E isso nem sequer considera o processamento após o ADC. No momento, os ADCs dessa velocidade são realmente usados ​​apenas para sistemas de comunicação de banda base de alto desempenho (por exemplo, modulação óptica coerente de alta taxa de símbolos) e em equipamentos de teste. No entanto, um punhado de transistores e passivos pode ser usado para converter os 2.

A conclusão é que existem vantagens e desvantagens na computação analógica e digital. Se você puder tolerar ruído, distorção, baixa faixa dinâmica e / ou baixa precisão, use analógico. Se você não puder tolerar ruído ou distorção e / ou precisar de alta faixa dinâmica e alta precisão, use o digital. Você sempre pode jogar mais bits no problema para obter mais precisão. No entanto, não há equivalente analógico.

alex.forencich
fonte
Isso merece muito mais votação!
você
Eu sabia! Eu simplesmente não conseguia colocar em boas palavras. Informações adicionais agradáveis ​​sobre os receptores sem fio.
Smithers
2
Amostra e retenção do circuito? Fita magnética? Registro fonográfico? Filme fotográfico? Certamente existem dispositivos de memória analógica, mas eles têm características ligeiramente diferentes das digitais.
Alex.forencich
1
Qualquer faixa, sim. Mas algum intervalo com alguma resolução arbitrária? Não muito.
alex.forencich
1
A amplificação @ehsan não aumenta sua faixa dinâmica, seu valor mínimo (o nível de ruído) é amplificado junto com o máximo.
mbrig
20

Participei de uma palestra do IEEE no mês passado intitulada " De volta ao futuro: processamento de sinal analógico ". A palestra foi organizada pela IEEE Solid State Circuit Society.

Foi proposto que um MAC analógico (multiplicar e acumular) pudesse consumir menos energia que o digital. Uma questão, no entanto, é que um MAC analógico está sujeito a ruído analógico. Portanto, se você apresentar as mesmas entradas duas vezes, os resultados não serão exatamente os mesmos.

Nick Alexeev
fonte
1
(+1 para ruído analógico).
George Herold
Do mesmo modo, um artigo sobre a utilização de computadores mecânicos sobre navios de guerra arstechnica.com/information-technology/2014/03/...
Doombot
18

O que você está falando é chamado de Computador Analógico e foi bastante difundido nos primeiros dias dos computadores. Por volta do final dos anos 60, eles praticamente desapareceram. O problema é que não apenas a precisão é muito pior que a digital, mas a precisão também. E a velocidade da computação digital é muito mais rápida que os circuitos analógicos modestos.

Divisores analógicos são realmente possíveis, e a Analog Devices produz cerca de 10 modelos diferentes. Na verdade, são multiplicadores que são inseridos no caminho de feedback de um amplificador operacional, produzindo um divisor, mas o AD costumava produzir um divisor dedicado otimizado para uma faixa dinâmica grande (60 dB, acho) do divisor.

Basicamente, o cálculo analógico é lento e impreciso em comparação ao digital. Não apenas isso, mas a realização de qualquer computação analógica específica requer a reconfiguração do hardware. No final do jogo, foram produzidos computadores analógicos híbridos que podiam fazer isso sob controle de software, mas estes eram volumosos e nunca eram usados, exceto para usos especiais.

WhatRoughBeast
fonte
6
Gosto da sua resposta (+1) e da pergunta. Mas eu discordo da parte da velocidade. Analógico é muito rápido. O problema é a precisão e talvez o mais importante, o ruído. Analógico sempre tem algum ruído. O digital é livre de ruído, em termos de computador.
George Herold
Obrigado pelas palavras amáveis. Mas. O analógico pode ser "bastante" rápido, mas, em geral, o digital é mais rápido. E o ruído é fácil de simular.
WhatRoughBeast
4
O analógico é rápido, se for apenas aritmético, exp, sqrt etc. Mas assim que você adiciona um capacitor ou indutor, necessário para diferenciação e integração, fica lento. Os computadores analógicos da história costumavam ser usados ​​para resolver equações diferenciais - eram "lentos". Mas alguns fizeram álgebra. Então, eu posso ver por que pessoas diferentes podem ter visões diferentes sobre a velocidade de computação analógica.
precisa saber é o seguinte
1
Você poderia explicar por que o analógico é lento? No computador digital, algumas instruções são "lentas" porque precisam de poucas iterações para serem concluídas. Mas com o analógico, acredito que são necessários apenas um passo para obter o resultado.
mrpyo
1
@ Mrpyo - Absolutamente, você pode fazer as duas funções. Se você pegar um multiplicador e conectar as duas entradas, ele se tornará "mais quadrado". Se você usar o circuito que o Photon usou em sua resposta, com as duas entradas ligadas à saída do amplificador operacional, gera raízes quadradas. A relação tensão / corrente em um diodo é exponencial; portanto, você pode usá-lo para gerar expoentes. E, ao colocar um diodo no caminho de feedback, você obtém logaritmos. Em todos os casos, porém, a faixa dinâmica pode ser limitada por desvios do amplificador, desvios, etc. E para os circuitos de diodos também existem outras fontes de erro.
WhatRoughBeast
11

É possível a divisão de sinal analógico (como a multiplicação de FPU geralmente leva um ciclo da CPU)?

Se você possui um multiplicador analógico, é fácil fazer um divisor analógico:

esquemático

simular este circuito - esquemático criado usando o CircuitLab

Assumindo que X1 e X2 são positivos, isso resolve Y = X1 / X2.

Existem multiplicadores analógicos, portanto este circuito é possível em princípio. Infelizmente, a maioria dos multiplicadores analógicos possui uma faixa bastante limitada de valores de entrada permitidos.

Outra abordagem seria usar primeiro os amplificadores de log para obter o logaritmo de X1 e X2, subtrair e depois exponenciar.

Seria teoricamente possível acelerar os processadores modernos se alguém usasse aritmética de sinal analógico (ao custo de precisão) em vez de FPUs digitais (CPU -> ADC -> FPU analógica -> DAC -> CPU)?

No fundo, é uma questão de tecnologia - tanto foi investido em pesquisa e desenvolvimento para acelerar as operações digitais, que a tecnologia analógica ainda teria um longo caminho a percorrer neste momento. Mas não há como dizer que é absolutamente impossível.

Por outro lado, eu não esperaria que meu circuito divisor bruto acima funcionasse acima de talvez 10 MHz sem ter que fazer um trabalho muito cuidadoso e talvez uma pesquisa profunda para fazê-lo ir mais rápido.

Além disso, você diz que devemos negligenciar a precisão, mas um circuito como eu desenhei provavelmente só é preciso para 1% mais ou menos sem sintonia e provavelmente apenas para 0,1% sem inventar novas tecnologias. E a faixa dinâmica das entradas que podem ser calculadas de maneira útil também é limitada. Portanto, além de ser provavelmente 100 a 1000 vezes mais lento que os circuitos digitais disponíveis, sua faixa dinâmica também é provavelmente cerca de 10 300 vezes pior (em comparação com o ponto flutuante IEEE de 64 bits).

O fóton
fonte
5
Ei, eu tenho um velho multiplicador de AD que faz 10 MHz. Aposto que posso conseguir algo mais rápido agora. Apenas para jogar uma chave de macaco nesse tópico, se a computação quântica surgir, será analógico.
George Herold
@ GeorgeHerold, esse é o meu melhor argumento porque a computação quântica é óleo de cobra.
The Photon
Truque muito arrumado. Só que eu acho que computa A (x1) / (1 + A (x2)), que devem ser precisas para um grande ganho A.
Yale Zhang
@georgeherold Um misturador é realmente apenas um multiplicador analógico rápido com requisitos de entrada um pouco estranho, e eu acho que as pessoas microondas estão recebendo aqueles com até 60 GHz ou mais nos dias de hoje
mbrig
@mbrig, a dificuldade é o amplificador operacional e a manutenção do loop de feedback fechado.
O Photon
7
  1. Não, porque as conversões DAC e ADC levam muito mais tempo do que a divisão ou multiplicação digital.

  2. A multiplicação e divisão analógicas não são tão simples, consomem mais energia e não seriam econômicas (em comparação com o CI digital).

  3. Os CIs de multiplicação e divisão analógicos rápidos (faixa de GHz) têm precisão de cerca de 1%. Isso significa que tudo o que você pode dividir no divisor analógico rápido é ... números de 8 bits ou algo assim. Os CIs digitais lidam com números como esse muito rapidamente.

  4. 3.410343.41034

Aqui você pode ver os divisores e multiplicadores analógicos oferecidos pela Analog Devices ( link )

insira a descrição da imagem aqui

Essas coisas não são muito úteis na computação em geral. Estes são muito melhores no processamento de sinal analógico.

Kamil
fonte
4. Não exatamente. Os números de ponto flutuante são representados em notação científica, basicamente dois números - coeficiente e expoente, ambos cobrem uma faixa mais limitada.
mrpyo
@mrpyo Você tem certeza? Eu acho que o intervalo de flutuação de 16 bits é muito maior do que os números que escrevi antes da edição (algo como 0000000000000.1 e 10000000000000).
Kamil
en.wikipedia.org/wiki/IEEE_floating_point Para C float, são 23 bits para coeficiente, 8 bits para expoente e 1 bit para sinal. Você precisaria representar esses 3 intervalos em analógico.
mrpyo
Você não pode reduzir a frequência necessária ao ter muitas unidades em série e usar apenas uma de cada vez?
mrpyo
4
O verdadeiro equivalente analógico do ponto flutuante seria o domínio logarítmico, portanto, uma faixa dinâmica absurdamente alta (maior que a mantissa FP) não é necessária. Caso contrário, bons pontos.
Brian Drummond
0

Na verdade, os pesquisadores agora estão revisitando as técnicas de computação analógica no contexto do VLSI, porque a computação analógica pode fornecer uma eficiência energética muito maior do que a digital em aplicativos específicos. Veja este artigo:

http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=7313881&tag=1

Nate
fonte