Hacker News new | ask | show | jobs
by Clamchop 402 days ago
The article is a touch confusing, but I'm pretty sure I agree that they meant the 640 kilobyte limit of the OG PC architecture. The Pentium II dates from 1997, the NV1 to 1995, and the new PCI bus with its whopping 32-bits to 1992. 640MiB would have been a prodigious amount of memory at the time of launch.

I don't think any mathematical relationship between the address bus and either 640KiB or 640MiB was intended, it was just the anchor point for how huge 4GiB of addressing was viewed at the time.

The article then goes on to say that the NV1 used 23 bits of the address bus but adds in the next paragraph that 16 bits remained to use for data. That math isn't working out for me.

Actually, I'm really struggling to understand how this scheme would work at all. It strongly implies open addressing with no other MMIO devices to conflict with, but that's just not how I thought PCI worked. Maybe someone who knows more can explain it to me.

2 comments

My reading was 640MiB was seen as some extraordinary upper bound that was unlikely to be breached in 1995 leaving lot of bits of the address bus for NV1 for quite some time. The 640 KiB seems definitely not a limit as even IBM PC/AT released in 1984! had an upper limit of 16MiB. So, as NV1's designer you could not assume 640KiB was some sort of upper bound on PC's of 1995 when designing the scheme. As to why 640MiB and not something else, I believe Windows 95 could address 2GB in theory but would start becoming unstable around 512MiB so maybe he chose 640MiB.

The whole thing a bit ironic since Bill Gates took great pains to say he never said 640KiB is all you need (or something like that). Given my example of the IBM PC/AT it definitely was not common understanding of upper limits in 1995 apocryphal or not.

To make this easy, there was no overlap between when 640kb was common on PCs and when nVidia existed as a company.
It wasn't that simple: in practice the arrival of the 286 in 1984 was very much only the beginning of the PC's escape from the 640KiB/1MiB limit. It wasn't until some time after the promulgation of the DOS Protected Mode Interface in 1989 that it became routine for PC applications to have unrestricted, straightforward access to all of RAM. (I'm very much relying on resources like https://news.ycombinator.com/item?id=17274672 for the details here: I was never a serious DOS user or a DOS developer.) Still it would definitely be overstating things to say that "PC memory maxed out at 640 kilobytes" in 1993 or subsequently. It does seem possible that the author did mean to say "640 kilobytes", but really just as a snarky jab at the PC platform: PC software really was still relying on DOS extenders to make use of "extended memory" in 1993, even if they were by then doing a solid job at it.

Another possibility: apparently https://www.os2museum.com/wp/windows-nt-3-1-and-os2-memory-d... all x86 machines released before maybe 1993 are restricted to 64MiB, even under Windows NT and other fully 32-bit OSes, because the BIOS simply can't report having any more RAM than that. By early 1993 the first "service" allowing the reporting of more than 64MiB of system RAM (up to the full 4GiB supported by x86) was starting to appear on some BIOSes.

Apparently the effective memory limit for Windows 3.1 is 256MiB https://web.archive.org/web/20150518111050/https://support.m... while for Windows 95 it's approximately 480MiB https://devblogs.microsoft.com/oldnewthing/20030814-00/?p=42... . So it's plausible that Rosenthal had one of those in mind, even if 640MiB is not exactly the right number (and even if you'd actually hit BIOS or wallet limitations first).

Yeah, I dunno. Besides being a lot for 1995, the address space stuff, if taken at face value, means you'd only have to knick 3 bits off before starting to eat into it. Shrug
By 1995, PCI had vanquished VL-Bus and a cheap entry PC would have had a PCI bus and a 486 CPU at 66 MHz or 100 MHz with 8 MB of RAM, while a decent PC would have had a Pentium with 16 MB of RAM.

The days of 640 kB memory were long forgotten.

Even in 1990, a decent PC would have had a 386 CPU with 4 MB of RAM, which would have been used as extended memory by the MS-DOS programs, while the cheapest computers would have been PC/XT clones with a NEC V20 CPU and with 2 MB of expanded memory, so still well beyond the 640 kB.