Location, Location, Location

It may be what gives value to real estate (that’s property if you’re British), but it is also the major principle of computer architecture. By computer architecture I’m not specifically thinking of software architecture. Software architecture is secondary, because once you’ve built the computer you are stuck with the constraints it imposes. Or to be more accurate, once an operating system has been dropped on the hardware, you are stuck with the restraints that the combination of the two imposes.

The Generalist Architecture

Computer architecture is characterized by the need to get things done fast. The problem is that there are quite a variety of workloads that a computer my have to process, so computer architecture is designed to be versatile rather than optimized to a particular job. If you need any proof of that then consider this:

During the Second World War British intelligence broke the German Enigma codes using a massively parallel electromechanical computer. It wasn’t until the mid 1990s that a PC was powerful enough to crack the same coded messages at roughly the same speed. The reason for this is that the British electromechanical computer was built for one task only. It couldn’t do anything but test Enigma coded messages against a “crib” (a word that was known to be or likely to be in the message to be decoded).

The primary components of the computer are:

The CPU. Until recently you could think of the processor chip as being the CPU, but when Moore’s Law ran out, the chip designers began to put multiple cores onto chips ( a core being a “processor”). This made life more complicated as regards this component. However, this is the central component that does the work of executing instructions against data.

The Bus(es). The primary bus is the path along which instructions and data pass to get to the CPU. Think of it as a highway along which data and instructions travel. You can have more than one bus. You can connect multiple chips together with a bus. You could have dual buses to an array of chips and memory. You also have a bus that connects the memory to disk. That would be a different bus – a slower one.

The Memory. This is silicon too, but usually slower than the CPU. Memory used to be a holding place for data from whence it was sent to the CPU for processing. We wrote programs which processed the data as if it were directly changed in memory and when we’d finished with the data we wrote it to disk. So memory had two functions. It was a cahe for data and an area which programs logically operated on. (Why am I pointing this out? Because it is ceasing to be true).

The Disk. This is where the data actually lives. We take it from there, do stuff to it and put it back. There’s lots of space on disk and it’s cheap, which is why we keep the data there.

No Longer True

I could write a lot about this, but the point I’m trying to make here is that the above scheme isn’t particularly true any more. It’s true in respect of how we write programs, but it’s not so true in terms of the components. They don’t necessarily have that function any more or they don’t need to have. I’ve already touched on this in discussing how memory is replacing disk (the most disruptive change ever) but, to be honest, I was underestimating the impact of what is currently happening.

Program instructions usually take up a lot less space than the data that they process. Individual bits of data don’t take up much space, of course, but collections of data do. So traditionally, we placed the heaps of data on disks and moved the processing near to the disks (you can think of it that way). It was a matter of location for the sake of better performance.

When we suddenly have an abundance of memory (as we now have), we have new choices about how we organize the data. When we have an abundance of processing power, we also have choices about how we organize the processing. But the optimization that we will inevitably attempt to achieve is to process everything as fast as we can.

That means keeping the data as close to the processing as possible, because it always takes too much time to move either the data or the process. In the end, it will probably mean optimizing, so that the data that is cached on the CPU chip arrives just-in-time for the program on the chip to process it.

In other words, it’s still a matter of location. It’ s just that the way it works is different, and that means that how you optimize will be different. Now, I have a vague feeling that the optimal architecture for this will be distributed rather than centralized. I’m not sure why, it just feels that way.

Now that I’ve written this, I’ll be able to discuss what Cisco is doing. I’ll do that tomorrow.

Categories: IT Trends Tags: , , , , , , Subscribe to RSS feed
  1. No comments yet.
  1. No trackbacks yet.