Zona para desarrolladores Intel®:
Extensiones de conjuntos de instrucciones de la Intel® architecture

Las Extensiones de conjuntos de instrucciones de la Intel architecture (ISA) continúan evolucionando para mejorar la funcionalidad, el rendimiento y la experiencia del usuario. A continuación, presentamos las extensiones planeadas para ISA que son nuevas, así como las que se están planeando para mejoras en futuras generaciones de los procesadores. Al publicar estas extensiones con anticipación, Intel ayuda a garantizar que el ecosistema del software tenga tiempo para innovar y entrar al mercado con productos mejorados y nuevos cuando se lancen al mercado los procesadores.

Visión general

Herramientas y descargas

  • Intel® C++ Compiler

    Intel® C++ Compiler está disponible para ser descargado del Intel® Registration Center para todos los clientes con licencias. Las versiones de evaluación de los Productos Intel® de desarrollo de software también están disponibles para una descarga gratis.

  • Guía de Intel Intrinsics

    La Guía de Intel Intrinsics es una herramienta de referencia interactiva para las instrucciones intrínsecas de Intel, las cuales son funciones de estilo C que proporcionan acceso a muchas instrucciones Intel, incluyendo las instrucciones Intel® Streaming SIMD Extensions (Intel® SSE), Intel® Advanced Vector Extensions (Intel® AVX), y muchas más, sin necesidad de escribir el código de ensamblaje.

  • Gcc Compiler
    El compilador 'gcc compiler' y la biblioteca 'glibc library' compatibles con las instrucciones de Intel® AVX, Intel® AVX2, Intel® AVX-512 e Intel® MPX están disponibles para ser descargados de GPL que se encuentra en la página Emulador de Desarrollo de software Intel®.

Intel® Advanced Vector Extensions (Intel® AVX)

La necesidad de un mayor desempeño computacional sigue creciendo en todos los segmentos de la industria. Para satisfacer la creciente demanda y ofrecer compatibilidad con los modelos de uso en evolución, continuamos nuestra historia de innovación con  Intel® Advanced Vector Extensions (Intel® AVX) en los productos de hoy.

Intel® AVX es una nueva extensión del conjunto de instrucciones de 256 bits para Intel® SSE y se diseñó para aplicaciones que usan Floating Point (FP - Punto flotante) de manera intensa. Se lanzó al mercado a principios del año 2011 como parte de la familia de procesadores de la microarquitectura Intel ®, con el nombre de código 'Sandy Bridge', y se encuentra en plataformas que abarcan desde notebooks a servidores. Intel AVX mejora el desempeño gracias a vectores más anchos, nueva sintaxis ampliable y funcionalidad enriquecida. Esto resulta en una mejor administración de los datos y las aplicaciones para fines generales como el procesamiento de imágenes, sonido/video, simulaciones científicas, análisis financieros, y modelos y análisis tridimensionales.

Intel® Advanced Vector Extensions 512 (Intel® AVX-512)

En el futuro, algunos productos nuevos incluirán un avance importante hacia la compatibilidad con SIMD de 512 bits. Los programas pueden contener ocho números flotantes de doble precisión y dieciseis de precisión simple dentro de los vectores de 512 bits, así como ocho enteros de 64 bits y dieciseis de 32 bits. Esto permite el procesamiento del doble de la cantidad de elementos de datos que puede procesar IntelAVX/AVX2 con una sola instrucción y cuatro veces más las capacidades de Intel SSE.

Las instrucciones de Intel AVX-512 son importantes porque abren capacidades de rendimiento superiores para las tareas computacionales más exigentes. Las instrucciones de Intel AVX-512 ofrecen el grado más elevado de compatibilidad al incluir un nivel sin precedentes de enriquecimiento en el diseño de las capacidades de instrucciones.

Las características de Intel AVX-512 incluyen registros de 32 vectores, cada uno con 512 bits de ancho y ocho registros de máscaras dedicadas. Intel AVX-512 es un conjunto de instrucciones flexible que incluye compatibilidad con máscaras de difusión integradas para habilitar la predicción, el control de redondeo de puntos flotantes integrado, la supresión de fallas de puntos flotantes integrados, las instrucciones de dispersión, instrucciones de matemáticas de alta velocidad y la representación de grandes valores de desplazamiento.

Intel AVX-512 ofrece un grado de compatibilidad con Intel AVX que es más sólido que anteriores transiciones con los nuevos anchos para las operaciones de SIMD. A diferencia de Intel SSE e Intel AVX que no pueden mezclarse sin sufrir penalidades en el desempeño, la mezcla de las instrucciones de Intel AVX e Intel AVX-512 es compatible sin penalidades. Intel AVX registra la guía YMM0–YMM15 en los registros ZMM0–ZMM15 de Intel AVX-512 (en el modo x86-64), muy similar a las guías de los registros de Intel SSE en los registros de Intel AVX. Por tanto, en los procesadores compatibles con Intel AVX-512, las instrucciones de Intel AVX e Intel AVX2 funcionan en los valores inferiores de 128 o 256 bits de los primeros registros de 16 ZMM.

Puede encontrar más información sobre los detalles de las instrucciones de Intel AVX-512 en el blog "AVX-512 Instructions" (Instrucciones de AVX-512). Las instrucciones se documentan en la Intel® Architecture Instruction Set Extensions Programming Reference (Referencia de programación de extensiones de conjuntos de instrucciones en la Intel Architecture) (vea la ficha "Overview" (Visión general) de esta página).

Enhancing In-Vehicle-Infotainment Application Reliability and Performance using Intel® System Studio
Por Naveen Gv (Intel)Publicado en 10/13/20140
Intel based solution is available to reduce the time and cost of developing in-vehicle technologies by providing application-ready solutions consisting of compute modules, automotive middleware and development kits. Intel® System Studio can be used in various stages of In-Vehicle-Infotainment dev...
Intel® System Studio Case Studies
Por Naveen Gv (Intel)Publicado en 10/13/20140
Intel® System Studio is a very useful for developing variety of embedded applications, like In vehicle infotainment (IVI), telecom , Video Surveillance etc. Few case studies are documented and published for reference.
Digital Security and Surveillance on 4th generation Intel® Core™ processors Using Intel® System Studio 2015
Por Naveen Gv (Intel)Publicado en 10/08/20140
This article presents the advantages of developing embedded digital video surveillance systems to run on 4th generation Intel® Core™ processor with Intel® HD Graphics, in combination with the Intel® System Studio 2015 software development suite. While Intel® HD Graphics is useful for developing...
Memory profiling techniques using Intel System Studio
Por Naveen Gv (Intel)Publicado en 10/08/20140
Intel Inspector for Systems is dynamic and static analyzer identifies difficult to find memory and threading errors to ensure functional reliability
Suscribirse a Artículos de la Zona para desarrolladores Intel
No se encontró contenido
Suscribirse a Blogs de la Zona para desarrolladores Intel®

    Intel® Software Guard Extensions (Intel® SGX)

    Declaración de visión de Intel

    Las cargas de trabajo computarizado de hoy están incrementado en complejidad, con cientos de módulos de software entregado por distintos equipos distribuidos en todo el planeta. El aislamiento de cargas de trabajo en plataformas abiertas ha sido un esfuerzo continuo, comenzando con la arquitectura en modo protegido para crear la separación de privilegios entre los sistemas operativos y las aplicaciones. Sin embargo, los recientes ataques de software malicioso han demostrado la habilidad de penetrar en modos altamente privilegiados y de lograr controlar todo el software de una plataforma.

    Intel® Software Guard Extensions (Intel® SGX) es un nombre para las extensiones de la arquitectura Intel designado para incrementar la seguridad del software mediante un mecanismo de “zona de pruebas inversa”.  En este método, en lugar de intentar identificar y aislar todos los software maliciosos presentes en la plataforma, el software legítimo puede sellarse dentro de un enclave y protegerlo de ataques de software malicioso, sin tener en cuenta el grado de privilegio del software malicioso. Esto complementaría los esfuerzos continuos para proteger a la plataforma contra intrusiones de software malicioso, similar a la manera de instalar cajas de seguridad en nuestros hogares para proteger nuestros artículos valiosos y, al mismo tiempo, introducir sistemas de alarmas y cerraduras más sofisticadas para impedir ataques y atrapar a intrusos.

    Cómo comenzar (común para todos los ISA)

    Visión general

    Herramientas y descargas

    • No existen cambios en el contenido existente

    Contenido técnico

    No se encontró contenido
    Suscribirse a Blogs de la Zona para desarrolladores Intel®
    No se encontró contenido
    Suscribirse a Artículos de la Zona para desarrolladores Intel

    Intel® Memory Protection Extensions (Intel® MPX)

    Los sistemas PC sufren ataques maliciosos de creciente sofisticación y una de las formas más comúnmente observadas es causar o explotar el uso excesivo del búfer (o desbordamientos) en aplicaciones de software.

    Intel® Memory Protection Extensions (Intel® MPX) es un nombre para las extensiones de Intel Architecture diseñadas para incrementar la robustez del software. Intel MPX proporcionará características de hardware que se pueden utilizar en conjunto con los cambios en el compilador para comprobar que las referencias de la memoria destinadas al momento de la compilación no se conviertan en un peligro durante la ejecución (runtime). Dos de los objetivos más importantes de Intel MPX son: proporcionar esta capacidad sin impactar el código recientemente compilado y proporcionar mecanismos de compatibilidad con componentes de software legados. Intel MPX estará disponible en un procesador Intel® futuro.

    No se encontró contenido
    Suscribirse a Artículos de la Zona para desarrolladores Intel
    No se encontró contenido
    Suscribirse a Blogs de la Zona para desarrolladores Intel®

      Intel® Secure Hash Algorithm Extensions (Intel® SHA Extensions)

      Secure Hash Algorithm (SHA) es uno de los algoritmos criptográficos de uso más común.  Los usos principales de SHA incluyen la integridad de datos, la autenticación de mensajes, las firmas digitales y la deduplicación de datos.  A medida que crece el uso generalizado de las soluciones de seguridad, SHA ahora se puede ver en más aplicaciones que nunca. Intel® SHA Extensions se diseñaron para mejorar el rendimiento de estos algorimos de cómputos intensos en los procesadores basados en la Intel® architecture.

      Intel® SHA Extensions son una familia de siete instrucciones basadas en Intel® Streaming SIMD Extensions (Intel® SSE) que se utilizan juntas para acelerar el rendimiento del procesamiento de SHA-1 y SHA-256 en procesadores basados en la Intel architecture.  Dada la creciente importancia de SHA en nuestros dispositivos de computación de uso diario, las nuevas instrucciones se diseñaron para proporcionar un impulso necesario de rendimiento para aplicar un solo búfer de datos. Los beneficios de rendimiento no solo ayudarán a mejorar la respuesta y a disminuir el consumo de energía para una aplicación dada, si no que pueden facilitar que más desarrolladores adopten SHA en nuevas aplicaciones para proteger datos y, al mismo tiempo, contribuyan a sus metas para la experiencia de usuario. Las instrucciones se definen de manera tal que simplifican sus guías en un flujo de procesamiento del algoritmo de la mayoría de las bibliotecas de software, por tanto se habilita un desarrollo más sencillo.

      No se encontró contenido
      Suscribirse a Artículos de la Zona para desarrolladores Intel
      No se encontró contenido
      Suscribirse a Blogs de la Zona para desarrolladores Intel®
        Benefits of SSE/AVX processing when an integrated GPU is missing?
        Por Toby5
        Some Intel processors have an on-chip GPU (e.g. Intel Core i/-4770K using a HD Graphics 4600 GPU) whilst others don't have this (e.g  Intel Core i7 3930K). I'm wondering what implications this will have on SSE/AXV SIMD processing when such an integrated GPU is missing on the CPU. Even though there is support for SSE/AVX on many processor not having the embedded GPU, I wonder if this will reduce the benefit of using SSE/AVX significantly compared to CPUs with an embedded GPU?  I reckon one benefit is though an improved memory access pattern using SSE/AVX even for GPUs lacking an embedded CPU, but I also reckon this can achieved in other ways not using SSE/AVX.  Some thought on this?      
        Intel MPX, gcc/as fail to build glibc
        Por c_432
        Has anyone successfully compiled an MPX instrumented glibc? What version of glibc, gcc and binutils did you use? I'm having a terrible time trying to get this to work. I get errors of this form: http://pastebin.com/kRRDN43Q I have tried at least the following versions: gcc (GCC) 5.0.0 20141211 (experimental) using GNU assembler (Gentoo 2.24 p1.4) 2.24 gcc (GCC) 5.0.0 20141215 (experimental) using GNU assembler (Gentoo 2.24 p1.4) 2.24 gcc (GCC) 5.0.0 20141216 (experimental) using GNU assembler (Gentoo 2.24 p1.4) 2.24 gcc (GCC) 5.0.0 20141216 (experimental) using GNU assembler (GNU Binutils) 2.25.51.20141215 gcc (GCC) 5.0.0 20141216 (experimental) using GNU assembler (GNU Binutils) 2.25.51.20141216 gcc (GCC) 5.0.0 20140925 (experimental) using GNU assembler (GNU Binutils) 2.24.51.20140422 They all give the same errors. Note that I'm giving the compiler -fcheck-pointer-bounds and -mmpx, if I omit these, there are no compilation issues. Note that the last version is the same one as...
        Indirect Bit Indexing and Set
        Por Alexander L.44
           Hello together! This is my first post, so please be patient :) I've a very interesting problem. I also have a ready working solution, but this solution does not make me happy. For the first I will try to describe a problem as exact as possible. 1. Let be I (I for Image) a 2D array of bytes. 2. Each byte contain 2 independently indices - say upper 3 bits will be Y-index, lower 5 bits will be X-index 3. This easily defines a translation of I->YX 4. It's also noticeable that YX can be described as 2D bit image with only 8 rows and 32 columns, which makes exactly 256 binary cells 5. Full solution will require to set 1 to each cell adressed by I (see 1 and 2) 6. Accepted solution can be reduced to separatelly calculated "setted rows" and "setted columns" - means 8 bit for row and 32 bit for columns 7. As sufficient output for accepted solution will be easily two 32-bit registers/variables.   I've really no idea how to efficiently implement this thing. Moreover I've found ...
        Does VPMASKMOV require an aligned address?
        Por Nathan K.9
        The online https://software.intel.com/sites/landingpage/IntrinsicsGuide/ for VPMASKMOV says that "mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated."  But the documentation in the Intel Instruction Set Reference Guide does not mention an alignment requirement, and seems to imply that it is not required: "Faults occur only due to mask-bit required memory accesses that caused the faults.".   Agner Fog's documentation (which I presume is the primary source Intel uses when writing their manuals?)[1], says "The instruction VPMASKMOVD (AVX2) and VMASKMOVPS (AVX), etc. can be used for writing to the first part of an unaligned array up to the first 16-bytes boundary as well as the last part after the last 16-bytes boundary." What's the actual requirement for alignment for these instructions?    
        Huge time cost while assigning
        Por Xinjue Z.10
        Hello Guys:) It is very nice to have this forum. I'm a fresh on the ISA Extension and expect to have your insight:) My code snippet, which conducts a convolution computing, is attached as a figure. and here is my confusing issue: Time was consumed hugely when I tried to assign the computed result to image buffer. Computing time of extension sets(line 512~544) only takes about 7~8ms, but the assign work(line 548) takes about 25~26ms. The most confusing thing to me is that there is little time-cost while assign the image buffer with other value like loop control index(line 549)  or other register(line 552). As long as I try to assign the buffer with computed result(line 544), time-cost will raise hugely. I tried several ways(line 547~552) on assign work, all of these ways cost huge time as well. My env. info: compiler: icpc version 12.1.0 (gcc version 4.4.5 compatibility) OS: Linux version 2.6.32-220.4.1.el6.x86_64   if there is any unclear about the issue description, please kindly ...
        Cannnot change IA32_PERF_CTL value: it gets overwritten by the operating system
        Por Yuna H.4
        Hi, I'm running an experiment on a server machine with a quad-core Xeon X5355 processor running a linux system. I try to control core voltage and frequency separately by writing to the msr IA32_PERF_CTL (0x199). I change the value of IA32_PERF_CTL using a "wtmsr" command and verify that its value has been changed using a "rdmsr" command. However, when I run "rdmsr 0x199" again a few seconds later, I find that the value of IA32_PERF_CTL is overwritten with its previous value. The value of IA32_PERF_STATUS does not represent my change either. I suspect that it is the operating system that overwrites IA32_PERF_CTL to a fixed value, because the OS is trying to do power management. But I cannot find out which module is doing the power management. Here comes my question: 1. Will the operating system change the value of IA32_PERF_CTL? How can I disable this module? 2. If it is not the OS that writes to IA32_PERF_CTL, why the value of IA32_PERF_CTL is always overwritten to the same value? M...
        Suggestion about memory-access-signaling mechanism
        Por Luchezar B.3
        Hello, while I was trying to solve some particular multi-thread problem, it occurred to me that it could be solved more efficiently with special assistance from the CPU. The situation is as follows: say one thread needs to block until the content of a particular 4-byte (or can be other size) location in the memory is changed. (It think the usefulness of this is very obvious and there is no need to give concrete examples to demonstrate it). What are the currently available options:  1) the thread can spin-wait, but this is very inefficient because wastes CPU time/power.  2) spin-wait but with sleeping for some small time in the spin loop. This would preserve CPU time and power, but is not good if fast reaction is needed .  3) the thread can use some OS primitive (e.g. semaphore) to sleep and any other thread that writes to the memory location will also signal the OS primitive. The problems here are that :   a) the signaling thread must know about this primitive. This can be a problem...
        TSX results - please explain
        Por hasyed12
        I am using Roman Dementiev's code as a base and modifying it to determine if TSX operations are behaving according to expectations. https://software.intel.com/en-us/blogs/2012/11/06/exploring-intel-transactional-synchronization-extensions-with-intel-software I am counting the number of times that xbegin() returns successful, the number of times it aborts and the number of times that fallback lock is used. If I increase the number of threads that are launched, the number of fallback lock's increases proportionally. Similarly, the number of aborts increases proportionally. Originally, two threads were launched. I add the following code. HANDLE thread3 = (HANDLE) _beginthreadex(NULL, 0, &thread_worker, (void *)3, 0, NULL); HANDLE thread4 = (HANDLE) _beginthreadex(NULL, 0, &thread_worker, (void *)4, 0, NULL); .. .. WaitForSingleObject( thread3, INFINITE ); WaitForSingleObject( thread4, INFINITE ); --- --- --- I was hoping to see similar results, when I increase the size o...
        Suscribirse a Foros