Tubería (informática)


En informática , una tubería , también conocida como tubería de datos , [1] es un conjunto de elementos de procesamiento de datos conectados en serie, donde la salida de un elemento es la entrada del siguiente. Los elementos de una canalización a menudo se ejecutan en paralelo o en intervalos de tiempo. A menudo se inserta cierta cantidad de almacenamiento intermedio entre los elementos.

Algunos sistemas operativos [ ejemplo necesario ] pueden proporcionar una sintaxis similar a UNIX para encadenar varias ejecuciones de programas en una canalización, pero implementan esta última como una simple ejecución en serie, en lugar de una verdadera canalización, es decir, esperando a que finalice cada programa antes de iniciar el siguiente. . [ cita requerida ]

La canalización es un concepto de uso común en la vida cotidiana. Por ejemplo, en la línea de ensamblaje de una fábrica de automóviles, cada tarea específica, como instalar el motor, instalar el capó e instalar las ruedas, a menudo se realiza en una estación de trabajo separada. Las estaciones realizan sus tareas en paralelo, cada una en un vagón diferente. Una vez que un automóvil ha realizado una tarea, se mueve a la siguiente estación. Las variaciones en el tiempo necesario para completar las tareas se pueden acomodar mediante el "buffering" (manteniendo uno o más autos en un espacio entre las estaciones) y/o "stalling" (deteniendo temporalmente las estaciones aguas arriba), hasta que la próxima estación esté disponible. .

Suponga que ensamblar un automóvil requiere tres tareas que toman 20, 10 y 15 minutos, respectivamente. Entonces, si las tres tareas fueran realizadas por una sola estación, la fábrica produciría un automóvil cada 45 minutos. Mediante el uso de una tubería de tres estaciones, la fábrica produciría el primer automóvil en 45 minutos y luego uno nuevo cada 20 minutos.

Como muestra este ejemplo, la segmentación no reduce la latencia , es decir, el tiempo total que tarda un elemento en pasar por todo el sistema. Sin embargo, aumenta el rendimiento del sistema , es decir, la velocidad a la que se procesan los elementos nuevos después del primero.

Dado que el rendimiento de una tubería no puede ser mejor que el de su elemento más lento, el diseñador debe tratar de dividir el trabajo y los recursos entre las etapas para que todas tomen el mismo tiempo para completar sus tareas. En el ejemplo anterior de ensamblaje de automóviles, si las tres tareas tomaran 15 minutos cada una, en lugar de 20, 10 y 15 minutos, la latencia seguiría siendo de 45 minutos, pero se terminaría un automóvil nuevo cada 15 minutos, en lugar de 20.