Zarovnání paměti

Zarovnání paměti je způsob uspořádání a zpřístupnění dat v paměti počítače. V této souvislosti se používají dva příbuzné pojmy: zarovnání dat a data structure padding. Data structure padding by se do češtiny dalo přeložit jako vkládání vaty (vycpávky či výplně). Když moderní počítače zapisují nebo čtou data z RAM, pracují s blokem dat o konstantní velikosti (například u 32bitových operačních systémů se jedná o blok dat s velikostí 4 bajty). Tento blok dat se označuje pojmem slovo (používá se i anglický výraz word). Zarovnání dat znamená umístit data o velikosti slova v paměti na takovou pozici, která je rovna násobku velikosti slova. To zlepšuje výkon celého systému vzhledem ke způsobu, jakým procesor pracuje s pamětí. Pro správné zarovnání dat může být nezbytné vložit za data, která netvoří svojí délkou úplný blok, nějaké nevýznamné bajty. Tomu se právě říká data structure padding – „vyplnit to vatou“.

Například když je velikost slova 4 bajty (1 bajt je 8 bitů), měla by čtená data o velikosti 4 bajty začínat vždy na násobcích velikosti tohoto slova. Pokud tomu tak není a požadovaná data mají být čtena například od 14. bajtu namísto 16. bajtu, potom by počítač pro přečtení těchto čtyřbajtových dat musel provést operaci čtení nad dvěma slovy, jejich spojování a předání ke zpracování. To je náročnější operace, než kdyby přečetl vše v jednom kroku. Pokud počítač takovou operaci nepodporuje, pak přeruší zpracování a ohlásí chybu sběrnice.

Mnoho počítačových jazyků zajišťuje zarovnání dat automaticky. Některé jazyky, jako jazyk symbolických adres, Ada, některé implementace C a C++ a programovací jazyk D dávají programátorovi částečnou kontrolu nad zarovnáním dat.

Popisovaný problém se týká primárně zarovnání v operační paměti. V procesorech s keší se podobné problémy se zarovnáním projevují při čtení bloků z keše.

Reference

V tomto článku byl použit překlad textu z článku Memory alignment na anglické Wikipedii.

Externí odkazy