Paralelismo a nivel de instrucciones y procesadores superescala
Paralelismo a nivel de instrucciones y procesadores superescala
Paralelismo a nivel de instrucciones y procesadores superescala
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Paralelismo</strong> a <strong>nivel</strong> <strong>de</strong><br />
<strong>instrucciones</strong> y <strong>procesadores</strong><br />
<strong>superescala</strong>res
Que es el enfoque <strong>superescala</strong>r<br />
Lo esencial <strong>de</strong>l enfoque<br />
<strong>superescala</strong>r es su habilidad<br />
para ejecutar <strong>instrucciones</strong><br />
<strong>de</strong> manera in<strong>de</strong>pendiente en<br />
diferentes cauces. El<br />
concepto pue<strong>de</strong> llevarse más<br />
lejos, permitiendo que las<br />
<strong>instrucciones</strong> se ejecuten en<br />
un or<strong>de</strong>n diferente al <strong>de</strong>l<br />
programa.<br />
Hay múltiples unida<strong>de</strong>s<br />
funcionales, cada una <strong>de</strong> las<br />
cuales está implementada<br />
como un cauce segmentado,<br />
que admiten la ejecución en<br />
paralelo <strong>de</strong> varias<br />
<strong>instrucciones</strong>
Superescalar frente a supersegmentado<br />
• La supersegmentación<br />
aprovecha el hecho <strong>de</strong><br />
que muchas etapas <strong>de</strong>l<br />
cauce realizan tareas<br />
que requieren menos<br />
<strong>de</strong> la mitad <strong>de</strong> un ciclo<br />
<strong>de</strong> reloj<br />
• La implementación<br />
<strong>superescala</strong>r es capaz<br />
<strong>de</strong> ejecutar en paralelo<br />
dos <strong>instrucciones</strong> en<br />
cada etapa
Limitaciones<br />
La aproximación <strong>superescala</strong>r <strong>de</strong>pen<strong>de</strong> <strong>de</strong> la<br />
habilidad para ejecutar múltiples <strong>instrucciones</strong> en<br />
paralelo. La expresión paralelismo a <strong>nivel</strong> <strong>de</strong><br />
<strong>instrucciones</strong> se refiere al grado en que, en<br />
promedio, las <strong>instrucciones</strong> <strong>de</strong> un programa se<br />
pue<strong>de</strong> ejecutar en paralelo. Las limitaciones<br />
fundamentales <strong>de</strong>l paralelismo son:<br />
• Depen<strong>de</strong>ncia <strong>de</strong> datos verda<strong>de</strong>ra.<br />
• Depen<strong>de</strong>ncia relativa al procedimiento.<br />
• Conflictos en los recursos.<br />
• Depen<strong>de</strong>ncia <strong>de</strong> salida.<br />
• Anti<strong>de</strong>pen<strong>de</strong>ncia.
Depen<strong>de</strong>ncia <strong>de</strong> datos verda<strong>de</strong>ra<br />
La segunda instrucción se pue<strong>de</strong> captar y<br />
<strong>de</strong>codificar, pero no se pue<strong>de</strong> ejecutar hasta<br />
que finalice la ejecución <strong>de</strong> la primera<br />
instrucción. Ejemplo <strong>de</strong> <strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong> datos<br />
verda<strong>de</strong>ra.
Depen<strong>de</strong>ncias relativas al<br />
procedimiento<br />
Las <strong>instrucciones</strong> que siguen a una<br />
bifurcación tiene una <strong>de</strong>pen<strong>de</strong>ncia relativa<br />
al procedimiento en esa bifurcación y no<br />
pue<strong>de</strong>n ejecutarse hasta que ésta lo haga
Conflicto en los recursos<br />
• Un conflicto en un recurso es una pugna <strong>de</strong><br />
dos o más <strong>instrucciones</strong> por el mismo<br />
recurso al mismo tiempo<br />
• Des<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong>l cauce, un<br />
conflicto en los recursos presenta el mismo<br />
comportamiento que una <strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong><br />
datos
<strong>Paralelismo</strong> a <strong>nivel</strong> <strong>de</strong> <strong>instrucciones</strong> y<br />
paralelismo <strong>de</strong> la máquina<br />
• El paralelismo a <strong>nivel</strong> <strong>de</strong> <strong>instrucciones</strong> es cuando<br />
las <strong>instrucciones</strong> <strong>de</strong> una secuencia son<br />
in<strong>de</strong>pendientes y, por tanto, pue<strong>de</strong>n ejecutarse en<br />
paralelo solapándose.<br />
• El paralelismo <strong>de</strong> la máquina es una medida <strong>de</strong> la<br />
capacidad <strong>de</strong>l procesador para sacar partido al<br />
paralelismo a <strong>nivel</strong> <strong>de</strong> <strong>instrucciones</strong>. El<br />
paralelismo <strong>de</strong> la máquina <strong>de</strong>pen<strong>de</strong> <strong>de</strong>l número <strong>de</strong><br />
<strong>instrucciones</strong> que pue<strong>de</strong>n captarse y ejecutarse al<br />
mismo tiempo (número <strong>de</strong> cauces paralelos)
Políticas <strong>de</strong> emisión <strong>de</strong> <strong>instrucciones</strong><br />
Esencialmente el microprocesador intenta localizar <strong>instrucciones</strong><br />
más allá <strong>de</strong>l punto <strong>de</strong> ejecución en curso, que puedan<br />
introducirse en el cauce y ejecutarse. Formas:<br />
• El or<strong>de</strong>n en que se captan las <strong>instrucciones</strong>.<br />
• El or<strong>de</strong>n en que se ejecutan las <strong>instrucciones</strong>.<br />
• El or<strong>de</strong>n en que las <strong>instrucciones</strong> actualizan los contenidos <strong>de</strong><br />
los registros y <strong>de</strong> las posiciones <strong>de</strong> memoria.<br />
La única restricción que tiene el procesador es que el resultado<br />
<strong>de</strong>be ser correcto.<br />
En términos generales, po<strong>de</strong>mos agrupar las políticas <strong>de</strong> emisión <strong>de</strong><br />
<strong>instrucciones</strong> <strong>de</strong> los <strong>procesadores</strong> <strong>superescala</strong>res en las<br />
siguientes categorías:<br />
• Emisión en or<strong>de</strong>n y finalización en or<strong>de</strong>n.<br />
• Emisión en or<strong>de</strong>n y finalización <strong>de</strong>sor<strong>de</strong>nada.<br />
• Emisión <strong>de</strong>sor<strong>de</strong>nada y finalización <strong>de</strong>sor<strong>de</strong>nada.
Emisión en or<strong>de</strong>n y finalización en<br />
or<strong>de</strong>n<br />
• La política <strong>de</strong> emisión <strong>de</strong> <strong>instrucciones</strong> más<br />
sencilla es emitir <strong>instrucciones</strong> en el or<strong>de</strong>n<br />
exacto en que lo haría una ejecución<br />
secuencial, y escribir los resultados en ese<br />
mismo or<strong>de</strong>n
Emisión en or<strong>de</strong>n y finalización<br />
<strong>de</strong>sor<strong>de</strong>nada<br />
Con la finalización <strong>de</strong>sor<strong>de</strong>nada pue<strong>de</strong> haber<br />
cualquier número <strong>de</strong> <strong>instrucciones</strong> en la etapa <strong>de</strong><br />
ejecución en un momento dado, hasta alcanzar el<br />
máximo grado <strong>de</strong> paralelismo <strong>de</strong> la máquina.<br />
La finalización <strong>de</strong>sor<strong>de</strong>nada necesita una lógica <strong>de</strong><br />
emisión <strong>de</strong> <strong>instrucciones</strong> más compleja que la<br />
finalización en or<strong>de</strong>n. A<strong>de</strong>más, es mas difícil<br />
ocuparse <strong>de</strong> las interrupciones y excepciones.
Emisión <strong>de</strong>sor<strong>de</strong>nada y finalización<br />
<strong>de</strong>sor<strong>de</strong>nada<br />
Para permitir la emisión <strong>de</strong>sor<strong>de</strong>nada, es necesario <strong>de</strong>sacoplar las etapas<br />
<strong>de</strong>l cauce <strong>de</strong> <strong>de</strong>codificación y ejecución. Esto se hace mediante un<br />
buffer llamado ventada <strong>de</strong> <strong>instrucciones</strong>.<br />
Con esta organización, cuando un procesador termina <strong>de</strong> <strong>de</strong>codificar una<br />
instrucción, coloca ésta en la ventana <strong>de</strong> <strong>instrucciones</strong>. Mientras el<br />
buffer no se llene, el procesador pue<strong>de</strong> continuar captando y<br />
<strong>de</strong>codificando nuevas <strong>instrucciones</strong>.<br />
Cualquier instrucción pue<strong>de</strong> emitirse, siempre que (1) necesite la unidad<br />
funcional particular que está disponible y (2) ningún conflicto ni<br />
<strong>de</strong>pen<strong>de</strong>ncia la bloqueen.<br />
El resultado <strong>de</strong> esta organización es que el procesador tiene capacidad <strong>de</strong><br />
anticipación, lo que le permite i<strong>de</strong>ntificar <strong>instrucciones</strong><br />
in<strong>de</strong>pendientes que pue<strong>de</strong>n introducirse en la etapa <strong>de</strong> ejecución. Las<br />
<strong>instrucciones</strong> se emiten <strong>de</strong>s<strong>de</strong> la ventana <strong>de</strong> <strong>instrucciones</strong>, sin que se<br />
tenga muy en cuenta su or<strong>de</strong>n original en el programa.<br />
Recor<strong>de</strong>mos que la única restricción es que el programa funcione
Ejemplo<br />
• I1 necesita dos<br />
ciclos para<br />
ejecutarse.<br />
• I3 e I4 compiten<br />
por la misma<br />
unidad<br />
funcional.<br />
• I5 <strong>de</strong>pen<strong>de</strong> <strong>de</strong> un<br />
valor producido<br />
por I4.<br />
• I5 e I6 compiten<br />
por una unidad<br />
funcional.