# Can we calculate the bandwidth for a CPU?

I have read somewhere that we can calculate the bandwidth for a ram like this. Assuming the ram clocks at 1600 MHz without dual-channel, the bandwidth is 1600 MHz * 64 bits = 102400 Mbit/s, which as I understand means the ram is able to transfer data at a speed of 102400 Mbit/s at its peak performance.

Similarly, can we calculate the bandwidth for a CPU? Assuming a 64-bit dual-core CPU with clock speed 1.8 GHz, can we calculate the bandwidth as 1.8 GHz * 64 bits * 2 cores = 230.4 Gbits/s? I tend to think this CPU is able to process data capped at a speed of 230.4 Gbits/s.

However, when I google the term "cpu bandwidth", I actually didn't find one definition. So can we calculate the bandwidth for a CPU? If not, why the bandwidth concept is not applicable to CPU?

Thanks!

• superuser.com/questions/816430/… have a look at this. – NetworkKingPin Feb 12 '16 at 10:53
• @NetworkKingPin Thanks for your prompt reply. Maybe my question was not clear, I don't mean the speed at which the CPU exchanges data with memory, but how fast can CPU process data. – Ray Feb 12 '16 at 10:58
• Ray maybe this could help a bit more. alf.sd83.bc.ca/courses/It12/using_it/processor_speed.htm – NetworkKingPin Feb 12 '16 at 11:01
• @Ray But someone has to feed the data to be processed to the CPU... As for its speed, in your case that's 1.6 billion operations per second, no more. That's the clock rate that separates two time-contiguous operations. – MariusMatutiae Feb 12 '16 at 11:13
• @MariusMatutiae Thank you. So, if assuming there is no bottleneck in data transfer between CPU and memory, and the CPU can get as many data as fast as possible, and the speed of processing data is only dependent on how fast the CPU is. In this ideal case, is 230.4Gbit/s (as the example in my question) the theoretically maximal speed the CPU can handle data? – Ray Feb 12 '16 at 11:45

## 1 Answer

I apologize for being too terse, in the comments. Let me expand a little bit.

The Intel link you provided states that your particular core can be served by two types of RAM, DDR3L 1333/1600. They operate at 1300MHz and 1600MHz, respectively. Assuming you have the faster one, you can transfer to one of them 64bits x 1600x10^6 times per second, which equals 12.8GB/s. However,the same Web page states that the core has (at most) two memory channels, so using both of them at the same time will allow you to reach the Max Memory Bandwidth of 12.8 GB/s x2 = 25.6GB/s, the final figure quoted in the document above.

An even more curious case is that of the i7-6700 processor, which can use, as memory banks, even DDR4-1866/2133, with 2 memory channels. Repeating the computation above, 8B per cycle, 2.133x10^9 cycles per second, 2 memory channels, you obtain 34.128GB/s, which jibes with the value in the link, 34.1GB/s.

• Thank you Marius. Now I understand. We need to use the memory's frequency but not the CPU's. This is because the memory is slow and the bottleneck lies on memory side, not CPU side. If there is a super fast memory, even faster than CPU, and the CPU's processing power becomes the bottleneck, then we would need to use CPU's frequency in this calculation, right? Is it 64bits * min(CPU's frequency, memory's frequency)? – Ray Feb 12 '16 at 15:53
• Hey ya thanks dude. I accept it already. Have a nice day :) – Ray Feb 12 '16 at 16:36