Abo
  • IT-Karriere:

Delay Slot: Das Verb steht immer an zweiter Stelle

Trotz aller Flexibilität steht in der deutschen Alltagssprache das Verb üblicherweise an der zweiten Stelle, direkt nach dem ersten Satzteil:

Stellenmarkt
  1. THD - Technische Hochschule Deggendorf, Deggendorf
  2. operational services GmbH & Co. KG, Wolfsburg, Braunschweig

1. Der Hund geht morgen zum Tierarzt.

2. Morgen geht der Hund zum Tierarzt.

In der wörtlichen Übersetzung klingt der zweite Satz für nichtdeutsche Muttersprachler irritierend:

3. Tomorrow goes the dog to the vet.

Obwohl es für den dritten Satz durchaus noch Überreste im modernen Englisch gibt, klingt diese englische Übersetzung für den zweiten Satz eher korrekt:

4. Tomorrow, the dog goes to the vet.

Das Verb stets an die zweite Stelle zu setzen - mit diesem Aspekt der deutschen Sprache zurechtzukommen, verlangt einiges an Gewöhnung. Mir hat es geholfen, an Delay Slots zu denken, wie es sie in älteren Prozessor-Architekturen gibt, zum Beispiel bei Suns SPARC. Diese arbeiten mit einer Pipeline. Dabei läuft die Verarbeitung von aufeinanderfolgenden Befehlen leicht versetzt nacheinander ab. Während der erste Befehl ausgeführt wird, wird der zweite Befehl im gleichen Zyklus dekodiert und parallel der dritte Befehl in die Pipeline geladen, und so weiter. Das erhöht die Verarbeitungsgeschwindigkeit des Prozessors enorm.

Allerdings wirken sich Pipelines negativ auf die Geschwindigkeit aus, wenn der Prozessor nicht weiß, welche Befehle als nächstes zu laden sind. Und das passiert, wenn er eine Verzweigung aufgrund einer Prüfbedingung verarbeiten muss:


x = 5 + 6
y = z + 4
if y > 5:
    print('hello!')
else:
    print('goodbye!')

Solange der Prozessor z + 4 in Zeile 2 nicht berechnet hat, weiß er nicht, ob er Zeile 4 oder 6 in die Pipeline laden soll. Diese Wartezeit blockiert den Zyklus der gesamten Pipeline. Erst wenn z + 4 berechnet (ausgeführt) wurde, wird der Befehl y = 5 + 6 in der ersten Zeile auch tatsächlich beendet und verlässt die Pipeline.

In späteren Prozessor-Generationen wird dieses Problem mithilfe der Out-of-Order-Execution gelöst. Doch davor mussten sich Entwickler mit einer anderen Lösung behelfen: Delay Slots. Einer oder mehrere "leere" Befehle werden nach der bedingten Verzweigung eingefügt und sorgen dafür, dass im Pipeline-Mechanismus keine Lücke auftritt und die Befehle in der Pipeline weiter vorrücken können:


x = 5 + 6
y = z + 4
if y > 5:
    NOP()
    print('hello!')
else:
    NOP()
    print('goodbye!')

Zum einen kann jetzt der Befehl x = 5 + 6 vollständig die Pipeline durchlaufen, auch wenn das Ergebnis von z + 4 noch nicht bekannt ist, denn die Pipeline wird durch einen Delay Slot aufgefüllt. Zum anderen ist im darauffolgenden Zyklus das Vergleichsergebnis bekannt und der Prozessor weiß, welche Zeile er in die Pipeline laden muss.

Erinnern wir uns an den obigen Satz: "Ich stimme dem Maler, der die Meinung, dass Rot keine Farbe ist, vertritt, zu". Selbst ein Muttersprachler versteht den Satz erst, wenn er die Verben am Ende liest. Bis dahin wird auch sein Gehirn blockieren und den Sinn des Satzes nicht erfassen. Ziehen wir die Verben hingegen nach vorn, ist er flüssig verständlich: "Ich stimme dem Maler zu, der die Meinung vertritt, dass Rot keine Farbe ist." Das zeitige Auftreten des Verbs hilft dem Gehirn, sich auf die nachfolgenden Satzteile einzustellen, ganz gleich wie lang sie sind. Sie übernehmen eine ähnliche Funktion wie die Delay Slots.

Der Text ist eine Übersetzung eines Beitrags auf Stipicevics Blog.

 Eine eigene semantische Welt: Präpositionen
  1.  
  2. 1
  3. 2
  4. 3
  5. 4


Anzeige
Hardware-Angebote
  1. 49,70€

Peter Brülls 15. Mai 2019

Nein, herunterladen ist der Standard, hochladen die Ausnahme. Schlechtes Beispiel, da...

gfa-g 12. Mai 2019

Nicht in den meisten, nur in romanischen Sprachen!

Toleg 10. Mai 2019

Es gibt shon Regel, von denen es wiederrum Ausnahmen gibt :) Beispiel: https://pp.userapi...

minnime 09. Mai 2019

Oh ja, mein Lieblingsbuch, kann jedem, naja, nicht jedem, nur wärmstens ans Herz legen.

schily 09. Mai 2019

und daher zu Mißverständnissen führen kann. Das ist, in Anbetracht der lustigen...


Folgen Sie uns
       


Acer Predator Helios 700 - Hands on (Ifa 2019)

Was für ein skurriles Gerät: Golem.de schaut sich das Gaming-Notebook Predator Triton 700 von Acer an und probiert die Schiebetastatur aus.

Acer Predator Helios 700 - Hands on (Ifa 2019) Video aufrufen
Ryzen 7 3800X im Test: Der schluckt zu viel
Ryzen 7 3800X im Test
"Der schluckt zu viel"

Minimal mehr Takt, vor allem aber ein höheres Power-Budget für gestiegene Frequenzen unter Last: Das war unsere Vorstellung vor dem Test des Ryzen 7 3800X. Doch die Achtkern-CPU überrascht negativ, weil AMD es beim günstigeren 3700X bereits ziemlich gut meinte.
Ein Test von Marc Sauter

  1. Agesa 1003abba Microcode-Update taktet Ryzen 3000 um 50 MHz höher
  2. Agesa 1003abb Viele ältere Platinen erhalten aktuelles UEFI für Ryzen 3000
  3. Ryzen 5 3400G und Ryzen 3 3200G im Test Picasso passt

Dick Pics: Penis oder kein Penis?
Dick Pics
Penis oder kein Penis?

Eine Studentin arbeitet an einer Software, die automatisch Bilder von Penissen aus Direktnachrichten filtert. Wer mithelfen will, kann ihr Testobjekte schicken.
Ein Bericht von Fabian A. Scherschel

  1. Medienbericht US-Regierung will soziale Netzwerke stärker überwachen
  2. Soziales Netzwerk Openbook heißt jetzt Okuna
  3. EU-Wahl Spitzenkandidat Manfred Weber für Klarnamenpflicht im Netz

Programmiersprache: Java 13 bringt mehrzeilige Strings mit Textblöcken
Programmiersprache
Java 13 bringt mehrzeilige Strings mit Textblöcken

Die Sprache Java steht im Ruf, eher umständlich zu sein. Die Entwickler versuchen aber, viel daran zu ändern. Mit der nun verfügbaren Version Java 13 gibt es etwa Textblöcke, mit denen sich endlich angenehm und ohne unnötige Umstände mehrzeilige Strings definieren lassen.
Von Nicolai Parlog

  1. Java Offenes Enterprise-Java Jakarta EE 8 erschienen
  2. Microsoft SQL-Server 2019 bringt kostenlosen Java-Support
  3. Paketmanagement Java-Dependencies über unsichere HTTP-Downloads

    •  /