Multithreading en entornos de ejecución multitarea - Rexachs del Rosario, Dolores (1998)
Un amplio espectro de los entornos en los que se usan las estaciones de trabajo y los computadores personales requiere de la ejecución de múltiples tareas diferentes durante un mismo intervalo de tiempo. Sin embargo, la mayoría de los procesadores actuales están diseñados para minimizar el tiempo de ejecución de una única tarea, e implementan un modelo de ejecución superescalar que usa el paralelismo entre las instrucciones de la tarea para ejecutar varias instrucciones simultáneamente. Estos procesadores ejecutan varias tareas diferentes intercambiando la tarea en ejecución a lo largo del tiempo. El objeto de este artículo es mostrar que para los entornos de ejecución multitarea existen mejores alternativas que los procesadores actuales. Analizamos los requerimientos de estos entornos y las ventajas que presentan los procesadores multithreaded (MT). En primer lugar, la medida fundamental de las prestaciones ya no es el tiempo de ejecución final de cada tarea sino la cantidad de tareas realizadas por unidad de tiempo o productividad (``throughput''). Los procesadores MT soportan a nivel del repertorio de instrucciones la ejecución explícita de varios flujos de control, o threads, reduciendo el tiempo que se pierde al realizar los cambios de contexto. Si además el procesador MT es capaz de ejecutar varias instrucciones de tareas diferentes durante cada ciclo de reloj, compartiendo los recursos del procesador, se puede usar este paralelismo extra para incrementar la productividad del sistema. Una opción básica de diseño es cómo compartir los recursos del procesador entre las tareas activas del procesador. Existen microarquitecturas que permiten compartir entre las tareas prácticamente todos los recursos del procesador, como el simultaneous multithreading (SMT), y otras donde un grupo de recursos está reservado a una única tarea, como el multiprocesamiento en un chip (CMP). En este artículo analizamos otras soluciones intermedias, con un mejor compromiso entre la complejidad del SMT y el relativamente bajo rendimiento del CMP. La asignación de los recursos compartidos del procesador a las tareas activas se realiza dinámicamente, en tiempo de ejecución y ciclo a ciclo. Se analizan los problemas ocasionados por la interferencia entre tareas que comparten recursos, especialmente la memoria cache, y se proponen formas de organizar esta compartición para reducir los problemas. Finalmente, se plantea un modelo cualitativo tanto de las microarquitecturas como de las aplicaciones, con objeto de detectar posibles cuellos de botella, de hacer una primera valoración de las diferentes opciones de diseño y de realizar una aproximación teórica a los resultados cuantitativos que se esperan obtener.