Die ALU der CPU

Schaltungs- und Funktionsprinzip

  1. Einleitung

    Die CPU des Relaisrechners verfügt über eine ALU(Arithmetic-Logic-Unit) mit einer Datenbreite von 8bit. Am Eingang der ALU befinden sich zwei temporäre Register zur Speicherung der Operanden. Die ALU realisiert eine Reihe von logischen und arithmetischen Operationen, die durch die temprären Register auf alle internen Register der CPU angewendet werden können, es gibt also kein besonderes Akkumulatorregister. Die Schaltung der gesamten ALU umfasst 10 Platinen mit den Abmessungen 160mmx100mm und auf drei weiteren Platinen sind die beiden temporären Register und das Ausgaberegister der ALU untergebracht. Die interne Verkabelung der ALU wurde mit Flachbandkabel realisiert. Ein 40-poliges trägt den internen Steuerbus und drei 10-polige Flachbandkabel stellen die Datenbusverbindungen zu den temporären Eingangsregistern und dem Ausgangsregister her. Die ALU ist über zwei 40-polige Flachbandkabel mit dem internen CPU-Bus verbunden. Die Stromversorgung erfolgt über einen 5¼ Zoll Powerconnector, der mit dem Netzteil verbunden ist.


  2. Konventionen

    Bei der Betrachtung der ALU gelten folgende Festlegungen:


  3. Das Blockschaltbild


    Im Blockschaltbild sind die wesentlichen Komponenten zu erkennen. Die ALU besteht aus dem 8-bit-Alublock, den temporären Eingangsregistern TEMPA und TEMPB und dem OUT-Ausgangsregister. Die temporären Eingangsregister übernehmen die Datenworte für die ALU-Operationen vom internen Datenbus der CPU. Die ALU verarbeitet diese Datenworte und gibt das Ergebnis an das OUT-Ausgangsregister weiter. Im Ausgangsregister erfolgt die Erkennung von ZERO (Ergebnis ist 0) und SIGN (Ergebnis ist negativ) zur Generierung der entsprechenden CPU-Flags. Das Ergebnis wird durch das Ausgangsregister sofort an den internen CPU-Datenbus übergeben, eine weitere Pufferung erfolgt nicht.
    Das Ausgangsregister kann unabhägig von der ALU-Operation auf dem CPU-Datenbus zwei feste Datenworte (0x00 und 0xFF) ausgeben.

  4. Funktionsweise

    Die temporären Eingangsregister TEMPA und TEMPB

    Die temporären Eingangsregister übernehmen bei aktivem READA oder READB die Datenworte für die ALU-Operationen vom Datenbus der CPU und speichern sie ab. Das abgespeicherte Datenwort wird sofort an die ALU-Eingänge weitergegeben. Mit aktivem CLEARA oder CLEARB wird der Inhalt des entsprechenden Eingangsregisters gelöscht. Vor dem Speichern eines Datenwortes in den Eingangsregistern sollte der Inhalt gelöscht werden, da ansonsten eine Veroderung des Datenwortes vom CPU-Datenbus mit dem momentanen Registerinhalt durchgeführt wird. Der Inhalt der Eingangsregister wird durch die ALU-Operationen nicht beeinflusst, es gibt also kein spezielles Akkumulatorregister.
    Genau wie die Register des Arbeitsregistersatzes werden die temporären Register ebenfalls mit einer Haltespannung von 24V versorgt, die aus einer zusätzlichen 12V Spannungsquelle erzeugt wird, die auf die 12V Betriebsspannung des Rechners aufgesetzt wird. Deshalb geht der Registerinhalt bei anliegender Haltespannung auch nach dem Abschalten des Rechners nicht verloren.


    Der ALU-Block

    Das Verhalten der ALU wird über eine Reihe von Steuerleitungen beeinflusst. Diese Steuerleitungen haben folgende Bedeutungen:
    NameErklärung
    S0, S1, S2die Binärkombination der Steuersignale legt die ALU-Operation fest
    ECein aktives EC bewirkt die Negierung des Operanden EB am Eingang der ALU
    UIGein aktives UIG übergibt an alle ALU-Bits ein Übertragssignal
    EOUTein aktives EOUT steuert die Ausgangstreiber für das ALU-Ergebnisdatenwort. Erst mit aktivem EOUT wird das Ergebnis der ALU-Operation an das Ausgaberegister übergeben und erscheint damit sofort auf dem internen CPU-Bus
    EUOLbei aktivem EUOL wird die Übertragkette "nach links" innerhalb der ALU aktiv
    EUORbei aktivem EUOR wird die Übertragkette "nach rechts" innerhalb der ALU aktiv
    UILbei aktivem UIL wird ein Übertrag in die höchstwertige ALU-Bitstelle 7 übergeben, auch wenn durch EUOL=0 die Übertragskette inaktiv ist!
    UIRbei aktivem UIR wird ein Übertrag in die niederwertigste ALU-Bitstelle 0 übergeben, auch wenn durch EUOR=0 die Übertragskette inaktiv ist!

    Am Ausgang UOL wird der Übertrag der höchstwertigen ALU-Bitstelle 7 ausgegeben. Der Ausgang ist nur aktiv, wenn EUOL aktiv ist, ansonsten ist der Ausgang hochohmig. Am Ausgang UOR wird der Übertrag der niederwertigsten ALU-Bitstelle 0 ausgegeben. Der Ausgang ist nur aktiv, wenn EUOR aktiv ist, ansonsten ist der Ausgang hochohmig.

    Das Ausgaberegister

    Das OUT-Ausgaberegister gibt das Ergebnisdatenwort der ALU ungepuffert an den CPU-Datenbus aus. Gleichzeitig erfolgt die ZERO und SIGN-Erkennung.
    Der Ausgang ZERO ist aktiv, wenn auf dem CPU-Datenbus das Datenwort 0(0x00) erkannt wird. Der ZERO-Ausgang ist bei hochohmigem Datenbus ebenfalls aktiv.
    Am Ausgang SIGN wird der Zustand des höherwertigsten Datenbits des CPU-Datenbusses ausgegeben. Bei vorzeichenbehafteten Binärzahlen gibt diese Stelle das Vorzeichen an. Ist die Bitstelle 7 mit dem logischen Pegel 1(12V) belegt, so bedeutet dies, dass das Datenwort als negativ interpretiert wird und der SIGN-Ausgang ist aktiv, ansonsten ist er inaktiv. Das Ausgaberegister reagiert also auf alle Datenworte des CPU-Datenbusses!!! und auf ALU-Ergebnisse nur, wenn sie durch aktives EOUT auf den Datenbus ausgegeben werden.
    Das Ausgaberegister kann ebenfalls unabhängig von der ALU zwei Datenworte generieren. Das darf aber nur bei inaktivem EOUT passieren, da es sonst zu Buskonflikten auf dem CPU-Datenbus kommen kann. Ist der Eingang SET0 aktiv, dann wird das Datenwort 0x00 auf den CPU-Datenbus ausgegeben. Ist der Eingang SET1 aktiv, dann wird das Datenwort 0xFF auf den CPU-Datenbus ausgegeben. Bei gleichzeitiger unerlaubter Aktivierung beider Eingänge hat SET0 Vorrang.


  5. Wahrheitstabelle

    In der Wahrheitstabelle sind nun die einzelnen Pegel zur Umsetzung der ALU-Operationen aufgelistet. Die ALU bietet noch eine Reihe weiterer Möglichkeiten für Operationen, hier sind aber nur die aufgelistet, die in der CPU angewendet werden. Durch die Programmsteuerung müssen also, je nach den Vorgaben der Befehlsdecodierung, diese Pegel an den Eingangsleitungen der ALU erzeugt werden.
    0=logisch 0-Pegel, entspricht 0V
    1=logisch 1-Pegel, entspricht 12V
    H=hochohmiger Zustand
    X=beliebiger Zustand
    E=Zustand abhängig vom Ergebnis der ALU
    A=Datenwort im temporären Register TEMPA
    B=Datenwort im temporären Register TEMPB
    Freie Eingangsleitungen erkennen den logischen Pegel 0.
    Tri-stateAusgangssteuerung
    EingangssignaleAusgangssignale 
    TEMPATEMPB EC UIG UIL UIR S0 S1 S2 EUOL EUOR EOUT SET0SET1 OUT UOR UOLZEROSIGNErläuterung
    X X X X X X X X X 0 X X X X E E H E EDer Übertragsausgang UOL ist hochohmig geschaltet, die Übertragskette links ist inaktiv
    X X X X X X X X X X 0 X X X E H E E EDer Übertragsausgang UOR ist hochohmig geschaltet, die Übertragskette rechts ist inaktiv
    X X X X X X X X X X X 0 0 0 H E E 1 0Der Datenausgang OUT der ALU ist hochohmig geschaltet
    SET-FunktionenAusgangssteuerung
    EingangssignaleAusgangssignale 
    TEMPATEMPB EC UIG UIL UIR S0 S1 S2 EUOL EUOR EOUT SET0SET1 OUT UOR UOLZEROSIGNErläuterung
    X X X X X X X X X X X 0 0 0 H E E 1 0Der Datenausgang OUT der ALU ist hochohmig geschaltet
    X X X X X X X X X X X 0 1 0 0x00 E H 1 0Der Datenausgang gibt das Datenwort 0x00 aus
    X X X X X X X X X X X 0 0 1 0xFF H E 0 1Der Datenausgang gibt das Datenwort 0xFF aus
    X X X X X X X X X X X 0 1 1 0x00 E E 1 0Der Datenausgang gibt das Datenwort 0x00 aus
    UND-Funktionenlogische Operation
    EingangssignaleAusgangssignale 
    TEMPATEMPB EC UIG UIL UIR S0 S1 S2 EUOL EUOR EOUT SET0SET1 OUT UOR UOLZEROSIGNErläuterung
    A B 0 0 0 0 0 0 1 0 0 1 0 0 A and B H H E EDie Operanden A und B werden durch logisches Und verknüpft
    A B 1 0 0 0 0 0 1 0 0 1 0 0 A and (not B) H H E EOperand A und das Binärkomplement von B werden durch logisches Und verknüpft
    A B 0 1 0 0 0 0 1 0 0 1 0 0 not(A and B) H H E EDie Operanden A und B werden durch logisches Und verknüpft und das Ergebnis negiert
    A B 1 1 0 0 0 0 1 0 0 1 0 0not(A and (not B)) H H E EOperand A und das Binärkomplement von B werden durch logisches Und verknüpft und das Ergebnis negiert
    EXKLUSIVODER-Funktionenlogische Operation
    EingangssignaleAusgangssignale 
    TEMPATEMPB EC UIG UIL UIR S0 S1 S2 EUOL EUOR EOUT SET0SET1 OUT UOR UOLZEROSIGNErläuterung
    A B 0 0 0 0 0 1 0 0 0 1 0 0 A xor B H H E EDie Operanden A und B werden durch logisches Exklusiv-Oder verknüpft
    A B 1 0 0 0 0 1 0 0 0 1 0 0 A xor (not B) H H E EOperand A und das Binärkomplement von B werden durch logisches Exklusiv-Oder verknüpft
    A B 0 1 0 0 0 1 0 0 0 1 0 0 not(A xor B) H H E EDie Operanden A und B werden durch logisches Exklusiv-Oder verknüpft und das Ergebnis negiert
    A B 1 1 0 0 0 1 0 0 0 1 0 0not(A xor (not B)) H H E EOperand A und das Binärkomplement von B werden durch logisches Exklusiv-Oder verknüpft und das Ergebnis negiert
    ODER-Funktionenlogische Operation
    EingangssignaleAusgangssignale 
    TEMPATEMPB EC UIG UIL UIR S0 S1 S2 EUOL EUOR EOUT SET0SET1 OUT UOR UOLZEROSIGNErläuterung
    A B 0 0 0 0 0 1 1 0 0 1 0 0 A or B H H E EDie Operanden A und B werden durch logisches Oder verknüpft
    A B 1 0 0 0 0 1 1 0 0 1 0 0 A or (not B) H H E EOperand A und das Binärkomplement von B werden durch logisches Oder verknüpft
    A B 0 1 0 0 0 1 1 0 0 1 0 0 not(A or B) H H E EDie Operanden A und B werden durch logisches Oder verknüpft und das Ergebnis negiert
    A B 1 1 0 0 0 1 1 0 0 1 0 0 not(A or (not B)) H H E EOperand A und das Binärkomplement von B werden durch logisches Oder verknüpft und das Ergebnis negiert
    Komplement-Funktionenlogische Operation
    EingangssignaleAusgangssignale 
    TEMPATEMPB EC UIG UIL UIR S0 S1 S2 EUOL EUOR EOUT SET0SET1 OUT UOR UOLZEROSIGNErläuterung
    X B 0 0 0 0 1 0 0 0 0 1 0 0 B H H E EDas Ergebnis ist mit dem Operanden B identisch
    X B 1 0 0 0 1 0 0 0 0 1 0 0 not B H H E EBinärkomplement von B
    X B 0 1 0 0 1 0 0 0 0 1 0 0 not( B) H H E EBinärkomplement von B
    X B 1 1 0 0 1 0 0 0 0 1 0 0 not((not B)) H H E EDas Ergebnis ist mit dem Operanden B identisch
    0x00 B 1 0 0 1 1 0 0 1 0 1 0 0 COMP B E H E EDas Ergebnis ist 0-B (entgegengesetzte Zahl)
    Linksschiebe-Funktionlogische Operation
    EingangssignaleAusgangssignale 
    TEMPATEMPB EC UIG UIL UIR S0 S1 S2 EUOL EUOR EOUT SET0SET1 OUT UOR UOLZEROSIGNErläuterung
    A X 0 0 0 X 0 0 0 1 0 1 0 0 A<UIR H A[7] E EDer Inhalt des Operanden A wird um eine Binästelle nach links verschoben, in das niederwertigste Bit wird das Signal UIR geschoben.
    Rechtsschiebe-Funktionlogische Operation
    EingangssignaleAusgangssignale 
    TEMPATEMPB EC UIG UIL UIR S0 S1 S2 EUOL EUOR EOUT SET0SET1 OUT UOR UOLZEROSIGNErläuterung
    A X 0 0 X 0 0 0 0 0 1 1 0 0 UIL>A A[0] H E EDer Inhalt des Operanden A wird um eine Binästelle nach rechts verschoben, in das höherwertigste Bit wird das Signal UIL geschoben.
    Additionarithmetische Operation
    EingangssignaleAusgangssignale 
    TEMPATEMPB EC UIG UIL UIR S0 S1 S2 EUOL EUOR EOUT SET0SET1 OUT UOR UOLZEROSIGNErläuterung
    A B 0 0 0 0 0 1 0 1 0 1 0 0 A+B HCARRY E EDie Operanden A und B werden addiert, der Ausgang UOL führt ein CARRY=1, wenn die vorzeichenlose Addition überläft.
    A B 0 0 0 1 0 1 0 1 0 1 0 0 A+B+1 HCARRY E EDie Operanden A und B werden addiert und das Ergebnis um 1 erhöht, der Ausgang UOL führt ein CARRY=1, wenn die vorzeichenlose Addition überläft.
    A B 0 0 0 X 0 1 0 1 0 1 0 0 A+B+UIR HCARRY E EDie Operanden A und B und der Wert von UIR werden addiert, der Ausgang UOL führt ein CARRY=1, wenn die vorzeichenlose Addition überläft.
    Subtraktionarithmetische Operation
    EingangssignaleAusgangssignale 
    TEMPATEMPB EC UIG UIL UIR S0 S1 S2 EUOL EUOR EOUT SET0SET1 OUT UOR UOLZEROSIGNErläuterung
    A B 1 0 0 1 0 1 0 1 0 1 0 0 A-B HCARRY E EVom Operanden A wird B subtrahiert, Der Ausgang UOL führt ein CARRY=1, wenn die vorzeichenlose Subtraktion überläft.
    A B 1 0 0 0 0 1 0 1 0 1 0 0 A-B-1 HCARRY E EVom Operanden A wird B subtrahiert und das Ergebnis um 1 verringert, der Ausgang UOL führt ein CARRY=1, wenn die vorzeichenlose Subtraktion überläft.
    A B 1 0 0 X 0 1 0 1 0 1 0 0 A-B-1+UIR HCARRY E EVom Operanden A wird B subtrahiert, das Ergebnis um 1 verringert und UIR dazuaddiert, der Ausgang UOL führt ein CARRY=1, wenn die vorzeichenlose Subtraktion überläft.

    Schaut man sich die Wahrheitstabelle an, dann stellt man fest, dass die ALU prinzipiell alle übertragsfreien Logikfunktionen auf 8-Bit breite Register anwenden kann. Bei Logikfunktionen mit zwei Parametern A und B sind folgende 16 Ergebnisfunktionen E0..EF denkbar.
    EingangssignaleAusgangssignale
    ABE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
    00 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
    01 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
    10 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
    11 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
    Dabei liegen den Ergebnisfunktionen E0..EF folgende logischen Verknüpfungen zugrunde.

    Die Ergebnisfunktionen E0 und EF werden durch SETZERO und SET umgesetzt, NOT A ist nicht möglich, wird aber durch NOT B umgesetzt. Die restlichen Ergebnisfunktionen sind direkt als Logikfunktion in der ALU implementiert. Prinzipell könnten die Übertragsketten auch in den Logikfunktionen genutzt werden, es wäre jedoch zu untersuchen, ob sich dadurch sinnvolle Logikverknüpfungen umsetzen lassen. Es bleibt also noch genug Raum für weitere Untersuchungen der ALU und die eventuelle Umsetzung weiterer Befehle. Ansonsten bleiben die Übertragsketten den Arithmetik- und Verschiebebefehlen vorbehalten.


  6. Anschlussbelegung

    Die ALU ist über zwei 40-polige Pfostenstecker mit dem CPU-Bus verbunden. Der Stecker P1 enthält die Datenbusleitungen, die Steuersignale der temporären Register, sowie deren Stromversorgungsanschlüsse. Der Stecker P2 enthält die ALU-Steuerleitungen. Ein 5¼Zoll-Powerconnector dient der Stromversorgung des ALU-Blocks.
    Die Belegung des Steckverbinders P1 (ALU-Datenbus) ist:
    PinNameFunktionPegel
    1DB0Dateneingang/ausgang 00V,12V,H
    2freikeine BelegungH
    3DB1Dateneingang/ausgang 10V,12V,H
    4freikeine BelegungH
    5DB2Dateneingang/ausgang 20V,12V,H
    6freikeine BelegungH
    7DB3Dateneingang/ausgang 30V,12V,H
    8freikeine BelegungH
    9DB4Dateneingang/ausgang 40V,12V,H
    10freikeine BelegungH
    11DB5Dateneingang/ausgang 50V,12V,H
    12freikeine BelegungH
    13DB6Dateneingang/ausgang 60V,12V,H
    14freikeine BelegungH
    15DB7Dateneingang/ausgang 70V,12V,H
    16freikeine BelegungH
    17GNDStromversorgung0V
    18freikeine BelegungH
    19GNDStromversorgung0V
    20freikeine BelegungH
    21GNDStromversorgung0V
    22freikeine BelegungH
    23GNDStromversorgung0V
    24freikeine BelegungH
    25+12VStromversorgung12V
    26freikeine BelegungH
    27+12VStromversorgung12V
    28freikeine BelegungH
    29+24VStromversorgung24V
    30freikeine BelegungH
    31+24VStromversorgung24V
    32freikeine BelegungH
    33CLEARBSteuereingang Lösche TEMPB0V,12V,H
    34ZEROAusgang ZERO0V,12V
    35WRITEBSteuereingang Schreibe TEMPB0V,12V,H
    36SET0Steuereingang SET00V,12V,H
    37CLEARASteuereingang Lösche TEMPA0V,12V,H
    38SIGNAusgang SIGN0V,12V
    39WRITEASteuereingang Schreibe TEMPA0V,12V,H
    40SET1Steuereingang SET10V,12V,H
    Die Anschlussleitungen an P2 (ALU-Steuerbus) haben folgende Bedeutungen:
    PinNameFunktionPegel
    1S1Eingangsbit zur Operationssteuerung0V,12V,H
    3S2Eingangsbit zur Operationssteuerung0V,12V,H
    5S0Eingangsbit zur Operationssteuerung0V,12V,H
    7ECEingangsbit für die XOR-Funktion auf das Eingangsbit EB0V,12V,H
    9freikeine BelegungH
    11freikeine BelegungH
    13freikeine BelegungH
    15EOUTSteuereingang für den ALU Datenausgang0V,12V,H
    17UIGEingangsbit für generellen Übertrag aus der Befehlssteuerung0V,12V,H
    19UILEingangsbit für den Übertrag in die niederwertigste Bitstelle der ALU0V,12V,H
    21UIREingangsbit für den Übertrag in die höherwertigste Bitstelle der ALU0V,12V,H
    23freikeine BelegungH
    25UORÜbertragsausgang der höherwertigsten Bitstelle der ALU0V,12V,H
    27UOLÜbertragsausgang der niederwertigsten Bitstelle der ALU0V,12V,H
    29freikeine BelegungH
    31EUOLSteuereingang zur Aktivierung der Übertragskette von der niederwertigsten zur höherwertigsten ALU-Bitstelle0V,12V,H
    33freikeine BelegungH
    35EUORSteuereingang zur Aktivierung der Übertragskette von der höherwertigsten zur niederwertigsten ALU-Bitstelle0V,12V,H
    37GNDSignalmasse0V
    39GNDSignalmasse0V
    2..40freikeine BelegungH
    Der Stecker P3 ist ein 4-poliger 5¼Zoll PC-Stromversorgungsstecker.
    Die Belegung ist:
    PinNameFunktionPegel
    1+12VVersorgungsspannung +12V12V
    2GNDMasse 0V0V
    3GNDMasse 0V0V
    4freikeine BelegungH


  7. Ersatzschaltbild

    Da die ALU eine wichtige und in sich abgeschlossene Funktionseinheit darstellt, wird sie in den Übersichtsschaltplänen der CPU durch ein Ersatzschaltbild dargestellt. Da es für das Verständnis der Funktionsweise der CPU insgasamt nicht von entscheidender Bedeutung ist, wie die ALU im Innern aufgebaut ist, ist die Erfassung als Funktionsblock ausreichend. Wichtig für die weitere Verschaltung sind daher nur die Anschlussleitungen des ALU-Daten- und Steuerbusses, die die Verbindung zur CPU herstellen.

  8. Schluss

    Die ALU des Relaisrechners besitzt einen umfassenden Satz von Operationen mit denen die Daten bearbeitet werden können. Durch die temporären Register an den ALU-Eingängen können Daten aus den Arbeitsregistern oder von der Befehlsdecodierung entgegen genommen werden und beliebig lange zwischengespeichert werden. Dadurch kann der interne Datenbus der CPU zwischenzeitlich für andere Transportoperationen benutzt werden. Das erleichtert die Arbeit der Mikrocodesteuerung erheblich. Das Ergebnisdatenwort der ALU kann ebenfalls frei innerhalb der CPU transportiert werden.
    ALU-Turm von vorn
    Von links nach rechts sind eine Anzeigenplatine, die acht 1-bit-ALUs, der ALU-Controller mit Stromversorgungsanschluss und Steuerbuskabel und ganz rechts die beiden temporären Eingaberegister und das Ausgangsregister mit dem Datenbuskabel zu sehen.
    ALU von hinten
    An der Rückseite ist die Flachbandverkabelung für den internen ALU-Bus zu erkennen.





Sollte jemand seine Rechte durch eine Veröffentlichung auf dieser oder einer anderen meiner Seiten verletzt sehen, bitte ich um sofortige Kontaktaufnahme. Ich werde die entsprechenden Inhalte umgehend entfernen. Somit sind sowohl ein anwaltlicher Rat als auch eine kostenpflichtige Abmahnung nicht erforderlich! Weiterhin weise ich darauf hin, dass der Inhalt verlinkter Seiten nicht in meiner redaktionellen Verantwortung liegt.
Vielen Dank

www.schlaefendorf.de 2012

www.linux-web.de