Vous êtes sur la page 1sur 6

Pipeline

Amanda Solano Astorga


Escuela de Ingeniera en Computacin, Tecnolgico de Costa Rica
Assa2909@gmail.com

Abstract
Understand the operation of a Pipeline, its
usefulness and problems that can arise when
implementing and how to fix it in the most effective
manner.
Resumen
Comprender el funcionamiento de un Pipeline,
su utilidad y los problemas que pueden llegar a surgir
cuando se implementa y como solucionarlo de la manera
ms eficaz.
I.INTRODUCCIN
Pipeline hace referencia a una arquitectura de
diseo de software que es til para realizar mltiples
tareas simultneamente.
II. DEFINICIN
Pipeline con respecto a la arquitectura de los
computadores hace referencia al registro de datos, que en
ocasiones es llamado registro de arquitectura paralela.
Con respecto al diseo de software, un pipeline,
consta de una cadena de elementos de procesamiento
organizados de tal forma que la salida de cada elemento
es la entrada del siguiente.
La definicin puede sonar complicada pero en
realidad la traduccin de pipeline es tubera, donde el
flujo de agua, en este caso no es ms que la informacin
que suele ser corrientes de registros, bytes o bits.
II.HISTORIA
El trmino fue usado por primera vez a
principios del siglo XX, con la fabricacin del automvil
Ford T.
Fue creado por Douglas McIlroy, quien fue uno
de los diseadores de los primeros shell de Unix, las
cuales contribuyeron en gran medida a la popularidad
que obtuvo el sistema operativo.
Finalmente la idea fue adoptada por otros
sistemas operativos como DOS.
III.FUNCIONAMIENTO
Este tipo de arquitectura consiste en ir
transformado los flujos de datos en un proceso
comprendido en varias fases que son secuenciales, siendo
la entrada de cada una la salida de la anterior,
manteniendo un almacenamiento temporal de datos o un
buffering entre los procesos.
En resumen, como se puede apreciar en la figura 1,
el funcionamiento de una tubera es el siguiente:
Un filtro lee el flujo de datos de sus entradas y
genera flujos de datos a sus salidas.
El filtro transforma los datos de manera
incremental.
Por ltimo, la tubera trasmite el flujo de datos.

Fig. 1. Funcionamiento de Pipeline.
Por esta razn es comn observarlo en los
sistemas multitareas, ya que estos ejecutan un serio de
procesos de forma simultnea, los cuales son ejecutados
posteriormente en forma secuencial dndole una
prioridad la cual la asigna un administrador de tareas.
Para entender mejor el funcionamiento se puede
comparar este con el funcionamiento de cualquier cadena
de montaje. Ya que esta al igual que el pipeline, acepta
un nuevo elemento inmediatamente despus del que el
anterior haya salido.
Como se puede observar en la figura 2, el
nmero de etapas que se realiza depende del nmero de
acciones en paralelo que se estn procesando en ese
momento, el tiempo obviamente est relacionado con el
tiempo que toma cada etapa.


Fig. 2. Ejemplificacin de Pipeline en funcionamiento
IV.ALMACENAMIENTO EN BUFFER
Adems de la implementacin, este aspecto
tambin es importante ya que por ejemplo si se tiene un
programa que enva datos este puede producir 5000 bytes
por segundos y un programa para la recepcin tiene un
lmite de 100 bytes, es decir, eso es todo lo que puede
aceptar por segundo, pero aun as los datos no se pierden.
Ya que cuando el programa de recepcin est
listo para leer los datos, el sistema operativo procede a
enviar los datos que se encuentra en la cola y eliminarlos
de esta.
Si el buffer que tiene la cola se llena, el
programa de envi de datos se paraliza para permitir al
receptor procesar algo de datos y as poder eliminar
elementos del buffer.
V.RESTRICCIONES
Cada filtro que posee la tubera en
independiente de los otros, es decir, que no comparte su
estado con los otros tubos.
Por esta razn, los tubos no tienen conocimiento
de sus conexiones, en otras palabras, las tuberas no
saben a cul otra tubera se encuentra conectadas.
VI.ESPECIALIZACIONES EN EL ESTILO
Las pipelines no es ms que una topologa que
consiste en una secuencia lineal de filtros.
Cada tubera posee un una capacidad limitada.
Los datos que fluyen por estas tuberas tienen
un tipo de datos muy especfico.
VII.VENTAJAS
Algunas de las ventajas que presenta este tipo de
modelo es:
Descomponan de los problemas en pasos
independientes.
Soporta la reutilizacin de filtros
Sistemas fciles de mantener y mejorar
Permite anlisis
Soportan la ejecucin concurrente de filtros
Escalables, ya que permite la insercin de
nuevos filtros.
VIII.DESVENTAJAS
No es adecuado para realizar procesamientos
interactivos.
Tiene problemas de rendimientos ya que los
datos son transmitidos de forma completa entre
los filtros.
Cuando una etapa no es capaz de realizar su
cometido en una etapa de ciclo de reloj, el
pipeline se detiene.

Un ejemplo de esta ltima desventaja podra ser
que no todas las etapas que se realicen sean de la
misma duracin, con lo que alguna etapa de
duracin menor deber esperar a que una de mayor
duracin termine.
Otra situacin que se puede dar, es que desde
varias etapas sea necesario acceder a la memoria de
forma simultnea y si una etapa se detiene para
poder ingresar a la memoria, todo el pipeline se
detiene.
Otra consideracin, es que no todas las
instrucciones estn programadas para realizar las
mismas tareas, por ende requieren de tiempos
distintos en el CPU.
IX. Problemas y Soluciones
Al implementar este modelo de arquitectura
pueden llegar a surgir ciertos problemas, en este
apartado se analizaran algunos de ellos y algunas
soluciones disponibles.
A. Dependencia de datos
Esto sucede cuando dos instrucciones dependen
de un solo dato, dando la siguiente situacin: Una
instruccin actualiza el valor de una variable, pero
otra instruccin utiliza esa variable antes del que
valor sea actualizado.
El caso ms comn en la lectura despus de
escritura o RAW.
En la figura 3 se puede ejemplificar mejor este
problema, puede presentarse en las instrucciones l3 y
l4, si la instruccin MUL, que se encuentra en el
ciclo 5, es cargada antes de que el resultado de la
instruccin l4, que se realiza al final del ciclo 6, se
pueda llevar a cabo, por ende el resultado de MUL,
no sera el correcto.


Fig. 3.Ejemplo de RAW
Para evitar este tipo de situaciones existen 2 posibles
soluciones.
Prevencin:
Como su nombre lo indica, lo ideal sera evitar
que se llegue a esta situacin de dependencia.
Para lograr esto se debe indicar al compilador
que realice una reorganizacin de las instrucciones como
se puede observar en la figura 4.

Fig. 4.Ejemplo de Prevencin de Dependencia
Si no se puede realizar la reordenacin de
instrucciones, se puede agregar un NOP, para evitar la
dependencia.
Deteccin y resolucin:
Para implementar la deteccin, se requiere de un
elemento adicional de hardware, ya que hay que indicarle
al compilador que se est realizando una tarea que
depende de otro resultado. EL dispositivo encargado de
esto se le conoce como interlock.
Y para la resolucin existen dos posibles
alternativas. La primera de ella es detener el pipeline,
para realizar esto con la ayuda de hardware, se debe
detener solamente aquellas etapas donde el pipeline
presenta su dependencia, con esto se asegura que los
clculos sern correctos.
La otra forma de evitarlo es mediante la
anticipacin de la dependencia, para lograr esto se puede
ejemplificar mejor con la figura 5, donde se explica que
el retraso de la detencin se puede evitar redirigiendo el
resultado de la etapa E, que hace referencia a la
ejecucin, de la instruccin l1 directamente en la entrada
de la etapa E o la etapa O de la instruccin l2.

Fig. 5. Ejemplo de anticipacin

B. Mantenimiento de Flujo
Uno de los principales problemas al disear el
pipeline es mantener un flujo constante de instrucciones
sin alimentado sus diversas etapas.
Durante el diseo, existen una gran cantidad de
bifurcaciones. Ya que se lleva un programa con un flujo
normal de dato, pero al aparecer un salto, se altera este
ciclo, llevando al programa por otro lado, provocando
problemas con los saltos.
El problema se genera, porque estas bifurcaciones no
muestran las siguientes instrucciones hasta que esta se
invoca, provocando un retraso en los ciclos y dejando
etapas vacas que son conocidas como huecos de retardo,
las cuales se observan mejor en la figura 6.

Fig. 6. Huecos de retardo
Para resolver este problema con los saltos se
debe aplicar una bifurcacin retardada, que consiste en
introducir instruccin que se deban ejecutar sin importar
si se toma el salto o no, el problema es que si se toma el
salto las instrucciones siguientes no se pueden llevar a
cabo, por ende los procesadores con esta cualidad,
primero realizan las instrucciones que viene posterior al
salto y luego realiza el salto hacia la siguiente
instruccin.
Otra solucin consiste en realizar una prediccin
de un salto, es decir intentar averiguar si la instruccin de
bifurcacin ser verdad o mentira. Esto es ventajoso,
porque se basa en la suposicin de que siempre se va a
realizar el salto, por lo tanto el procesador va cargando
en la cola las instrucciones que realiza el salto, entonces
en caso de realizar va directamente a realizarlas de lo
contrario deber de borrar todo lo cargado en pipeline y
seguir con las instrucciones de forma lineal.
Aunque se puede suponer que hay un control de
bucle donde la primera instruccin comienza con esta y
hasta que termine va a realizar la bifurcacin. Esto se
denomina ejecucin especulativa.
El problema con esto, es que se puede empezar a
alimentar al pipeline con las instrucciones del salto y
comienza a procesarlas en las siguientes etapas antes de
que la instruccin de salto finalice su etapa de
finalizacin y si al terminar el bucle no se realiza la
bifurcacin estas instrucciones ya se ejecutaron.
Por ende se debe tener cuidado que todas las
instrucciones que se realicen no modifiquen variables ni
registros, antes de estar completamente seguros de que se
llevaran a cabo.
Se pueden dar dos tipos distintos de prediccin,
una de ellas es la prediccin esttica, la cual se da cuando
la repeticin de la bifurcacin dentro del bucle la puede
detectar el compilador y establecer si se realizara la
operacin mediante un cdigo de operacin incluido en
la bifurcacin. Lo cual indica que cada vez que se pasa
por el ciclo, el programa realiza la misma prediccin.
La otra prediccin que existe en la dinmica,
que es una mejora a la prediccin esttica. Para poner
realizar la dinmica el hardware del procesador debe de
posees la capacidad de establecer la posibilidad que se
realice o no el salto cada vez que haya una instruccin de
bifurcacin.
Para lograr lo anterior el CPU, debe de poner
contener el resultado de todas las ejecuciones que se ha
llevado a cabo en las bifurcaciones.
X. CARACTERISTICAS
Algunas caractersticas que posee este modelo son:
Permite la multiprogramacin y el
multiprocesamiento, esto se toma tanto al nivel
del programa como de trabajo.
Realizan acciones que se toman dentro de un
mismo programa ejecutndose en procesos
independientes de forma simultnea. Estas
acciones son llamadas tareas o procedimientos.
Realizan acciones a nivel de instruccin, es
decir dentro del mismo proceso o tarea se puede
ejecutar instrucciones de forma independiente.
Estas acciones son denominadas
interinstrucciones.
XI.PSEUDO-PIPELINES
En sistemas operativos de una sola tarea, los
procesos de una tubera tienen que ser ejecutados uno por
uno en orden secuencial; por lo tanto la salida de cada
proceso se debe guardar en un archivo temporal, por el
siguiente proceso.
Puesto que no hay paralelismo o de
conmutacin de la CPU, esta versin se llama un "
pseudo- tubera Por ejemplo, el intrprete de lnea de
comandos de MS -DOS dispone pseudoductos con una
sintaxis superficial similar a la de las tuberas de Unix.
Para crear estas pseudo- tubera, se deben
seguir los siguientes pasos:
Crear un archivo temporal
Ejecutar el comando " dir" , la reorientacin
de su produccin al primer archivo creado
Crear otro archivo temporal
Ejecutar el comando " sort " , la
reorientacin de su entrada al primer
archivo temporal y su salida al segundo
archivo temporal
Ejecutar comando "more" , redirigiendo su
entrada al segundo archivo temporal , y la
presentacin de sus resultados para el
usuario
Eliminar los dos archivos temporales , que
ya no son necesarios
Vuelva a la lnea de comandos
Todos los archivos temporales se almacenan en
el directorio al que apunta % TEMP% , o el directorio
actual if% TEMP% no est establecida.
Por lo tanto, los pseudo- tubos actuaron como
verdaderos tubos con un bfer de canalizacin de tamao
ilimitado con la restriccin significativa de que un
proceso de recepcin.
XII. TERMINOLOGIA
En el contexto del pipeline existen una serie de
trminos que son de considerar.
La profundidad del pipeline depende del
nmero de etapas que este contenga. En la
imagen 7, se puede observan 5 etapas.
Llenado se conoce como el periodo que se
realiza al comenzar el procesamiento de una
secuencia de instrucciones, en el cual no todas
las etapas del pipeline se encuentran ocupadas
El periodo en el cual todas las etapas del
pipeline se encuentran ocupadas se le conoce
como lleno.
El ltimo periodo se lleva a cabo cuando el
procesamiento de una secuencia de
instrucciones, en el cual no todas las etapas del
pipeline se encuentran en estado de ocupado se
conoce como vaciado.

Fig. 7.Terminologia de Pipeline
XIII. CONCLUSIONES
El modelo de arquitectura pipeline es un modelo
sumamente til que permite mejorar el diseo de un
cdigo, ya que permite que todo funcione de forma
simultnea.
REFERENCIAS
[1] M.Morris, Arquitectura de Computadoras
[online].Mxico, 1994.Disponible
en:http://books.google.co.cr/books?id=2wWZyKu60cAC
&pg=PA227&dq=Arquitectura+Pipeline&hl=en&sa=X
&ei=EidkU5msK-
PIsAT7oIGQCw&redir_esc=y#v=onepage&q=Arquitect
ura%20Pipeline&f=false
[2]A.Moran, A. Mendoza, Arquitectura Pipeline
[online].2012.Disponible en:
http://www.slideshare.net/rehoscript/arquitectura-
pipeline
[3]Universidad Rey Juan Carlos, Tema 9 Arquitecturas
Software [online].Espaa. Disponible en:
http://www.kybele.etsii.urjc.es/docencia/IS4/2013-
2014/Material/IS4.11.12.Tema.IX.Arquitecturas%20Soft
ware.pdf
[4]A. Romano, Historia del Pipeline [online]. Disponible
en:
http://www.dacya.ucm.es/hidalgo/arquitectura/pipeline.p
df
[5]Arquitectura de Computadores [online].Disponible
en:http://www.dia.eui.upm.es/asignatu/arq_com/Paco/6-
Pipeline.pdf
[6]Cats Pajamas, Arquitectura de computadoras
[online].Nov 21. Disponible en:
http://arquicompuv.wordpress.com/2013/11/21/pipeline