arquitectura de computadores · 2013. 3. 10. · arquitectura de computadores resumen para certamen...
TRANSCRIPT
Arquitectura de Computadores
Resumen para Certamen 2
(segunda parte)
Por Franco Zuccar
MIPS
• Procesador de 32 bits (largo de instrucción)
• Registros de 32 bits (32 bits = word o palabra)
• Archivo de registros con 32 registros– $s0-$s7: saved registers
– $t0-$t9: temporary registers
– $a0-$a3: argument registers
– $v0-$v1: result registers
– $k0-$k1: kernel registers
– &zero,$at,$gp,$sp,$fp,$ra : special registers
Endian
• Es el orden con que se almacenan los bits en la memoria
• MIPS utiliza big endian
Instrucciones
• MIPS presenta 3 tipos de instrucciones
– Instrucciones R: de registros
– Instrucciones I: inmediatas o de memoria
– Instrucciones J: de saltos
• Se debe identificar que instrucción se está procesando para activar ciertos caminos que realizará la información dentro del procesador
Instrucciones R
• 6 bits que identifican el tipo de instrucción
• 15 bits que indican la dirección de 3 registros (5 bits cada uno = 32 registros)
• 5 bits para la rotación de registros (donde corresponde)
• 6 bits para definir la función a utilizar
Opcode (6) Rs (5) Rt (5) Rd (5) Sa (5) Function (6)
Instrucciones I
• 6 bits que identifican el tipo de instrucción
• 10 bits que indican la direccion de 2 registros (5 bits cada uno)
• 16 bits que almacenan el valor inmediato a utilizar en la operacion
Opcode (6) Rs (5) Rt (5) Immediate (16)
Instrucciones J
• 6 bits que identifican el tipo de instrucción
• 26 bits que indican la posición en la memoria a la cual se debe realizar el salto
Opcode (6) Target (26)
Comparación de instrucciones
• Todas presentan 6 bits iniciales que identifican a la instrucción para interpretarla correctamente.
Opcode (6) Rs (5) Rt (5) Rd (5) Sa (5) Function (6)
Opcode (6) Rs (5) Rt (5) Immediate (16)
Opcode (6) Target (26)
Interrupciones-Excepciones
• Ambas se refieren a llamadas a sub rutinas no planificadas
• Interrupción es un evento externo que genera esta llamada (teclado, pantalla, disco, etc)
• Excepción es un evento interno que genera esta llamada (overflow, división por cero, instrucción incorrecta, etc)
Tratamiento de int-exc
• Pueden ser de dos tipos:
– Con un registro especial que guarda la causa de la int-exc. La ejecucion del programa salta a una direccion especifica.
– Interrupciones vectorizadas. La ejecucion del programa salta a distintas direcciones dependiendo de la causa de la int-exc donde se deben realizar las acciones correspondientes según el caso.
Coprocesadores matemáticos
• Son unidades de hardware encargadas de realizar cálculos matemáticos complejos (multiplicación, división, matrices, etc.)
• Utilizan las operaciones básicas que presentan las ALU’s pero utilizando un algoritmo (por ejemplo para multiplicar se suma el multiplicando tantas veces como diga el multiplicador)
• El algoritmo se realiza mucho más rápido en el coprocesador que en el procesador ya que el coprocesador tiene hardware diseñado específicamente para realizar estas tareas
Unidad de Control
• Esta unidad de hardware recibe la instrucción que se debe ejecutar en el procesador y dependiendo de esta instrucción, enviará señales de control a todo el procesador para activar o desactivar ciertas partes dependiendo de lo que se necesite para ejecutar la instrucción dada
• Las señales de control pueden generarse según un esquema fijo (circuito combinacional) creado al diseñar la UC o mediante microprogramación
Etapas de una instrucción
• Para ejecutar una instrucción se deben seguir algunas o todas de las siguientes etapas:
– IF: Fetch de instrucción
– ID: Decodificación y fetch de registros
– EX: Ejecución y cálculo de la dirección efectiva
– MEM: Acceso a la memoria en lectura o escritura
– WB: Escritura de registros en el archivo de registros
IF (Instruction Fetch)
• Siempre se realiza
• Se obtiene la instrucción ubicada en la dirección contenida en PC
• A la dirección se le suma 4 para obtener la dirección de la siguiente dirección
• Se guarda nuevamente el valor en PC (excepto en las instrucciones de saltos en las cuales se guarda la dirección correspondiente al salto)
ID (Instruction Decode)
• Siempre se realiza
• La instrucción obtenida es decodificada en la unidad de control para generar las señales de control y así ejecutar la instrucción
• En las instrucciones que utilizan registros (tipos R y algunas I) además se obtienen los registros ubicados en las direcciones que la instrucción indica
EX (Execution)
• Sólo instrucciones tipo R e I
• Se realizan los cálculos en la ALU (tipo R y algunas I)
• Se calculan las direcciones de memoria efectivas (tipo I que acceden a memoria)
MEM (Memory)
• Sólo tipo I que acceden a memoria
• Se obtiene el contenido de la dirección solicitada o se escribe nuevo contenido en ella
WB (Write Back)
• Sólo instrucciones tipo R y algunas I
• Los datos obtenidos de los cálculos de la ALU o leídos desde la memoria se guardan en los registros
La máquina monociclo
• En este tipo de procesador todos los pasos que se deben ejecutar para realizar la instrucción dada se deben realizar en un solo ciclo de procesador
• Esto implica que se debe separar la memoria de datos de la memoria del programa para que estas puedan ser accedidas al mismo tiempo
Monociclo IF (R,I,J)
• El contenido de PC pasa al registro de dirección de la memoria de programa y al mismo tiempo pasa a una ALU para incrementar en 4
Monociclo ID (R, I, J)
• El OPCode (31-26) de la instrucción leída entra a la Unidad de Control
• Las direcciones de los registros a utilizar (25-16) entran al archivo de registros
Monociclo EX (R,I)
• Los registros leídos entran como operandos a la ALU y se ejecuta la operación
• Los valores inmediatos y direcciones se expanden de 16 a 32 bits y se utilizan los primeros en la ALU o se utilizan para la nueva dirección de instrucción
Monociclo MEM (I)
• Se escribe o se lee un dato en o desde la memoria
Monociclo WB (R,I)
• Se guardan los datos obtenidos de cálculos o de lectura de memoria en los registros
Monociclo Control de Salto (J,I)
• No es una etapa, sólo se define cual será la dirección de la siguiente instrucción a ejecutar
Maquina Monociclo Completa
Instrucción tipo R
• Se obtiene la instrucción
• Ingresa OPCode a UC
• Ingresan las direcciones de registros a leer al archivo de registros
• Entran los datos obtenidos de los registros a la ALU
• El resultado de la operación se guarda en un registro
Instrucción tipo I (lw)
• Se obtiene la instrucción
• Ingresa OPCode a UC
• Ingresa la dirección del registro donde se encuentra el valor a sumar a la dirección base
• Se extiende de 16 a 32 bits la dirección base
• Ingresa la dirección base extendida y el valor a sumar leído del registro a la ALU
• El resultado de la suma entra a la dirección a leer de memoria
• El valor leído de la memoria se guarda en un registro
Instrucción tipo I (beq)
• Se obtiene la instrucción• Ingresa OPCode a UC• Ingresan las direcciones de registros a leer al archivo de
registros• Se extiende de 16 a 32 bits la dirección base• Entran los datos obtenidos de los registros a la ALU• Se realiza un corrimiento a la izquierda de 2 bits a la
dirección base extendida• Se suma PC+4 y la dirección base extendida• Si la comparación de los dos registros que ingresaron a la
ALU es correcta, entonces se guarda en PC el valor de la suma de direcciones
Deficiencias de la maquina Monociclo
• Todas las instrucciones demoran lo mismo (el tiempo que toma realizarse la instrucción más lenta) perdiéndose tiempo en las instrucciones más rápidas
• Al realizarse todas las etapas en un mismo ciclo, todos los elementos deben estar disponibles siempre. Lo que implica que la memoria debe separarse entre instrucciones y datos
Maquina Multiciclo
• Separa cada etapa en un ciclo distinto. Esto hace innecesario separar la memoria y permite utilizar distintos elementos para realizar distintas tareas simultáneamente
• La ejecución de una instrucción toma solo la cantidad de ciclos que requiere para realizar sus etapas
• Se deben preservar los valores obtenidos en cada ciclo para trabajar en el siguiente con ellos. Esto se logra utilizando registros en cada entrada y/o salida de los distintos elementos
• La ejecución se comporta como una maquina de estados (pasa de la ejecución de una etapa a la siguiente como estados)
Micro programación
• La unidad de control puede estar diseñada para generar señales de control utilizando un circuito secuencial (fijo) o puede ser micro programado (variable)
• La micro programación se basa en micro instrucciones y micro operaciones
• Las micro operaciones realizan las tareas más simples como abrir o cerrar compuertas o enviar señales especificas a los distintos elementos
• Un conjunto de micro operaciones forman una micro instrucción. Estas micro operaciones no pueden ser excluyentes entre si pues se realizan al mismo tiempo
Micro operaciones
• REGin/out: habilita la compuerta de entrada o salida del registro
• Read: realiza la lectura en la memoria• Write: realiza la escritura en la memoria• WMFC: realiza una pausa hasta que la escritura/lectura en
memoria se haya realizado• Select4: selecciona la constante 4 como operando en la ALU• SelectY: selecciona el registro Y como operando en la ALU• Add/Sub: selecciona la operación de suma en la ALU• End: finaliza el micro programa
Registros en un micro programa
• RX: registro común (X=0,1,…)• PC: registro que guarda la dirección de la instrucción (no
micro) que se ejecutará• IR: guarda la instrucción leída y que se está ejecutando• MAR: registro donde se indica la dirección en la memoria
en que se desea leer/escribir• MDR: registro que guarda el dato que se desea escribir o
que se ha leído de la memoria• Y: registro que se utiliza como primer operando en la ALU
(el segundo es el contenido del bus• Z: registro que guarda el resultado de la operación realizada
en la ALU