Memory
Types
- static random access memory (SRAM)
- composed of transistors only
- volatile (retains data while powered on, loses data when powered off)
- fast, very low idle power
- wide variety of speed and power
- commonly used for registers, caches, buffers built into devices
- dynamic random access memory (DRAM)
- composed of transistors and capacitors
- volatile
- requires frequent refresh to retain data
- slower than SRAM but higher storage density, some idle power from refresh
- commonly used for main memory
- flash memory
- composed of MOSFETs with an extra charge storage layer
- can store 1 (SLC), 2 (MLC), 3 (TLC), or 4 (QLC) bits per cell
- requires a higher voltage to program (write)
- requires a different higher voltage to erase
- can be read at random but erased only by block
- non-volatile
- greatly limited write endurance (typically 102 to 105 cycles)
- requires a complex controller and benefits from DRAM buffers
- commonly used for fast mass storage
Error Correction
- error correction code (ECC)
- multiple parity bits are added to each word (commonly 8 bits of parity for 64 bits of data)
- parity bits are calculated using a Hamming or other code
- detects and corrects single-bit errors
- detects but cannot correct double-bit errors
- commonly used for memory in high reliability systems
- more sophisticated algorithms can be used for devices with higher error rates
Buffering
- unbuffered
- memory modules are connected directly to memory controller
- simple, fast, inexpensive
- registered
- connected through a register which improves electrical properties
- allows more memory and longer distances without signal degradation
- adds latency (time delay) and cost
- fully buffered
- converts signals from parallel to serial for improved electrical properties
- advantages of buffering plus more bits per cycle
- adds latency, cost, and power consumption
DRAM Standards
- DDR5
- current
- speeds 32 to 70 GB/s
- latency around 14 ns
- includes on-die ECC
- DDR4
- legacy, still available
- speeds 13 to 26 GB/s
- latency around 14 ns
- GDDR7
- graphics memory
- speed 128 GB/s
- higher latency than DDR
- HBM3E
- high bandwidth memory
- stacked, directly attached to processor
- speed 1.2 TB/s
DRAM Packaging
- dual inline memory module (DIMM)
- double-sided circuit board with chips soldered on
- common for desktop and server DRAM
- small outline DIMM (SODIMM)
- smaller, common for laptop DRAM
- ball grid array (BGA)
- chip package for soldering (non-removable)
- common for mobile device DRAM and other non-removable memory
UNIX considerations
- amount
- a lightweight, character only distro might run in 100 MB
- a minimal GUI distro will need 512 MB to 1 GB
- a full-featured GUI distro will need 2 to 4 GB
- additional desktop requirements depend on applications
- additional server requirements depend on services and load
- insufficent memory results in swapping of pages to storage (very slow)
- extra memory improves performance with caching
- ECC
- recommended for servers, routers, other situations which require extended uptime