Friday, April 20, 2007

Abstraction Layers


Andrew Tanenbaum is a computer god. I had recently finished reading his book, Structured Computer Organization. It is an excellent book that gives a very good overview of all the different bits of a computer without going into too much detail. I recommend it for any undergrad who would like to gain some knowledge in this area.

I loved the book so much that I went out and got another two of his books, Computer Networks and Operating Systems: Design and Implementation. These books have all got a common theme: Abstraction Layers. Although I have a fair amount of detailed knowledge on these different topics, all the information that I have were gleaned through a piecemeal method. There wasn't an overall defining structure to piece it all together.

All these books promote the concept of abstraction layers. This is something that should be fairly familiar to anyone who knows software engineering as well as networking. I've always considered the OSI layers for networking as a very perfect example of an abstract layered structure (at least from a theoretical point of view). Software layers are also fairly common, with the LAMP stack being one of the most famous software development stacks on the planet. However, I had never been exposed to this concept for a microprocessor before.

The bible of microprocessor architecture is written by Hennessy & Patterson, two great-grandfathers of RISC who came up with the model at around the same time, at Stanford and Berkeley. One became MIPS and the other gave birth to the SPARC. They described microprocessor architecture as a machine, part by part. My next favourite book by Sima, Fountain & Kacsuk goes on to describe intricate details by illustrating trade-offs using a design space technique.

By looking at the microprocessor as just one possible machine sub-layer, it has given me new radical ideas on how to break the deadlock in my research. Where I had always been trying to come up with a machine architecture, maybe I should approach it via the virtual machine perspective. By defining a virtual machine architecture that can solve the problem, without bothering myself with the details of implementation, I should be able to come up with new solutions to the problem.

The author is a god. I'm certainly not the first to be inspired by him, and I won't be the last. Incidentally, Linus Torvalds was also inspired to write Linux when he read his book. Linux borrows a lot of ideas from Minix, which was the example OS described in his book. Linus has openly acknowledged this fact. Some people are just naturally great teachers. Have to 'kow tow' to Prof Tanenbaum.

No comments: