Procesamiento+Multihebra

= Procesamiento Multihebra  =

La media de prestaciones más importante para un procesador es la velocidad a la que ejecuta instrucciones, en consecuencia los diseñadores han buscado la mejore de prestaciones en dos campos importantes, incrementando la frecuencia de reloj e incrementando el número de instrucciones ejecutadas en un ciclo de reloj. Para esto se han utilizado técnicas como el cauce segmentado, los cauces paralelos en arquitecturas superescalares, estas técnicas consisten en la ejecución de instrucciones de una manera compleja, como por ejemplo, ejecutar intrucciones en un orden distinto a como se encuentran escritas en el código y además para predecir saltos se ejecutan intrucciones qeu posiblemente no se tengan que ejecutar.

Una alternativa que permite un paralelismo entre instrucciones elevado, sin incrementar la complejidad de los circuitos ni el consumo de potencia, es el procesamiento multihebra. Consiste básicamente en que las secuencias de intrucciones, se divida en secuencia más pequeñas, denominadas hebras, que pueden ejecutarse en paralelo.

=Procesamiento multihebra implícito y explícito= A continuación se definirán algunos términos importantes:


 * //**Conmutación de proceso:**// operación que cambia el proceso que se está ejecutando en el procesador por otro proceso, para ello se almacenan todos los datos de control para reemplazarlo por el segundo proceso.
 * //**Hebra:**// Consiste en una unidad de trabajo dentro de un proceso que se puede asignar al procesador. Incluye un contexto de procesador y su propia área de datos. Una hebra se ejecuta secuencialmente y puede interrumpirse para que el procesador pase a ejecutar otra hebra.
 * //**Conmutación de Hebra:**// el control del procesador pasa de una hebra a otra dentro de un mismo proceso, este tipo de conmutación es mucho menos costosa que la de procesos.

Mientras las hebras aparecen involucradas en la planificación y ejecución, los procesos tiene que ser tanto con la planificación y ejecución como en la asignación de recursos. Las hebras de un proceso comparten los mismo recursos, es por esto que un cambio de hebra consume mucho menos recursos que la conmutación de procesos. Se puede distinguir entre hebras de nivel e usuario, visibles para los programas de aplicación y hebras de nivel de núcleo, visibles solo para el sistema operativo. Ambos tipos se pueden denominar como hebras explícitas.

Aproximaciones al procesamiento multihebra explícito:
Como mínimo un procesador multihebra debe proporcionar un contador de programa distinto para cada una de las hebras que pueden ejecutarse concurrentemente, el procesador trata cada hebra separadamente y puede utilizar técnicas como la predicción de saltos, el renombramiento de registros u otras técnicas superescalares para la optimización a la hora de la ejecución de una hebra.

El procesamiento mutihebra se puede considerar como:


 * //**Multihebra entrelazada:**// El procesador trabaja con dos o más contextos al mismo tiempo,conmutando entre uno y otro en cada ciclo de reloj. Si una hebra se bloquea debido a las dependencias, esa hebra salta y pasa a ejecutarse una hebra que si este preparada.
 * //**Multihebra con bloqueo:**// Las instrucciones de una hebra se ejecutan sucesivamente hasta que se produce un evento que puede ocasionar un retardo, tal como un fallo de cache, este evento induce a una conmutación a otra hebra, esta aproximación es efectiva solo en procesadores con ejecución ordenada de instrucciones.
 * //**Multihebra simultanéa:**// instrucciones correspondientes a hebras diferentes se emiten simultáneamente a las unidades funcionales de un procesador superescalar, se combina así la capacidad de emisión de varias instrucciones del procesador superescalar y el uso de múltiples contextos correspondientes a las diferentes hebras.
 * //**Multiprocesador monochip:**// En este caso, existen varias copias del procesador en un solo circuito integrado y cada procesador actúa sobre hebras diferentes. la ventaja de esta aproximación es que el área del circuito integrado se utiliza de manera efectiva evitando cada vez mayor complejidad de los nuevos diseños del cauce segmentado.

= = lhttp://www.matematicas.unam.mx/jloa/curso.conclic.html