Content deleted Content added
Ira Leviton (talk | contribs) m Fixed a typo. |
LucasBrown (talk | contribs) Changing short description from "The average number of clock cycles per instruction" to "Aspect of CPU performance" |
||
(34 intermediate revisions by 27 users not shown) | |||
Line 1:
{{Short description|Aspect of CPU performance}}
{{Refimprove|date=December 2009}}
In [[computer architecture]], '''cycles per instruction''' (aka '''clock cycles per instruction''', '''clocks per instruction''', or '''CPI''') is one aspect of a [[central processing unit|processor
== Definition ==
The average of Cycles Per Instruction in a given process ({{math|CPI}}) is defined by the following [[Weighted arithmetic mean|weighted average]]:
: <math>
\mathrm{CPI} := \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)}
</math>
Where <math>
==Explanation==
Let us assume a [[classic RISC pipeline]], with the following
# Instruction fetch cycle (IF).
# Instruction decode/Register fetch cycle (ID).
Line 20 ⟶ 21:
# Write-back cycle (WB).
Each stage requires one clock cycle and an instruction passes through the stages sequentially. Without [[instruction pipelining|pipelining]], in a [[multi-cycle processor]], a new instruction is fetched in stage 1 only after the previous instruction finishes at stage 5, therefore the number of clock cycles it takes to execute an instruction is
With a single-[[Execution unit|execution-unit]] processor, the best CPI attainable is 1. However, with a multiple-execution-unit processor, one may achieve even better CPI values (CPI < 1). In this case, the processor is said to be ''[[superscalar]]''. To get better CPI values without pipelining, the number of execution units must be greater than the number of stages. For example, with
==Examples==
Line 28 ⟶ 29:
===Example 1===
For the multi-cycle [[MIPS architecture|MIPS]], there are
* Load (5 cycles)
Line 39 ⟶ 40:
* 50% load instructions
* 15% R-type instructions▼
* 25% store instructions
▲* 15% R-type instructions
* 8% branch instructions
* 2% jump instructions
Line 47 ⟶ 48:
<math>
\text{CPI} = \frac{5 \times 50 + 4 \times
</math>
===Example 2===
<ref>Advanced Computer Architecture by Kai Hwang, Chapter 1, Exercise Problem 1.1</ref> A 400
{| class="wikitable"
|-
! Instruction
! Instruction count
! Clock cycle count
|-
| Integer
| 45000
| 1
Line 77 ⟶ 78:
|}
Determine the effective CPI, [[Instructions per second#Million instructions per second|MIPS]] (Millions of instructions per second) rate, and execution time for this program.
<math>
Line 83 ⟶ 84:
</math>
<math>400
since: <math>\text{MIPS} \propto 1/\text{CPI}</math> and <math>\text{MIPS} \propto \text{clock
<math>
\text{Effective processor performance} = \text{MIPS} = \frac{\text{clock frequency}}{\text{CPI}} \times {\frac{1}{\text{1 Million}}} </math><math>= \frac{400,000,000 }{1.55 \times 1000000}= \frac{400}{1.55} = 258 \, \text{MIPS}
</math>
Line 94 ⟶ 95:
<math>
\text{Execution time}(T) = \text{CPI} \times \text{Instruction count} \times \text{clock time} = \frac{\text{CPI} \times \text{Instruction Count}}{\text{frequency}} </math><math>= \frac{1.55 \times 100000}{400 \times 1000000} = \frac{1.55}{4000} = 0.0003875 \, \text{sec} = 0.3875 \, \text{ms}
</math>
==See also==
* [[
* [[Instructions per cycle]] (IPC)
* [[Instructions per second]] (IPS)
* [[Megahertz myth]]
* [[Million instructions per second|MIPS]]
* The [[Benchmark (computing)|benchmark]] article provides a useful introduction to computer performance measurement for those readers interested in the topic.
==References==
{{Reflist}}
{{CPU technologies}}
{{DEFAULTSORT:Cycles Per Instruction}}
Line 112 ⟶ 115:
[[Category:Clock signal]]
[[Category:Rates]]
[[Category:Computer performance]]
|