Ciclos por instrução

Fonte: testwiki
Revisão em 00h02min de 6 de fevereiro de 2023 por imported>Dorito voador20 (growthexperiments-addlink-summary-summary:3|0|0)
(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)
Saltar para a navegação Saltar para a pesquisa

Predefinição:Parcial Predefinição:Mais fontes Predefinição:Formatar referências Em arquitetura de computadores, ciclos por instrução (também conhecido como ciclos de clock por instrução, clocks por instrução, ou CPI) é um aspecto da performance de um processador: o número médio de ciclos por clock por instrução para um programa ou fragmento de programa.[1] É o inverso multiplicativo de instruções por ciclo.

Definição

Ciclos Por Instrução é definido por:

CPI=Σi(ICi)(CCi)IC

Onde ICi é o número de instruções para um dado tipo de instrução, CCié o ciclo de clock para um dado tipo de instrução,IC=Σi(ICi)  é 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:

  1. Instruction fetch cycle (IF)
  2. Instruction decode/Register fetch cycle (ID)
  3. Execution/Effective address cycle (EX)
  4. Acesso à memória (MEM)
  5. 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:

  • Load (5 ciclos)
  • Store (4 ciclos)
  • R-type (4 ciclos)
  • Branch (3 ciclos)
  • Jump (3 ciclos)

Se um programa tem:

  • 50% de instruções R-type
  • 15% de instruções load
  • 25% de instruções store
  • 8% de instruções branch
  • 2% de instruções jump

então, o CPI é: 0,5*4 + 0,15*5 + 0,25*4 + 0,08*3 + 0,02*3 = 4,05

Exemplo 2

[2] Um processador de 400-MHz foi usado para executar um programa de benchmark com o seguinte instruction mix e contador de ciclos de clock:

Tipo de instrução Contador de instruções Contador de ciclo de clock
Aritmética de inteiro 45000 1
Transferência de dados 32000 2
Ponto flutuante 15000 2
Transferência de controle 8000 2

Determine o CPI efetivo, taxa MIPS, e tempo de execução para este programa. Total do contador de instruções = 100000

CPI=45000×1+32000×2+15000×2+8000×2100000=155000100000=1.55

400Mhz=400,000,000Hz

Já que: MIPS1/CPI and MIPSclockFrequency

Effective processor performance=MIPS=clock frequencyCPI×11 Million=400,000,0001.55×1000000=4001.55=258MIPS

Portanto:

Execution time(T)=CPI×Instruction count×clock time=CPI×Instruction Countfrequency=1.55×100000400×1000000=1.554000=0.0003875sec=0.3875ms



Ver também

  • MIPS
  • Instructions per cycle (IPC)
  • Instructions per second (IPS)
  • Ciclos por segundo (Hz)
  • Megahertz myth
  • O artigo de benchmark forence uma introdução útil sobre medição de performance de computadores para os leitores interessados no tópico.

Predefinição:Referências

  1. Predefinição:Citar livro
  2. Advanced Computer Architecture by Kai Hwang, Chapter 1, Exercise Problem 1.1