Saturday, May 30, 2015

Memories

Chances are, the PC you are using to read this blog has at least 2 Gigabytes of RAM (Random Access Memory.)   And, it probably fits on one or two small modules that measure around 1 inch tall by 5 inches wide and less than 1/4 inch thick. A Gigabyte is 2^30 bytes (1,073,741,824) and each byte is composed of 8 bits (binary digits) for a total of 17,179,869,184 bits.  That is pretty amazing when you stop to think about it.  It wasn't that long ago that an amount of memory like that was almost unthinkable.  And that is considered a minimal computer today.  In addition, it most likely has about a megabyte (2^20, or 1,048,576 bytes) of flash ROM (Read Only Memory) to hold a permanent program and BIOS to start the machine up.  Thirty years ago, that alone would have been considered a large memory.

But computer memory hasn't always been so vast, small, and cheap.  Many technologies have been used in the past and it is interesting to take a look back and see how we got here.  Perhaps you have heard of magnetic core memory, which was king for about 20 years, from the mid 1950s to the mid 1970s.  But what else has been used for computer memory?  And how much did a computer have?

This entry is the first of several to take a look back at computer memory over the years.  I want to start with the ENIAC, generally considered to be the first general purpose electronic computer.  Almost all computers today are what is called a "stored program" type.  That means the program they run is held within their memory.  That wasn't always the case.  The ENIAC was programmed by wiring the instructions into changeable plugboards that were not accessed as memory.  That certainly decreased the memory requirements.  The stored program concept was developed while the ENIAC was being built, and it was later modified to work that way.

So, ENIAC didn't need memory to store its program.  It only needed memory to hold data.  In fact, it only needed memory to hold the data it was working on at that moment.  It had a card reader to get input to work on, and a card punch to output data to.  ENIAC was also different from almost all computers today in that it didn't use binary numbers.  All the numbers were decimal.  In essence, each decimal digit was represented by having ten vacuum tubes that could be either off or on.  One of those was turned on to represent which of ten digits (0 through 9) was held there.  That was somewhat inefficient, but it sure made numbers more convenient.  If you have ever had to convert numbers back and forth between binary and decimal, you will understand what a convenience that was.  And since ENIAC was designed strictly for numerical operations, it made things much simpler.

With that in mind, what did it have for memory?  Well, it didn't have any large chunk of storage memory like we take for granted now.  It had only twenty accumulators, what we would call registers now.  Each accumulator could hold a ten digit signed number, from -9,999,999,999 to +9,999,999,999.  It would take a thirty five bit binary number to hold the same range of values, so ENIAC had roughly 20*35 = 700 bits of memory, or 87 1/2 bytes!  It seems rather amazing today with typical computers available with billions of bytes that they could do anything useful with that amount of memory.  But they did.  One of the first practical uses of ENIAC was to do feasability calculations for the hydrogen bomb.  It went on from there to perform the calculations it was designed and built for: calculating artillery firing tables for the US Army.  It stayed in continuous service for the US Army until 1955, having several upgrades during its life.

The memory of ENIAC was of course made from vacuum tubes.  Each digit of each accumulator took 36 tubes, for a total of 360 per accumulator.    For all 20 accumulators, that meant 7,200 tubes: a sizeable portion of the less than 18,000 total of ENIAC.  If you have ever seen any old vacuum tube equipment, imagine how much space 7,200 of them with supporting components would take.  All for 87 1/2 bytes of memory.  The memory cycle time, or how long it took to access something in memory, was 200 microseconds.  That meant a maximum speed of 5,000 operations per second.  Your PC probably does more than a billion operations per second.  We've come a long way.

That is how we got started.  But just as now, the users of the computers wanted bigger and faster.  Even ENIAC would be upgraded in its eight year working life.  More memory was added and it was converted to a stored program machine.  But a lot of useful work was done, much faster than it could have been otherwise, by using that 87 1/2 bytes of memory.  In later posts I will cover some of the improvements that were developed later.  There are some wild and wacky things that were used for computer memory!

2 comments:

  1. The first computer I ever owned was a Sinclair ZX-81. It had 1 KByte of RAM that was shared between the program, the data, and the display. It also had 8 KBytes of ROM that held the BASIC interpreter and the "operating system."

    ReplyDelete
  2. I just realized my comments were not coming through on from mobile devices. Just want to make sure you knew I was interested in the writings. Maybe a few others like me, too.

    ReplyDelete