Intel® Developer Zone:
Erweiterungen für die Intel Befehlssatzarchitektur

Die Intel Befehlssatzarchitektur wird stetig weiterentwickelt für mehr Funktionalität, Leistung und ein besseres Benutzererlebnis. Unten finden Sie Informationen zu geplanten Befehlssatzarchitektur-Erweiterungen, sowohl neuen als auch solchen, die zur Aufwertung zukünftiger Prozessorgenerationen geplant sind. Durch die frühzeitige Bekanntmachung dieser Erweiterungen will Intel sicherstellen, dass das Software-Ökosystem genug Zeit hat, um optimierte und neue Produkte zu entwickeln und einzuführen, wenn die Prozessoren vorgestellt werden.

Übersicht

Tools und Downloads

  • Intel® C++ Compiler

    Der Intel® C++ Compiler kann von lizenzierten Kunden über das Intel® Registration Center heruntergeladen werden. Testversionen der Intel® Produkte für die Software-Entwicklung stehen zudem als kostenlose Downloads zur Verfügung.

  • Intel Intrinsics Guide

    Der Intel Intrinsics Guide ist ein interaktives Referenztool für Intel Intrinsic-Befehle, d.h. C-artige Funktionen, die Zugriff auf zahlreiche Intel Befehle erlauben – darunter Intel® Streaming SIMD Extensions (Intel® SSE), Intel® Advanced Vector Extensions (Intel® AVX) und mehr – ohne dass Sie Assembly-Code schreiben müssen.

  • Gcc Compiler
    Der Gcc Compiler und die Glibc Bibliothek mit Unterstützung für Intel® AVX, Intel® AVX2, Intel® AVX-512 und Intel® MPX Befehle können unter GPL über die Seite Intel Software Development Emulator heruntergeladen werden.

Intel® Advanced Vector Extensions (Intel® AVX)

Der Bedarf an höherer Rechenleistung wächst in den verschiedensten Industriesegmenten stetig. Um dem steigenden Bedarf und den neuen Nutzungsmodellen Rechnung zu tragen, setzen wir mit den Intel® Advanced Vector Extensions (Intel® AVX) unsere Geschichte der Innovation in Produkten von heute fort.

Intel® AVX ist eine 256-Bit-Befehlssatzerweiterung Intel® SSE, speziell für fließkommaintensive Anwendungen. Sie wurde Anfang 2011 im Rahmen der Intel® Prozessor-Mikroarchitektur mit Codename Sandy Bridge vorgestellt und findet sich in allen möglichen Plattformen von Notebooks bis hin zu Servern. Intel AVX bietet Leistungsgewinne durch breitere Vektoren, eine neue erweiterbare Syntax und große Funktionsvielfalt. Dies bedeutet besseres Datenmanagement und Handling von Allzweckanwendungen wie Bild- und Audio-/Videoverarbeitung, wissenschaftliche Simulation, Finanzanalyse und 3D-Modellierung und -Analyse.

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

Einige zukünftige Neuprodukte bieten revolutionäre Unterstützung für 512-Bit SIMD. Programme sind in der Lage acht doppelt genaue Gleitkommazahlen und sechszehn einfach genaue Gleitkommazahlen in die 512-Bit-Vektoren zu packen sowie acht 64-Bit- und sechszehn 32-Bit-Ganzzahlen. Dies ermöglicht die Verarbeitung von doppelt so vielen Datenelementen wie Intel AVX/AVX2 mit einem eigenen Befehl verarbeiten kann und vier Mal die Kapazität von Intel SSE.

Intel AVX-512 Befehle sind von Bedeutung, da sie bei den anspruchsvollsten Rechenaufgaben die Leistungsgrenzen nach oben öffnen. Intel AVX-512 Befehle bieten den höchsten Grad an Compiler-Unterstützung durch eine nie dagewesene Vielfalt beim Design der Befehlsmerkmale.

Intel AVX-512 bietet unter anderem 32 Vektorregister, jedes 512 Bit breit, sowie acht dedizierte Maskenregister. Intel AVX-512 ist ein flexibler Befehlssatz mit Unterstützung für Broadcast, eingebettetes Masking (um Vorhersage zu ermöglichen), eingebettete Fließkomma-Rundungskontrolle, eingebettete Fließkomma-Fehlerunterdrückung, Scatter-Befehle, Hochgeschwindigkeits-Mathematik-Befehle sowie kompakte Darstellung großer Wertverschiebungen.

Intel AVX-512 bietet bessere Kompatibilität mit Intel AVX als ältere Übergänge zu neuen Breiten für SIMD Operationen. Im Gegensatz zu Intel SSE und Intel AVX, die nicht ohne Leistungseinbußen kombiniert werden können, können Intel AVX und Intel AVX-512 Befehle ohne Leistungseinbußen kombiniert werden. Intel AVX Register YMM0–YMM15 bilden auf Intel AVX-512 Register ZMM0–ZMM15 ab (im x86-64 Modus), ähnlich wie Intel SSE Register auf Intel AVX Register abbilden. Daher verwenden bei Prozessoren mit Unterstützung für Intel AVX-512 Intel AVX und Intel AVX2 Befehle die unteren 128 oder 256 Bit der ersten 16 ZMM Register.

Weitere Informationen zu den Intel AVX-512 Befehlen finden Sie im Blog „AVX-512 Instructions“. Diese Befehle können im Dokument „Programmierreferenz für Befehlssatzerweiterungen für die Intel® architecture“ nachgelesen werden (siehe Registerkarte „Übersicht“ auf dieser Seite).

"Vectorization: Writing C/C++ code in VECTOR Format"
Von srimksVeröffentlicht am 08/02/20125
Vectorization: Writing C/C++ code in VECTOR FormatMukkaysh SrivastavComputational Research Laboratories (CRL) - Pune, India   1.0 Introduction: Vectorization has been key optimization principle over x87 stack more than a decade. But often C/C++ algorithmic source-code is written without adequate at…
The Intel® AVX Realization of Lanczos interpolation in Intel® IPP 2D Resize Transform
Von Veröffentlicht am 08/02/20120
A white paper to describe Intel AVX Realization of Lanczos interpolation in Intel IPP 2D Transform functions.
Optimize for Intel® AVX Using Intel® Math Kernel Library's Basic Linear Algebra Subprograms (BLAS) with DGEMM Routine
Von Gregory Henry (Intel)Veröffentlicht am 08/02/20124
Introduction Although our initial efforts supports tunings and functionality in three areas, the Intel® Math Kernel Library (Intel® MKL), provides a broader set of functionality for scientific and engineering use. These are highlighted below: Linear Algebra – Basic Linear Algebra Subprograms (BLAS)…
IPP Dispatcher Control Functions - ipp*Init*() functions
Von Paul Fischer (Intel)Veröffentlicht am 08/02/20121
Initializing the IPP static and dynamic libraries for optimal performance.
Intel Developer Zone Beiträge abonnieren
Kein Inhalt gefunden
Intel Developer Zone Blogs abonnieren

    Intel® Software Guard Extensions (Intel® SGX)

    Intel Leitbild

    Computer-Workloads werden immer komplexer. Verschiedene auf der ganzen Welt verteilte Teams stellen Hunderte Softwaremodule bereit. Schon seit geraumer Zeit wird an der Isolierung von Workloads auf offenen Plattformen gearbeitet. Den Anfang machte eine Architektur mit geschütztem Modus, um die Berechtigungen zwischen Betriebssystem und Anwendungen streng getrennt zu halten. Malware-Angriffe in jüngster Zeit haben jedoch gezeigt, dass Zugang zu Modi mit hohen Berechtigungen und das Erlangen der Kontrolle über die gesamte Software auf einer Plattform möglich ist.

    Intel® Software Guard Extensions (Intel® SGX) ist die Bezeichnung für Erweiterungen der Intel Architektur, die durch einen „Inverse-Sandbox“-Mechanismus die Softwaresicherheit erhöhen. Bei diesem Ansatz wird nicht wie gewöhnlich all die Malware auf einer Plattform identifiziert und isoliert. Stattdessen kann legitime Software „versiegelt“ und so vor Malware-Angriffen geschützt werden – unabhängig von den erlangten Berechtigungen der Malware. Dies geschieht im Zusammenspiel mit laufenden Bemühungen zum Schutz von Plattformen vor Malware-Angriffen. Denken Sie daran, wie man Wertsachen zu Hause in einem Tresor aufbewahrt und gleichzeitig Eindringlinge durch ausgeklügeltere Schließ- und Alarmsysteme fernhält und fängt.

    Erste Schritte (gleich bei allen ISA)

    Übersicht

    Tools und Downloads

    • Keine Änderungen am bestehenden Inhalt

    Technische Inhalte

    Kein Inhalt gefunden
    Intel Developer Zone Blogs abonnieren
    Kein Inhalt gefunden
    Intel Developer Zone Beiträge abonnieren

    Intel® Memory Protection Extensions (Intel® MPX)

    Die bösartigen Angriffe auf Computersysteme werden immer ausgeklügelter. Immer häufiger werden dabei die Verursachung oder Ausnutzung von Pufferüberläufen bei Softwareanwendungen beobachtet.

    Intel® Memory Protection Extensions (Intel® MPX) ist die Bezeichnung für Erweiterungen der Intel architecture, mit der Software robuster gemacht werden soll. Intel MPX bietet Hardwaremerkmale, die im Zusammenwirken mit Compiler-Anpassungen prüfen können, ob für den Kompilierzeitpunkt vorgesehene Speicherreferenzen zur Laufzeit nicht unsicher werden. Zwei der wichtigsten Ziele von Intel MPX sind die Bereitstellung dieses Merkmals bei geringem Overhead für neu kompilierten Code und die Bereitstellung von Kompatibilitätsmechanismen mit Altsoftwarekomponenten. Intel MPX ist in einem zukünftigen Intel® Prozessor verfügbar.

    Kein Inhalt gefunden
    Intel Developer Zone Beiträge abonnieren
    Kein Inhalt gefunden
    Intel Developer Zone Blogs abonnieren

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

      Der Secure Hash Algorithm (SHA) ist einer der am häufigsten verwendeten Verschlüsselungsalgorithmen.  Hauptanwendungsbereiche von SHA sind beispielsweise Datenintegrität, Nachrichtenauthentifizierung, digitale Signaturen und Daten-Deduplizierung.  Der Einsatz von Sicherheitslösungen wächst weiter schnell, und SHA findet sich in mehr Anwendungen als je zuvor. Die Intel® SHA Extensions sollen die Leistung dieser rechenintensiven Algorithmen auf Prozessoren mit Intel® architecture verbessern.

      Die Intel® SHA Extensions bestehen aus sieben Intel® Streaming SIMD Extensions-(Intel® SSE-)basierten Befehlen, die kombiniert werden und so die Leistung bei der Verarbeitung von SHA-1 und SHA-256 auf Prozessoren mit Intel architecture verbessern sollen.  Angesichts der immer größeren Rolle, die SHA in unseren alltäglichen Computergeräten spielt, sollen diese neuen Befehle einen nötigen Leistungsschub zum Hashing eines einzelnen Datenpuffers bereitstellen. Der Leistungsgewinn wird nicht nur zu einem besseren Ansprechverhalten und niedrigeren Energieverbrauch bei einer gegebenen Anwendung führen – Entwickler können SHA auch in neue Anwendungen einbetten, um bei gleichzeitigem Datenschutz ihren Benutzern das gewünschte Erlebnis zu bieten. Die Befehle sind so definiert, dass sie einfach auf den Algorithmusverarbeitungsfluss der meisten Softwarebibliotheken abgebildet werden können und so die Entwicklungsarbeit erleichtern.

      Kein Inhalt gefunden
      Intel Developer Zone Beiträge abonnieren
      Kein Inhalt gefunden
      Intel Developer Zone Blogs abonnieren
        BEXTR intrinsic incompatible with GCC
        Von 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
        Von 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?
        Von 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 "somethin…
        Possible XED Decode Bug (from Pin rev 65163)
        Von 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 wh…
        Scaling TSX to multi-socket systems
        Von 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
        Von 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?
        Von 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?
        Von 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
        Foren abonnieren