En computación, se le llama pipeline a una serie de elementos de procesamiento de datos ordenados de tal modo que la salida de cada uno es la entrada del siguiente, como quien dice una cadena de montaje pero en vez de orientada a la manufactura, orientada al procesamiento de datos e instrucciones.
La acción básica de cualquier microprocesador, en tanto se mueve a través de la corriente de instrucciones, se puede descomponer en una serie de cuatro pasos simples, que cada instrucción en la corriente de código debe atravesar para ser ejecutada:
- 1. Fetch: "traer" la instrucción que se va a ejecutar, de la dirección almacenada en el contador de programa.
- 2. Store: "almacenar" la instrucción en el registro de instrucciones y "descifrarla", incrementando la dirección en el contador de programa.
- 3. Execute: "Ejecutar" la instrucción almacenada en el registro de instrucciones. Si la instrucción no es una instrucción de rama sino una instrucción aritmética, este proceso la envía a la ALU apropiada (ALU: Arithmetic Logic Unit en español: Unidad Aritmético-Lógica), donde el microprocesador: a. "Lee" el contenido de los registros de entrada. b. "Agrega" el contenido de los registros de entrada.
- 4. Write: "Escribir" los resultados de esa instrucción de la ALU nuevamente dentro del registro de destinación
En un procesador moderno, los cuatro pasos arriba descritos son repetidos una y otra vez hasta que el programa termine de ejecutarse. Éstas son, en hecho, las cuatro etapas en un "pipe" clásico del RISC. (Definiré el término "pipe" pronto; por ahora, piensen en un "pipe" como serie de etapas que cada instrucción en la corriente de código debe atravesar cuando se está ejecutando dicha corriente de código.)
Cada uno de los conceptos anteriores puede ser usado para representar una fase en el "ciclo de vida" de una instrucción. Una instrucción comienza en la fase de "traer", se mueve a la fase de "descifrar", después a la fase "ejecutar", y finalmente a la fase "escribir". Cada fase toma un tiempo fijo, pero de ningún modo igual al que otra fase toma en cumplir su cometido.
En la mayoría de los ejemplos de procesadores con los que trabajaremos en este artículo, las cuatro fases tomarán la misma cantidad de tiempo; éste no es generalmente el caso en procesadores del mundo real. De cualquier manera, si el procesador simple del ejemplo toma exactamente 1 nanosegundo para terminar cada etapa, entonces el procesador puede acabar una instrucción cada 4 nanosegundos.
Fuente de la imagen: https://en.wikipedia.org/wiki/Instruction_pipelining
Comentarios
Publicar un comentario