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).

How to manually target 2nd and 3rd generation Intel® Core™ processors with support for Intel® AVX
Di Martyn Corden (Intel)Pubblicato il 08/02/20120
Manual cpu dispatch may be used to write code that will be executed only on Intel processors with support for Intel® Advanced Vector Extensions, such as 2nd generation Intel® Core™ processors (formerly code named “Sandy Bridge”), 3rd generation Intel® Core™ processors (formerly code named "Ivy B...
How to Compile for Intel® AVX
Di Martyn Corden (Intel)Pubblicato il 08/02/20122
Use the Intel Compiler 11.1 or 12.0 with the switch /QxAVX (Windows*) or -xavx (Linux*) to compile applications for Intel® Advanced Vector Extensions (Intel® AVX).
Intel® AVX2 optimization in Intel® MKL
Di Naveen Gv (Intel)Pubblicato il 06/28/20120
The specific optimization and general support for the latest Intel® AVX2 instructions have been added in the Intel MKL v11.0. This article lists the specific functions that are optimized for Intel AVX2.
Intel IPP support for Intel® AVX2
Di adminPubblicato il 06/20/20122
List of Intel IPP functions optimized for processor code name Haswell
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
        Working assembly example for MPX?
        Di c_432
        Does there already exist some small working example of an assembly program that enables MPX and demonstrates (some) of the instructions -- when executed in the SDE? I am aware that MPX appears to be enabled in libmpx. However I'd like to see this done by hand without using libmpx, assemble the program using an MPX enabled NASM and of course still run it in the SDE, just to play around with it. I've already looked for this without finding anything, if someone could point me to such an already existing example that would be great.
        When is AVX 512 on a chip, not just an emulator?
        Di Thomas H.4
        I'm having a really hard time finding anything other than rumors about this. I have seen the official statement that Broadwell chips will be available before Christmas, but I can't tell if Broadwell includes the AVX 512 extensions or not (I've heard both ways).  Anyone know for sure? Better yet can anyone point me to a link on intel.com that provides a definitive answer?
        Intel - Version 19 of ISA Extensions manual available
        Di Russell Van Zandt1
        Intel, an old version of the ISA Extensions manual is on sticky status here. A newer version, 19, is available now: https://software.intel.com/en-us/intel-isa-extensions
        PUSH and POP of XMM/YMM registers
        Di srinivasu8
        Hi, I have written a function in that AVX2 instructions are using XMM/YMM registers. Due to use of some of these registers in this function, causing other part of application is crashing. I have observed strange behavior is that If these registers are pushed and popped as like non-volatile general purpose registers are pushed and popped. Please help me whether, we need to push and pop the SIMD registers also. If so all XMM/YMM registers are needs to be saved and how? Up to now I didn't read any thing about saving of the XMM/YMM registres also, but my application is working after these changes only  
        Disable SSE* instructions
        Di Hsunwei H.6
        Hello, I am trying to prevent GCC from generating SSE* related instructions. However, SSE uops are still observed using Oprofile. I used the following GCC flags to do so:  -march=i386 -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -mfpmath=387 Oprofile outputs:         Event                                          Count                          % time counted         FP_COMP_OPS_EXE:0x1           3,554,989,165,876        26.67         FP_COMP_OPS_EXE:0x2           5,571                           26.67         FP_COMP_OPS_EXE:0x4           0                                 26.67         FP_COMP_OPS_EXE:0x8           18,729,332                   26.67         FP_COMP_OPS_EXE:0x10          0                                 26.67         FP_COMP_OPS_EXE:0x20          0                                 26.67         FP_COMP_OPS_EXE:0x40          0                                 26.67         FP_COMP_OPS_EXE:0x80          0                               ...
        instructional change __m128i
        Di lex1
        Hi, good afternoon. I am using a __m128i for store 16 elements of 8 bits __m128i s0 = _mm_set_epi8(pixelsTemp[95], pixelsTemp[94], pixelsTemp[93], pixelsTemp[92], pixelsTemp[91], pixelsTemp[90], pixelsTemp[89], pixelsTemp[88], pixelsTemp[87], pixelsTemp[86], pixelsTemp[85], pixelsTemp[84], pixelsTemp[83], pixelsTemp[82], pixelsTemp[81], pixelsTemp[224]); __m128i s1 = _mm_set_epi8(pixelsTemp[239], pixelsTemp[238], pixelsTemp[237], pixelsTemp[236], pixelsTemp[235], pixelsTemp[234], pixelsTemp[233], pixelsTemp[232], pixelsTemp[231], pixelsTemp[230], pixelsTemp[229], pixelsTemp[228], pixelsTemp[227], pixelsTemp[226], pixelsTemp[80], (char)(175)); after i am adding both variables (s0 and s1) __m128i sum = _mm_add_epi8 (s0, s1); the problem is that when the sum is greater than 255, stored back zero, I know that 8 bits can store up to 255 maximum.  But the question is whether there is any instruction to store the result of the amounts in 16 bits rather than 8 bits. Or if there is a better ...
        Need help: Why my avx code is slower than SSE code?
        Di Chen S.8
        The code is compiled using MSVC2010 SP1, with /arch:AVX, and the AVX version is slightly (5~10%) slower than the SSE version. I am using an E-1230 V2 processor with 16GB dual-channel DDR3-1600 memory. Both functions read 416 (9 float point vectors of length 8, and another 4 float vectors of length 8) byte data from memory, and return a float value, there is no memory store involved. The compiled SSE version has 111 instructions, and the AVX version has 67 instructions. All memory visits are aligned (16-byte for SSE, 32-byte for AVX). The difference between the two versions is only that the SSE version process 4 floating points in each instruction, so need two instructions for a length 8 vector, while the AVX version process 8 floating points in each instruction. The AVX version should be at least as fast as the SSE version even if the program is memory-bound, but it turns out the AVX version is slower. The code is the core in an image processing program, the SSE version processes th...
        SDE emulation issue
        Di srinivasu4
        I am using the SDE emulator with AVX2 instruction set, I have written some simple program but it is crashing in RELEASE mode with SDE emulator. Please let me know whether SDE emulates the stack related operations or not.  YASM synatxed assembly programming section .txt  global dummy_asm     dummy_asm:     push rbp     mov  rbp, rsp     sub rsp, 1024          push rbx ;no need to push in this program, but in actual program using this register          vmovdqu [rsp], xmm0 ;xmm0 is dummy value     pop rbx     mov rsp, rbp ; restore rsp     pop rbp ; restore previous rbp     ret            
        Iscriversi a Forum