¿La aritmética de la señal analógica es más rápida que la digital?

¿Sería teóricamente posible acelerar los procesadores modernos si se utilizara la aritmética de señales analógicas (a costa de la exactitud y la precisión) en lugar de las FPU digitales (CPU -> DAC -> FPU analógica -> ADC -> CPU)?

¿Es posible la división de señales analógicas (ya que la multiplicación de FPU a menudo toma un ciclo de CPU de todos modos)?

No responde a su pregunta, pero aquí hay un artículo interesante sobre el uso de computadoras electromecánicas analógicas en buques de guerra arstechnica.com/information-technology/2014/03/…
Ha habido propuestas de vez en cuando para usar lógica digital multiestado, por ejemplo, "flip-flops" con cuatro estados en lugar de dos. De hecho, esto se ha hecho en algunos chips de memoria de producción, ya que reduce el cuello de botella del cableado. (Sin embargo, no sé si algún chip producido actualmente usa lógica multiestado).

Respuestas (6)

Fundamentalmente, todos los circuitos son analógicos. El problema de realizar cálculos con tensiones 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 grandes órdenes de magnitud. Cada etapa de un circuito analógico agregará ruido y/o distorsión a la señal. Esto se puede controlar, pero no se puede eliminar.

Los circuitos digitales (a saber, CMOS) básicamente eluden todo este problema al usar solo dos niveles para representar la información, y cada etapa regenera la señal. A quién le importa si la salida está desviada 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%, nuevamente 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 los 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 solo un amplificador muy simple hecho con dos transistores, operado en bucle abierto como un comparador. Si el nivel supera el umbral, obtendrá un pequeño error. Los procesadores generalmente están diseñados para tener tasas de error de bit del orden de 10^-20, IIRC. Debido a esto, Los circuitos digitales son increíblemente robustos: pueden operar en una amplia gama de condiciones porque la linealidad y el ruido básicamente no son 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 forma de que te acerques a eso con circuitos analógicos. Si su resolución es de 1 picovoltio (10 ^ -12) (y esto básicamente se verá inundado instantáneamente por el ruido térmico), entonces debe admitir un valor máximo de 10 ^ 7. Que es de 10 megavoltios. No hay absolutamente ninguna forma de operar sobre ese tipo de rango dinámico en analógico, es simplemente imposible. Otra compensación importante en los circuitos analógicos es ancho de banda/velocidad/tiempo de respuesta y ruido/rango dinámico. Los circuitos de ancho de banda estrecho promediarán el ruido y funcionarán bien en un amplio rango dinámico. La contrapartida 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 lo digital, puede arrojar bits al problema para aumentar el rango dinámico o aumentar la velocidad haciendo cosas en paralelo, o ambas cosas.

Sin embargo, para algunas operaciones, lo analógico tiene ventajas: más rápido, más simple, menor consumo de energía, etc. Lo digital debe cuantificarse en nivel y en tiempo. El analógico es continuo en ambos. Un ejemplo donde gana analógico es en el receptor de radio en su tarjeta wifi. La señal de entrada llega a 2,4 GHz. Un receptor completamente digital necesitaría un ADC funcionando al menos a 5 gigasmuestras por segundo. Esto consumiría una gran cantidad de energía. Y eso sin considerar el procesamiento posterior al ADC. En este momento, los ADC de esa velocidad solo se usan para sistemas de comunicación de banda base de muy alto rendimiento (por ejemplo, modulación óptica coherente de alta tasa de símbolos) y en equipos de prueba. Sin embargo, se puede usar un puñado de transistores y pasivos para convertir el 2.

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

¡Esto merece mucho más votos a favor!
¡Lo sabía! Simplemente no podía ponerlo en buenas palabras. Buena información adicional sobre los receptores inalámbricos.
¿No es la memoria también un problema para las computadoras analógicas? No he oído hablar de los dispositivos de memoria analógica.
¿Circuito de muestreo y retención? ¿Cinta magnética? ¿Registro fonográfico? ¿Film fotográfico? Los dispositivos de memoria analógicos ciertamente existen, pero tienen características ligeramente diferentes de los digitales.
10 megavoltios?! Creo que olvidó que tenemos algo llamado amplificador operacional y su trabajo es amplificar. Analog puede admitir cualquier rango simplemente escalando.
Cualquier rango, si. ¿Pero cualquier rango con alguna resolución arbitraria? No tanto.
La amplificación de @ehsan no aumenta su rango dinámico, su valor mínimo (el piso de ruido) se amplifica junto con el máximo.
@Ehsan, puede reducirlo a 10 voltios, pero luego necesita una precisión de 0.000001 picovoltios.

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 uno digital. Sin embargo, un problema es que un MAC analógico está sujeto al ruido analógico. Entonces, si lo presenta con las mismas entradas dos veces, los resultados no serían exactamente los mismos.

(+1 para ruido analógico.)
Asimismo, un artículo sobre el uso de computadoras mecánicas en buques de guerra arstechnica.com/information-technology/2014/03/…

De lo que estás hablando se llama una computadora analógica, y estaba bastante extendida en los primeros días de las computadoras. A finales de los años 60 prácticamente habían desaparecido. El problema es que no solo la precisión es mucho peor que la digital, sino que también lo es. 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 fabrica alrededor de 10 modelos diferentes. Estos son en realidad multiplicadores que se insertan en la ruta de retroalimentación de un amplificador operacional, produciendo un divisor, pero AD solía producir un divisor dedicado optimizado para un rango dinámico grande (60 dB, creo) del divisor.

Básicamente, el cómputo analógico es lento e impreciso en comparación con el digital. No solo eso, sino que la realización de cualquier cálculo analógico en 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 pusieron de moda excepto para usos especiales.

Me gusta tu respuesta, (+1) y la pregunta. Pero no estoy de acuerdo con la parte de la velocidad. El analógico es bastante rápido. El problema es la precisión y quizás lo más importante el ruido. El analógico siempre tiene algo de ruido. Lo digital es libre de ruido, desde el punto de vista de la computadora.
Gracias por las palabras amables. Pero. El analógico puede ser "bastante" rápido, pero en general lo digital es más rápido. Y el ruido es fácil de simular.
En los años 70 recogí parte de una computadora analógica en Boeing Surplus. Un componente era un cubo increíblemente pesado de aproximadamente 2 pies por lado. Tenía, creo, dos o tres motores y una serie de ejes de acero con abrazaderas como embragues para seleccionar xy y z. El resto eran arreglos de botes Beckman de diez turnos. Era una unidad de "condiciones iniciales" para establecer todas las constantes o variables establecidas en un valor para una ejecución particular, ya que las computadoras se usaban principalmente para resolver ecuaciones diferenciales y generar una familia de curvas. Esta pieza fue controlada por un dispositivo digital.
Lo analógico es rápido, si es solo aritmética, exp, sqrt, etc. Pero tan pronto como agrega un capacitor o inductor, necesario para la diferenciación y la integración, entonces es lento. Las computadoras analógicas de la historia a menudo se usaban para resolver ecuaciones diferenciales: eran "lentas". Pero algunos solo hicieron álgebra. Entonces puedo ver por qué diferentes personas pueden tener diferentes puntos de vista sobre la velocidad de computación analógica.
Un mezclador es solo un multiplicador rápido.
@DarrenW ¿Es posible calcular la raíz cuadrada y exponencial con un circuito analógico?
¿Podría explicar por qué el analógico es lento? En la computadora digital, algunas instrucciones son "lentas" porque necesitan pocas iteraciones para completarse. Pero con analógico, creo que solo se necesita una pasada para obtener el resultado.
Míralo así. El circuito analógico tiene un retraso de fase a través del circuito. Como tal, la frecuencia de las señales analógicas que puede procesar el circuito está limitada por este tiempo de retardo. En algunos circuitos, esta limitación podría evitar que el circuito se utilice a más de una frecuencia de unos pocos kilohercios. Una computadora digital a la velocidad de los procesadores actuales podría estar ejecutando operaciones matemáticas a una velocidad de 100 MHz.
@GeorgeHerold Quizás no solo el ruido, la variación del proceso también podría hacer que el cálculo analógico sea menos confiable y consistente (entre chips en lugar de en el tiempo). (Se propuso el cálculo analógico para un predictor de rama de perceptrón, por ejemplo, Renée St. Amant et al., "Predicción de rama neuronal analógica de bajo consumo y alto rendimiento", 2008).
@mrpyo - Absolutamente, puedes hacer ambas funciones. Si toma un multiplicador y conecta ambas entradas juntas, se convierte en un "cuadrador". Si usa el circuito que The Photon usó en su respuesta con ambas entradas vinculadas a la salida del amplificador operacional, genera raíces cuadradas. La relación voltaje/corriente en un diodo es exponencial, por lo que puede usarla para generar exponentes. Y al poner un diodo en una ruta de retroalimentación obtienes logaritmos. Sin embargo, en todos los casos, el rango dinámico puede verse limitado por las compensaciones del amplificador, las derivas, etc. Y para los circuitos de diodos también existen otras fuentes de error.
Cabe señalar que las computadoras analógicas eran inherentemente capaces de hacer integrales y diferenciales, y de manera bastante simple y eficiente, mientras que las computadoras digitales tenían dificultades con esto (especialmente antes de las implementaciones de punto flotante de alta calidad). Y las computadoras analógicas a menudo eran lentas para que los operadores pudieran observarlas en "tiempo real"; no era un requisito inherente.

¿Es posible la división de señales analógicas (ya que la multiplicación de FPU a menudo toma un ciclo de CPU de todos modos)?

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

esquemático

simular este circuito : esquema creado con CircuitLab

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

Existen multiplicadores analógicos, 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 usar primero amplificadores logarítmicos para obtener el logaritmo de X1 y X2, restar y luego exponenciar.

¿Sería teóricamente posible acelerar los procesadores modernos si uno usara aritmética de señal analógica (a costa de la precisión) en lugar de FPU digitales (CPU -> ADC -> FPU analógica -> DAC -> CPU)?

En el fondo, es una cuestión de tecnología: se ha invertido tanto en I+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 para ponerse al día en este punto. Pero no hay manera de decir que es absolutamente imposible.

Por otro lado, no esperaría que mi circuito divisor crudo anterior funcione por encima de los 10 MHz sin tener que hacer un trabajo muy cuidadoso y tal vez una investigación profunda para que vaya más rápido.

Además, usted dice que debemos descuidar la precisión, pero un circuito como el que dibujé probablemente solo tenga una precisión del 1% más o menos sin sintonización y probablemente solo del 0,1% sin inventar nueva tecnología. Y el rango dinámico de las entradas sobre las que se puede calcular de manera útil es igualmente limitado. Por lo tanto, no solo es probablemente de 100 a 1000 veces más lento que los circuitos digitales disponibles, sino que su rango dinámico también es probablemente unas 10 300 veces peor (en comparación con el punto flotante de 64 bits de IEEE).

Hola, tengo un viejo multiplicador AD que hace 10 MHz. Apuesto a que puedo conseguir algo más rápido ahora. Solo para lanzar una llave inglesa a este tema, si la computación cuántica alguna vez funciona, será analógica.
@GeorgeHerold, ese es mi mejor argumento de por qué la computación cuántica es aceite de serpiente.
Truco muy bueno. Excepto que creo que calcula A (x1) / (1 + A (x2)), lo que debería ser preciso para una gran ganancia A.
@georgeherold Un mezclador es realmente solo un multiplicador analógico rápido con requisitos de entrada ligeramente extraños, y creo que la gente de microondas los está obteniendo hasta 60 GHz o más en estos días
@mrig, la dificultad es el amplificador operacional y mantener cerrado el circuito de retroalimentación.
  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ógica no es tan simple, usa más energía y eso no sería rentable (en comparación con el IC digital).

  3. Los circuitos integrados de multiplicación y división analógicos rápidos (rango de GHz) tienen una precisión de alrededor del 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 circuitos integrados digitales manejan números como este muy rápido.

  4. Otro problema es que los números de punto flotante cubren un rango muy amplio, desde números muy pequeños. El rango de números flotantes 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 ofrecidos por Analog Devices ( enlace )

ingrese la descripción de la imagen aquí

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

4. No exactamente. Los números de coma flotante se representan en notación científica, básicamente dos números: el coeficiente y el exponente cubren un rango más limitado.
@mrpyo ¿Estás seguro? Creo que el rango flotante de 16 bits es mucho más alto que los números que escribí antes de editar (algo así como 0000000000000.1 y 10000000000000).
en.wikipedia.org/wiki/IEEE_floating_point Para C floatson 23 bits para coeficiente, 8 bits para exponente y 1 bit para signo. Tendrías que representar esos 3 rangos en analógico.
¿No podría reducir la frecuencia requerida al tener muchas unidades en serie y usar solo una a la vez?
@mrpyo No entiendo lo que quiere decir con esto: "Tendría que representar esos 3 rangos en analógico".
@mrpyo ¿Está pensando en el procesamiento de subprocesos paralelos/múltiples? Eso sería posible con algo de multiplexación, pero aún así, los ADC de 8 bits siguen siendo aproximadamente 256 veces más lentos que los circuitos integrados digitales (cuando usa transistores de tecnología similar).
Así es como se multiplican números en notación científica: n*10^a + m*10^b = a*m^(a+b)para que pueda tener señales analógicas separadas para n, a, m, b que cubran un rango mucho más limitado y aun así multiplicar en un rango muy amplio de números de punto flotante...
Aaah ahora lo tengo. Eso es interesante, pero aún así, la forma digital es mucho más eficiente en tiempo, energía y costos.
@mrpyo: las operaciones analógicas generalmente no funcionan así o no están diseñadas para funcionar de esa manera, por lo que los números de coma flotante tienen un rango dinámico más alto. Por supuesto, como ha dicho, PUEDE implementar números de coma flotante analógicos, pero eso volvería a ralentizar los cálculos.
El verdadero equivalente analógico de punto flotante sería el dominio logarítmico, por lo tanto, no es necesario un rango dinámico absurdamente alto (más alto que la mantisa FP). De lo contrario, buenos puntos.

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 documento:

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