10.05.2013 Views

Paralelismo a nivel de instrucciones y procesadores superescala

Paralelismo a nivel de instrucciones y procesadores superescala

Paralelismo a nivel de instrucciones y procesadores superescala

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!