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

Intel® System Studio - Solutions, Tips and Tricks
Von Noah Clemons (Intel)Veröffentlicht am 10/29/20140
Intel® System Studio 2015 Release Notes Support Matrix Installation Guides Prerequisites Linux* and Android* Target Installation Guide Windows* Target Installation Guide What's New? General Windows* Target Specific IDE Integration Intel System St…
Diagnostic 15524: Loop was not vectorized: search loop cannot be vectorized unless all memory references can be aligned vector load.
Von Devorah H. (Intel)Veröffentlicht am 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 all memory references cannot be an aligned vector load. Example: …
Diagnostic 15522: Loop was not vectorized: loop control flow is too complex.
Von Devorah H. (Intel)Veröffentlicht am 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  -Qopt-report:2 ) states that loop was not vectorized since loop control flow is too complex. Example: An example below will …
Diagnostic 15523: Loop was not vectorized: cannot compute loop iteration count before executing the loop.
Von Devorah H. (Intel)Veröffentlicht am 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  -Qopt-report:2 ) states that loop was not vectorized since loop iteration count cannot be computed. Example: An example belo…
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.

    Intel® Software Development Emulator Download
    Von Ady Tal (Intel)Veröffentlicht am 12/16/20114
    Intel® Software Development Emulator (released Jan 11, 2015) DOWNLOAD Intel® SDE for WINDOWS*  (sde-external-7.15.0-2015-01-11-win.tar.bz2) Note:  If you use Cygwin's tar command to unpack the Windows* kit, you must execute a "chmod -R +x" on the unpacked directory. DOWNLOAD Intel® SDE debug…
    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.

      Intel® Software Development Emulator Download
      Von Ady Tal (Intel)Veröffentlicht am 12/16/20114
      Intel® Software Development Emulator (released Jan 11, 2015) DOWNLOAD Intel® SDE for WINDOWS*  (sde-external-7.15.0-2015-01-11-win.tar.bz2) Note:  If you use Cygwin's tar command to unpack the Windows* kit, you must execute a "chmod -R +x" on the unpacked directory. DOWNLOAD Intel® SDE debug…
      Intel Developer Zone Beiträge abonnieren
      Kein Inhalt gefunden
      Intel Developer Zone Blogs abonnieren
        how best to implement AVX2 _mm256_cmplt_epi32?
        Von Jeff D.1
        AVX2 appears to only offer _mm256_cmpeq_epi32 and _mm256_cmpgt_epi32.  What's the most efficient way to implement _mm256_cmplt_epi32 given the available AVX2 functions?
        Interpreting Intel SDE avx/sse transition tracker
        Von Bram S.1
        Hello, I am running Intel SDE in 'ast' mode (AVX/SSE Transition tracker.) on Mac OSX. I struggle to interpret the results. First off, in the output, it shows function addresses, not function names. Should it not show the symbols? I built my app with -g. Next, this is the output I see: are these numbers indicative of excessive transitions? Or are they in a normal range? Penalty Dynamic Dynamic State in AVX to SSE SSE to AVX Static Dynamic Previous Change Block Transition Transition Icount Executions Icount Block Block ================ ============ ============ ======== ========== ======== ================ ================ 0x7fff90085eca 1 0 14 3 42 0x7fff90086596 0x7fff9742a3f7 #Initial state from routine: *unknown* @ 0x7fff9742a3f7 #Previous block in routine: *unkno…
        _mm256_blend_epi16 doesn't work as documented
        Von Jeff D.4
        The documentation for _mm256_blend_epi16 doesn't indicate that it operates on individual 128-bit channels, but this is the behavior I am seeing.  Is this the correct behavior?  Here is a reproducer code below showing the behavior for _mm256_blend_epi16 and _mm256_blend_epi32 where I attempt to insert a value into the first position of a vector using the blend instruction. #include <stdint.h> #include <stdio.h> #include <immintrin.h> typedef union { __m256i m; int32_t v[8];; } __m256i_32_t; typedef union { __m256i m; int16_t v[16];; } __m256i_16_t; void print_m256i_32(__m256i a) { __m256i_32_t t; t.m = a; printf("{%d,%d,%d,%d,%d,%d,%d,%d}", t.v[0], t.v[1], t.v[2], t.v[3], t.v[4], t.v[5], t.v[6], t.v[7]); } void print_m256i_16(__m256i a) { __m256i_16_t t; t.m = a; printf("{%d,%d,%d,%d,%d,%d,%d,%d," "%d,%d,%d,%d,%d,%d,%d,%d}", t.v[ 0], t.v[ 1], t.v[ 2], t.v[ 3], t.v[…
        Speedup with bulk/burst/coupled streaming write?
        Von Alexander L.17
          Hello togehther, I've some very simple question. I hope, this is really simple. As I read and done already, bulk (coupled) streamin read/write should give some till significant speedup. After some more profiling, I've found one very small older method im our software that takes to much time in my opinion. The most time is spent to the last instruction - wtite data. For the future question - there is no guarantee by design, that destination memory fits in some cache and, more, the cache is not overwritten so far - so there are really some access penalties. The question is more, does it matter to rewrite this method, that last, bold marked, write (and of coarse first read) instruction will be coupled to 4 together to generate bulk/burst (btw. what is correct name for that?) write? The first italic part (strike throught) is not important for this question and supplied only for completeness. Here is the method. Many thanks in advice and merry christmas! void nqBaseAlgorithmsUnmanaged::…
        PCIe Root Complex and the PCH
        Von Robert S.3
        Hello All, First of all, sorry this is not in the appropriate forum but I was directed to post this here. I have a question that's been bugging me regarding the PCIe Root Complex and the PCH and I'm hoping someone will be able to help clear things up a bit. I've always presumed that the PCIe Root Complex was a combination of the CPU and the PCH as they both contain PCIe Root Ports, thereby connecting PCIe devices to CPU/memory.  It is my understanding from a software point of view that at Bus 0 Device 0 of the PCI config space you have the Root Bridge, that produces Bus 0. On Bus 0 you then have logical PCI - PCI bridges that are the Root Ports, which PCIe devices are behind. Bus 0 starts in the CPU and crosses the DMI into the PCH which also has Root Ports.  A line in the 'PCI Express System Architecture' says  "Bus 0 is an internal virtual bus within the Root Complex". This is agrees with what I thought, that both the CPU and PCH are part of the Root Complex as Bus 0 is in both the …
        Early indicators of AVX512 performance on Skylake?
        Von angus-hewlett4
        Hi all, Looking ahead, what can we expect from the first generation of AVX512 on the desktop - or when should we expect an announcement? In the past: - The first generations of SSE CPUs didn't have a full-width engine, they broke 128-bit SSE operations in to two 64-bit uOps - The first AVX CPUs (Sandy Bridge / Ivy Bridge) needed two cycles for an AVX store - the L1 cache didn't have the bandwidth to perform a store in one cycle So what I'd like to know is: - Will the AVX512 desktop CPUs be able to handle a full-width L1 load and store per cycle? - Will they retain Broadwell's (fantastic) dual-issue, 3-cycle latency VFMUL/VFMADD unit but widened to 512 bits? Thanks much for any light you can shed,  Angus.    
        pmovzxbd using memory operands
        Von Christopher H.5
        Is there a way to use pmovzxbd with a memory operand from intrinsics currently I have either _mm_cvtepu8_epi32(_mm_cvtsi32(ptr[offset])); //(movd) _mm_cvtepu8_epi32(_mm_insert_epi32(_mm_setzero_si128(),ptr[offset],0));  //(pinsrd) The movd or pinsrd should not be needed; in assembly I can write something like __asm{ pmovzxbd xmm0,[rax+rdx*4] } Is there a way I can make this call using intrinsics instead of assembly.
        Benefits of SSE/AVX processing when an integrated GPU is missing?
        Von 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?      
        Foren abonnieren