Live data from Hacker News

8086 Segmented Memory was a good idea

owl.billpg.com

111–120 of 150 posts

Re: 8086 Segmented Memory was a good idea

#111
post #66
post #8

What is the difference between the segmentation model used by Intel and the banking model used by a lot of consoles? I've worked with the code of a couple of NES and GBC games, and while banking could be annoying, I never saw it as a particularly difficult model to follow and use. It did require more planning for the various functionality, but it wasn't even the most complex or difficult thing about developing for co…

Banking is different in that the banks swap in and out. The 8086 segments were all available at the same time once you loaded the segment register, and they overlapped. Banking was one solution to the 1MB limit; was it extended or expanded mode? I can no longer remember, but one of those gave you a 64kb window somewhere above the 640kb limit in the address space not used by either video RAM or BIOS. That window could…

Expanded memory is identical to banking. It wasn’t particularly popular since it’s a pain to program and compilers never got around to automatically generating code for it.

Re: 8086 Segmented Memory was a good idea

#112
post #67
post #62

> Need more than 64KB? Allocate two blocks. How is that compatible with an array and a simple implementation of the index operator?

It isn't. This was a problem.

Not really. Compilers had huge pointers. They just were slower since they had to do 32 bit math.

Re: 8086 Segmented Memory was a good idea

#115
post #89

Earlier quoted context omitted.

Hi. I wrote it, and I'm a human. (Or at least I think I am.) I did use an AI for spell-checking, punctuation, generally making it flow, but its all my text. You think a machine is going to come up with "near pointers, far pointers, wherever-you-are pointers"?

Thanks for responding. The problem is: - the “make it flow” made it flow in an AI generated way like short paragraphs that are one short sentence. - I now have to decide if this is entirely AI generated and thus not worth my time reading or not. - I would prefer to just interact with you as a real person; your writing doesn’t have to be perfect for what you write to be worth reading.

shrug

I've reviewed what I originally wrote and I prefer the text I published. Sure, I could review it all myself (indeed I used to) but that takes time and it was becoming a barrier to actually publishing stuff. Maybe I'd have got around to finishing it in a few months.

I don't use AI to write for me. I hate people who do that.

Re: 8086 Segmented Memory was a good idea

#116

The segment model seems clever if you assume that you never have an object that is larger than 64kb. And once you have that you need to care about segment overflow, pointer comparisons no longer work, everything now has to carry around segment+offset instead of just offset, and so on. And if you want an example of a >=64kb object - the html alone for that page is one.

It's basically a 16-bit machine with PAE; 32-bit with PAE runs into similar issues if you want an object larger than 4GB.

Re: 8086 Segmented Memory was a good idea

#117
post #40

Earlier quoted context omitted.

Linux is only used as a kernel temporarily until GNU is finished.

You mean GNU Hurd, I guess.

The operating system was going to be called GNU.

Don't open this can of worms. (-: There were endless discussions of this in the 1990s. Years's worth.

Scroll down to the 'What Is the Hurd?' section of this announcement post from 1996 and pay particular attention to its first and last sentences. That's the allusion here.

* https://groups.google.com/g/gnu.announce/c/d0N2mLo5dxk/m/bDq...

Re: 8086 Segmented Memory was a good idea

#118
post #62

> Need more than 64KB? Allocate two blocks. How is that compatible with an array and a simple implementation of the index operator?

I once developed for PC-GEOS, which wanted all memory in exactly 8K sized blocks. I wrote a set of C macros that presented an array-of-arrays as a single collection by using mod/divide operations on the index.

Re: 8086 Segmented Memory was a good idea

#119

Wasm with multiple linear memories is basically segmented memory. Its a great security model.

It made fundamental mistake of starting as 32 bit memory model

You can use multiple segments (now, you couldnt originally)

Re: 8086 Segmented Memory was a good idea

#120

I seem to recall at the time that flat memory was self evidently a better idea. It's not like people were sitting around going "gee I can't think of any better way to do memory addressing that this" until some genius suggests "how about flat?!?!?" Everyone knew flat was best but were stuck with 8086 crap.

Flat memory was a better idea but it wasn't a cheaper idea, and cheaper beats good. A casual Googling shows a price of $2,880 for a IBM PC in ~1982 dollars versus $8,900 for a Sun Microsystems Sun-1 with a MC68000.

That was just Sun's market segment.

Also from a casual Google, an IBM PC launched in 1985 (picking the XT 5160-078 as an example) was around $4,995 at launch. Compare that to two 68000-based computers also launched in 1985: the Amiga 1000 launched at $1,295 and the Atari 520ST launched at $600.

These computer system prices - Sun, IBM, Commodore, Atari - came from the market segments the manufacturers aimed to sell to, rather than a cost saving enabled by cumbersome memory models.

The cumbersome memory model is just a historical accident; the 8086 designers wanted 8080 backwards compatibility so they could sell to former 8080 users, IBM did not require this. IBM would've picked the 68000 had it been "production ready" at the time, they did not reject flat memory on cost grounds!

Post reply on HN