Ciclos por instrucción

El número promedio de ciclos de reloj por instrucción

En arquitectura informática , los ciclos por instrucción (también conocidos como ciclos de reloj por instrucción , relojes por instrucción o CPI ) son un aspecto del rendimiento de un procesador : la cantidad promedio de ciclos de reloj por instrucción para un programa o fragmento de programa. [1] Es el inverso multiplicativo de instrucciones por ciclo .

Definición

El promedio de ciclos por instrucción en un proceso dado ( CPI ) se define mediante el siguiente promedio ponderado :

do PAG I := Σ i ( I do i ) ( do do i ) I do = Σ i ( I do i do do i ) Σ i ( I do i ) {\displaystyle \mathrm {IPC} :={\frac {\Sigma _{i}(\mathrm {IC} _{i})(\mathrm {CC} _{i})}{\mathrm {IC} }}={\frac {\Sigma _{i}(\mathrm {IC} _{i}\cdot \mathrm {CC} _{i})}{\Sigma _{i}(\mathrm {IC} _{i})}}}

Donde es la cantidad de instrucciones para un tipo de instrucción determinado , son los ciclos de reloj para ese tipo de instrucción y es el recuento total de instrucciones. La suma suma todos los tipos de instrucciones para un proceso de evaluación comparativa determinado. I do i {\displaystyle \mathrm {IC} _ {i}} i {\estilo de visualización i} do do i {\displaystyle \mathrm {CC} _ {i}} I do = Σ i ( I do i ) {\displaystyle \mathrm {IC} =\Sigma _{i}(\mathrm {IC} _{i})}

Explicación

Supongamos una tubería RISC clásica , con las siguientes cinco etapas:

  1. Ciclo de búsqueda de instrucciones (IF).
  2. Ciclo de decodificación de instrucciones/obtención de registro (ID).
  3. Ciclo de ejecución/dirección efectiva (EX).
  4. Acceso a la memoria (MEM).
  5. Ciclo de escritura diferida (WB).

Cada etapa requiere un ciclo de reloj y una instrucción pasa a través de las etapas secuencialmente. Sin pipeline , en un procesador multiciclo , una nueva instrucción se obtiene en la etapa 1 solo después de que la instrucción anterior finaliza en la etapa 5, por lo tanto, el número de ciclos de reloj que se necesitan para ejecutar una instrucción es cinco (CPI = 5 > 1). En este caso, se dice que el procesador es subescalar . Con pipeline, se obtiene una nueva instrucción en cada ciclo de reloj explotando el paralelismo a nivel de instrucción , por lo tanto, dado que teóricamente uno podría tener cinco instrucciones en las cinco etapas de pipeline a la vez (una instrucción por etapa), una instrucción diferente completaría la etapa 5 en cada ciclo de reloj y, en promedio, el número de ciclos de reloj que se necesitan para ejecutar una instrucción es 1 (CPI = 1). En este caso, se dice que el procesador es escalar .

Con un procesador con una sola unidad de ejecución , el mejor CPI alcanzable es 1. Sin embargo, con un procesador con varias unidades de ejecución, se pueden lograr valores de CPI incluso mejores (CPI < 1). En este caso, se dice que el procesador es superescalar . Para obtener mejores valores de CPI sin segmentación, la cantidad de unidades de ejecución debe ser mayor que la cantidad de etapas. Por ejemplo, con seis unidades de ejecución, se obtienen seis nuevas instrucciones en la etapa 1 solo después de que las seis instrucciones anteriores finalicen en la etapa 5, por lo tanto, en promedio, la cantidad de ciclos de reloj que se necesitan para ejecutar una instrucción es 5/6 (CPI = 5/6 < 1). Para obtener mejores valores de CPI con segmentación, debe haber al menos dos unidades de ejecución. Por ejemplo, con dos unidades de ejecución, se obtienen dos nuevas instrucciones en cada ciclo de reloj aprovechando el paralelismo a nivel de instrucción, por lo tanto, dos instrucciones diferentes completarían la etapa 5 en cada ciclo de reloj y, en promedio, el número de ciclos de reloj que se necesitan para ejecutar una instrucción es 1/2 (CPI = 1/2 < 1).

Ejemplos

Ejemplo 1

Para los MIPS multiciclo , hay cinco tipos de instrucciones:

  • Carga (5 ciclos)
  • Tienda (4 ciclos)
  • Tipo R (4 ciclos)
  • Rama (3 ciclos)
  • Salto (3 ciclos)

Si un programa tiene:

  • Instrucciones de carga del 50%
  • Instrucciones de la tienda al 25%
  • 15% Instrucciones de tipo R
  • Instrucciones de la rama 8%
  • Instrucciones de salto del 2%

entonces el IPC es:

IPC = 5 × 50 + 4 × 25 + 4 × 15 + 3 × 8 + 3 × 2 100 = 4.4 {\displaystyle {\text{IPC}}={\frac {5\times 50+4\times 25+4\times 15+3\times 8+3\times 2}{100}}=4,4}

Ejemplo 2

[2] Se utilizó un procesador de 400 MHz para ejecutar un programa de referencia con la siguiente combinación de instrucciones y recuento de ciclos de reloj :

Instrucción TIPORecuento de instruccionesRecuento de ciclos de reloj
Aritmética de números enteros450001
Transferencia de datos320002
Punto flotante150002
Transferencia de control80002

Determine el CPI efectivo, la tasa de MIPS (millones de instrucciones por segundo) y el tiempo de ejecución para este programa.

IPC = 45000 × 1 + 32000 × 2 + 15000 × 2 + 8000 × 2 100000 = 155000 100000 = 1,55 {\displaystyle {\text{IPC}}={\frac {45000\times 1+32000\times 2+15000\times 2+8000\times 2}{100000}}={\frac {155000}{100000}}=1,55}

400 megahercio = 400 , 000 , 000 Hz {\displaystyle 400\,{\text{MHz}}=400.000.000\,{\text{Hz}}}

desde: y MIPS 1 / IPC {\displaystyle {\text{MIPS}}\propto 1/{\text{IPC}}} MIPS frecuencia de reloj {\displaystyle {\text{MIPS}}\propto {\text{frecuencia de reloj}}}

Rendimiento eficaz del procesador = MIPS = frecuencia de reloj IPC × 1 1 millón {\displaystyle {\text{Rendimiento efectivo del procesador}}={\text{MIPS}}={\frac {\text{frecuencia de reloj}}{\text{CPI}}}\times {\frac {1}{\text{1 millón}}}} = 400 , 000 , 000 1,55 × 1000000 = 400 1,55 = 258 MIPS {\displaystyle ={\frac {400.000.000}{1,55\times 1000000}}={\frac {400}{1,55}}=258\,{\text{MIPS}}}

Por lo tanto:

Tiempo de ejecución ( yo ) = IPC × Recuento de instrucciones × hora del reloj = IPC × Recuento de instrucciones frecuencia {\displaystyle {\text{Execution time}}(T)={\text{CPI}}\times {\text{Instruction count}}\times {\text{clock time}}={\frac {{\text{CPI}}\times {\text{Instruction Count}}}{\text{frequency}}}} = 1.55 × 100000 400 × 1000000 = 1.55 4000 = 0.0003875 sec = 0.3875 ms {\displaystyle ={\frac {1.55\times 100000}{400\times 1000000}}={\frac {1.55}{4000}}=0.0003875\,{\text{sec}}=0.3875\,{\text{ms}}}

Véase también

Referencias

  1. ^ Patterson, David A.; Hennessy, John L. (1994). Organización y diseño de computadoras: la interfaz hardware/software . Morgan Kaufmann. ISBN 9781558602816.
  2. ^ Arquitectura informática avanzada por Kai Hwang, Capítulo 1, Problema de ejercicio 1.1
Retrieved from "https://en.wikipedia.org/w/index.php?title=Cycles_per_instruction&oldid=1248996206"