|
Pajarito Nuevo
Registrado: febrero-2006
Location: LV-426
Posts: 98
|
a ver... traducción tal cual de la primera página de la segunda parte... ojalá se entienda y no haya grandes errores...
Introducción
La parte I de esta serie de artículos cubrió lo básico sobre pipelining y concluyó con una discusión acerca de cómo esto mejora el desempeño de las aplicaciones en general. Específicamente el pipelining aumenta la tasa de obtención de resultados, y esto hace que la ejecución general de un programa se lleve a cabo en una menor cantidad de tiempo. Otra forma de expresarlo es decir que el pipelining permite que el procesador complete más operaciones en un período de tiempo determinado, con el resultado que un lote determinado de instrucciones (un programa, por ejemplo) sea procesado más rápidamente.
El presente artículo cuantifica, de manera más precisa, la aceleración que se logra mediante el pipelining, y detalla algunos de los incovenientes de los pipelines muy profundos (super pipeline), como aquellos usados en los Pentium IV (Intel).
Nota para el lector: los dos artículos de esta serie se han escrito para ser leídos consecutivamente, así que si de inmediato empiezas a leer la siguiente sección y sientes que no entiendes nada, tal vez ayude retroceder un poco y revisar el breve -relativamente, 4 páginas- primer artículo. De hecho, si lees lo último de la I parte, deberías estar listo para esta segunda parte.
La aceleración a partir de pipelining
En general, la aceleración en la tasa de obtención de resultados en comparación con la implementación de un ciclo único que se gana a partir del pipeline, idealmente, es igual número de etapas en el pipeline. Un pipeline de cuatro etapas entrega una aceleración de cuatro veces en la tasa de obtención de resultados, en comparación con un ciclo único, un pipeline de cinco etapas se acelera cinco veces más , un pipeline de 12 etapas da una celeración 12 veces mayor, y así. Esta aceleración es posible porque mientras más etapas de pipeline hay en un procesador, el procesador puede trabajar en más instrucciones simultáneamente y obtener más resultados en un período de tiempo dado. De manera tal que mientras más finamente se segmenten esas cuatro fases del ciclo de vida de una instrucción, más hardware del usado para implementar esas fases se puede poner a trabajar en cualquier momento dado.
Para volver a la analogía de la línea de ensamblaje, digamos que cada equipo está compuesto de seis trabajadores, y que cada tarea que cada equipo realiza en una hora podría subdividirse en dos tareas más cortas, de 30 minutos cada una. Así que podemos doblar la producción de nuestra fábrica al dividir cada equipo en dos más pequeños y más especializados, de tres trabajadores cada uno, y después hacer que cada uno de estos equipos lleve a cabo una de las tareas más cortas que en un SUV por 30 minutos.
Etapa 1: Ensamblar el chassis
Equipo 1a: Acoplar las partes del chasis y soldar por puntos las junturas
Equipo1b: Soldar por completo todas las partes del chasis
Etapa 2: Dejar el motor en el chasis
Equipo 2a: Ubicar y dejar en su lugar al motor en el chasis
Equipo 2b: Conectar el motor a las partes móviles del auto
Etapa 3: Colocar puertas, capote y revestimientos en el chasis
Equipo 3a: Colocar las puertas y el capote en el chasis
Equipo 3b: Colocar los otros revestimientos en el chasis
Etapa 4: Ensamblar las ruedas
Equipo 4a: Ensamblar las dos ruedas delanteras
Equipo 4b: Ensamblar las dos ruedas traseras
Etapa 5: Pintar el SUV
Equipo 5a: Pintar los lados del SUV
Equipo 5b: Pintar la parte de arriba del SUV
Luego de las modificaciones ya descritas, los diez grupos más pequeños en nuestra fábrica, en conjunto, ahora podrían tener un total de 10 SUV en construcción durante un período dado de 30 minutos. Más aun, nuestra fábrica ahora podría terminar un nuevo SUV cada 30 minutos, una mejora diez veces mayor sobre la tasa de cumplimiento de nuestra primera fábrica, que era de un SUV cada cinco horas. Así que al usar pipelines en nuestra línea de ensamblaje, hemos puesto a más gente a trabajar simultáneamente, y así se incrementa el número de SUVs en los que se puede trabajar simultáneamente, a la par que se incremente el número de SUVs que se pueden terminar en un período de tiempo determinado.
Profundizar el pipeline de nuestro procesador de cuatro fases funciona con principios similares y tiene efectos parecido en cuanto a tasas de obtención de resultados. Al igual que las cinco etapas en la línea de ensamblaje de los SUVs podría segmentarse cada vez más en una secuencia más larga compuesta de etapas especializadas, podemos tener que este proceso de ejecución descompone la instrucción que lo recorre en una serie de etapas que son mu más que las cuatro fases discretas. Al segmentar el pipeline de cuatro etapas del procesador en una serie más larga compuesta de etapas más cortas y especializadas, el procesador puede tener más hardware especialzado trabajando simultáneamente en más instrucciones y así incrementar el número de instrucciones que el pipeline completa cada nanosegundo.
Primero pasamos de un procesador con un ciclo único a un procesador con pipeline al tomar el período de tiempo de cuatro nanosegundos en los que la instrucción pasaba por el procesador y se segmentaba en cuatro etapas discretas de pipeline, de un nanosegundo de duración cada una. Estas cuatro etapas discretas del pipeline corresponden a las cuatro fases del ciclo de vida de una instrucción. Las etapas de pipeline de un procesador no siempre van a corresponder exactamente con las cuatro fases del ciclo de vida de un procesador. Algunos procesadores tienen un pipeline de cinco etapas, otros lo tienen de seis etapas, y muchos tienen pipelines que van más allá de diez o veinte etapas. En tales casos, el CPU (CPU designer) debe segmentar el ciclo de vida de la instrucción en el número correspondiente de etapas de manera tal que todas las etapas tengan igual duración.
Ahora tomemos el proceso de ejecución y separarémoslo en ocho etapas discretas. Dado que para que funcione el pipelining las ocho etapas deben tener exactamente la misma duración, cada una de estas etapas debe durar 0,5 nanosegundos (4ns/8=0,5ns). Ya que estamos trabajando con un ejemplo idealizado, pensemos que dividir el ciclo de vida del procesador de cuatro fases de pipelines en ocho de igual duración (0,5 ns) es un asunto trivial, y que los resultados se parecen a los que se muestran en las figuras PIPELINING 6.1 y PIPELINING 6.2. (En realidad, esta tarea no es trivial, e involucra una serie de compensaciones. Como una concesión a esa realidad, he decidido usar las ocho etapas de un pipeline real, el pipeline MIPS, en los diagramas de más abajo, en vez de simplemente dividir en dos cada una de las cuatro fases tradicionales)
Dado que el pipeline pide que cada etapa del mismo tome exactamente un ciclo de reloj (clock cycle) para completarse, entonces nuestro ciclo (clock cycle) ahora puede acortarse a 0,5 ns para así ajustarse a la duración de las ocho etapas del pipeline. Echa un vistazo a las figuras PIPELINING 6.1 y PIPELINING 6.2, que se encuentran más abajo, para observar el impacto que este incremento de número en las etapas del pipeline tiene en el número de instrucciones procesadas por unidad de tiempo.
El procesador de ciclo único podía terminar de procesar una intrucción cada cuatro nanosegundos, y daba una tasa de obtención de resultados de 0,25 instrucciones/ns, y el procesador con un pipeline cuatro fases puede terminar de procesar una instrucción cada nanosegundo, y esto da una tasa de resultado de 1 instrucción/ns. El procesador de ocho etapas descrito antes mejora estas dos tasas, al terminar de procesar una instrucción cada 0,5 ns, lo que es una tasa de de obtención de resultados de 2 instruciones/ns. Nótese que dado que cada instrucción todavía toma 4ns en ejecutarse, los primeros cuatro nanosegundos del procesador de cuatro etapas todavían están dedicados a rellenar (filling up) el pipeline. Pero una vez que el pipeline está lleno (full), el procesador puede empezar a terminar de procesar las instrucciones dos veces más rápido que el procesador de cuatro etapas, y ocho veces más rápido que el procesador de una sola etapa.
Este aumento en ocho veces en la tasa de obtención de resultados con respecto a un diseño de un solo ciclo significa que nuestro procesador de ocho fases puede ejecutar programas mucho más rápido que un procesador de un ciclo único o uno de cuatro etapas. Pero, ¿en realidad este aumento de ocho veces en la tasa de obtención de resultados se traduce en un ejecución de programas ocho veces más rápida? No exactamente.
Cuánto texto...!
__________________
El mediador entre el cerebro y las manos ha de ser el corazón!
|