8

I played with 8-bit machines (C64), I used 16-bit machines (Win 3.1), I enjoyed flat 32-bit address space (Linux).

Every time as a user (which was also means being a developer for fun or profit) I felt the need for more bits and welcomed the next wider bit architecture. Accessing to bigger memory space got easier, graphics got better and sound was a bliss after 8-bit.

However when marketing drums started to kick in for 64-bit some years ago I thought, "ok, this is Internet age, they can use this kind of power to do more calculations easier and commodity hardware manufacturers want to spread their portfolio for this kind of market".

Professionally I became a "system programmer" working for mobile devices which some what means being an "embedded programmer" as well. Working mostly on 32-bit from the start ARM architecture based products, it was a while I forgot about different architectures other than being 32-bit.

Also when ARM announced a new 64-bit architecture towards end of 2011, I read it as ARM wants to go into server market, increasing their portfolio. Which makes sense.

Now with new iPhone 5S claiming to be the first 64-bit processor ever used on a smartphone, thoughts became a little bit unsettled in my head again. Mobile devices, being the ultimate personal devices are becoming 64-bit.

So I wonder, is there something I'm missing? What does being 64-bit offers to the users including programmers?

12
  • 1
    Hmm may be it can be considered as a duplicate, but I would like to see my question as a broader one about visible/senseable features 64-bit architectures, rather than iPhone 5S's 64-bit promotion. And please see my answer there. Commented Sep 13, 2013 at 9:05
  • 1
    it's broader, but again, for desktop PCs and servers, the benefits of x64 are obvious. Commented Sep 13, 2013 at 9:07
  • 3
    @MainMa obvious how for end users? You can get more than 4GB of memory on 32-bit architectures. Heard of PAE? Commented Sep 13, 2013 at 9:20
  • 3
    PAE is an ugly kludge (i don't even call it a hack). mmap()'ing big files is a great way to do databases, no way to do it with PAE Commented Sep 13, 2013 at 13:56
  • 1
    Everyone needs to distinguish between address width from data processing width. On state-of-the-art servers, such as the 60-core Xeon Phi, address width remain at 64-bit, but data processing width has gone to 512-bits. Mobile processors might take a similar turn, with data-processing width expected to increase to take advantage of silicon and energy efficiency improves. Commented Sep 13, 2013 at 19:37

6 Answers 6

12

It's important to distinguish between 64-bit architectures in general and the 64-bit architectures we commonly see. In an abstract sense, a 64-bit architecture just gives you wider registers (bigger numbers and more addressable memory). Looking at concrete examples of architectures, you see that the 32 to 64-bit jump was used as an opportunity to make significant, incompatible, improvements in processor design.

The first one that comes to mind, looking at both x86_64 and ARMv8, you see a significant increase in the number of registers available. Both architectures have doubled the number of general-purpose registers on the processor. This greatly increases the opportunities for optimization of software. Similarly, they have improved vector processing capabilities. Moving to a new, incompatible, architecture gives designers to opportunity to remove little used features that were dragged along through the years for the sake of backwards compatibility.

9

One major benefit of having a huge address space is that you can represent all storage simply as an address. For example, my laptop has 16 GiByte of RAM and 1 TiByte HDD. With 64 bit addresses, you can easily address all that storage using a unified API. 32 bit wouldn't be enough. I could even individually address all of my USB key fobs, SD cards, microSD cards, external HDDs, NAS, DropBox, Google Drive etc.

Even my phone has 1 GiByte RAM, 4 GiByte internal flash and a 32 GiByte microSD card.

Unfortunately, no operating system does this yet (with the exception of OS/400, which has been doing exactly this since 1989, although it actually has 128 bit addressing), but that would be one benefit.

Even without such futuristic changes, there is a rather simple reason: at the rate RAM capacity in smartphones is growing, we're going to hit the "4 GiByte wall" real soon now.

12
  • 3
    There is no 4GB wall. You'll get more than 4GB on 32-bit mobiles. It is called "Large Physical Address Extension architecture" on ARM. See infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0438c/… Commented Sep 13, 2013 at 9:22
  • exactly, with LPAE there is "1TB RAM wall" :-P Commented Sep 13, 2013 at 10:42
  • 6
    @vartec The 4GiB wall is real and not misleading LPAE is just a workaround. Commented Sep 13, 2013 at 10:54
  • 1
    PAE won't let a single process more than 4GB. it doesn't allow you to mmap() a file bigger than 4GB, much less a whole device. Commented Sep 13, 2013 at 13:54
  • 1
    A file system is not RAM, and I'm not clear why one would want to address it as RAM. The only way to write a single byte on a flash drive is to read a sector into a buffer, modify the buffer, and then write it back. Even of one's OS was willing to do that, performance would be positively dreadful. Further, what would a "pointer" to a block of a file mean if the file were truncated or deleted? Commented May 27, 2014 at 22:56
2

The fundamental advantage is larger register size ( and ALU capability ).

Basially, I can now multiply 10 trillion million billion by 7 in one step. Before with 32 bit I had to split the operands into two pieces that could fit in 32 bit registers and use off die memory to store intermediate results.

This doesn't seem like a big deal, until you look at how many time code written for a 32 bit processor has to split a math operand or split a four word hash key ( or high precision floating point ) or something into two pieces to sort or branch on it.

0

Another benefit that hasn't been mentioned yet: more address space for the kernel.

32 bit Windows and Linux lived in the upper 1 GB of a 32 bit system's 4 GB address space, leaving the lower 3 GB for userland. There was a trade-off between:

  1. Allocating more room for the kernel (e.g. to map larger IO devices, like graphic's cards), at the expense of userspace
  2. Allocating more room for the userspace, at the expensive of the kernel
  3. Giving nearly the full 4 GB to both, and switching the page tables (twice) on every syscall.

With a 64 bit address space, you can have both kernel and userspace segments be huge, without needing to swap page tables.

https://stackoverflow.com/q/1658757/3141234

0

You get much more than 2GB address space. And you get 64 bit arithmetic which has the effect that you can get correct results in a much larger range without extreme care.

In addition, the 64 bit architectures usually have more registers which give a huge advantage. 64 bit multiplication and 128 bit operations are also much faster.

In the long term, 32 bit has been removed on MacOs / iOS which removed some extra complicated instructions and allowed higher clock speed with the same technology. Also, if you ran one 32 bit app and one 64 bit app, different versions of large library had to be loaded into RAM. So it is more efficient if everything has the same bitness, which was another reason to remove 32 bit completely.

-2

The improvement of the 64-bit architecture was mostly made to the computer organization and computer architecture. You get wider bus widths in your computer organization with a 64-bit architecture, the bus widths include address buses and data buses. With the wider bus widths, an engineer is able to take advantage of faster data processing speeds because instructions are able to be transferred and executed by the CPU at much higher speeds.

The improvement in register count is also notable. Processors, CPUs, based on a 64-bit architecture do provide more registers over 32-bit processors. This brings with it more capabilities for the programmer. CPU manufacturers' are able to then release more modern features and not be confined to backwards compatibility for future processors.

Of course 64-bit architectures do mean there is a higher learning curve in order to become an expert on certain chipsets. However, with the added learning curve, you get more capabilities.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.