0% encontró este documento útil (0 votos)
71 vistas34 páginas

PP 2010

Uploaded from Google Docs

Cargado por

morris star
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
71 vistas34 páginas

PP 2010

Uploaded from Google Docs

Cargado por

morris star
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

MULTIPROCESADORES

ESCALARES
PROCESADORES SUPERESCALARES

El termino superescalar acuñado en 1987, hace referencia a


una maquina diseñada para mejorar la velocidad de
ejecución de las instrucciones escalares, que es siguiente
paso en la evolución de los procesadores de uso general de
altas prestaciones.
En la implementación superescalar 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. Lo anterior plantea
problemas complejos de diseño relacionados con el cauce
de instrucciones.
La arquitectura del RISC se presta para usar técnicas
superescalares, pero también se puede hacer en una CISC.
SUPERESCALAR FRENTE A SUPERSEGMENTADO

Una solución alternativa para alcanzar mayores


prestaciones es la supersegmentacion, termino
acuñado en 1988, basada en el hecho de que muchas
etapas del cauce realizan tareas que requieren menos
de la mitad de un ciclo de reloj, por lo que se dobla la
velocidad del reloj interno, para entonces realizar dos
tareas en un ciclo de reloj externo.
El procesador supersegmentado toma mas tiempo para
ejecutar el mismo numero de instrucciones respecto al
procesador superescalar al comienzo del programa y en
cada destino de un salto.
LIMITACIONES

La aproximación superescalar depende de la habilidad


para ejecutar múltiples instrucciones en paralelo. El
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 se puede usar una combinación de
optimizaciones realizadas por el compilador y de
técnicas hardware. Las limitaciones fundamentales del
paralelismo son:
LIMITACION–DEPENDENCIA DE DATOS
VERDADERA

Conocida también como dependencia de flujo o


dependencia escritura - lectura. Se presenta cuando
hay dependencia de datos entre instrucciones, y se
debe retrasar una de las instrucciones tantos
ciclos de reloj como sea necesario para eliminar la
dependencia, es decir, hasta que los valores de entrada
estén disponibles. Limitan las prestaciones de
cualquier tipo de cauce. Una forma de compensar el
retraso es que el compilador reordene las instrucciones
de tal modo que una o mas instrucciones posteriores
que no dependan de la carga desde memoria puedan
empezar a fluir
LIMITACION–DEPENDENCIA RELATIVA AL
PROCEDIMIENTO

Se debe a la presencia de bifurcaciones en una


secuencia de instrucciones, ya que se puede saltar o no,
y no se puede ejecutar hasta la ejecución de la
bifurcación. Afecta a un cauce escalar y en un cauce
superescalares mas severo. Otra causa pueden ser las
instrucciones de longitud variable, ya que no se conoce
la longitud
OTRAS LIMITACIONES
Conflictos con los recursos. Se presenta por la
competencia de dos o mas instrucciones por el
mismo recurso (memoria, cache, buses, puertos del
fichero de registros y unidades funcionales) al mismo
tiempo. Los conflictos pueden superarse duplicando
estos o segmentando la unidad funcional.

Dependencia de salida (dependencia lectura-


escritura).

Antidependencia (dependencia lectura-escritura).


DISEÑO

Paralelismo a nivel de instrucciones. Se presenta


cuando las instrucciones de una secuencia son
independientes y por tanto pueden ejecutarse en paralelo
solapándose. Es función de la frecuencia de dependencia
de datos verdadera y relativas al procedimiento, los cuales
a su vez dependen de la espera de una operación (tiempo
que transcurre hasta que el resultado esta disponible).
Paralelismo de la maquina. Es una medida de la
capacidad del procesador para aprovechar el paralelismo a
nivel de instrucciones, que depende del numero de
instrucciones que pueden captarse y ejecutarse al mismo
tiempo (numero de cauces paralelos) y de la velocidad y
sofisticación del mecanismo usado por el procesador para
localizar instrucciones independientes
POLITICAS DE EMISION DE INSTRUCCIONES
EN PROCS SUPERESCALARES
El termino emisión de instrucciones se usa para
referirse al proceso de iniciar la ejecución de
instrucciones en las unidades funcionales.
La política de emisión de instrucciones se refiere
al protocolo para emitir instrucciones.
El procesador intenta localizar instrucciones que
puedan introducirse en el cauce y ejecutarse.
Existen tres ordenamientos importantes para lo
anterior:
El orden en que se captan las instrucciones.
El orden en que se ejecutan las instrucciones.
El orden en que las instrucciones alteran los
registros y las posiciones de memoria.
CATEGORÍAS DE POLÍTICAS DE EMISIÓN DE
INSTRUCCIONES
Emisión en orden y finalización en orden. Es la más
sencilla, es equivalente a una ejecución secuencial, no
tiene aplicación y se ocupa solamente para comparación.
Emisión en orden y finalización desordenada. Puede
haber cualquier número de instrucciones en etapa de
ejecución en un momento dado, hasta alcanzar el
máximo grado de paralelismo. La emisión se para cuando
hay una pugna por un recurso, una dependencia de
datos, o una dependencia relativa al procedimiento. La
finalización desordenada necesita una lógica de emisión
más compleja que la finalización en orden. Es más difícil
ocuparse de las interrupciones y las excepciones.
Se tiene una nueva dependencia de salida que se presenta
cuando se necesita un resultado para una instrucción, pero
existen una o más instrucciones que modifican el resultado,
por lo que la emisión debe detenerse si el resultado puede ser
sobrescrito más tarde por una instrucción anterior que tarda
más en finalizar. El siguiente código ilustra esta dependencia,
donde I4 debe esperar a que termine I3 para captar el valor
correcto.
R3 := R3 op R5 (I1)
R4 := R3 + 1 (I2)
R3 := R5 + 1 (I3)
R7 := R3 op R4 (I4)
Emisión desordenada y finalización desordenada. Se desacoplan
las etapas del cauce de decodificación y ejecución usando un
buffer llamado ventana de instrucciones, en donde el
procesador coloca las instrucciones decodificadas, mientras el
buffer no se llene. Cuando una unidad funcional de la etapa de
ejecución queda disponible, se puede emitir una instrucción
desde la ventana de instrucciones. Para que una instrucción sea
emitida se necesita que la unidad funcional particular este
disponible y que ningún conflicto ni dependencia la bloqueen.
Con esta organización el procesador tiene una capacidad de
anticipación que le permite identificar instrucciones
independientes que pueden introducirse en la etapa de
ejecución. La
antidependencia es una nueva dependencia similar a la de la
dependencia verdadera, pero a la inversa: en lugar de que la
primera instrucción produzca un valor que usa la segunda
instrucción, la segunda instrucción destruye un valor que usa la
primera instrucción. El fragmento de código ilustra la
dependencia citada, donde la instrucción I3 no puede
finalizar antes
de que la instrucción I2 comience a ejecutarse.
R3 := R3 op R5 (I1)
R4 := R3 + 1 (I2)
R3 := R5 + 1 (I3)
R7 := R3 op R4 (I4)
RENOMBRAMIENTO DE REGISTROS
Para hacer frente a los conflictos de almacenamiento
(antidependencias y dependencias de salida) donde varias
instrucciones compiten por el uso de los mismos registros, hay
un método que se basa en una solución tradicional: la
duplicación de recursos, la técnica se conoce como
renombramiento de registros. 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. Cuando se crea un nuevo valor de
registro se asigna un nuevo registro para ese valor. Las
instrucciones posteriores que accedan a ese valor como
operando fuente en ese registro tienen que sufrir un proceso
de renombramiento, por lo que, las referencias a un mismo
registro original en diferentes instrucciones
pueden referirse a distintos registros reales
PARALELISMO
Las tres técnicas de hardware (duplicación de recursos, emisión
desordenada y renombramiento) usadas en un procesador
superescalar para aumentar las prestaciones fueron estudiadas
mediante una simulación aumentando algunas características
superescalares, en donde se concluye que probablemente no
merece la pena añadir unidades funcionales sin
renombramiento de registros, aunque hay algunas mejoras de
poca importancia en las prestaciones, a costa de una
complejidad mayor del hardware, además si la ventana de
instrucciones es demasiado pequeña, las dependencias
de datos impiden la utilización efectiva de las unidades
funcionales
adicionales.
PREDICCION DE SALTOS

Una maquina segmentada de altas prestaciones debe


considerarel tratamiento de las bifurcaciones. El Intel 80486
soluciona el problema captando tanto la siguiente instrucción
secuencial a la de bifurcación como la instrucción destino del
salto. En las maquinas RISC se uso la estrategia de salto
retardado.
Con el desarrollo de las maquinas superescalares, la estrategia
de salto retardado ha perdido interés, por la razón de que hay
que ejecutar múltiples instrucciones en el espacio de retardo,
lo que origina dependencia entre instrucciones, por lo que, las
maquinas superescalares han regresado a las técnicas pre-
RISC, por ejemplo el PowerPC 601 usa una técnica sencilla de
predicción de saltos estática, en cambio el Power620 y el
Pentium, usan predicción dinámica de saltos basada en el
análisis de la historia de las bifurcaciones
PowerPC

IBM 801 RT PC RS/6000

Powerpc 601

Powerpc 602
PowerPc 601

Procesamiento
Enteros Punto flotante
de saltos

Juntas a estas unidades pueden ejecutar tres instrucciones al mismo


tiempo ofreciendo un diseño de grado tres.
Diseño de la organización 601
Unidad de envió de instrucciones

Unidad de
Unidad de punto
procesamiento de Unidad de enteros
flotante
saltos

Las instrucciones inferior


La instrucción inferior de este tipo de una instrucción de enteros se emite solo después de
de este tipo de la mitad de
la mitad de debajo de la cola de envío que se haya filtrado hasta el fondo de la cola de envío
debajo de la cola de envío
se emite a la unidad de procesamiento se emite a la unidad de
de saltos si esta puede aceptarla. punto flotante si el cause
de la instrucción de esta
mitad no esta lleno.
Causes de instrucciones

Como el 601 puede emitir instrucciones de
salto y de punto flotante desordenadamente, se
necesitan controles que aseguren la correcta
ejecución. Cuando existe una dependencia (es
decir, cuando una instrucción necesita un
operando que aun no ha sido calculado por una
instrucción previa), el cause de la unidad
correspondiente se detiene
Procesamiento de saltos

es responsabilidad de la unidad de saltos. La unidad


esta diseñada de manera tal que muchos casos los
saltos no tengan efecto en el ritmo de ejecución de las
otras unidades: a este tipo de saltos se les llama saltos
de cero ciclos. Para conseguir saltos de cero ciclos se
emplean las siguientes estrategias:
Se utiliza una lógica que examina el buffer de envió en
busca de saltos. Se generan direcciones destinto de
salto cuando aparece un salto en la mitad inferior de la
cola y no hay saltos anteriores pendientes de ejecución
Se intenta determinar el resultado de las bifurcaciones
condicionales. Si el código de condición se a ajustado
por adelantado lo suficientemente pronto, este
resultado puede determinarse. En todo caso, tan
pronto como se encuentre una instrucción de salto la
lógica determina si el salto :

No se No se puede
Se producirá producirá determinar
PowerPc 620
Es la primera implementación de 64 bits de la
arquitectura PowerPc . Una característica notable de
esta implementación es que incluye seis unidades de
ejecución independientes.
Unidad de instrucciones.
Tres unidades de enteros.
Unidad de carga/almacenamiento
Unidad de punto flotante.
El 620 puede ejecutar especulativamente hasta cuatro
instrucciones de bifurcación no resueltas (frente a una
del 601). La preedición de saltos se basa en el uso de
una tabla de historia de saltos con 2048 elementos. La
simulaciones ejecutadas por los diseñadores del
PowerPc muestran que la tasa de aciertos en la
predicción de saltos es del 90%
PENTIUM
Aunque el concepto de diseño superescalar se asocia
generalmente a la arquitectura RISC los mismos
principios superescalares se pueden aplicar a una
maquina CISC tal vez el ejemplo mas notable de ello
sea el Pentium. Comparadas con las de los diseños
RISC mas recientes, tales como el PowerPc 620 las
características superescalares del Pentium son
bastante sencillas. No obstante dan como resultado
una mejora sustancial de las prestaciones.
Como el 80486, el Pentium usa un cause de enteros de cinco
etapas.

Precaptacion: El procesador precapta instrucciones de la cache de instrucciones, las
instrucciones de longitud variable se almacena en un buffer.
Etapa de decodificación 1: El procesador decodifica la instrucción para determinar
el código de operación y la información de direccionamiento. Esta etapa también
realiza dos funciones : la comprobación de emparejamiento y la predicción de
saltos
Etapa de decodificación 2: Esta etapa genera las direcciones de referencias a
memoria.
Ejecución: En esta etapa el procesador accede a la cache de datos o calcula
resultados en la ALU en el desplazador de barril o en otras unidades funcionales del
camino de datos.
Escritura: Esta etapa actualiza los registros e indicadores con los resultados de la
instrucción.
La diferencia mas importante del Pentium y su predecesor el
80486 es que el Pentium incluye dos unidades de ejecución de
enteros independientes, llamadas U y V
Emparejamiento de instrucciones
Reglas de emparejamiento, dos instrucciones consecutivas 11
y 12 pueden enviarse en paralelo a las unidades U y V si se
cumple las siguientes reglas:
 
Las dos instrucciones son sencillas.
No hay dependencia el tipo “lectura después de escritura” ni
“escritura después de escritura”. Esto es el destino de 11 no es
la fuente de 12 y el destino de 11 no es el destino de 12.
Ninguna instrucción contiene a la vez un desplazamiento y
un operando inmediato.
solo 11 puede contener un prefijo de instrucción.
Predicción de saltos
El Pentium usa una estrategia de predicción dinámica
de saltos basada en la historia de las ejecuciones
recientes de instrucciones de bifurcación

También podría gustarte