Imagen

CPU de 1 bit, la menos potente del mundo

mvalder
Mensajes: 1209
Registrado: 21 May 2023 02:04

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por mvalder »

dancresp escribió:Tengo una duda con esta CPU de 1 supuesto bit...

Se programa con los 4 microswitch que hay en la placa.
Entonces, ¿esto no lo convierte en una CPU de 4 bits con un único nibble de memoria?
Igual digo tonterías porque yo no sé apenas de esto. He tenido que consultar el manual del Z80 para acordarme de cómo se formaban las instrucciones (opcodes + operandos). Y eso que de joven ensamblaba a mano y me funcionaron los programas...cahis.

He mirado la definición de las instrucciones en el readme.md del github en inglés:
Description

Left switch: Controls MUX to choose whether to update Reg A or PC
Right switch: Controls second XOR operand or sets destination PC address

LR
00: MUX=0, RA=RA^0=RA, PC=!PC
01: MUX=0, RA=RA^1=!RA, PC=!PC
10: MUX=1, RA=RA, PC=0
11: MUX=1, RA=RA, PC=1

In regular words:
OFF, OFF will preserve the value of A and advance PC (0->1, 1->0)
OFF, ON will invert the value of A (0->1, 1->0) and advance PC (0->1, 1->0)
ON, OFF will preserve the value of A and set PC to 0
ON, ON will preserve the value of A and set PC to 1
Y luego la traducción al inglés del index.md de los docs (lo marco como código para que separe algo las columnas).

Código: Seleccionar todo

item				spec
general purpose register		1bit x 1
address space				2bit
address bus width			1bit
ROM capacity				 4bit
instruction set				ADD, JMP
program counter			1bit
flag register				Unimplemented
arithmetic operations		1bit addition (XOR)
clock frequency				Approximately 1Hz
Total number of ICs			 Four
Creo que el invento es una CPU de 1 bit con:
  • - registros de 1 bit (uno solo, acumulador). La palabra = 1 bit y, por tanto, eso da nombre a la CPU. Sin embargo, existe una "palabra larga" de 2 bits para las instrucciones.
    - un juego de 2 instrucciones que ocupan 2 bits cada una (uno por el opcode y otro por el operando).
    - El espacio de direcciones (de palabras) de memoria sería de 4 bits, aunque no lo dice así la documentación. En total, son los 4 microinterruptores de la ROM. Eso requeriría un bus de direcciones de 2 bits para dar un total de 2^2 = 4 palabras, pero.. ver más abajo.
    - No hay RAM. El LED de salida se controla con el Registro Acumulador.
    - El contador de programas tiene 1 bit (dos valores posibles, 0 y 1).
    - El bus de direcciones es de 1 bit y, por tanto, el espacio de direcciones son 2 bits. Estas direcciones son para el contador de programa, no las palabras de la RAM/ROM. Podríamos decir que el contador (y el bus) funciona con la "palabra larga" de 2 bits.
Y entonces:
  • - La capacidad de 4 bits (palabras) para la ROM de la 1-bit CPU es consistente con la capacidad de direccionamiento de un Z80 (8 bits). El Z80 tiene un espacio de memoria (en palabras =bytes) que da el bus de direcciones (con 16 bits, el doble de los 8 bits de registros y datos). 2^16 = 65536 = 64kB (64 k palabras).
    - Despista un poco eso de que el el contador de programa de la 1-bit CPU no tenga la misma métrica que el espacio de direcciones de palabras y se mueva de dos en dos bits por las palabras (cortas) de la ROM. En principio, uno esperaba que la CPU de 1 bit tuviera un bus de direcciones de 2 bits, pero no es necesario en este caso.
Y ya está bien de rollo, que no son horas.
Avatar de Usuario
ron
Mensajes: 22317
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por ron »

Pues en Japón debe ser el tamagotchi de moda porque se ha agotado. xD

Out of Japan: This ultra-low-end 1-bit DIY "computer" sold out immediately after launch
No display outputs, no peripheral inputs, just some LEDs to prove it's working


-507
Avatar de Usuario
cacharreo
Mensajes: 1983
Registrado: 03 Jun 2023 09:37
Ubicación: /home/cacharreo/

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por cacharreo »

ron escribió:Pues en Japón debe ser el tamagotchi de moda porque se ha agotado. xD
Como las combas inalámbricas de AliExpress. -banghead
dancresp escribió:Tengo una duda con esta CPU de 1 supuesto bit...
Se programa con los 4 microswitch que hay en la placa.
Entonces, ¿esto no lo convierte en una CPU de 4 bits con un único nibble de memoria?
Más bien 4 bits de memoria (4 palabras de 1 bit).
© cacharreo
dancresp
Mensajes: 6547
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por dancresp »

Según el manual hay estas combinaciones:

Código: Seleccionar todo

01 23 | Function | Looped C equivalent | Description
----------------------------------------------------------------------------
00 00 | NOP, NOP | void; void;         | Do nothing
00 01 | NOP, INV | void; a=!a;         | Half frequency blink
00 10 | NOP, NOP | void; void;         | Do nothing
00 11 | NOP, HLT | void; while(1);     | Halt forever
01 00 | INV, NOP | a=!a; void;         | Half frequency blink
01 01 | INV, INV | a=!a; a=!a;         | Maximum frequency blink
01 10 | INV, NOP | a=!a; void;         | Half frequency blink
01 11 | INV, HLT | a=!a; while(1);     | Usually one state change, then halt
10 00 | HLT, NOP | while(1); void;     | Halt forever
10 01 | HLT, INV | while(1); a=!a;     | At most one state change, then halt
10 10 | HLT, NOP | while(1); void;     | Halt forever
10 11 | HLT, HLT | while(1); while(1); | Halt forever
11 00 | NOP, NOP | void; void;         | Do nothing
11 01 | NOP, INV | void; a=!a;         | Half frequency blink
11 10 | NOP, NOP | void; void;         | Do nothing
11 11 | NOP, HLT | void; while(1);     | Halt forever
cacharreo escribió:Más bien 4 bits de memoria (4 palabras de 1 bit).
Vale, serían 4 bits de memoria, pero dispuestos en 2 bits por cada una de las 2 direcciones de memoria que puede direccionar... creo.

Es para volverse loco de lo simple que es !!! -banghead
Buscando la IP de la W.O.P.R. he encontrado mi índice
mvalder
Mensajes: 1209
Registrado: 21 May 2023 02:04

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por mvalder »

dancresp escribió:Según el manual hay estas combinaciones:

Código: Seleccionar todo

01 23 | Function | Looped C equivalent | Description
----------------------------------------------------------------------------
00 00 | NOP, NOP | void; void;         | Do nothing
00 01 | NOP, INV | void; a=!a;         | Half frequency blink
00 10 | NOP, NOP | void; void;         | Do nothing
00 11 | NOP, HLT | void; while(1);     | Halt forever
01 00 | INV, NOP | a=!a; void;         | Half frequency blink
01 01 | INV, INV | a=!a; a=!a;         | Maximum frequency blink
01 10 | INV, NOP | a=!a; void;         | Half frequency blink
01 11 | INV, HLT | a=!a; while(1);     | Usually one state change, then halt
10 00 | HLT, NOP | while(1); void;     | Halt forever
10 01 | HLT, INV | while(1); a=!a;     | At most one state change, then halt
10 10 | HLT, NOP | while(1); void;     | Halt forever
10 11 | HLT, HLT | while(1); while(1); | Halt forever
11 00 | NOP, NOP | void; void;         | Do nothing
11 01 | NOP, INV | void; a=!a;         | Half frequency blink
11 10 | NOP, NOP | void; void;         | Do nothing
11 11 | NOP, HLT | void; while(1);     | Halt forever
cacharreo escribió:Más bien 4 bits de memoria (4 palabras de 1 bit).
Vale, serían 4 bits de memoria, pero dispuestos en 2 bits por cada una de las 2 direcciones de memoria que puede direccionar... creo.

Es para volverse loco de lo simple que es !!! -banghead
Sí, es lo que yo decía de que el contador de programa salta de dos en dos bits. Como solo hay dos posiciones posibles para el contador, el bus de direcciones solo necesita un bit.
Avatar de Usuario
cacharreo
Mensajes: 1983
Registrado: 03 Jun 2023 09:37
Ubicación: /home/cacharreo/

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por cacharreo »

mvalder escribió:Sí, es lo que yo decía de que el contador de programa salta de dos en dos bits. Como solo hay dos posiciones posibles para el contador, el bus de direcciones solo necesita un bit.
El contador de programa salta de bit en bit, es decir PC solo toma los valores 0 y 1, aunque las instrucciones tienen 2 bits (opcode y operando). Esta CPU no tiene que leer el primer bit de instrucción y después el operando porque están dichos bits están directamente conectados a los dos multiplexores y a la puerta XOR, el primer conmutador DIP-2 (con sus dos interruptores) se habilita cuando PC=0 y el segundo cuando PC=1.

A todos los efectos los dos bits de cada instrucción se "leen" a la vez. Los dos diodos bajo cada conmutador DIP-2 y el inversor entre ambos conmutadores son los que controlan qué instrucción se ejecuta según el valor de PC (que lo lleva el flip-flop que está más abajo en el esquema).

El primer bit de cada instrucción controla qué valor seleccionan los dos multiplexores y el segundo bit el valor a seleccionar.

Para que se comprenda mejor cómo trabaja os dejo este enlace con el diseño hecho para Logisim y ahí podéis verlo funcionando, cambiar las instrucciones sobre la marcha, ver los efectos, etc. No es lo más entretenido del mundo en estas fechas pero sí mucho más ilustrativo que ver solo el esquema. ;)

La siguiente tabla muestra las posibles combinaciones de instrucciones numerando los conmutadores DIP de 0 a 3 de izquierda a derecha.

Código: Seleccionar todo

01 23 | Instrucciones | Descripción
----------------------------------------------------------------------------
00 00 | NOP, NOP      | No hace nada
00 01 | NOP, INV      | El LED RegA parpadea a 1/4Hz
00 10 | NOP, NOP      | No hace nada
00 11 | NOP, HLT      | Parada (infinita)
01 00 | INV, NOP      | El LED RegA parpadea a 1/4Hz
01 01 | INV, INV      | El LED RegA parpadea a 1/2Hz
01 10 | INV, NOP      | El LED RegA parpadea a 1/4Hz
01 11 | INV, HLT      | Parada o cambio de estado en RegA y después, parada
10 00 | HLT, NOP      | Parada (infinita)
10 01 | HLT, INV      | Parada o cambio de estado en RegA y después, parada
10 10 | HLT, NOP      | Parada (infinita)
10 11 | HLT, HLT      | Parada (infinita)
11 00 | NOP, NOP      | No hace nada
11 01 | NOP, INV      | El LED RegA parpadea a 1/4Hz
11 10 | NOP, NOP      | No hace nada
11 11 | NOP, HLT      | Parada (infinita)
Las frecuencias de parpadeo son aproximadas, tened en cuenta que el reloj de esta CPU en realidad oscila alrededor de los 971mHz.
© cacharreo
mvalder
Mensajes: 1209
Registrado: 21 May 2023 02:04

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por mvalder »

cacharreo escribió: A todos los efectos los dos bits de cada instrucción se "leen" a la vez. Los dos diodos bajo cada conmutador DIP-2 y el inversor entre ambos conmutadores son los que controlan qué instrucción se ejecuta según el valor de PC (que lo lleva el flip-flop que está más abajo en el esquema).

El primer bit de cada instrucción controla qué valor seleccionan los dos multiplexores y el segundo bit el valor a seleccionar.

Para que se comprenda mejor cómo trabaja os dejo este enlace con el diseño hecho para Logisim y ahí podéis verlo funcionando, cambiar las instrucciones sobre la marcha, ver los efectos, etc. No es lo más entretenido del mundo en estas fechas pero sí mucho más ilustrativo que ver solo el esquema. ;)
Muchas gracias, cacharreo. ¡Cómo te lo has currado! Como dije en mi presentación hace meses, yo no sé electrónica;, pero voy aprendiendo con este foro, je, je. Me he instalado el Logisim y lo miraré con detalle.

Me da la impresión de que estamos diciendo lo mismo de dos formas distintas. Intento explicarme:
  • Numeramos los bits (microinterruptores) de izquierda a derecha, como dices: b0 (opcode), b1 (operando), b2 (opcode), b3 (operando).
    El contador de programa tiene un solo bit.
    PC=0 - > apunta a la instrucción que comienza por el bit b0 y está formada por b0 y b1.
    PC=1 - > apunta a la instrucción que comienza por el bit b2 y está formada por b2 y b3.
Como dices, en realidad, solo se lee el opcode en el b0 o el b2, y los operandos (b1 o b3) no se direccionan.
  • A eso es a lo que yo me refería (quizá impropiamente) con que el contador de programa salta de dos en dos bits... en el espacio de la ROM formado por las direcciones 0-1-2-3. La instrucción JMP 1 significa: lee el tercer bit (b2) y ejecuta ese opcode.
    El valor del PC salta de bit en bit, la dirección (medida en bits) a la que se refiere en ROM saltaría de dos en dos.
1-bit-CPU.png
1-bit-CPU.png (34.31 KiB) Visto 781 veces
Ya digo que en realidad solo soy aficionado a estas cosas. Muchas gracias de nuevo por el trabajo.
Avatar de Usuario
cacharreo
Mensajes: 1983
Registrado: 03 Jun 2023 09:37
Ubicación: /home/cacharreo/

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por cacharreo »

mvalder escribió:Muchas gracias, cacharreo. ¡Cómo te lo has currado! Como dije en mi presentación hace meses, yo no sé electrónica;, pero voy aprendiendo con este foro, je, je.
De nada, por mi parte estoy encantado de tener un sano debate sobre estos temas. ;)
mvalder escribió:Me he instalado el Logisim y lo miraré con detalle.
Es una pena que le falten los diodos y los interruptores (conmutadores) SPST normalitos. El circuito hubiera quedado más simple y visual de contar con esos componentes.
mvalder escribió:Me da la impresión de que estamos diciendo lo mismo de dos formas distintas. Intento explicarme:
  • Numeramos los bits (microinterruptores) de izquierda a derecha, como dices: b0 (opcode), b1 (operando), b2 (opcode), b3 (operando).
    El contador de programa tiene un solo bit.
    PC=0 - > apunta a la instrucción que comienza por el bit b0 y está formada por b0 y b1.
    PC=1 - > apunta a la instrucción que comienza por el bit b2 y está formada por b2 y b3.
Entendí lo que querías decir pero lo que quería destacar es que a nivel físico, dejamos el lógico de lado, los dos bits de cada instrucción están conectados y son leídos/ejecutados -que no deja de ser una forma de hablar a la vista del esquema- simultáneamente en el mismo momento que se fija el valor del reloj. En una CPU normal no habría ninguna duda, primero se lee b0, después b1, después b2, después b3,... pero en este cacharro no hay memoria sino interruptores y los así llamados bits de las instrucciones están directamente cableados a la lógica de control (a modo de bus de control o de instrucciones). Nada que ver con RAM, ROM o similares y por eso que puede confundir buscar la analogía.
© cacharreo
mvalder
Mensajes: 1209
Registrado: 21 May 2023 02:04

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por mvalder »

cacharreo escribió: Entendí lo que querías decir pero lo que quería destacar es que a nivel físico, dejamos el lógico de lado, los dos bits de cada instrucción están conectados y son leídos/ejecutados -que no deja de ser una forma de hablar a la vista del esquema- simultáneamente en el mismo momento que se fija el valor del reloj. En una CPU normal no habría ninguna duda, primero se lee b0, después b1, después b2, después b3,... pero en este cacharro no hay memoria sino interruptores y los así llamados bits de las instrucciones están directamente cableados a la lógica de control. Nada que ver con RAM, ROM o similares y por eso que puede confundir buscar la analogía.
Gracias por destacar el nivel físico, cacharreo. El diseño del circuito hace que el contador de programa solo tenga un bit.

Por eso se me ocurrió decir por ahí arriba que en la ROM no se operaba sobre palabras (1 bit) sino sobre palabras largas (2 bits). Dicho de otro modo: sólo hay dos direcciones, la 0 y la 1, que son a las que se refiere el PC.

Edito:
Y, en efecto, la segunda mitad de la "palabra larga" no se "lee". Y la primera mitad, tampoco, je, je.
dancresp
Mensajes: 6547
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por dancresp »

Sea como sea, no deja de ser curioso lo que da que hablar un cacharro tan simple.

Teniendo el esquema del circuito, al final habrá que hacer una tirada aunque solo sea para tenerlo.
Buscando la IP de la W.O.P.R. he encontrado mi índice
Avatar de Usuario
cacharreo
Mensajes: 1983
Registrado: 03 Jun 2023 09:37
Ubicación: /home/cacharreo/

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por cacharreo »

dancresp escribió:Teniendo el esquema del circuito, al final habrá que hacer una tirada aunque solo sea para tenerlo.
Y con el de Naoto64 agotado no queda otra. ;)
© cacharreo
Avatar de Usuario
cacharreo
Mensajes: 1983
Registrado: 03 Jun 2023 09:37
Ubicación: /home/cacharreo/

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por cacharreo »

dancresp escribió:Teniendo el esquema del circuito, al final habrá que hacer una tirada aunque solo sea para tenerlo.
Mide 100x25mm. y está pendiente de unos retoques en la serigrafía ¿cómo lo véis así? ¿que quedaría por añadir?

Imagen Imagen Imagen Imagen Imagen
© cacharreo
mvalder
Mensajes: 1209
Registrado: 21 May 2023 02:04

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por mvalder »

cacharreo escribió:
dancresp escribió:Teniendo el esquema del circuito, al final habrá que hacer una tirada aunque solo sea para tenerlo.
Mide 100x25mm. y está pendiente de unos retoques en la serigrafía ¿cómo lo véis así? ¿que quedaría por añadir?

Imagen Imagen
¡Fantástico! Me pido uno; montado, por favor.

Para rizar el rizo:
- ¿Podría llevar unas instrucciones serigrafiadas en la cara de abajo?
- Si pudiera funcionar con batería ya sería la bomba. Claro que implicaría aumentar algo el tamaño y poner algún componente más.

Sea como sea, si se hace la tirada, no me la pierdo. Muchas gracias, cacharreo.
Avatar de Usuario
cacharreo
Mensajes: 1983
Registrado: 03 Jun 2023 09:37
Ubicación: /home/cacharreo/

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por cacharreo »

mvalder escribió:- ¿Podría llevar unas instrucciones serigrafiadas en la cara de abajo?
Así está.
mvalder escribió:- Si pudiera funcionar con batería ya sería la bomba. Claro que implicaría aumentar algo el tamaño y poner algún componente más.
Lo he tenido en cuenta pero el soporte para la batería ocupa demasiado (y aparte la electrónica asociada). En este tamaño actual 100x25mm se están dentro de la oferta de los fabricantes de placas y por encima de 100mm. el precio se dispara.
© cacharreo
dancresp
Mensajes: 6547
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por dancresp »

cacharreo escribió:Mide 100x25mm. y está pendiente de unos retoques en la serigrafía ¿cómo lo véis así? ¿que quedaría por añadir?
Un DigiRule de 1 bit !!! -shock

Por descontado que yo me pido uno.
Supongo que los entregarán montados...

Ya dirás que hemos de hacer. -drinks
Buscando la IP de la W.O.P.R. he encontrado mi índice
Avatar de Usuario
cacharreo
Mensajes: 1983
Registrado: 03 Jun 2023 09:37
Ubicación: /home/cacharreo/

Re: CPU de 1 bit, la menos potente del mundo

Mensaje por cacharreo »

De momento está abierto el turno de sugerencias, correcciones, revisiones,... más adelante se enviará a hacer (que se recibe solo la placa sin componentes) y comenzará la fase de pruebas.
© cacharreo
Responder

Volver a “No Catalogados”