El documento describe el funcionamiento de un pipeline, que permite realizar múltiples tareas de forma simultánea mediante una cadena de elementos de procesamiento organizados secuencialmente. Explica que un pipeline puede dividirse en etapas como lectura, transformación y transmisión de datos. También señala algunos problemas comunes como las dependencias de datos entre instrucciones y cómo mantener un flujo constante a través del pipeline al lidiar con saltos condicionales.
0 calificaciones0% encontró este documento útil (0 votos)
296 vistas6 páginas
El documento describe el funcionamiento de un pipeline, que permite realizar múltiples tareas de forma simultánea mediante una cadena de elementos de procesamiento organizados secuencialmente. Explica que un pipeline puede dividirse en etapas como lectura, transformación y transmisión de datos. También señala algunos problemas comunes como las dependencias de datos entre instrucciones y cómo mantener un flujo constante a través del pipeline al lidiar con saltos condicionales.
El documento describe el funcionamiento de un pipeline, que permite realizar múltiples tareas de forma simultánea mediante una cadena de elementos de procesamiento organizados secuencialmente. Explica que un pipeline puede dividirse en etapas como lectura, transformación y transmisión de datos. También señala algunos problemas comunes como las dependencias de datos entre instrucciones y cómo mantener un flujo constante a través del pipeline al lidiar con saltos condicionales.
El documento describe el funcionamiento de un pipeline, que permite realizar múltiples tareas de forma simultánea mediante una cadena de elementos de procesamiento organizados secuencialmente. Explica que un pipeline puede dividirse en etapas como lectura, transformación y transmisión de datos. También señala algunos problemas comunes como las dependencias de datos entre instrucciones y cómo mantener un flujo constante a través del pipeline al lidiar con saltos condicionales.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 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