Me pregunto qué tipo de búfer/técnicas se usan normalmente para conectar un registro de CPU (¿flip flops?) a un bus de CPU (datos/dirección/control). Dado que hay muchos registros en un solo bus, sé que tiene que haber algún tipo de mecanismo de tres estados, pero ¿cómo se especifica qué búferes deberían estar flotando?
Pensando lógicamente, debería haber algún tipo de bit de selección de registro junto con un bit de lectura/escritura que alterne qué registro está en uso y qué está haciendo con el valor. Aunque esto tiene sentido para mí, no creo que sea práctico Y cada entrada de registro con un bit de selección de registro o r/w.
He estado buscando esquemas o documentación en Internet y no puedo encontrar ninguna información sólida. La mayoría de los esquemas de CPU son tan complicados que me cuesta entenderlos. Cualquier ayuda es muy apreciada.
En algunas tecnologías de dispositivos, los registros se conectan a un bus mediante salidas de tres estados. Tal enfoque tiene algunas ventajas, pero generalmente requiere que haya un "tiempo muerto" entre el momento en que un registro libera el bus y el momento en que otro registro comienza a manejarlo, o corre el riesgo de que un dispositivo pueda comenzar a conducir. el bus antes de que el dispositivo anterior lo haya liberado por completo.
En otras tecnologías, este enfoque se evita en favor del uso de multiplexores anidados. Si hay 64 registros que pueden generar un bit de bus, el dispositivo puede tener ocho multiplexores de 8 vías, cada uno de los cuales acepta la entrada de un registro, y un multiplexor de 8 vías más que acepta la entrada de uno de los primeros ocho. Si bien esto puede usar un poco más de circuitos que el enfoque basado en bus, tiene la ventaja de que cada señal en todo el sistema será impulsada por exactamente un dispositivo en todo momento.
¿Ha considerado tal vez mirar la hoja de datos de una parte que alguna vez se usó para implementar registros en una CPU, como la hoja de datos 74HC574 ?
Funciona exactamente como sospechabas:
Un bit de selección de registro (un pin llamado CLK) para ESCRIBIR que, en su flanco ascendente, le dice al chip que tome los datos en sus pines de entrada y los almacene internamente. Una CPU que incluyera muchos de estos chips solo registraría los registros que necesitan almacenar el valor actual en el bus de datos, y no registraría los otros registros que necesitan mantener sus valores internos.
Otro bit de selección de registro (un pin a veces llamado "nOE") para LEER que, siempre que sea bajo, le dice al chip que envíe sus datos internos al bus de datos.
Los archivos de registro dentro de una FPGA son conceptualmente iguales.
¿Cómo se especifica qué búferes deberían estar flotando?
Por lo general, en otro lugar de la CPU se encuentra el registro de instrucciones (IR). Por lo general, un decodificador como el 74HC138 decodifica el "campo fuente" del registro de instrucciones en un montón de líneas NOE, una para cada registro. El 74HC138 se asegura de que, como máximo, un registro controle el bus de datos en cualquier momento, por lo que no hay conflicto. El 74HC138 mantiene alto el NOE de todos los demás registros, por lo que sus pines de salida están efectivamente "desconectados" ("triestados", "deshabilitados", etc.). Sin embargo, no diría que sus pines de salida están "flotando": cada pin conectado a un bit particular del bus de datos está siendo impulsado alto o bajo por el único chip seleccionado por el 74HC138.
Un demultiplexor similar decodifica el "campo de destino" del registro de instrucciones en un grupo de líneas CLK, una para cada registro, y el diseñador de la CPU agrega un pequeño circuito adicional para impulsar el reloj exactamente en el instante correcto, un poco después de que los datos hayan sido registrados. estabilizado en el bus, y un poco antes de que se haya seleccionado algún otro registro fuente y los datos comiencen a cambiar nuevamente.
cada señal en todo el sistema será impulsada por exactamente un dispositivo en todo momento.
Eso podría funcionar. Sin embargo, en la práctica, nunca he visto un archivo de registro , en un IC monolítico, o construido con chips TTL, o construido con componentes aún más simples, construido completamente con muxes en cascada. Los que he visto siempre incluyen al menos un autobús bidireccional de 3 estados en alguna parte.
davidcary