Onde é o número de instruções para um dado tipo de instrução, é o ciclo de clock para um dado tipo de instrução, é o contador total de instrução. O somatório soma todos os tipos de instruções para um dado processo de benchmark.
Explicação
Vamos assumir uma pipeline RISC clássica, com as 5 etapas seguintes:
Instruction fetch cycle (IF)
Instruction decode/Register fetch cycle (ID)
Execution/Effective address cycle (EX)
Acesso à memória (MEM)
Write-back cycle (WB)
Cada etapa requer um ciclo de clock e uma instrução passa pelas fases dos estágios seqüêncialmente. Sem pipelining, uma nova instrução é buscada na etapa 1 apenas após a instrução anterior terminar na etapa 5. Portanto, sem pipelining o número de ciclos usados para executar uma instrução é 5. Esta é a definição de CPI.
Com pipelining nós podemos melhorar o CPI explorando paralelismo ao nível de instrução. Por exemplo, e se uma instrução for buscada em cada ciclo? Nós podemos teoricamente ter 5 instruções nas 5 etapas de pipeline de uma vez (uma instrução por etapa). Neste caso, uma instrução diferente iria completar a etapa 5 em cada ciclo de clock, e portanto na média temos um ciclo de clock por instrução (CPI = 1).
Com um processador single-issue, o melhor CPI possível é 1. Porém com processadores multiple-issue, nós podemos conseguir valores de CPI ainda melhores. Por exemplo, um processador que realiza duas instruções por ciclo de clock (veja Superscalar) pode atingir um CPI de 0.5 quando duas instruções estão completando a cada ciclo de clock.
Exemplos
Exemplo 1
Para o multi-ciclo MIPS, existem 5 tipos de instruções: