Sunday, April 22, 2007

My fascination with computers

I'm currently still fairly fascinated with computers. Although I've been exposed to these machines for two decades, I can safely say that I'm learning new things about them all the time. I had a recent deadlock in my research work. However, after being inspired by Tanenbaum, he has set me down a path that allows me to discover new things every minute.

Let me talk a bit about my background with computers. I was exposed to the Atari consoles before I had even gone to school. At 9, I taught myself how to programme. At 20, I taught myself how to design microprocessors. For the last two years, I have been exploring very exotic processor designs as part of my PhD. I have discovered that the current standards have achieved dominance through commercial reasons, not technical ones. There are a lot of interesting microprocessor architectures out there.

For example, at the turn of the 20th century, computers were largely mechanical. During WWII, electronic analogue computers played a crucial role in weapons design as well as calculating bomb trajectories. It wasn't until the end of the war that electronic digital computers began to play a prominent role, with their code breaking prowess. In the 1950s there were heated debates on which type of computer was best. The digital one won as a result of it being cheaper to run than the analogue ones.

Now, I'm discovering new types of computer architectures that are so abstract that I have never even heard of before, much less seen one. The current dominant form of computation can be considered a form of Random Access Stored Programme (RASP) machine. There are so many other forms of digital sequential computer architectures that are good for different things. As usual, good enough is the enemy of best. So, although current computers aren't exceptionally good at doing many things, it's good enough for almost everything. Plus, they got predictably cheaper every 18 months. So, these alternative architectures do not see the light of day and are crushed by existing standards.

I've also been studying computer architecture at a different abstraction level, virtual machines. Through this, I have discovered how software compilers actually work. In essence, a C compiler (for example) will compile the code to run on a machine that usually isn't the computer microprocessor. This model will then be translated into actual machine instructions that the actual microprocessor can execute. So, the microprocessor is actually running code that makes it perform like another virtual microprocessor, which the C code is compiled for. You may wonder how it is possible that a computer has the capabilities to run code that wasn't designed for it. Well, a very smart chap from King's College (Cambridge), Alan Turing, has essentially shown that any practical computer can perform the tasks of any other computer. So, just accept for a fact that a computer can emulate another computer, which should be obvious to anyone who has used an emulator before.

All this is very exciting and interesting. It's the kind of thing that only certain people (like me) will be fascinated over. I would really like to continue to study these machines in detail. I wonder if I should consider a career in academia, working on microprocessor designs for the rest of my life. I don't actually mind working in this field of study, however, the politics in academia would totally kill me. So, I guess not. I'll just have to find some other avenue to study these alternative microprocessor architectures.

No comments: