Data Storage - Memory (Primary storage or main memory or internal memory)

1 - About

Primary storage (or main memory or internal memory), often referred to simply as memory, is the only one directly accessible to the CPU. It's the first layer of the storage hierarchy.

The CPU continuously reads instructions stored there through the system bus (wiring) and executes them as required.

Historically, early computers used delay lines, Williams tubes, or rotating magnetic drums as primary storage. By 1954, those unreliable methods were mostly replaced by magnetic core memory, which was still rather cumbersome. Undoubtedly, a revolution was started with the invention of a transistor, that soon enabled then-unbelievable miniaturization of electronic memory via solid-state silicon chip technology. This led to modern random-access memory (RAM).

As shown in the diagram, traditionally there are two more sub-layers of the primary storage, besides main large-capacity RAM:

  • Processor registers are located inside the processor. Each register typically holds a word of data (often 32 or 64 bits). CPU instructions instruct the arithmetic and logic unit (ALU) to perform various calculations or other operations on this data (or with the help of it). Registers are technically among the fastest of all forms of computer data storage.
  • Processor cache is an intermediate stage between ultra-fast registers and much slower main memory. It's introduced solely to increase performance of the computer. Most actively used information in the main memory is just duplicated in the cache memory, which is faster, but of much lesser capacity. On the other hand it is much slower, but much larger than processor registers. Multi-level hierarchical cache setup is also commonly used—primary cache being smallest, fastest and located inside the processor; secondary cache being somewhat larger and slower.

3 - How memory is accessed ?

3.1 - Logical (Offset, Memory Adress)

Memory can be think as one large array containing bytes (generally one) indexed by address.

Address Value (In Hexadecimal)
1000 92
1001 AB
1002 15
1003 CD

Memory is organized in a computer by something called memory addresses.

When storing and retrieving data, an offset is used to determine the location in which the data is stored. For example a data request would be “retrieve 8 bytes of data starting at offset 8100”. This is similar to saying “give me the fifth binder from the second row” in the real world.

3.2 - Physical

3.2.1 - Memory Bus

Main memory is directly or indirectly connected to the central processing unit via a memory bus. It is actually two buses (not on the diagram):

  • an address bus
  • and a data bus.

The CPU firstly sends a number through an address bus, a number called memory address, that indicates the desired location of data. Then it reads or writes the data itself using the data bus.

3.2.2 - Memory management unit (MMU)

Additionally, a memory management unit (MMU) is a small device between CPU and RAM recalculating the actual memory address, for example to provide an abstraction of virtual memory or other tasks.

4 - ROM

As the RAM types used for primary storage are volatile (cleared at start up), a computer containing only such storage would not have a source to read instructions from, in order to start the computer. Hence, non-volatile primary storage containing a small startup program (BIOS) is used to bootstrap the computer, that is, to read a larger program from non-volatile secondary storage to RAM and start to execute it. A non-volatile technology used for this purpose is called ROM, for read-only memory (the terminology may be somewhat confusing as most ROM types are also capable of random access).

Many types of “ROM” are not literally read only, as updates are possible; however it is slow and memory must be erased in large portions before it can be re-written. Some embedded systems run programs directly from ROM (or similar), because such programs are rarely changed. Standard computers do not store non-rudimentary programs in ROM, rather use large capacities of secondary storage, which is non-volatile as well, and not as costly.

5 - Documentation / Reference

data_storage/memory.txt · Last modified: 2018/02/20 22:17 by gerardnico