Friday, 17 June 2016

Why don't we have 128 bit processors?

Let's start a little bit basic

I'm sure people have heard the terms 32bit or 64bit processors being thrown around. Especially recently in the mobile markets, Apple, Samsung and Snapdragon have hit the markets with their own 64 bit processors. As for your average computer, 64bit computers have been around for quite some time. 

Note: 64bit is sometimes referred to as x64 and in terms of instruction set, sometimes referred to as amd64 (first made by AMD). 

32bit is sometimes referred to as x32 and instruction set x86 (first made by Intel)

In this context, by memory, I'm talking about RAM

Getting data around:

Getting data around from one point to another is usually done by a bus. Like you'd expect a bus gets information (binary) from stop A, to stop B. This is useful for many reasons inside a computer and used for things like peripherals; your mouse, keyboard etc. In this case, will be looking at getting information to the processor. 

The line carries the signals from Stop A to Stop B
 Using the above diagram, we can see there is one line available for information to travel along. This is a very basic representation of a bus. 

We have increased the amount of data we can carry by 4 times now. 
By looking at the picture above, it's easy to understand that we now have 4 lines, 3 extra lines to carry data. In a computer, this is much more complex and today's computer standard have 64 lines to carry data and like the diagram above, they run in parallel. How many lines a bus has to carry data, is known as the bus width. The bus width is key in determining the processors performance. 

The Arithmetic and Logic Unit

Now we know about buses, we can go back to looking at processors. A fundamental part of today's processor design is the Arithmetic and Logic Unit, usually shortened to ALU. The ALU processes maths and logic, basically. Maths is processed in form of binary and logic is processed in forms of gates, built into the processor.  Nearly all operations that go on in a processor, use this unit. 

When we run a program, we store information in memory and the ALU has access to this, to get information like operands. Operands are just pieces are just two bit of information we use, do some a sum. The image below should help, if you're confused. 


The ALU will communicate with the memory by a bus. 

Let's take a blast into the past

32 bit processors

If you're using old hardware or mobile hardware, it's likely that you're using a 32 bit processor. Up until a few years ago, I was quite happy using my Pentium 4 processor. To explain why we don't have 128bit computers, it's easier to understand by looking at the developments we made and in the past and some of the reasons why we did. 

So, why the upgrade from 32 bit to 64 bit? 

Memory Addressing: 

Memory addressing allows computers to refer to an exact bit in the computers memory. 

32bit processors use a bus, with a width of 32. See the connection? A 32bit processor has a bus width of 32. We know the ALU will fetch operands from memory using a bus, so let's see this in a graphical representation. 

This is just a graphical representation in simplified form. This isn't necessarily what happens, but I've put it here to help

Now, we have to do some maths to understand why a bus width of 32 is actually a limitation for the amount of memory addresses we can access. with a 32 width bus. 

Remember computers work on binary with either a value of 1 or 0. Binary works on base/radix 2, which is where the 2 comes and we're seeing many memory addresses we can access using a bus width of 32. The calculation is below:
2^ 32 = 4,294,967,296 

Now, we need to covert this to GB as that's the common unit for measuring memory

1 GB = 1,073,741,274 bytes
so...
4,294,967,296  /  1,073,741,274  = 4.000002 GB

Conclusion: with a 32 width bus, we can only can address 4GB of Memory

Back in the days of 32bit processors, 4GB was more than capable. Especially when you consider that Windows XP would run on 512MB. By to days standards, we are seeing systems coming out with 16GB of RAM and all the way up to 128GB. The answer to being able to use more memory is 64bit computing. 


The upgrade to 64bit

If you haven't cottoned on to the pattern, 64bit processors use 64 bit buses. Now that we understand the basic principles and the calculation, we can run the same calculations again to see the outcome of how many memory addresses we can reference:

2 ^ 64 = 18446744073709551616

Again, let's convert that to GB for context

1 GB = 1,073,741,274 bytes
so...
18446744073709551616 /  1,073,741,274  = 18446744073.709553 GB

Conclusion: the maximum addresses a 64 width bus can handle is a lot

Lots of today's modern processors wouldn't even be able to support the full amount of RAM that 64bits has to offer and often gets limited. If you're interested in how much your processor can handle, you should look up the specifications of your motherboard and processor online. 


Putting this into context: 

There is no system that even supports that much RAM. Why make a system unnecessarily at so much extra cost, with no benefit for memory addressing. A 128bit processor would be able to handle so much memory that even I can't fully comprehend the maths. We're talking about 
1.8446744e x 10 ^19 GB of memory. 


More processing power? 

When we talk the WORD length of a processor - we talk about how many numbers it can processes at any one time. Let's look at our basic maths equation again. 


When the computer gets an operand, it loads it into something called a register. This is how the processor stores it. On a 64bit processor the WORD length is 64 bits and on a 32bit processor it's 32 bits. Therefore there needs to be registers in the processor with a 64 bit size. 

If we need to use a number that can't fit into a 64bit register, then the processor in laymens terms, will just 'split' it so it will fit in the register. Yes... processing it as a whole bit of data would be faster. 

So, it is faster! 

Yes, the ALU in the processor would process larger numbers faster, but there are very few situations where this would actually be useful. Actually, in my degree, Ethical Hacking and Network Security processing numbers faster would help us do things like brute force attacks faster. However in common computing it doesn't. Like I mentioned at the beginning, the mobile market is only just reaching 64bit. 

It comes at too much of a cost

Upgrading our systems to 128bit would involve a lot of work. We'd need to increase bus widths, have bigger registers and it's hard to justify it when you don't need it. All of this requires redesign, research and development as well as extra silicon. 

Why don't we have 128bit processors

  • There's no need for the extra memory addressing
  • We'd have to increase the bus widths and processor registers, which would be expensive
  • The added processing advantage isn't that big of a deal by today's standard
I hope this answered the question! :) 


No comments:

Post a Comment