-
Pokud mám pravdu, je stránka v hlavní paměti nejmenší jednotkou pro přenos dat mezi hlavní pamětí a externím úložným zařízením, například pevným diskem. Řádek mezipaměti hlavní paměti je nejmenší jednotka pro přenos dat mezi hlavní pamětí a mezipamětí CPU.
-
Zajímalo by mě, jestli je velikost stránky vždy nebo nejlepší být přirozený počet velikostí řádku mezipaměti? Pokud je velikost řádku mezipaměti 64 bajtů a velikost stránky paměti je 4 kB, pak má každá stránka 4 kB / 64 bajtů == 64 řádků mezipaměti.
-
Jsou stránka a řádek mezipaměti oba pevné objekty v paměti? Nebo jsou to jen jakýkoli souvislý blok paměti určité velikosti, který může začít a pohybovat se kdekoli v paměti?
-
Je to vždy tak, že řádek mezipaměti nemůže překlenout více než jedna stránka, tj. část řádku mezipaměti je na stránce a druhá část řádku mezipaměti je na jiné stránce?
Díky.
Komentáře
- Odpovědi na vaše otázky jsou vysoce závislé na architektuře CPU.
Odpověď
-
Řádek mezipaměti je nejmenší jednotka, se kterou se můžete dotknout fyzické paměti. To znamená, že když čtete / zapisujete 1 bajt, do mezipaměti CPU se načte celý řádek mezipaměti, který jej obsahuje, a zapíše se zpět. Všimněte si, že i instrukce, které obcházejí mezipaměť pro zápis (prchavé pokyny pro streamování), píší ve velikostech řádků mezipaměti. V závislosti na CPU jsou velikosti řádků mezipaměti obvykle 32/64/128 bajtů. Když se stránky paměti zapisují na disk, zapisují se celé. K tomu dojde, když je tlak v paměti příliš vysoký nebo u hibernačních procesů (a možná i pro jiné účely). V případě potřeby se také přečtou celé. Je to hlavně proto, že jádro nemá žádný způsob, jak zjistit, zda je stránka částečně nebo plně využita. Jiné operace čtení / zápisu na externím úložišti mohou mít libovolnou zrnitost (např .: fwrite (..)).
-
Velikost stránky závisí na CPU / GPU. U většiny procesorů budou velikosti stránek alespoň 4KB a obecně podporují kombinaci 4KB / 64KB / 2MB / 4MB / 16MB / 1GB (ne nutně všechny podporované současně). Velikost bude vždy mocninou dvou.
-
Stránka i řádek mezipaměti jsou souvislé a je třeba je zarovnat k jejich příslušné velikosti. Řádek mezipaměti 64 bajtů je vždy zarovnán na 64 bajtů a stránka 2 MB je vždy zarovnaná na 2 MB.
-
Z důvodu č. 3 nesmí řádek mezipaměti nikdy překlenout 2 stránky, protože velikosti stránek budou vždy větší než řádek mezipaměti a vždy bude násobkem velikosti řádku mezipaměti.
V tomto vynikajícím zdroji naleznete spoustu informací o paměti: http://lwn.net/Articles/250967/
Komentáře
- Je tato odpověď stále relevantní v roce 2020? Změnily se tyto velikosti?
- Pokud vím, zůstávají tyto hodnoty relevantní i dnes. Všechny moderní procesory x86 a x64 používají 64 bajtů na řádek mezipaměti a 4KB zůstává nejběžnější velikostí stránky v systémech Windows a Linux. U vestavěných zařízení najdete v příručce k interním procesorům podrobnosti, co je podporováno.