Está en la página 1de 17

TEMA 1: INTRODUCCIÓN AL PROCESAMIENTO PARALELO

1.1 Fuentes del paralelismo

Objetivo explotar el paralelismo inherente a las aplicaciones informáticas.

1.1.1 El paralelismo de control

La explotación del paralelismo de control se basa en acciones que podemos “hacer al mismo
tiempo”. Las acciones, tareas o procesos pueden ejecutarse de manera independiente sobre unos
recursos de cálculo llamados también procesadores elementales (o PE).

En el caso de que N acciones sean totalmente independientes, entonces el proceso será N veces
más rápido. Pero siempre existen ciertas dependencias, las cuales se clasifican en:

Dependencia de control de secuencia: corresponde a la secuenciación en un algoritmo clásico.


Dependencia de control de comunicación: una acción envía informaciones a otra acción.

La explotación del paralelismo de control consiste en administrar las dependencias entre las
acciones de un programa para obtener así una asignación de recursos de cálculo lo más eficaz
posible.

Figura 1. Paralelismo de Control

1.1.2 El paralelismo de datos

La explotación del paralelismo de datos proviene de la constatación natural de que ciertas


aplicaciones trabajan con estructuras de datos muy regulares (vectores, matrices) repitiendo una
misma acción sobre cada elemento de la estructura.

Como las acciones efectuadas en paralelo sobre los PE son idénticas, es posible centralizar el
control. Siendo los datos similares, la acción a repetir tomará el mismo tiempo sobre todos los
PE y el controlador podrá enviar, de manera síncrona, la acción a ejecutar a todos los PE.

Figura 2. Paralelismo de datos

1
Las limitaciones de este tipo de paralelismo viene dadas la necesidad de dividir los datos
vectoriales para adecuarlos al tamaño soportado por la máquina, la existencia de datos escalares
que limitan el rendimiento y las existencia de operaciones de difusión (un escalar se reproduce
varias veces convirtiéndose en un vector) y -reducciones que no son puramente paralelas.

1.1.3 El paralelismo de flujo

La explotación del paralelismo de flujo proviene de la constatación natural de que ciertas


aplicaciones funcionan en modo cadena: disponemos de un flujo de datos, generalmente
semejantes, sobre los que debemos efectuar una sucesión de operaciones en cascada. La figura
1.5 muestra de forma gráfica el concepto de paralelismo de datos.

Figura 2. Paralelismo de flujo

Los recursos de cálculo se asocian a las acciones y en cadena, de manera que los resultados de
las acciones efectuadas en el instante t pasen en el instante t +1al PE siguiente. Este modo de
funcionamiento se llama también segmentación o pipeline.

El flujo de datos puede provenir de dos fuentes:

 Datos de tipo vectorial ubicados en memoria. Existe entonces una dualidad muy fuerte
con el caso del paralelismo de datos.
 Datos de tipo escalar provenientes de un dispositivo de entrada. Este dispositivo se
asocia a menudo a otro de captura de datos, colocado en un entorno de tiempo real.

En ambos casos, la ganancia obtenida en relación al número de etapas (número de PE). Todos
los PE no estarán ocupados mientras el primer dato no haya recorrido todo el cauce, lo mismo
ocurrirá al final del flujo.

1.2 Clasificación de las arquitecturas avanzadas

Los principales métodos de clasificación consideran el número de conjuntos de instrucciones


y/o operadores que pueden se procesados simultáneamente, la organización interna de los
procesadores, la estructura de la conexión interprocesador, o los métodos empleados para
calcular los flujos de instrucciones y datos dentro del sistema.

1.2.1 Clasificación de Flynn

En función del análisis de los flujos de control (instruction stream) y de datos (data stream).
Estos flujos pueden ser simples o múltiples, definiendo así cuatro clases de máquinas como se
muestra en la figura:

2
a) La arquitectura SISD de Flynn.

Las instrucciones son ejecutadas secuencialmente, pero esta ejecución puede estar segmentada,
es decir, puede haber superposición de varias instrucciones encontrándose en diferentes etapas
de ejecución.

b) La arquitectura SIMD de Flynn.

Todas las unidades de procesamiento reciben la misma instrucción radiada por la unidad de
control, pero esta instrucción se ejecuta sobre diferentes conjuntos de datos.

c) La arquitectura MISD de Flynn.

Existe una colección de unidades de procesamiento que ejecutan diferentes instrucciones pero
sobre el mismo flujo de datos. Es decir, los resultados de un procesador se convierten en los
operandos del siguiente.

d) La arquitectura MIMD de Flynn.

Esta categoría cubre a los multiprocesadores y a los multicomputadores, es decir, sistemas con
más de un procesador capaz de ejecutar varios programas simultáneamente.

3
1.2.2 Otras clasificaciones

Los avances en las tecnologías han dado lugar a arquitecturas que no encajan de forma clara
dentro de la taxonomía de Flynn. Las arquitecturas híbridas no encajan bien dentro de esta
taxonomía

1.3 Medidas del rendimiento

1.3.1 Perfil del paralelismo en programas

Grado de paralelismo.

Para cada periodo de tiempo, el número de procesadores usados para ejecutar el programa se
define como el grado de paralelismo (GDP).

El GDP en función del tiempo se denomina perfil del paralelismo


El perfil de paralelismo refleja como el paralelismo software se adapta al paralelismo hardware.

Paralelismo medio.

Consideremos un procesador paralelo compuesto por n elementos de proceso homogéneos. El


paralelismo máximo en un perfil es m. En el caso ideal, n << m. Si consideramos capacidad de
cómputo de un procesador sin considerar las penalizaciones debidas al acceso a memoria,
latencia de las comunicaciones, o sobrecarga del sistema, cuando i procesadores este ocupados
durante un periodo de tiempo, tendremos que GDP = i.

La cantidad de trabajo realizado, W, es proporcional al área bajo la curva de perfil

4
O también:
Donde ti es el tiempo que: es el tiempo total de ejecución.

El paralelismo medio (A), se define como:

O también:
P i=1 ti

Paralelismo disponible. Existe un amplio rango de paralelismo potencial en los programas. Los
códigos científicos presentan un alto grado de paralelismo debido al paralelismo inherente de
los propios datos.

Speedup asintótico:

el trabajo realizado con entonces El tiempo


de ejecución de Wi sobre un único procesador es ti(1) = W=. El tiempo de ejecución de Wi
sobre k procesadores es: ti(k) = Wi / k. Con un número infinito de procesadores disponibles,
ti=i para 1 <= i <= m. Así, podemos escribir el tiempo de respuesta como:

Así definimos el speedup asintótico:

1.3.2 Rendimiento medio armónico

Consideremos un procesador paralelo con n procesadores ejecutando m programas en varios


modos con diferentes niveles de rendimiento. El rendimiento medio armónico proporciona un
rendimiento medio sobre la ejecución de un gran número de programas ejecutándose en varios
modos.

Donde es el tiempo medio de ejecución por instrucción para el programa i.

La media armónica del ratio de ejecución sobre un benchmark de m programas se define por:

5
Además, el rendimiento medio armónico está relacionado con el tiempo medio de ejecución. Si
consideremos una distribución de pesos, podemos definir el rendimiento medio armónico con
pesos como:

Speedup armónico medio.

Supongamos que un programa dado se ejecuta en n modos de ejecución con una distribución de
pesos w = {fi: i = 1; 2;…; n}. El speedup armónico medio con pesos se define como:

Ley de Amdahl. De la expresión de S se puede derivar la ley de Amdahl como sigue:

En primer lugar, supongamos que Ri = i; w = (a; 0; 0;…; 0; 1-a). Esto implica que el sistema
usa un modo secuencial puro con una probabilidad de , o los n procesadores con una
probabilidad de 1-. Sustituyendo R1 = 1, Rn = n y w en la ecuación de S, obtenemos la
siguiente expresión del speedup:

1.3.3 Eficiencia, utilización y calidad

Eficiencia del sistema. Sea O(n) el número total de operaciones elementales realizadas por un
sistema multiprocesador de n elementos y T(n) el tiempo de ejecución. En general, T(n) < O(n)
si los n procesadores realizan mas de una operación por unidad de tiempo, donde n >= 2.
Supongamos que T(1) = O(1) en un sistema uniprocesador. El factor speedup se define como:

La eficiencia del sistema para un sistema con n procesadores se define como

La eficiencia es una comparación del grado de speedup conseguido frente al valor máximo.

Redundancia y utilización. La redundancia en un cálculo paralelo se define como el ratio de


O(n) respecto a O(1):

6
1.4. Modelos del rendimiento del speedup

En esta sección describiremos tres modelos de medición del speedup. La ley de Amdahl (1967)
se basa una carga de trabajo fijo o en un problema de tamaño fijo. La ley de Gustafson (1987)
se aplica a los problemas escalables, donde el tamaño del problema se incrementa al aumentar el
tamaño de la máquina. El modelo de speedup de Sun y Ni (1993) para problemas escalables
limitados por la capacidad de la memoria. En la figura se muestra un esquema de los tres
modelos utilizados.

1.4.1 Ley de Amdahl para una carga de trabajo fija

Al incrementarse el número de procesadores en un computador paralelo, la carga fija se


distribuye entre más procesadores para la ejecución paralela. Por lo tanto, el objetivo principal
es producir los resultados lo más pronto posible. En otras palabras, el tiempo de respuesta es
nuestra principal meta. A la ganancia de tiempo obtenida para este tipo de aplicaciones se le
denomina speedup bajo carga fija.

Speedup bajo carga fija. La fórmula vista en el apartado anterior se basa en una carga de
trabajo fija, sin importar el tamaño de la máquina. Las formulaciones tradicionales del speedup,
incluyendo la ley de Amdahl, están basadas en un problema de tamaño fijo y por lo tanto en una
carga fija. En este caso, el factor de speedup está acotado superiormente por el cuello de botella
secuencial. A continuación consideraremos dos posibles situaciones: GDP < n ó GDP >= n.
Consideremos el cado en donde el GDP = i > n. Supongamos que los n procesadores se usan
para ejecutar Wi, exclusivamente. El tiempo de ejecución de Wi es.

Así el tiempo de respuesta es:

Ahora, definimos el factor speedup para carga fija como:

Sea la suma de todas las sobrecargas del sistema en un sistema con n procesadores, entonces:
Q(n)

7
Ley de Amdahl revisada. En 1967, Gene Amdahl derivó un speedup para el caso particular
donde el computador opera en modo secuencial (con GDP = 1) o en modo totalmente paralelo
(con GDP = n). Es decir, Wi = 0 si i 6= 1 ó i 6= n. En este caso, el speedup viene dado por:

1.4.2 Ley de Gustafson para problemas escalables

En la ley de Amdahl el tamaño fijo impide la escalabilidad en el rendimiento.

Escalamiento para conseguir una mayor precisión. Las aplicaciones de tiempo crítico es la
principal causa que da lugar al desarrollo de un modelo de speedup de carga fija y la ley de
Amdahl. Al aumentar el tamaño de la máquina para obtener mayor potencia de cálculo,
queremos incrementar el tamaño del problema para obtener una mayor carga de trabajo,
produciendo una solución más precisa y manteniendo el tiempo de ejecución.

Speedup de tiempo fijo. En aplicaciones de precisión crítica, deseamos resolver el problema de


mayor tamaño posible en una máquina mayor con el mismo tiempo de ejecución de resolver un
problema menor en una máquina menor. Al aumentar el tamaño de la máquina, tendremos una
nueva carga de trabajo y por lo tanto un nuevo perfil del paralelismo. Sea m0 el máximo GDP
con respecto al problema escalado y W0 i la carga de trabajo con GDP = i.

Ley de Gustafson. El speedup de tiempo fijo fue desarrollado por Gustafson para un perfil de
paralelismo especial con Wi = 0 si (i ≠ 1) y (i ≠ n). De forma similar a la ley de Amdahl,
podemos reescribir la ecuación anterior como sigue, suponiendo que Q(n) = 0,

1.4.3 Modelo del speedup limitado por la memoria

La idea es resolver el mayor problema posible, limitado por el espacio de memoria.


En este caso también es necesaria una carga de trabajo escalada, proporcionando:

o Un mayor speedup
o Mayor precisión
o Mejor utilización de los recursos.

Problemas limitados por el espacio.

Muchas aplicaciones de los ordenadores paralelos surgen de la limitación de la memoria más


que de la CPU o la E/S. Esto es especialmente cierto en sistemas multicomputador con memoria
distribuida.

Cuando se utiliza un mayor número de nodos para resolver un problema grande, la capacidad de
memoria total se incrementa de forma proporcional. Esto permite que al sistema resolver un
problema aumentado mediante el particionamiento del programa y la descomposición del
conjunto de datos.

8
En lugar de mantener fijo el tiempo de ejecución, podemos desear usar toda la memoria
disponible para aumentar aún más el tamaño del problema. En otras palabras, si tienes un
espacio de memoria adecuado y el problema escalado cumple el límite de tiempo impuesto por
la ley de Gustafson, pueden incrementar el tamaño del problema, consiguiendo una mejor
solución o una solución más precisa.

La idea es resolver el mayor problema posible, limitado únicamente por la capacidad de


memoria disponible.

Speedup de memoria fija. Sea M los requerimientos de memoria para un problema dado y W
la carga computacional. Ambos factores están relacionados de varias formas, dependiendo del
direccionamiento del espacio y las restricciones de la arquitectura. Así, podemos escribir las
siguientes expresiones: W = g (M) ó M = g-1 (W).

En un multicomputador, la capacidad total de la memoria se incrementa linealmente con el


número de nodos disponibles. El speedup de memoria fija se define de forma similar al caso
anterior.

Este modelo es válido bajo dos suposiciones:

(1) El conjunto de toda la memoria forma un espacio global de direcciones (en otras palabras,
suponemos un espacio de memoria distribuido compartido)
(2) Todo el espacio de memoria disponible se utiliza para el problema escalado.

Existen tres casos especiales en donde es de aplicación la ecuación anterior:

1. G(n)=1. Se corresponde con el caso en donde el tamaño del problema es fijo, siendo
equivalente a la ley de Amdahl.

2. G(n)=n. Se aplica al caso en donde la carga se incrementa n veces cuando la memoria se


incrementa n veces. En este caso, la ecuación se corresponde con la ley de Gustafson con un
tiempo de ejecución fijo.

3. G(n)>n. Se corresponde con la situación en donde la carga computacional se incrementa más


rápidamente que los requerimientos de memoria. De este caso, el modelo de memoria fija dará
posiblemente un mayor speedup que el de tiempo fijo.

Este análisis podemos obtener las siguientes conclusiones:


o La ley de Amdahl y de Gustafson son casos especiales del modelo de tiempo fijo.
o Cuando la computación crece más rápidamente que los requisitos de memoria, lo que es
frecuente en el caso de algunas simulaciones científicas y aplicaciones de ingeniería, el
modelo de memoria fija da lugar a un mayor speedup y una mejor utilización de los
recursos.

9
TEMA 2: ARQUITECTURAS AVANZADAS CONVENCIONALES

2.1 Procesadores Superescalares

Las instrucciones comunes -aritmética entera y en punto flotante, cargas, almacenamientos y


bifurcaciones condicionales- pueden iniciar su ejecución simultáneamente y ejecutarse de
manera independiente.

2.1.1 Limitaciones al paralelismo a nivel de instrucción

Las instrucciones no siempre se pueden ejecutarse simultáneamente.


La expresión paralelismo a nivel de instrucciones se refiere al grado en el que, en promedio, las
instrucciones de un programa se pueden ejecutar en paralelo. Para maximizar el paralelismo a
nivel de instrucciones, se puede usar una combinación de optimizaciones realizadas por el
compilador y de técnicas hardware.

Es posible distinguir cinco limitaciones fundamentales del paralelismo a las que el sistema tiene
que enfrentarse:

Dependencia de datos verdadera (dependencia de flujo o dependencia escritura-lectura).


Una segunda instrucción necesita un dato producido por otra primera.

Dependencias relativas al procedimiento


Las instrucciones que siguen a una bifurcación (se puede saltar o no saltar) tienen una
dependencia relativa al procedimiento en la bifurcación y no se pueden ejecutar hasta que se
ejecute la bifurcación.

Conflicto en los recursos


Competición de dos o más instrucciones por el mismo recurso al mismo tiempo.

Dependencia de salida (dependencia escritura-escritura)


La emisión de una instrucción debe detenerse si su resultado puede ser sobrescrito mas tarde por
una instrucción anterior que tarda mas en finalizar.

Antidependencia (dependencia lectura-escritura)


Es similar a la de la dependencia verdadera, pero a la inversa.
Las antidependencias pueden no ser un problema en un procesador escalar con cauce único si
las instrucciones se ejecutan en el orden dado por el programa y las operaciones de escritura
siempre ocurren después de las operaciones de lectura en el cauce. Son un problema si se
cambia la secuencia de ejecución, permitiendo, por ejemplo, que las instrucciones sobrepasen a
una instrucción parada.

2.1.2 Políticas de emisión de instrucciones

 Emisión de instrucciones para referirse al proceso de iniciar la ejecución de


instrucciones en las unidades funcionales del procesador
 Política de emisión de instrucciones para referirse al protocolo usado para emitir
instrucciones.

Fundamentalmente el procesador intenta localizar instrucciones, más allá del punto de ejecución
en curso, que puedan introducirse en el cauce y ejecutarse. Con respecto a esto son importantes
tres ordenaciones:

 El orden en que se captan las instrucciones.


 El orden en que se ejecutan las instrucciones.

10
 El orden en que las instrucciones alteran los registros y las posiciones de memoria.

La única restricción que tiene el procesador es que el resultado debe ser correcto.

En términos generales, las políticas de emisión de instrucciones en procesadores superescalares


se pueden clasificar en las siguientes categorías:

 Emisión en orden y finalización en orden.


 Emisión en orden y finalización desordenada.
 Emisión desordenada y finalización desordenada.

2.1.3 Implementación de la emisión desordenada

Para permitir la emisión desordenada, es necesario desacoplar las etapas del cauce de
decodificación y ejecución. Esto se hace mediante un buffer llamado ventana de instrucciones.
Con esta organización, cuando un procesador termina de decodificar una instrucción, la coloca
en la ventana de instrucciones con lo que se indica que está lista para se ejecutada.

Las instrucciones son emitidas desde la ventana siempre que sea posible su ejecución, lo cual
ocurre cuando los operandos de la instrucción están disponibles y la unidad funcional requerida
para la operación está libre.

La ventana de instrucción puede implementarse de dos maneras: centralizada o distribuida.

Ventana de instrucciones centralizada


 Mantiene todas las instrucciones pendientes sin importar su tipo.
 Cuando una instrucción tiene sus operandos y puede ser emitida, se encamina a la
unidad funcional apropiada para su ejecución.
 Si un operando no está disponible, el bit de valido se pondrá a cero.

Ventana de instrucción distribuida


 Los buffers de instrucción, denominados puestos de reserva (reservation stations), se
colocan antes de cada unidad funcional.
 Las instrucciones decodificadas son enviadas a la reserva de puesto apropiado y
posteriormente emitida a la unidad funcional cuando se reciben todos los operandos.

Las conexiones entre la ventana centralizada y las unidades funcionales requiere un mayor
ancho de banda que usando una ventana de instrucción distribuida. Una ventana de instrucción
centralizada es más eficiente en cuanto al almacenamiento ya que los buffers pueden ser usados
por cualquier tipo de instrucción.

2.1.4 Renombramiento de registros


 Hemos visto que permitir la emisión desordenada de instrucciones y/o la finalización
desordenada puede dar origen a dependencias de salida y antidependencias.
 Hay un método para hacer frente a estos tipos de conflictos de almacenamiento, que se
basa en la duplicación de recursos.
 La técnica se conoce como renombramiento de registros. Fundamentalmente, el
hardware del procesador asigna dinámicamente los registros, que están asociados con
los valores que necesitan las instrucciones en diversos instantes de tiempo.
 El renombramiento de registros se puede conseguir mediante un buffer de
reordenación. Un buffer de reordenación es una cola cuyas entradas se asignan de
modo dinámico a los registros resultados de las instrucciones.

Funcionamiento del buffer de ordenación

11
Cuando una instrucción que escribe en un registro se decodifica, se le asigna una entrada en el
buffer de reordenación. Los resultados de la instrucción se escriben en la entrada
correspondiente del buffer de reordenación. Cuando la entrada alcanza la cabeza de la cola, y el
valor ha sido escrito, se transfiere al banco de registros. Si el valor no ha sido escrito en ese
momento, la cola no avanza hasta que el valor haya sido escrito. Dado que el buffer de
reordenación asocia entradas a registros, el identificador del registro debe de almacenarse en las
entradas. También se genera una etiqueta única para cada entrada que todavía no ha sido
actualizada.

Cuando se decodifica una instrucción y se necesitan los registros operandos, se realiza una
búsqueda en el buffer de reordenación. Si no se encuentra ningún registro coincidente, se accede
al banco de registros. Si existe alguna entrada en el buffer de reordenación, el valor es leído en
el caso de que esté presente y se carga en puesto de reserva correspondiente, en caso contrario
se almacena la etiqueta. Cuando el resultado se almacena en el buffer de reordenación
reemplazando la etiqueta, también se reemplaza al mismo tiempo las etiquetas por los valores en
los puestos de reserva.

2.2 Procesadores supersegmentados

Una aproximación alternativa para aumentar el rendimiento del procesador es utilizar más
etapas, y de grano más fino, en el cauce. La reducción en la complejidad de cada etapa permite
un aumento en la frecuencia del reloj con lo que es posible conseguir rendimientos similares al
diseño superescalar.

2.3 Procesadores VLIW

La aproximación VLIW (Very Long Instruction Word) consiste en incorporar varias pequeñas
operaciones independientes en una palabra de instrucción larga.

Una arquitectura VLIW proporciona muchas más unidades funcionales que un diseño de
procesador típico, junto con un compilador que busca paralelismo a través de operaciones
básicas para mantener las unidades funcionales tan ocupadas como sea posible.

12
Las aproximaciones superescalar y VLIW son más sensibles a conflictos de recursos que la
aproximación supersegmentada. En un procesador superescalar o VLIW, un recurso debe de
duplicarse para reducir la posibilidad de conflictos, mientras que el diseño supersegmentazo
evita cualquier conflicto de recursos.

 Para evitar que el procesador supersegmentado sea más lento que el superescalar, la
tecnología usada en la supersegmentación debe de reducir el retraso del un cauce de
instrucción más largo.

 Los diseños supersegmentados requieren una tecnología de transistores más rápida


como la GaAs (galio arsénico), mientras que los diseños superescalares usan a menudo
tecnología CMOS.

Aunque la supersegmentación parece una solución más inmediata que el diseño superescalar, la
tecnología existente favorece el aumento en la densidad de integración sobre el aumento en la
velocidad del circuito. La densidad ha aumentado a mayor ratio que la velocidad de los
transistores.

Los avances tecnológicos han permitido combinar las técnicas superescalar y supersegmentada,
proporcionando buenas soluciones a muchos de los problemas de eficiencia existentes en la
industria de ordenadores actual.

2.4 Ejemplos de máquinas reales

2.4.1 PowerPC 620

El primero en implementar una arquitectura íntegramente de 64 bits.


·  La frecuencia a la que se ofrece es de 133MHz.
·   Su arquitectura se basa en un proceso de 0,5 micras CMOS y alimentada con 3,3v de tensión,
conservando la compatibilidad CMOS/TTL

Características

Posee 2 cachés de datos e instrucciones de 32KB cada una, 2 MMUs, buses de 128 bits de datos
y 40 de direccionamiento.
·  El empaquetado es esta vez de 625 pines.
· Captación y decodificación de cuatro instrucciones por ciclo
·  La ejecución especulativa y desordenada

Unidades de Ejecución
 Dos unidades de enteros sencillas, XSU0 y XSU1 (un ciclo de reloj)
 Una unidad de enteros compleja, MCFXU, multiplicación y división entera (latencia de
ejecución de 3 a 20 ciclos de reloj )
 Una unidad de lectura/escritura, LSU, lecturas y escrituras a memoria (latencia de 1
ciclo para las lecturas de enteros y 2 ciclos para las de FP )
 Una unidad de punto flotante, FPU (latencia de 2 ciclos para la multiplicación, suma o
multiplicación-suma, y 31 ciclos de reloj para la división). Esta unidad esta totalmente
 Una unidad de saltos, BPU, que completa los saltos e informa a la unidad de captación
de los fallos en las predicciones

13
Etapas por las que pasan todas las instrucciones

1. Captación.
Inserta en la cola de decodificación las instrucciones obtenidas de la caché y determina la
dirección de la siguiente instrucción.

2. Decodificación de la instrucción.
Las instrucciones son decodificadas y preparadas para su emisión. Todas las porciones críticas
de la decodificación se realizan aquí.

3. Emisión de instrucciones.
Emite las instrucciones al puesto de reserva apropiada. Los operandos son leídos del fichero de
registros en esta etapa, ya sea a la unidad funcional o a los puestos de reserva. Se le asigna un
registro en donde se guardara el resultado de la instrucción y una entrada en el buffer de
reordenación para asegurar una terminación ordenada.

4. Ejecución.
Se pasa a este estado cuando todos los operandos están disponibles en el puesto de reserva. Una
de las seis unidades funcionales ejecuta la instrucción. La unidad de terminación es informada
de que la instrucción ha finalizado.

5. Finalización (Commit).
Ocurre cuando todas las instrucciones anteriores se han comprometido. Pueden finalizar hasta
cuatro instrucciones por ciclo. A esta etapa también se le denomina completación de la
instrucción (instruction completion).

Rendimiento del cauce del Power PC 620

Para determinar el rendimiento del 620, nos centraremos en el throughput de la etapa de


emisión como la medida crítica del rendimiento.

Esto debido a dos razones.

1. Es una buena medida del rendimiento en un estado estacionario, dado que cuando el
procesador se encuentra en equilibrio las instrucciones no pueden emitirse mas rápidamente que
lo que son ejecutadas o comprometidas.

2. En la etapa de emisión se encuentra algunos de cuellos de botella claves que son comunes a
muchas máquinas con planificación dinámica de instrucciones.

Rendimiento de la etapa de Captación

Esta etapa es capaz de captar hasta cuatro instrucciones por ciclo e introducirlas en el buffer de
instrucciones de ocho entradas.

14
La etapa de captación es capaz de mantener 5.2 instrucciones en el buffer no limitando el
rendimiento. La captación limita el rendimiento cuando no es capaz de proporcionar cuatro
instrucciones para su emisión

Circunstancias bajo la cuales la unidad de captación puede fallar en su misión de mantener el


buffer de instrucciones lleno:

Un fallo en la predicción de un salto: No se añaden instrucciones al buffer; la unidad de


captación está totalmente parada
Un fallo en la caché de instrucciones: No se añaden instrucciones al buffer; la unidad de
captación está totalmente parada
Línea de caché parcialmente llena.

Emisión de instrucciones.

La emisión de instrucciones intenta enviar cuatro instrucciones a las unidades de reserva en


cada ciclo de reloj. Las razones principales por las que puede no conseguirse esta meta son dos.

1. Existe limitaciones en la etapa de emisión de instrucciones que hacen que ciertas


combinaciones de instrucciones no puedan emitirse simultáneamente.
2. La falta de progreso en las etapas de ejecución y finalización dan lugar a una falta de
buffers necesarios para emitir una instrucción. Dado que las instrucciones se emiten
ordenadamente, estos conflictos pueden hacer que el número medio de emisiones caiga

Existen cinco posibles causas de conflicto a la hora de emitir una instrucción:


1. No existe un puesto de reserva disponible.
2. No hay registros disponibles.
3. El buffer de reordenación está lleno.
4. Existen dos operaciones para la misma unidad funcional.
5. Otros conflictos.

Rendimiento de la etapa de Ejecución

Una vez que las instrucciones han sido emitidas, deben de esperar hasta que la unidad funcional
y los operandos están disponibles. Existen seis clases diferentes de unidades funcionales lo que
permite hasta 6 iniciaciones por ciclo.

Causas de retraso en esta etapa

1. Operando fuente no disponible.


2. Unidad funcional no disponible.
3. Iniciación fuera de orden no permitida. La unidad de salto y la de punto flotante
necesitan que las instrucciones se inicien ordenadamente. En consecuencia, una
instrucción puede quedar bloqueada hasta que las instrucciones que le preceden se
inicien. Esta es una limitación de la unidad de ejecución.
4. Serialización. Unas pocas instrucciones requieren una ejecución totalmente ordenada.
Estas instrucciones esperan en el puesto de reserva hasta que las instrucciones
anteriores finalicen.

Cuando la etapa de emisión se bloquea y una instrucción en un puesto de reserva no puede


ejecutarse por alguno de los cuatro motivos arriba indicados, un diseñador puede contemplar
una de las tres siguientes razones:

15
1. Si el operando fuente no esta disponible y la emisión se detiene porque los buffers
están llenos, esto indica que el paralelismo existente es insuficiente para el tamaño de ventana
dado por los buffers. Si el código tiene mas paralelismo, entonces menos puestos de reserva
deberían esperar otros resultados, dando lugar a más iniciaciones y a una necesidad de menos
buffers. Alternativamente, el diseñador puede aumentar el número de buffers, dando lugar a una
mayor ventana y a un posible incremento del ILP.

2. Si la instrucción no se ha iniciado porque la unidad funcional está en uso, el problema


básico es que la capacidad de las unidades funcionales no es suficiente para manejar la
distribución dinámica de instrucciones, al menos en ese punto de ejecución. La solución en este
caso es incrementar el número de unidades funcionales o incrementar la segmentación de
aquellas que no lo son.

3. Las dos últimas causas de no iniciación de la ejecución (ejecución fuera de orden no


permitida y serialización) son debidas a elecciones de implementación de la etapa de ejecución;
y pueden ser eliminadas reorganizando la unidad de ejecución.

Rendimiento de la Finalización de instrucciones


 La completación de instrucciones puede detenerse únicamente cuando la instrucción a
la cabeza del buffer de reordenación no ha terminado su ejecución.
 Esta parada puede dar lugar a que se llene el buffer de reordenación, lo que haría que se
bloquease la emisión de instrucciones.
 Las paradas de esta etapa son muy infrecuentes. Como resultado, esta etapa no es un
cuello de botella.

Resumen: Rendimiento total

El IPC para estos programas de pruebas va desde el 1 hasta el 1.8. Esta diferencia entre el IPC
ideal y el real se debe a tres factores:

1. Limitaciones debidas a las unidades funcionales.


2. Perdidas en etapas especificas.
3. ILP limitado y buffers finitos. Paradas que se producen por la falta de paralelismo o
insuficientes buffers. También se incluyen aquí los fallos de caché que dan lugar a ciclos de
parada.

2.4.2 MIPS R10000

 Implementado en tecnología CMOS/0.35-micron.


 Área del chip: 298 mm²,
 Contiene 6.8 millones de transistores.

Características Principales.

 Razones de instrucción de 1.5 a 2 veces su velocidad de reloj. 


 Alrededor de 300 MIPS para un CPU con un reloj de 200 MHz (195MHz
exactamente).
 Utiliza cinco unidades de ejecución independientes: 2 de enteros, 2 de flotantes, y
una para Lectura/Escritura.
 Compatible con Anteriores: Su juego de instrucciones es el MIPS IV.
 Memoria Caché de Instrucciones hasta de 32Kbytes
 Puede retirar hasta 4 instrucciones del Caché de datos.
 Puede emitir hasta cuatro instrucciones por ciclo.

16
 Capaz de traspasar los saltos condicionales mediante Ejecución Especulativa.
Hasta 4 saltos no resueltos.

Renombramiento de Registros: Menor sensibilidad a dependencias de datos y errores de


CHACHÉ.
Emisión desordenada de instrucciones. Hasta 32 instrucciones simultáneas.
Problemas: cronogramación de código y de ubicación de datos.

Tabla de Mapeo: ligar registro lógico (referenciado en la instr.) al físico.


Lista de Activos: Lista de Is en el cause. Siempre Ordenada.
Free List: Lista de Registros Disponibles.

Características:

1. 64 Registros Físicos.
2. Registros Lógicos.
3.    Active List: Hasta 32 Valores.
4.    Free List: Hasta 32 valores.

Etiqueta de 5 bits a c/I. Cada instrucción puede ser localizada en lista de activos.
Latencia. Tiempo transcurrido entre la petición realizada y el inicio de su respectiva respuesta.
De un CPU, el tiempo entre cargar una instrucción y el termino de su ejecución.

Aplicaciones a cálculos complejos y gráficas 3D.


Hoy hay diseños mejorados: R14000

17

También podría gustarte