Escolar Documentos
Profissional Documentos
Cultura Documentos
COMPUTADORES/PROCESADORES
SUPERSEGMENTADOS
Arturo Marzo de la Fuente
Arquitecturas Basadas en Microprocesadores
3º I.T.I. Gestión
Curso 200708
1. Introducción
En su descomposición funcional más sencilla, un microprocesador se compone de una
Unidad de Control y una Unidad de Proceso. En esta última convivían inicialmente la ALU y
el banco de registros, pero enseguida se añadieron nuevas unidades funcionales en la
búsqueda de un aumento del rendimiento. La mayoría de estas adiciones ayudan a obtener
alguna forma de paralelismo a nivel de instrucción. Esto consiste en romper con la
ejecución secuencial de instrucciones (una detrás de otra en el tiempo) para obtener a
ejecución de varias simultáneamente.
La supersegmentación de los procesadores es una técnica de implementación que
busca el mencionado paralelismo a nivel de instrucción, pero antes de explicarlo, conviene
explicar otras técnicas que también sirven para lograr el paralelismo y que suelen
combinarse todas juntas en el diseño de los actuales microprocesadores como son la
segmentación, la superescalaridad y la combinación de ambas.
2
2. Segmentación
La segmentación (pipelining) es una técnica de implementación de microprocesadores
por la cual se solapa la ejecución de múltiples instrucciones. Hoy día, la segmentación es la
técnica de implementación clave utilizada para hacer CPU rápidas.
La segmentación es como una línea de ensamblaje: cada etapa de la segmentación
completa una parte de la instrucción. Como en una línea de ensamblaje de automóviles, el
trabajo que va a realizar una instrucción se descompone en partes más pequeñas, cada una
de las cuales necesita una fracción del tiempo necesario para completar la instrucción
completa. Cada uno de estos pasos se define como etapa de la segmentación o segmento.
Las etapas están conectadas, cada una a la siguiente, para formar una especie de cauce ‐ las
instrucciones entran por un extremo, son procesadas a través de las etapas y salen por el
otro extremo.
2.1. Procesador segmentado
Un procesador segmentado es aquel que divide el proceso de ejecución de una
instrucción en N etapas de similar duración con el objetivo de procesar N instrucciones
simultáneamente, encontrándose cada una en una etapa diferente de su ejecución.
Conseguimos así, que un procesador compuesto por N unidades funcionales que
trabajan a la vez en circunstancias ideales, incremente su rendimiento en un factor de N.
Las instrucciones fluyen secuencialmente por las distintas unidades funcionales del
procesador de igual forma que el agua fluye por el cauce de una tubería, de ahí que en la
jerga de la calle se les conozca como procesadores pipeline que significa tubería en inglés.
El modelo de segmentación más repetido en la primera mitad de los años 90 es el
compuesto por las siguientes cinco etapas: búsqueda de la instrucción, decodificación,
lectura de operandos, ejecución de la operación asociada, escritura de su resultado.
El DLX es un microprocesador diseñado por John L. Hennessy y David A. Patterson
presenta una ejecución en cinco etapas, similares a las del microprocesador MIPS, también
diseñado por John L. Hennessy en la Universidad de Stanford, buscando la filosofía de la
segmentación. Estas cinco etapas son:
IF: búsqueda
ID: decodificación
EX: ejecución de unidad aritmético lógica
MEM: memoria
WB: escritura
De esta manera, mientras el procesador escribe una instrucción, ejecuta
simultáneamente la siguiente, busca los operandos de una tercera, decodifica una cuarta y
busca en memoria una quinta instrucción, lográndose en un caso ideal una aceleración de
cinco para el rendimiento del chip.
3
Podemos observar en el siguiente grafico la ejecución simultánea de cinco instrucciones
en distintas etapas en un procesador DLX:
Figura 1.
Junto al cauce (pipeline) de ejecución entero se sitúan otros cauces por donde circulan
otros tipos de instrucciones, principalmente multimedia y de punto flotante. No obstante,
hasta que no concluya la fase de decodificación de instrucción (ID) no se puede realizar la
ramificación, las primeras etapas de segmentación son siempre comunes a todos los
cauces del procesador, lo cual se puede observar con facilidad en la Figura 2 mostrada más
adelante.
La gran ventaja de la aplicación de la segmentación en el diseño de los
microprocesadores es que el aumento del rendimiento se consigue con solo reorganizar
las unidades funcionales existentes, por lo que no supone un incremento de coste para
la Unidad de Proceso. El diseño de la Unidad de Control sí se complica un poco a medida
que aumenta el número de etapas y el grado de concurrencia en la ejecución de las
instrucciones pero es despreciable si lo comparamos con el espectacular incremento del
rendimiento.
4
3. Superescalaridad
La superescalaridad consiste en la replicación de la circuitería de las unidades
funcionales de un microprocesador, creando por lo tanto varios cauces (pipelines) de
manera que se puedan ejecutar varias instrucciones a la vez.
3.1. Procesador superescalar
Un procesador superescalar de factor N es aquel que replica N veces la circuitería de
alguna de sus unidades funcionales con el fin de poder ejecutar N instrucciones en sus
respectivas etapas de computación.
Con la mejora de la capacidad de integración de circuitos que permiten concentrar más y
más componentes dentro de un chip, los diseñadores de microprocesadores también ha
aumentado el factor de Superescalaridad, logrando, al igual que en la segmentación,
mejoras del rendimiento de un factor de N.
Sin embargo, el coste de incrementar el rendimiento mediante la Superescalaridad es
superior al de la segmentación. El hecho de que el coste de integración por transistor se
reduzca con la evolución de las generaciones de microprocesadores indica que es un
método de incremento del rendimiento altamente rentable para los diseñadores.
En el siguiente grafico se muestra la ejecución en paralelo de 5 instrucciones cada una en
su cauce o pipeline, lo que representa una superescalaridad de factor 5.
Figura 2.
5
4. Combinación de segmentación y superescalaridad
Como puede observarse en la Figura 3, las filosofías de segmentación y superescalaridad
son perfectamente compatibles.
Figura 3
Sin embargo, existen ciertos conflictos a la hora de poner en práctica simultáneamente
ambas ideas, y es que cada técnica exige unos requisitos diferentes:
‐ La segmentación requiere una elevada frecuencia, de forma que solo un periodo
de reloj muy corto permitirá descomponer cada instrucción en un número elevado
de etapas.
‐ La superescalaridad, por el contrario, necesita un ingente número de
transistores para poder ser implementada, y esto solo se consigue con mejoras en la
tecnología de integración.
6
Por lo tanto, la superescalaridad estorba a la segmentación porque ésta provoca un
desdoble de la circuitería existente, que perjudica la frecuencia de reloj, lo que dificulta el
obtener un número elevado de etapas de segmentación.
De igual forma la segmentación estorba a la superescalaridad ya que cuando las
etapas son tan minúsculas, es difícil incrementar la complejidad replicando la circuitería.
Por tanto, los diseños fuertemente segmentados no utilizan un factor de
superescalaridad alto, y los que apuestan por la superescalaridad reducen el número de
etapas de segmentación. Por ejemplo, el Pentium IV de Intel llega a las 20 etapas de
segmentación pero solo tiene un factor tres de superescalaridad, mientras que el K7 de
AMD consigue un factor cinco de superescalaridad a costa de reducir a 14 el número de
etapas del cauce de ejecución entero. Al final, las dos estrategias alcanzan un paralelismo
de entorno a las 60‐70 instrucciones simultáneas compatibilizando los dos conceptos,
pero en cada caso se da prioridad a una de las dos filosofías.
7
5. Supersegmentación
La palabra supersegmentación nos lleva a la tentación de aplicar la ecuación
superescalar + segmentado = supersegmentado, cuando en realidad la ecuación correcta es
segmentado + segmentado = supersegmentado.
La supersegmentación consiste en segmentar algunas de las etapas (en concreto las
más lentas) que mencionamos para los procesadores segmentados, en dos o más etapas de
manera que se permite que haya dos instrucciones a la vez dentro de la misma etapa y
unidad funcional sin tener que replicar ésta (superescalaridad). De esta forma, dividiendo
por ejemplo cada etapa en 2, el ciclo de reloj de periodo T se verá reducido a la mitad, T/2,
de esta forma al máximo de capacidad el cauce o pipeline produce un resultado cada T/2
segundos.
5.1. Procesadores supersegmentados
Un procesador supersegmentado es aquel que aplica dos veces el concepto de
segmentación, la primera al nivel de diseño global, y la segunda al nivel interno de sus
unidades funcionales.
Por ejemplo, una descomposición en cinco etapas de segmentación como la del Pentium,
compuesta por las etapas de búsqueda, decodificación, lectura, ejecución y escritura,
permite aplicar otra segmentación a cada una de las unidades funcionales que intervienen
en cada ciclo como son: la caché de instrucciones, el decodificador de instrucción, la caché
de datos, la ALU o el banco de registros.
En el caso de la caché de instrucciones, que es referenciada en la primera etapa, esta
puede ser una caché segmentada en dos etapas, que permite simultanear la búsqueda de
una instrucción y la localización de su celda de caché asociada, con la lectura del código de
la anterior instrucción y su volcado al bus de datos del procesador. Así se obtienen dos
niveles de segmentación como se muestra en el aparatado d) de la Figura 4, en la que se
comparan las cuatro técnicas de paralelismo expuestas:
8
Figura 4
Esta segmentación ha provocado un desdoble de la señal de reloj, que discurre por el eje
temporal de abscisas al doble de frecuencia que en los otros tres diagramas mostrados. En
general, la supersegmentación lleva asociada la subdivisión del ciclo de reloj base en
ciclos supersegmentados (como se aprecia en la Figura 5), tantos ciclos como etapas se
hayan establecido para el segundo nivel de segmentación, lo que desemboca en diseños
que trabajan a muy alta frecuencia.
Figura 5
9
Una buena implementación supersegmentada siempre incluye la ejecución de
instrucciones fuera de orden. La ejecución de instrucciones fuera de orden es un
paradigma utilizado en la mayoría de los microprocesadores de alto rendimiento por el
cual, si una vez capturada una instrucción los operandos no están disponibles, para evitar
esperas improductivas del procesador hasta que estén disponibles la instrucción se pone
en una cola a la espera, de forma que otras instrucciones puedan abandonar la cola y
ejecutarse si sus operandos están disponibles. La ejecución fuera de orden minimiza el
efecto negativo que producen las esperas por dependencias de datos sobre el rendimiento
del procesador pero para desarrollarla hace falta también implementar la
superescalaridad en los procesadores.
5.2. Ejemplos de procesadores supersegmentados
5.2.1. R4000 y R4400
La empresa MIPS Technologies, fundada por investigadores de la Universidad de
Stanford, incluido John L. Hennessy, lanzó en 1991 el primer microprocesador de 64
bit, el R4000. Integraba la FPU dentro para crear un microprocesador de un solo chip y
operaba a unas frecuencias radicalmente altas para la época (cuando fue introducido,
trabajaba a 100 MHz).
Sin embargo para lograr aumentar la frecuencia del reloj hubo que reducir las 3 cachés
a 8Kb (con respecto a los 64 Kb que presentaban los anteriores procesadores R3500) y
requerían 3 ciclos para ser accedidas.
Estas grandes velocidades de operación fueron posibilitadas usando la técnica llamada
deep pipelining (segmentación profunda) y denominada más tarde como
supersegmentación o superpipelining.
Presentaba una supersegmentación de 8 etapas (en vez de las 5 del DLX), como los
accesos a la caché son críticos, las etapas que acceden a memoria se han subdividido:
Acceso a caché de instrucciones Acceso a caché de datos
Con el desarrollo del R4000 se desarrolló un número de versiones mejoradas como el
R4400 de 1993, que incluía cachés de 16 Kb, un operador de 64 bit ampliamente depurado
y soporte para una caché externa de nivel 2.
A continuación podemos observar un esquema de la supersegmentación de 8 etapas
que presentaban estos procesadores MIPS:
10
Figura 6
5.2.2. Pentium PRO
El procesador Pentium PRO desarrollado en 1995 y perteneciente a la sexta
generación de procesadores estaba compuesto por 5.500.000 transistores,
incrementó su velocidad usando una supersegmentación de 14 etapas y
trabajaba a una frecuencia de 200 MHz, con un Front Side Bus (FSB) de 66 MHz.
Potenció el paralelismo mediante la ejecución de instrucciones fuera de orden
y la incorporación de más unidades de ejecución que trabajan simultáneamente.
Incluyó una caché interna de segundo nivel y la caché de nivel 1 presenta 2 cauces
de instrucciones y 4 de datos. En cuanto a su rendimiento se ha estimado en 220
SPECInt92.
5.2.3. ALPHA 21264
Un clásico ejemplo de diseño supersegmentado es el procesador Alpha 21264 de
Digital, procesador RISC de principios de la década de los 90 y hermano menor del
Alpha 21364 de COMPAQ que fue el encargado de decodificar el genoma humano
en la empresa Celera Genomic.
El segundo nivel de segmentación de esta arquitectura incluye una
descomposición en nueve etapas para el caso de la caché, lo que dio lugar a
una frecuencia de reloj de 600 MHZ a finales de 1997, cuando en esa época los
Pentium II y demás modelos para PC operaban a menos de la mitad de esa
frecuencia.
11
5.2.4. UltraSPARC
El procesador UltraSPARC II lanzado a mediados de 1996 por Sun
Microelectronics, pertenece a la segunda generación de la familia UltraSPARC y fue
pensado para mantener estaciones de trabajo.
Presenta una arquitectura de 64 bits supersegmentada y un factor 4 de
superescalaridad. Está compuesto por 5.400.000 transistores, opera a un rango de
frecuencias de entre 250 y 480 MHz y dispone de dos cachés de nivel 1 de 16 Kb y
una caché de nivel 2 de entre 256 KB y 16 Mb. Finalmente, se le estima un
desempeño de:
• 350‐420 SPEC Int92.
• 550‐660 SPEC Fp92.
5.2.5. Pentium IV
Desarrollado en el 2000, está compuesto de 42.000.000 de transistores, funciona
a una frecuencia de 2’4 GHz, con un FSB de 400 MHz. Presenta una
supersegmentación de 20 etapas y ofrece 144 nuevas instrucciones para
procesar video y audio, optimizando el rendimiento para las tecnologías modernas
de Internet y visualización de gráficos en 3 dimensiones. A continuación un gráfico
que muestra la ejecución de 4 instrucciones en las 20 etapas supersegmentadas de un
Pentium IV.
Figura 7
Su rendimiento se estima en:
• 410 SPEC int2000.
• 14,6 SPEC int95.
12
6. Bibliografía
‐ Recursos electrónicos:
¾ http://es.wikipedia.org/wiki/Segmentaci%C3%B3n_(inform%C3%A1tica)
¾ http://es.wikipedia.org/wiki/DLX
¾ http://es.wikipedia.org/wiki/Arquitectura_MIPS
¾ http://vagos.es/showthread.php?t=63741
¾ http://www.angelfire.com/ca6/angie/segmentados.htm
¾ http://aulavirtual.uji.es/file.php/2648/Teoria/Primer_cuatrimestre/Tema2_sup
erescalares/2_1_introduccion_procesadores_superescalares.pdf
¾ http://www.atc.us.es/asignaturas/asp‐
itis/descargas/Transparencias_ASP_Tema_5_Introduccion_al_Paralelismo.pdf
¾ http://osito.disca.upv.es/aic/es/teoria/t9.pdf
¾ http://dac.escet.urjc.es/docencia/Micros/Microprocesadores2.pdf
¾ http://www.dacya.ucm.es/hidalgo/arquitectura/pipeline.pdf
¾ http://www.cag.lcs.mit.edu/raw/documents/R4400_Uman_book_Ed2.pdf
¾ http://www.macuarium.com/cms/index.php?option=com_content&task=view&
id=218&Itemid=93
¾ http://www.dcc.uchile.cl/~rbaeza/cursos/proyarq/maraya/node9.html
¾ http://research.sun.com/features/tenyears/volcd/papers/SPARCv9.pdf
‐ Publicaciones:
¾ Arquitectura del PC – Volumen 1. Autor: Manuel Ujaldón Martínez. Editorial:
Megamultimedia S.L.
¾ Tema 4 de apuntes de Arquitectura de los computadores.
13