¿El microcódigo es físicamente capaz de mitigar el Meltdown?

2

Soy consciente de que no hay una solución de microcódigo disponible para Meltdown (ya se ha respondido en varios < a href="https://security.stackexchange.com/q/176788/165253"> preguntas ), y que los únicos parches de microcódigo existentes ( IBRS e IPBP ) solo ayudan con una de las variantes de Spectre, pero me gustaría saber si es posible una corrección de microcódigo para Meltdown posible y factible .

Específicamente, tengo curiosidad por saber si:

  • La implementación de microcódigo de Intel es suficientemente capaz de mitigar el Meltdown.
  • Tal mitigación sería posible sin un impacto de rendimiento extremo.
  • Una solución de microcódigo es lo suficientemente práctica para que, en el futuro, se pueda lanzar una.
  • Simplemente no hay suficiente información pública para responder esta pregunta.

Ya sé que KPTI es la solución "oficial" actual para Meltdown y ese microcódigo y esa nueva instrumentación del compilador Tratar parcialmente con Specter. Descargo de responsabilidad: no he visto el 34c3 talk en la que se adivina la situación de los sistemas de información de las personas en la que se haya visto. Soy consciente de que tiene limitaciones.

    
pregunta forest 18.01.2018 - 18:21
fuente

1 respuesta

1

He visto una respuesta satisfactoria en un subproceso LWN. Tomado de un comentario hecho por jcm:

  

Dudo que sea posible en microcódigo. Mirémoslo:

     
  1. Cargas especulativas. Lo único que podría hacer en microcódigo es desactivar todas las especulaciones, o quizás causar que cada carga sea serializada (similar).

  2.   
  3. Predicción de rama. Puede desactivar los predictores indirectos ( pero eso es lo que hace IBRS ). *

  4.   
  5. Comprobación de permisos durante la especulación. Puedes desactivar la especulación o el caché, o eliminar los TLB o estás prácticamente sin opciones.

  6.   

No puede simplemente reemplazar instrucciones aleatorias en microcódigo, o agregar un comportamiento complejo, por varias razones:

     
  1. No todas las instrucciones están microcodificadas. Las instrucciones de ruta rápida ni siquiera tocan el secuenciador de microcódigo.

  2.   
  3. La memoria RAM del parche para el microcódigo es pequeña y no puede llevar nada parecido a ese tipo de parche.

  4.   
  5. El TLB complejo y la lógica del predictor de ramificación no están bajo control algorítmico directo a través de microcódigo, solo ciertos aspectos del mismo. Puedes modificar el comportamiento, modificar bits de pollo , jugar con señales de control ... pero no puedes agregar lo que no es ya en el diseño.

  6.   

El microcódigo no es mágico. Está ahí para corregir, en su mayoría, instrucciones complejas que no se comportan correctamente, o para golpear trozos de pollo, y así sucesivamente.

* Esta declaración con respecto al comportamiento del IBRS fue disputada en otro comentario sobre LWN.

    
respondido por el forest 23.01.2018 - 02:33
fuente

Lea otras preguntas en las etiquetas