Hasty Briefsbeta

Bilingual

8086 Segmented Memory was a good idea

14 hours ago
  • #Memory Segmentation
  • #Computer Architecture
  • #Historical Computing
  • The 8086 segmented memory architecture allowed addressing 1MB of memory by combining 16-bit segment registers and 16-bit offsets, producing 20-bit addresses, which was seen as complex and hated by many programmers.
  • Segmentation was initially clever for backward compatibility, enabling 8080 code to run in 64KB segments without rewriting, and theoretically allowed scaling to larger address spaces in future chips.
  • Developers broke the intended use by treating segments as a flat address space through normalized pointers, leading to entrenched practices that hindered architectural evolution and required modes like virtual-8086 on the 80386 to escape the 1MB limit.
  • The failure stemmed from not treating segments as opaque selectors without arithmetic meaning, which would have required metadata and hardware support, but was impractical in the era of limited memory and prone to exploitation by developers.
  • The author's project, Hearthfire, avoids 8086-style segmentation but views it as a valuable lesson in architectural design and the impact of developer behavior on system evolution.