Zone des développeurs Intel® :
Extensions ISA (Instruction Set Architecture) Intel

L’architecture ISA (Instruction Set Architecture) d’Intel continue d’évoluer afin d’améliorer la fonctionnalité, les performances et l’expérience utilisateur. Vous trouverez ci-dessous les extensions planifiées de l’ISA qui sont nouvelles ainsi que celles qui sont planifiées en vue d’améliorer les générations de processeurs à venir. En publiant ces extensions de manière précoce, Intel contribue à s’assurer que l’écosystème logiciel a le temps d’innover et de mettre sur le marché des améliorations et de nouveaux produits lorsque les processeurs seront lancés.

Présentation

Outils et téléchargements

  • Compilateur Intel® C++

    Le compilateur Intel® C++ est disponible au téléchargement depuis Intel® Registration Center à tous les clients possédant une licence. Des versions d’évaluation des produits Intel® de développement logiciel sont également disponibles en téléchargements gratuits.

  • Guide Intel Intrinsics

    Le guide Intel Intrinsics est un outil de référence interactif pour instructions intrinsèques Intel, qui sont des fonctions de style C qui fournissent l’accès à de nombreuses instructions Intel, y compris les extensions Intel® Streaming SIMD Extensions (Intel® SSE), Intel® Advanced Vector Extensions (Intel® AVX) et plus encore, sans devoir écrire le code assembleur.

  • Compilateur Gcc
    Le compilateur gcc et la bibliothèque glibc prenant en charge les instructions Intel® AVX, Intel® AVX2, Intel® AVX-512 et Intel® MPX peuvent être téléchargés sous licence GPL depuis la page Intel Software Development Emulator.

Intel® Advanced Vector Extensions (Intel® AVX)

L’accroissement des performances informatiques représente toujours un besoin dans tous les segments industriels. Pour soutenir la demande croissante et les modèles d’utilisation en constante évolution, nous poursuivons notre tradition novatrice avec les extensions Intel® AVX (Intel® Advanced Vector Extensions), actuellement en cours de production.

Intel® AVX est une nouvelle extension de jeu d’instructions de 256 bits pour Intel® SSE, conçue pour les applications utilisant le calcul en virgule flottante de manière intensive. Elle a été lancée début 2011 dans le cadre de la famille de processeurs de microarchitecture Intel® dont le nom de code est Sandy Bridge et est présente dans les plates-formes s’étendant des portables aux serveurs. Intel AVX améliore les performances grâce à des vecteurs élargis, une nouvelle syntaxe extensible et des fonctionnalités enrichies. Cela entraîne une meilleure gestion des données et des applications générales telles que le traitement des images, de l’audio et de la vidéo, les simulations scientifiques, les analyses financières et la modélisation et l’analyse 3D.

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

À l’avenir, certains de nos produits feront un bond en avant important, avec la prise en charge d’un traitement SIMD de 512 bits. Les vecteurs 512 bits de ces programmes peuvent comporter huit nombres flottants en double précision et seize nombres flottants en simple précision, ainsi que huit nombres entiers de 64 bits et seize nombres entiers de 32 bits. Cela permet de traiter deux fois plus d’éléments de données qu’IntelAVX/AVX2 avec une instruction simple et offre des capacités quatre fois supérieures à celle d’Intel SSE.

Les instructions Intel AVX-512 sont importantes car elles offrent des capacités de performance supérieures pour les tâches de calcul exigeantes. Les instructions Intel AVX-512 offrent le plus haut degré de prise en charge pour les compilateurs car les capacités de leurs instructions sont conçues pour offrir un niveau de richesse sans précédent.

Les fonctionnalités des instructions Intel AVX-512 comprennent 32 registres de vecteur, d’une bande passante de 512 bits chacun, et huit registres de masquage dédiés. Intel AVX-512 est un jeu d’instructions flexible qui comprend la prise en charge de la diffusion, du masquage intégré permettant la prédication, du contrôle intégré de l’arrondissement en virgule flottante, de la suppression intégrée des erreurs de traitement en virgule flottante, des instructions réparties, des instructions mathématiques à grande vitesse, et de la représentation compacte de grandes valeurs de déplacement.

Intel AVX-512 offre un niveau de compatibilité avec Intel AVX qui est supérieur à celui des transitions de bande passantes antérieures pour les opérations SIMD. Contrairement aux instructions Intel SSE et Intel AVX qui ne peuvent pas être mélangées sans pénaliser les performances, le mélange d’instructions Intel AVX et Intel AVX-512 est pris en charge sans que les performances soient affectées. Les registres YMM0–YMM15 d’Intel AVX se mappent aux registres ZMM0–ZMM15 d’Intel AVX-512 (en mode x86-64), de manière très semblable au mappage des registres Intel SSE sur les registres Intel AVX. En conséquence, sur les processeurs prenant en charge les instructions Intel AVX-512, les instructions Intel AVX et Intel AVX2 fonctionnement sur les 128 ou 256 bits inférieurs des 16 premiers registres ZMM.

Vous trouverez des informations plus détaillées sur les instructions Intel AVX-512 sur le blog « AVX-512 Instructions ». Les instructions sont documentées dans la Référence de programmation des extensions de jeux d’instructions de l’architecture Intel® (voir l’onglet « Présentation » de cette page).

Diagnostic 15537: Loop was not vectorized: implied FP exception model prevents usage of SVML library.
Par Devorah H. (Intel)Publié le 10/29/20140
Product Version: Intel(R) Visual Fortran Compiler XE 15.0.0.070 Cause: The vectorization report generated when using Visual Fortran Compiler's  flags and optimization options ( -O2   -fpe:0   -Qopt-report:2  ) states that loop was not vectorized due to Floating-Point exception handling . Exa...
Diagnostic 15534: Loop was not vectorized: loop contains arithmetic if or computed goto.
Par Devorah H. (Intel)Publié le 10/29/20140
Product Version: Intel(R) Visual Fortran Compiler XE 15.0.0.070 Cause: The vectorization report generated when using Visual Fortran Compiler's optimization options ( -O3 or -O2  -Qopt-report:2 ) states that loop was not vectorized since loop contains GOTO statement. Example: An example below ...
Diagnostic 15532: Loop was not vectorized: compile time constraints prevent loop optimization
Par Devorah H. (Intel)Publié le 10/29/20140
Product Version: Intel(R) Visual Fortran Compiler XE 15.0.0.070 Cause: The vectorization report generated when using Visual Fortran Compiler's optimization options ( -O2  -Qopt-report:2 ) states that compile time constraints prevent optimization. Example: An example below will generate the fo...
Diagnostic 15527: Loop was not vectorized: function call cannot be vectorized
Par Devorah H. (Intel)Publié le 10/29/20140
Product Version: Intel(R) Visual Fortran Compiler XE 15.0.0.070 Cause: The vectorization report generated when using Visual Fortran Compiler's optimization options ( -O2  -Qopt-report:2 ) states that loop was not vectorized since loop with function call cannot be vectorized. Example: An examp...
S’abonner à Articles de la Zone des développeurs Intel
Aucun contenu trouvé
S’abonner à Blogs de la Zone des développeurs Intel®

    Intel® Software Guard Extensions (Intel® SGX)

    Déclaration sur la vision de l’avenir d’Intel

    Les charges de travail du traitement informatique d’aujourd’hui sont d’une complexité croissante, des centaines de modules de logiciels étant produits par différentes équipes éparpillées dans le monde entier. L’isolation des charges de travail sur des plates-formes ouvertes a représenté un effort constant, commençant par l’architecture en mode protégé, permettant de créer une séparation privilégiée enter les systèmes d’exploitation et les applications. Cependant, les attaques de logiciels malveillants récentes ont démontré la capacité de pénétrer dans des modes hautement privilégiés et de prendre le contrôle de tous les logiciels d’une plate-forme.

    Intel® Software Guard Extensions (Intel® SGX) est le nom donné aux extensions d’architecture Intel conçues pour accroître la sécurité des logiciels par un mécanisme de « bac à sable inversé ». Dans cette approche, plutôt que de tenter d’identifier et d’isoler tous les logiciels malveillants d’une plate-forme, les logiciels légitimes peuvent être isolés dans une enclave et protégés des attaques de logiciels malveillants, quel que soit le niveau de privilège de ces derniers. Cela permettrait de complémenter les efforts continus de sécurisation de la plate-forme contre l’intrusion de logiciels malveillants, tout comme nous installons des coffres-forts dans nos maisons pour protéger nos objets de valeur alors même que nous introduisons des systèmes de verrouillage et d’alarme plus sophistiqués cherchant à prévenir les intrusions et à attraper leurs auteurs.

    Démarrage (commun à toutes les ISA)

    Présentation

    Outils et téléchargements

    • Pas de changement apporté au contenu existant

    Contenu technique

    Aucun contenu trouvé
    S’abonner à Blogs de la Zone des développeurs Intel®
    Aucun contenu trouvé
    S’abonner à Articles de la Zone des développeurs Intel

    Intel® Memory Protection Extensions (Intel® MPX)

    Les systèmes informatiques subissent des attaques malveillantes de plus en plus sophistiquées et une des formes les plus communément observées vise à provoquer ou exploiter des dépassement de mémoire tampon dans les applications logicielles.

    Intel® Memory Protection Extensions (Intel® MPX) est un nom donné aux extensions de l’architecture Intel conçues pour accroître la robustesse des logiciels. Intel MPX offrira des fonctionnalités matérielles pouvant être utilisées conjointement avec des modifications du compilateur pour vérifier que les références de mémoire prévues au moment de la compilation ne posent pas de problèmes au moment de l’exécution. Deux des principaux objectifs d’Intel MPX sont de fournir ces capacités en utilisant peu de ressources pour le code nouvellement compilé et d’offrir des mécanismes de compatibilité avec les composants logiciels existants. Intel MPX sera introduit sur les processeurs Intel® à venir.

    Introduction to Intel® Memory Protection Extensions
    Par RB (Intel)Publié le 07/16/20130
    The C and C++ languages provide for memory access via pointers, however, these languages do not ensure the safe use of pointers. Left undetected, the unsafe use of pointers puts an application at risk of data corruption or malicious attack via buffer overruns and overflows. Intel is always looki...
    Intel® Intrinsics Guide
    Par adminPublié le 10/30/201218
    Overview The Intel Intrinsics Guide is an interactive reference tool for Intel intrinsic instructions, which are C style functions that provide access to many Intel instructions – including Intel® Streaming SIMD Extensions (Intel® SSE), Intel® Advanced Vector Extensions (Intel® AVX), and more – w...
    Intel® Software Development Emulator Release Notes
    Par Ady Tal (Intel)Publié le 06/15/20120
    Release notes for the Intel® Software Development Emulator
    Intel® Software Development Emulator
    Par Ady Tal (Intel)Publié le 06/15/201220
      What If Home | Product Overview | FAQ | Primary Technology Contacts | Discussion Forum | Blog     Product Overview This emulator is called Intel® Software Development Emulator or Intel® SDE, for short. The current version is 7.15 and was released Jan 11, 2015. This version correspond...
    S’abonner à Articles de la Zone des développeurs Intel
    Aucun contenu trouvé
    S’abonner à Blogs de la Zone des développeurs Intel®

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

      L’algorithme SHA (Secure Hash Algorithm) est un des algorithmes de chiffrement les plus utilisés.  L’algorithme SHA est utilisé principalement pour l’intégrité des données, l’authentification des messages, les signatures numériques et la déduplication des données.  Alors que l’omniprésence des solutions de sécurité continue de croître, l’algorithme SHA se trouve dans plus d’applications que jamais auparavant. Les extensions Intel® SHA Extensions sont conçues pour améliorer les performances de ces algorithmes exigeant un calcul intensif sur les processeurs d’architecture Intel®.

      Les extensions Intel® SHA Extensions sont une famille de sept instructions basées sur les extensions Intel® SSE (Intel® Streaming SIMD Extensions) qui sont utilisées conjointement pour accélérer les performances des traitements SHA-1 et SHA-256 sur les processeurs d’architecture Intel.  Compte tenu de l’importance croissante que prend l’algorithme SHA dans les appareils informatiques que nous utilisons tous les jours, les nouvelles instructions sont conçues pour fournir une amélioration des performances bien nécessaire au hachage d’un simple tampon de données. Les meilleures performances permettront d’améliorer la réactivité et de diminuer la consommation électrique d’une application donnée, mais elles pourraient également permettre aux développeurs d’adopter l’algorithme SHA dans de nouvelles applications pour protéger les données tout en contribuant à remplir leurs objectifs en termes d’expérience utilisateur. Les instructions sont définies de manière à simplifier leur mappage dans le flux de traitement des algorithmes de la plupart des bibliothèques, ce qui facilite le développement.

      Intel® SHA Extensions
      Par adminPublié le 07/17/20130
      Download PDF New Instructions Supporting the Secure Hash Algorithm on Intel® Architecture Processors July 2013 Executive Summary This paper provides an introduction to the family of new instructions that support performance acceleration of the Secure Hash Algorithm (SHA) on Intel® Architecture pr...
      Intel® Intrinsics Guide
      Par adminPublié le 10/30/201218
      Overview The Intel Intrinsics Guide is an interactive reference tool for Intel intrinsic instructions, which are C style functions that provide access to many Intel instructions – including Intel® Streaming SIMD Extensions (Intel® SSE), Intel® Advanced Vector Extensions (Intel® AVX), and more – w...
      Intel® Software Development Emulator Release Notes
      Par Ady Tal (Intel)Publié le 06/15/20120
      Release notes for the Intel® Software Development Emulator
      Intel® Software Development Emulator
      Par Ady Tal (Intel)Publié le 06/15/201220
        What If Home | Product Overview | FAQ | Primary Technology Contacts | Discussion Forum | Blog     Product Overview This emulator is called Intel® Software Development Emulator or Intel® SDE, for short. The current version is 7.15 and was released Jan 11, 2015. This version correspond...
      S’abonner à Articles de la Zone des développeurs Intel
      Aucun contenu trouvé
      S’abonner à Blogs de la Zone des développeurs Intel®
        How to work with AVX on windows
        Par siva rama k.6
        Hi, I am interested in AVX instructions set using in my application for speed up.But i am new to AVX. How can i know whether my system processor is able to support AVX or not? My System Configurations as OS; Windows 7 with 64-bit CPU: Inter(R) Xeon(R) CPU  W3505 @2.53GHz. Anybody can help me.. Thanks in Advance.  
        Is profiling information running on SDE accurate and trustable?
        Par WEI Z. (Intel)1
        Hi,          I am trying to look at AVX 512 performance, currently, I wrote a simple function for evaluation as below, I configured the optimization and enabled AVX-512 etc in the project properties setting(vs2013 integrated with Intel-parallel-studio ), and I see the AVX-512 instructions are used from the asm files generated by compiler. void complexVectorConjMpy(float *inputPtr1, float *inputPtr2, float *outputPtr, int numData) {     int idxData;     float data1Re, data1Im, data2Re, data2Im;     #pragma ivdep     __assume_aligned(inputPtr1, 64);     __assume_aligned(inputPtr2, 64);     __assume_aligned(outputPtr, 64);           for (idxData = 0; idxData < numData; idxData++)     {         data1Re = inputPtr1[2 * idxData];         data1Im = inputPtr1[2 * idxData + 1];         data2Re = inputPtr2[2 * idxData];         data2Im = inputPtr2[2 * idxData + 1];                  outputPtr[2 * idxData]     = data1Re * data2Re + data1Im * data2Im;         outputPtr[2 * idx...
        TSX example code doesn't work
        Par YangHun P.5
        I have intel xeon cpu E3-1230 v3 machine which has TSX. I just want to test that TSX runs well. From manual, i got this example pseucode void rtm_wrapped_lock(lock) { if (_xbegin() == _XBEGIN_STARTED) { if (lock is free) /* add lock to the read-set */ return; /* Execute transactionally */ _xabort(0xff); /* 0xff means the lock was not free */ } /* come here following the transactional abort */ original_locking_code(lock); } void rtm_wrapped_unlock(lock) { /* If lock is free, assume that the lock was elided */ if (lock is free) _xend(); /* commit */ else original_unlocking_code(lock); }My test code for RTM which is a set of TSX is like this. void main(void) { int i; int sum[20]; int data[20]; pthread_mutex_t mutex; pthread_mutex_init(&mutex,NULL); for(i=0;i<20;i++) { data[i]=i; sum[i]=0; } omp_set_num_threads(4); #pragma omp parallel for private(i) for(i=0;i<2...
        SDE 7.15 for Linux has no 64-bit libs
        Par andysem3
        The recently released SDE 7.15 for Linux seem to have 32-bit libraries instead of 64-bit in intel64/pin_ext_lib and intel64/xed_ext_lib. Is this an oversight or am I missing something?  
        SSE ucomiss/comiss strange behavior
        Par Naer J.7
        Hello. When I run this code : #include <cmath> // for NAN c++11 and up #include <iostream> #include <xmmintrin.h> int main(int argc, char ** argv) { float nan_value = NAN; __m128 const a = _mm_load_ss(&nan_value); __m128 const b = _mm_setzero_ps(); std::cout << "gt : " << (nan_value > 0) << std::endl; std::cout << "lt : " << (nan_value < 0) << std::endl; std::cout << "ge : " << (nan_value >= 0) << std::endl; std::cout << "le : " << (nan_value <= 0) << std::endl; std::cout << "eq : " << (nan_value == 0) << std::endl; std::cout << "ne : " << (nan_value != 0) << std::endl << std::endl << std::endl; std::cout << "ugt : " << _mm_ucomigt_ss(a,b) << std::endl; std::cout << "ult : " << _mm_ucomilt_ss(a,b) << std::endl; std::cout << "uge : " << _mm_ucomige_ss(a,b) << ...
        Measuring Core Voltage
        Par Srinath A.0
        I am using an Atom N2600 processor. The intel software developer's manual says that a p-state can be requested by writing to MSR 0x199 and the locked p-state can be seen in MSR 0x198. The way to compute Core Voltage is given as MSR_PERF_STATUS[47:32] * (float) 1/(2^13). The data that I see in MSR_PERF_STATUS (MSR 0x198) is 62d104306001045. Bits [47:32] is always 1043 irrespective of the value that I set in MSR 0x199. When I use the formula: 0x1043 = 4163. Voltage = 4163/(2^13)=0.5 V, which is a really low voltage for the processor to operate stably at. It would be great if someone can help me in measuring the core voltage. I am using Ubuntu as my OS. Regards Srinath
        why does _mm_mulhrs_epi16() always do biased rounding to positive infinity?
        Par unclejoe9
        Does anyone know why the pmulhrsw instruction or _mm_mulhrs_epi16(x) := RoundDown((x * y + 16384) / 32768) always rounds towards positive infinity? To me, this is terribly biased for negative numbers, because then a sequence like -0.6, 0.6, -0.6, 0.6, ... won't add up to 0 on average. Is this behavior intentional or unintentional? If it's intentional, what could be the use? Is there an easy way to make it less biased? Lucky for me, I can just change the order of my operations to get a less biased result (my function is a signed geometric mean): __m128i ChooseSign(x, sign) { return _mm_sign_epi16(x, sign) } signsDifferent = _mm_srai_epi16(_mm_xor_si128(a, b), 15) // (a ^ b) >> 15 sign = _mm_andnot_si128(signsDifferent, a) // !signsDifferent & a //result = ChooseSign(sqrt(a * b), sign) * fraction // biased result = ChooseSign(sqrt(a * b) * fraction, sign)
        AVX512f on non-MIC this year?
        Par angus-hewlett14
        Hi all, Can we expect AVX512f on non-MIC systems this year, or only on Knights Landing during 2015? Thanks,   Angus.
        S’abonner à Forums