Dadas las ventajas de usar el ternario como base de las computadoras, y la experiencia de los soviéticos, ¿por qué no hay computadoras cuaternarias ternarias o imaginarias? Knuth aprobó el ternario y propuso el cuaternario como eficiente para la computación científica.

(La mayoría de las imágenes son de la búsqueda de Google. Perdón si agregué una con derechos de autor)

Esa es una historia realmente interesante que tienes allí. Estoy emocionado de ver su implementación de un sumador completo. ¿Me puede mostrar un esquema de cómo implementaron esa parte?

Sin embargo, no creo que ninguna computadora ternaria pueda superar a cualquier computadora binaria. Sí, afirman que las computadoras ternarias son más rápidas que las computadoras binarias, pero por lo que puedo ver, es en el mismo sentido que Bubblesort supera a QuickSort cuando la matriz está casi ordenada para empezar.

Ahora, no me malinterpreten: el cálculo ternario ya se usa en casos en los que es realmente útil, por ejemplo, en la transmisión de datos. En estos casos, los tres bits ternarios no se escriben como 0, 1 o 2; están escritos como -1, 0, 1. Esto tiene la ventaja de que simplemente necesita medir la dirección de la corriente en lugar de la fuerza, y que usan un poco menos de potencia.

Sin embargo, en la mayoría de los casos, preferimos binario sobre ternario. Supongo que esto no tiene nada que ver con la facilidad de leer o escribir, o con cualquier algoritmo que funcione más rápido en binario. Según mi experiencia, simplemente tiene que ver con un componente básico:

El transistor

Los transistores son los elementos más básicos de una computadora, en el sentido de que realmente no puede profundizar más que esto, o terminará en la física en lugar de la informática.

De todos modos, los transistores se inventaron al final de la segunda guerra mundial, alrededor de 1947, como una forma ligera de amplificar una señal.
Sí, lo leíste correctamente. Los transistores no fueron inventados para ser utilizados en computadoras. Se utilizaron para amplificar señales, como ondas de radio. Antes de 1947, se usaban tubos de vacío para ese propósito, que eran pesados ​​y consumían mucha energía, dos propiedades que no son muy útiles si uno quiere llevar uno a un avión. La invención del transistor permitió a los británicos llevar tecnología de radio y radar a bordo de un avión, lo que habría sido una gran ventaja para ellos si la guerra no hubiera terminado.

Ahora, ¿cómo funciona un transistor? Fácil. Cada transistor tiene tres entradas: un colector (arriba), un emisor (abajo) y una base (izquierda).

En los transistores de efecto de campo, las tres entradas son respectivamente la fuente, el drenaje y la compuerta.
En esencia, el transistor se comporta exactamente como una resistencia: tiene una cierta resistencia R, y la corriente que va del colector al emisor se comporta exactamente como se espera de una resistencia:

[matemáticas] V_ {CE} = R \ cdot I_ {CE} [/ matemáticas]

La diferencia entre un transistor y una resistencia normal es la tercera entrada: la base. La resistencia de un transistor depende del voltaje aplicado a la base. Existen dos tipos diferentes de transistores (en este caso, efecto de campo):

  • Los transistores de tipo P tienen una baja resistencia cuando la puerta tiene bajo voltaje y una alta resistencia cuando la puerta tiene alto voltaje. En esencia, se bloquean cuando la puerta está alta, y se dibujan con un pequeño círculo en la puerta.
  • Los transistores de tipo N se comportan exactamente de la manera opuesta: tienen baja resistencia cuando la puerta es alta y se bloquean cuando la puerta es baja. Se dibujan solo como una línea, sin el círculo.

Esos dos componentes se pueden usar para formar, por ejemplo, una puerta no:
Típico sin puerta. El transistor de tipo p está en la parte superior, y el transistor de tipo n está en la parte inferior de la imagen.

Si X está en baja tensión, el transistor superior conducirá y el transistor inferior se bloqueará. La corriente fluirá desde la batería a la salida y Z estará en alto voltaje: una entrada baja produce una salida alta. Por el contrario, si X es alto, Z será bajo.

Por supuesto, X puede ser cualquier cosa entre el voltaje fuente y el voltaje de drenaje, y también podemos graficar la salida Z en función de X:

(Gracias, Wolfram Alpha)

Ahora podemos darnos cuenta de algo: si aplicamos un voltaje de 2V a X (digamos que este es un voltaje medio, o 0.5), ¡obtenemos 2V como salida a través de Z! Puede pensar que acabamos de hacer un puerto negado extendido para un bit ternario.

Resulta que no lo hicimos.

Sí, aplicar 2V a X produce 2V a Z. ¿Pero quién dice que aplicamos exactamente 2V? Podríamos haber estado aplicando 2.0001V, y luego Z sería aproximadamente 1.999 8 V.

Y aquí es donde comienza el problema. La salida está más lejos de 2V que la entrada: el ruido se fortalece. Además, la salida Z no es una salida libre, se utilizará como entrada para otra puerta. En la próxima puerta no, y, o cualquier otra puerta, la salida será de 2.0004 V, y las diferencias seguirán creciendo hasta que la siguiente puerta ya no reconozca la señal, y lea un 0 o 1 en lugar de un 0.5 . La señal se pierde debido al ruido.

¿Recuerdas que los transistores se usaron para amplificar señales? Así es exactamente como se hizo: aplique alto voltaje sobre el transistor y aplique la señal débil a las puertas. Si la señal está centrada alrededor del punto de flexión (2V), la señal de salida es una versión reforzada de la señal de entrada. Muy útil en tecnología de radio, un desastre cuando se quiere construir una computadora ternaria.

Existen soluciones alternativas. No te preocupes Se puede construir una puerta de inversión que toma un bit ternario y devuelve su inverso:

Sin embargo … Necesita al menos 4 transistores para tal puerta, simplemente porque el gráfico anterior es la suma de 4 funciones exponenciales básicas.

Esto no solo se aplica a las no compuertas, también se aplica a las compuertas and, las compuertas or e incluso a todos los componentes diferentes en la ALU: para cada operación de compuerta, se necesitan al menos 4 transistores para procesar lg (3) = 1.58 bits de información

Recapitulemos:

  • Necesita 4 transistores para procesar información ternaria de 1.58 bits
  • Puede usar los mismos 4 transistores para procesar información binaria de 2 bits

Entonces, si bien el cálculo ternario puede ahorrar espacio en la RAM, cuesta 26% más transistores para mantenerlo en funcionamiento. Y tenga en cuenta que la RAM también funciona con transistores, por lo que podría terminar con datos ternarios que consumen un 26% de espacio adicional en comparación con la variante binaria.

Las computadoras ternarias suenan muy bien, pero no son realmente eficientes dada la tecnología actual de transistores.

Cualquier ganancia obtenida al basar toda la arquitectura de hardware de una computadora en algún esquema de representación numérica que no sea binario de punto flotante sería, en el mejor de los casos, muy pequeña. En el peor de los casos, el impacto sería negativo, dada la complejidad de construir y depurar los compiladores necesarios y otros elementos de software.

Knuth señala que la notación ternaria ternaria o equilibrada permite que los números se almacenen en aproximadamente un 36% menos de espacio. No promociona esto como una mejora dramática porque no lo es. Los desafíos para resolver problemas difíciles como el análisis climático están relacionados con el modelado, la física y las complejidades computacionales exponenciales involucradas: un factor de 2 o incluso 4 en la velocidad de procesamiento no es fundamentalmente significativo.

Los sistemas de radix complejos son aún peores. Pueden ofrecer algunas mejoras para ciertas tareas muy especializadas, pero pedirles a las personas que las construyan y depuren es completamente irracional. La arquitectura básica de las computadoras debe ser simple, no oscura.

Cualquier historia sobre los soviéticos que suprimieron esas máquinas porque eran “demasiado buenas” son, en mi opinión parcialmente informada, una tontería absoluta.

Gran parte de la velocidad de la lógica binaria actual proviene del hecho de que solo trabaja con dos niveles lógicos diferentes. Para chips TTL, 0-0.9 voltios se interpreta como un 0 lógico, y los voltajes superiores a 2.2 V se interpretan como un 1. lógico. Tener un espacio amplio que separa los dos niveles lógicos simplifica el diseño de cada circuito lógico y les permite funcionar a alta velocidad .

Pasar a una lógica ternaria electrónica requeriría una revisión completa de todos los chips de computadora desde la CPU a la memoria y todos los demás componentes auxiliares. Eso es abandonar 50 años de experiencia en la optimización del chip lógico binario.

Probablemente podría diseñar chips que utilicen tres niveles lógicos, por ejemplo, -5V a -2.2V, -0.9V a 0.9V y 2.2V a 5v, pero serían mucho más complejos.

La otra alternativa al uso de tres niveles lógicos es usar dos bits binarios, dando 4 posibilidades y tirando uno a la basura. Esto realmente no salvaría nada por encima del binario.

Garantizado, las historias de las computadoras soviéticas fueron exageradas, como casi todo lo demás sobre el oso. Como punto de contraste, cuando estaba en la universidad (poco después del final de la Unión Soviética, de hecho), varias personas en la industria de la defensa me dijeron que siempre contratas a programadores rusos, porque estaban acostumbrados a trabajar con el El peor hardware que la industria tenía para ofrecer.

Pero aquí está el trato: ve por la ventana. Realmente, el mundo exterior no te hará daño.

Suponiendo que no vive en una zona rural, probablemente pueda ver las ventanas de alguien. ¿Las luces de esas ventanas están encendidas o apagadas? Ese es el mundo binario. Hay una luz encendida o no la hay.

Ahora, ¿qué ventanas tienen las luces atenuadas? La respuesta correcta es “¿cómo diablos lo sabría?” Es posible que pueda adivinar, si está oscuro y lo suficientemente claro afuera y recuerda cómo se veían las luces “completamente encendidas” en esa ventana, pero es mucho más difícil darse cuenta de lo que está sucediendo. ¡Bienvenido a la informática ternaria!

El único beneficio es que puede colocar un número mayor en menos dígitos, pero dado que necesita señales más potentes y un hardware más extenso para almacenar los dígitos, realmente no está ganando en ningún lado.

Y tenga en cuenta que si agrega uno a su raíz, puede almacenar sus dígitos de base 4 en pares de bits y pretender que está siendo diferente …

Porque sería imposible reciclar todos los programadores de C ++ y Java.

More Interesting

¿Cuáles son algunos temas imprescindibles en matemática discreta y probabilidad de programación competitiva?

Encontré los términos suma de verificación, MD5, SHA, etc. ¿Qué son la suma de verificación, MD5, SHA y la firma de código? ¿Cómo están relacionados y cómo funcionan?

¿Cómo puedo calcular el número esperado de aciertos de caché?

¿Cuál es el significado del módulo? ¿Cuál es el proceso de pensamiento detrás del uso del módulo?

¿Por qué no todas las personas que son buenas en matemáticas también son buenas en programación de computadoras?

¿Debo estudiar Matemáticas e Informática o Ingeniería Eléctrica y Electrónica?

¿Cuál es una buena manera de entender que FSA (automatización de estado finito) o los lenguajes regulares están cerrados bajo diferencia, complementación e intersección, pero FST (traductores de estado finito) o relaciones regulares no lo están?

En algoritmos, proporcione una matriz incremental del entero (-200, ... 0, ... 500) y quite un número. ¿Cuál es el algoritmo eficiente para encontrar el número que falta?

¿Cuál es el estado actual de la computación analógica?

Programación competitiva: ¿cómo se soluciona este problema en el Quora Haqathon?

¿Cuál es la salida de un filtro Gabor?

¿Cómo se puede determinar y mostrar la velocidad de un algoritmo (complejo) en notación Big O?

¿Es importante entender cómo se derivan los teoremas específicos, o es suficiente entender solo cómo usarlos?

¿Podemos crear música original a través de la permutación digital?

En términos absolutos, ¿qué son los transistores y los semiconductores?