¿Es la aritmética de señales analógicas más rápida que la digital?

32

En teoría, sería posible acelerar los procesadores modernos si se usara una aritmética de señales analógicas (a costa de precisión y precisión) en lugar de las FPU digitales (CPU - > DAC - > analog FPU - > ADC - & gt ; CPU)?

¿Es posible la división de señales analógicas (ya que la multiplicación de las FPU a menudo lleva un ciclo de CPU de todas formas)?

    
pregunta mrpyo

6 respuestas

41

Fundamentalmente, todos los circuitos son analógicos. El problema de realizar cálculos con voltajes o corrientes analógicas es una combinación de ruido y distorsión. Los circuitos analógicos están sujetos a ruido y es muy difícil hacer que los circuitos analógicos sean lineales en enormes órdenes de magnitud. Cada etapa de un circuito analógico agregará ruido y / o distorsión a la señal. Esto puede ser controlado, pero no puede ser eliminado.

Los circuitos digitales (a saber, CMOS) básicamente superan todo este problema utilizando solo dos niveles para representar información, y cada etapa regenera la señal. A quién le importa si la salida está desactivada en un 10%, solo tiene que estar por encima o por debajo de un umbral. A quién le importa si la salida está distorsionada en un 10%, de nuevo, solo tiene que estar por encima o por debajo de un umbral. En cada comparación de umbral, la señal se regenera básicamente y hay problemas de ruido / no linealidad / etc. remover completamente, quitar, eliminar. Esto se hace amplificando y recortando la señal de entrada: un inversor CMOS es simplemente un amplificador muy simple hecho con dos transistores, que funciona como un comparador de circuito abierto. Si el nivel se supera el umbral, se produce un error de bit. Los procesadores generalmente están diseñados para tener tasas de error de bits del orden de 10 ^ -20, IIRC. Debido a esto, los circuitos digitales son increíblemente robustos: pueden operar en un amplio rango de condiciones debido a que la linealidad y el ruido son básicamente problemas. Es casi trivial trabajar con números de 64 bits digitalmente. 64 bits representan 385 dB de rango dinámico. Eso es 19 órdenes de magnitud. No hay manera en el infierno de que vayas a acercarte a eso con los circuitos analógicos. Si su resolución es 1 picovolt (10 ^ -12) (y esto básicamente se verá inundado por el ruido térmico), entonces debe admitir un valor máximo de 10 ^ 7. Que es de 10 megavolts. No hay absolutamente ninguna manera de operar en ese tipo de rango dinámico en analógico, es simplemente imposible. Otra compensación importante en los circuitos analógicos es el ancho de banda / velocidad / tiempo de respuesta y el rango dinámico / de ruido. Los circuitos de ancho de banda estrecho promediarán el ruido y tendrán un buen rendimiento en un amplio rango dinámico. La compensación es que son lentos. Los circuitos de ancho de banda amplio son rápidos, pero el ruido es un problema mayor, por lo que el rango dinámico es limitado. Con digital, puedes lanzar bits al problema para aumentar el rango dinámico u obtener un aumento de velocidad haciendo cosas en paralelo, o ambas cosas.

Sin embargo, para algunas operaciones, el analógico tiene ventajas: más rápido, más simple, menor consumo de energía, etc. La digitalización debe cuantificarse en nivel y en tiempo. El análogo es continuo en ambos. Un ejemplo en el que las ganancias analógicas se encuentran en el receptor de radio de su tarjeta wifi. La señal de entrada llega a 2.4 GHz. Un receptor totalmente digital necesitaría un ADC ejecutándose a por lo menos 5 gigasamples por segundo. Esto consumiría una enorme cantidad de energía. Y eso ni siquiera está considerando el procesamiento después del ADC. En este momento, los ADC de esa velocidad realmente solo se utilizan para sistemas de comunicación de banda base de muy alto rendimiento (por ejemplo, modulación óptica coherente de alta velocidad de símbolos) y en equipos de prueba. Sin embargo, se puede usar un puñado de transistores y pasivos para convertir a la baja la señal de 2.4 GHz a algo en el rango de MHz que puede manejar un ADC en el rango de 100 MSa / seg, mucho más razonable para trabajar.

La conclusión es que existen ventajas y desventajas en la computación analógica y digital. Si puede tolerar el ruido, la distorsión, el rango dinámico bajo y la precisión baja, use analógico. Si no puede tolerar el ruido o la distorsión y / o necesita un alto rango dinámico y una alta precisión, entonces use digital. Siempre puedes tirar más bits en el problema para obtener más precisión. Sin embargo, no hay un equivalente analógico de esto.

    
respondido por el alex.forencich
20

Asistí a una charla de IEEE el mes pasado titulada " Regreso al futuro: Procesamiento de señales analógicas ". La charla fue organizada por IEEE Solid State Circuit Society.

Se propuso que un MAC analógico (multiplicar y acumular) podría consumir menos energía que el digital. Un problema, sin embargo, es que un MAC analógico está sujeto a ruido analógico. Por lo tanto, si lo presenta con las mismas entradas dos veces, los resultados no serían exactamente iguales.

    
respondido por el Nick Alexeev
18

De lo que estás hablando se llama una computadora analógica, y fue bastante generalizada en los primeros días de las computadoras. Hacia fines de los años 60, prácticamente habían desaparecido. El problema es que la precisión no solo es mucho peor que la digital, sino que también lo es la precisión. Y la velocidad de la computación digital es mucho más rápida que incluso los circuitos analógicos modestos.

De hecho, los divisores analógicos son posibles, y Analog Devices hace aproximadamente 10 modelos diferentes. Estos son en realidad multiplicadores que se insertan en la ruta de realimentación de un amplificador operacional, produciendo un divisor, pero AD usó para producir un divisor dedicado optimizado para un gran rango dinámico (60 dB, creo) del divisor.

Básicamente, la computación analógica es lenta e inexacta en comparación con la digital. No solo eso, sino que la realización de cualquier cálculo analógico particular requiere la reconfiguración del hardware. Al final del juego, se produjeron computadoras analógicas híbridas que podían hacer esto bajo el control del software, pero eran voluminosas y nunca se prendían, excepto para usos especiales.

    
respondido por el WhatRoughBeast
11
  

¿Es posible la división de señales analógicas (ya que la multiplicación de las FPU a menudo lleva un ciclo de CPU de todas formas)?

Si tiene un multiplicador analógico, es fácil hacer un divisor analógico:

simular este circuito : esquema creado usando CircuitLab

Suponiendo que X1 y X2 son positivos, esto resuelve Y = X1 / X2.

Los multiplicadores analógicos existen, por lo que este circuito es posible en principio. Desafortunadamente, la mayoría de los multiplicadores analógicos tienen un rango bastante limitado de valores de entrada permitidos.

Otro enfoque sería utilizar primero los amplificadores de registro para obtener el logaritmo de X1 y X2, restar y luego exponer.

  

En teoría, sería posible acelerar los procesadores modernos si se usara la aritmética de señales analógicas (a costa de la precisión) en lugar de las FPU digitales (CPU - > ADC - > FPU analógica - > DAC - > CPU )?

En el fondo, es una cuestión de tecnología: se ha invertido tanto en R & D para hacer que las operaciones digitales sean más rápidas, que la tecnología analógica tendría un largo camino por recorrer en este momento. Pero no hay manera de decir que es absolutamente imposible.

Por otra parte, no esperaría que mi circuito divisor crudo superior funcionara por encima de 10 MHz sin tener que hacer un trabajo muy cuidadoso y tal vez una investigación de inmersión profunda para que vaya más rápido.

También, usted dice que deberíamos descuidar la precisión, pero un circuito como el que dibujé probablemente solo tenga una precisión del 1% aproximadamente sin sintonizar y probablemente solo el 0.1% sin inventar una nueva tecnología. Y el rango dinámico de las entradas que pueden calcularse de manera útil se limita de manera similar. Por lo tanto, no solo es probablemente 100 a 1000 veces más lento que los circuitos digitales disponibles, sino que su rango dinámico es probablemente 10 veces 300 también peor (en comparación con el punto flotante IEEE de 64 bits).

    
respondido por el The Photon
7
  1. No, porque las conversiones de DAC y ADC toman mucho más tiempo que la división o multiplicación digital.

  2. La multiplicación y división analógicas no es tan simple, consume más energía y eso no sería rentable (en comparación con el IC digital).

  3. Los IC de multiplicación analógica y división rápida (rango de GHz) tienen una precisión de aproximadamente el 1%. Eso significa que todo lo que puede dividir en un divisor analógico rápido es ... números de 8 bits o algo así. Los IC digitales manejan números como este muy rápido.

  4. Otro problema es que los números de punto flotante cubren un rango muy grande, desde números muy pequeños. El rango del número flotante de 16 bits es \ $ 3.4 * 10 ^ {- 34} \ $ a \ $ 3.4 * 10 ^ {34} \ $. Eso requeriría un rango dinámico de 1360dB (!!!) si no estropeara nada.

Aquí puede ver los divisores y multiplicadores analógicos que ofrece Analog Devices ( enlace )

Estas cosas no son muy útiles en informática general. Estos son mucho mejores en el procesamiento de señales analógicas.

    
respondido por el Kamil
0

En realidad, los investigadores ahora están revisando las técnicas de computación analógica en el contexto de VLSI, porque la computación analógica podría proporcionar una eficiencia energética mucho mayor que las digitales en aplicaciones específicas. Ver este artículo:

enlace

    
respondido por el Nate