Está en la página 1de 14

Arquitectura

de Computadores

6. CPU Segmentada (Pipeline)


1. Conceptos Bsicos
2. Causas de Ralentizacin

Arquitectura de Computadores Segmentacin (Pipeline) - 1

En los dos captulos siguientes vamos a tratar dos formas de optimizar substancialmente la
arquitectura convencional que hemos estudiado hasta ahora. Esta mejora se centra en la CPU y en
la memoria.
En primer lugar empezaremos por mejorar las prestaciones de la CPU, que, en cuanto a velocidad,
se pueden mejorar mediante los procesadores segmentados (o en pipeline) los cuales incorporan
una tcnica para acelerar el ritmo de ejecucin de instrucciones.
Como veremos, hay diversos factores que pueden impedir un aprovechamiento ptimo del
concepto de pipeline en la CPU. Trataremos estos factores y las tcnicas para evitarlos en la
medida de lo posible.

Arquitectura de Computadores Segmentacin (Pipeline) - 1


Segmentacin (Pipeline) Conceptos Bsicos

?
Cmo aumentar la Construir circuitos ms
velocidad del rpidos, pero
procesador - A qu precio?
- Estado del arte?

Concurrencia - Nivel del procesador (Paralelismo)


- Nivel de instruccin (Pipelining)

Arquitectura de Computadores Segmentacin (Pipeline) - 2

La velocidad de ejecucin de los programas depende de diversos factores. Una forma de aumentar
esta velocidad es hacer ms rpidos los circuitos con los que se construyen los procesadores y la
memoria principal. No obstante, se debe considerar el coste que supone una mejora y que el lmite
a esta velocidad lo impone el estado del arte actual de la tecnologa.
Otra posibilidad es organizar el hardware para poder ejecutar ms de una instruccin
simultneamente: concurrencia. La concurrencia se puede obtener en dos niveles: al nivel del
procesador y al nivel de la instruccin. La concurrencia al nivel de la CPU se obtiene disponiendo
de mltiples procesadores ejecutando simultneamente varias instrucciones. Obtener concurrencia
a nivel de la instruccin significa poder ejecutar varias instrucciones simultneamente con una
nica CPU. Este ltimo tipo de paralelismo se denomina segmentacin o encadenamiento, aunque
suele ser ms conocido por su denominacin en ingls: pipelining.
Las arquitecturas con mltiples procesadores suelen utilizarse en mquinas de muy altas
prestaciones (y muy alto precio). Sin embargo, con arquitecturas segmentadas se consigue una
muy buena mejora del rendimiento y a un coste asequible. Por esto, es normal que todos los
microprocesadores actuales de propsito general incorporen el pipelining. Ya que es muy comn
su utilizacin en los actuales procesadores, vamos a abordar aqu esta tcnica del pipelining,
mientras que las arquitecturas multiprocesador las dejaremos para asignaturas o textos de
arquitecturas paralelas o avanzadas.

Arquitectura de Computadores Segmentacin (Pipeline) - 2


Segmentacin (Pipeline) Conceptos Bsicos

Tar Tar
tas tas
ACM ACM
E E

Tar
tas
ACM
E

10 s 10 s 10 s 10 s 10 s

Sale una tarta empaquetada


cada 50 s

Arquitectura de Computadores Segmentacin (Pipeline) - 3

El proceso en pipeline o encadenado es similar al utilizado en cualquier cadena de montaje, y el


nombre pipeline (tubera) se debe al hecho de que como en una tubera, en la entrada se aceptan
nuevos elementos (instrucciones) antes de que los previamente aceptados salgan por la salida.
Empecemos con el ejemplo de una cadena de montaje. Supongamos una gran pastelera en la que
las tartas primero se hacen en el horno y despus se empaquetan para la venta. El proceso de
empaquetar una tarta consiste en:
1. Poner una caja vaca en la mesa.
2. Meter una tarta en la caja.
3. Cerrar y precintar la caja.
4. Poner una etiqueta en la caja.
5. Llevar la caja a un gran contenedor.
Si cada una de estas operaciones la realiza un operario en 10 segundos, parece claro que se tarda
50 s en empaquetar una tarta y, por lo tanto, en empaquetar 10 tartas se tardara 500 s.

Arquitectura de Computadores Segmentacin (Pipeline) - 3


Segmentacin (Pipeline) Conceptos Bsicos

Tar Tar
tas tas
ACM ACM
E E

Tar
tas
ACM
E
Tar
tas
ACM
E
Tar
tas
ACM
E
Tar
10 s 10 s 10 s 10 s 10 s
tas
ACM
E
Tar
tas
ACM
E

Sale una tarta empaquetada


cada 10 s

Arquitectura de Computadores Segmentacin (Pipeline) - 4

Ahora supongamos que se dispone de una cadena de empaquetado de tartas con una cinta
transportadora sobre la que trabajan cinco operarios especializados en tareas distintas. El primer
operario pone la caja-1 en la cinta transportadora, y sta avanza hasta que la caja-1 est donde el
segundo operario, que introduce una tarta dentro de la caja-1, al mismo tiempo que el primer
operario pone otra caja-2 en la cinta. La caja-1 sigue avanzando hasta el tercer operario, que la
cierra y la precinta, al mismo tiempo que el segundo operario mete otra tarta en la caja-2 y el
primer operario pone otra caja-3 en la cinta. La caja-1 sigue su camino en la cinta pasando por el
cuarto operario, que pone una etiqueta, hasta llegar al quinto operario, que la retira de la cinta.
En el momento que el quinto operario retira la caja de la cinta, hay cuatro cajas ms en la cinta. Si
cada una de estas fases de empaquetado se realiza en 10 s, a partir de ahora, cada 10 s saldr
una nueva tarta empaquetada, en lugar de hacerlo cada 50 s que se tardaba cuando no haba
cadena de empaquetado. A partir de ahora, en tener 10 tartas empaquetadas se tardar solamente
100 segundos, mientras que en el caso de cuando se tena un solo operario se tardaba 500
segundos.
Debe quedar claro que aunque ahora sale una nueva tarta empaquetada cada 10 s, la preparacin
completa de cada tarta sigue requiriendo 50 s (igual que cuando haba una sola persona
preparando las tartas).

Arquitectura de Computadores Segmentacin (Pipeline) - 4


Segmentacin (Pipeline) Conceptos Bsicos

I1 I2 I3
Ejecucin
Secuencial F1 E1 F2 E2 F3 E3 ...

tiempo

buffer
Nueva unidad unidad
organizacin In
F E
del hardware
t1 t2 t3 t4
Instrucciones
tiempo
I1 F1 E1
I2 F2 E2
I3 F3 E3

Arquitectura de Computadores Segmentacin (Pipeline) - 5

En una primera aproximacin, se puede observar que para ejecutar una instruccin en la CPU se
requieren 2 pasos:
1. Alimentacin o extraccin de la instruccin desde memoria (fetching).
2. Ejecucin de la instruccin.
En 1959, el ordenador Stretch de IBM, teniendo en cuenta que durante la fase de ejecucin hay
momentos en los que no se accede a memoria principal, aprovechaba para alimentar instrucciones
por adelantado y guardarlas en un buffer de prealimentacin, todo ello en paralelo con la ejecucin
de la instruccin en curso, con lo que al terminar de ejecutar dicha instruccin poda cargar la
siguiente instruccin directamente desde el buffer sin tener que esperar a traerla de memoria.
Esta tcnica de prealimentacin o prefetching puede verse como un pipeline de dos etapas. En la
primera etapa se alimenta una instruccin de memoria y se guarda en un buffer. La segunda etapa
toma una instruccin del buffer y la ejecuta. Mientras en la segunda etapa se est ejecutando una
instruccin, la primera etapa aprovecha (los ciclos en los que la segunda etapa no accede a
memoria) para leer la siguiente instruccin y guardarla en el buffer. Cuando la segunda etapa
acabe la ejecucin y vace el buffer de prealimentacin, la primera etapa puede volver a leer una
nueva instruccin de memoria.
Con estas dos etapas de alimentacin y ejecucin de instrucciones, parece que la velocidad de
ejecucin de instrucciones por segundo (rendimiento) se duplica. Y si nos fijamos en el ejemplo de
la lnea de empaquetado de tartas, tenemos que su velocidad de tartas empaquetadas por minuto
se multiplica por cinco cuando se establece una cadena de empaquetado de cinco etapas. Esto es
as, simplemente porque el nmero de etapas dice cuntas cosas se estn haciendo
simultneamente, y claro, cuantas ms mejor.

Arquitectura de Computadores Segmentacin (Pipeline) - 5


Segmentacin (Pipeline) Conceptos Bsicos

N de Etapas N de acciones en paralelo

Etapa Etapa Etapa Etapa Etapa


F D O E W

t1 t2 t3 t4 t5 t6 t7
I1 F1 D1 O1 E1 W1 tiempo
I2 F2 D2 O2 E2 W2
I3 F3 D3 O3 E3 W3

Arquitectura de Computadores Segmentacin (Pipeline) - 6

Segn lo que acabamos de ver, parece que interesa dividir las fases de ejecucin de las
instrucciones en ms etapas, para as obtener un mayor rendimiento en la ejecucin. Poco
despus del Stretch, UNIVAC sac el LARC, con 4 etapas. Actualmente, tenemos que el PowerPC
750 tiene 6 etapas; el Pentium de Intel consta de tres unidades de proceso en pipeline, cada una
dividida a su vez en varias etapas. El Motorola 68040 tena 6 etapas para el tratamiento de los
enteros.
La ejecucin de una instruccin podra descomponerse en las siguientes 5 etapas:
1. F: Alimentacin de la instruccin (fetch)
2. D: Decodificacin de la instruccin
3. O: Extraccin y clculo de los operandos
4. E: Ejecucin (en la ALU)
5. W: Escritura del resultado (write)
Si ahora la ejecucin de una instruccin est descompuesta en 5 etapas, cada etapa puede durar
aproximadamente 1/5 de la duracin total de la ejecucin de la instruccin. Si suponemos que la
duracin de un ciclo de reloj es igual a la duracin de cada una de estas pequeas etapas,
podemos decir, en principio, que con la tcnica del pipelining se consigue que a cada ciclo de reloj
finalice una instruccin, o lo que es lo mismo, una velocidad de instruccin por ciclo.

Arquitectura de Computadores Segmentacin (Pipeline) - 6


Segmentacin (Pipeline) Conceptos Bsicos

Ms etapas

Ms rendimiento

Por qu no muchas etapas!

Lgica de control > Lgica de ejecucin

Avanza la
Aumenta nmero de etapas
Tcnica
Arquitectura de Computadores Segmentacin (Pipeline) - 7

Por lo que hemos dicho hasta ahora, esta tcnica puede reducir el nmero de ciclos/instruccin en
un factor igual a la profundidad del pipeline (nmero de etapas). Segn esto, parece que cuanto
mayor sea el nmero de etapas de un pipeline, mayor es la velocidad de ejecucin.
Sin embargo, los diseadores del S/360 de IBM (aos 60) ya se dieron cuenta de que la cantidad
de lgica de control necesaria para gestionar y optimizar los buffers intermedios y las
dependencias entre las etapas del pipeline crece enormemente con el nmero de etapas, hasta el
punto de que esta lgica de control entre etapas puede llegar a ser ms compleja y costosa (en
tiempo) que la lgica propia de cada etapa.
Dada la conveniencia de un alto nmero de etapas, a medida que se consiguen avances en la
tecnologa, los procesadores cada vez disfrutan de un mayor nmero de etapas, consiguiendo as,
la correspondiente mejora en sus pretaciones.

Arquitectura de Computadores Segmentacin (Pipeline) - 7


Segmentacin (Pipeline) Conceptos Bsicos

Pipelining Paralelismo
(Especializacin) (Replicacin)

t1 t2 t3

I1 F1 D1 O1 E1 W1 tiempo

I2 F1 D1 O1 E1 W1

I3 F1 D1 O1 E1 W1

(a) Ejecucin Secuencial Pura

Arquitectura de Computadores Segmentacin (Pipeline) - 8

Obsrvese que el pipelining no es lo mismo que el paralelismo (aunque, en cierto modo, en el


pipeline tambin hay paralelismo). Ambas tcnicas estn dirigidas a mejorar el rendimiento
(nmero de instrucciones por unidad de tiempo) incrementando el nmero de mdulos hardware
que operan simultneamente, pero en el primer caso, el hardware para ejecutar una instruccin no
est replicado, simplemente est dividido en varias etapas distintas especializadas, mientras
que en las arquitecturas paralelas, el hardware (la CPU) s est replicado (hay varios
procesadores), por lo que varias operaciones pueden ejecutarse de manera completamente
simultnea.
El incremento del rendimiento con el pipelining est limitado al mximo nmero de etapas del
procesador, mientras que con el paralelismo, las prestaciones mejoran siempre que se aadan
ms procesadores (en situaciones ideales) y el trabajo se pueda descomponer en varias tareas
para poder repartirlo.
Veamos, a continuacin, los diagramas correspondientes a la ejecucin serie, en paralelo y
mediante pipeline, suponiendo que las instrucciones se ejecutan en cinco pasos o etapas de un
ciclo de reloj cada una.
En la ejecucin en serie, la primera instruccin debe ejecutarse completamente antes de
comenzar la segunda, y sta debe completarse a su vez antes de que comience la tercera. De esta
manera, si las instrucciones son sumas, por ejemplo, se obtiene un resultado cada cinco ciclos
( en t1, en t2 en t3, ....).

Arquitectura de Computadores Segmentacin (Pipeline) - 8


Segmentacin (Pipeline) Conceptos Bsicos

Pipelining Paralelismo
(Especializacin) (Replicacin)

t1
I1 F1 D1 O1 E1 W1 tiempo

I2 F2 D2 O2 E2 W2

. . . . . . . . . . .

I3 F3 D3 O3 E3 W3

(b) Ejecucin Paralela Pura

Arquitectura de Computadores Segmentacin (Pipeline) - 9

Con un paralelismo de N vas (N procesadores), se pueden ejecutar simultneamente N


instrucciones, pero producirn resultados solamente cada 5 ciclos (N resultados cada 5 ciclos).
Ya que se producen N resultados en el mismo tiempo en el que la ejecucin en serie obtiene un
nico resultado, el incremento o aceleracin (en el caso ideal) es N.

Arquitectura de Computadores Segmentacin (Pipeline) - 9


Segmentacin (Pipeline) Conceptos Bsicos

Pipelining Paralelismo
(Especializacin) (Replicacin)

t1 t2 t3

I1 F1 D1 O1 E1 W1 tiempo

I2 F2 D2 O2 E2 W2
I3 F3 D3 O3 E3 W3

(c) Ejecucin en Pipeline

Arquitectura de Computadores Segmentacin (Pipeline) - 10

En el caso del pipeline, la segunda instruccin puede comenzar en cuanto la primera instruccin
haya finalizado su primera etapa. A partir del momento en que se llena el pipeline (despus de
cinco ciclos) se tienen cinco instrucciones ejecutndose en distintas fases, y se puede empezar a
obtener un resultado por ciclo, pues finalizar una instruccin despus de cada ciclo.
Obsrvese que el rendimiento de un pipeline no depende exactamente del nmero de etapas,
sino de la duracin de su etapa ms larga.
Aunque con una organizacin totalmente distinta, en cuanto al rendimiento, el paralelismo y el
pipeline se pueden considerar equivalentes.
No olvidar que la tcnica de la segmentacin o pipelining mejora el rendimiento no el tiempo de
ejecucin de cada instruccin.

Arquitectura de Computadores Segmentacin (Pipeline) - 10


Segmentacin (Pipelining) Ralentizacin

Situacin ideal de una


arquitectura con Pipeline

Mantener siempre
activas todas las etapas

Pero
No Resulta Fcil !
 Motivos Estructurales
 Dependencias de Operandos
 Instrucciones de Bifurcacin

Arquitectura de Computadores Segmentacin (Pipeline) - 11

Una vez elegido el nmero ptimo de etapas, para que el factor de aceleracin sea igual al nmero
de etapas se requiere que todas las etapas del pipeline siempre estn llenas de instrucciones
tiles, y que nada retrase el avance de las instrucciones a travs del pipeline.
Por desgracia, no es fcil mantener siempre ocupadas todas las etapas del pipeline. Hay tres
causas que lo impiden:
Motivos estructurales.
Dependencias de operandos.
Instrucciones de bifurcacin.
En las siguientes transparencias las comentaremos con cierto detalle.

Arquitectura de Computadores Segmentacin (Pipeline) - 11


Ralentizacin del Pipeline Motivos Estructurales

Tiempo ideal de ejecucin: Un ciclo


El Pipeline
Si una etapa no es capaz de realizar
SE DETIENE
su cometido en un ciclo de reloj

 No todas las etapas son de la misma duracin


 Acceso simultneo a memoria desde varias etapas
 Hay instrucciones ms complejas que otras

- Ejecucin ms compleja
La duracin efectiva de - Acceso a operandos
cada etapa es la de la
etapa ms lenta

Arquitectura de Computadores Segmentacin (Pipeline) - 12

Como ya veremos, se tiende a que la ejecucin de cada etapa se realice en un ciclo de reloj. Pues
bien, cuando una etapa no es capaz de realizar su cometido en un ciclo de reloj, el pipeline
se detiene hasta que dicha etapa finaliza su trabajo. Hay varias causas estructurales (arquitectura
del pipeline) que pueden hacer que el pipeline se detenga.
Por ejemplo, puede ocurrir que no todas las etapas sean de la misma duracin, con lo que
alguna etapa de corta duracin debera esperar a que acabe la siguiente que es ms larga. Esto
har que la duracin efectiva de cada etapa sea igual a la duracin de la etapa ms larga.
Normalmente los procesadores actuales tienden a un alto nmero de etapas, con lo que
automticamente tienden a igualarse los tiempos.
Otra cosa que tambin puede ocurrir es que desde varias etapas se quiera acceder a memoria
simultneamente (por ejemplo en la etapa de alimentacin de instruccin y en la escritura del
resultado). Y, claro, si una etapa se detiene para esperar a poder realizar el acceso a memoria, el
pipeline se para.
Tambin tenemos que considerar que no todas las instrucciones hacen las mismas cosas, por
lo que requieren tiempos distintos de CPU. Pasemos a la siguiente pgina para tratar este caso
con ms detalle.

Arquitectura de Computadores Segmentacin (Pipeline) - 12


Ralentizacin del Pipeline Motivos Estructurales
 Hay instrucciones ms complejas que otras
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11
I1 F1 D1 O1 E1 W1 tiempo
I2 F2 D2 O2 O2 O2 E2 W2
I3 F3 D3 D3 D3 O3 E3 W3
I4 F4 F4 F4 D4 O4 E4 W4
I5 F5 D5 O5 E5 W5

Y si alguna instruccin no utiliza todas las etapas?

Arquitectura de Computadores Segmentacin (Pipeline) - 13

No todas las instrucciones hacen las mismas cosas y requieren el mismo tiempo de CPU.
Unas pueden necesitar ms tiempo en la etapa de ejecucin (por ejemplo, la carga o escritura de
un registro requiere menos trabajo de ALU que una divisin en coma flotante), mientras que otras
pueden necesitar ms tiempo para obtener los operandos o escribir el resultado (si estn en
memoria principal se tarda ms que si estn en registros).
En el ejemplo de la transparencia vemos que la instruccin I2 no puede completar la fase de
alimentacin de operandos en el ciclo 4, necesitando para ello tambin los ciclos 5 y 6. Esto hace
que en el 5 ciclo no pueda alimentarse la instruccin I5 por estar ocupada la etapa de extraccin
de instruccin, debiendo esperar sta al ciclo 7 para poder continuar extrayendo instrucciones.
Obsrvese que como consecuencia del sobretiempo de O2, al trmino de los ciclos 6 y 7 no finaliza
ninguna instruccin (lo cual va en perjuicio del rendimiento).
Puede suceder incluso que alguna de las etapas ni siquiera necesite ejecutarse. Por ejemplo,
en un procesador cuya ltima etapa se dedique a escribir en memoria principal, la carga de un
registro no requerir dicha ltima etapa. En este caso, simplemente suceder que cuando una
instruccin corta va despus de una normal, ambas finalicen su ejecucin simultneamente, y en el
siguiente ciclo de reloj no termine ninguna instruccin; por lo tanto, el rendimiento no vara.
Aqu, para simplificar el problema, supondremos que todas las instrucciones pasan por todas las
etapas y que todas son de la misma duracin.
Nos permitimos realizar estas simplificaciones para poder centrarnos en las principales causas de
la ralentizacin del pipeline: las dependencias de datos y las bifurcaciones. Vemoslas a
continuacin.

Arquitectura de Computadores Segmentacin (Pipeline) - 13


Ralentizacin del Pipeline Dependencia de Datos

Si dos o ms add R1,R2,R3


instrucciones mul R3,R4,R5
comparten un dato ...

- RAW
Dependencia - WAR
de Datos
- WAW

Arquitectura de Computadores Segmentacin (Pipeline) - 14

Las dependencias de datos se producen cuando dos instrucciones comparten un dato (operando o
resultado). La situacin es la siguiente: Una instruccin Ij actualiza el valor de una variable, pero
una instruccin posterior, Ik, accede a esa variable antes de que Ij haya terminado la operacin.
Hay tres tipos de dependencias de datos, pero aqu vamos a comentar solamente el ms evidente,
el que se denomina lectura despus de escritura (Read After Write, o RAW).

Arquitectura de Computadores Segmentacin (Pipeline) - 14

También podría gustarte