Intel® Developer Zone:
Estensioni dei set di istruzioni dell'architettura Intel

L'Instruction Set Architecture (ISA) di Intel continua ad evolversi per migliorare la funzionalità, le prestazioni e l'esperienza dell'utente. Vi presentiamo, di seguito, le estensioni programmate per l'ISA, che sono nuove come quelle programmate per miglioramenti nelle future generazioni di processori. Pubblicando queste estensioni prima del previsto, Intel aiuta a verificare che l'ecosistema del software abbia il tempo di innovare e di apparire sul mercato con prodotti nuovi e migliorati, quando i processori saranno lanciati.

Panoramica

Strumenti e download

  • Compilatore C++ Intel®

    Il compilatore C++ Intel® può essere scaricato dai clienti con licenza nel centro di registrazione Intel®. È disponibile, inoltre, il download gratuito delle versioni di valutazione dei prodotti Intel® per lo sviluppo di software.

  • Intel Intrinsics Guide

    Intel Intrinsics Guide è uno strumento di riferimento interattivo per le istruzioni intrinsiche Intel, che sono funzioni in stile C che forniscono l'accesso a numerose istruzioni Intel, incluse Intel® Streaming SIMD Extensions (Intel® SSE), Intel® Advanced Vector Extensions (Intel® AVX) e altre, senza che sia necessario scrivere codice assembly.

Intel® Advanced Vector Extensions (Intel® AVX)

Ottenere prestazioni di elaborazione superiori è una necessità crescente di tutti i segmenti di mercato del settore. Per supportare una domanda crescente e modelli di utilizzo in evoluzione, offriamo  Intel® Advanced Vector Extensions (Intel® AVX) per continuare la nostra tradizione di innovazione.

Intel® AVX è un nuovo set di istruzioni a 256 bit che rappresenta l'evoluzione di Intel® SSE ed è progettato per le applicazioni ad uso intensivo della virgola mobile (FP). È stato fatto uscire all'inizio del 2011 come parte della famiglia di processori basati sulla microarchitettura Intel® con nome in codice Sandy Bridge ed è presente in numerose piattaforme, dalle piattaforme notebook a quelle server. Intel AVX migliora le prestazioni grazie a vettori più ampi, una nuova sintassi flessibile e funzionalità complete. Il risultato è una migliore gestione dei dati e delle applicazioni per uso generico come l'elaborazione di immagini e di audio/video, le simulazioni scientifiche, le analisi di dati finanziari, la modellazione e l'analisi 3D.

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

In futuro, alcuni dei nuovi prodotti presenteranno un passaggio significativo al supporto SIMD a 512-bit. I programmi possono includere otto numeri in virgola mobile a doppia precisione e sedici a precisione singola entro i vettori a 512-bit, oltre a otto numeri interi a 64-bit e sedici a 32-bit. Questo consente di elaborare il doppio del numero di elementi dei dati che l'IntelAVX/AVX2 riesce ad elaborare con un'unica istruzione e quattro volte le capacità di Intel SSE.

Le istruzioni Intel AVX-512 sono importanti perché aprono la strada a capacità di prestazioni superiori per le attività computazionali più impegnative. Le istruzioni Intel AVX-512 offrono il più alto grado di supporto al compilatore, includendo un livello senza precedenti di ricchezza nella progettazione delle capacità di istruzione.

Le funzioni di Intel AVX-512 includono 32 registri vettore, ciascuno dell'ampiezza di 512-bit, e otto registri maschera dedicati. Intel AVX-512 è un insieme flessibile di istruzioni che include supporto per la trasmissione, mascheramento incorporato per attivare il predicato, virgola mobile incorporata per controllare l'arrotondamento, virgola mobile incorporata per la soppressione degli errori, istruzioni di scattering, istruzioni di matematica ad alta velocità e rappresentazione compatta di grandi valori di sfasamento.

Intel AVX-512 offre un livello di compatibilità con Intel AVX più solido di quello delle transizioni precedenti verso nuove ampiezze per le operazioni SIMD. A differenza di Intel SSE e Intel AVX, che non potevano essere mescolati senza penalità di prestazione, le istruzioni di Intel AVX e Intel AVX-512 possono essere mescolate perché sono supportate senza penalità. I registri Intel AVX registers YMM0–YMM15 mappano nei registri Intel AVX-512 ZMM0–ZMM15 (in modalità x86-64), in modo molto simile a come i registri Intel SSE mappano nei registri Intel AVX. Pertanto, in processori con supporto Intel AVX-512, le istruzioni Intel AVX e Intel AVX2 operano sui bit 128 o 256 inferiori dei primi registri 16 ZMM.

Altre informazioni sui dettagli delle istruzioni Intel AVX-512 si trovano nel blog "Istruzioni AVX-512". Le istruzioni sono documentate nel Riferimento alla programmazione di estensioni impostate di Intel® Architecture (vedere la scheda "Panoramica" su questa pagina).

Linux* ABI
Di Milind Girkar (Intel)Pubblicato il 07/18/20130
by Milind Girkar, Hongjiu Lu, David Kreitzer, and Vyacheslav Zakharin (Intel) Description of the Intel® AVX, Intel® AVX2, Intel® AVX-512 and Intel® MPX extensions required for the Intel® 64 architecture application binary interface.
Samples for Intel® C++ Composer XE
Di Jennifer J. (Intel)Pubblicato il 02/25/20130
Intel® C++ compiler is an industry-leading C/C++ compiler, including optimization features like auto-vectorization and auto-parallelization, OpenMP*, and Intel® Cilk™ Plus multithreading capabilities; plus the highly optimized performance libraries. We have created a list of articles with sample...
VecAnalysis Python* Script for Annotating Intel C++ & Fortran Compilers Vectorization Reports
Di mark-sabahi (Intel)Pubblicato il 01/16/20130
  This is the Python* script used to annotate Intel® C++ and Fortran compiler 13.1 (Intel® C++/Fortran/Visual Fortran Composer XE 2013 Update 2 and later) vectorization reports produced at -vec-report7.  The attached zip file contains: vecanalysis.py  vecmessages.py README-vecanalysis.txt NOTE: Y...
Webinar: Get Ready for Intel® Math Kernel Library on Intel® Xeon Phi™ Coprocessors
Di Zhang Z (Intel)Pubblicato il 12/05/20121
Intel recently unveiled the new Intel® Xeon Phi™ product – a coprocessor based on the Intel® Many Integrated Core architecture. Intel® Math Kernel Library (Intel® MKL) 11.0 introduces high-performance and comprehensive math functionality support for the Intel® Xeon Phi™ coprocessor. You can downl...
Iscriversi a Articoli Intel Developer Zone
Nessun contenuto trovato
Iscriversi a Blog Intel® Developer Zone

    Intel® Software Guard Extensions (Intel® SGX)

    Visione programmatica di Intel

    I carichi di lavoro del computing di oggi stanno diventando più complessi, con centinaia di moduli software consegnati da diversi team sparsi per il mondo. L'isolamento dei carichi di lavoro su piattaforme aperte si è rivelato uno sforzo continuato, iniziando con l'architettura in modalità protetta per creare una separazione di privilegi tra sistema operativo e applicazioni. Recenti attacchi di malware, comunque, hanno dimostrato l'abilità di penetrare in modalità con alto livello di privilegi e di riuscire a controllare l'intero software su una piattaforma.

    Intel® Software Guard Extensions (Intel® SGX) è un nome per le estensioni dell'architettura Intel progettate per aumentare la sicurezza del software attraverso un meccanismo a “sandbox inversa”. Con questo approccio, invece di tentare di identificare e isolare tutto il malware presente sulla piattaforma, si sigilla software legittimo in un'enclave e lo si protegge dagli attacchi del malware, indipendentemente dal livello di privilegio di quest'ultimo. Questo sarebbe un complemento per gli sforzi continui per proteggere la piattaforma dall'intrusione del malware, simili all'installazione di una cassaforte nelle nostre case per proteggere gli oggetti di valore, persino quando aggiungiamo dispositivi di blocco e sistemi di allarme ancora più sofisticati per impedire i furti e riuscire a catturare gli intrusi.

    Per iniziare (comune a tutta l'ISA)

    Panoramica

    Strumenti e download

    • Nessuna modifica al contenuto esistente

    Contenuto tecnico

    Nessun contenuto trovato
    Iscriversi a Blog Intel® Developer Zone
    Nessun contenuto trovato
    Iscriversi a Articoli Intel Developer Zone

    Intel® Memory Protection Extensions (Intel® MPX)

    I sistemi dei computer devono affrontare attacchi dannosi sempre più sofisticati, e una delle forme più comunemente osservate è il causare o lo sfruttare le eccedenze (gli eccessi) dei buffer nelle applicazioni software.

    Intel® Memory Protection Extensions (Intel® MPX) è un nome per le estensioni Intel Architecture progettate per aumentare la robustezza del software. Intel MPX offrirà funzioni hardware da utilizzare assieme ai cambi dei compilatori per controllare che i riferimenti della memoria studiati per il momento della compilazione non diventino pericolosi al runtime. Due degli obiettivi più importanti di Intel MPX sono: offrire questa capacità a basso prezzo per il codice appena compilato, e fornire meccanismi di compatibilità con componenti software legacy. Intel MPX sarà disponibile in un futuro processore Intel®.

    Nessun contenuto trovato
    Iscriversi a Articoli Intel Developer Zone
    Nessun contenuto trovato
    Iscriversi a Blog Intel® Developer Zone

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

      Secure Hash Algorithm (SHA) è uno degli algoritmi crittografici usati più frequentemente.  Gli SHA sono principalmente utilizzati per l'integrità dei dati, l'autenticazione di messaggi, le firme digitali e la deduplicazione dei dati.  Con il continuo aumento dell'uso già diffusissimo delle soluzioni di sicurezza, gli SHA possono essere notati in più applicazioni che mai. Le estensioni Intel® SHA sono progettate per migliorare le prestazioni di questi algoritmi intensivi di computazione su processori basati sull'architettura Intel®.

      Le estensioni Intel® SHA consistono in una famiglia di sette istruzioni basate su estensioni Intel® Streaming SIMD Extensions (Intel® SSE), utilizzate assieme per accelerare le prestazioni degli algoritmi di elaborazione SHA-1 e SHA-256 su processori basati su architettura Intel.  Data la sempre crescente importanza degli SHA nei nostri dispositivi di elaborazione di uso quotidiano, le nuove istruzioni sono progettate per fornire un aumento necessario delle prestazioni della funzione di hash per un solo buffer di dati. I vantaggi delle prestazioni non aiuteranno solo a migliorare le risposte e a ridurre il consumo di alimentazione per una data applicazione; potrebbero anche consentire agli sviluppatori di adottare gli SHA in nuove applicazioni per proteggere i dati contemporaneamente al raggiungimento degli obiettivi dell'esperienza utente. Le istruizioni sono definite in un modo che semplifica la loro mappatura nel flusso di elaborazione degli algoritmi della maggioranza delle librerie software, permettendo così uno sviluppo più facile.

      Nessun contenuto trovato
      Iscriversi a Articoli Intel Developer Zone
      Nessun contenuto trovato
      Iscriversi a Blog Intel® Developer Zone
        BEXTR intrinsic incompatible with GCC
        Di Nathan K.1
        The __builtin_ia32_bextr_u64() intrinsic for the BMI instruction BEXTR in ICC is incompatible with the GCC.  The GCC version expects two arguments, but ICC takes three.  #include <x86intrin.h> #include <stdint.h> // icc wants 3 args for __builtin_ia32_bextr_u64() but gcc wants 2 uint64_t bextr_intrinsic(uint64_t src, uint64_t pattern) { return __builtin_ia32_bextr_u64(src, pattern); }  nate@haswell:~/intel$ gcc-4.8 -std=gnu99 -march=native -O3 -c bextr_intrinsic_test.c -o test.o nate@haswell:~/intel$ objdump -d test.o test.o:     file format elf64-x86-64 Disassembly of section .text: 0000000000000000 <bextr_intrinsic_compatatility>:    0:    c4 e2 c8 f7 c7           bextr  %rsi,%rdi,%rax    5:    c3                       retq nate@haswell:~/intel$ icc -std=gnu99 -march=native -O3 -c bextr_intrinsic_test.c -o test.o bextr_intrinsic_test.c(11): error #165: too few arguments in function call       return __builtin_ia32_bextr_u64(src, pattern);       ...
        What is _MM_SHUFFLE macro meaning in the context of AVX
        Di Hien P.2
        Hi guys, I really do not understand yet the _MM_SHUFFLE macro meaning in the context of AVX _mm256_shuffle_ps() (For SSE, it's Ok). Any help for this? Thanks.  
        Performance penalty for mixed AVX512 code?
        Di Russell Van Zandt7
        There is a known performance penalty for mixing AVX with legacy code on today's Haswell processors. Will this same problem exist in the Skylake chips and AVX512? Will the delay be even longer for the ZMMs, since there are twice as many to save & restore and they are twice as long? The workaround instruction for this, VZEROUPPER, is not listed as changed in Intel's Instruction Extensions manual. Won't there be changes like zeroing the high portion of the ZMM register? This is documented by Intel: in section 11.3, "Mixing AVX with SSE Code" Intel's Architecture Optimizations Manual (248966-029) in a long 2008 discussion in this forum "Software consequences of extending XMM to YMM" with discussion from Mark Buxton from Intel: https://software.intel.com/en-us/forums/topic/301853 Intel writes: "These save and restore operations have a high penalty. Frequent execution of these transitions causes significant performance loss" and on this forum commented that the penalty was "someth...
        Possible XED Decode Bug (from Pin rev 65163)
        Di Paul J.2
        .ExternalClass .ecxhmmessage P { padding:0px; } .ExternalClass body.ecxhmmessage { font-size:12pt; font-family:Calibri; } I may have spotted a bug in XED when decoding 64-bit instructions while unit testing my own disassembler. To recreate:  I have setup the decoder to use XED_MACHINE_MODE_LONG_64 with XED_ADDRESS_WIDTH_64b. The problem appears to be that XED will more than one REX prefix and generate an instruction. For example:   41-40-26-E8-77-70-C5-A2 call 0xffffffffa2dc607f   The E8 is the call instruction op code, with a 41-40-26 prefix (hex). 41 and 40 are obviously both REX prefixes.   According to section Volume 2, 2.2.1 (REX prefixes) of the Intel 64 and IA-32 Architectures (June 2013 - Combined) "Only one REX prefix is allowed per instruction".   Is this a fault of XED or am I misunderstanding. Apologies if so!   I was using the XED decoder which came with the latest revision of Pin, r65136.   If this is of use then I've noticed faults in XED previously ...
        Scaling TSX to multi-socket systems
        Di Stephen R.4
        Hi, This is my first time posting here, sorry if this is in the wrong subforum. To the best of my knowledge, TSX uses the L1 cache coherency protocol to monitor the read/write sets for a transaction. Something which I've been wondering for a while now is how would this scale to systems with >1 processors. I'm not familiar with how such systems maintain cache coherency at L1, but is it feasible for TSX to work correctly and efficiently in these kinds of systems? Also, is this why the server variants of Haswell are only available for single socket systems? Thanks, Stephen
        SSE4 Intrensics on Visual Studio 2008
        Di Uday Krishna G.6
        Hi, Am optimizing my code application using Intel SSE intrinsic. It works fine with Intel compiler for 64-bit and 32-bit in MSVC 2008 IDE. The same applications behaving differently with MSVC compiler for 32/64- bit run. I would like to know is there any limitation for MSVC 2008 IDE with respect to Intel SSE intrinsics( Am using upto SSE4.2).
        BNDLDX/BNDSTX, BNDSTATUS error = 2, expected behavior?
        Di c_433
        Consider the example given at https://software.intel.com/en-us/blogs/2013/07/22/intel-memory-protectio... in particular the example "Another simple example demonstrates using of bndldx and bndstx instructions.". Adapting this example to include a main function calling foo and having p and q defined in a different source file and pointed to a couple buffers each (source included at the bottom of this post), I get BNDSTATUS set to error = 2 (invalid BD entry) for some of the BNDSTX and BNDLDX instructions. I've noticed this also happens in other test/example programs. Why does this happen? Is this behavior normal and to be expected? The program otherwise works as expected and detects the bound violation, so I'm guessing there is something obvious I'm missing. Program received signal SIGSEGV, Segmentation fault. 0x000000000040071e in _GLOBAL__sub_P_00102_0_p () at externs.c:5 5       int *q = array_q;    0x0000000000400700 <_GLOBAL__sub_P_00102_0_p+0>:     55      push   rbp ...
        Latest GCC to use with the SDE for MPX?
        Di c_431
        I'm aware there are links to download binary versions of GCC at https://software.intel.com/en-us/articles/intel-software-development-emu... however the latest experimental version of GCC appears to be quite more recent than this. However I'm confused about what branch I should be using if I want to build and use the latest MPX enabled development version of GCC with the Intel SDE. Trying to use the branch svn/mpx or origin/ienkovic/mpx, these both fail to compile on my system. If I attempt to compile the main branch then GCC builds correctly but I don't get any MPX functionality. I'm using the following guides to build and install GCC: https://gcc.gnu.org/install/configure.html https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler
        Iscriversi a Forum