Tengo una duda que procederé a dejar por acá, por si alguien puede orientarme. Hace algún tiempo que deseo obtener la insignia "Presión de pares", pero no he conseguido una publicación lo suficientemente mala como para obtenerla.
¿Es válido si realizo una publicación deficiente a propósito para obtener esta insignia y eliminar dicha publicación después?
@HéctorM. tengo una idea que puede funcionar para eso. Pero hazlo con cuidado porque es muy poderoso: Haz una respuesta con chatGPT. Probablemente recibas votos negativos y también te baneen temporalmente
Microsoft se va comer el mercado, dentro de unos meses estará lanzando novedades de IA con diversos productos, especialmente en Azure Cognitive Services.
@CandidMoe Microsoft tiene literalmente 1 millón de dólares en cada cajón de sus oficinas, me sorprende que no hubiesen desembolsado más. La gente tiene muchas espectativas con este tipo de proyectos, pero hay que ver en qué terminan.
Este circuito implementa una CPU basada en stack que acaba de ejecutar un programa (en lenguaje de máquina) que pone dos valores en el stack, y luego los reemplaza por su suma.
El lenguaje máquina se ejecuta por medio de un micro-código. Cada instrucción del microcódigo activa/desactiva señales que controlan el resto la CPU.
Es decir, que el micro-código es capaz de convertir el lenguaje máquina, que asumo, será ensamblador, a operaciones de cambio de estado de puertas lógicas. ¿En qué lenguaje está implementado este micro-código?
Cada línea del micro-código es un arreglo de 16 bits en una ROM. Cada bit corresponde a una señal. Un contador lee cada línea y en los pines de salida quedan esos 16 bits, activando diversas cosas.
Este es el fuente del micro-programa que ejecuta la operación de suma en el stack:
dbus_selx selecciona el master para el bus de datos. pop activa de la señal de pop del circuito de stack. alu1 activa el registro 1 de la ALU. El resultado es que el top del stack se transfiere a un registro de la ALU.
Luego haces otro pop y lo mandas al registro 2 de la ALU.
La ALU está siempre sumando cualquier cosa que haya en esos registros; por lo que el resultado queda disponible por default.
Lo siguiente dbus_sel2 conecta la salida del sumador al bus de datos. Con el resultado en bus de datos, puedes hacer un push para meterlo al stack.
Las señales PC e IR leen en paralelo la siguiente instrucción.
El microcódigo lo escribo en Python, en un programa que me genera las imagenes binarias a cargar en el emulador.
Al ejecutar el pgma Python obtengo un par de imagenes binarias. En Logisim, que es el emulador, puedo cargar esas imagenes dentro de las ROM.
Bueno, igual está lleno de pasos. Logisim puede convertir los circuitos a Verilog, y con otro compilador puedo generar la imagen final para cargarla en el FPGA.
Esa es la "ALU": dos registros conectados a una sumador. Los registros toman valores del bus de datos cuando la entrada en está activada. No tiene conexión con la RAM.
Trabajar en hardware es distinto al software. Por ejemplo, puedo implementar un "restador" en paralelo con el sumador, y siempre hacer la suma y la resta de cualquier cosa en los registros. Funcionan en paralelo; no cuesta nada.
En software no lo puedes hacer; tienes que decidir lo uno o lo otro.
Increíble. Ya veo, dos nodos almacenan los valores, un tercer nodo los lee y realiza la operación, arrojando el resultado en el bus de salida. Estos nodos son capaces de operar en paralelo sin costo extra, por lo puedes guardar valores en tantos nodos como desees de una sola vez.
La RAM almacena entonces los valores de salida del bus?
Todo lo que se, lo aprendí con esta serie. Super didáctica. El usa chips para implementar el diseño, yo uso un FPGA, pero los principios son los mismos.
@HéctorM. El bus de datos es de entrada/salida. Todos pueden leer de él sin problemas, pero la grabación está controlada con un multiplexor. Al multiplexor están conectados la RAM, el stack, el sumador, etc. En cada línea del micro-código tienes que decir quién controla el bus.
Como este es un embrión de computador, solo hay tres posibles "origenes" para el bus de datos.
@HéctorM. Es un problema eléctrico. No puedes conectar múltiples pines de salida, pues algunos estarán en HIGH y otros en LOW y se producirá un corto-circuito.
Incluso si todos están en HIGH, cualquier diferencia de voltaje hará circular una corriente entre esos pines.
Lo bueno de Logisim es que expone esa realidad física directamente.
Recién estoy iniciando en éste fantástico mundo de la programación. Estoy haciendo varios ejercicios que me hacen aprender más sobre éste mundo. Hoy me han pedido que haga lo siguiente:
iseña un programa que lleve a cabo las siguientes acciones:
Pide un número entero al usuario.
A continuación...
Te agradezo @CandidMoe por las explicaciones que me proporcionaste, y me disculpo por mi ignorancia en el tema. Es que me he centrado más en el lado del software aunque mis orígenes se dieron con el hardware.