La canalización es solo una de las muchas formas de paralelismo.
Siempre busco la analogía cuando me hacen preguntas como esta.
Imagine una habitación llena de gente llenando sobres para un negocio. Cada persona realiza la tarea completa de ensamblar los documentos en orden, doblarlos, colocarlos en el sobre, sellar el sobre, colocar el franqueo y colocar la etiqueta de dirección. Eso es paralelismo. Escala muy bien, nota; puedes imaginar emplear a miles de personas para hacer el trabajo si tuvieras que enviar una gran cantidad de cosas por correo.
- ¿Cuál es el estado actual del procesamiento del lenguaje natural?
- ¿Cómo funciona la función hash en hashing?
- ¿Cuáles son algunos de los mensajes de error más extraños y divertidos?
- ¿Cuándo serán los robots de inteligencia artificial lo suficientemente buenos como para hacer un teatro de improvisación adecuado?
- Cuando escribo una consulta en Google que falta espacios, ¿qué algoritmo se utiliza para identificar los espacios y las palabras que faltan?
Ahora imagine que organiza los rellenos de sobres como una línea de montaje. Una persona no hace nada más que reunir los documentos en orden y manejarlos con la siguiente persona en línea, que no hace nada más que doblar los documentos y entregárselos a la siguiente persona, y así sucesivamente. Esto es eficiente porque cada persona se vuelve altamente competente en la única tarea repetitiva en la que se especializan … pero tenga en cuenta que no se escala . En este caso, la tarea se divide en seis etapas de canalización, por lo que la canalización de los rellenos de sobres tiene una concurrencia limitada. Si la tarea fuera algo más complicada, como construir un automóvil, entonces obviamente podría dividir la tarea en muchas más etapas y utilizar a más personas en la línea de montaje.
El otro problema es que es difícil asegurarse de que cada etapa de la tubería tome la misma cantidad de tiempo. Tal vez sellar el sobre solo lleva dos segundos, pero armar los papeles lleva veinte segundos. Entonces tienes un cuello de botella en la tubería .
Sin embargo, las tuberías tienen una ventaja significativa sobre el tipo de paralelismo de trabajadores independientes: administran el flujo de material (o en el caso de una computadora, datos). Si cada trabajador tiene que tener su propio suministro de sobres y etiquetas de dirección, entonces deben reponerse cuando se agoten o se necesitan trabajadores adicionales para el trabajo de distribución de materiales.
Por lo tanto, la canalización es solo una forma de paralelismo. Hay muchos otros Por ejemplo, imagine una especie de sargento de instrucción al frente de la sala ladrando comandos para que todos se doblen, luego todos rellenen, luego todos sellen, etc., para que cada persona haga exactamente lo mismo sincrónicamente pero con diferentes direcciones en su conjunto de etiquetas. Eso se llama paralelismo SIMD (Single Instruction Multiple Data), y requiere que cada persona sea igualada por la velocidad. Si no lo son, entonces, en lugar de un cuello de botella, tiene un desequilibrio de carga .
Espero que eso le ayude a comprender cómo la canalización contrasta con otros tipos de paralelismo.