How many bytes a 64 bit processor processes?

This is from an interview question -

"there is not more than one way to answer such as number of bytes a 64 bit processor processes and the kill signal for linux"

Kill signal for linux was pretty easy to find. I just did a quick google search and was able to find this article.

I am confused about the "number of bytes a 64 bit processor processes" part. One article() states that " In fact, a 64-bit processor can theoretically process up to 18,446,744,073,709,551,616 bytes, or 16 exabytes (EB) at one time." Another article(), which makes more intuitive sense, states that "in 64-bit CPUs (Central Processing Units) such as the Athlon, Itanium and Opteron, programs process information 64 bits (or 8 bytes) at a time". This one made sense to me because 64 bits is 8 bytes (8 bits per byte)

Does at a time in both articles mean in nano second? mili second? From these two articles, what answer would an interviewer expect? Would he/she expect the 8 bytes at a time answer and something that is so much greater?

3

5 Answers

The thing with the large number is, it's 2^64 (2 to the 64th power). That's the amount of unique states that a x64 register could be in, as there are 64 bits in the register to be set to either on or off thus there are 2^64 unique combinations of bits set to on and off.

Assuming that a register value points to a byte address in memory, it can thus "pinpoint" any byte in a memory of 2^64 bytes. So in that sense, it can "reach" all those bytes in the theoretical 16 EB's of RAM at any time. But it's not like a CPU has 16 EB's of built-in ram, which is what that boson.com article sounds like.

At a time would probably not imply a certain timespan, but a single processing stroke. I would say the answer is indeed 8 bytes. If the timespan were important for this question, it would be a more difficult calculation as one would need the clock speed of the CPU and then also need to define if the count includes error correction retries on the same data, cycles used for CPU-based graphics/audio and many other things.

4

Basically, your first reference had it wrong, and your second reference was right, but they did not give the whole picture.

Here's (I hope) a more complete and accurate picture CPU/Memory fundamentals:

A 64-bit processor has a 64-bit internal "bus". This is literally 64 wires that can each pass a high or low voltage (1 or 0) at any given time. This allows several things including:

1) 64-bits (8 Bytes) of data can "flow" thru the bus at any given time. This data is "Pushed" thru the bus each time the CPU "clock" ticks. If you're curious, a CPU "clock" is usually an internal crystal that vibrates ("oscilates") when it is electrically charged. The osculating crystal produces an electronic "wave" which is then transformed into a rigid, "toggle", wave form. This is the heartbeat of the processor, and each beat "pushes" data thru the bus (simply put). For example, a 1Ghz, 64-bit CPU can "push" data 1 Billion times every second, and it pushes 64 bits each time. Therefore it's processing power or "bandwidth" is 64 Billion bits/second or 8 Gb/s "bandwidth".

2) Since there are 64 binary wires, there are 2^64 possible values the bus can ever produce. Since those values can refer to memory "addresses", a 64-bit processor has the ability to point to up to 2^64 memory locations, each 1 Byte long. This is HUGE... 18.5 Billion GB of RAM.... That's 2 GB of RAM for every human on earth... in a single computer. But for a better example, consider a 32-bit CPU, which can refer to up to 2^32 memory addresses (RAM). Again, each RAM "address" is usually 1 Byte (8 bits), so this is 2^32 Bytes (4GB) of RAM. This is why any computer having either a 32-bit Processor or 32-bit Windows is limited to using 4GB of RAM. Even if more RAM is installed, the system can only use 4GB of it. Also, a 64-bit CPU running 32-bit windows is still limited to 4GB RAM because the Windows software was not designed to connect to any more than the 4GB (2^32) memory "addresses".

NOTE: Keep in mind that as technologies are added such as 3-state bits, mult-core processors, fiber optics, etc, these fundamental calculations get more complex.

SOURCE: Bachelors of Science in Computer/Electrical Engineering From Purdue (IUPUI) in 2010 and have worked in Data/IT/Analysis for the last 8 years. I am also a gaming PC builder/enthusiast, and AnadTech/TomsHardawre article addict :)

Regards, - Jonathan Mathews

i find the question formulation strange, but I will try to explain a few things. 32-bit and 64-bit has little to do with processing power. Processing power is measured in calculations per second or integer operations or floating point operations (Flops).
More bits (16 vs 32 vs 64) actually means that data can be processed in larger chunks which also means more accurately. A floating point value can have much more precision (more numbers after the integer part).
Having more bits also enables the system to point to or address a larger number of locations in physical memory.
32-bit systems were the upgrade from 16-bit because they could address up to 4GB of memory. (2^32 = over 4 billion).
Now applications require more than 4 GB of memory, 64-bit is now widely spread. The addressable value becomes 2^64 (16 Exabytes). So the closest thing that you could say is that a 64-bit CPU can address up to 2^64-1 memory addresses. In practice, it is less than that, since there is no RAM nearly that value.
Nano-seconds have nothing to do with the issue. So to summarize an answer, the situation is in your advantage since the question is not clear enough to provide an exact answer.
Asking "How many bytes a 64 bit processor processes" is fundamentally wrong, since there is no time or other type of reference. "How many bytes per second" would of been an OK formulation, but this would again be more related to processing speed which is way more architecture and speed (GHz) dependent than 32 /64-bit.

5

There is a way to calculate how much data a processor can process a second, it is simple, however it is not the most accurate but it's pretty accurate. What you do is take the refresh rate(GHz) and multiply it by the total processor cache. Like this 2.16*.00225=.00486 or 4.86 MB per second ^ ^ GHz per second X total CPU cache

64 bit cpus are faster than 32bit CPUs at the same clock speed because the length of the machine code is double of 32bit so it can process more code per CPU cycle...sort of like in 32bit

Buy milk ----cpu clock cycle 1 Buy beer ----cpu clock cycle 2

In 64bit it's Buy milk & beer... CPU clock cycle 1

But this does not translate as 64bit CPUs being twice as fast however. Also they are not faster in running 32bit code....

This is why 32bit CPUs cannot run 64bit code or Operating systems.....but the reverse is possible. My two cents.

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like