Compiler

Welche Befehlsart wird bei der automatischen Vektorisierung des Compilers verwendet?

  1. ABefehle, die einen Interrupt auslösen
  2. BSIMD-Befehle, die mehrere Daten gleichzeitig verarbeiten
  3. CBefehle, die den gesamten Cache-Inhalt auf einmal löschen
Antwort und Erläuterung anzeigen

Antwort: B. SIMD-Befehle, die mehrere Daten gleichzeitig verarbeiten

Die automatische Vektorisierung ist eine Optimierung, die Schleifen mit gleichartiger Berechnung je Arrayelement erkennt und durch SIMD-Befehle ersetzt, die mehrere Elemente zusammen verarbeiten. Mit einem 128-Bit-SIMD-Register lassen sich z. B. vier 32-Bit-Zahlen gleichzeitig addieren, sodass im besten Fall die Zahl der Rechenoperationen in der Schleife auf ein Viertel sinkt. Voraussetzungen sind etwa fehlende Abhängigkeiten zwischen Iterationen und zusammenhängende Daten; bei möglicher Überlappung von Zeigern wird mitunter verzichtet. Mit Interrupt- oder Cache-Befehlen hat sie nichts zu tun.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Compiler

  1. Welche grundlegende Bedingung muss die Optimierung eines Compilers einhalten?
  2. Welche Beschreibung der Befehlsauswahl (Instruction Selection), einer Phase der Codeerzeugung, ist richtig?
  3. Welche Beschreibung eines Cross-Compilers ist richtig?
  4. Beim Untersuchen eines mit Optimierung kompilierten Programms im Debugger werden manche Variablenwerte als „nicht darstellbar“ angezeigt. Was ist der Hauptgrund?
  5. Welcher Rückgabewert und welcher verbleibende Code der obigen Funktion ist richtig, wenn Konstantenpropagierung, Constant Folding und Entfernung von totem Code gründlich angewendet werden?

Vergleiche zu diesem Thema