I want to talk a bit about architecture, its relationship to operating systems, and why memory management (and multi-level page tables) are the "way things are," or why linear tables are not enough for modern systems.
We'll start with the Hack CPU. It's an architecture we are all familiar with.
In the beginning was the 8088. Or, the Z80. Possibly the 8080 came first. It doesn't really matter... these designs are more than 25 years old, and they're still shipping and being used in products, so what do we care?
The AVR family of processors include the ATmega line, which is best known by many as "the Arduino." The AVR line comes with many peripheral and memory management sets; in any given "family" of processors, different peripherals and access tools (for external RAM) will or will not be present. For example, the 328 has no support for external memory, while the 1284 has DMA; the 1281 has on-board radio, while none of the 168/328/1280/2560 family does.
The ARM family of processors, while different in architecture, are similar in their reconfigurability.
Now, a gorilla. An 800 pound gorilla. The IA-64 is a massive, complex, highly parallel processor design. Unlike some CPUs that do instruction-level parallelism on-chip, the IA-64 forgoes this, leaving it up to the compiler to do this work for it. This makes sense on one hand---it is easier to modify software that hardware---but, it's not easy code to write.
Or, as one compiler author said of this design, in 1999: "I hope I never have to write a compiler for that processor."
This website is provided under a CC BY-SA license by the
The Berea CS Department.
Fall 2013 offering of taught by Matt Jadud