Názor k článku Nový vývoj kolem Spectre a Meltdown a naštvaný Linus Torvalds od MarSik - To pole (probe_array) se nepoužívá pro zmatení branch...

  • Článek je starý, nové názory již nelze přidávat.
  • 8. 1. 2018 22:25

    MarSik (neregistrovaný)

    To pole (probe_array) se nepoužívá pro zmatení branch prediktoru, ale pro zjištění hodnoty na té adrese. Protože přímo z cache tu hodnotu nevyčtete. Dá se to ale nepřímo pomocí zjištění, která stránka skončila v cache po provedení probe_array[4096 * (*adresa)]. Koukněte na Listing 1 (a 2 pro ASM verzi) v tom paperu. Figure 4 potom ukazuje, že prostá iterace přes probe_array (kam máte přístup) stačí ke zjištění neznámé hodnoty, protože ta jedna použitá stránka z cache je rozpoznatelná podle rychlosti přístupu k ní.

    Ty adresy pro mapování paměti nemám z Meltdown paperu, ale z prezentace pro debugging Linuxového kernelu. Samotná dokumentace kernelu říká:

    4 level TLB:
    ffff880000000000 - ffffc7ffffffffff (=64 TB) direct mapping of all phys. memory

    Takže bych řekl, že to už namapováno je a MMU to bez otázek přeloží. Urychlení může spočívat čistě v tom, že tu paměť přečtete sekvenčně. Meltdown paper tvrdí, že rychlost čtení je méně než jeden MBps. To není zrovna závratná rychlost.