I/O Architecture
In my earlier post, I discussed some of the main concepts, challenges and techniques that are essential for virtualizing a CPU or instruction set. To a large degree, these concepts and techniques are not new – they are really just variations on a theme that has been around for a long time in computer science. Virtualization is fundamentally about preserving the appearance of isolating resources, while actually sharing the resources harmoniously and efficiently. Perhaps the most obvious example was virtual memory – I can still remember being excited about virtual memory when I upgraded to System 7 on an Apple Quadra! Tricks with virtual memory would let you run applications without buying new RAM (although the loading performance was often horrible as a result…at least it ran).
Â
One of the most difficult and complicated areas of a modern PC is the I/O architecture. The I/O architecture governs how the processor and memory talk to the devices that make a computer interesting – keyboards, mice, network cards, GPUs and hard drives. It’s essential to remember that I/O is really a first class priority of a computer, because as a CPU architect, I/O moves at a glacial speed.Â
Â
Modern CPUs operate at around 3GHz, so a single cycle is only 0.33ns. In comparison, reading data from a disk takes around 5ms – or 15 million cycles! The engineering maxim of ‘make the common case fast, and the uncommon case correct’ is sometimes erroneously simplified into ‘ignore the uncommon case’ – and when I/O only happens every 15 million cycles, it’s pretty uncommon. Read More »













