The Bandwidth Problem

This text is not a technical one, although it is related to technical issues. I did not come up with these ideas myself, I picked them up when I attended a conference on grid computing. The problem described caught my interest, because as a programmer, it frustrates me that I never have the time to write the code I would like to write.

Suppose you would write everything down what you're thinking, pen every thought down on paper until you die, then you will find that when you die, you still haven't written down everything you ever thought. This is because you can think many, many times faster than you can write. This is known as the bandwidth problem.

Computers have a central processing unit (or cpu), and memory in the form of RAM memory and disk memory. To accept input, there is a keyboard and it has a screen to show output on. Humans are much alike, our brain serves as both cpu and memory, our eyes and ears are receptors (input devices) and we can talk or use facial expressions for output. Of course, we weren't modeled after computers, computers were (more or less) modeled after us instead.

Inside a computer, the fastest component is the cpu. It has a certain amount of bits per second it can process. The speed with which it can get bits from memory, however, is limited by the bandwidth of the bus (or channel) that connects the cpu to the memory and by the speed of the memory itself. This bandwidth is much like with traffic: the broader the highway, the more cars can pass in one hour.
The output to disk, compared to the speed of a cpu, is very slow. We can descend the chain even further; tape I/O is usally slower than disk I/O.

As said, humans are much alike. Our brain works relatively fast, and our eyes can receive a fair amount of data. Our ears work slower, and compared to a dog our noses aren't very good -- what I'm trying to say is that our input devices are quite slow. Same goes for our output devices, our speech is dreadfully slow and we cannot work very fast with our hands. The problem is that the bandwidth of our brain is by factors larger than the bandwidth of our input and output devices.

As a programmer, I use my hands to write a computer program. Because my brain is working much faster than my hands, I keep getting new ideas before I've finished typing the program I was currently working on. From time to time, this becomes very frustrating, because I never get to write the programs that I actually wanted to write. (I guess writers or painters must have the very same problem.)
I must add though, that this is also caused by lack of time. But the time itself is needed only because my I/O devices are too slow to keep up with the brain.

Humans are too slow to do more than one big thing in their lives. However, we are with many and each of us can do a small piece of a larger job. This is much like an ant-farm or, to stay with computers, like a cluster of workstations. One of the keys to success in making efficiently use of all resources in a cluster is management, but that is a completely different story.
Also, we need to teach our next generations our knowledge, which takes a considerable amount of time (again, because our I/O devices are slow) and therefore it sometimes takes generations to tackle certain problems.


If you really must, you can contact the author at walter at heiho dot net