Está en la página 1de 36

Paralelismo a nivel de

instrucciones

Contenidos:
• Introducción
• Definición de tubería.
• Estrategia de segmentación.
– Tubería de dos etapas.
– Tubería de varias etapas.
• Prestaciones de un cauce segmentado.
• Riesgos de las tuberías.
Introducción

• Circuitos más rápidos.


• Uso de múltiples registros en
lugar de un único acumulador.
• Uso de una memoria caché.

CONCURRENCIA
• A nivel de instrucción. La segmentación de
instrucciones, conocida también como
segmentación de cauce o tubería (pipeline).
• A nivel del procesador. El paralelismo.
Introducción

La segmentación de instrucciones es
similar al uso de una cadena de montaje en
una fabrica de manufacturación.
Introducción
Procesos sin encadenamiento:
Acciones:
• Poner una caja vacía.
• Colocar una torta en la
caja.
• Cerrar y precintar la
caja.
• Poner una etiqueta en la
caja.
• Llevar la caja a un
contenedor.
Introducción
Ejemplo de una cadena de montaje o tubería.

Disponiendo el proceso de producción como una cadena de


montaje, se puede trabajar sobre los productos en varias
etapas simultáneamente.
Definición de tubería (pipeline)

• Es una técnica implementada en la CPU que


permite el solapamiento de instrucciones
durante su ejecución (paralelismo a nivel de
instrucción).
• Esta técnica no es visible al programador.
Estrategia de segmentación
Para aplicar este concepto a la ejecución de instrucciones
es necesario tener en cuenta que, de hecho, una
instrucción consta de varias etapas (10 en este caso).
Estrategia de segmentación

• Como una aproximación sencilla, consideremos la


subdivisión del procesamiento de una instrucción en dos
etapas: captación o búsqueda de la instrucción y
ejecución de la instrucción.
• Hay períodos en la ejecución de una instrucción en los
que no se accede a la memoria principal.
• Este tiempo podría utilizarse en captar la siguiente
instrucción en paralelo con la ejecución de la actual.
Tubería de dos etapas

Etapas de ejecución
1. F: Búsqueda de la
instrucción.
2. E: Ejecución (en la ALU)
Tubería de dos etapas
Algunas consideraciones:

1. El tiempo de ejecución es generalmente más largo que


el tiempo de captación.
Implica la lectura y almacenamiento de operandos y la
realización de alguna operación. La etapa de captación
debe esperar algún tiempo hasta que pueda vaciar su
buffer.
2. Una instrucción de salto condicional hace que la
dirección de la próxima instrucción sea desconocida.
La etapa de captación debe esperar hasta que reciba la
dirección de la siguiente instrucción desde la etapa de
ejecución.
Tubería de dos etapas
Algunas consideraciones:
• La pérdida de tiempo por la segunda razón puede
reducirse haciendo una estimación.
Una regla simple es: cuando una instrucción de salto
condicional pasa de la etapa de captación a la de
ejecución, la etapa de captación capta la instrucción de
memoria que sigue a la instrucción de salto; entonces si
el salto no se produce, no se pierde tiempo; si el salto se
produce, debe desecharse la instrucción captada y
captarse una nueva instrucción.

Aunque estos factores reduzcan la efectividad del potencial


del cauce de dos etapas, se produce alguna aceleración en
la ejecución de las instrucciones. Para conseguir mayor
aceleración el cauce debe tener más etapas.
Tubería de varias etapas
Descomposición del procesamiento de una instrucción:
1. FI: Búsqueda de la instrucción. Leer la siguiente
instrucción en un buffer.
2. DI: Decodificar instrucción. Determina el código de
operación y los campos de operando.
3. CO: Calcular la dirección efectiva de cada operando
fuente. Esto puede involucrar algún tipo de
direccionamiento.
4. FO: Captar operandos. Captar cada operando de
memoria. No se captan los operandos en registros.
5. EI: Ejecutar la instrucción. Realiza la operación indicada
6. WO: Escribir operando. Almacena el resultado en
memoria.
Con esta descomposición las etapas están más cerca de durar el
mismo tiempo. Vamos a asumir que todas demoran el mismo tiempo.
Tubería de varias etapas

Con estas suposiciones la


tubería puede reducir el tiempo
de ejecución de 54 a 14
unidades de tiempo

Diagrama de tiempo del funcionamiento de una tubería de 6 etapas.


Tubería de varias etapas
Se asume que:
• Todas las instrucciones pasan por todas las etapas. Esto
no es siempre así, por ejemplo la instrucción LOAD no
necesita pasar por la fase WO.
• Las fases pueden ejecutarse en paralelo, es decir, que no
existen conflictos de memoria.
– Por ejemplo las fases FI, FO y WO implican acceso a la
memoria. El diagrama muestra que estos accesos se
realizan simultáneamente. La mayoría de los sistemas
no permiten esto. No obstante el valor deseado puede
estar en caché o las etapas FO y WO pueden ser nulas.
Por tanto, la mayor parte de las veces, los conflictos de
memoria no deberán aumentar el tiempo de ejecución
de la tubería.
Tubería de varias etapas
Otros factores a tener en cuenta:

• Si las fases no son de igual duración, por tanto es


necesario introducir esperas entre las fases.
• Otra dificultad son los saltos condicionales, que invalidan
varias instrucciones ya buscadas y que están en la tubería.
• Un evento impredecible es la llegada de una interrupción.
Efecto de un salto condicional en una tubería

Penalidad en la que se
incurre por no haber
anticipado el salto
condicional
Lógica necesaria para considerar
los saltos condicionales y las
interrupciones en la segmentación
del cauce.
Tubería de varias etapas
Otros problemas que se presentan:

• La etapa CO puede depender del contenido de un


registro que podría verse alterado por una instrucción
previa que aún esté en el cauce.
• Podrían ocurrir otros conflictos con registros y con
memoria.
• El sistema tiene que incluir lógica para tener en cuenta
este tipo de conflictos.
Factores a tener en cuenta
De la discusión anterior, pudiera parecer que mientras más
etapas tenga la tubería, mayor será la tasa de ejecución.
Sin embargo algunos autores señalan factores a tener en
cuenta:

1. Cada etapa de la tubería involucra cierta sobrecarga


en mover un dato de un buffer a otro y en varias
funciones de preparación y entrega. Esta sobrecarga
puede prolongar apreciablemente el tiempo total de
ejecución de una instrucción. Esto es significativo en el
caso de instrucciones secuenciales que son
dependientes entre si.
Factores a tener en cuenta
2. La lógica de control requerida para manipular la
dependencia de datos y de registros se incrementa
significativamente con el número de etapas. Esto
puede provocar que la lógica de control entre cada
etapa sea más compleja que las etapas a controlar.
3. La demora de tiempo entre etapas debido al uso de
buffers, el cual se adiciona al tiempo de ejecución de
la instrucción.

La segmentación del cauce es una técnica poderosa


para mejorar el rendimiento de la CPU, pero requiere
de un diseño cuidadoso para optimizar el resultado con
una razonable complejidad.
Prestaciones de un cauce segmentado
Algunas medidas sencillas de las prestaciones de un cauce
segmentado y del incremento de velocidad relativa.
Prestaciones de un cauce segmentado
Suponga que se presentan n instrucciones sin saltos. El tiempo
total Tk necesario para ejecutar las n instrucciones es:

Tk = [k + (n-1)]

Se requiere un total de k ciclos para completar la ejecución de la


primera instrucción, y las n-1 instrucciones restantes requieren
n-1 ciclos. Esta ecuación se puede verificar con el diagrama de
tiempos de la tubería de seis etapas. La novena instrucción se
completa en el ciclo de tiempo 14.

14 = [6 + (9-1)]
Prestaciones de un cauce segmentado
Prestaciones de un cauce segmentado

La figura representa el factor de aceleración en función del número


de instrucciones que se ejecutan sin saltos. Como cabría esperar,
en el limite (n→∞), la velocidad se incrementa en un factor k.
Prestaciones de un cauce segmentado

La figura muestra el factor de aceleración en función del número


de etapas en el cause de instrucciones. En este caso, el factor de
aceleración se aproxima al número de instrucciones que pueden
introducirse en el cause sin saltos. De este modo cuanto mayor es
el número de etapas del cause, mayor es su potencial para
conseguir aceleración
Prestaciones de un cauce segmentado
Otra manera de obtener el factor de acelaracion:
Prestaciones de un cauce segmentado
Example:

• Consider an unpipelined processor.


• Assume that it has a 1 ns clock cycle and that it uses
4 cycles for ALU operations and branches and 5
cycles for memory operations.
• Assume that the relative frequencies of these
operations are 40%, 20%, and 40%, respectively.
• Suppose that due to clock skew and setup, pipelining
the processor adds 0.2 ns of overhead to the clock.
• Ignoring any latency impact, how much speedup in
the instruction execution rate will we gain from a
pipeline?
Prestaciones de un cauce segmentado
Answer:

The average instruction execution time on the unpipelined


processor is:
Prestaciones de un cauce segmentado
Answer:

In the pipelined implementation, the clock must run at the


speed of the slowest stage plus overhead, which will be 1 +
0.2 or 1.2 ns; this is the average instruction execution time.
Thus, the speedup from pipelining is:

The 0.2 ns overhead essentially establishes a limit on the


effectiveness of pipelining.
Otras alternativas para aumentar la
velocidad de ejecución
• Superescalar: Múltiples tuberías que funcionan de
manera paralela.
• Multithreading: La instrucción es dividida en pequeñas
secuencias conocidas como hilos, los cuales pueden
ejecutarse en paralelo. Existe una amplia variedad de
diseños experimentales y comerciales.
• Simultaneous multithreading (SMT): Se replican los
bancos de registros de forma que multiples hilos pueden
compartir el uso de los recursos de las tuberias.
Diversas organizaciones del chip
Riesgos de una tubería
• Estructurales.
– Conflictos en el hardware que no soportan todas las
combinaciones de instrucciones en el solapamiento
de instrucciones.
• Datos.
– Una instrucción depende del resultado de un
instrucción anterior.
• Control.
– Surge debido a saltos y otras instrucciones que
cambian el contador de programa (PC).

Estos riesgos pueden conducir a que sea


necesario retener la tubería (to stall the pipeline).
Riesgos estructurales
• Se manifiesta cuando algunos recursos no han
sido suficientemente duplicados para ser
utilizados por todas las instrucciones en la
tubería.
– Ej. Un procesador con un solo registro de escritura en
puerto, que bajo ciertas condiciones la tubería quiere
realizar dos escrituras en el mismo ciclo de reloj.
• Una solución es retener una de las instrucciones
hasta que el recurso esté disponible.
Riesgos de datos
• Ocurre cuando la tubería cambia el orden
de acceso de lectura/escritura para los
operandos, de manera que el orden difiere
con respecto a la ejecución secuencial sin
tubería.
• Se conoce también como Dependencia de
datos.
Riesgos de control
• Causan mas pérdida de rendimiento en
una tubería que los riesgos de datos.
• Son generados por los saltos
condicionales.
Bibliografía

• Computer Architecture and Organization.


William Stallings.
Capítulo 12, epígrafe 12.4.
• Arquitectura de Computadoras (notas de clases)
Capítulo 4.
• Computer Architecture. A Quantitative
Approach. John L. Hennessy and David A.
Patterson.
Apéndice A y Capítulo 2.

También podría gustarte