memoria para la computadora más simple posible (Pi0K)

13

Me gustaría construir la computadora más simple posible. No me importa la velocidad o el almacenamiento, de hecho, tener una velocidad lenta y un almacenamiento bajo es una gran ventaja, ya que quiero construirlo a partir de transistores (¡idealmente relés!) Y quiero un LED para cada estado. Se programará a través de una Raspberry Pi que albergará una cámara para que pueda ver cada ciclo de reloj ejecutándose (sí, se ejecutará a Hz, no a GHz). Será un diseño abierto con la intención de que las escuelas puedan comprar las piezas, comprender y mejorar el diseño. Por lo tanto, el presupuesto total debe estar por debajo de £ 400, preferiblemente alrededor de £ 100.

He investigado esto durante muchos años y tengo buenas ideas para la CPU (registros mínimos, microcódigo en interruptores DIP y operaciones lógicas / aritméticas en serie de bits para reducir el recuento de transistores). Lo que no puedo entender es cómo obtener la memoria, me gustaría 1024 a 8096 bits.

Lo mejor que se me ocurre son dos decodificadores uno de n de 6 bits que dan acceso a una red de condensadores de 64 x 64. O tienen una carga en ellos o no, y la lectura reforzaría ese estado. No habría LED en los condensadores ya que la actualización de esta 'DRAM' estaría en el orden o minutos (lo cual es una pena, ya que esta sería la única parte que no muestra el estado).

Otras ideas incluyen alguna forma de unidad de cinta (mecanismo de cassette compacto: excelente almacenamiento, demasiado complejo, sin búsqueda), memoria de tambor (cinta alrededor de una lata de frijoles: demasiado difícil para que la mecánica funcione), memoria mecánica (rueda de bicicleta y rodamientos de bolas: demasiados errores de bits), memoria central (núcleos de ferrita grandes y duros: todavía es muy difícil de conseguir a la escala requerida), cinta / tarjeta (¿podemos comprar los lectores de cinta?), disco giratorio con agujeros perforados en orden binario y algunos magnéticos memoria para almacenamiento (demasiado complejo para construir).

En última instancia, el objetivo es publicar un diseño que se pueda construir en un año escolar donde todas las partes de una CPU y memoria estén 'visibles' y así pueda ver la búsqueda de instrucciones, la decodificación en microcódigo y la decodificación de direcciones / acceso de registro / lógica. sucediendo en el transcurso de minutos.

Si alguien tiene ideas para una memoria realmente barata (<< £ 100) donde está claro exactamente cómo funciona, hágamelo saber.

Tony

El estado actual del juego de PS está en http://www.blinkingcomputer.org/

Tony Robinson
fuente
Simplemente busque en Google para las personas que ya hicieron esto y cosas similares, los diseños están ahí, puede hacer una lista de materiales y descubrir que probablemente necesite un poco más de dinero y tiempo.
PlasmaHH
Sugeriría que ir al nivel de transistor podría ser demasiado para un proyecto escolar. Creo que la integración CMOS a pequeña y mediana escala sería mucho más factible y probablemente más comprensible (puertas, registros, buffers, decodificadores, etc.). Podría incluir algo que demuestre cómo las compuertas están hechas de transistores, las chanclas están hechas de compuertas, etc.).
Tut
1
Solo una idea: debe hacer que la memoria (programa) sea fácilmente modificable a mano, para que las personas puedan "programar" manualmente con sus manos :-).
oyvind
Primero decida qué quiere que la computadora pueda hacer. Eso determinará cuánta memoria necesita y cuál debe ser el conjunto de instrucciones.
Tony Ennis
Gracias a todos. PlasmaHH: Sí, es un gran desafío hacerlo con limitaciones de dinero y tiempo, por eso nadie más lo ha hecho todavía. Tut: Realmente quiero poder ver cada señal. La gente verá cómo se construyen las puertas lógicas a partir de los transistores. oywind: Sí, será programable a través de una Raspberry Pi con una interfaz web en la que puede escribir su propio código y verlo funcionando con una cámara web. Tony Ennis: Quiero construir la computadora más simple que muestre cada señal; esto demostrará todos los aspectos y necesitará arquitecturas no estándar, como una ALU de serie de bits.
Tony Robinson el

Respuestas:

9

Hay muchas personas que han construido computadoras con transistores discretos, circuitos integrados, relés e incluso tubos de vacío. Van desde máquinas de 4 bits hasta 32 bits. Los 4-bitters, por supuesto, serán los más simples que puedes construir y hacer cualquier cosa. El primer microprocesador fue el 4004 de 4 bits de Intel .

Comenzaría buscando en Google " computadoras caseras de 4 bits " (sin las comillas).

Aquí hay una placa de una computadora transistorizada de 4 bits:

ingrese la descripción de la imagen aquí

En lo que respecta a la memoria, algunos de estos proyectos que de otro modo están usando transistores discretos "engañan" y usan chips SRAM. Son increíblemente baratos para cantidades moderadas de memoria, 32 KB es $ 3.28 y no requiere relojes ni actualización.

Incluso si el resto de su computadora usa relés, usarlos para la memoria será prohibitivamente costoso.

Si puede sobrevivir con 1K bits, puede construir uno con flip-flops transistorizados; 2048 2N3904 costará 3 ¢ cada uno ($ 60 en total, más los otros componentes que serán aún más baratos, resiste por 1/2 centavo, etc.). Puede obtener PCB's por $ 10 cada uno, luego contratar a un niño para rellenarlos.

Retransmiten computadoras datan toda la vuelta camino a finales de 1930, y uno de los primeros fue el Harvard Mark I . De ahí proviene el nombre de la arquitectura de Harvard (espacio de programa y datos separados, en comparación con la arquitectura de von Neumann que combina los dos).

La computadora de retransmisión casera más famosa es una construida por Harry Porter.

ingrese la descripción de la imagen aquí

Mira los videos de la computadora en funcionamiento. Me recuerda a una antigua central telefónica electromecánica.

Aquí hay una porción de otra computadora de retransmisión casera llamada Zusie :

ingrese la descripción de la imagen aquí

Muchas luces parpadeantes.

Y finalmente, aquí hay un enlace a un video de un sumador de 4 bits, compuesto por 24 relés. Los sumadores como este son el corazón de la ALU (unidad de lógica aritmética) en una computadora.

tcrosley
fuente
Lo sentimos, el "He investigado esto durante muchos años" fue enterrado en el segundo párrafo. He editado el título de la publicación para indicar claramente que es la memoria que me importa. Si puedes sobrevivir con 1K bits, podrías construir uno con chanclas transistorizadas; 2048 2N3904 costará 3 ¢ cada uno ($ 60 en total, más los otros componentes que serán aún más baratos, resiste por 1/2 centavo, etc.). Puede obtener PCB's por $ 10 cada uno, luego contratar a un niño para rellenarlos.
Tony Robinson
ctd ... esto está más cerca de lo que había imaginado, pero necesitas la decodificación de la dirección y puse más transistores por celda de memoria. Tal vez una celda de memoria 'DRAM' de un transistor y un condensador también es posible dentro del presupuesto.
Tony Robinson el
@TonyRobinson Intenté abordar el uso de la memoria (como reconociste), pero también intenté proporcionar información sobre tu deseo de hacer una computadora con transistores y / o relés discretos, y para ilustrar que varios han tenido éxito en esto. Buena suerte en tus esfuerzos.
tcrosley
6

Si quieres memoria simple , no busques más que un flip-flop . Con dos transistores y cuatro resistencias, puede tener un poco de memoria. También puede hacer un flip-flop con dos puertas NOR cruzadas, o simplemente comprar un IC con un montón de flip-flops ya.

De hecho, la memoria caché de la CPU muy rápida es básicamente un conjunto de flip-flops, integrados en la CPU.

Phil Frost
fuente
2
DRAM consume más energía, ya que debe actualizarse constantemente, mientras que SRAM usa solo una pequeña corriente de reposo cuando está inactivo. La razón para usar condensadores es porque solo requiere un transistor por bit, por lo que permite densidades de memoria mucho más altas.
Tom Carpenter el
Tienes razón: tenía en mente chanclas RTL simples. Lo editaré para aclarar.
Phil Frost el
1
Los circuitos integrados están apagados: ocultan lo que realmente está sucediendo. Quiero que cada señal se exponga lo más posible. Realmente no me importa la energía: no puedo ver que la energía sea un problema, estará conectada a una Raspberry Pi para que haya energía disponible. Una DRAM de transistor puede ser una mejor manera de ir que mi conjunto de ideas de condensadores, como sugirió la publicación anterior: tendré que averiguar qué transistores son necesarios para mantener la fuga de carga lo suficientemente baja (necesito tiempos de actualización en el orden de minutos). De lo contrario, sí, las chanclas parecen la siguiente mejor idea.
Tony Robinson el
@TonyRobinson "Se conectará a una Raspberry Pi para que haya energía disponible". - ...tal vez. Depende de la potencia máxima disponible a través de una Raspberry Pi y de la familia lógica que planea usar. (Sin embargo, esperaría que una fuente de alimentación de banco promedio pudiera suministrar un poco más de energía)
user253751
2

Estoy de acuerdo en que sería genial tener un sistema informático completo con un LED para cada estado, visible para el ojo humano.

La computadora del relé TIM 8 utiliza 8 condensadores, 2 diodos y un relé SPDT por byte en sus 12 bytes de memoria RAM principal (memoria de datos). (El TIM 8 tiene 16 bytes de memoria variable si incluye registros).

La computadora de retransmisión TIM 8 utiliza cinta perforada para su memoria de programa.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

¿Es posible reemplazar esos diodos con LED, por lo que hay un breve pulso que muestra los datos que entran o salen de un byte de RAM? Quizás si el sistema actualiza la DRAM lo suficientemente rápido, escaneando cada byte de RAM, entonces cada bit de estado parecería visible en esos LED (aunque técnicamente solo se activaría un byte de LED en cualquier instante). (Esos tendrían que ser LED de alta corriente si queremos CARGAR y ALMACENAR datos de esos condensadores a registros basados ​​en relés).

¿Es posible colocar una resistencia y un LED en cada condensador de almacenamiento de bits, mostrando de manera simultánea cada bit de estado? (Deberían ser LED de baja corriente y condensadores físicamente grandes si queremos que el condensador retenga los datos el tiempo suficiente para una frecuencia de actualización razonable. Algunos LED se pueden ver fácilmente con solo 1 mA de corriente. Con una actualización de 1 segundo condensadores de ciclo y (estimación aproximada) cargados inicialmente a 12 V aunque (estimar) una carga de 7 V en el condensador es suficiente para cargar el hardware aguas abajo, entonces el condensador necesita una clasificación de C ~ = i * t / V = ​​1 mA * 1 s / (12 V - 7 V) = 200 uF.).

Esto, por supuesto, será mucho más grande y requerirá más trabajo humano para ensamblar que casi cualquier memoria principal basada en circuito integrado.

davidcary
fuente
1

¿Por qué no utiliza una CPU simple de 8 bits (p. Ej., 6502) y una cantidad muy pequeña de memoria (registros de CPU, IC RAM y una cantidad muy pequeña de almacenamiento externo (p. Ej .: FD, HD o disco flash, etc.)? .) y luego simplemente explica con diapositivas lo siguiente:

  1. Los componentes de hardware, subcomponentes y sus funciones.
  2. El sistema operativo, los programas del sistema y los programas de usuario.
  3. Carga y ejecución de un programa simple para sumar 2 números, almacenar el resultado en cada tipo de memoria y mostrarlo en una pantalla de video.

Si desea mantener el dispositivo lo más simple y económico posible, use un sistema de desarrollo de microcontrolador como su sistema base o incluso un Arduino es lo suficientemente simple y económico. Ninguno de los estudiantes va a construir un simple relé o una computadora con tubo de vacío, y nadie debería realmente querer que lo hagan. Deben comenzar con un buen libro y un Arduino para la comprensión básica de la programación. Luego, más adelante, si quieren entrar a leer / controlar dispositivos externos, pueden profundizar en la programación específica o en la ingeniería.

Aquí hay un buen proyecto para que lo consideres para ideas:
http://www.instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS

Bricolaje
fuente
Aunque hoy en día lo llamamos " W65C02S "
Ignacio Vázquez-Abrams
Gracias, vengo de 6502 días (BBC micro pero también trabajé en el ZX80). Estoy de acuerdo en que hay mucho que aprender a ese nivel, de hecho, solo estaba volviendo a leer la Guía de usuario avanzada de BBC Microcomputer . Realmente quiero estar un nivel por debajo de eso, ves una instrucción de 5 bits, salta a través de un pequeño conjunto de microcódigo que establece algunos registros de bits y líneas de bus y llama a un ALU serial de bits para que puedas ver toda la lógica sucediendo poco a poco. Por eso será el más lento de todos.
Tony Robinson el
Sí, eso será más lento. ¿Revisó los detalles en esta url: instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS En realidad es bastante bueno y permite una personalización única para su sistema.
DIYser
0

Estoy de acuerdo en que sería genial tener un sistema informático completo con un LED para cada estado, visible para el ojo humano, en lugar de estar oculto dentro de una misteriosa caja negra.

Puede considerar usar un bus de memoria paralelo de bits más o menos estándar, tal vez algo como el STEbus (bus IEEE-1000) .

Puede considerar usar un montón de circuitos integrados como 74HC273 o 74LS373 o 74HC564 para almacenar los datos de modo que el estado actual de los datos dentro del chip siempre sea visible en los LED conectados a los pines de salida paralela. Luego use memorias intermedias octales de 3 estados (como 74HC241 o 74LS245) o muxes, también conectados a esos pines de salida paralelos, para canalizar los datos al bus. Terminas con unos pocos chips decodificadores uno de N y 2 chips por cada 8 bits de almacenamiento. "Esto le permite ... ver qué datos se almacenan realmente en cada byte de RAM". - Pong Guy SAP-1 Computadora simple como posible con RAM de componentes discretos . La misma disposición se utiliza para los registros en la CPU Fourbit de Jaromir o los registros en la CPU de espagueti de 8 bits de Kyle .

Los precios actuales (2016) de Mouser.com son de aproximadamente $ 0.11 / bit en la cantidad 10 para tal disposición (un pestillo de almacenamiento octal más un búfer octal de 3 estados por 8 bits) y $ 0.05 / bit para los nuevos LED en la cantidad 500. Para 2 ^ 9 bytes = 512 bytes = 2 ^ 12 bits = 4096 bits, eso es (muy aproximadamente)

  • $ 205 en LEDs
  • $ 450 en almacenamiento y chips de amortiguación
  • PS los chips decodificadores 1 de N para seleccionar el almacenamiento apropiado o el chip de memoria intermedia; el costo de tableros, cables, mano de obra, etc.

Tal vez podría construir (muy aproximadamente) 64 bytes de memoria de datos (la misma cantidad de memoria de datos que un Atmel ATTINY13 o un Microchip PIC16F570) por aproximadamente $ 90 (que puede caber dentro de su presupuesto de $ 150 ~ = £ 100).

Puede ver por qué es tentador reemplazar todos esos chips de almacenamiento y búfer y la mayoría de los chips decodificadores con un chip SRAM paralelo 32Kx8 disponible en el mercado que le brinda mucho más almacenamiento por menos de $ 10. (Alliance AS6C1008-55PCN, Cypress CY7C199CN-15PXC, etc.)

Esta puede ser la razón por la cual la mayoría de las CPU caseras, desde la pequeña CPU Nibbler de 4 bits hasta la impresionante computadora de retransmisión RC-3 http://www.computerculture.org/2012/09/rc-3-relay-computer/ http: / /www.computerculture.org/projects/rc3/ , están conectados a un chip SRAM de caja negra para la memoria principal.

Con algo como un bus de memoria estándar, quizás podría tener varias tarjetas de memoria diferentes conectadas a la CPU al mismo tiempo:

  • Unos pocos bytes de almacenamiento variable completamente visible y unos pocos bytes de ROM de programa cableado completamente visible, lo que debería ser suficiente para algunos programas de demostración interesantes.
  • Un chip SRAM que se puede conectar ocasionalmente para almacenar programas o datos o ambos cuando aún no ha creado suficiente memoria completamente visible para almacenarlos.
davidcary
fuente
0

Aquí hay otra sugerencia para un proyecto similar que podría valer la pena: construir una máquina Turing . Se trata de la máquina informática más simple posible

Dirk Bruere
fuente