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® Cilk™ Plus – AOBench Sample
Von mark-sabahi (Intel)Veröffentlicht am 08/24/20120
This is the AOBench example associated with the "Intel® Cilk™ Plus – The Simplest Path to Parallelism" how-to article.  It shows an Ambient Occlusion algorithm implemented as serial loops, one using Intel Cilk Plus' cilk_for keyword to implement parallelism, one version using Intel Cilk Plus' arr...
AVX Cloth - Retired
Von Jeffrey Mott (Intel)Veröffentlicht am 08/16/20120
  AVX Cloth Intel Corporation This sample has been retired as it either was developed for earlier generation hardware or the sample has been superseded by a newer sample with an advanced algorithm. The sample is still available for download if desired. Feat...
PAOS - Packed Array Of Structures
Von jimdempseyatthecoveVeröffentlicht am 08/07/20121
by Jim Dempsey Programmers are familiar with the small vector capability of today’s processors, referred to as Single Instruction – Multiple Data (SIMD). SIMD, in Intel Architecture (IA32, IA64, Intel64), was introduced with MMX, then followed up with SSE, SSSE, SSE2, SSE3, AVX, AVX2 (and a few o...
What's new in Intel® MKL?
Von Vipin Kumar E K (Intel)Veröffentlicht am 08/02/20120
The new features of the Intel® MKL versions are listed in this article.
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
        Working assembly example for MPX?
        Von 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?
        Von 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
        Von 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
        Von 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
        Von 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
        Von 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?
        Von 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
        Von 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            
        Foren abonnieren