Random Computer Terms: Pumping

Yordi Verkroost - Aug 25 '18 - - Dev Community

The developments in the field of Computer Science go fast. So fast actually, that you should always be learning new things. There is no other choice than to become a lifelong learner. So let's get after it and discuss one term out of the huge list of computer- and programming terms each week! This week's term is: Pumping.

So, pumping. During my whole life as a computer scientist, I've never heard anyone talk about "pumping" in the context of computers. The only context in which I've heard the word is in sports. People call it body pumping: a full-body workout with light weights and lots of repetition. If I would have to describe a workout like that, I would actually just call it a "full-body workout with weights", because... Well, I don't know. "Body pump" sounds awful, doesn't it? I'm for sure not doing it. No, I'm not. I mean, look at it:

Body pumping at its finest

Jesus Christ. Horrible!

So we were talking about pumping in the context of computers. Like I said, I didn't hear the term before, but I can make an educated guess about what it would be. It could have something to do with pumping stuff through a system. Data, for example. Could pumping be a benchmark that tries to put as much data into a system as possible and measures its behavior? Or it could be more about the process, about designing the flow of data through a system? All those explanations feel legit. So let's find an official definition of "pumping" to see what it's actually about.

Good old Wikipedia states the following:

Pumping [...] is an informal term for transmitting a data signal more than one time per clock signal.

Right. So my guess of it being about pumping something through a system was kinda in the right direction. I do have to understand what a "clock signal" is, though, before we can understand what pumping means. Since this article is not about clock signal in depth, it's enough to have the general gist of it. Let's query Wikipedia again:

A clock signal is a particular type of signal that oscillates between a high and a low state and is used [...] to coordinate actions of digital circuits.

I see. What I have to understand about clock signals is that computers use it to coordinate actions. Or, in other words, to do something. It could take one or more clock signals to run a specific program, based on the complexity of that program. A program with more statements needs more clock signals before it's finished.

So "something" happens every clock signal. But the definition of pumping told us something different. It told us that it's about transmitting a data signal more than once per clock signal. So it's possible to overload the clock signal with more than one piece of data. With pumping, one defines the data rate per clock signal with the terms SDR, DDR, and QDR. The following picture summarizes these terms:

SDR, DDR, and QDR, together defining what pumping is

The "DR" part of the terms stands for "Data Rate". The first letter of each term defines how many times one transmits data during each clock signal. One time (Single), two times (Double) or four times (Quad). As shown in the picture, SDR simply transmits data during the upward phase of the clock signal. DDR transmits data during the upward- and downward phase. QDR transmits data in the upward- and downward phase, and also at the middle of the peak and the trough (or valley).

Now you may have noticed a familiar term in the sections above. At least, it's kind of familiar for me. I'm talking about the term "DDR", which is being used often when talking about memory. The computer world has arrived at the fourth version of DDR, called DDR4. So, a much-used technique in computer memory uses DDR, and we now know what that is actually about. Cool, right!

The last thing to understand in relation to pumping is what a front-side bus (FSB) is. It will come as no surprise that I'll let Wikipedia inform me about this:

A front-side bus was a computer communication interface (bus) [...]. [It carries] data between the central processing unit (CPU) and a memory controller hub [...].

A computer uses the bus to transfer information from one part of a computer to another. In this case, the bus transfers information from the CPU to a memory controller hub. A bus can have a certain clock speed. For example, a 400Mhz bus can handle a total of 400 million signals per second.

But hey, didn't I see that it's possible to transmit data more than once during each clock signal? Aha! That means that a bus may be able to handle only 400 million signals per second. But if we're using DDR, then we can double it to 800 million signals per second, or 800MHz. Or we can even go a step further and use QDR, to end up with 1600 million signals per second. That's awesome!

One final note. You might have seen that the definition of a front-side bus contains the word "was". That's because a front-side bus as described here is not in use anymore in modern computers. A computer now uses HyperTransport, Intel QuickPath Interconnect and Direct Media Interface. If you want to learn more about these things, you know where to go!

Do you know more about pumping that you want to share? Or did you see some part of this article that you want to comment on? Please feel free to do so!

The Random Computer Term that we will discuss next week is: System Management Interrupt (SMI).

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .