EDICIóN GENERAL
150 meneos
3940 clics
Nand Game: construye una CPU en tu navegador

Nand Game: construye una CPU en tu navegador

Ensamblar un ordenador es dentro de todo sencillo una vez que adquieres los conocimientos básicos, e incluso existen simuladores como PC Building Simulator que te ayudan a practicar (hasta cierto punto). Sin embargo, la construcción de los componentes, y en especial de un procesador, es un desafío completamente diferente. Requiere un entendimiento profundo de su lógica, algo que no siempre se encuentra a nuestro alcance, pero gracias al juego Nand Game podemos absorber todo lo esencial sobre la construcción de procesadores en cuestión de...

| etiquetas: nand , game , construir , cpu , navegador , simulador , procesador
¿Con o sin vulnerabilidades de Intel?
#1: Primero tienes que entender lo que es un "latch". xD
#2 ¿Eso no es leche en Aleman suizo? :troll:
#3 No, es vergüenza en caló alemán. :-D
#2 por cierto, estoy atascado en la fase del Latch y siguiendo la wikipedia no me lo acepta.
#22: El latch al menos tiene una ayuda, lo que hay que hacer es conectar la salida a una de las entradas.
#23 gracias, genial. Me estaba complicando y basta un solo componente para resolverlo :-D
#22 El latch la verdad es que nunca lo toqué así en la carrera, lo que usábamos era un flip-flop RS de toda la vida. Y no sé hasta que punto se llega a usar este tipo de biestable en la práctica.
Aquí tienes una foto de como lo he montado.  media
#29 si, es la misma solucion a la que llegue yo :-)
Comienza con el ensamblaje de puertas lógicas basado en puertas lógicas más sencillas, luego componentes para hacer aritmética binaria, como Half Adder y Full Adder, y después componentes más complejos hasta llegar a un CPU.

Todavía incompleto y muy difícil si no se tiene cierta documentación, pero Internet está llena de ésta.
#4 Así es como nos enseñaron a nosotros en fp la electrónica digital y la verdad que se me quedo bastante bien... empezamos con componentes discretos a crear puertas lógicas y usándolas crear otros tipos de circuitos cada vez mas complejos usando elementos anteriores hasta llegar a los distintos arrays de datos.
#4 "Never Go Full Adder"
Me ha recordado al libro "But How Do It Know? - The Basic Principles of Computers for Everyone" donde paso a paso te va instruyendo para crear un ordenador, usando únicamente puertas lógicas NAND.
Bastante recomendable .
www.amazon.com/But-How-Know-Principles-Computers/dp/0615303765
www.nand2tetris.org/

Este libro que se basa en hacer ejercicios en un emulador también está muy bien para aprender los principios básicos teóricos desde la cpu hasta un intérprete basado en máquina virtual.
Tienen también cursos en Coursera
Yo hice la carrera de Informática en los años 90 y a lo largo de varios cursos nos explicaron cómo está hecho un procesador, empezando por lo más básico. Desde los transistores a las puertas lógicas, operadores aritméticos... de ahí a componentes básicos de memoria, instrucciones de control, etc... Al cabo de tres cursos, teníamos una idea cabal de cómo estaba hecho un Intel 80386. No sé si hoy en día se sigue enseñando esto. Muchos compañeros lo consideraban inútil y era una asignatura hueso, pero a mí me pareció interesante y necesario aunque no le haya dado un uso práctico en el trabajo.
#8 Yo diría que aún se enseña, al menos parte. En primero se sigue enseñando fundamentos de computadores (al menos cuando he mirado planes de informática que alguna vez he pensado en estudiarla).
#8 yo empecé la carrera en el 2001 y no solo nos explicaban los componentes de la CPU desde el transistor, también nos enseñaban la física que hay detrás de un transistor. También teníamos prácticas. Lo que hicimos distaba mucho de ser una CPU pero podías ver los fundamentos básicos en los que se basan. Las hacíamos con un simulador.
#10 Mi práctica favorita de toda la carrera fue montar un procesador 8085 en una placa, con su EPROM y su RAM, con todas las conexiones hechas mediante cables wrapinados a mano. La alimentación era una pila de 9V. Las entradas y salidas eran varios interruptores y luces o displays, según de lo que tratara tu proyecto. Se desarrollaba un programa que llevabas en un diskete y te lo grababan en la EPROM del aparato. Si todo iba bien, tenías un "ordenador" que cabía en la palma de la mano, el tatarabuelo de la Raspberry Pi.
#8 Las materias "inútiles" no necesariamente son tan inútiles. Un ejemplo es Steve Jobs, que recibió clases de caligrafía y gracias a ellas se le ocurrió que el procesador de palabras de la primera Mac tuviera tipos de letras diferentes.

Todo lo que aprendemos sirve para algo (cuando nos tropecemos con ese algo en que se puede usar o que puede ser entendido mejor por el conocimiento que tenemos).

La programación en assembler, por ejemplo, dudo mucho que sea inútil (el problema es…   » ver todo el comentario
#14 Yo conocí a un tipo que podía "leer" código en assembler, como quien lee una novela. Iba mirando un programa compilado y nos iba explicando en voz alta sobre la marcha lo que hacía. Pero no traduciendo las instrucciones, sino realmente entendiendo a alto nivel el objetivo de ese código.
#16 Tengo un amigo que lo hace, lo de entender ensamblador de algunas familias de microprocesadores y microcontroladores, hasta el punto de que se ha hecho su propio sistema operativo y algunas aplicaciones para x86 que usa para varias tareas personales de su día a día.

Los demás pensamos que es especial, pero le queremos igual.
#16 No es difícil. Depende del lenguaje compilado. Los lenguajes de antes (procedurimentales) eran muy sencillos. Yo estuve meses ejecutando manualmente paso por paso (con un debuger) muchos programas y entendiendo cómo funcionaban a nivel de assembler. Dentro de ellos el interpretador BASIC de IBM (hecho por Microsoft), el programa de ajedrez SARGON III, y el sistema operativo MS DOS, programas compilados con el compilador BASCOM de Microsoft, que compilaba programas en BASIC, etc.

En el caso…   » ver todo el comentario
#19 Sale muchísimo más barato el kilo de carne de programador de Java o m$.net que el kilo de carne de programador de ensamblador.
Por los ejemplos parece un simulador de circuitos lógicos, más que una herramienta para entender como funciona un procesador. Ese conocimiento está en un nivel de abstracción más alto. Por ejemplo, para entender un procesador no hace falta conocer el detalle de la lógica de las unidades de suma/resta de enteros.
#11 Va subiendo de nivel. Comienza con la creación de circuitos básicos, luego funciones aritméticas, después circuitos cada vez más complejos hasta llegar al CPU (ver sección de la derecha nandgame.com/)

Lo malo es que no es un simulador donde se vean los circuitos trabajando. Hay algunos libres.
#12 si hay simulador: www.buthowdoitknow.com/cpu_model_intro.html incluso en excell
yo en la carrera diseñé un procesador de 12 estados... la verdad que lo recuerdo como todo un reto... subir de los 10 estados era jodido
me encantaaaaaaaaa!!!
Otro que mola mucho es Cardiac, simula el funcionamiento de una CPU con papel, con su memoria, instrucciones, registro....

www.cs.drexel.edu/~bls96/museum/cardiac.html

Por ahí andan los PDFs para imprimirlo y el manual de uso.
Me he quedado en la puerta or
Estoy en el "Instruction decoder" y debería funcionar pero me da error en un output al menos. ¿Alguien se lo ha pasado?
comentarios cerrados

menéame