Pipeline

14
Introducción 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. Entender cómo funciona un pipeline es un paso importante para entender qué diablos ocurre dentro de un procesador, y es por eso que en esta guía, que hemos separado en dos capítulos, intentaremos dejarte en claro el sentido y mecánica de estas cadenas de montaje que existen al interior de un CPU. El material que vas a leer fué licenciado a partir de un documento facilitado por Arstechnica, el cual fué traducido y adaptado por CHW para el mejor entendimiento de nuestro público. El Pentium 4 y sus pipelines El Pentium 4 original era un diseño radical por un número de razones, pero quizás su característica más llamativa (y polémica a la vez) era su "pipelining" o "segmentación" extraordinariamente profunda. Con más de 20 etapas, los "pipes" del Pentium 4 eran casi dos veces más profundos que los "pipes" de sus competidores. Recientemente el Prescott, sucesor de los Pentium 4 en 90nm, llevó el "pipelining" a un nivel superior, agregando otras 10 etapas sobre los "pipes" del Pentium 4. La estrategia de Intel de profundizar el pipeline del Pentium 4, una práctica que Intel llama "hyperpipelining", ha dado sus frutos en términos del funcionamiento, pero no sin sus desventajas. En artículos anteriores sobre el Pentium 4 y Prescott, me he referido a las desventajas asociadas a los "pipes" profundos, e incluso he intentado explicar estas desventajas dentro del contexto de artículos técnicos más grandes sobre Netburst y otros asuntos. En la actual serie de artículos, dedicaré bastante tiempo a explicar el

description

dscripcion arq pipeline

Transcript of Pipeline

IntroduccinEn computacin, 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.Entender cmo funciona un pipeline es un paso importante para entender qu diablos ocurre dentro de un procesador, y es por eso que en esta gua, que hemos separado en dos captulos, intentaremos dejarte en claro el sentido y mecnica de estas cadenas de montaje que eisten al interior de un !"#.El material que vas a leer fu licenciado a partir de un documento facilitado por $rstechnica, el cual fu traducido y adaptado por !%& para el mejor entendimiento de nuestro p'blico.El Pentium 4 y sus pipelinesEl "entium ( original era un dise)o radical por un n'mero de razones, pero quizs su caracterstica ms llamativa *y polmica a la vez+ era su ,pipelining, o ,segmentacin, etraordinariamente profunda. !on ms de -. etapas, los ,pipes, del "entium ( eran casi dos veces ms profundos que los ,pipes, de sus competidores. /ecientemente el "rescott, sucesor de los "entium ( en 0.nm, llev el ,pipelining, a un nivel superior, agregando otras1. etapas sobre los ,pipes, del "entium (.2a estrategia de 3ntel de profundizar el pipeline del "entium (, una prctica que 3ntel llama ,hyperpipelining,, ha dado sus frutos en trminos del funcionamiento, pero no sin sus desventajas. En artculos anteriores sobre el "entium ( y "rescott, me he referido a las desventajas asociadas a los ,pipes, profundos, e incluso he intentado eplicar estas desventajas dentro del conteto de artculos tcnicos ms grandes sobre 4etburst y otros asuntos. En la actual serie de artculos, dedicar bastante tiempo a eplicar el ,pipelining,, su efecto sobre funcionamiento del microprocesador, y sus desventajas potenciales. 5espus de una introduccin bsica sobre el concepto de los ,pipes,, eplicar qu se requiere para hacer ,pipes, eficientes y qu desventajas presentan dise)os con pipelines profundos como el "rescott. "ara el final del artculo, debes tener un claro entendimiento decmo la profundidad de los ,pipes, se relaciona con el funcionamiento del microprocesadoren diversos tipos de cdigo.Ciclo de vida de una instruccin2a accin bsica de cualquier microprocesador, en tanto se mueve a travs de la corriente de instrucciones, se puede descomponer en una serie de cuatro pasos simples, que cada instruccin en la corriente de cdigo debe atravesar para ser ejecutada6 1. 7etch6 ,traer, la instruccin que se va a ejecutar, de la direccin almacenada en el contador de programa. -. 8tore6 ,almacenar, la instruccin en el registro de instrucciones y ,descifrarla,, incrementando la direccin en el contador de programa. 9. Eecute6 ,Ejecutar, la instruccin almacenada en el registro de instrucciones. 8i la instruccin no es una instruccin de rama sino una instruccin aritmtica, este proceso la enva a la $2# apropiada *$2#6 $rithmetic 2ogic #nit : en espa)ol6 #nidad $ritmtico;2gica+, donde el microprocesador6 a. ,2ee, el contenido de los registros de entrada. b. ,$grega, el contenido de los registros de entrada. (. &rite6 ,Escribir, los resultados de esa instruccin de la $2# nuevamente dentro del registro de destinacinEn un procesador moderno, los cuatro pasos arriba descritos son repetidos una y otra vez hasta que el programa termine de ejecutarse. odo el espacio blanco en el diagrama representa hardDare de proceso que permanece inactivo mientras espera que termine de ejecutarse la instruccin actual. %aciendo ,pipelining, al procesador, podemos poner a trabajar ms de ese hardDare en cada nanosegundo, incrementando de esa manera la eficiencia del procesador y su performance en la ejecucin de programas.$ntes de seguir, debo clarificar unos cuantos aspectos del diagrama anterior que alguien puede encontrar confusos. $l final del diagrama hay una regin nombrada ,!ompleted 3nstructions, o ,instrucciones completadas,. $hora, las instrucciones completadas se van al limbo una vez que se terminan de ejecutar= despus de decirle al procesador como modificar la corriente de datos, son simplemente borradas del procesador. *4ota que las instrucciones que han sido borradas del procesador a'n permanecen en el rea de almacenamiento de cdigo y estn disponibles para su uso repetido.+ Entonces la cajita ,!ompleted 3nstructions, o ,instrucciones completadas, al final de la figura "3"E23434K.( no representa una parte real del computador, razn por la cual he puesto una lnea punteada a su alrededor. Esta rea es slo un lugar para que mantengamos registrode cuntas instrucciones ha completado el procesador en cierto intervalo de tiempo, o la tasa de ejecucin de instrucciones del procesador *o tasa de ejecucin, para abreviar+, de manera que cuando comparemos diferentes tipos de procesadores tendremos un lugar al cual podremos mirar rpidamente y obtener una impresin instantnea de cul procesador se desempe)a mejor. Eientras ms instrucciones complete un procesador en una cantidad de tiempo dada, mejor es su desempe)o en los programas, lo cuales son secuencias ordenadas de instrucciones. $s que piensa en la cajita de ,instrucciones completadas, como una especie de marcador para registrar la tasa de ejecucin de cada procesador, y chequea la cajita en cada uno de los siguientes diagramas para ver cunto le toma al procesador poblar esta cajita con instrucciones ejecutadas.8iguiendo con el punto anterior, te puede intrigar por qu la instruccin azul completada en el cuarto nanosegundo no aparece en la cajita ,instrucciones completadas, antes del quinto nanosegundo. 2a razn es simple, y emana de la naturaleza del diagrama6 en tanto una instruccin gasta un nanosegundo completo en cada etapa de ejecucin, la instruccin azul entra en la fase de escritura al principio del cuarto nanosegundo y termina dicha etapa al final del cuarto nanosegundo. Esto significa que recin en el quinto nanosegundo tenemos completa la instruccin azul. $s, al comienzo del quinto nanosegundo *que coincide con el fin del cuarto+ el procesador ha completado una instruccin.Un ejemplo con pipelining.%acer ,pipelining, a un procesador significa descomponer su proceso de ejecucin de instrucciones : lo que hemos estado llamando el ,ciclo de vida, de la instruccin; en una serie de etapas discretas de segmentacin, que pueden ser completadas en secuencia por hardDare especializado. /ecuerda la manera en que dividimos el proceso de ensamblaje delvehculo en cinco etapas discretas, con un equipo dedicado asignado al cumplimiento de cada etapa, y tendrs el panorama claro.En tanto el ciclo de vida de una instruccin consiste en cuatro fases completamente distintas, podemos empezar por descomponer el proceso de ejecucin de instrucciones de nuestro procesador de ciclo simple en una secuencia de cuatro etapas discretas de segmentacin :un pipeline de cuatro etapas;, donde cada etapa corresponde a una fase en el ciclo de vida estndar de la instruccin6 Etapa 16 >raer la instruccin desde el almacn de cdigo. Etapa -6 5ecodificar la instruccin. Etapa 96 Ejecutar la instruccin. Etapa (6 Escribir los resultados de la instruccin en el archivo de registro.?bserva que nos referimos al n'mero de etapas del pipeline como profundidad del pipeline.Entonces, nuestro pipeline de ( etapas tiene una profundidad de pipeline igual a (."or conveniencia, digamos que cada una de las cuatro etapas del pipeline anterior toma eactamente un nanosegundo para terminar su trabajo con una instruccin, tal como cada equipo en nuestra lnea de ensamblaje demoraba una hora en terminar su porcin de trabajoen el vehculo. Entonces nuestro proceso de ( nanosegundos, en nuestro procesador de ciclo simple, se divide ahora en ( etapas de pipeline discretas y secuenciales de un nanosegundo de longitud cada una. $hora observemos otro diagrama para ver cmo un !"# con pipeline ejecutara las cuatro instrucciones descritas en la figura "3"E23434K.(.$l comienzo del primer nanosegundo, la instruccin azul entra en la etapa de fetch *traer+. !omienza el segundo nanosegundo y la instruccin azul se mueve a la etapa de decodificacin mientras la siguiente instruccin, la roja, se abre camino desde el almacn de cdigo al procesador *esto es, entra a la etapa de fetch+. $l comienzo del tercer nanosegundo, la instruccin azul avanza a la etapa de ejecucin, la instruccin roja a la etapa de decodificacin, y la instruccin verde entra a la etapa de fetch. En el cuarto, la instruccin azul avanza a la etapa de escritura, la roja a la de ejecucin, la verde a la decodificacin, y la violeta a la de fetch. !uando se ha completado el cuarto nanosegundo ycomienza el quinto, la instruccin azul ha pasado a travs del pipeline y ha terminado su ejecucin. $s podemos decir que al final de cuatro nanosegundos *M a cuatro ciclos de reloj+ el procesador con pipeline ha completado una instruccin.$l comienzo del quinto nanosegundo, el pipeline est completo y el procesador puede empezar a completar instrucciones al ritmo de una instruccin por nanosegundo. Esta tasa de ejecucin de 1 instruccinIns es un incremento de ( sobre la tasa del procesador de ciclo simple, que era ..-A instruccionesIns *o ( instrucciones cada 1L nanosegundos+Encogiendo el reloj."uedes ver en el diagrama anterior que el rol del reloj del !"# cambia levemente en un procesador con pipeline, versus el procesador de ciclo simple en la figura "3"E23434K.(. !omo ahora todas las etapas del pipeline deben trabajar simultneamente y estar listas al comienzo de cada nanosegundo para para pasar los resultados de su trabajo a la siguiente etapa, el reloj es necesario para coordinar la actividad del pipeline completo. 2a forma en que eso se hace es simple6 reducir el tiempo del ciclo de reloj para ajustarse al tiempo que le toma a cada etapa el completar su trabajo, de manera que al comienzo de cada ciclo de reloj las distintas etapas entregan la instruccin en la que estaban trabajando a la siguiente etapa. !omo cada pipeline en nuestro procesasdor de ejemplo se toma un nanosegundo en completar su trabajo, podemos setear el ciclo de reloj en un nanosegundo.Este nuevo mtodo para ajustar el clocB del procesador significa que una instruccin nueva no necesariamente se completar al final de cada ciclo, como en el caso del procesador de ciclo simple. En vez de eso, solo al final de aquellos ciclos donde se trabaja en la etapa de escritura, se puede hablar de instrucciones completadas. 2os ciclos que tengan la etapa de escritura en blanco no a)adirn nuevas instrucciones a la cajita de ,instrucciones completadas,, y todo ciclo con una etapa de escritura activa a)adir una nueva instruccin ala caja. "or supuesto, esto significa que al comenzar a trabajar en un programa habr algunos ciclos de reloj :tres para ser eactos; en los cuales no se registrarn instrucciones completadas. "ero una vez que comience el cuarto ciclo, la primera instruccin entrar en laetapa de escritura y el pipeline podr comenzar a ejecutar nuevas instrucciones en cada ciclo, las cuales tendrn un ritmo de ejecucin de 1 instruccinIns, pues cada ciclo tiene un nanosegundo de longitud.Encogiendo el tiempo de ejecucin de programa.?bserva que el pipelining no cambia el tiempo total de ejecucin para cada instruccin individual. !ada instruccin se toma a'n (ns para abrirse camino en el procesador= esos (nspueden ser divididos en ( ciclos e 1ns cada uno o en 1 solo gran ciclo, pero son los mismos (ns. $s, el pipelining no acelera la velocidad de ejecucin de instrucciones, pero acelera el tiempo de ejecucin de programas *esto es, el n'mero de nanosegundos que toma un programa completo en ejecutarse+ incrementando el n'mero de instrucciones terminadas por unidad de tiempo. >al como el pipelining en nuestra cadena de ensamblaje de !hD5elorians nos permite completar los pedidos del Ejrcito en un menor intervalo de tiempo *a'n cuando seguimos demorando las mismas A horas en ensamblar un vehculo+, elpipelining le permite a un procesador ejecutar programas en un tiempo menor a'n cuando cada instruccin individual sigue consumiendo el mismo tiempo viajando a travs del !"#.El pipelining hace un uso ms eficiente de los recursos disponibles del !"# poniendo todassus unidades a trabajar simultneamente, permitindole de esta forma realizar ms trabajo total por cada nanosegundo.