¿Cómo funcionan los registros en una CPU? [cerrado]

-1

Voy a construir una CPU simple de 4 bits usando solo puertas NAND y tengo un par de preguntas. ¿Cómo se registra realmente el trabajo en cpu? Por ejemplo:

  1. Los puntos de PC para cargar la instrucción y la CPU deben almacenar algún valor en ACC, es decir, 0xE
  2. La CPU sabe la dirección del ACC, por lo que debería llamar a la dirección del ACC en la dirección BUS y 0xE en el DATA BUS? ¿Debería la CPU borrar primero el ACC?
  3. ¿Qué tipo de flip-flop debería usar para crear un registro como el ACC?
  4. ¿La CPU debería tener algún PIN adicional para borrar los registros?
  5. ¿El registro debe ser elegido por MUX? Si construiré 16 registros de 4 bits como en INTEL 4004, ¿entonces la CPU debería usar MUX para elegir uno?
pregunta Bartosz Majkut

3 respuestas

3

Los registros son memoria dentro de un procesador que no forman parte de la memoria "principal". Los registros tienen una función de hardware dedicada (como la PC) o están vinculados a rutas de datos dentro del procesador de formas especiales que no serían posibles para la memoria principal más grande y más lenta.

El total de bits en los registros es pequeño y, debido a sus funciones especiales, por lo general deben ser rápidos. Esto significa que generalmente se implementan como flip-flops. Eso los hace rápidos y versátiles, pero mucho más grandes y más caros por bit que la memoria principal.

Casi todas las máquinas tienen un contador de programa (PC). Esto contiene la dirección de la siguiente instrucción a buscar. Se incrementó a la siguiente instrucción después de cada búsqueda. Las instrucciones de salto se escriben básicamente en este registro.

También hay registros para los datos. La salida de la ALU tiene que ir a alguna parte. Este puede ser un único registro dedicado, a menudo denominado acumulador , o un pequeño conjunto de registros. Por ejemplo, los PIC de 8 bits tienen un solo acumulador, llamado "W", pero los PIC de 16 bits tienen 16 registros. Cada uno de estos registros puede generar o almacenar datos en o desde la ALU y otros lugares.

    
respondido por el Olin Lathrop
3

Para responder a su pregunta de cómo funcionan realmente los registros en una CPU, depende de la CPU. He diseñado varios microprocesadores antiguos con ingeniería inversa y utilizan una variedad de circuitos de registro.

Los los registros de Z-80 simplemente almacenan un poco En dos inversores de acoplamiento cruzado. El valor se cambia forzando a los inversores a un valor diferente con una señal de corriente más alta. El bus está conectado a todos los registros, y las señales de control del bus seleccionan qué bus se lee o escribe. La celda de registro es una celda SRAM de 4 transistores .

El archivo de registro de 8085 es similar al Z-80, excepto para leer Un poco, las señales pasan por un amplificador diferencial. Esto permite que las señales del registro sean más débiles, lo que permite que el registro sea más denso, pero hace que el circuito de lectura sea más complejo.

Los registros del 6502 usan un circuito diferente. Nuevamente se utilizan dos inversores, pero un transistor de paso en el bucle permite que el circuito se rompa. Otro transistor de paso (con una señal opuesta) se utiliza para almacenar un nuevo valor en el inversor. (Puede pensar que esto es multiplexar el valor antiguo o el nuevo). Cada registro 6502 se implementa de manera ligeramente diferente, ya que todos tienen propósitos especiales.

Las 4004 y 8008 anteriores utilizan una celda DRAM de 3 transistores para los registros (probablemente porque de la experiencia de Intel en la construcción de DRAM). Los chips incluyen un contador de actualización y amplificadores para actualizar constantemente los datos en los registros.

Estos diseños de registro son diferentes de los diseños de compuerta NAND, ya que usan transistores de paso en lugar de lógica booleana, por lo que no son lo que usted quiere usar. Para sus preguntas específicas:

  1. La selección de registros debe ser independiente del bus de direcciones, que se utiliza para la memoria externa. Probablemente no necesite limpiar el acumulador primero.

  2. Es probable que sea más fácil para usted usar flip flops.

  3. Puede tener un pin de reinicio para borrar los registros. Deberá limpiar la PC para comenzar la ejecución en una dirección predecible, pero no necesita borrar el resto.

  4. Puede usar un MUX para seleccionar un registro para leer, pero probablemente un decodificador para seleccionar un registro para escribir.

Sugeriría diseñar (y quizás construir) su CPU a partir de componentes de nivel superior a las puertas NAND. Luego, cuando lo pones en funcionamiento, puedes descomponer los componentes en puertas NAND.

    
respondido por el Ken Shirriff
2
  

¿Qué tipo de flip-flop debo usar para crear un registro como el ACC?

Los flip-flops D deberían usarse para casi todo.

  

[¿Debería una CPU] tener algún PIN extra para borrar registros?

Por lo general, el pin RESTABLECIMIENTO en una CPU borrará todos los registros internos.

  

¿El registro debe ser elegido por MUX? Si construiré 16 registros de 4 bits como en INTEL 4004, ¿entonces la CPU debería usar MUX para elegir uno?

Este es ciertamente un enfoque que funcionaría, pero otros son posibles: consulte Blog de Ken Shirriff: en el silicio: cómo se implementan los registros del Z80 .

    
respondido por el pjc50

Lea otras preguntas en las etiquetas