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)?
Respostas:
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.
fonte
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.
fonte
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.
fonte
Se você possui um multiplicador analógico, é fácil fazer um divisor analógico:
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.
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).
fonte
Não, porque as conversões DAC e ADC levam muito mais tempo do que a divisão ou multiplicação digital.
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).
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.
Aqui você pode ver os divisores e multiplicadores analógicos oferecidos pela Analog Devices ( link )
Essas coisas não são muito úteis na computação em geral. Estes são muito melhores no processamento de sinal analógico.
fonte
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.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
fonte