MiC Flashcards
En el MiC-1, qué es el MAR?
Memory Adress Register: Es un registro que indica la dirección de memoria saliente, sobre la que se realizará una lectura o escritura.
En el MiC-1, qué es el MDR?
Memory Data Register: Es el registro que contiene el dato de memoria leído o el dato a escribir.
En el MiC-1, qué es el MBR?
Memory Byte Register: Es un registro de 1 byte, se utiliza para leer los opcodes de 8 bits.
¿Cómo se realiza un READ de memoria en el MiC-1?
- Se escribe en el MAR la dirección de memoria a leer.
- Se ejecuta el READ.
- El dato se encuentra en el MDR.
¿Cómo se realiza un WRITE en memoria en el MiC-1?
- Se escribe en el MDR el dato a escribir.
- Se escribe en el MAR la dirección de memoria en la que se escribirá el dato.
- Se ejecuta el WRITE.
- El dato del MDR se encuentra escrito en la dirección indicada por el MAR.
¿Cómo se realiza un FETCH en el MiC-1?
Se habilita una señal de FETCH que leerá de a 1 byte (8 bits) el valor al que apunta el PC. Este será el opcode de la instrucción, que se guarda en el MBR.
¿Para qué sirve el bus B del MiC-1?
Permite que los registros envíen su información a la ALU. Sólo 1 registro puede colocar información sobre el bus al mismo tiempo, esto se define con un a señal de enable.
¿Para qué sirve el bus C del MiC-1?
Permite escribir la información a la salida de la ALU sobre los registros. Se puede escribir sobre más de un registro al mismo tiempo, esto depende de una señal de enable.
¿Cómo funciona la ALU?
La ALU es un circuito combinacional que realiza operaciones lógicas (NOT, OR, AND) junto con las de suma y resta sobre las entradas A y B. Tiene 6 líneas de control para elegir la operación y 2 bits de salida:
- N: Indica que el resultado es negativo.
- Z: Indica que el resultado es cero.
¿En el Mic-1, cómo se compone la palabra de control a la salida del Control Store?
- Next_address (9 bits): Puntero hacia la próxima microinstrucción dentro del Control Store.
- JAM (3 bits): JAMN y JAMZ indican si se debe prestar atención a los bits N y Z de salida de la ALU para posiblemente realizar un salto condicional. En cambio el JMPC indica que se debe ignorar el Next_address, se realiza en la última microinstrucción antes de un FETCH.
- ALU y Shifter (8 bits): Señales de control de la ALU y el shifter.
- C (9 bits): Señales de enable del bus C.
- Memoria (3 bits): Señales para el acceso a memoria, puede iniciarse un READ, WRITE o FETCH.
- B (4 bits): Señales de enable del bus B. Como solo se puede publicar 1 registro a la vez, utiliza un decodificador para ahorrar bits.
En el MiC-1, qué es el MPC?
Micro Program Counter: Es un registro virtual que apunta a la siguiente microinstrucción.
¿Cuánto tarda en ejecutarse una microinstrucción?
1 ciclo de máquina.
¿Por qué se usa el campo Next_Address?
Para poder ejecutar el microcódigo de forma no secuencial.
¿Cómo funcionan los saltos en el MiC-1?
La memoria del Control Store se divide en dos mitades de 256 microinstrucciones, tal que si se realiza un salto el MPC va a ir a Next_Address + 256 (cambia sólo el MSB) para seguir con la ejecución del programa. Si no se toma el salto, el MPC simplemente va a ir a Next_Address.
En el MiC-1, por qué el MBR tiene 2 enables?
Al utilizar el MBR para leer un dato en modo de direccionamiento inmediato, será necesario pasar el valor leído de 8 bits a 32 bits. Dependiendo de si el dato era signado, se deberá completar con 1s o 0s. Entonces un enable (MBR) es para leer de forma no signada (siempre rellena con 0s) mientras que el otro (MBRU) es para leer de forma signada (rellena con el MSB dependiendo del caso).
En el MiC-1, cómo se contruye el valor del MPC?
El valor del MPC generalmente será Next_Address, salvo en los siguientes casos:
- Bit JAMN/JAMZ = 1 y N/Z = 1: Al realizar un salto condicional, el MSB del Next_Address cambiará de valor.
- Bit JMPC = 1: Al buscar una nueva instrucción, se utiliza el opcode del MBR.
En el MiC-1, qué es el TOS?
Top of Stack: Es un registro que guarda una copia del valor al que el Stack Pointer apunta. Debe ser actualizado manualmente y debe ser válido al inicio y final de una instrucción.
¿Cuál es la diferencia entre READ y FETCH?
READ es para leer el dato de 32 bits al que apunta el MAR para luego cargarlo en el MDR mientras que FETCH es para leer el opcode de 8 bits al que apunta el PC para luego cargarlo en el MBR.
¿Con qué instrucción arranca siempre el MiC-1?
Con un NOP, para gastar 1 ciclo mientras se ejecuta el FETCH y así introducir un desfasaje entre la instrucción a la que apunta el PC y la que indica el MBR.
¿Cómo terminan todas las instrucciones del MiC-1?
Todas terminan en la microinstrucción Main1 que incrementa el PC, ejecuta un FETCH (que para el siguiente ciclo habrá cargado un opcode futuro en el MBR) y busca el opcode actual para ejecutar la siguiente instrucción.
Como el FETCH tarda 1 ciclo en ejecutarse, hay un desfasaje. Usamos el MBR para saber qué opcode hay que ejecutar ahora mientras que el FETCH es para la próxima instrucción.
¿Qué cambia entre el MiC-1 y el MiC-2?
- Bus A: Ahora la entrada A a la ALU puede recibir los datos de cualquier registro, eliminando la necesidad de siempre pasar por el registro H. Esto significa que la palabra de control deberá contar con 4 bits más para seleccionar el bus A.
- MBR2: Se agrega un registro de 16 bits para leer operandos de 2 bytes en el modo de direccionamiento inmediato.
- Instruction Fetch Unit (IFU): Unidad de hardware dedicada que realiza los FETCH automáicamente.
En el MiC-2, cómo se compone y funciona la IFU?
La Instruction Fetch Unit está compuesta por los siguientes registros:
- MBR1: Guarda el próximo opcode o los operandos de 8 bits.
- MBR2: Guarda los operandos de 16 bits.
- Shift Register: Funciona como cola FIFO y va guardando los valores futuros que trae el Prefetch. Cada lectura sobre MBR1 o MBR2 desplaza el shift register y libera la cola.
- PC: Apunta a la próxima instrucción. Puede incrementarse en 1 o 2 dependiendo de si leyó un opcode de 8 bits o un operando de 16 bits.
- IMAR: Realiza el FETCH a memoria y trae de 4 bytes del programa, que se cargan en la cola cuando se liberan 4 lugares. Se incrementa de a 4 bytes.
En el MIC-2, cómo afectan los saltos condicionales a la IFU?
En caso de un salto imprevisto, se deberá modificar el PC junto al IMAR y descartar el contenido del Shift Register.
¿En qué se diferencia el PRE-FETCH con un Pipeline?
En que si bien ambos buscan adelantar trabajo, el pre fetch no realiza cosas en paralelo.