3 ms·
The main reason the Alto and other Xerox PARC machines provided so much functionality with so little code is the designers were quite ruthless about simplificat
by jonjacky 9y ago
The main reason the Alto and other Xerox PARC machines provided so much functionality with so little code is the
designers were quite ruthless about simplification and providing just
one best way to do everything, which all programs then had to use. There weren't any huge programs - they didn't need
them. Those systems were very unlike Linux or any modern platform. For example Linux plus its typical userland provides perhaps seventeen dozen different ways to put text on a screen. The Alto solved that problem once and for all in microcode, and then all Alto software used that one solution and nothing else. That's where the savings came from: they decided in advance what they needed and then
designed the whole techology stack together to provide that in the most parsimoniious way: from the GUI through the
programming language and compiler and display hardware and
CPU hardware, machine instruction set down to microcode - it was all designed together from a bird's eye view of what the
entire finished system was supposed to look like. All done by a small group of people in a short time. It's a completely different process from the decades of accretion
in Linux and other modern platforms.
To respond to your technical questions about microcode. Microcode (and CISC architectures in general) are motivated
by making the compiled binary programs as small as possible - each single machine instruction can do a lot because it runs a lot of microcode. The optimal set of machine instructions isn't settled once and for all, it depends on available technology. The Alto only had 128 kilobytes of RAM, so it was crucial to design an instruction set where compiled programs were as small as possible. So (I recall) their CPU used
a stack rather than a lot of registers because then most operands could be implicit - that saves a couple of bytes
in a typical instruction. Now that gigabyte memories are commonplace, the design trade-offs are quite different. But I think the microcoded instructions made the programs shorter at the source code level just because they made it unnecessary to re-implement the low level graphics operations (etc.) over and over in system and application code.