
What most people don’t realise is that 128-bit processors already exist. And they’ve existed for decades, too. So do 256-bit and 512-bit processors. Problem is that they don’t really have a generic-purpose role in modern computers as it’s like using a large pneumatic hammer to put a small nail in your wall to hang a picture. It’s overkill.
Except in graphics cards as the Nvidia GTX 280, AMD Radeon R9 290 and various Tesla products use processors with a 512-bit memory bus. So, the hardware already exists and Intel also introduced some 512-bit instructions in their x86 instruction set. So the hardware that we have today should even be good enough to go all the way to 512 bits.
So why no 128-bits operating systems? Well, it’s mostly overkill for generic use. That’s because the number of bits applies to the sending and receiving of data to other hardware components. Every processor has a number of pins and every clock cycle, it can send or receive one single bit per pin. An 8-bit processor can send or receive a single byte per clock cycle. A 64-bit processor can send 8 bytes all at once.
Which is practical if you’re sending large numbers but to make good use of this you would need to pack various data together or you would generally have a lot of 0-bits sent. And sending packed data means the other side needs to unpack it again. (Packed means that with 64-bit you can send 8 bytes of different values combined or 4 Words or 2 DWord values per clock cycle.)
It is also used for memory addresses and while 32-bits would limit you to 4 gigabytes of memory that is directly addressable, 64-bit processors can go to 18 Exabytes. That’s a lot of memory! And with 128-bits it gets even way more than that.
So the main limitation is basically the memory size, as a 64-bit system still has more than enough for everyone. It is also problematic that most computers don’t calculate with very large numbers. For graphics it can be important to have a high number of bits as the graphical CPU needs to make very complex calculations and it might also be practical for encryption purposes. But more bits generally don’t make much improvements anymore.
Plus, more bits also means more pins. After all, data needs to be sent back and forth. But there’s barely any performance gain already between 32-bit and 64-bit systems as long as you don’t need a lot of memory. The only reason why modern operating systems became 64-bit was because we needed more than 4 GB of RAM.
So, how about 128-bit operating systems? Well, in theory they already exist as you’d basically have to recompile any existing operating system for the bigger number of bits. Generally means that pointers will go from 64-bit to 128 bit.
As most operating systems are written in Standard C, that should not be a problem unless some idiot hardcoded the pointer size in the code. (Or other values.) With some changes to the additional Assembly code it should not be a big challenge to convert e.g. FreeBSD or Linux to 128-bit or even more bits.
It’s just that there’s not much to gain from it…
Let me expand my answer a bit as many people get confused about the number of bits thing. They might even become more confused when I tell them that their 64-bit computer generally uses 8-bit instructions with some 16-bit instructions if the first instruction is a special opcode. (See X86 Opcode and Instruction Reference 1.12) Processors generally don’t need more than a few hundred instructions anyways…
It is also interesting to know that the number of bits of a system is basically determined by the data bus inside the hardware. For a 64-bit processor it would be 64-bits in size. Graphics cards have GPUs that have an internal data bus up to 512-bits depending on brand and type.
That’s because they need to send huge amounts of data back and forth. It also means that the system must be able to handle the data size that is sent over the data bus so a 128-bit processor with an 128-bit data bus would also have 128-bit registers.
Then there’s the control bus which is used to e.g. communicate with hardware in a PCI-E slot. These slots have various sizes with different numbers of connectors, varying from 36 connectors to 164 connectors. As several connectors are used for ground and voltage, not all connectors would be used to send and receive data.
Even more interesting, data is sent to the PCI-E device in serial mode, bit after bit. The x1, x4, x8 and x16 indicator of PCI-E cards actually define the number of serial lines to send and receive data between the hardware and the PCI-E device.
The cache bus is also used between the processor and the cache inside the processor but is generally not that interesting.
More interesting is the address bus as the 16-bit MS-DOS operating system should have been limited to 65536 bytes of memory. Yet Intel used a 20-bit address bus (later 24-, 28 and finally 32-bit) so addresses would be 20 bits in a 16-bit environment. This was handled by using a segment and offset to reach every address within the address space, where the segment would be shifted 4 bits to the left before adding it to the offset, resulting in 20 bits.
Which is fun because I see a lot of people mentioning that a 64-bit processor would be able to address 264 bytes of memory. Too bad that Intel “only” uses a 40-bit address bus so forget that! Most processors won’t go higher than 1 TiB of RAM as the processor just can’t address larger numbers.
This makes people very confused about the meaning of bits, while it is all related to the communication. Processors can send data serial, bit by bit, which is a bit slow as every bit needs its own clock cycle. Processors can also send bits in parallel mode, where they use multiple pins to send a value. That way, a 64-bit value could be sent in one clock cycle if the bus size is 64-bit.
So, would a 128-bit operating system be possible? Well, if the CPU can handle a data bus of 128 bits and has 128-bit registers then sure. It could still have a 40-bit address bus, though. All you would need is a compiler to recompile for the 128-bit hardware using the additional 128-bit instructions that the processor would have.
Most likely, it wouldn’t even need more instructions, but just a separate code indicating that a 128-bit register is used instead of a 64-bit register. But the number of registers is generally limited to a very low number also.
Not sure if we’ll ever see more than 256 possible registers so the register ID would also fit in a single byte. But it might be slightly challenging if you want to add a hardcoded value to a 128-bit register. Then the whole opcode would be a bit long. But most computer instructions, even in 64-bit systems, can be anywhere from 1 to 4 bytes.
Yeah, and that will make you confused again. But the number of bits all relate to how much data needs to be sent. If data can be sent in serial mode then 1 bit would be enough. Your PCI-E x1 card actually communicates like this! So do USB devices. Sometimes, you need to send more data so the number of bits increase.
For instructions, you have plenty of room with 16 bits and generally 8 bits should be enough already. For addresses there’s 40 bits, which is enough to reach up to 1 TiB in memory. And for graphics 512 bits might not even be enough for the most high-end uses.
Still, when you consider the many bitcoin miners in existence who all use GPUs for calculation purposes (because GPUs have lots of cores and kick-ass data buses) there is some form of operating system that can be used for high-bit systems, but it’s generally custom-made. It’s not practical to create a bitcoin miner on a GPU with a 512-bit data bus and still limit your code to 32-bit or 64-bit. But is it an operating system?
