Why a computer buffer is called a buffer

Why is a chunk of working memory called a “buffer”?

The word ‘buffer’, by the way, comes from the meaning of the word as a cushion that deadens the force of a collision. In early computers, a buffer cushioned the interaction between files and the computer’s central processing unit. The drums or tapes that held a file and the central processing unit were pieces of equipment that were very different from each other, working at their own speeds, in spurts. The buffer made it possible for them to work together effectively. Eventually, the buffer grew from being an intermediary, a temporary holding place, to being the place where work is done. This transformation is rather like that of a small seaport that grew into a great city: once it was merely the place where cargo was warehoused temporarily before being loaded onto ships; then it became a business and cultural center in its own right.

From An Introduction to Programming in Emacs Lisp. The same book explains two meanings of “argument”.

7 thoughts on “Why a computer buffer is called a buffer

  1. I encountered the word ‘buffer’ in chemistry before I did in software. In chemistry, a buffer is a solution which maintains a certain pH value even when you add an acid or base to it (up to a certain limit, of course).

  2. I, too, thought that the use of “buffer” in computing was based on the use of “buffer” in chemistry. That is, something (solution or memory) that maintains a certain condition (pH or working status) unless overloaded.

  3. A buffer in chemistry also “protects” against shocks or changes, just like the buffers on trains. The train buffers seem to be more or less the original ones. m-w.com claims this origin: “buff, verb, to react like a soft body when struck
    First Known Use: 1835”.

  4. In some translations of Computer Science texts to Spanish, the word “buffer” gets translated to “tampon”, whose definition matches that of “ink pad”.

  5. I don’t know for spanish but in french, a “tampon” is rather the stamp tool than the ink pad.
    And it’s the translation for buffer too, i.e. something that absorbs shocks.

  6. I dug up a bit on how “buffer” was used in early computer history, since I think any explanation must either fit that early use, or explain how a later interpretation replaced it. The earliest use was for ‘logical-or’, and within 10 or 15 years became more closely associated with to I/O-mapped registers.

    In “A REPORT ON THE ENIAC — Part I, Chapter 1” from http://web.archive.org/web/20150322233942/http://ftp.arl.mil/mike/comphist/46eniac-report/chap1.html is the section “1.2.1.1. Buffers and Cathode Followers”, which says “Buffers and cathode followers are normally non-conducting tubes with a single input and a single output. … When the outputs of a number of buffers or cathode followers are connected together to a common load resistor, the resulting circuit provides for the logical “or” since when any one of the buffers or cathode followers receives a positive signal, the circuit emits a negative or positive signal respectively.”

    Archive.org has more original documents about the ENIAC. For example, page 67/1012 of the PDF at https://ia800509.us.archive.org/10/items/ReportonENIACEl00Moor/ReportonENIACEl00Moor.pdf , “Receiver cathode follower buffer output lines. These are to be used to program the product acc. to receive the partial products.” I think this suggests that a was used as a temporary storage spot, but I found it too hard to understand the technology of the era to make sense of it.

    There’s more about it in the 1950 book “High-speed computing devices”, p44 in the section “Inverse Gates, or Buffer” at http://babel.hathitrust.org/cgi/pt?id=uc1.b4107180;view=1up;seq=60 which says “These *logical or* circuits are referred to as anti-Rossi circuits, isolating circuits, or simply buffers. …. Buffers are commonly used in the input circuits of an electronic register, e.g., in the decade rings of a device like the ENIAC.”

    Note also that page 207 ( http://babel.hathitrust.org/cgi/pt?id=uc1.b4107180;view=1up;seq=223 ) of the same book, concerning the SDC computer, uses “buffer” in a different context. It says there are 32 acoustic-delay-lines for main storage and “a buffer reservoir housed with each of the four external storage units.” I don’t think these two uses of ‘buffer’ are connected.

    Lastly, there’s an easy-to-read book by Prudential Insurance Company of America titled “An introduction to electronic computers” from 1954. Page 202 at http://babel.hathitrust.org/cgi/pt?id=uc1.b4232868;view=1up;seq=226 defines buffer as “An electrical circuit allowing the reception on one line of signals from two or more other lines without feeding back signals on the other input lines; thus a logical “or” circuit.”

    Interestingly, the index entry for “Buffer” in the same book says “see also “Static register””, which is on page 91 (http://babel.hathitrust.org/cgi/pt?id=uc1.b4232868;view=1up;seq=115 ). That paragraph says “It is impossible, therefore, to have a direct read-write process. There must be an intermediate step in which the time scale is changed. This usually involves loading the data from the external memory into a “static” or non-moving register at the low speed of the reading device. It is then read out of the static register at the high speed of the internal memory. In a sense, the static register is a buffer. It is a memory device which can operate at any speed.”

    This sounds similar to the description in the Emacs Lisp document, except that the buffer in 1954 seems more like port-mapped I/O where the CPU could read it directly, rather than ‘being an intermediary’ to the CPU.

    I don’t have a good conclusion. It looks like “buffer” was use in multiple different ways all tied to memory or I/O. It could have been that “buffer” the term for the logical-or used for input circuits became used for accumulating input data, became used for mapping I/O to memory, became intermediate storage. It may also be that the term in software has a different path than in hardware, so rather than the software term evolving from (say) the 1970s hardware use, it actually evolved from the 1950s use.

    Resolving that would require a lot more research. My caution is that the etymology seems trickier than the Emacs Lisp documentation suggests.

  7. Andrew, in the first two examples you cited, it’s clear that the buffer being mentioned is something that’s still around and still called a buffer today (specifically, a unity-gain buffer, voltage buffer, or voltage follower). The etymology of that is exactly the same as all of the other uses of “buffer”; it sits between two parts of a circuit and prevents the one part from placing a load on the other that would drag its voltage down. In other words, it provides a buffer between them. The only wrinkle in those citations is that they call a non-inverting buffer a cathode follower (modern terminology: emitter follower or source follower), and an inverting buffer a “buffer”. Fine.

    Then, you have the realization that since such a buffer requires minimal current from the source end, you can connect several buffered outputs in parallel to a single input. If any of them is high, it will drive the next stage input high (providing a low-impedance path to V+ through its tube), and only if all of them are low will the pull-downs suffice to pull the next stage low. This is what the next couple references refer to with a logical or. It’s not that “buffer” is the name for an or-gate, it’s just that using buffers gets you an *implicit* logical or.

    The remaining uses are either the same as this, or the same as the sense laid out in John’s post. For example, the bit you linked about the SDC computer says “each tape unit in the external storage has associated with it two 32-number acoustic delay lines, which are employed as buffers between the tape and the main electronic part of the machine”. A delay line is the closest thing to RAM in a 1940s computer, so this is describing a 32-word I/O buffer for the tape drive. Same for the “static register” definition in the Prudential book.

    So I see two well-established meanings (one electronic, one computery), both of which come back to the original train metaphor. No novelties or wild changes.

Comments are closed.