Il microcodice è fisicamente in grado di mitigare Meltdown?

2

Sono a conoscenza del fatto che non è disponibile alcuna correzione microcodice per Meltdown (è già stata fornita una risposta in varie < a href="https://security.stackexchange.com/q/176788/165253"> domande ), e che le uniche patch di microcodice extant ( IBRS e IPBP ) aiutano solo con una delle varianti di Spectre, ma mi piacerebbe sapere se una correzione del microcodice per Meltdown è possibile e fattibile .

In particolare, sono curioso di sapere se:

  • L'implementazione del microcodice di Intel è sufficientemente in grado di mitigare Meltdown.
  • Una tale mitigazione sarebbe possibile senza un impatto sulle prestazioni estremo.
  • Una correzione del microcodice è abbastanza pratica che, in futuro, potrebbe essere rilasciata.
  • Semplicemente non ci sono abbastanza informazioni pubbliche per rispondere a questa domanda.

So già che KPTI è l'attuale correzione "ufficiale" per Meltdown e quel microcodice e quella nuova strumentazione del compilatore trattare parzialmente con Spectre. Disclaimer: non ho guardato il 34c3 talk che potrebbe far luce sui limiti del microcodice Intel, ma io sono consapevole che ha delle limitazioni.

    
posta forest 18.01.2018 - 18:21
fonte

1 risposta

1

Ho visto una risposta soddisfacente su un thread LWN. Tratto da un commento fatto da jcm:

I doubt it’s possible in microcode. Let’s look at it:

  1. Speculative loads. Only thing you could do in microcode is turn off all speculation, or maybe cause every load to be serializing (similar).

  2. Branch prediction. You could turn off the indirect predictors (but that’s what IBRS does).*

  3. Permission checking during speculation. You can either turn off speculation or the cache, or kill the TLBs or you’re pretty much out of options.

You can’t just replace random instructions in microcode, or add complex behavior, for several reasons:

  1. Not every instruction is microcoded. Fast path instructions don’t even touch the microcode sequencer.

  2. The patch RAM for the microcode is tiny and can’t carry anything like that kind of patch.

  3. Complex TLB and branch predictor logic isn’t under direct algorithmic control via microcode, only certain aspects of it are. You can alter behavior, tweak chicken bits, play with control signals...but you can’t add what isn’t already in the design.

Microcode isn’t magic. It’s there to fix mostly run of the mill complex instructions that don’t behave correctly, or to whack chicken bits, and so on.

* Questa dichiarazione relativa al comportamento di IBRS era contestata in un altro commento su LWN.

    
risposta data 23.01.2018 - 02:33
fonte

Leggi altre domande sui tag