1. Introducción
Los procesadores segmentados sirven para mejorar el rendimiento sin
necesidad de duplicar excesivamente el hardware.
Se usaron por primera vez en los años 60 para los grandes sistemas
(mainframes) de altas presentaciones, y fueron muy importantes en los años
80 para el enfoqué RISC1del diseño de computadores (la mayoria de técnicas
RISC se relacionan con el objetivo de conseguir una buena segmentación).
El Intel i486 fue la primera implementación segmentada de la arquitectura
IA32.
La segmentación se utiliza mucho actualmente para el desarrollo de juegos de
instrucciones del procesador. Actualmente, la tendencia es lograr
segmentaciones más profundas para obtener frecuencias de reloj muy altas. Es
un método muy eficaz para obtener un mayor rendimiento.
Procesamiento Segmentado
2. Segmentación:
La segmentación (pipelining) es una técnica de implementación de
procesadores que desarrolla el paralelismo a nivel de intrainstruccion.
Mediante la segmentación se puede solapar la ejecucion de múltiples
instrucciones.
El procesamiento segmentado aprovecha la misma filosofía de trabajo de la
fabricación en cadena: cada etapa de la segmentación (o segmento) completa
una parte (subtarea) de la tarea total.
Los segmentos están conectados cada uno con el siguiente, de forma que la
salida de uno pasa ser la entrada del siguiente.
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 cauce2. Las instrucciones entran por un extremo, son procesadas a través de
las etapas y salen por el otro extremo.
Lo más importante de la segmentación es que las diferentes subtarea pueden
procesarse de forma simultánea, aunque se sobre diferentes datos.
Una contribución clave de la segmentación es la posibilidad de comenzar una
nueva tarea sin necesidad de que la anterior se haya terminado.
3. La medida de la eficacia de un procesador segmentado no es el tiempo total
transcurrido desde que se comienza una determinad tarea hasta que se termina
(tiempo de latencia del procesador), sino el tiempo máximo que puede pasar
entre la finalización de dos tareas consecutivas.
Considérese una tarea, compuesta por n subtarea. Si estas subtarea se procesan
de forma totalmente, el tiempo necesario para procesar la tarea total será la
suma de los tiempos necesarios para la terminación de cada una de las
subtarea
En este esquema, Tij representa la subtarea j dentro de la tarea i.
Por otra parte, para comenzar el tratamiento de una nueva tarea será necesario
esperar ese mismo tiempo. Esto se debe a que habrá algunas unidades
funcionales que serán necesarias para llevar a cabo varias de las subtarea y por
ello esas subtareas no podrán superponerse en el tiempo
Si para procesar esa misma tarea, se emplea un procesador segmentado, basta
que se haya terminado la primera subtarea para poder empezar a procesar una
nueva tarea.
4. En la citada figura puede verse el continuo flujo de tareas que se van
procesando a través de los n segmentos encargados de procesar cada una de
las subtareas.
5. Procesador Segmentado:
Un procesador segmentado es aquel que divide el proceso de
ejecucion de una instrucción en N etapas de similar duracion con el
objetivo de procesar N instrucciones simultáneamente,
encontrándose cada una en una etapa diferente de su ejecucion.
Conseguimos asi, 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.
Recordemos que:
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.
6. El DLX es un microprocesador diseñado por John L. Hennessy y
David A. Patterson presenta una ejecucion 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 5 etapas son:
IF: búsqueda
ID: decodificación
EX: ejecucion de unidad aritmético lógico
MEM: memoria
WB: escritura
De esta manera, mientras el procesador escribe una instrucción, ejecuta
simultáneamente las 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.
Podemos observar en el siguiente grafico la ejecucion simultánea de cinco
instrucciones distintas etapas en un procesador DLX
7. Todos los microprocesadores actuales se encuentran segmentados, habiendo
aumentado el número de etapas con el paso de las generaciones. Asi, lo
normal en la séptima generación es encontrarnos con cauces de ejecucion
entera de 20 etapas de segmentación en el caso del Pentium IV (2003) de Intel
o 31 etapas en los procesadores Prescott (2004) también de Intel
La gran ventaja de la aplicación de la segmentación en el diseño de
losmicroprocesadores es que el aumento del rendimiento se consigue con solo
reorganizar las unidades funcionales existentes, por lo que no supone un incre
mento 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 d
e las instrucciones pero es despreciable si lo comparamos con el espectacular i
ncremento del rendimiento.
Clasificación de los Procesadores Segmentado:
Puede establecerse una clasificación de los procesadores segmentados
atendiendo al uso que se da a la segmentación. Esta clasificación fue
propuesta por Handler (1997).
a) Segmentación aritmética
b) Segmentación de instrucciones
c) Segmentación de procesadores
Segmentación aritmética
La ALU de un computador puede segmentarse para la ejecucion de
algoritmos aritméticos complejos. La segmentación aritmética es muy
útil para procesar sobre todas las componentes de un vector, esto se
consigue provocando que un segmento de la unidad aritmética trabaje
8. sobre una de las componentes mientras que las demás trabajan sobre las
componentes siguientes
Un ejemplo clásico de este tipo de procesadores es el multiplicador
segmentado basado en un árbol de Wallace, tal como se muestra en la
figura.
En esta figura los bloques CSA representan a sumadores con
salvaguarda de llevadas y los bloques CLA, a sumadores con
generación anticipada de llevadas. Las líneas inclinadas hacia la
izquierda indican que los vectores de llevadas deben desplazarse a la
izquierda un lugar antes de entrar en la etapa siguiente.
9. Segmentación de instrucción
La ejecución de un flujo de instrucciones puede adoptar una estructura
segmentada que permita el solapamiento de la ejecución de una
instrucción con la lectura, decodificación, búsqueda de operandos, etc.
de las instrucciones siguientes. Esta técnica también se denomina
anticipación de instrucciones (instru on lookahead).
En la figura se muestra un ejemplo de segmentación de instrucciones.
La citada figura corresponde a un computador de tipo registro-registro,
es decir un computador en que los accesos a memoria están restringidos
a instrucciones específicas (LOAD y STORE)
Se supone que el computador dispone de arquitectura Harvard, es decir,
que posee memorias cache separadas por codigo y datos
En el ejemplo se ha dividido la ejecucion completa de casa instrucción
en 4 segmentos
A. Lectura.
B. Decodificación y lectura de operandos.
C. Ejecucion.
D. Acceso a la memoria de datos (si es necesario).
Prácticamente, todos los computadores actuales disponen de segmentación de
instrucciones.
10.
11. Segmentación de procesadores
Este tipo de procesamiento se producecuando el mismo flujo de datos es
tratado por una serie de procesadores, de forma que cada uno de ellos
efectué una subtarea del proceso total. Cada procesador dejara sus
resultados en una memoria, que también será accesible desde el
siguiente, para que este procese esos resultados para ejecutar la
siguiente subtarea sobre el flujo de datos. Este tipo de segmentación se
emplea solamente en procesadores vectoriales de muy altas
prestaciones.
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.
Procesador superescalar
Un procesador superescalar de factor N es aquel que replica N veces la
circuitería de algunas 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.
12. En el siguiente grafico se muestra la ejecucion en paralelo de 5
instrucciones cada una en su cauce o pipeline, lo que representa una
Superescalaridad de factor 5.
Combinación de segmentación y Superescalaridad
Como se puede observarse en la figura, las filosofías de segmentación y
Superescalaridad son perfectamente compatibles.
13. 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 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.
14. 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.
Supersegmentacion
La palabra Supersegmentacion nos lleva a la tentación de aplicar la
ecuación superescalar + segmentado = supersegmentado, cuando en
realidad la ecuación correcta es segmento + segmento =
supersegmentado.
La Supersegmentacion 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 esta (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.
Procesadores Supersegmentacion
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.
15. Por ejemplo una descomposición en 5 etapas de segmentación como la
del Pentium compuesta por las etapas de búsqueda, decodificación,
lectura, ejecucion y escritura, permite aplicar otra segmentación a cada
una de las unidades funcionales que intervienen en cada ciclo como son:
la cache de instrucciones, el decodificador de instrucción, la cache de
datos, la ALU o el banco de registro.
En el caso de la cache de instrucciones que es referenciada en la
primera etapa, esta puede ser una cache segmentada en dos etapas,
que permite simultanear la búsqueda de una instrucción y la
localización de su celda de cache asociada, con la lectura del codigo de
la anterior instrucción y su volcado al bus de datos del procesador. Asi
se obtienen dos niveles de segmentación como se muestra en el
apartado d) de la figura, en la que se comparan las 4 técnicas de
paralelismo expuestas.
16.
17.
18. En general la Supersegmentacion lleva asociada la subdivisión del ciclo de
reloj base en ciclos supersegmentado
Tantos ciclos como etapas hayan establecido para el segundo nivel de
segmentación, lo que desemboca en diseños que trabajan a muy alta
frecuencia.
Una buena implementación supersegmentado siempre incluye la ejecucion
de instrucciones fuera de orden. La ejecucion de instrucciones fuera de
orden es un paradigma utilizado en la mayoria 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 un cola a la
espera, de forma que otras instrucciones puedan abandonar la cola y
ejecutarse si sus operando están disponibles.
La ejecucion 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
19. Ejemplos de procesadores supersegmentado
ALPHA 21264
Un clásico ejemplo de diseño supersegmentado es el procesador Alpha
21264 de Digital, procesador RISCde 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 9 etapas para el caso de la cache, 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.
Pentium IV
Desarrollada en el 2000, está compuesto de 42.000.000 de transistores,
funciona a una frecuencia de 2`4 GHz, con un FSB3de 400 MHZ.
Presenta una Supersegmentacion de 20 etapasy 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 ejecucion de 4
instrucciones en las 20 etapas supersegmentadas de un Pentium IV.