Mikroarchitektur

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Die fraglichen Angaben werden daher möglicherweise demnächst entfernt. Bitte hilf der Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst.

Der Begriff Mikroarchitektur (auch µarch) bezeichnet die Implementierung eines Befehlssatzes innerhalb eines Rechners. Hierzu zählt man:

  1. die Rechnerstruktur, also den Aufbau eines Rechners aus Funktionseinheiten (z. B. die ALU, Register) und deren Verbindungstruktur (z. B. durch Busse),
  2. sowie die Rechnerorganisation, d. h. die Organisation des Zusammenwirkens der Funktionseinheiten, so dass Arbeitsabläufe entstehen, welche Befehle ausführen.

Die Mikroarchitektur bezieht sich nicht auf die konkrete physikalische und fertigungstechnische Realisierung einer CPU.

Rechnerstruktur[Bearbeiten | Quelltext bearbeiten]

Intel-Mikroarchitekturen, die den x86 bzw. x86_64 Befehlssatz Implementieren

Die Rechnerstruktur beinhaltet alle Funktionseinheiten und deren Verbindungsstruktur. Ein Beispiel für eine einfache Rechnerstruktur stellen die Komponenten des Von-Neumann-Rechners dar.

Rechnerorganisation[Bearbeiten | Quelltext bearbeiten]

Die Rechnerorganisation ist die Organisation des Zusammenwirkens aller Funktionseinheiten, so dass Arbeitsabläufe entstehen, welche die Befehle des Befehlssatzes ausführen. Die Rechnerorganisation wird durch das Leitwerk realisiert. Wesentliche Funktionseinheiten des Leitwerks sind dabei das Befehlszähler-Register, der Befehlsdecoder (besteht bei RISC-Architekturen aus Schaltnetzen) und die Operationensteuerung (besteht bei RISC-Architekturen aus endlichen Automaten).

Beschreibung auf der Registertransferebene[Bearbeiten | Quelltext bearbeiten]

Es sei ein Befehlssatz und eine Rechnerstruktur vorgegeben und es soll die Rechnerorganisation entworfen werden. Die Rechnerorganisation kann dann durch Einsatz einer abstrakten Registertransfernotation ausgearbeitet werden. Jeder Befehl des Befehlssatzes kann durch eine Folge von Registertransfers beschrieben werden.

Bei einem Von-Neumann-Rechner müssen dabei alle Phasen des Von-Neumann-Zyklus, spezifisch für jeden Befehl, in der Registertransfernotation aufgeschrieben werden. Die Registertransfernotation für die Teilschritte FETCH und DECODE sind dabei für jeden Befehl gleich, da jeder Befehl erst vom RAM geladen werden muss (FETCH) und decodiert (DECODE) werden muss, bevor der Rechner den Befehl weiter abarbeiten kann. Ist die Registertransfernotation fertig, so kann man endliche Automaten entwerfen, die die Funktionseinheiten (Register, RAM, ALU, FPU, ...) entsprechend dem vorgegebenen Befehlssatz steuern. Ein Automat, der einen Befehl realisiert, führt dabei im Prinzip nur die einzelnen Zeilen der Registertransfernotation sequentiell aus, indem er die Steuerleitungen des Steuerbusses für jeden Takt entsprechend setzt.

Leistungsmerkmale von Mikroarchitekturen[Bearbeiten | Quelltext bearbeiten]

Bei der Optimierung auf verschiedene Leistungsziele müssen die Auszuführenden Programme, der Befehlssatz, die Mikroarchitektur, die Fertigung und deren Zusammenspiel berücksichtigt werden. Trotz diesem Themenkomplexes gibt es Leistungseigenschaften, die alleine von der Mikroarchitektur abhängen, Beispiele sind:

Skalarität[Bearbeiten | Quelltext bearbeiten]

Sie legt fest, wie viele Befehle des Befehlssatzes ein Prozessorkern maximal pro Taktzyklus abarbeiten kann. Man unterscheidet:

  1. nicht skalare Prozessoren, die kein Pipelining benutzen. Diese Rechner arbeiten in jedem Fall weniger als einen Maschinenbefehl pro Taktzyklus ab.
  2. skalare Prozessoren, die Pipelining benutzen. Diese Rechner arbeiten im Optimalfall genau einen Befehl pro Taktzyklus ab.
  3. superskalare Prozessoren, die weiterentwickeltes Pipelining benutzen. Diese Rechner arbeiten im Optimalfall mehr als einen Befehl pro Taktzyklus ab. Alle modernen Desktoprechner (2018) sind Superskalar.

Cache[Bearbeiten | Quelltext bearbeiten]

Zur Beschleunigung der Ausführung von Maschinenbefehlen werden ein oder mehrere Caches genutzt. Caches sind notwendig, um die mittlerweile 2 Größenordnungen an Geschwindigkeitsunterschied zwischen Prozessorkernen (0,2...0,8 ns/Takt) und Hauptspeicher (45...70 ns) abfangen zu können und um mehrere Kerne innerhalb einer CPU zu ermöglichen. Mittlerweile sind mindestens 2 Cache-Level (ARM) üblich, bei Intel/AMD sind 3 Cache-Level üblich.

Parallelisierung[Bearbeiten | Quelltext bearbeiten]

Es werden Mehrkernrechner, Mehrprozessorsysteme und Parallelrechner zur gleichzeitigen Abarbeitung mehrerer sequentieller Programme genutzt. Auch unterstützen moderne Rechner paralleles Rechnen auf einem Kern durch Erweiterungen in der Befehlssatzarchitektur, wie Multi Media Extension. Es gibt jedoch Grenzen, wie weit eine Anwendung parallelisiert werden kann (siehe Amdahlsches Gesetz).

Weblinks[Bearbeiten | Quelltext bearbeiten]

  1. AMD Entwickler Anleitungen [1]
  2. Intel Entwickler Anleitungen [2]
  3. Ausführliche Beschreibungen von Mikroarchitekturen: [3] [4] [5]
 Commons: Microarchitectures – Sammlung von Bildern, Videos und Audiodateien