Accesos directos a las distintas zonas del curso
Ir a los contenidos
Ir a menú navegación principal
Ir a menú pie de página
Subject code : 71902025
En este tema se estudia el concepto de segmentación, pieza básica y fundamental sobre la que se articula el diseño de los procesadores de las últimas décadas, con independencia de su filosofía arquitectónica. La segmentación constituye una técnica de implementación de procesadores mediante la cual se solapa la ejecución de múltiples instrucciones, explotando el paralelismo entre las instrucciones que componen un programa y permitiendo descomponer la ejecución de una instrucción en un número fijo de etapas donde cada una representa una fase del procesamiento de la instrucción. El disponer de varias etapas permite que en cada una de ellas haya una instrucción en un estadio diferente de su procesamiento y, por lo tanto, en un instante dado puedan llegar a estar ejecutándose en el procesador tantas instrucciones como etapas. Cada etapa se encuentra conectada con la anterior formando un cauce (o pipeline) por cuyo extremo entra la instrucción, se procesa en las sucesivas etapas de la segmentación o segmentos y, concluida la ejecución, sale por el otro extremo. Un símil muy utilizado para visualizar de forma rápida el concepto de segmentación es el de las cadenas de fabricación de automóviles. Evidentemente, la segmentación no está carente de problemas siendo los más habituales las interdependencias que existen entre las instrucciones en materia de operandos. En este tema no solo se estudia el concepto de segmentación, utilizando para ello una segmentación genérica básica reflejo de las reales, sino que se analizan en detalle los problemas que surgen y se estudian algunas de las soluciones adoptadas.
Resultados de aprendizaje
Tras el estudio del tema, el alumno estará capacitado para:
La mayoría de los procesadores que se utilizan en los computadores actuales, ya estén orientados al mercado doméstico como al científico o al industrial, se basan en segmentaciones capaces de procesar varias instrucciones simultáneamente y de forma desordenada, de ahí su denominación de procesadores superescalares. En este tema se estudia la arquitectura de un procesador superescalar genérico, muy similar a la de los procesadores comerciales, aunque más sencilla debido a su carácter didáctico. Recurriendo a esta arquitectura superescalar, se analiza cada una de las etapas que intervienen en el procesamiento de los diferentes tipos de instrucciones (carga/almacenamiento, aritmético-lógicas, saltos, bifurcaciones) y se estudian las soluciones dadas por los investigadores y la industria a los problemas que se plantean en cada una de ellas. Además, se analizan las limitaciones que presentan este tipo de arquitecturas de procesador para crear computadores cada vez más potentes.
Tras el estudio del tema, el alumno será capaz de:
En este tema se introducen dos nuevas filosofías para el diseño de procesadores que, aunque basadas en la segmentación, introducen formas alternativas para mejorar el rendimiento: los procesadores VLIW y los procesadores vectoriales. Los procesadores VLIW se caracterizan por utilizar internamente instrucciones compuestas de varias instrucciones u operaciones básicas de forma que se maximiza el uso de las múltiples unidades funcionales que poseen. Este aspecto pone de manifiesto la gran importancia que tiene el diseño de compiladores para procesadores VLIW que tengan en cuenta la arquitectura interna del procesador y generan código objeto acorde con sus características. Esto pone de relieve los inconvenientes de esta filosofía de diseño: la necesidad de disponer de compiladores altamente especializados y los problemas de incompatibilidad ya que el código objeto que se genera para un procesador VLIW tiene en cuenta las latencias y el número de unidades funcionales de ese procesador lo que provoca que sea ineficiente si se pretende ejecutar en otro procesador VLIW con características diferentes.
Por otro lado, los procesadores vectoriales se caracterizan por proporcionar operadores de alto nivel que trabajan sobre vectores, no sobre valores escalares. Así, una operación vectorial tomaría dos vectores de n elementos, realizaría la correspondiente operación aritmética con ellos y generaría como resultado un vector de n elementos. Por lo tanto, una instrucción vectorial es equivalente a un bucle constituido por instrucciones secuenciales, donde en cada iteración se realiza una operación aritmética y se genera uno de los elementos del resultado. Aunque los computadores basados en procesadores vectoriales tuvieron su máximo apogeo en la década de los 80 como punta de lanza de la supercomputación científica, y habiendo sido superados hoy en día por los multiprocesadores y multicomputadores, paradójicamente actualmente se encuentran más accesibles que nunca. Ello se debe a que los actuales procesadores superescalares incorporan en su repertorio de instrucciones un conjunto de instrucciones vectoriales, conocidas como instrucciones SIMD, que permiten mejorar el rendimiento de las aplicaciones multimedia por lo que todos los procesadores incorporan una o dos unidades funcionales específicas para el tratamiento de las instrucciones SIMD.
Con la información proporcionada en este tema, el alumno estará en condiciones de:
Hasta llegar a este punto, todo lo que se ha estudiado en los tres temas previos estaba orientado a la mejora de las prestaciones de computadores construidos con un único procesador. Sin embargo, hoy en día se sabe que los sistemas basados en un único procesador presentan límites en el rendimiento que pueden alcanzar, por lo que la tendencia que se ha establecido es la de construir máquinas dotadas de varios procesadores, pudiendo oscilar el número de procesadores desde unos pocos, como sucede en los computadores orientados al ámbito doméstico o empresarial, hasta alcanzar los cientos de miles en sistemas orientados a la computación de alto rendimiento. Evidentemente, esta tendencia, basada en el incremento de rendimiento en base a la suma de procesadores, va unida a toda la investigación que se continúa realizando para mejorar las características de los procesadores a nivel individual (consumo de energía, disipación de calor, tamaño, velocidad, etc.), ya se trate de procesadores superescalares, vectoriales o VLIW. En este tema se presentan las arquitecturas más relevantes para construir computadores dotados de varios procesadores, es decir, sistemas de computación conocidos de forma coloquial como computadores paralelos. Para avanzar de forma ordenada y comprensible en la explicación de los diferentes tipos de plataforma de computación paralela que existen en la actualidad, se recurre a su clasificación en base a su organización lógica y física. La organización lógica se refiere a la visión que el programador tiene de la plataforma, es decir, las capacidades para expresar tareas paralelas (la estructura de control) y los métodos de comunicación entre dichas tareas (el modelo de comunicación). La organización física se refiere a la estructura del hardware que compone la plataforma, donde el criterio habitual es catalogar los sistemas en función de la organización del espacio de direcciones de memoria, obteniéndose así los dos tipos fundamentales: los sistemas de memoria compartida o multiprocesadores y los sistemas de memoria distribuida o multicomputadores.
Una vez se haya trabajado el tema, el estudiante estará capacitado para: