Mostrando entradas con la etiqueta intel. Mostrar todas las entradas
Mostrando entradas con la etiqueta intel. Mostrar todas las entradas

sábado, noviembre 07, 2015

HyperScan: Librería de expresiones regulares de alto rendimiento de Intel

En la pasada Conferencia de Usuarios de Suricata,celebrada a principios de esta semana en Barcelona,Intel ha presentado HyperScan, una librería de expresiones regulares especializada en machear gran cantidad de las mismas contra bloques o flujos de datos a alta velocidad. Este librería comenzó como un producto de fuentes cerradas en el año 2008 hasta su publicación por Intel este año.

Los antivirus y sistemas de deteción de instrusiones de red (NIDS) suelen estar diseñados para usar un conjunto de reglas que usan expresiones regulares para intentar detectar patrones de datos que puedan ser una amenaza.

Las librería compila las expresiones regulares - que siguen el formato de expresiones regulares de la librería pcre - en una base de datos. El resultado de esta compilación depende del modo en que se vaya a usar las expresiones regulares - ya sea para buscar en un bloque o en un flujo de datos - y del procesador que se vaya a usar para realizar la operación de macheo, intentando usar todas las características que tenga cada CPU - como instrucciones SIMD - .La librería no usa backtraking con lo cual su consumo de recursos es reducido y apropiado para su uso en sistemas embebidos.

Ayer le pregunté a uno de los autores de Suricata sobre las pruebas que Intel había hecho con un Suricata modificado para usar dicha librería, ya que los datos de rendimiento del Suricata normal era un orden de magnitud menor que el Suricata que usaba HyperScan. Las pruebas las ha hecho Intel usando el conjunto de reglas http de emerging threads.

El código fuente de la librería está disponible en github bajo una licencia de tipo BSD.

miércoles, julio 24, 2013

Intel MPX: Extensiones de protección de memoria

(via reddit.programming) Intel acaba de presentar una serie de extensiones de protección de memoria que permita un uso más seguro de punteros en C y C++. Este conjunto de nuevas instrucciones permiten verificar si un acceso a memoria está dentro de un rango permitido protegiendo al programa de un posible buffer overflow.

Intel® MPX is designed to allow a system to run both Intel MPX enabled software and legacy software together. When executing software containing a mix of Intel MPX code and legacy code, the legacy code does not benefit from Intel MPX, but it also does not experience any change in functionality or performance. Performance of Intel MPX enabled code running on processors that do not support Intel MPX is similar to embedding NOPs in the instruction stream. Intel MPX is designed such that enabled applications can link with, call into, or be called from legacy software (libraries, etc.) while maintaining existing application binary interfaces (ABIs)

Las extensiones se pueden consultar en Intel® Architecture Instruction Set Extensions Programming Reference, concretamente en el capítulo 9 del mismo.

La idea de MPX es asociar rangos de direcciones válidas a los que pueden acceder un puntero determinado, siendo el hardware el encargado de verificar que cualquier acceso a dicho puntero está dentro del rango permito, intentando proteger al sistema de un buffer overflow. Por supuesto, hace falta compiladores y sistemas operativos que permitan usar estas nuevas extensiones. Lo que no me queda demasiado claro es que ocurre con un binario que tenga estas instrucciones y se intente ejecutar en un procesador que no tenga soporte para las mismas. De este párrafo creo entender que no debe de haber problemas en ejecutar un binario con estas instrucciones en un procesador que no soporte las mismas:

All Intel MPX instructions are NOP on processors that report CPUID.(EAX=07H, ECX=0H).EBX.MPX [bit 14] = 0, or if Intel MPX is not enabled by the operating system (see Section 9.3.3). Applications can selectively opt-in to use Intel MPX instructions.


Technorati Tags: ,

viernes, enero 07, 2011

¿Qué es Intel insider?

Una de las novedades que ha presentado Intel en el reciente CES ha sido Intel Insider, presente en la nueva generación de procesadores bajo el nombre de Sandy Bridge. Según el artículo que ha publicado Jon Stokes en Ars Technica, Sandy Bridge arrives from Intel with up to 50% performance boost, es un servicio atado a estos procesadores, que permitiría a los creadores distribuir contenido protegido por sistemas que sólo estarán presentes en el hardware de estos procesadores.

Según esta entrada en uno de los blogs de Intel, intenta alejar el fantasma de que esto es un tipo de DRM, aunque la siguiente frase no tengo yo tan claro que sea así (negritas mías)

. This technology is built into the new Intel chips and will become even more important once wireless display technology like Intel’s WiDi become more popular, as it would prevent pirates from stealing movies remotely just by snooping the airwaves. WiDi enables you to wirelessly beam video to your big screen TV easily and in HD.

Esta no es la primera noticia que leo sobre la posibilidad de que Intel introduzca en sus procesadores mecanismos de protección de contenidos y restricción de ejecución de binarios firmados. Como puede verse otro artículo de Jon Stokes hace no mucho en Ars Tecnica, Intel's walled garden plan to put A/V vendors out of business, donde se hablaba de la posibilidad de que el sistema sólo pueda ejecutar aquellos binarios que han sido aprobados y considerado seguro por al guna autoridad en la que se confíe.

Llevo años pensando que la lucha entre los que distribuyen copias ilegales va a acarrear que el hardware donde se puedan ver dichos contenidos y ejecutar programas, cada vez pase a estar más cerrado. Llegado el momento, podría darse el caso que los nuevos procesadores de los diferentes fabricantes vengan con un sistema de clave pública y privada que permita sólo la ejecución de binarios firmados por las correspondientes autoridades en las que se confíen, ya sean públicas o privadas. Y por poner el ejemplo de Sony, a pesar del la cagada de implementación del sistema, ha estado casi cinco años sin poder ejecutar código no firmado.

Y por desgracia, en el mundo del hardware no es tan fácil crear en casa sin restricciones que sea pontente de verdad (y sí, hay implementaciones libres de procesadores como el LEON, pero comparemos en potencia con cualquier micro x86 de hoy). Y lo peor es que veo este tipo de técnicas extendiéndose por otros fabricantes de microprocesadores como AMD o las diferentes arquitecturas ARM que se emplean hoy en día en el universo móvil.


Technorati Tags:

martes, enero 13, 2009

Estructura de la memoria caché L1 de un Core 2 Duo

Acabo de descubrir hace poco el blog de Gustavo Duarte, una de las secciones más interesantes que tienen es la sección de internals, donde describe diversos aspectos de bajo nivel de CPU o sistemas operativos. Hoy he visto Cache: a place for concealment and safekeeping, que describe la arquitectura de caché L1, en este caso de 32 Kbytes 8 way set asociativo y con líneas de 64 bytes. Una lectura recomendable para los que le gusten la microarquitectura.

Technorati Tags: , ,

jueves, noviembre 13, 2008

Intel Core i7

Intel acaba de presentar la siguiente evolución de su microarquitectura, con nombre comercial Core i7 y conocida como Nahalem. Las novedades más importantes de los nuevos preocesadores son el abandono de la arquitectura de bus que ha usado Intel desde el Pentium-Pro , para pasar a una nueva denominada Intel QuickPath Interconnect, QPI y la inclusión de los controladores de memoria en la propia oblea (cosa que ya hizo AMD hace tiempo).

QPI y controladores de memoria en oblea

Intel tenía en su gama de microprocesadores un problema de ancho de banda: su arquitectura de bus (AGTL) no disponía del suficiente para alimentar a las unidades de ejecución de sus microprocesadores. Para compensar este efecto, incluía memorias cachés de gran tamaño en los chips. Los problemas se complicaban aún más en caso de varios microprocesadores. En el momento que se modificara memoria, había que escribirla a la caché y de ahí a la memoria principal para que todos los micros tuvieran una vista coherente de la misma. Este cambio de arquitectura supone pasar de un sistema de memoria unificada a una arquitectura NUMA. El ancho de banda del nuevo QPI es de 25.6 GB/s. Se pueden ver la mejora en ancho de banda respecto a Penryn en Bandwidth and cache latency (Sandra)

Ahora se podrá dedicar parte de esa ingente cantidad de transistores usados en la caché en aumentar el paralelismo de las unidades de ejecución , puesto que se la combinación de los controladores de memoria en la misma oblea y el nuevo bus permite disponer de la cantidad de ancho de banda necesaria para alimentarlas. En este chip se han puesto las bases para la evolución futura de estas novedades. Por ejemplo, se ha pasado de 820 millones de transistores del caché L2 del la arquitectura Penryn (12 MB combinado) a los 731 millones (8MB L3 combinado), mientras que el Caché L2 ha bajado a uno de 256 Kb por core. También se mejora de manera significativa la latencia de acceso a memoria.

La versión actual soporte DDR3-1066 y el controlador de memoria utiliza un reloj 3.2 Ghz o 2.13 Ghz, dependiendo del modelo.

Modularidad

Uno de los objetivos que persigue Intel es tener una microarquitectura que pueda ser adaptada a diferentes mercados: móviles, estaciones de trabajo de alto rendimiento, desktops y servidores. El número de componetes (cores de ejecución, enlaces QPI, tamaño de caché L3 y controladores de memoria), podrá escalarse en función del segmento de mercado al que vaya dirigido el micro.

Cores de ejecución

Core i7 es un microprocesador con un pipeline de ejecución de 14 etapas capaz de ejecutar instruciones fuera de orden. Las unidades de ejecución no han cambiado respecto a la actual arquitectura Core 2. Ha vuelto la tecnología de hyperthreading (SMT), de tal manera que un micro con dos cores físicos, el sistema verá ahora como cuatro lógicos, lo que sea por no tener hardware ocioso.

En la microarquitectura la unidad de deteción de bucles se colocado detrás de las etapas de decodificación de instrucciones. Ahora almacena hasta 28 micro-ops, lo que permite durante la ejecución del bucle ser más rápido y apagar las unidades de predición de saltos, obteción de instrucciones (fetch) y decodificación de las mismas (decode), ahorrando energía. Este elemento recibe el nombre de Loop Stream Detector (LSD) y en el caso del Core 2 estaba situado antes de la unidad de decodificación de instruciones.

El número de micro-ops que es capaz de ejecutar este Core de ejecución es 128. La técnica que debutó en los Core 2 Duo de macrofusión (agrupar ciertas instruciones de tal manera que dan lugar a una sola micro-ops para su ejecución, para incrementar el número de instrucciones procesadas por cilo), ahora se usa también en el modo de funcionamiento de 64 bits (se puede ver una pequeña descripción de la macro-fusión en EM64T in Core 2 Duo: What’s the Theory?)

Se ha modificado las tablas TLB ( Translation Lookaside Buffers), aquellas encargadas de traducir las direcciones de memoria virtual a física. En Core 2 Duo, el número de entradas no daba para mapear ni todo el caché de nivel 2. Ahora se aumenta para que sean capaces de mapear todo el caché L3 (y un poco más).

Se ha mejorado en la penalización que se incurría al intentar acceder un acceso a la memoria caché no alineada en los Core 2 Duo y se ha mejorado la ejecución de las instrucciones de sincronización (aquellas usadas para implementar primiticvas de sincronización como spinlocks)

Me encantaría saber más de microarquitectura, reconozco que la gente de Intel ha hecho un trabajo excelente para conseguir un gran micro y por las pruebas vistas en Ars Tecnica, deja en pañales a la arquitectura Core 2 Duo.

SSE 4.2

Vuelven instrucciones para gestionar cadenas - que habían quedado arrinconadas durante los últimos años -, cálculo de CRC e instrucciones como POPCNT (cuenta los "1" ...).

Consumo de energía

Se ha introducido un nuevo módulo en el microprocesador para controlar el consumo de manera más eficiente. Este módulo llamado PCU, es un microcontrolador que casi tiene el tamaño de un 486 en transistores, y a través de firmware permite implementar algoritmos inteligentes de control del consumo. Por ejemplo, puede detectar que hay cores que están ociosos y así aumentar ligeramente la frecuencia de los cores activos.

Referencias

Technorati Tags: ,