• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

IPC

IPC?

  • Iunno. It measures performance...

  • Instructions per clock.

  • Instructions per core.

  • Other.


Results are only viewable after voting.

richaron

Golden Member
Hi all,

As a reader of ~technical~ forums, and just out of curiosity, I'm interested in seeing what people mean when they use the abbreviation "IPC". I'm wondering if we even mean the same thing whilst trying to have a discussion.

So, being honest & non-judgemental, what's the first thing you think when reading "IPC"?
 
Thanks Nosta tho I think you may have missed the point of this thread, clearly there are many people who could vote on any option above. With language meanings are fluid, there's an argument that something means "exactly what I thought it meant when I wrote it".

Even what you consider the "wrong" meaning can be perfectly acceptable, even "right" meaning amongst other groups of people. I was simply wondering where we are with IPC.
 
Last edited:
Even what you consider the "wrong" meaning can be perfectly acceptable, even "right" meaning amongst other groups of people. I was simply wondering where we are with IPC.

IPC is instructions per clock, period. What the hell would, "Instructions per core," even mean, and why would it be a relevant indicator of anything?
I know, let's start a thread as to whether "hp" means "horsepower," or, "hydrogen atoms per car."
 
Last edited:
It's not a matter of opinion, it's a matter of being correct or incorrect. It's "instructions per clock".
 
Whatever the acronym actually stands for it's generally used to indicate single thread performance. Instructions per cycle is just part of what gives that performance, and even that is a vague term - is that peak, average? What type of instructions must be included? - any, some specific mix, etc.
 
Whatever the acronym actually stands for it's generally used to indicate single thread performance. Instructions per cycle is just part of what gives that performance, and even that is a vague term - is that peak, average? What type of instructions must be included? - any, some specific mix, etc.

exactly, IPC is a vague term in practice.
Are there any de facto standard how to measure IPC out there?
 
I think most people simply use it as the average single threaded performance per clock cycle. If Haswell is 10% faster than Sandy Bridge on average at the same clock speed, it has a 10% higher IPC.
 
exactly, IPC is a vague term in practice.
Are there any de facto standard how to measure IPC out there?

Not any especially good ones. IPC differs massively depending on what code you use. If you have lots of memory stalls in your code, its IPC will be much lower than something that is just banging on straight line arithmetic with a working set that fits into L2.
 
Not any especially good ones. IPC differs massively depending on what code you use. If you have lots of memory stalls in your code, its IPC will be much lower than something that is just banging on straight line arithmetic with a working set that fits into L2.

Branch on condition jumps also tend to destroy the IPC unless there is a really good branch predictor that predicts the right outcome correctly each time.
 
So how will we figure out how to turn this topic, which is clearly impossible to disagree upon, into a massive debate?
 
...clock cycle.
Interestingly, in "Computer Architecture: A Quantitative Approach", H&P define IPC as Instruction Per Clock and CPI as Clock cycle Per Instruction. Oh well it doesn't matter it all means the same 😛

Branch on condition jumps also tend to destroy the IPC unless there is a really good branch predictor that predicts the right outcome correctly each time.
Modern branch predictors are typically well above 80% of correct predictions (and in fact above 90% in non pathological programs). The issue with branch misprediction is that if you get it wrong, you have to cancel everything you did speculatively after the mispredicted branch, while you can still execute instructions safely under a load miss.
 
Well I doubt anyone will chime in voting for "core" at this stage, but it's nice there is a consensus here at least. Quite a few times I've seen a higher frequency chip recommended because of "IPC".

I can pretend this was a public education thread, or a comment on the irony of people getting angsty over the suggestion of a bastardised term (whilst using English), but mostly I was curious/concerned as to what people thought. So thanks.

Edit: FWIW I've always considered IPC as an exact term related to a specific code path. Current usage is quite analogous to a nub thinking it means "instructions per core".
 
Last edited:
Back
Top