RISC-V

Arquitectura de Computadores

Home

❯

Ejemplos

❯

Ejemplo de CPI ponderado

Ejemplo de CPI ponderado

  • ejercicio_resuelto

El CPI es el promedio de ciclos de reloj por instrucción. Cuando distintas clases de instrucciones tardan distintos números de ciclos, usamos el CPI ponderado del formulario: cada CPI pesa según cuántas instrucciones de esa clase ejecuta realmente el programa.

Enunciado

Un programa que procesa datos de sensores ejecuta 1 000 000 de instrucciones en un procesador de 2 GHz. Al analizar las instrucciones ejecutadas se observa lo siguiente:

  • El 50 % son accesos a memoria; cada uno tarda 2 ciclos.
  • El 30 % son operaciones aritméticas; cada una tarda 1 ciclo.
  • El 20 % son saltos; cada uno tarda 3 ciclos.

Preguntas: ¿cuál es el CPI promedio del programa? ¿Cuánto tiempo de CPU tarda en ejecutarse, según este modelo?

1. Extraer los datos del enunciado

El formulario define:

CPI=#Instrucciones∑i=1N​CPIi​⋅Ii​​

En esta fórmula, CPIi​ es el número de ciclos de una instrucción de la clase i, mientras que Ii​ es la cantidad de instrucciones ejecutadas de esa clase. El denominador es el total de instrucciones ejecutadas. Los porcentajes del enunciado todavía no son cantidades: hay que aplicarlos al millón de instrucciones.

  • Accesos a memoria: I1​=0,50⋅1000000=500000 instrucciones; CPI1​=2 ciclos por instrucción.
  • Operaciones aritméticas: I2​=0,30⋅1000000=300000 instrucciones; CPI2​=1 ciclo por instrucción.
  • Saltos: I3​=0,20⋅1000000=200000 instrucciones; CPI3​=3 ciclos por instrucción.
  • Total: #Instrucciones=1000000. Comprobación: 500000+300000+200000=1000000.

Los 2 GHz no se necesitan para hallar el CPI. Son un dato para calcular después el tiempo de CPU: 2GHz=2⋅109Hz.

2. Calcular los ciclos que aporta cada clase

Cada producto CPIi​⋅Ii​ indica los ciclos consumidos por todas las instrucciones de esa clase:

  • Accesos a memoria: 2⋅500000=1000000 ciclos.
  • Operaciones aritméticas: 1⋅300000=300000 ciclos.
  • Saltos: 3⋅200000=600000 ciclos.

Por tanto, #CiclosReloj=1000000+300000+600000=1900000 ciclos.

3. Sustituir en la fórmula de CPI ponderado

CPI=1000000 instrucciones1900000 ciclos​=1,9

Respuesta: el programa emplea en promedio 1,9 ciclos por instrucción. Esto no significa que exista una instrucción que tarde 1,9 ciclos: las clases tardan 1, 2 o 3 ciclos y el promedio refleja cuántas hay de cada una.

Forma rápida cuando entregan porcentajes

Como cada Ii​ es una fracción del total, el millón de instrucciones se cancela en el cociente. Se puede comprobar directamente: CPI=(0,50⋅2)+(0,30⋅1)+(0,20⋅3)=1,9. No promediamos simplemente (2+1+3)/3: cada clase aparece con distinta frecuencia.

4. Usar el CPI para obtener el tiempo de CPU

Ahora sí utilizamos los 2 GHz del enunciado. La fórmula de tiempo de CPU del formulario es:

TiempoCPU=Frecuencia#Instrucciones⋅CPI​

Sustituimos el total de instrucciones, el CPI obtenido y la frecuencia expresada en hercios:

TiempoCPU=2⋅1091000000⋅1,9​s TiempoCPU=0,00095s=0,95ms

También se puede comprobar con la fórmula del formulario TiempoCPU=#CiclosReloj/Frecuencia: los 1900000 ciclos calculados antes, divididos por 2⋅109 ciclos por segundo, dan los mismos 0,95 ms.


Notas relacionadas

  • 0. Formulario
  • Ejercicios
  • Enunciado
  • 1. Extraer los datos del enunciado
  • 2. Calcular los ciclos que aporta cada clase
  • 3. Sustituir en la fórmula de CPI ponderado
  • 4. Usar el CPI para obtener el tiempo de CPU

Creado con Quartz v4.5.2 © 2026