Para mejorar el rendimiento de una CPU tenemos dos opciones: 1) Mejorar el hardware introduciendo circuitos más rápidos. 2) Organice el hardware de manera que se pueda realizar más de una operación al mismo tiempo. Dado que existe un límite en la velocidad del hardware y el costo de los circuitos más rápidos es bastante alto, tenemos que adoptar la segunda opción.
La canalización es un proceso de disposición de los elementos de hardware de la CPU de modo que se incremente su rendimiento general. La ejecución simultánea de más de una instrucción tiene lugar en un procesador segmentado. Veamos un ejemplo de la vida real que funciona con el concepto de operación canalizada. Considere una planta de envasado de botellas de agua. Sean 3 etapas por las que debe pasar una botella, Inserción de la botella ( I ), Llenado de agua en la botella ( F ) y Sellado de la botella ( S )). Consideremos estas etapas como etapa 1, etapa 2 y etapa 3 respectivamente. Deje que cada etapa tome 1 minuto para completar su operación. Ahora, en una operación sin tubería, primero se inserta una botella en la planta, después de 1 minuto se pasa a la etapa 2 donde se llena de agua. Ahora, en la etapa 1 no pasa nada. De manera similar, cuando la botella pasa a la etapa 3, tanto la etapa 1 como la etapa 2 están inactivas. Pero en la operación por tuberías, cuando la botella está en la etapa 2, se puede cargar otra botella en la etapa 1. De manera similar, cuando la botella está en la etapa 3, puede haber una botella en la etapa 1 y en la etapa 2. Entonces, después de cada minuto , obtenemos una botella nueva al final de la etapa 3. Por lo tanto, el tiempo promedio que se tarda en fabricar 1 botella es:
Sin tubería = 9/3 minutos = 3m
I F S | | | | | | | | | I F S | | | | | | | | | I F S (9 minutes)
Con canalización = 5/3 minutos = 1,67m
I F S | | | I F S | | | I F S (5 minutes)
Por lo tanto, la operación canalizada aumenta la eficiencia de un sistema.
Diseño de una tubería básica.
- En un procesador canalizado, una canalización tiene dos extremos, el extremo de entrada y el extremo de salida. Entre estos extremos, hay múltiples etapas/segmentos de modo que la salida de una etapa se conecta a la entrada de la siguiente etapa y cada etapa realiza una operación específica.
- Los registros de interfaz se utilizan para mantener la salida intermedia entre dos etapas. Estos registros de interfaz también se denominan latch o buffer.
- Todas las etapas de la canalización, junto con los registros de la interfaz, están controladas por un reloj común.
Ejecución en un procesador segmentado La secuencia de ejecución de instrucciones en un procesador segmentado se puede visualizar utilizando un diagrama de espacio-tiempo. Por ejemplo, considere un procesador que tenga 4 etapas y deje que haya 2 instrucciones para ejecutar. Podemos visualizar la secuencia de ejecución a través de los siguientes diagramas de espacio-tiempo:
Ejecución no superpuesta:
Etapa / Ciclo | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
S1 | yo 1 | yo 2 | ||||||
S2 | yo 1 | yo 2 | ||||||
S3 | yo 1 | yo 2 | ||||||
S4 | yo 1 | yo 2 |
Tiempo total = 8 Ciclo
Ejecución superpuesta:
Etapa / Ciclo | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
S1 | yo 1 | yo 2 | |||
S2 | yo 1 | yo 2 | |||
S3 | yo 1 | yo 2 | |||
S4 | yo 1 | yo 2 |
Tiempo total = 5 etapas de canalización de ciclos El procesador RISC tiene una canalización de instrucciones de 5 etapas para ejecutar todas las instrucciones del conjunto de instrucciones RISC. Las siguientes son las 5 etapas del pipeline RISC con sus respectivas operaciones:
- Etapa 1 (búsqueda de instrucciones) En esta etapa, la CPU lee las instrucciones de la dirección en la memoria cuyo valor está presente en el contador del programa.
- Etapa 2 (Decodificación de instrucción) En esta etapa, se decodifica la instrucción y se accede al archivo de registro para obtener los valores de los registros utilizados en la instrucción.
- Etapa 3 (Ejecución de instrucción) En esta etapa, se realizan las operaciones de ALU.
- Etapa 4 (Acceso a la memoria) En esta etapa, los operandos de la memoria se leen y escriben desde/hacia la memoria que está presente en la instrucción.
- Etapa 5 (Reescritura) En esta etapa, el valor calculado/obtenido se vuelve a escribir en el registro presente en las instrucciones.
Rendimiento de un procesador canalizado Considere una canalización de segmento ‘k’ con tiempo de ciclo de reloj como ‘Tp’. Deje que haya ‘n’ tareas para completar en el procesador segmentado. Ahora, la primera instrucción tomará ‘k’ ciclos para salir de la canalización, pero las otras instrucciones ‘n – 1’ tomarán solo ‘1’ ciclo cada una, es decir, un total de ‘n – 1’ ciclos. Por lo tanto, el tiempo necesario para ejecutar instrucciones ‘n’ en un procesador canalizado:
ETpipeline = k + n – 1 cycles = (k + n – 1) Tp
En el mismo caso, para un procesador no segmentado, el tiempo de ejecución de las instrucciones ‘n’ será:
ETnon-pipeline = n * k * Tp
Entonces, la aceleración (S) del procesador canalizado sobre el procesador no canalizado, cuando se ejecutan ‘n’ tareas en el mismo procesador es:
S = Performance of Non-pipelined processor / Performance of pipelined processor
Como el rendimiento de un procesador es inversamente proporcional al tiempo de ejecución, tenemos,
S = ETnon-pipeline / ETpipeline => S = [n * k * Tp] / [(k + n – 1) * Tp] S = [n * k] / [k + n – 1]
Cuando el número de tareas ‘n’ es significativamente mayor que k, es decir, n >> k
S = n * k / n S = k
donde ‘k’ son el número de etapas en la tubería. Además, Eficiencia = Aceleración dada / Aceleración máxima = S / S max Sabemos que Smax = k Por lo tanto, Eficiencia = S / k Rendimiento = Número de instrucciones / Tiempo total para completar las instrucciones Por lo tanto, Rendimiento = n / (k + n – 1) * Tp Nota: El valor de ciclos por instrucción (CPI) de un procesador canalizado ideal es 1. Consulte el Conjunto 2 para Dependencias y riesgo de datos y el Conjunto 3 para Tipos de canalización y estancamiento.
Este artículo ha sido aportado por Saurabh Sharma . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA