A mame zde porovnani, kolik ze maji tyhle architektury TLB ?
podle tohoto to vypada ze ARMy maji znacne omezenejsi pocet polozek v TLB, takze je tam pak vetsi miss-rate a nizsi vykon.. ktery se snazi napravit tou vetsi strankou, nez vetsim poctem TLB.
https://github.com/lgeek/arm_tlb_huge_pages
vs napr. x86, kde je 1536 zaznamu v STLB pro 4K/2M (a dalsi pro instrukce/data), napr. pro instrukce je v x86 tak 128 zaznamu, na armu 32-48 jenom.
No zas tak malé to na ARM není, třeba Cortex-A76 (RPi5) říká STBL 1280-entry 5-way set associative.
https://en.wikichip.org/wiki/arm_holdings/microarchitectures/cortex-a76#Memory_Hierarchy
"Phoronix u AmpereOne naměřil průměrně o 15 % větší výkon"
To je asi tak stejna informace jako pod na me z boku = naprosto zadna.
Jakykoli vykon zavisi na typu zateze. Pokud budu na disku pracovat s malym blokem a cpat tam TB dat, tak pochopitelne vzoste vykon i radove, kdyz velikost toho bloku zvetsim. A presne totez naopak, pokud budu menit jednotlive bajty a budu mit velky blok, bude to radove pomalejsi.
S pameti je to exaktne stejne.
Hahaha, prý exaktně :-D
Ani prd. Od doby, co procesory přerovnávají instrukce, to je specifické pro každou generaci procesorů a samozřejmě jiné i pro každého výrobce.
V naprosté většině případů znamená větší stránka větší spotřebu paměti a taky větší rychlost, je to prostě klasický tradeoff. Chci o cca 10% rychlejší všechna jádra procesoru a mít o 10% méně paměti nebo obráceně?
Ale kde budou ta zrychlení?
- co limutuje program? rychlost disku? rychlost uživatele? zrychlení bude 0
- vleze se program do cache procesoru? zrychlení bude 0
- jsou v kódu blokující volání (IRQ)? zrychlení bude ~0
Jinými slovy, řada programů se zrychlí o 10%, ale ne víc, protože jejich rychlost není primárně blokována pomalostí paměti.
Naopak, pokud rychlost programu závisí na čekání na data z paměti, zrychlení může být teoreticky až čtyřnásobné! Hlavně pokud program není nijak dobře optimalizován.
7. 9. 2024, 09:40 editováno autorem komentáře
Ano, je to v podstatě od 386. Bohužel to dost programátorů bere jako konstantu 4kB a potom jejich SW nejede na větších stránkách.
Na x86 se problém malé stránky řešil pomocí Huge Pages a Transparent Huge Pages, to ale zase má svoje problémy. Arm má k volitelné velikosti stránky také Huge Pages a Transparent Huge Pages.
Dobré shrnutí pro x86 třeba: https://stackoverflow.com/questions/11543748/why-is-the-page-size-of-linux-x86-4-kb-how-is-that-calculated#answer-50033983