IPC = Instructions Per Cycle = Instructions / Cycles
A hypothetical CPU with infinite "speed" (by which I meant clock rate, sorry if this caused any confusion) will have an IPC of 0.0, because finite instructions / infinite clock ticks = 0.0. This is true unless every instruction takes 1 or less cycles to complete, which can't be the case in the presence of off-chip memory accesses.
Anyway, the point is that the latency of off-chip memory accesses doesn't scale with clock speed, and because of this, IPC always goes down when frequency goes up.
Let's say that you have a CPU running at 1.0 GHz, and in order to run a particular program it takes 10 seconds to complete.
And thats where the problem starts,
IPC = Instructions Per Cycle
Now, most of the people take IPC as the
single Core performance of the CPU. Thats not what IPC is. IPC is the Execution capacity(instructions) of the CPU Core.
Its how many Instructions the Execution resources (ALUs etc) of the Core can Execute per Cycle.
For example, if the CPU Core has 2x Integer Execution Units(ALUs) , then
its theoretical maximum IPC will be two(2). If it has 4x Integer Execution Units its Maximum theoretical IPC will be 4.
IPS = Instructions Per Seconds
IPS = IPC x F (where F = Frequency)
One Hz = 1Cycle per Second
or F= 1/T (where F = Frequency and T = Time in Seconds)
1 gigahertz = 1000000000 hertz
Now lets see what you said,
At 1GHz it takes 10 seconds to finish the work, 5 secs for Memory and 5 secs for the execution.
So,
the execution at 1GHz takes 5secs.
Then you said that at 2GHz it takes 7.5secs to finish the work(performance), at which 5 secs are for the memory and 2.5secs for the execution.
So, at 1GHz it takes 5secs to execute and
at 2GHz it takes 2.5secs to execute the same work, that means that IPC is constant and you halved the time because you doubled the frequency, remember that IPS = IPC x F.
Then again you said that at 4GHz it takes 6.25secs to finish the program. Of that, 5 secs is for memory and
1.25 secs is for the execution at 4GHz. That again means the IPC is constant and you halved the time it needed to execute because you increased once again (double) the Frequency, so it needs half the time to execute the same work.
Main memory access is a constant and it doesnt affect IPC at higher CPU Frequencies. If it needs 70ns to access the main memory at 1GHz, it will also need 70ns to access the main memory at 2 or 4GHz. That means that if your IPC is 1.2 at 1GHz and you are memory access constraint, your IPC will still be 1.2 at 4GHz because of the main memory access time. But, your performance will increase because you have raised the frequency.
So,
what you measuring in your paradigm is not IPC. IPC doesnt go down with frequency.
IPC is actually increasing with higher frequency, you can clearly see that in the
chart I posted.
Bellow is the IPC measurements of Intel Core 2 Duo E6400 in SPEC CPU2006 and CPU2000, we can clearly see that
its average IPC is bellow two(2). Each Intel Core 2 Duo CPU Core has 3x ALUs.