Arithmetisch-logische EinheitEine arithmetisch-logische Einheit (englisch arithmetic logic unit, daher oft abgekürzt ALU) ist ein elektronisches Rechenwerk, welches in Prozessoren zum Einsatz kommt. Funktionen
Die ALU berechnet arithmetische und logische Funktionen. In älteren Prozessoren (bis etwa 8086) war sie außerdem für
Sinnvollerweise kann sie mindestens folgende Minimaloperationen durchführen:
Typischerweise liegen jedoch auch noch zusätzlich folgende Operationen vor, die aber auch mittels der oberen drei auf Kosten der Rechenzeit (in mehreren Takten) nachgebildet werden können:
Alle ALUs verarbeiten Festkommazahlen. Gleitkommabefehle sind in vielen aktuellen CPUs mittlerweile Standard. Ausnahmen sind kleinere Mikrocontroller, die auf geringe Stromaufnahme oder auf geringe Herstellkosten getrimmt sind. Der Trend der letzten 15 Jahre ist es, ALUs auf Vektor-Verarbeitung umzustellen (Stand 2015). Aufbau und FunktionsweiseEine ALU kann zwei Binärwerte mit gleicher Stellenzahl (n) miteinander verknüpfen. Man spricht von n-Bit-ALUs. Typische Werte für n sind 8, 16, 32 und 64. Historisch erwähnenswert sind auch beispielsweise die 4-Bit-ALU 74LS181[1] und der 1-Bit-Prozessor MC14500B von Motorola. (Allerdings nennt sich die entsprechende Einheit darin lediglich LU (Logic Unit)[2]). Begriffe wie 32-Bit- bzw. 64-Bit-CPU entstammen der Breite der Arbeitsregister der Prozessorarchitektur. Meist entspricht diese Breite auch der der ALU; mithin deuten diese Begriffe (32-Bit- bzw. 64-Bit-CPU) an, dass in entsprechenden Prozessoren auch ebensolche ALUs zum Einsatz kommen. Eine Ausnahme bildet hier beispielsweise der Z80, der mit einer 4-Bit-ALU arbeitet.[3] Die n-Bit ALU ist meist aus einzelnen 1-Bit-ALUs zusammengesetzt, die jeweils an die höherwertige ALU ein Carry-Bit weiterreichen, mit dem ein Übertrag an der jeweiligen Stelle gekennzeichnet wird. (Zur Beschleunigung werden häufig andere Verfahren (z. B. Carry-Look-Ahead) eingesetzt; siehe dazu Carry-Ripple-Addierer.) Um die zusammengeschalteten 1-Bit-ALUs in die geforderte Funktionsart umzuschalten, hat jede 1-Bit-ALU zusätzlich zu den Eingängen für die zu verknüpfenden Werte und das Carry-Bit noch einen Eingang für einen Steuervektor (Op.-Code); beim Einsatz in einem Prozessor werden diese Eingänge gemeinsam vom Steuerregister (Operationsregister, OR) des Prozessors versorgt. Das StatusregisterDie gesamte n-Bit ALU hat außer dem Ausgangsvektor für das Ergebnis noch einen Bedingungsvektor, um ihren Zustand zu signalisieren. Beim Einsatz in einem Prozessor wird dieser Bedingungsvektor in dessen Statusregister (auch engl. condition code register) abgelegt. Dieses Register enthält meistens vier Statusbits. Die einzelnen Werte des Statusregisters können von Maschinensprachebefehlen abgefragt werden und damit den weiteren Programmverlauf beeinflussen (z. B. bedingte Sprünge):
Je nach ALU-Typ gibt es weitere Flags, zum Beispiel:
Verwandte SystemeParallel Logic Units (PLUs) sind speziell auf Bitmanipulation zugeschnittene ALUs. Sie können parallel, also gleichzeitig mit anderen Rechenwerken auf die Daten zugreifen und sind deshalb über einen eigenen Datenpfad mit dem Arbeitsspeicher verbunden. PLUs sind Bestandteil einiger Signalprozessor-Typen, die als Hochgeschwindigkeits-Controller eingesetzt werden. Einzelnachweise
|