Wykład 3:
Pamięci

Mariusz Chilmon
m.chilmon@amw.gdynia.pl
uc.vmario.org

Historia

Pamięć bębnowa B-3

Pamięć ferrytowa

Pamięci operacyjne
(RAM — Random-Access Memory)

Rejestry procesora

  • najszybsza dostępna pamięć
  • bardzo mały rozmiar (na ogół 8…128 rejestrówpo wielkości 8…64 bitów, czyli 8B…1024B)
  • prostsze procesory pracują tylko na danych w rejestrach
  • praktycznie niedostępne dla programisty w językach wyższego poziomu
  • oprócz rejestrów procesora istnieją również rejestry I/O

SRAM — Static Random-Access Memory

  • złożona z przerzutników
  • bardzo szybka
  • droga
  • zajmuje dużo miejsca w krzemie
  • zintegrowana w µC

DRAM — Dynamic Random-Access Memory

  • złożona z kondensatorów i tranzystorów
  • wymaga odświeżania
  • szybka
  • tania
  • zajmuje mało miejsca w krzemie
  • układ zewnętrzny
  • skomplikowane optymalizacje (przeplot, potoki)
  • wersja asynchroniczna (starsza) i synchroniczna (SDRAM, DDR SDRAM)

Cache

Intel Pentium M

PamięćCykle
Rejestr≤1
L1d~3
L2~14
RAM~240

Cache

  • kompromis między granulacją a narzutem na adresowanie linii
  • programista prawie nie ma wpływu na jego działanie
  • kolejne komplikacje w systemach wielordzeniowych
  • ma bardzo duży wpływ na wydajność procesora

DMA — Direct Memory Access

  • umożliwia peryferiałom dostęp do pamięci bez angażowania rdzenia procesora

ECC — Error Checking and Correction

  • sonda Cassini–Huygens — 280 błędów dziennie
  • kody nadmiarowe (Hamminga lub Reeda-Solomona)
  • może zmniejszać wydajność pamięci (2%…3%)
  • wymaga wsparcia ze strony procesora
  • stosowane w pamięciach cache procesorów
  • stosowane w serwerach i systemach wbudowanych wysokiej niezawodności

Pamięci masowe (nieulotne)

EPROM — Erasable Programmable Read-Only Memory

  • technologia historyczna
  • programowana wysokim napięciem >20V
  • kasowana promieniowaniem UV

EEPROM — Electrically Erasable Programmable Read-Only Memory

  • programowana i kasowana elektrycznie
  • zazwyczaj niewielka pojemność
  • małe erase blocks (1 B)
  • duża liczba cykli R/W (>100 000)
  • stosowana w µC jako pamięć danych
  • stosowana w kartach kredytowych, SIM, kluczach
  • dostępna jako oddzielne US na I2C, SPI, 1-Wire

Flash

  • rozwinięcie technologii EEPROM
  • może osiągać ogromne pojemności (vide SSD)
  • duże erase blocks (rzędu KiB)
  • często mniejsza liczba cykli R/W (np. 10 000)
  • stosowana w µC jako pamięć programu
  • stosowana w pendrive'ach, kartach pamięci, SSD
  • dostępna jako oddzielne US na SPI, QSPI, równoległy

NOR Flash vs NAND Flash

NORNAND
Pojemność<256MiB>256MiB
Cena/bitwiększamniejsza
R swobodnyszybkiwolny
R/W sekwencyjnywolnyszybki
Bit flippingśladowyistotny
Bad blocks0%do 2%
Retencja20 lat10 lat
Przeznaczenieprogramdane

Obsługa wad pamięci NAND Flash

  • sprzętowo — FTL (Flash Translation Layer)
  • programowo — UBIFS (Unsorted Block Image File System)
  • bad blocks
  • wear leveling
  • memory scrubbing (obsługa bit flipping)
  • write back cache
  • ECC (CRC)

Inne pamięci nieulotne

  • BBRAM (Battery-Backed RAM)
  • FRAM (Ferroelectric RAM)