Está en la página 1de 24

2014

PROCESAMIENTO
SUPERESCALAR
CURSO:
ARQUITECTURA DE COMPUTADORAS

DOCENTE:
ING.ARELLANO SALAZAR, CESAR

ALUMNOS:

ARIAS TANDAYPAN, JORGE LUIS


CASTILLO VELASQUEZ, NELLY R.
HARO GUTIERREZ, JUAN JEINY
VARGAS OTINIANO, ALVARO
ALFREDO

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERIA DE SISTEMAS

NDICE
INTRODUCCIN ...............................................................................................................3
PROCESAMIENTO SUPERESCALAR ............................................................................4
I.

DEFINICIN .................................................................................................................... 4

II.

IMPORTANCIA ............................................................................................................... 4

III. EXPLOTACIN DEL PARALELISMO A NIVEL DE INSTRUCCIN ...................... 5


IV. LIMITACIONES .............................................................................................................. 5

V.

a)

DEPENDENCIA RELATIVAS AL PROCEDIMIENTO ........................................ 5

b)

DEPENDENCIA DE DATOS VERDADERA ......................................................... 6

c)

ANTIDEPENDENCIA ............................................................................................. 8

SUPERESCALAR FRENTE AL SEGMENTADO ......................................................... 8

VI. CUENSTIONES RELACIONADAS CON EL DISEO ............................................... 10


1.

PARALELISMO EN LAS INTRUCCIONES Y PARALELISMO DE LA


MAQUINA.............................................................................................................. 10

2.

POLITICAS DE EMISION DE INSTRUCCIONES .............................................. 12


a)

EMISIN EN ORDEN Y FINALIZACIN EN ORDEN ................................. 12

b)

EMISIN EN ORDEN Y FINALIZACIN DESORDENADA ....................... 13

c)

EMISIN DESORDENADA Y FINALIZACIN DESORDENADA ............. 14

3.

RENOMBRAMIENTO DE REGISTROS .............................................................. 15

4.

PARALELISMO DE MQUINA .......................................................................... 17

5.

PREDICCION DE SALTOS................................................................................... 19

VII. EJECUCIN SUPERESCALAR ................................................................................... 20


VIII. IMPLEMENTACIN SUPERESCALAR ..................................................................... 21
IX. EJEMPLOS SUPERESCALARES ................................................................................. 21
CONCLUSIONES ............................................................................................................. 23
REFERENCIAS ............................................................................................................... 24

ARQUITECTURA DE COMPUTADORAS

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

INTRODUCCIN
La ejecucin segmentada permite instrucciones simultneas, pero slo una
instruccin puede estar en cada etapa del cauce.
En una arquitectura superescalar se dispone de mltiples cauces de instrucciones
independientes, y a su vez segmentados, de modo que puede iniciarse la ejecucin
de varias instrucciones en forma simultnea (MIP: mltiple issue precessors)
Una arquitectura superescalar tiene las prestaciones de la segmentacin,
permitiendo adems la existencia simultnea de varias instrucciones en la misma
etapa. Para ello es necesaria la duplicacin de recursos y la utilizacin de diversas
tcnicas que permitan optimizar su utilizacin.
Como puede iniciarse la ejecucin de varias instrucciones en el mismo ciclo,
puede alcanzarse una productividad mayor que una instruccin por ciclo de reloj.
En la prctica se consiguen aceleraciones cercanas a dos.
Un procesador sper segmentado es aquel que divide la ejecucin de la instruccin
en muchos pasos sencillos, por lo que puede conseguir altas velocidades de reloj.
La supersegmentacin es compatible con otros mtodos de aumentar la velocidad
de los procesadores. Es de prever un uso cada vez ms extendido de esta tcnica,
en combinacin con otras tcnicas como la superescalar.
Por ejemplo una descomposicin en 5 etapas de segmentacin como la del
Pentium compuesta por las etapas de bsqueda, decodificacin, lectura, ejecucin
y escritura, permite aplicar otra segmentacin a cada una de las unidades
funcionales que intervienen en cada ciclo como son: la cache de instrucciones, el
decodificador de instruccin, la cache de datos, la ALU o el banco de registro.

ARQUITECTURA DE COMPUTADORAS

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

PROCESAMIENTO SUPERESCALAR
I.

DEFINICIN
El procesamiento superescalar es la ltima de una serie de innovaciones
tendientes a producir procesadores cada vez ms rpidos. Explotando el paralelismo
a nivel de instruccin, los superescalares son capaces de ejecutar ms de una
instruccin por ciclo de reloj (dos, tres, cuatro, ocho ya es mucho).
Los procesadores superescalares pueden iniciar la ejecucin simultnea de varias
instrucciones escalares en paralelo de manera que se pueden operar varios
elementos de un vector dentro de una misma iteracin.
Para esto, es necesario que existan varias unidades aritmtico-lgicas, de punto
flotante y de control. El proceso que sigue el micro es transparente al programa,
aunque el compilador puede ayudar analizando el cdigo y generando un flujo de
instrucciones optimizado.

II.

IMPORTANCIA
Lo esencial del enfoque superescalar es su habilidad para ejecutar
instrucciones en diferentes cauces de manera independiente y concurrente. El
concepto puede llevarse ms lejos permitiendo que las instrucciones se ejecuten en
un orden diferente al del programa. La siguiente figura muestra, en trminos
generales, el planteamiento superescalar. Hay mltiples unidades funcionales, cada
una de las cuales est implementada como un cauce segmentado, que admiten la
ejecucin en paralelo de varias instrucciones. En el ejemplo, dos operaciones
enteras, dos de coma flotante y una de memoria (carga o almacenamiento) pueden
estar ejecutndose en el mismo instante.

Figura 2.1: Planteamiento Superescalar

ARQUITECTURA DE COMPUTADORAS

UNIVERSIDAD NACIONAL DE TRUJILLO

III.

INGENIERA DE SISTEMAS

EXPLOTACIN DEL PARALELISMO A NIVEL DE INSTRUCCIN


El hecho de que la implementacin superescalar tenga varios cauces
introduce un nuevo nivel de paralelismo. Los procesadores superescalares sacan
provecho del paralelismo a nivel de instruccin, que hace referencia al grado en el
que, en promedio, las instrucciones de un programa se pueden ejecutar en paralelo.
Para ello implementan tcnicas que permiten romper el flujo secuencial de
instrucciones de un programa, para simultanear la ejecucin de varias, en el mismo
procesador.
No hay procesador moderno que no use alguna forma de paralelismo a nivel
de instruccin. Los cauces segmentados, escalares y supersegmentados son
diferentes tcnicas que utilizan el paralelismo a nivel de instruccin.
En este tema se estudiarn las caractersticas de las implementaciones
superescalares que explotan el paralelismo a nivel de instruccin de forma
implcita, internamente. Es decir, aquellos procesadores superescalares cuyo
hardware implementa las tcnicas que permiten romper el flujo de instrucciones del
programa, para ejecutarlas en paralelo, incluso de forma desordenada, y lo hacen
de manera transparente al programador, y en tiempo de ejecucin.

IV.

LIMITACIONES
La aproximacin superescalar depende de la habilidad para ejecutar
mltiples instrucciones en paralelo. La expresin paralelismo en las instrucciones
se refiere al grado en el que, en promedio, las instrucciones de un programa se
pueden ejecutar en paralelo. El procesamiento superescalar se enfrenta ante las
siguientes limitaciones:
a)

DEPENDENCIA RELATIVAS AL PROCEDIMIENTO

La Presencia de saltos en una secuencia de instrucciones complica


el funcionamiento del cauce. Las instrucciones que siguen una
bifurcacin (en la que se puede saltar o no) tienen una dependencia
relativa al procedimiento en esa bifurcacin y no pueden ejecutarse hasta
que se ejecute el salto. En la grfica 3.1, se ilustra el efecto de un salto
en un cauce superescalar de grado 2.
Como hemos visto, este tipo de dependencia relativa al
procedimiento tambin afecta a un cauce escalar. Las consecuencias para
un cauce superescalar son ms graves, ya que se pierde un mayor nmero
de oportunidades de comenzar a ejecutar instrucciones en cada retardo.
Si se usan instrucciones de longitud variable, surge otro tipo de
dependencia relativa al procedimiento. Puesto que no se conoce la
longitud de una instruccin concreta, sta se ha de codificarse al menos
parcialmente antes de captar la siguiente instruccin. Ello impide la
capacitacin simultnea necesaria en un cauce superescalar. Esta es una
ARQUITECTURA DE COMPUTADORAS

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

de las razones por las que las tcnicas superescalares se aplican ms


fcilmente a arquitecturas RISC o similares, que tienen una longitud de
instruccin fija.

Grfica 3.1: Dependencia Relativas al Procedimiento


b)

DEPENDENCIA DE DATOS VERDADERA


Se produce una dependencia verdadera de datos entre dos
instrucciones cuando una instruccin no se puede ejecutar hasta que
finalice la ejecucin de la otra. Considrese la secuencia siguiente:
add r1,r2 ; cargar el registro r1 con el contenido de r2 ms el contenido de r1.
move r3,r1 ; cargar el registro r3 con el contenido de r1.

Como vemos, la segunda instruccin necesita un dato producido


por la primera, por lo que debe esperar a que concluya la ejecucin de la
primera para que est listo el dato que necesita. En esta secuencia, la
primera instruccin es una operacin de suma, que podemos asumir que
tarda un ciclo de reloj en ejecutarse, y por ello introduce un retraso de un
ciclo en la ejecucin de la siguiente instruccin.
As, ambas instrucciones no pueden ejecutarse en paralelo. En
este caso se dice que existe una dependencia verdadera de datos entre
ambas instrucciones (tambin llamada dependencia de flujo o
dependencia de escritura/lectura).

ARQUITECTURA DE COMPUTADORAS

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

La grfica 3.2 ilustra esta dependencia en una maquina


superescalar de grado 2, es decir, aquellas que carecen de
dependencias de datos entre ellas y, por tanto, pueden ejecutarse en
paralelo. Como puede observarse, la ejecucin de ambas es
simultnea. En el caso de que exista dependencia de datos entre la
primera y la segunda instruccin, se retrasa la segunda instruccin
tantos ciclos de reloj como sea necesario hasta que estn
disponibles todos sus valores de entrada necesarios para eliminar
la dependencia. Consideremos ahora la secuencia siguiente:
load r1,ef ; cargar el registro r1 con el contenido de la direccin de
memoria.
move r3,r1 ; cargar el registro r3 con el contenido de r1.

En esta secuencia la primera instruccin es una carga desde


memoria, la cual causar un retraso para la ejecucin de la siguiente
instruccin. En el mejor de los casos se tardar dos o ms ciclos de reloj,
y eso suponiendo que el dato se encuentra en la memoria cach. Si el dato
no estuviera en cach el retraso de la segunda instruccin sera mayor,
tantos ciclos como se necesite para cargar el dato de memoria a registro.
Para atenuar este retraso, se puede utilizar la carga retardada, que
se introdujo durante el tema anterior. Sin embargo, esta tcnica es menos
efectiva en un cauce superescalar, pues las instrucciones independientes
que se efectan durante la carga posiblemente se ejecuten en un ciclo,
dejando al procesador parado hasta que concluya la carga.

Grfica 3.2: Dependencia de Datos Verdadera


ARQUITECTURA DE COMPUTADORAS

UNIVERSIDAD NACIONAL DE TRUJILLO

c)

INGENIERA DE SISTEMAS

ANTIDEPENDENCIA

Una instruccin S2 es anti dependiente de S1 si y solo si S2


modifica un recurso que S1 lee y S1 precede a S2 en el orden de
ejecucin.
Consideremos el fragmento de cdigo siguiente:
I1:
I2:
I3:
I4:

r3
r4
r3
r7

<<<<-

r3
r3
r5
r3

op r5
+ 1
+ 1
op r4

Con esta poltica aparece la posibilidad de que I3 se ejecute antes


que I2. Ntese que si esto ocurre, I3 modificara el registro R3, que es
utilizado como operando fuente de I2. Por ello, no es posible que I3 se
ejecute antes que I2. El trmino anti dependencia hace referencia a que
esta limitacin es inversa a la dependencia verdadera (en lugar de que la
primera produce un valor que usa la segunda, la segunda destruye un
valor que usa la primera).
V.

SUPERESCALAR FRENTE AL SEGMENTADO


Si bien el diseo superescalar es compatible con la supersegmentacin, no son
tcnicas similares. Por ello, se dedica este apartado a la descripcin de la
supersegmentacin. Y es que la palabra supersegmentacin nos lleva a la tentacin
de aplicar la ecuacin:
Superescalar + segmentado = supersegmentado
Cuando en realidad la ecuacin correcta sera:
Segmentado + segmentado = supersegmentado.
La supersegmentacin consiste en segmentar algunas de las etapas (en concreto las
ms lentas) de los procesadores segmentados, en dos o ms etapas de forma que se
permita que existan dos instrucciones a la vez dentro de la misma etapa y unidad
funcional sin tener que replicar sta (la rplica constituira superescalaridad). As,
un procesador supersegmentado es aquel que aplica dos veces el concepto de
segmentacin, la primera a nivel global, y la segunda a nivel interno de sus unidades
funcionales.
La figura 4.1 compara las dos aproximaciones. La parte superior del diagrama
ilustra un cauce normal, usado como base de la comparacin. El cauce base emite
una instruccin por ciclo de reloj y puede ejecutar una etapa del cauce en cada ciclo.
El cauce tiene cuatro etapas: captacin de instruccin. Decodificacin de la
operacin. Ejecucin de la operacin y escritura del resultado. La etapa de ejecucin
se ha destacado con una trama por motivos de claridad. Observe que aunque se

ARQUITECTURA DE COMPUTADORAS

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

ejecuten varias instrucciones concurrentes, solo hay una instruccin en la etapa de


ejecucin en un determinado instante.

La parte siguiente del diagrama muestra una implementacin superescalar


que es capaz de ejecutar dos etapas del cauce por ciclo de reloj. Una forma
alternativa de enfocar esto consiste en que las funciones realizadas en cada etapa se
pueden dividir en dos partes no solapadas y que cada una se ejecuta en medio ciclo
de reloj. Se dice que una implementacin de un cauce supersegmentado que se
comporta de esta forma es de grado 2. Por ltimo, la parte inferior del diagrama
muestra una implementacin superescalar capaz, de ejecutar en paralelo dos
instrucciones en cada etapa. Naturalmente, tambin son posibles implementaciones
supersegmentadas y supersegmentadas de mayor grado.
Las dos realizaciones, supersegmentadas y superescalar, representadas en la
siguiente figura, ejecutan el mismo nmero de instrucciones en el mismo tiempo
cuando funcionan de forma interrumpida. El procesador supersegmentado se queda
atrs con respecto al procesador superescalar al comienzo del programa y en cada
destino de un salto.

Grfica 4.1: Superescalar frente al Segmentado

ARQUITECTURA DE COMPUTADORAS

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

Otro de los diagramas representados es un cauce supersegmentado. Como


puede verse, es capaz de ejecutar dos instrucciones por ciclo de reloj. Sin embargo
esto no implica superescalaridad. La supersegmentacin puede entenderse aqu
como el resultado de dividir las funciones realizadas en cada etapa en dos partes
iguales, no solapadas, cada una de las cuales se ejecuta en 1/2 ciclo de reloj. La
implementacin de un cauce supersegmentado de este tipo, se denomina de grado
2. Tambin son posibles implementaciones supersegmentadas de mayor grado.
De esta forma, dividiendo cada etapa en 2, el ciclo de reloj de periodo T se
ver reducido a la mitad, T/2, doblando as la capacidad del cauce. Ntese que la
supersegmentacin de la figura provoca un desdoble de la seal de reloj al doble de
la frecuencia que en los dems diagramas.
En general, la supersegmentacin lleva asociada la subdivisin interna del
ciclo de reloj base en ciclos supersegmentados, lo cual implica diseos que trabajan
a muy alta frecuencia.
El diagrama de la figura presenta un cauce superescalar, una
implementacin capaz de ejecutar dos instrucciones en paralelo en cada etapa, en
unidades funcionales diferentes, por supuesto. La implementacin de un cauce
superescalar de este tipo se denomina de grado 2. Tambin son posibles
implementaciones superescalares de mayor grado.
VI.

CUESTIONES RELACIONADAS CON EL DISEO


1.

PARALELISMO EN LAS INSTRUCCIONES Y PARALELISMO


DE LA MQUINA
Ya se ha hecho referencia anteriormente al paralelismo a nivel de
instruccin definindolo como el grado en el que, en promedio, las instrucciones
de un programa se pueden ejecutar en paralelo. ste paralelismo se puede
explotar cuando las instrucciones de una secuencia de programa son
independientes, y por ello pueden solapar su ejecucin en paralelo. Ntese que
este paralelismo depende de la secuencia de instrucciones del programa. Como
ejemplo de este concepto consideremos los siguientes fragmentes de cdigo:

Grfica 5.1: Diferencias entre Paralelismo en las Instruccin y P. de Maquina

ARQUITECTURA DE COMPUTADORAS

10

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

Las tres instrucciones de la secuencia de la izquierda son independientes,


ntese que usan registros con destino diferente y por ello podran ejecutarse en
cualquier orden sin que ello variara el resultado. De la misma manera, tambin
podran ejecutarse todas a la vez, en paralelo, sin alterar el resultado. Por otra
parte, la secuencia de instrucciones de la derecha no puede ejecutarse en
paralelo. Ntese que la segunda instruccin usa el resultado de la primera y, a su
vez, la tercera instruccin usa el resultado de la segunda.
As, en la secuencia izquierda existe paralelismo a nivel de instruccin,
mientras que en la secuencia derecha no existe.
El paralelismo a nivel de instruccin de un programa depende de la
frecuencia con que ocurren las dependencias verdaderas de datos y las
dependencias relativas al procedimiento que haya en el programa.
El paralelismo de la mquina es una medida de la capacidad del
procesador para sacar partido del paralelismo a nivel de instrucciones. El
paralelismo de la mquina depender del nmero de instrucciones que se pueden
captar y ejecutar al mismo tiempo, y de la capacidad del procesador para
localizar instrucciones independientes.
Se denomina grado de paralelismo al nmero mximo de instrucciones
que se puede ejecutar en paralelo.
Es importante diferenciar bien los conceptos de paralelismo a nivel de
instruccin y paralelismo de la mquina, y la relacin entre ellos. Ambos son
factores importantes para incrementar las prestaciones de la ejecucin. Un
programa que tenga un bajo nivel de paralelismo a nivel de instruccin (es decir,
una gran cantidad de dependencias entre sus instrucciones) no podr sacar el
mximo partido de una mquina con un alto grado de paralelismo, quedando
infrautilizada dicha mquina. Por otra parte, una mquina con un bajo grado de
paralelismo limitar las prestaciones de la ejecucin de un programa con un alto
nivel de paralelismo a nivel de instruccin
Para maximizar el paralelismo a nivel de instruccin de un programa, los
compiladores realizan ciertas optimizaciones y los procesadores implementan en
hardware ciertas tcnicas, algunas de las cuales veremos a continuacin.

ARQUITECTURA DE COMPUTADORAS

11

UNIVERSIDAD NACIONAL DE TRUJILLO

2.

INGENIERA DE SISTEMAS

POLTICAS DE EMISIN DE INSTRUCCIONES


a)

EMISIN EN ORDEN Y FINALIZACIN EN ORDEN

Es la poltica de emisin de instrucciones ms sencilla. Consiste


en emitir instrucciones secuencialmente, en el orden en que lo hara una
ejecucin secuencial, y escribir los resultados en el mismo orden. Es una
poltica de emisin tan simple que solo tiene utilidad como base para la
comparacin de otras aproximaciones.
La figura 5.2 muestra un ejemplo de esta poltica de emisin de
instrucciones. En esta podemos apreciar la representacin de un cauce
superescalar con dos vas de captacin y decodificacin de instrucciones,
tres unidades funcionales para la ejecucin de instrucciones, y dos copias
de la etapa de escritura.
El ejemplo mostrado se corresponde a un fragmento de cdigo,
del cual se obtienen las siguientes restricciones:

I1 necesita dos ciclos para ejecutarse.


I3 e I4 compiten por la misma unidad funcional.
I5 depende de un valor producido por I4.
I5 e I6 compiten por una unidad funcional.

Como se puede observar, un procesador que implementa esta


poltica de emisin capta las instrucciones en orden, de dos en dos
(porque hay dos vas de captacin), pasndolas a la unidad de
decodificacin. Como las rdenes se captan por parejas y en orden, no se
producir otra captacin hasta que se hayan emitido las instrucciones y
las etapas de decodificacin se encuentren vacas. Para garantizar la
finalizacin en orden, la emisin de instrucciones se detiene
temporalmente cuando hay una pugna por una unidad funcional o cuando
una instruccin necesita ms de un ciclo de reloj para ejecutarse.

Grfica 5.2: Poltica de Emisin de Instrucciones

ARQUITECTURA DE COMPUTADORAS

12

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

Ntese que no hace falta conocer exactamente cules son las


instrucciones del fragmento de cdigo del ejemplo. Con slo conocer las
dependencias de datos entre ellas, los ciclos que necesitan para ejecutarse
y los recursos que necesitan (p.ej. unidades funcionales) para su
ejecucin, es suficiente para determinar la forma del patrn de emisin,
ejecucin y escritura.
b)

EMISIN EN ORDEN Y FINALIZACIN


DESORDENADA

La finalizacin desordenada se usa en los procesadores RISC


escalares para mejorar la velocidad de las instrucciones que necesitan
ciclos.
Con la finalizacin desordenada, puede haber cualquier nmero
de instrucciones en la etapa de ejecucin en un momento dado, hasta
alcanzar el mximo grado de paralelismo de la mquina ocupando todas
las unidades funcionales. La emisin de instrucciones se para cundo hay
una pugna por un recurso, una dependencia de datos o una dependencia
relativa al procedimiento.

Grfica 5.3: Emisin en Orden y Finalizacin Desordenada


Aparte de las limitaciones anteriores, surge una nueva
dependencia, a la cual nos referimos anteriormente como dependencia de
salida. El siguiente fragmento de cdigo ilustra esta dependencia (op
representa cualquier operacin)
I1:
I2:
I3:
I4:

R3
R4
R3
R7

<<<<-

R3
R3
R5
R3

op R5
+ 1
+ 1
op R4

La finalizacin desordenada necesita una lgica de emisin de


instrucciones ms compleja que la finalizacin en orden. Adems, es ms
difcil ocuparse de las interrupciones y excepciones. Cuando ocurre una
interrupcin, la ejecucin de instrucciones se suspende en el punto actual,
para reanudarse posteriormente. El procesador debe asegurar que la

ARQUITECTURA DE COMPUTADORAS

13

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

reanudacin tiene en cuenta que, en el momento de la interrupcin,


algunas interrupciones posteriores a la instruccin que provoc dicha
interrupcin, pueden haber finalizado ya.
c)

EMISIN DESORDENADA Y FINALIZACIN


DESORDENADA

La emisin en orden tiene una seria limitacin, el procesador


decodifica instrucciones hasta que aparece una dependencia o conflicto.
A partir de dicho punto no se decodificarn ms instrucciones hasta que
se resuelva dicho conflicto. Por ello, el procesador no puede seguir
buscando aquellas instrucciones independientes que pudieran haber ms
all de este punto y que podran ser ejecutadas, sacando as ms partido
a la mquina y aumentado la eficiencia de la ejecucin. ste es el
concepto de emisin desordenada.
Para permitir la emisin desordenada es necesario desacoplar las
etapas del cauce de decodificacin y ejecucin. Esto se hace mediante un
buffer llamado ventana de instrucciones.
As, cuando un procesador termina la decodificacin de una
instruccin, coloca sta en la ventana de instrucciones. Mientras la
ventana de instrucciones no se llene, las vas de captacin y
decodificacin pueden captar y decodificar libremente, sin verse
condicionadas por la etapa de ejecucin. Cuando una unidad funcional
de la etapa de ejecucin queda disponible, se puede emitir una instruccin
desde la ventana de instrucciones a la etapa de ejecucin. Cualquier
instruccin puede emitirse, siempre que:
a) Necesite la unidad funcional particular que est disponible.
b) Ningn conflicto ni dependencia la bloqueen.
El resultado de esta organizacin es que el procesador tiene
capacidad de anticipacin, que le permite examinar las siguientes
instrucciones del cdigo para identificar instrucciones independientes
que puedan ser ejecutadas. Esta capacidad de anticipacin ser mayor
cuanto mayor sea el tamao de la ventana de instrucciones, pues al
aumentar dicho tamao es posible realizar la bsqueda de instrucciones
independientes sobre un mayor nmero de instrucciones.
En la figura 5.4 se muestra el funcionamiento de esta poltica de
emisin. Ntese que en cada ciclo se captan y decodifican dos
instrucciones. En cada ciclo, tambin se transfieren dos instrucciones
decodificadas a la ventana de instrucciones (siempre que no est llena).
La ventana de instrucciones desacopla las etapas de codificacin y
ejecucin. A partir de la ventana las instrucciones pueden ser emitidas
desordenadamente. Podemos ver la ejecucin desordenada en la

ARQUITECTURA DE COMPUTADORAS

14

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

ejecucin de I6 antes de I5 (dado que I5 depende de I4, pero no de I6).


De este modo, se ahorra un ciclo en la ejecucin del cdigo, comparado
con la poltica de emisin en orden y finalizacin desordenada.

Grfica 5.4: Emisin en Desordenada y Finalizacin Desordenada


Con esta poltica de emisin aparece una nueva dependencia
denominada antidependencia (tambin dependencia lectura--escritura).
Consideremos el fragmento de cdigo que se utiliz anteriormente:
I1: r3 r3 op r5
I2: r4 r3 + 1
I3: r3 r5 + 1
I4: r7 r3 op r4
Con esta poltica aparece la posibilidad de que I3 se ejecute antes
que I2. Ntese que si esto ocurre I3 modificara el registro R3, que es
utilizado operando fuente de I2. Por ello, no es posible que I3 se ejecute
antes que I2. El trmino antidependencia hace referencia a que esta
limitacin es inversa a la dependencia verdadera (en lugar de que la
primera produce un valor que usa la segunda, la segunda destruye un
valor que usa la primera).
3.

RENOMBRAMIENTO DE REGISTROS
Como hemos visto, el hecho de permitir la emisin desordenada de
instrucciones y la finalizacin desordenada puede originar dependencias de
salida y antidependencias. La naturaleza de estas dependencias es diferente a la
de las dependencias de datos verdaderas, que reflejan el flujo de datos a travs
de un programa y su secuencia de ejecucin. Las dependencias de salida y las
antidependencias, por otra parte, no son verdaderas dependencias, surgen porque
los valores de los registros no pueden reflejar ya la secuencia de valores
establecida por el flujo del programa.

ARQUITECTURA DE COMPUTADORAS

15

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

Las antidependencias y las dependencias de salida son realmente


conflictos de almacenamiento. Son un tipo de conflicto por los recursos en el
que varias instrucciones compiten por los mismos registros. En cuyo caso el
procesador debe resolver el conflicto deteniendo temporalmente alguna etapa del
cauce. Se puede comprender entonces que la frecuencia de aparicin de este tipo
de instrucciones aumenta con el uso de las tcnicas de optimizacin de registros,
que intentan maximizar el uso de los registros.
Un mtodo para resolver tales conflictos se basa en la solucin tradicional
de los conflictos con los recursos: la duplicacin de recursos. Esta tcnica se
denomina renombramiento de registros. Consiste en que el hardware del
procesador asigne dinmicamente los registros, que estn asociados con los
valores que necesitan las instrucciones en diversos instantes de tiempo.
Cuando se ejecuta una instruccin, donde su operando destino es un
registro, se le asigna un nuevo registro fsico para almacenar el resultado, y las
instrucciones posteriores que accedan a ese valor como operando fuente en ese
registro, tienen que atravesar un proceso de renombramiento, donde se revisan
las referencias a registros, para que definitivamente hagan referencia al registro
fsico que contiene el valor que se necesita. De este modo, diferentes
instrucciones que tienen referencias a un nico registro de la arquitectura
(registro lgico), pueden referirse a diferentes registros reales (registros fsicos),
con valores diferentes.
Para ilustrar esta tcnica, vamos a considerar la secuencia de
instrucciones utilizada anteriormente:

Que, como ya hemos visto, tiene varias dependencias, incluidas una


dependencia de salida y una anti dependencia. Si aplicamos el renombramiento
de registros a dicho cdigo tendremos:

ARQUITECTURA DE COMPUTADORAS

16

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

Figura 5.5: Mejoras de velocidad para diferentes organizaciones.


Las referencias a un registro sin la letra del subndice hacen referencia a
un registro lgico, un registro de la arquitectura. Las referencias a un registro
con la letra del subndice hacen referencia a un registro fsico, un registro
hardware.
Ntese que en el ejemplo la creacin del registro R3b en la instruccin
I3 evita la antidependencia (entre I2 e I3) y la dependencia de salida (entre I1 e
I3). El resultado es que utilizando el renombramiento de registros I1 e I3 pueden
ejecutarse en paralelo
4.

PARALELISMO DE MQUINA
Es una medida de la capacidad del procesador para sacar partido del
paralelismo a nivel de instrucciones. El paralelismo de la mquina depender el
nmero de instrucciones que se pueden captar y ejecutar al mismo tiempo, y de
la capacidad del procesador para localizar instrucciones independientes.
Se denomina grado de paralelismo al nmero mximo de instrucciones
que se puede ejecutar en paralelo. Es importante diferenciar bien los conceptos
de paralelismo a nivel de instruccin y paralelismo de la mquina, y la relacin
ARQUITECTURA DE COMPUTADORAS

17

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

entre ellos. Ambos son factores importantes para incrementar las prestaciones de
la ejecucin. Un programa que tenga un bajo nivel de paralelismo a nivel de
instruccin (es decir, una gran cantidad de dependencias entre sus instrucciones)
no podr sacar el mximo partido de una mquina con un alto grado de
paralelismo, quedando infrautilizada dicha mquina.
Por otra parte, una mquina con un bajo grado de paralelismo limitar las
prestaciones de la ejecucin de un programa con un alto nivel de paralelismo a
nivel de instruccin.
Se han estudiado tres tcnicas hardware que se pueden utilizar en un
procesador superescalar para aumentar sus prestaciones. Estas son: duplicacin
de recursos, emisin desordenada y renombramiento de registros. El siguiente
estudio aclara la relacin entre estas tcnicas, evitando la influencia de las
dependencias relativas al procedimiento.
Tenemos dos grficas. En cada una de ellas el eje vertical indica el
incremento de velocidad media de la mquina superescalar respecto a la mquina
escalar. En el eje horizontal se muestran cuatro organizaciones diferentes. La
mquina base es una implementacin superescalar que no duplica ninguna de las
unidades funcionales, las siguientes organizaciones duplican la unidad de carga
y almacenamiento, la ALU, y ambas. La diferencia entre ambas grficas es que
en una de ellas se utiliza renombramiento de registros y en la otra no. Finalmente,
cada una de las organizaciones se ha simulado con diferentes tamaos de la
ventana de instrucciones.

Figura 5.6: Estudio del paralelismo a nivel de instrucciones bajo condiciones ideales.
Este par de grficas ofrecen importantes conclusiones. La primera
proviene de la grfica que no utiliza renombramiento de registros. Como vemos,
es poco importante el incremento de velocidad al duplicar unidades funcionales
sin renombramiento de registros. Sin embargo, si se utiliza el renombramiento
de registros, se obtienen incrementos significativos al duplicar unidades

ARQUITECTURA DE COMPUTADORAS

18

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

funcionales. Por otro lado, si utilizamos renombramiento de registros y


duplicamos unidades funcionales, el incremento alcanzable de velocidad es
significativamente mayor utilizando los mayores tamaos de ventana.
Por otra parte, la figura muestra un estudio del paralelismo a nivel de
instrucciones bajo condiciones ideales de no limitacin de recursos, prediccin
perfecta de bifurcaciones, etc.
Incluso con estas suposiciones se pueden emitir 5 o ms instrucciones en
no ms del 10% de los casos. Por lo tanto no es sorprendente que la aceleracin
obtenida a partir de la emisin de mltiples instrucciones se colapse ms all del
ancho de emisin de 4 instrucciones.
Ciertos estudios indican que la implementacin superescalar puede lograr
un grado de mejora de las prestaciones de 1,5 a 8. Siendo habitual un grado de
mejora entre 2 y 4.
5.

PREDICCIN DE SALTOS
En los cauces segmentados, el tratamiento de saltos es un factor
importante, ya que el principal obstculo para un flujo estable de instrucciones
en las etapas iniciales del cauce son las bifurcaciones (saltos condicionales). Para
cauces segmentados se han desarrollado diversas aproximaciones para el
tratamiento de saltos, como son: flujos mltiples, pre captacin del destino del
salto, buffers de bucles, prediccin de saltos y salto retardado.
Con la llegada de los microprocesadores RISC, se explor intensamente
la estrategia de salto retardado, tema 6, en la que el procesador siempre ejecuta
la instruccin que sigue inmediatamente a la de salto para mantener el cauce
lleno mientras se capta un nuevo flujo de instrucciones. Sin embargo, con la
llegada de las mquinas superescalares la estrategia de salto retardado perdi
inters. El motivo es que se pueden ejecutar mltiples instrucciones en cada ciclo
de retardo, lo cual plantea varios problemas relacionados con las dependencias
entre las instrucciones. Por ello, las mquinas superescalares han vuelto a las
tcnicas de prediccin de saltos anteriores a los RISC, como la prediccin
dinmica de salto basada en el anlisis de la historia de los saltos. Como ejemplo,
el Pentium II usa esta prediccin dinmica del salto basada en el anlisis de las
ejecuciones recientes de las instrucciones de bifurcacin. Para ello utiliza un
buffer de destino de saltos (BTB), que almacena informacin de la ejecucin de
las instrucciones de bifurcacin encontradas recientemente. Cuando aparece una
instruccin de bifurcacin en el flujo de instrucciones, se examina el BTB para
comprobar si existe una entrada correspondiente a dicha bifurcacin. Si existe
una entrada, la prediccin se gua por la informacin de la historia de esta
bifurcacin, y dicha historia se actualiza una vez se determine si se produce el
salto. Si no existe una entrada en el BTB, correspondiente a esta bifurcacin, se
crea una nueva entrada y se realiza inicialmente una prediccin esttica.

ARQUITECTURA DE COMPUTADORAS

19

UNIVERSIDAD NACIONAL DE TRUJILLO

VII.

INGENIERA DE SISTEMAS

EJECUCIN SUPERESCALAR
La figura 7.9 considera el proceso de ejecucin superescalar. A continuacin
se enumeran los pasos de este proceso:
El programa esttico es el cdigo del programa a ejecutar, formado
por instrucciones ordenadas, tal como se escribi por el programador
o se gener por el compilador.
El proceso de captacin de instrucciones forma un flujo dinmico de
instrucciones.
A continuacin se analizan las dependencias de este flujo (el
procesador puede eliminar las dependencias artificiales mediante
renombramiento de registros).
El procesador enva las instrucciones a una ventana. En la ventana
las instrucciones ya no estn estructuradas secuencialmente, sino en
funcin de sus dependencias de datos verdaderas.
Se realiza la ejecucin de las instrucciones en el orden que
determinan las dependencias de datos y disponibilidad de recursos
hardware.
Finalmente, las instrucciones vuelven a ponerse conceptualmente en
orden secuencial, y se registran sus resultados.

Figura 6.1: Representacin esquemtica del procesamiento superescalar.


El ltimo paso enumerado es muy importante. Como se ha indicado
anteriormente se denomina retiro al proceso que se ocupa de los resultados de las
instrucciones, registrando sus resultados siguiendo un orden conceptualmente
secuencial.

ARQUITECTURA DE COMPUTADORAS

20

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

El retiro es necesario debido a que:


Debido a que una mquina superescalar dispone de mltiples cauces
paralelos, las instrucciones pueden finalizar en un orden diferente al
del programa esttico.
La utilizacin de la ejecucin especulativa y la prediccin de saltos
implica que algunas instrucciones pueden completar su ejecucin y
despus ser desechadas porque la bifurcacin que llevaba a ellas no se
produjo.
VIII.

IMPLEMENTACIN SUPERESCALAR
Basndonos en lo discutido hasta ahora, podemos hacer algunos
comentarios generales sobre el hardware que requiere el procesador en la
aproximacin superescalar. En [SMIT95] se enumeran los siguientes elementos
principales:

IX.

Estrategias de capacitacin de instrucciones que capten


simultneamente mltiples instrucciones, a menudo prediciendo los
resultados de las instrucciones de salto condicional y captando ms
all de ellas. Estas funciones requieren la utilizacin de mltiples
etapas de captacin y decodificacin, y lgica de prediccin de saltos.
Lgica para determinar dependencias verdaderas entre valores de
registros, y mecanismos para comunicar esos valores a donde sean
necesarios durante la ejecucin.
Mecanismos para iniciar o emitir mltiples instrucciones en paralelo.
Recursos para la ejecucin en paralelo de mltiples instrucciones, que
incluyan mltiples unidades funcionales segmentadas y jerrquicas de
memoria capaces de atender mltiples referencias a memoria.
Mecanismos para entregar el estado del procesador en el orden
correcto.

EJEMPLOS SUPERESCALARES

PowerPC 604:
6 unidades de ejecucin independientes (1 unidad de procesamiento de
saltos, 1 unidad de carga de almacenamiento, 3 unidades de enteros, 1
unidad de punto flotante), emisin en orden.
Renombrado de registros.

Pentium:
Emisin en orden y 3 unidades de ejecucin independientes (2 unidades
de enteros, 1 unidad de punto flotante)

ARQUITECTURA DE COMPUTADORAS

21

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

PowerPC 620:
Este el cuarto modelo desarrollado para la famila PowerPC y el primero
en implementar una arquitectura ntegramente de 64 bits. Se obtienen
unas ganancias en prestaciones 8 veces superiores con respecto al 601
y 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 tensin,
conservando la compatibilidad CMOS/TTL. Posee 2 cachs 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.
dem con emisin desordenada.

Figura 8.1: Procesador Superescalar PowerPC 620

ARQUITECTURA DE COMPUTADORAS

22

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

CONCLUSIONES

Un procesador superescalar es aquel que usa mltiples cauces de instrucciones


independientes. Cada cauce consta de mltiples etapas, de modo que puede tratar
varias instrucciones a la vez. El hecho de que haya varios cauces introduce un
nuevo nivel de paralelismo, permitiendo que varios flujos de instrucciones se
procesen simultneamente.
Un procesador superescalar saca provecho de lo que se conoce como paralelismo
en las instrucciones, que hace referencia al grado en que las instrucciones de un
programa pueden ejecutarse en paralelo.
Un procesador puede eliminar algunas dependencias innecesarias mediante el uso
de registros adicionales y el renombramiento de las referencias a registros del
cdigo original.

ARQUITECTURA DE COMPUTADORAS

23

UNIVERSIDAD NACIONAL DE TRUJILLO

INGENIERA DE SISTEMAS

REFERENCIAS

http://www.dia.eui.upm.es/asignatu/Arq_com/AC%20Grado/Paco%20Aylagas/
6-Superescalares%20y%20VLIW.pdf
http://www.aliatuniversidades.com.mx/bibliotecasdigitales/pdf/sistemas/Arqui
tectura_de_computadoras_II.pdf
http://slideplayer.es/slide/1715212/
http://www.exa.unicen.edu.ar/catedras/arqui2/arqui2/filminas/Paralelismo%2
0en%20monoprocesadores%20-%20Superescalares.pdf
J.L. Hennesy, D.A, Patterson, Computer Architecture: A Quantitative Approach,
3a edicin, Morgan Kauffmann Publishers, 2002.
Wilian Stallings, Organizacin y Arquitectura de Computadoras, 5a Edicion,
Prentice-Hall 2000.
D.A. Patterson, J.L. Hennesy, Estructura y diseo de computadoras: interficie
circuitera/programacin, Ed. Revert. 2000.

ARQUITECTURA DE COMPUTADORAS

24

También podría gustarte