Blog 
Crónicas Informáticas
RSS - Blog de Crónicas Informáticas

El autor

Blog Crónicas Informáticas - Crónicas Informáticas

Crónicas Informáticas

Los autores de este blog son profesionales de la informática, miembros de los Colegios Oficiales de Ingenieros en Informática e Ingenieros Técnicos en Informática del Principado de Asturias.

Sobre este blog de Tecnologia

En este blog, profesionales de la informática asturianos, rendiremos homenaje al escritor Ray Bradbury. No iremos a Marte, pero sí narraremos la crónica de la transformación digital de la sociedad.


Archivo

  • 01
    Febrero
    2018

    Comenta

    Comparte

    Twitea

    SOCIEDAD Oviedo

    Heridas en los procesadores

    Heridas en los procesadores

    El procesador de un computador, con sus miles de millones de transistores de unas micras de tamaño dispuestos con una precisión que no admite fallos, es una de las mayores muestras de lo que la ciencia y la tecnología han conseguido, una de las grandes maravillas creadas por la humanidad. Gracias a la velocidad increíble a la que ejecutan instrucciones --más de una instrucción cada medio nanosegundo--, es posible tener programas con funciones que hace no tantos años eran ilusiones reservadas a los relatos de ciencia ficción y hoy son una realidad cotidiana que utilizamos sin darle mucha importancia.

    Pero no es sólo el número de transistores y la elevadísima frecuencia de los procesadores lo que permite esa ejecución de instrucciones a ritmo vertiginoso: el campo de la Arquitectura de Computadores ha estado continuamente innovando para utilizar al máximo los transistores y aumentar la velocidad de ejecución de los programas. Los fabricantes de procesadores están en una lucha constante por conseguir mayor rendimiento, para que los usuarios escojan sus modelos de procesadores frente a los de la competencia, pero también para que haya razones para comprar un nuevo procesador que tenga ventajas significativas con respecto a la anterior generación.

    Una de estas innovaciones es la ejecución fuera de orden: cuando un procesador tiene que ejecutar una lista de instrucciones, no las ejecuta de una en una según el orden en el que están en el programa, sino que intenta ejecutar varias instrucciones a la vez para acabar antes; como puede haber instrucciones que dependen de los resultados de otras, se llega incluso a reordenarlas para, sin alterar el resultado, hacer más instrucciones en menos tiempo. Pero, en ocasiones, el procesador no puede ir adelantando instrucciones porque no está seguro de cuáles tiene que ejecutar; por ejemplo, es común que en un programa haya dos caminos que seguir dependiendo de algún valor que esté en memoria, que es mucho más lenta que el procesador. Para evitar que el procesador esté inactivo esperando por ella, se utiliza la ejecución especulativa: el procesador hace una apuesta por una de las ramas y empieza a ejecutar las instrucciones correspondientes sin estar seguro de que serán las necesarias. Va guardando los resultados y, cuando por fin la memoria responde, si la previsión fue correcta, puede responder más rápidamente; si falló, simplemente descarta esos resultados y ejecuta la rama adecuada.

    Sin embargo, a los computadores no les pedimos sólo velocidad: también queremos seguridad. El público no especializado ha oído hablar de la seguridad de los distintos sistemas operativos, tal vez de las distintas aplicaciones, pero no es consciente de que la seguridad de todo el software depende del hardware sobre el que se ejecuta. A lo largo de los años, los procesadores han ido añadiendo características para facilitarle al sistema operativo la labor de proteger unas aplicaciones de otras. Una de las más importantes es la definición de distintos niveles de acceso a la memoria: el sistema operativo tiene privilegios especiales y puede acceder a la memoria de cualquier aplicación, mientras que cada aplicación sólo puede acceder a su propia memoria.

    Volvamos a la ejecución especulativa. Esta técnica se utiliza desde hace 20 años en los procesadores de servidores, ordenadores de escritorio y portátiles y parecía segura. Algunos investigadores en seguridad se dieron cuenta de que esas instrucciones que se ejecutaban especulativamente podían acceder a zonas de la memoria prohibidas. Como el procesador no utiliza los resultados hasta que determina que las instrucciones deben hacerse en realidad y tienen permiso, no parecía haber problema. Pero ahora, unos investigadores de Google y de varias universidades han descubierto cómo acceder a esos resultados calculados especulativamente, con lo que se rompe la seguridad ofrecida por los distintos niveles de privilegio. A estas vulnerabilidades se las ha denominado Meltdown y Spectre.

    Hay un remedio fácil: dejar de utilizar la ejecución especulativa. El problema es que el rendimiento cae a niveles de hace más de diez años. Una solución menos radical pasa por no utilizarla sólo cuando pueda llevar a problemas de seguridad. Eso hacen, básicamente, los parches que, a modo de tirita para las heridas de los procesadores, los fabricantes de CPUs, sistemas operativos y aplicaciones están publicando y que son, básicamente, la única defensa que tenemos los usuarios en la actualidad.

    A largo plazo, habrá que investigar formas de seguir ganando rendimiento sin perder seguridad. Es un reto complejo, pero seguro que el mismo ingenio que ha permitido llegar hasta estos niveles prodigiosos de rendimiento divisará nuevas técnicas que permitan seguir con el incremento de prestaciones de manera segura al que estamos acostumbrados.

     

    Joaquín Entrialgo Castaño. Ingeniero en Informática

    Profesor de la Universidad de Oviedo.

     

    Compartir en Twitter
    Compartir en Facebook