The Prospects for 128 Bit Processors ( John Mashey SGI 1995)
Posted by Alien1Being 1 day ago
Comments
Comment by sillywalk 16 hours ago
Comment by A1kmm 1 day ago
But in practice, we've produced a lot more compute. The memory / CPU ratio has increased, but most growth has been from more CPUs (and generally not shared-memory ones, but ones with their own completely separate memory space).
IPv6 is 128 bit, so we do have 128 bit ways of addressing computers, but I'd say we're still a long way from a CPU needing to address that much memory as a common case. The speed of light limits how far away memory can be from the CPU for good performance, so short of some drastically new memory technology, it seems unlikely we'll need it soon for any ordinary type of computing device.
Comment by dist-epoch 1 day ago
But there was another thing - clusters of thousands/millions of machine instead of one big iron with all the memory.
Comment by jsLavaGoat 1 day ago
Comment by kelnos 1 day ago
Comment by flohofwoe 1 day ago
As for address width, we're not even close to get full 64 bit pointers from CPUs anyway, more like 48 or 52 bits.
Wide pointers (eg 128 bit general registers) would make sense for carrying capabilities for memory safety though I guess.
Comment by bArray 1 day ago
> Note that "minor" implementation issues like die space, routing, and gate delays, especially of 128-bit adders & shifters are non-trivial, so people aren't going to rush out and build 128-bitters for fun, just as people matched timing dates of their 64-bitters to their expected markets.
I think we're stuck with 64 bit for quite a while. The circuit size jump from 64 bit to 128 bit is significant. There's no fixed scalar or apples to apples comparison (that I'm aware of). Just for adders though, 2 bits requires 2 full adders, 4 bits requires 4 adders, 8 requires 8, etc.
Another way to look at this is that 16 bit gives addressable memory up to 65k, and quite a few programs had to deal with paging in architectures like the 8086/8088. 32 bits gave us up to 4GB addressable memory, and not it's now not uncommon that a program such as a web browser exceeds this. 64 bits would give us up to 18 exabytes of addressable memory. I'm not aware of any common programs breaking into the terabyte category (even in most research), let alone petabyte and then exabyte.
Even iterating over that many numbers becomes a large computational task. Just a quick test program:
// gcc -O3 count.c -o count
#include <stdint.h>
int main(){
uint64_t z = 0;
for(uint64_t i = 0; i < UINT64_MAX; i++) z += i;
return (int)(z % 2);
}
Using uint32_t and UINT32_MAX, it returns almost instantly. For uint64_t and UINT64_MAX you will be waiting a long time. 128 bit values? Even longer. Maybe many many cores could break that memory up, but then it makes sense to have a 64 bit system with some kind of ability to occasionally change page.Comment by kalleboo 1 day ago
Wouldn't that be the commercial LLMs? ChatGPT, Claude etc are estimated to be in the 2-10 TB range, and a large portion of the population of developed countries are using those apps commonly. Not on their own systems, but if we're in the 1995 academic perspective, multiuser systems are assumed.
I imagine the strongest reason we won't need 128-bit memory addressing is because horizontal scaling is easier. If OpenAI had needed a single addressing plane to cover all their users, 128-bit might be required. Similar to how the internet hobbles along fine with 32-bit addressing by just adding a layer of indirection to the internet with NAT.
I guess the other example of 128-bit addressing is ZFS. What are the biggest ZFS file systems? And who has more data? S3? Once you get bigger than 64-bit you want to scale out horizontally anyway and not just put it all into one flat addressable plane.
Comment by bArray 1 day ago
I think each part is generally treated like an individual large program - which makes sense because otherwise you have large parts of the model sitting there doing nothing. You want all of your silicon running hot, RAM sitting doing nothing for a period of time is a waste.
> If OpenAI had needed a single addressing plane to cover all their users, 128-bit might be required. Similar to how the internet hobbles along fine with 32-bit addressing by just adding a layer of indirection to the internet with NAT.
I think even then, 128 bit memory for OpenAI et al would be more of a headache than it is worth. Economically it's not worth building the 128 bit systems. The fact that servers and consumer CPUs have a lot of re-use within their designs reduces the costs for everybody. Sony for example stopped producing their 128 bit CPU [1], where it was mostly about pushing more data between CPUs and VPUs. Now we have specifications like PCIe where you can just adjust your pipe width to increase throughput.
> I guess the other example of 128-bit addressing is ZFS. What are the biggest ZFS file systems? And who has more data? S3? Once you get bigger than 64-bit you want to scale out horizontally anyway and not just put it all into one flat addressable plane.
Yeah exactly. The other thing to consider is that it doesn't matter how many bits wide you can go, the bottleneck is the smallest width. With ZFS, at some point you likely need to send it over a network, and I think fibre is up to 64 bits via parallel transceivers. If that points outwards, it'll probably be single bit by the time it gets to you.
Comment by torginus 1 day ago
I think on x86, we're still limited to 48 bits of address space on 64 bit systems, not sure if this has changed, but even 64 bits is so vast (16exabytes) , that you'd need a supercomputer with a single address space to fill it, but at least the latter is practically realizable.
Comment by jburgess777 23 hours ago
Comment by jdashg 17 hours ago
"128 bit values? Even longer." Yes, 2^64 times longer than u64, and 2^96 times longer than for u32! 2^96 just about 80e27. Age of the universe is ~13.8 billion (13.8e9) years, or ~435e15 seconds.
If we consider a more moderate 96-bit size, and I started at the very beginning of the universe, I will only have been able to run that program just over 25 times by now. That's all.
Comment by kev009 1 day ago
Comment by justincormack 1 day ago
Comment by Aardwolf 1 day ago
While probably niche and applications that need higher precision using their own custom types anyway, they'd allow cool stuff like easy to program fractals with much higher detail than now. But also, less precision loss in many applications.
Comment by flohofwoe 1 day ago
Comment by TheOtherHobbes 1 day ago
The issue is the utility of floats at different precisions. 128-bit floats have some benefits for high-end scientific applications, but the extra cost and complexity over 64-bit hardware would only make sense for specialised scientific supercomputing. So far it just hasn't been worth it.
Comment by silvestrov 1 day ago
If 64 bit isn't enough, then very quickly 128 is also not enough.
If precision is important then you will very often want systems that represent every number as an interval [a, b] meaning that the true value is between those 2 numbers. This makes you able to detect loss of precision due to e.g. d = a / (b - c) where b-c can result in a number close to zero which makes uncertainty grow. If you use this formula iteratively then precision is lost completely no matter how many bits there are in your floating point variables.
Comment by anttihaapala 1 day ago
Comment by fsh 1 day ago
Comment by AlotOfReading 19 hours ago
Comment by glimshe 1 day ago
Comment by miga 6 hours ago