A few years ago AMD released the Athlon 64 processor. Though this processor was not the first 64-bit processor, it was the first aimed toward general consumers. Chances are, if your computer was manufactured in the last few years, you have a 64-bit compatible processor. You may be wondering what the difference is and what this means to you. If you’ve looked into the issue in the past, you’ve probably determined that the most significant differences is that in order to have more than 4GB of RAM, you need a 64-bit processor. The reasons for this and its implications may not be so clear, so I’ll do my best to clear things up.
32-bit Vs. 64-bit
Even if you are aware of what it means to have a 64-bit processor, you may not understand what makes a 64-bit processor 64-bit. To fully understand this you need to understand the inner workings of a processor. A comprehensive explanation of this is beyond the scope of this article, and most likely beyond my ability to explain. I can, however, point out the basics.
As you are probably aware, computers have multiple levels of memory. Most people are aware of the two largest (in terms of storage) types of memory: hard disk and RAM. You may also be aware of a third type Cache. There is, however, a fourth level; Registers. The size and access time of these different types of memory decrease in the order I mentioned them. A hard disk can typically hold many gigabytes of data, RAM can hold a few gigabytes, cache can hold a few megabytes, and registers and hold only a few bytes. In the context of the difference between 64-bit and 32-bit systems, the level of memory we are most interested in are the registers.
Your processor has several registers. These registers hold only a small amount of data. This is where the difference between a 64-bit processor and a 32-bit processors comes into play. On a 32-bit machine, a register can hold 4 bytes of data. A byte consists of 8-bits, 4 bytes is therefore equal to 32-bits. As you might have guessed already, a register on a 64-bit processor can hold 8 bytes of data, which translates to 64-bits. This is the only necessary physical difference between a 32-bit and 62-bit system.
Memory
So what are the implications of this? As I mentioned earlier, the maximum amount of RAM you can have on a 32-bit system is 4 gigabytes. To understand why this is you need to further understand how data is stored, and how the processor accesses that data.
Your processor cannot read data directly from the hard disk, RAM, or cache. All of the data must flow down into the registers before the processor can do anything with it. This puts certain limitations on your data. All data in your machine is represented in binary, a bit is one binary digit. So if a register can hold 32 bits of data, it can hold a binary number 32 digits long. 32 digits might seem like an incomprehensibly large number, and if it were in decimal it would be, but in binary the largest number that can be represented with 32 digits is around 4 billion (2 to the 32nd power minus 1).
As I mentioned before, the processor does not work directly on data in RAM. In order for your processor to read this data it must first bring it into a register. So how does the machine know how to find this data? It has an address. Every byte in your RAM has a numeric address. In order for the process to fetch data from this address, the address must be stored in a register. As I mentioned before the largest value that can be stored in a 32-bit register is around 4 billion. Since every byte in RAM has an address, there is an upper limit of around 4 billion on the number of bytes that can be stored. There are roughly a billion bytes in a gigabyte, so in a 32-bit system the maximum amount of memory you can have is 4 gigabytes.
By now you probably understand why you need a 64-bit machine to have more than 4 gigabytes of memory. In a 64-bit machine you can have 2 to the 64th power number of memory addresses (as opposed to 2 to the 32nd bytes which equals 4 gigabytes). If you’re good at math you’ve probably figured out that this is equal to 2 to the 3nd squared, or roughly 4 billion squared. 16 billion billion bytes in computer terms is 16 exabytes. To understand how much data that is, consider your own computer. If you have 4 gigabytes of memory in your computer, you would need 4 billion of them to store that much data. Currently there aren’t even 4 billion personal computers in existence, and not all that do exist have 4 gigabytes of memory.
Other Implications
Memory addresses obviously aren’t the only things stored in registers. If you are a programmer most likely you know that the largest unsigned integer is around 4 billion. This is because an int is stored in 32-bits of memory. This fact might not change as a result of a move to 64-bit systems; there might not be a practical reason for increasing the size of an int. Other data types, such as float, require more than 32-bits of data. Moving to a 64-bit system means an entire float can be placed in a register.
Not everything about moving to 64-bit is good, however. In order to enjoy the benefits of a 64-bit system, you need a 64-bit operating system. The programs you are running also need to be 64-bit compatible. If you are a programmer you might be relieved to hear that in most cases porting a program to 64-bit is a matter of compiling your existing code with a 64-bit compiler. Its not always quite as simple as that, however, and identical code compiled on different compilers may experience different issues.
In addition to this doubling the size of memory addresses means that twice the data is now moving down the pipe to and from registers. This factor also involves the operating system. Most 64-bit processors are 32-bit backward compatible, meaning that you can install a 32-bit operating system on it and not notice the difference. You will notice the difference, however, by installing a 64-bit operating system on a low end machine. I experienced this first hand by installing XP 64-bit on an AMD Turion machine from 2006. Though the Turion machine was a 64-bit, it didn’t handle the impact of a 64-bit operating system on memory bandwidth.
Should I migrate to 64-bit?
Virtually any personal computer you buy today supports 64-bit. Does that mean you should go out and buy a 64-bit operating system? Not necessarily. There is no real benefit to using a 64-bit operating system unless you need a machine with more memory. Eventually the standard amount of memory on a mid-grade machine will surpass 4 gigabytes and in fact that day is coming soon. Unless you desperately need to upgrade your current machine, you may want to wait until you purchase your next machine to consider going 64-bit. With Windows 7 around the corner, the time to buy a new system might be coming close. If your current system or the one you are considering purchasing is a low-end machine you may want to stick with 32-bit. Just as the transition from 16-bit to 32-bit was, the transition from 32 to 64 is inevitable. If you are a person who likes to buy one machine and upgrade it over the years then 64-bit is the way to go. If you periodically purchase a new machine there is no real advantage to 64-bit unless you want more memory.