Está en la página 1de 3

Términos y aclaraciones:

ALU – Unidad de operaciones Lógicas – Aritméticas

FP – Unidad de punto flotante

Registros F - Registros de coma flotante, son 32 registros (por ejemplo F 0, F1 ,F2 ) , pueden ser usados como registros
para almacenar números de coma flotante de precisión simple (Float) o ser usados en dúos para almacenar números
de coma flotante de doble precisión (Doble), (por ejemplo F0, F2 ,F4 ).

Registros R - Registros de enteros de propósito general, son 32 registros (por ejemplo, R0, R1, R2), el registro R0
tiene valor fijo y es igual a 0 (no puede ser modificado).

MEM[1000] – Posición en memoria 1000

SF 0(R2), F2 - En esta instrucción se guarda en la posición de memoria a la que apunta el valor guardado en el
registro R2 el contenido del registro F2

LF F0,0(R1) - En esta instrucción se carga en el registro F0 el valor almacenado en la posición de memoria a la que
apunta el valor guardado en el registro R1

Tipos de datos que puede manejar un procesador DLX.

Tipo de dato Identificador Ejemplo


Byte (8 bits) B LB (Load Byte) ADDB (Suma Byte) MOVB (Copiar Byte)
Halfword (Media Palabra, 16 Bits) H SH (Save Halfword) DIVH (Division Halfword)
Word (palabra 32 Bits) W SW (Save Word) MULTW (Multiplicacion Word) Enteros
Float (números de coma flotante de F MULTF (Multiplicacion Float) MOVF (Mover un registro)
simple precision)
Double D ADDD (Suma Doble)
Integrar I ADD, MULTI, ADDI

Nota: Si una instrucción no especifica el tipo de dato, por ejemplo, ADD, se considera que está usando números
enteros.

En las instrucciones DLX existen básicamente dos instrucciones condicionales de salto:


BEQZ R4, Etiqueta Salta si R4=0
BNEZ R4, Etiqueta Salta si R4 diferente de 0
J Etiqueta Salto incondicional a Etiqueta

1. Procesador Segmentado: es aquel que tiene múltiples etapas (cada etapa tiene funciones diferentes), en las que
diferentes instrucciones pueden estar ejecutándose en diferentes etapas del pipeline al mismo tiempo.

Procesador no segmentado: Es aquel en que las instrucciones deben ejecutarse secuencialmente y en las que al
mismo tiempo solamente se va a procesar una instrucción en todo el pipeline.

2. Etapas del pipeline de un procesador tipo RISC (DLX)

1. IF – Busqueda de la instrucción (Instruction Fetch)


2. ID – Decodificacion de la instrucción y sus operandos (Instruction Decodification)
3. EX – Ejecucion de la instrucción (Execution)
4. MEM – Acceso a Memoria, en las instrucciones L y S, es en la etapa que se realiza el Store(Save) o el Load
5. WB – Escritura de los resultados, actualización de los registros y el PC (Program Counter o contador del
programa). En el caso de la ejecución de una instrucción de control, esta es la etapa en que se tiene la
dirección de salto.

Nota: Las funciones de cada etapa se relacionan para un procesador ideal, sin aplicación de técnicas de especulación
o modificación (ya sean de hardware o software).
En un procesador real, las instrucciones tienen demoras diferentes en las diferentes etapas (el tiempo que demora
una instrucción en pasar por una etapa se denomina LATENCIA).

3. La duración de una instrucción se mide en ciclos de reloj.

El CPI se define como la cantidad de ciclos de reloj que demore el procesador en ejecutar la cantidad de
instrucciones que tenga el programa.

CPI = T (Ciclos de reloj) / Instrucciones del Programa

El CPI ideal es 1, cuanto más cercano este el CPI real del programa a 1 va a ser más eficiente, el valor del CPI no
puede ser menor a 1, ni ser negativo.

Cuando el CPI real se acerca al CPI ideal se aumenta la productividad

Generalmente lo que nos van a pedir es el CPI por Iteración, el cual se define como la cantidad de ciclos de reloj que
demora ejecutar entre el número de instrucciones de código de esa iteración.

4. Solución a las dependencias de datos

1. Detener el procesador. Muy ineficiente, demora mucho volver a arrancar el procesador, además que hay
que guardar el valor de los registros y después volver a cargar los registros, actualmente no se utiliza.
2. Agregar Stall o sea instrucciones vacias cada vez que se produzcan dependencias de datos. 3 STALL por
dependencia.
3. Técnica del Hardware Forwording: Significa adelantar el resultado de la operación antes de que se termine
de procesar la instrucción en el pipeline. El resultado debe ser adelantado para que la instrucción siguiente
pueda ir a la etapa ID
 Instrucciones L(Load) y S(Store) introducen 1 STALL, adelantan el resultado de la operación cuando
la anterior se encuentra en la etapa MEM
 Instrucciones Aritméticas (ADDx, DIVx, MULTx…etc) no introducen STALL ya que adelantan el
resultado cuando la instrucción está en la etapa EX.
 Instrucciones de control de salto (BNEZ…etc), no sufren cambios o sea se siguen manteniendo los 3
STALL ya que no adelantan el resultado de su operación.

4. Mejora de la etapa de decodificación para evaluar la condición de salto. Consiste en adelantar el resultado
de la operación de salto (BNEZ, por ejemplo), la dirección del salto se adelanta en la etapa ID de la instrucción de
salto. Queda un solo stall en los saltos

5. Paralelismo a nivel de bucle – Se produce cuando se pueden ejecutar bucles (o iteraciones) del mismo programa
con independencia (o sea que no dependen de los datos a utilizar).

Dicho de otra manera, existe paralelismo a nivel de bucle cuando estos se pueden ejecutar sin dependencias de los
valores de los datos modificados por el bucle anterior.

6. Solución de las dependencias de control

Existen varias técnicas para mejorar el rendimiento en el caso de las dependencias de control:

1. Asumir que la predicción del salto es TOMADO cuando el salto es hacia atrás y asumir que la predicción del
salto es NO TOMADO cuando el salto es hacia adelante. Esta predicción es exitosa en el 90% de los casos,
cuando no fuese exitoso hay que rectificar las instrucciones cuando se termine de procesar la instrucción de
salto. Se eliminan todos los STALL.
2. Planificación estática de instrucciones. Es una técnica de software, el objetivo es reducir los stall. Funciona
también para disminuir las dependencias de datos.
3. Planificación de bucle, desenrollado de bucle, Es una técnica de software, el objetivo es reducir los stall.

7. Planificación Dinámica. Algoritmo de Tomasulo.

En el diagrama de este algoritmo la etapa IF no se representa, a pesar de que existe, la etapa MEM se combina con
WB pasando a llamarse WB y se agrega una etapa nueva llamada COMMIT, se mantiene el número de etapas (5).

Este algoritmo plantea un cambio en la arquitectura del procesador, teniendo en cuenta los recursos finitos que
tiene cada procesador, una característica fundamental es el renombre de registros, o sea las instrucciones son
renombradas con una etiqueta que será usada durante todo el procesado de la instrucción en el pipeline, hasta que
esta guarde los registros en la última etapa (se le denomina “Hacer COMMIT”)

Se usan etiquetas, para saber el orden de las instrucciones, los resultados y que no se confundan al guardar en los
registros.

Los procesadores que trabajan bajo los principios del algoritmo de Tomasulo deben tener varias unidades
funcionales (ALU) y las latencias son variable según el tipo de instrucción.

La ejecución de las instrucciones en las unidades funcionales (ALU) se realiza fuera de orden.

La finalización de cada instrucción y el COMMIT de la misma debe de realizarse en orden.

Si no dispongo de espacio en los RB (Reorder Buffer o Buffer de reordenamiento) o en los RS (Registros de las ALU)
debo dejar de emitir instrucciones hasta que se libere espacio.

También podría gustarte