Bill Gates: “I never said '640K should be enough for anybody'” (1996)
groups.google.com
groups.google.com
The 640K limitation derives from the 1MB address space of the IBM PC, and as the name implies, IBM did the hardware design. They did it around a particular Intel chip, which had a 1MB address space. IBM could've put in hardware support for bank switching (as some EMS/XMS add-in cards later did), they could've used a chip with more than 20 address lines, they could've done a lot of things.
But they didn't. IBM wasn't designing a mainframe-killer, they were designing a personal computer. It was competing with 16k and 64k 8-bit machines, and the first IBM PCs shipped with 64k and later 128k of RAM. Using the top 384K for peripherals and allocating 640K for programs must've seemed insanely generous at the time. But whoever made that decision, it was on the hardware side, not anyone at Microsoft.
The hardware supported more than 1MB, as later CPUs proved. However, MS-DOS didn't really support it, as EMS/XMS proved:
https://www.filfre.net/2017/04/the-640-k-barrier/
I'd say that you've got it backwards, in my opinion. And in the opinion of that fine article I linked.
That excuse is valid for 8086, but it's no longer valid for the 386.
Even when expanded memory was an option, loading a bank switching memory extender to work around the cpu’s Address range limitations left less base memory left for non-EMM aware apps to run in. Many times I remember discussing with users the pros and cons of different memory managers and aporoaches, but most of the time in that era, not using them at all and using bare bones MS-DOS was actually the best choice. Some users would have two boot disks. One without EMM386 to run software that wasn’t expanded/extended memory aware to maximise the memory available to them, and another with EMM386 to run one or two apps that were.
The 80286 CPUs did support up to 16 MB of RAM, but they needed to be switched into protected mode to be able to use it. The problem was, that there was no way to switch back, except reset. That might be the reason, why MS DOS never supported this mode.
With 80386, it was possible to run in protected mode AND run real mode binaries in VM86 mode, which is exactly what Windows 3.x used.
The 80286 reset thing wasn't a full PC reset, but a CPU reset.
True
> The 80286 reset thing wasn't a full PC reset, but a CPU reset.
That required an extra hardware and BIOS support. The CPU had to be reset externally, and after jumping to FFFF:0000, the BIOS had to recognize that this is a CPU reset, not re-initialize the hardware and return execution to where it came from.
Bill Gates' famous comment isn't really a decision though. As it's usually cited it's just an opinion - '640Kb should be enough for anyone' means "I don't think any programs will need more than that!". If someone at IBM decided that there should be 640Kb of available RAM for programs it's believable that Bill might have simply been agreeing with them.
The main thing that's annoying about the quote is that it's trotted out as an example of how Bill was wrong, as if being wrong is something terrible that he should be ashamed of decades later. That's nonsense. Being wrong is fine so long as you change your mind when you understand that you are wrong.
“8 core CPUs or 32GB of RAM are more than enough for gaming” (c) 2018
Facts change and opinions change with them. Wonder if Moore’s law will get the same treatment now.
Even using the 8088 vs. the 8086 was a cost-saving move. A premium IBM PC might well have simply flopped rather than accelerating the industry.
I think the bigger compelling piece for x86 was its continuity with the top-selling 8080/Z80 CP/M machines that were the effective standard at the time. IBM offered both PC-DOS (cheap) and CP/M (expensive), and wasn't sure which was going to win out. And PC-DOS was basically a kind of clone of CP/M, down to the API call names.
David J. Bradley (https://en.wikipedia.org/wiki/David_Bradley_(engineer)) worked on both the Datamaster and the PC projects, and explained the reasoning behind the choice of the 8088 for the latter in an article in the September 1990 issue of Byte (https://archive.org/stream/byte-magazine-1990-09/1990_09_BYT...):
There were a number of reasons why we chose the Intel 8088 as the IBM PC's central processor.
1. The 64K-byte address limit had to be overcome. This requirement meant that we had to use a 16-bit microprocessor.
2. The processor and its peripherals had to be available immediately. There was no time for new LSI chip development, and manufacturing lead times meant that quantities had to be available right away.
3. We couldn't afford a long learning period; we had to use technology we were familiar with. And we needed a rich set of support chips -- we wanted a system with a DMA controller, an interrupt controller, timers, and parallel ports.
4. There had to be both an operating system and applications software available for the processor.
Points 1 and 3 both reference lessons learned from the Datamaster project -- #1 is about the desire for the PC to overcome a limitation the Datamaster's 8-bit CPU had imposed on it, and #3 refers to the fact that the 8086 and 8088 were close cousins of the 8085, so the IBMers wouldn't have to learn a whole new architecture from scratch.
It's not hard to imagine the decision coming down to Bradley (or someone else on the Entry Systems Division team) calling someone they knew at Intel and saying "we need a 16-bit processor as similar to the 8085 as possible that you can deliver in volume tomorrow. Whatcha got?"
"Next came the 8088, the processor for the first IBM PC. Even though IBM engineers at the time wanted to use the Motorola 68000 in the PC, the company already had the rights to produce the 8086 line (by trading rights to Intel for its bubble memory)"
https://www.ibm.com/developerworks/library/pa-microhist/inde...
That's what it always felt like as an Amiga user. Not before DOOM there was much I liked on the PC.
Release Amiga 1000: July '85 Release DOOM: December '94
And once EGA came out, it quickly started to surpass the 8 bits as a gaming platform too.
What was being described is going to programming from a RISC-like design processor to a CISC-like design processor, and how they felt constrained after doing so. It likely does feel more constraining (I don't really remember how I felt about it back when I did it, but I also went the other direction, and only in the context of classwork), but in the end, most people are programming a level removed from that anyways.
There used to be quite a lot of arguments about what design was better (IMO mostly fueled by Macs running a RISC processor and Windows running a CISC processor, at least until Apple switched to x86). I find it slightly comical that both designs ended up in a fairly similar place though (with RISC processors adding extra instructions, and CISC processors adding more registers, even if mostly just logical registers).
The Classic Mac was as well, but PowerPC based macs were RISC, which is what I was recalling in my followup.
68000 has it right!
http://www.old-computers.com/museum/computer.asp?st=1&c=623
But 1981 was just too early for 68000 non workstation machines since the early chips were slow and expensive. The 1983 Lisa was limited to 4MHz, for example, in contrast to the 1984 Macintosh's 8MHz. I remember the price of the chips dropping from over $100 to less than $20 in just one year back then.
The 8086 was thought too powerful and would compete against existing IBM products, so the 8088 was chosen. Other changes to expansion and bus architecture were on the same basis.
I spent over a decade completely failing to understand how it could succeed against Amiga.
Yeah, "640k should be enough for anybody (specifically in the context of a conversation about current hardware of software and not necessarily in perpetuity)"
In 10 years, that might be a hilariously small number, but for right now, it's way more than the extreme vast majority will need.
I can already imagine vr-style videos pushing 8k with huge dynamic range and very high framerates becoming more common if the technology continues to go that direction, and suddenly a full video export in the highest quality becomes a magnitude (or 2!) jump larger.
As videogames become higher resolutions, they require higher res textures, and less compressed audio, and more detailed models. Not just like 50% more detailed, but 10x more detailed.
Sure, we are beyond the point now where it's pretty easy for the average person to store all information they ever could need on spinning disks for pretty cheap, but once that next "thing" comes out that requires a magnitude more, we are right back to looking silly for thinking 5tb should be enough for anyone!
No, even that has a limit. We're getting to the point where humans will be unable to perceive additional improvements in resolution. It's no different from audio. CDs are unchanged from when they were introduced 36 years ago because humans cannot hear the difference between a CD and "higher-qualitY" audio. There is a point where that will happen for video: when you can fill the entire field of view of the human eye with video the same resolution as your fovea at ~100FPS, that's it. There is no more room for improvement.
Not all improvements come with only resolution as the change. It's entirely possible (if somewhat less feasible, based on what I think) that we might start encoding movies as full 3D landscapes, with some preset positions for each scene (e.g. where the director wants the"camera"), but that people could roam around to view it from different aspects at their discretion. This is less or more interesting in certain performances, but imagine some great war film, and you can flit around to see the different people storming the beach or crossing no-man's land. What if you decide to make your own run and see if you would have made it or not?
3D headsets are just now breaking into the mainstream. That's a major shift in medium if taken advantage of, and it could easily create use cases where the media is many multiples of it's current size.
There's a lot of room for improvement in VR though. VR is computationally expensive because you have to calculate 2 sets of high resolution imagery. Not to mention that immersiveness in VR comes at a resolution cost. We're nowhere near 100FPS, high resolution 4k VR imagery.
I mostly agree with you. I wrote a paper during my time at Bose arguing against the rise of 4k which in retrospect I think has only been halfway true so far -- we've known for many years that consumers would not experience a significant improvement upgrading their televisions, but the 4k market is burgeoning anyways. We also didn't anticipate back then how important 4k would be to gaming and VR.
Not to mention that the lack of penetration of higher quality music in the market is mostly a cost problem rather than a storage problem. The average consumer cannot afford the sound setup necessary to truly utilize these higher quality codecs, whereas a 4k television panel can be had for under 500 now a days (!!!!). Netflix offers 4k streaming at 10/month, whereas Tidal's lossless streaming costs 20/month. It is shockingly inexpensive to be into high quality images.
But most of it is 4K works because of the hype. Why buy last year's model?
4K is a resolution for 40 degrees wide and 23 degrees high. That's about 1/45th of a sphere, or about 2% of the total you'd need for a fully immersive 360 degree picture.
From what I've seen, 120fps is a clear improvement over 60fps, and that's just on a normal flat screen.
So even with a fixed focus single image you're looking at needing 400 megapixels. At 30 bits per pixel that's 12GBit per frame, or 1.5TBit/second.
You've then got technology that records depth, and allows people to chose their own depth of field. And why stop at visible resolution - we don't with pictures, because we can zoom in. Imagine a choice of say 100 360 degree cameras around a football stadium that allows you to zoom to a desired level, you could be up Petabit emerging from the stadium.
i would be much more worried about color accuracy than resolution with a $500 tv. could be i'm wrong due to economies of scale from large amount of consumers demanding "the 4K", but my guess is that a $500 1080p tv could look significantly better than 4K at the same price.
Then multiply it by 3 orders of magnitude to bring in temporal detail.
And you're still after a format that records the depth of each pixel, allowing recreation of a true 3d environment.
The numbers would be astronomical. Lets say a single 360 degree picture, using 30 bits per pixel (R,G,B,Depth at 10 bits each), allowing 100x zoom, so 40gpixels, 50 bits per pixel, that's 200GBytes per image.
One image every metre, or 1600 every mile, 4 million miles of roads in the U.S. alone. That's a billion terrabytes.
1Exabyte is 10% of what Randall Munroe estimated google had in 2013. Not that much. Wow.
Fidelity has diminishing returns though.
What more RAM does is allow programmers to "be lazy": slap libraries together and use powerful but resource-hungry abstractions rather than hand-tune details.
We have a similar pattern today with JavaScript and CSS layering in web pages, making them slow and bloated.
It's increasing hardware usage in order to reduce greyware (human programmer) usage. Whether such is "smart" or economical makes for an interesting debate. It appears consumers prefer cheaper software over cheaper hardware for some reason. Software developers who are fastidious over hardware resource usage (RAM & CPU) are not sufficiently rewarded. The group that slaps existing API's together to get their product out quick and cheap seem to come out ahead.
I remember how MS-Office for DOS shipped on 7 floppy disks. I kept wondering why people tolerate loading 7 floppies. It's because the alternatives of the time were harder to use or cost more.
You must be remembering something else because there were no DOS versions of Office.
Of course that's wrong, and most of the time it is used by people who don't understand the trade offs made in incremental advancements in tech standards.
Entire businesses have been run on systems that have 512k of RAM.
The IBM Series 1 had up to 128k: it was designed by Don Estridge, more famously known as the father of the PC...
Hardware had removed the 640K memory limit - but Windows stuck with it for years afterward. Not for any technical reason, but because they dominated the market, and neither needed to change nor wanted to change - no matter how hard that made things for developers.
I worked with Microsoft guys, and they were very blunt about not wanting to change their working OS code if they didn't need to - so Bill held back the entire industry for years.
It's easy to say they put back "the industry" for years, if we define the industry as chip design, but I think it's just as easy to make a case that they greatly expanded the industry over this time by giving people a platform and OS combo that could continue to run their software from a few years back even after upgrading every component. In my opinion, consumer confidence likely greatly outweighed the other benefits, as it allowed economies of scale to really be reached, and spurred the whole industry forward from the massive demand.
If he thought he couldn't make any money implementing it, that means he didn't think there was a market for it that would return the investment. I think it's entirely possible he created that market by driving adoption until the point where that feature it could be supported.
The question can essentially be flipped, and you can ask why Intel didn't create the hardware with those features initially. The answer is likely that it would have taken more research (if it didn't already exist in much more expensive processors) and would have driven the cost of the processors to the point of not being worthwhile. Is Intel then responsible for setting the industry back by years, because they didn't market a processor they likely could if they took longer and/or charged more?
> The Intel guys offered not only to fully fund the development, but to fully staff it and pay Microsoft for all the bother.
In a world where increasing software complexity or having outsiders contribute a sizable or complex piece of code to your private codebase has no cost in future development complexity or runtime, this might have been purely an upside. In the real world, there's there are other considerations, which is likely why it was rejected. Otherwise, why would anyone turn down free development time? Are we to assume Gates was so capricious as to turn down something this beneficial, or that he had resons we haven't adequately covered yet?
> If someone wants to philosophically believe in rational markets and insightful and honest executives, well, that is a choice they can make.
I don't believe in entirely rational markets and honest and insightful executives, but I do believe in people following what they think that market will do, and in executives that turn down things they think are a bad idea, right or wrong. I'm willing to bet Gates had a lot more information than we do when making this decision, and had his reasons. I think it's possible that he could have been right.
1: https://en.wikipedia.org/wiki/Protected_mode#Operating_syste...
So, here's a thought for ya: MS Excel from back then won't run on anymore, 16-bit apps aren't recognized by modern Windows, etc.
But a .XLS created back then sure will. And lots of business logic is codified in Excel spreadsheets.
I posit that .XLS is a more stable platform than Windows itself.
They certainly will run, even if only through emulation or API conversion. In fact, that's probably what modern MS Excel does to old XLS docs, which is convert them to an in memory format that probably more closely resembles The Office Open XML format than the Excel Binary File Format (the extension may or may not change, but the format did).
> I posit that .XLS is a more stable platform than Windows itself.
Well, ignoring that we've drifted quite far from hardware, I would say that Excel (which would be the actual platform, not the container format) is not a general purpose computing platform (at least not a feasible one), not something that necessarily defined what architecture is being used, except tangentially.
Here's a thought for you: it actually does run on Windows 10.
In particular, Excel 3 for Windows 3 installs and runs on Windows 10 out of the box. Here's a screenshot on my system[1]
Again, let me emphasize: this is software with a GUI written in 1991 for an OS released in 1990 which just works on Windows 10 in 2018 -- no VM required.
This is the second major release of MSOffice for the PC. The previous release, Excel 2, was running under Windows 2.0, which nobody wants to remember, and which is indeed not supported.
On the other hand, its installer - a DOS program - runs fine because DOS programs still run in windows 10.
The compatibility breaks on 64-bit releases of Windows. But all the major versions are available in 32-bit, which you can run on any hardware you can put the 64-bit version on.
The 8086 was thought too powerful and would compete against existing IBM products, so the 8088 was chosen. Other changes to expansion and bus architecture were on the same basis.
The PC was not supposed to be the benchmark design on which the entire future of computing was built. If you were looking for one of those better off starting with an Amiga. :)
While he didn't use the exact words of the title quote, there are multiple sources which indicate he was indeed surprised at how fast applications grew in memory requirements/usage. Thus, I rate it as "partly true".
At lot of it was probably caused by the switch from hand-crafted low-level code to libraries and compilers, which usually take up more RAM for comparable features. While such tools sometimes can produce compact code, it's often not considered economical by publishers.
source: https://www.youtube.com/watch?v=oxY89F5oU-I
For both Linus and Bill - anything they said you have to remember the context. 640K was - "YUUGE" (always say it right) For Linus releasing linux at the time a 64Mb task was "YUUGE" (again just make sure you always say it right)
But 64 bits should be enough for anybody.
For global or large system level addressing 128 to 256-bits should be enough.
(note: you may want local 128-bit virtual addressing for other reasons than accessing more memory)
You don't want to share the same compact memory allocator with the malloc(3) from the other side of the galaxy, or even different city.
Yes, that's why IPv6 is as big as it is. We could fit pretty comfortably into 64 bits for a long time, really, if you assume we fairly tightly pack everybody in. 128 bits is really to give us some routing headroom, not because anyone seriously thinks we're going to use IPv6 on 2^128 distinct targets any time soon. (By the time we have a "galactic internet" it sure won't be using IPv6, not because it's bad or wrong but just because we're going to need something designed to handle the very different challenges involved.)
So yes, highly likely for a little while..
> I expect that to change before upgrading to 128-bit pointers.
Or the joke was wasted on me. Did you mean it will never be feasible?
I think the value of a larger pointer (immediately) would be tags, not memory density, just as it was with 64-bit systems -- my old Alpha only had 256mb of ram, and maxed out at 512mb IIRC.
Wow. What kinds of workstation tasks need this kind of memory, if I may ask?
It is popular to buy a bunch of servers (or worse, host them on AWS), a bunch of sysadmins, and so on, so you can support a couple smart analysts with some complex hadoop java streaming somethingrather, but it is much cheaper to just buy them beefy workstations and use awk: A HP Z8 G4 with 1.5TB ram is under £30k, and it's hard to get a sysadmin that has any brains for that, let alone two and servers...
??? I know of multiple high end servers with 1TiB+ memory footprints. What is your definition of high end?
Here, have a look at HP's page if you don't believe me: https://www.hpe.com/us/en/product-catalog/servers/proliant-s...
And I'd hardly consider those "high end", there are much larger memory servers out there if you want them.
I've already run into cases of programs figuring that a "64-bit" address space is basically infinite and running out of address space by trying to have tens to hundreds of thousands of 4GB memory mappings (not necessarily backed by RAM).
Aarch64 on the other way...
The point was, that there will be not a problem with tagged pointers. The pointers have to be clean today when used, so those who use tagged pointers have a place in their code where they handle the cleaning.
Some very old distributed systems used 64 bit pointers where the upper bits told you what machine the data was on.
And we have Intel putting SSD card in DIMM slots. I expect there are semantics attached to those address ranges as well.
I dunno where we are after Spectre, but one of the microkernel architectures got its IPC speed by packing most processes into a couple of address spaces, only with different read write access. On preemption the TLB wasn’t invalidated (about half the cost), just modified.
These are the sorts of tricks you do when your address space is bigger than you will ever need. I expect to see more of this as time goes on. And if we ever see 128 bit pointers, expect crazy stuff like this to be de rigeur.
There are still things you could do, of course. For example, you could more or less NaN-box but rotate the bits so the tag is in the lowest bits instead of up in the exponent, then ensure all your pointers are sufficiently aligned. That would mean a perf hit on doubles to do the rotation to recover the double, but you might be right that this is not too bad in practice on modern hardware.
Well, there goes that startup idea ...
Now, what do you guy think about the "Al Gore said he invented the internet"?
Ah, the wonders of a post-truth world...
In the film of Johnny Mnemonic, the screenplay of which was penned by Gibson himself, Johnny must act as a courier for 320 GB by using a brain implant -- in 2025. It's 2018 in the real world, and data smugglers today would probably get farther by swallowing toy balloons with two or three microSD cards in them than by going the whole invasive wipe-your-childhood-memories brain implant route (if such a route were available).
That said, it's one of my favourite books.
If you'd like to be literal about it, dense snowfall, perhaps?
Anyway, the point, I think, was that it shouldn't look like any sky today, but rather like a futuristic sky.
> The sky above the port was the color of television, tuned to a dead channel.
That first sentence characterizes the novel's diegetic (in-narrative) setting by giving the sky a property of an alternate medium (television). Unlike gentler rhetorical assertions such as simile, the declaration that the sky possessed a property of television suggests that the setting--like the intra-diegetic setting of the (Morrocan) beach in which an unnamed adversarial AI imprisons Case--is also a media construct in which the reader is imprisoned.
In other words, the media topology structuring the novel's outermost narrative is a recursive formation of one medium inside another medium and this structure is timeless. It's merely recursion.
However, fully understanding the literary (as opposed to narrative) significance of such a structuration depends upon knowing what television was and why any of its channels might be "dead" as opposed to "live".
A useful point of comparison can be found in William Shakespeare's _As You Like It_ (II.VII.139-143)
All the world’s a stage,
And all the men and women merely players;
They have their exits and their entrances,
And one man in his time plays many parts,
His acts being seven ages. [. . .]
The significance is timeless, drawing power from the assertion that life is in fact lived on a stage. On the other hand, the description is also time bound (as well as culturally circumscribed) depending as it does on the greatly diminished (since Elizabethan England) medium of live performance.EDIT: Fix predicate in first sentence. Formatting. Change "at" to "a" in penultimate sentence.
I say that as someone that finds that line rather nice.
(Copy and paste the link, referrer shenanigans.) https://www.jwz.org/blog/2012/01/snow-crash-simulated/
Also, thanks for mentioning the copy/paste referrer nonsense. Didn't realize they blocked referred links from here and was curious what the reference was for a time. :)
Last television I hooked up using a digital antenna would simply not show anything if the signal didn't exist. If you had poor signal, you'd get more compression artifacts. Nothing there should translate to the white noise image.
Right?
Could they research it and find the answer? Yes. But that is different from just knowing it.
This makes it unlike the stage imagery, which is still accurate.
It is a very nice line.
However, it's dated to the point of losing its meaning.
Like rotary phones :-)
That's a very interesting take. I never took it to have such a deep meaning, I took it rather at face value (and its face-value-interptretation if you will): that is was visual white noise (vaguely like driving into the snow at night, perhaps?). I took the metaphorical meaning to be that the sky was indistinct, somehow pointless (like watching no channel), conjuring up bleakness and futility.
In other words, I took it to be a device to transport ambience, not structural meaning.
> In other words, the media topology structuring the novel's outermost narrative is a recursive formation of one medium inside another medium and this structure is timeless. It's merely recursion.
Interesting. I had meant to re-read it anyway. I shall pay attention to your perspective, see how it shifts my perspective of the rest of the book.
> However, fully understanding the literary (as opposed to narrative) significance of such a structuration depends upon knowing what television was and why any of its channels might be "dead" as opposed to "live".
To my kids, a "dead channel" would look uniformly blue.
Or like a 404 page perhaps, these day :-D
> The significance is timeless, drawing power from the assertion that life is in fact lived on a stage.
I feel you might be you're over-thinking it there, in the sense that the actors in a TV show wouldn't be seeing static. Only viewers would.
Thanks for sharing your perspective, I found it really interesting.
See Numenera [0] though, set a billion years in the future, while still keeping a sense of familiarity.
Since part of its purpose was as a writer's guide that terminlogy slipped into the shows and was quite believable when some character expressed surprise that a tiny chip could carry '15 kiloquads' of data. It worked very well.
The setting too leaves a lot of room and options for a good DM to expand into and build upon.
You can base almost any kind of story in Numenera, with tech levels ranging from primitive to medieval to hyper-sci-fi.
And yet that is what every successful RPG does.
Story != Themes.
Setting/cosmology/pantheon/bestiary/etcetera != Story.
D&D is the system, or “game”, with many settings from Planescape to Spelljammer.
The Forgotten Reams is a setting, with many stories from Drizzt Do’Urden to Neverwinter Nights.
https://en.wikipedia.org/wiki/Wirth%27s_law
Although I'm sure hardware companies will find a way to promote deep learning techniques into home computers, which will obviously require more and more transistors.
That should tell you how much you'll need in 2038.
Thanks!
> I always thought he was talking about his monthly bonus, not computer memory...
Ha!
the fact that a direct quote doesn't exist doesn't mean that it wasn't the sentiment at the time.
They did want an interactive TV set.
To add: If were to be asked if I had a Computer in my house, and I didn't actually have my tower or MacBook, I would respond "No."
My phone is a computer. Period.
It was making fun of the 640K limitation of MS-DOS, and the implicit reasoning behind that hard limit.
:-)