What are the lower level advantages and disadvantages of 64-bit/32-bit?

13,877

Solution 1

64 bit refers to the width of registers, memory addressing space, etc. One benefit is the ability to address more than 4GB of memory.

Wikipedia has an article on 64-bit computing with more details.

Edit: The advantages to more memory are that the operating system and programs have more virtual addressing space--16 exabytes (17.2 billion GB)--and, more importantly, that more physical memory can be added to a system and addressed, causing less swapping of virtual memory to and from disk.

The advantage to wider registers and data buses are that it is easier and faster to move the same amount of data around. An operation that required two or more registers can now be done with one.

So, performance is typically increased when software is recompiled for 64 bits.

A disadvantage is that wider data can mean more space taken by the same data. For instance storing the number 300 requires nine bits. If it's stored in a 32 bit integer, 23 bits are wasted. In 64 bit, that wastage becomes 55 bits. So, without retooling, a simple recompile to 64 bit can yield faster, but slightly more bloated software.

Edit: Also there are 64-bit technology pages here:

Solution 2

The difference is exactly 32 bit ;-)

You need 64 bit hardware (processor) to run a 64 bit OS. You need a 64 bit OS to run 64 bit software. This are the dependencies.

  • In a 32 bit system you are limited to addressing 4 GiByte (2^32) memory, in a 64 bit there is a theoretical limit of 2^64 byte.
  • 64 Bit software needs slightly more memory, mainly for pointers are 8 Bytes instead of 4
  • on x86_64, 64 Bit executables need more memory, as there is an additional opcode for many instructions, and thus may run slower
  • on x86_64, 64 Bit software can use more registers and has the potential to run faster

Solution 3

  • 64bit systems can directly address significantly more memory
  • 64bit systems can process data in chunks twice as large as 32bit, which helps some operations go more quickly

For some programs, like office automation suites, 32bit vs 64bit makes little observable difference.

But for other applications, such as databases, graphics/video processing, or hosting virtual machines, being able to reach more physical memory at once and being able to process more information with each instruction can make a huge difference in performance.

Note that today, many 32bit chips have 64bit extension functions, as many FPU (math) or SSMD (vector) operations are done in 64bit mode already.

See 32-bit Vs. 64-bit Systems: What's The Difference? for more.

Solution 4

  1. CPU registers and memory addressing.

  2. The system can reference (see) much more memory.

Solution 5

Let's go back to the basics.

99% of computer these days are based on what is referred to as the Von Neumann architecture. Essentially, the computer is in a constant cycle of:

  1. Fetching a command from RAM
  2. Executing the command on the CPU

alt text
(source: wikimedia.org)

When referring to 32/64-bit system (or any other bit size), essentially you are talking about the architecture and implementation of the computer:

  • size of memory space (RAM)
  • size of CPU registers
  • bus size (i.e. between CPU, RAM, I/O, etc...)

If you have a 64-bit system, you have an address space of 2^64. This is why 32-bit system cannot have more than 4GB of RAM. How can you address a memory space which is larger than 2^32?

Regarding the performance differences, there is no clear cut answer (just as there is no clear answer if CISC or RISC architecture is better). It vastly depends on the applications you are using.

To sum: a 64-bit architecture is simply a different way to build a computer. It does not mean it is better, or worse, or does things differently (on a low level, every computer is doing fetch-execute). It's simply a different way of implementing a computer.

Share:
13,877

Related videos on Youtube

Gordon Gustafson
Author by

Gordon Gustafson

ML Platform Engineer at Motional. Experience in devops, backend development, and ML.

Updated on June 04, 2022

Comments

  • Gordon Gustafson
    Gordon Gustafson almost 2 years

    I'm sure we've all heard the terms 64bit and 32bit thrown around, but what do they actually mean?

    I'm pretty sure they have to do with the size of a memory address. On a 64bit machine, a reference to an object is 64 bits. But I want to dig a little deeper....

    1. One often hears the phrase "64bit machine." What part of the computer is actually geared toward the number of bits? Processor? Operating System?

    2. What is the advantage of having larger memory addresses?

    I could add more questions, but I think brief is better.

    Thanks guys :D

  • Gunther Piez
    Gunther Piez over 14 years
    No. Nonsense. There are numerous cases where this is not true. The 68008 or the 8088, which had a 8 bit bus and where 32 or 16 bit arches, or the good old pentium/II/III, or Athlon/XP which have all a 64 bit main bus while being a 32 bit architecture.
  • Thomas
    Thomas over 14 years
    you mean "...in a 64 bit there is..." in the first bullet point.
  • alps123
    alps123 over 14 years
    Your answer is of course correct, but just a small comment. Intel has Physical Address Extension (PAE) that has additional address lines that allows 36 bit addresses, which through a re-arrangement of page table hierarchies gives you 64 GB of virtual memory space. This is why you can address more than 4 GB of RAM on most 32-bit Intel processors (after Pentium Pro).
  • supercat
    supercat about 10 years
    32-bit machines have hardware which can access well over 4GB of memory; any particular process will be limited to accessing less than 4GB "directly", but the decision not to support more than 4GB in 32-bit windows is as much a marketing decision as a technical one.
  • Dan
    Dan almost 6 years
    When you say "64-bit systems can process data more quickly", I don't get that. From what I understand, if you are in a 32-bit system, the processor will still load memory pages (into cache) with the full width of its data bus. So in essence, it should load 2x more data per operation. And since opcodes and data is smaller, 2x more fit in the same space. Considering that memory I/O is what can slow down an application, wouldn't 32-bit systems be a little faster?
  • Dan
    Dan almost 6 years
    When you say "64-bit systems can process data more quickly", I don't get that. From what I understand, if you are in a 32-bit system, the processor will still load memory pages (into cache) with the full width of its data bus. So in essence, it should load 2x more data per operation. And since opcodes and data is smaller, 2x more fit in the same space. Considering that memory I/O is what can slow down an application, wouldn't 32-bit systems be a little faster?
  • Gunther Piez
    Gunther Piez almost 6 years
    @Jeach. I did not say that. Did you mean to comment on another answer?
  • Dan
    Dan almost 6 years
    @hirschhornsalz: Yes, I pasted my comment on two answers... sorry!