The Layman’s Guide to 64-Bit
Why I Wrote This: To feel more useful after inciting the Unicorns v. Horses debate (which is now closed, darn), and to lessen my chances of being banned in the future. Oh, and the fact that everyone keeps asking.
What is 64-Bit?
To answer this question, I’m going to go through a few basics of computing – first, the bit.
What is a Bit?
A bit is the smallest unit of data possible. You probably already know that computers speak in binary (1s & 0s); well, a bit is a single unit of 1 or 0. Alone, it’s not very helpful, but when placed together, it creates the foundation of computing.
For example: a single bit can convey 2 things, either a 1 or a zero. Two bits though, can convey 4 things, 00, 01, 10, and 11 – see where I’m headed?
What Are These Bits Used For?
Everything! A computer can only speak in binary, and thus the bit dominates its existence. However, in this guide, I am relating to bit-architecture – or the amount of data available to a system at any given time. Thus even though your hard drive may be 160 Gigabytes (a byte equaling 8 bits), it can’t use all that information at the same time.
32-Bit Architecture
This is where most consumers are right now, and if you follow my previous example, you’ll find out that 32-bit means 32 of those buggers, all in one line. That means that there are a possible 4 billion (4,294,967,295 to be exact) permutations of data that can be arranged in your computer. What this roughly translates to, is that your computer can have over 4 billion data units that it can utilize at any given time. Most of this space is used by the system RAM, while other processes, like video, consume whatever’s left over. Though 4,294,967,295 units of addressing space may sound like a lot, that only equates to about 3.5 GB of RAM with the rest left over for other tasks. Because it’s very feasible to have 4 GB of RAM in your laptop right now, people are jumping ship, and heading towards 64-bit architectures.
64-Bit Architecture
By switching from 32-bit to 64-bit, the maximum amount of addressing space escalates to 18,446,744,073,709,551,616 units of space or 17 billion gigabytes. This means that we won’t hit the RAM headroom for quite a few years (decades?) to come. In reality, most computers that are 64-bit capable are artificially limited on how much RAM they can take, with the common limits being 8, 16, and 128 GB. Another advantage of switching over is faster computing. 64-bit code (should) run faster than comparable 32-bit bit code.
What’s Required to go 64-Bit?
1. The CPU or processor – the consumer level processors that are currently 64-bit capable are the AMD Turions and the Intel Core 2 Duos
2. The Operating System – This is why you commonly see Vista followed by a bit number. It’s pretty obvious if you operating system is 64-bit as it will be labeled that way.
3. At least 4 GB of RAM – Ok, this isn’t an official requirement, but there’s not much of a reason to be 64-bit computing if you’re not going to take advantage of it.
The Drawbacks of 64-Bit
So if 64-bit’s so good and swell, why isn’t everyone running 64-bit? Same reason why it takes time for people to switch over to anything new in computing – compatibility issues. 64-bit systems require 64-bit drivers and applications. Though more and more things are working well with 64-bit systems, it’s not yet up to par with the universally used 32-bit.
Bottom Line
I know what you’re asking right now: “But hey, should I go 64-bit?” My answer is – if you’re currently in the market to buy a computer, get one that’s 64-bit compatible, not necessarily one that runs in 64-bit. In the coming year, 64-bit should be much more fleshed out, and if you have a 64-bit capable computer, you can make the switch when you first, upgrade to 4 GB of RAM, and second, know that all your programs are compatible. I don’t see 64-bit completely taking over for at least a year, but when it does, you’ll be ready.
Special Note: Vista SP1 changes the way Windows displays RAM in the system properties. Instead of displaying RAM available, SP1 displays RAM installed. However, the 32-bit limit still exists - not even God can change that.
Final Note: As always, I welcome suggestions, corrections, and the like. However, keep in mind that this is meant to be a layman’s guide, so try not to go too far in-depth (or in other words, powerpack and Odin243, please don’t debate microcomputational spelunking here). And yes, I do know that means small-computer-cave-diving. Oh, if you want to learn more, Jalf goes quite a bit more in depth if you scroll down.
-
Thanks Lithus! Nice basic explanation of 64 bit.
-
good job, helpful for noobs who dont know about it
-
very informative! thank you
-
great job lithus!
-
Now How about a section on the benefits; ie faster and more secure programs (due to the ram being randomly assigned)?
-
Even now, 64 bit is actually very stable and useful. In fact, Gentoo has supported 64 bit for quite a while.
Security is not an advantage of 64 bit. However, the NX bit that is included in modern 64 bit CPUs does add a little security.
In many applications, 64 bits can provide a significant boost in performance. Doubles (64 bit floating point variables) are very common in games and multimedia. A CPU that can process 64 bit in hardware will not incur the inefficiencies of emulating 64 bit math with 32 bit instructions. In the extreme case, distributed.net RC5-72 will run over twice as fast on a 64 bit system. I have also seen D2X-XL (an open source 3D game) compiled for 64 bit run significantly faster than the same game compiled for 32 bit. (100 vs. 80 FPS.) -
I just read somewhere that viruses/malware/spyware due to the fact that x64 randomly assigns the ram adresses, instead of in sequential order, i believe. I havent used the 64 bit gentoo (way to confusing), but the other distors i have tried ran great.
-
The Slightly More Elaborate Guide to The Laymans Guide to 64-Bit
Some of these addresses might not actually be memory (you might not have 4GB of RAM, and some hardware gets lumps of this memory space reserved to them as well), but the total memory space that the CPU can deal with is 4 billion bytes.
I know what you were trying to say though, but I think it's just confusing to start claiming that 4.29 billion bytes = 3.5GB.
And before we move on to 64-bit we should mention another place where the "bitness" matters. It's not just a matter of how much RAM you can use.
Arithmetics are limited by this too. The CPU operates with words of 32 bits each. So it can add two 32-bit numbers in one single operation (the same way you might add 3 + 5 as one single step), but it can't do 64-bit addition. For that, it has to use multiple steps. (First add up the lower bits, remember to carry the highest bit, then add up the higher bits, and combine the result. Like you'd do two-digit number such as 84 + 37)
So obviously, on a 32-bit CPU, computing 64-bit arithmetics is slower than 32-bit arithmetics. Of course, for many things, 32 bit (4.2 billion) is quite enough, so this doesn't matter. But if you need to deal with bigger numbers, this can become a problem.
However, the interesting number is the size of the address space like you said first.Since the CPU works with "words" of 64-bit each, a memory address is also represented by 64 bit. Of course, not all of them might be used currently, but they're there, so when one day we need more RAM, we just have to make our CPU's start using all 64 bits.
Also, this is good news for all the mysterious stuff that ended up hogging around 500MB of our precious 4GB on 32-bit systems, giving us only 3.5GB of actual RAM. Memory mapped hardware and such can now use some corner of this vast, mostly unused memory space, without interfering with how much RAM we can use. (in particular, the 8/16/128GB limits you mentioned refer to physical RAM, but we can still memory-map stuff beyond this limit. So if you had a system with 8GB RAM, and ran the cheap version of Vista that only allowed 8GB RAM, you'd actually get to use them all. Memory mapped hardware or files could just be placed beyond the 8GB limit (since the CPU can handle greater addresses), so it doesn't "hide" any of your RAM.
This is unlike the situation on 32-bit where you can install 4GB of RAM, and only be able to use around 3.5GB
It also means that even if you only have, say, 2GB of RAM, you can still benefit from a 64-bit system. Because even if you don't have that much RAM, the memory space is bigger. So you could in principle make a 6GB pagefile, and at least avoid out-of-memory crashes. And the OS would be able to memory-map everything it likes without having to worry about "hiding" actual RAM.
Primarily:
- the address space is still bigger (so even if you dont have much RAM, you at least avoid out-of-memory errors)
- 64-bit arithmetics can also be faster than 32bit equivalents.
- And a bunch of other low-level improvements that are only toggled on when the CPU is in 64-bit mode. These aren't directly related to the 32/64 bit thing, but are just various other improvements that piggybacked a ride on the 64-bit architecture. (When you're changing the CPU architecture anyway, you might as well get as much done as possible, so you avoid having to change it more often than necessary. And these changes were too minor to justify breaking compatibility on their own, but since 64-bit mode was going to do that anyway, why not cram these improvements in at the same time?)
Because of this, a CPU in 64-bit mode is estimated to be around 5-10% faster than in 32-bit mode when running the same kind of code. (Only recompiled to take advantage of these new improvements)
This is on top of the 64-bit specific advantages, which might bring even greater performance boosts.
Floating-point (decimal numbers, like 1.542) is treated specially even on 32-bit systems, and the CPU has been able to process 64-bit floating point values in a single instruction for years.
It's only with integers than 64-bit makes a difference.
1: A word in CPU architecture is simply "the size of the bit-chunks that the CPU works with internally". In 32-bit CPU's, a word is 32 bit, and in 64-bit it's 64. [2]
2: Note to the pedantic: This isn't true. On PC CPU's in particular, Intel, in their infinite wisdom, have decided to change the meaning of a word. Thus, according to Intel, a word is always 16 bit, 32 bit is a double word, and 64 is a quad word. In the above, I use the term "word" in its original meaning though, as the "native" data size of the CPU.
3: Memory-mapping simply means that a range of memory addresses are configured to "point" to something else. This might be GPU memory (so the CPU just has to write data to a specific memory location, then it gets automatically sent to the GPU), or it might be a file (so the CPU can read/write a file just by poking at memory addresses). This is a very handy technique, but unfortunately, it uses up valuable memory addresses, which then can't be used to access actual RAM. This is starting to become a problem in 32-bit systems, especially with high-end GPU's that may have around 1GB of VRAM. Memory-mapping all that would hog a full 25% of the 32-bit addressing space. Ouch.Last edited by a moderator: May 8, 2015 -
Good comments but, No Spelunking Zone!
-
This layman appreciates the compubaby talk.
-
Reworded some things, and added a sentence or two. Made a reference to Jalf's in-depth post.
-
Bumped due to question over 32 v 64 bit.
-
Throw in SSE, and the line between 32 bit vs 64 bit(as a basic working unit) blurrs as many SSE instructions goes well beyond 64 bit for years.
So it is still mainly about addressable space where we see the main difference. The performance gain is as mentioned, mainly from an architectural change to drop the bread crumbs in 32 bits(which can't be done for backward compability in 32bit land), not because of 64bitness. -
nice,thanks for the information
-
One damn interesting article by Lithus...
Now one stupid problem i have..
My AMD Turion dual is 64 Bit but Max RAM upgradeable is 2 GB (HP claims)...
Does 2 GB DDR2 Single RAM exist in SODIMM (laptops) ???
Currently i have 2 X 1 GB DDR2 -
-
how does the turionX2 handle vista64? I am looking to upgrade if it can handle it.
-
I dont really understand how this works. I think I read somewhere that newer games will be designed for 64-bits. Do I have to run vista 64-bit to take advantage of the 64-bit capability of for expampel a core 2 duo CPU when running games that are designed for 64-bit, or will it work equally well with 32-bit vista?
I guess I need 64-bit vista, but I rather ask a stupid question than ending up buying a computer with an OS that is not optimized for my needs -
You do not need 64bit, especially since MS screwed up 64bit again. Games are going to be written for the mainstream, and since almost all PCs that sell with Vista are 32bit OSes...32bit is mainstream, and its going to stay like that for at least a few more years.
-
it really shouldn't microsoft have such a monopoly they surely should see that they can make it happen, and the even more worrying fact is that most 32 and 64 bit OS versions cost exactly the same. Maybe when people realise they are paying the same to get less performance they will demand the switchover, because almost all hardware is 64 bit compatible already (and if i had to guess 128bit processors will be standard before 64bit OS'es become standard.
-
-
I suggest that this thread be stickied.
-
That was a very interesting read, but I have a question...
Why can't you (and I'm assuming you can't) run a 32 bit program in a 64 bit os environment?
A computer with a 64 bit processor and os is capable of adding two 64 bit words, (at least thats what I think Jalf is saying) so why can't it add two smaller 32 bit words?
Cause I suppose if it could then we wouldn't really have a compatibility issue, cause we'd just buy 64 bit os and use 32 bit programs until 64 bit alternatives are released, and the 32 bit Vista would never exist. -
Thank God for emulators though. 64 bit Vista has x86 (32 bit) emulators built into it. I believe every version except basic has a 64 bit version. -
And why Microsoft didn't just go full tilt with 64-bit only with Vista is beyond me. It would have forced developers and vendors to quickly support 64-bit applications. I'm sure some of it was for backwards compatability with older hardware, but what PC would run Vista anyways that was only 32-bit capable?
The way things are advancing, you're going to need more than 3GB of RAM to run programs efficiently and you'll only be able to do that by going 64-bit. -
WAIT A MINUTE!!!
You CAN run a 32 bit app in a 64 Bit OS and, in fact, many have found they run much more stable and quicker. I have found very little compatability issues and, as many others here, will never go back to 32bit.
I believe my system runs on avg 10-15% faster in all aspects and I run lotso 32 bit programs.
As for why 64Bit never caught on, its a sale thing. Dell, for example, put a few systems out with the 64Bit OS options but they never sold at all (Latitude), They ended up reverting back for the money. -
-
Absolutely...and for the software support to come in their must be 64Bit purchases.
Yje only way it would be realized is through a forced entry or by making it very attractive to all those 32Bit owners to convert.... -
However, so far not a single game is *exclusively* designed for 64-bit. A handful of games have 64-bit clients *as well*, but 32-bit is the standard that *everyone* has. But yes, if, one day, a game comes out that is 64-bit only, you'll need a 64-bit OS.
First, your logic is flawed. Keep in mind that computers require very precise instructions. if the computer only understands the instruction that says "Read these 64 bits of data, and these 64 bits of data, add them, and write the resulting 64 bits to this location", it won't be able to "Read these 32 bits of data, and these 32 bits of data, add them, and write the resulting 32 bits to this location".
Those are two completely different instructions. (If nothing else, it makes a major difference whether you write 32 or 64 bits of data to memory. If you write 64 bits, you're going to overwrite a few bytes that, in the 32-bit case, wouldn't have been touched.
Second, yes, you can do this and it works fine.
As I said, your logic is flawed, because computers are too precise (or at least, require too precise instructions) to work like this. But CPU designers have thought like you, "wouldn't it be handy if we could still read 32-bit instructions?"
So they made CPU's that can do just that.
A 64 bit processor running a 64-bit OS can run 32-bit software. The CPU still understands every single 32-bit instruction, and will execute it exactly as a 32-bit CPU would, because that was one of the primary design requriements. (In fact, it was the design requirement. Being able to execute 64-bit code is an extra bonus, 32-bit was a must)
There is one small caveat though. The CPU might understand 32-bit code just fine, but the OS might not. That is, a 32-bit application is going to expect to have a 32-bit OS to talk to. If you're running a 64-bit OS, that's going to cause trouble. So the OS has to do a bit of work too, by including a small 32-bit wrapper to translate the communication between 32-bit applications and the core 64-bit OS.
But if that is in place (and it is), 32-bit apps run perfectly even on a 64-bit system.
-
-
And you do know that it took 17 years from 32 bit processor becoming available, until the first 64-bit CPU, right?
(And that's only counting PC's. We've had non-PC 64-bit CPU's for decades, even before the first 32-bit PC CPU. So by your logic, there should be 128 bit processors out there already. There aren't.)
So if it's anything similar to the past, we'll see a couple of 128 bit processors 14 years from now.
But it isn't.
128 bit isn't like 64 bit. 64 bit is huge. It's 4 billion times as huge as 32-bit. That's a lot, and we're not going to run out of space any time soon.
Moreover, the benefit of going 128 bit is dubious at best. Widening the processor isn't free. 64 bit is a lot more complex than 32 bit, and it means operations take a bit longer to complete. It's more work to add 64 bit numbers than 32 bit ones. If it wasn't because we needed the extra space that 64-bit CPU's provide, we'd have been better off sticking with 32-bit.
It's a tradeoff. How many 128-bit computations do we need to perform? If it's only a few, we can emulate them by combining smaller computations, and so leave the 32/64 bit instructions unaffected by the overhead of supporting 128bit as well.
So we'll upgrade to 128 bit when we need to. And that won't be any time soon. It might be never. -
Thanks for answering that question in such depth Jalf.
So you can run 32 bit programs with a 64 bit cpu and os, but not simply because the cpu can do it, but rather because the cpu designer decided to give the cpu the ability to identify 32 bit words and then act like a 32 bit cpu.
Okay, so now I'm wondering again why we have 32 bit versions of Vista if 64 bit versions can run 32 bit programs.
*Reads 64-bit article @ Wikipedia*
So the main reason for not using 64 bit Vista is that we don't have 64 bit device drivers for a lot of hardware, and we can't use the 32 bit versions of these device drivers because the hardware interfaces directly with the os and thus you can't use a wrapper (Jalf's terminology) or emulation (Wikipedia's terminology).
Although it says that with open source software its simply a case of re-compiling the 32 bit program in 64 bit, so it wouldn't be hard to make the device drivers 64 bit if they were open source?
So when you buy a notebook with a 64 bit os like Vista Ultimate from say Dell, it comes with all the 64 bit device drivers you need to run the hardware in that notebook, but then you plug in your printer, and realize that say HP doesn't actually offer a 64 bit device driver for it. Thats the problem? So all they have to do is re-compile. -
The trick is in the code that is fed to the CPU. It may receive an instruction to "read those 32 bits of data on that address", or "multiply these 32 bits with these 32 bits, and store the result there".
So the design decision was to keep support for the instructions that were used in 32-bit mode. Support for 64-bit mode is achieved by adding a ton of new instructions (which say "multiply these 64 bits with these 64 bits, and store the result there"), but when you run a 32-bit application, 32-bit instructions will be seen by the CPU because 32-bit instructions are what are stored in the .exe file, so it has to understand those, *as well* as the new 64-bit instructions.
First, open source is no silver bullet. There are some changes to be aware of when converting code to 64-bit. Stuff that worked before can stop working.
People often make a lot of assumptions when coding which *seem to work* at the moment, but aren't guaranteed to keep working. So when something changes (say, you upgrade to 64-bit), your code stops working.
One typical example is assuming that the size of an integer and a memory address are the same.
It worked in 32-bit software, where a memory address is 32 bits long, and an integer, by default, is also 32 bit. So hey, we can take an address and store it as an integer, or vice versa.
Then you upgrade to 64-bit.
Now a memory address is 64 bits, but an integer is... still 32 bits (because that's usually big enough). Trying to store a memory address in 32 bits of memory means trouble.
Another factor is that drivers may consist at least partially of machine code, which isn't compiled. It has to fit the target machine from the beginning. So those parts have to be rewritten by hand.
I'm not a CAD person, so I don't know exactly what limitations they run into.
The biggest difference you'll see is probably that it can handle more than 4GB of RAM, but I don't know if those apps yould benefit from that. -
Thanks for answering my questions.
May I ask how you've come to know all this Jalf? -
Studying computer science helps.
Learned the general theory in our CPU architecture course (and bits of it in the OS course), and then I just read up on the specifics for PC's on my own because it interested me. -
-
good job my friends, thats a lott of information
-
am getting a new gaming laptop should i go for 64bit vista then i have read all the post but its making me more confused dont want 64bit if i wont be able to run anything or play any good games please help
-
Generally, it's no problem.
If your laptop is sold with 64-bit Vista, then you can be certain that the necessary drivers and such are available in 64-bit versions, so there should be no problem. If 64-bit isn't supported directly by the laptop manufacturer, it *most likely* still won't be a problem, but no guarantees.
However, if you don't buy 64-bit Vista with your laptop, you'll be getting a non-OEM version, and then it allows you to run either 32 or 64 bit Vista, so the problem goes away. In short, I wouldn't worry about it. -
the 64 bit is not offered by dell where i am getting the system from but if i ask for it they will install it so is that goning to have more of a potential for problems
-
Pardon me a little here, but can someone please indulge me and list just a few examples of applications that are 64-bit compatible and some examples of applications that are not 64-bit compatible? I think that I'm finally beginning to understand more about the whole 64-bit thing and I just need a few examples of applications that work well with it. I thank anyone who takes the time to help me out.
-
Maya 64-bit
PS CS3(i think)
thats all i know that work but for the ones that don't :
C&C 1 (not in the First Decade DVD that one will work)
and any other 16-bit app manly -
Thank you, Lithus, for your friendly presentation. I feel slightly less ignorant now! -tg
-
Hello,
Can someone please help me?
I want to purchase a laptop and the processor is 64-bit, the operating system is 32-bit and I was wondering if i can safely run 32-bit applications on this set-up?
Intel Core 2 Duo T8100 2.1Ghz
4GB PC5300 RAM
2x200GB 5300/4200rpm hard drives
ATI Radeon HD 3470 graphics 256MB
Windows Vista Home Premium 32-bit SP1
I'm confused with the whole 32-bit vs 64-bit topic. I don't want to purchase this laptop and then later find out I can't run 32-bit applications.
Please help me sort this out. Thanks. -
You can run most programs/applications. Its mostly drivers that have compatibility issues.
Check the programs website if it can run on 64bit or just google it.
This list might help http://www.iexbeta.com/wiki/index.php/Windows_Vista_Software_Compatibility_List
If it doesnt say 64bit, you will have to google it and double check -
I want a 64 bit vista that seamlessly integrates with 32-bit apps and drivers too like Mac OS leopard.
-
nice guide thanks
lol can u link me to the unicorn horses debate i wawnna go through it
pretty please -
Cool thread i just got a 64bit vista laptop and wondered what it all really ment and this pretty much ansewred everything. Thanks
-
Is the new AW m17x a 32-bit OR a 64-bit laptop ?
The Layman?s Guide to 64-Bit
Discussion in 'Hardware Components and Aftermarket Upgrades' started by Lithus, Sep 24, 2007.