Main memory is also known as:
- Primary storage
- internal memory (to distinguish from external memory, such as hard drives)
often referred to simply as memory, is the only one directly accessible to the CPU.
It's the first layer of the storage hierarchy.
As shown in the below diagram, there are a few sub-layers of primary storage:
- the 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.
Logical (Offset, Memory Adress)
Memory can be think as one large array containing bytes (generally one) indexed by address.
|Value (In Hexadecimal)
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.
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.