-
Die Erfindung befaßt sich mit der arithmetischen Multiplikation
-
von Zahlen in einer DV-Anlage. Ublicherweise wird in kleineren Binärrechnern
ein Dezimalprodukt dadurch erzeugt, daß man den Multiplikanden wiederholt zu einem
Teilprodukt addiert. Jede Ziffer des Multiplikators setzt eine Reihe von Additionsvorgängen
in Gang, deren Anzahl der Größe der Multiplikatorziffer ist. Dieser Vorgang wird
solange wiederholt, bis alle Multiplikatorziffern verarbeitet sind. Die hierfür
benötige Zeit ist unmittelbar der Su»Sme der signifikanten Multiplikatorziffern
proportional. Für einen durchschnittlichen Multiplikationsvorgang ist die mittlere
Größe einer Dezimalziffer gleich 4,5, d.h. die Multiplikationszeit entspricht dem
4,5-fachen der Anzahl der signifikanten Multiplikatorziffern. Da Mültiplikations-Operationen
in DV-Anlagen ziemlich bedeutende Zeitperioden in Anspruch nehmen, ist eine Verringerung
der für eine Multiplikation erforderlichen Zeit von Vorteil.
-
Aufgabe der Erfindung ist es folglich, ein DV-System und ein Verfahren
zu finden, in dem die Multiplikation von Zahlen zeitlich verkürzt werden kann.
-
Diese Aufgabe wird gelöst durch das im Anspruch 1 gekennzeichnete
Verfahren. Ist die ausgewählte Ziffer also kleiner oder gleich dem ausgewählten
Wert, beispielsweise 5, so bleibt es beim eingangs geschilderten bekannten Verfahren.Istdieausgewählte
Ziffer hingegen größer als dieser Wert, so erfolgt die Summation nicht mit der Ziffer
selbst, sondern mit deren Komplement, indem diese Komplemente voneinander subtrahiert
werden und anschließend zum Subtraktionsergebnis erneut das Komplement gebildet
wird und das Multiplikationsergebnis darstellt. Vorteilhafte Ausgestaltungen des
erfindungsgemäßen Verfahrens sowie einer hierzu geeigneten Geräteeinheit in einer
DV-Anlage sind in den Unteransprüchen gekennzeichnet.
-
Die Erfindung wird nachfolgend anhand eines in der Zeichnung dargestellten
Ausführungsbeispiels erläutert. Dabei zeigt: Fig. 1 den Systemaufbau einer DV-Anlage;
Fig. 2 das Ablaufdiagramm der Betriebszustände im Pro-.
-
zessor einer solchen DV-Anlage; Fig. 3 das Blockschaltbild des Prozessors;
Fig. 4 eine Darstellung des Inhalts eines Registers des Prozessors; Fig. 5 das Blockschaltbild
des Rechenwerks; Fig. 6 das Flußdiagramm bei der Durchführung des erfindungsgemäßen
Verfahrens zur Multiplikation zweier Zahlen; und Fig. 7 das Blockschaltbild der
Multiplikationslogik.
-
In Fig. 1 dient der Befehlsprozessor CIP 13 (commercial instruction
processor) der Erweiterung der Zentraleinheit CPU 11, insbesondere ihrer Kapazität
an Befehlsgr#ppen durch Verwendung einer wirkungsvollen Gruppe herkömmlicher Befehle.
Diese Befehle gestatten es, der Zentraleinheit 11 über den Befehlsprozessor 13 dezimale
und alphanumerische Daten zu verarbeiten, wobei folgende Befehlsarten auftreten:
Dezimal, Alphanumerisch, Datenumwandlung und Aufbereitung. Der Nachrichtenaustausch
zwischen dem Befehlsprozessor 13 und der Zentraleinheit 11 sowie dem Hauptspeicher
17 erfolgt über eine gemeinsame Systemsammelschiene, genannt Bus 19. Der Befehlsprozessor
13 arbeitet als Zusatz zur Zentraleinheit und empfängt Befehle und Operanden als
Ubertragungsinformationen von der Zentraleinheit und/oder dem Speicher. Der Befehlsprozessor
verarbeitet die Befehle,wie sie von der Zentraleinheit 11 über den Bus 19 ausgesandt
werden.
-
Die Zentraleinheit erhält diese Befehle vom Hauptspeicher und prüft
jeden abgerufenen Befehl, ob es sich um einen kommerziellen Befehl handelt. Der
Empfang eines jeden kommerziellen Befehls durch den Befehlsprozessor tritt üblicherweise
gleichzeitig an der Zentraleinheit auf, da die Zentraleinheit jeden Befehl vom Speicher
abzieht und decodiert. Die Befehlsverarbeitung durch den Befehlsprozessor 13 verläuft
jedoch asynchron zum Betrieb der Zentraleinheit 11. Ist kein Befehlsprozessorsystemvorhanden,
so führt jeder Versuch zur Ausübung eines kommerziellen Befehls dazu, daß die Zentraleinheit
einen speziellen Abfangzustand annimmt.
-
Der Befehlsprozessor 13 empfängt über den Bus 19 Informationen von
der Zentraleinheit 11 und vom Hauptspeicher 17 und verarbeitet diese Informationen
in logischer Folge. Diese besteht aus drei CIP-Betriebszuständen: Frei, Laden, Belegt
und Abfangzustand.
-
Wie Fig. 2 zeigt, fängt der Befehlsprozessor 13 im Block 200 an und
bleibt im Freizustand gemäß Block 202,solange er keine Informationen verarbeitet
und muß auch im Freizustand sein, um
einen Befehl, z.B. einen CIP-Befehl
oder einen Ein/Ausgabebefehl von der Zentraleinheit aufzunehmen. Beim Eingang eines
Befehls gemäß Block 204 wird im Block 205 festgestellt, ob der Befehl zulässig istlund
der Befehlsprozessor geht in den Ladezustand 206 über. In diesem Zustand bleibt
er solange, bis alle zugehörige Befehlsinformation empfangen ist. Ist dies im Block
208 abgeschlossen, so geht der Befehlsprozessor 13 in den Belegtzustand gemäß Block
210 über und verarbeitet die Information.
-
Jeder weitere Versuch der Zentraleinheit mit dem Befehlsprozessor
Informationen auszutauschen, wird von diesem zurückgewiesen, solange er im Belegtzustand
ist und wird erst dann möglich, wenn er erneut den Freizustand annimmt. Die CIP-Verarbeitung
urnfaßt Informationsübertragungsaktivitäten mit dem Hauptspeicher 17, wenn die notwendigen
Operanden abgerufen werden. Der Befehlsprozessor geht in den Abfangzustand gemäß
Block 212 nur dann über, wenn spezielle unzulässige Ereignisse auftreten (Block
214), wie beispielsweise die Feststellung einer unzulässigen Länge des Operanden
oder eines Befehls außer der Reihe. Er kehrt zum Freizustand zurück, sobald gemäß
Block 216 die Operation abgeschlossen ist.
-
Alle zugehörigen Befehlsübertragungen zum Befehlsprozessor werden
gemeinsam von der Zentraleinheit und vom Befehlsprozessor erledigt. Sie werden decodiert
und von der Zentraleinheit zusammen mit allen zur Ausführung der Befehle erforderlichen
Informationen zum Befehlsprozessor übertragen. Sobald die Informationsübertragung
beendet ist, fahren die Zentraleinheit und der Befehlsprozessor mit der Ausführung
ihrer entsprechenden Befehle fort.
-
Jeder CIP-Befehl enthält ein Befehlswort von 16 Bit, an welches sich
unmittelbar bis zu sechs zusätzliche beschreibende Worte von ebenfalls 16 Bit Länge
anschließen, welche als Datendeskriptoren und Etiketten bezeichnet werden. Das Befehlswort
enthält den zur uerarbeitung zum Befehlsprozessor gesandten CIP-Operationscode.
-
Die Datendeskriptoren beschreiben den Typ des Operanden, den Umfang
und den Speicherplatz;das Etikett liefert die Adresse eines fernen Datendeskriptors.
Sowohl der Datendeskriptor als auch das
Etikett werden von der Zentraleinheit
verarbeitet und hierbei erzeugte Information, beispielsweise der Operandentyp und
die Speicheradresse werden zur Weiterverarbeitung zum Befehlsprozessor gesandtDieentraleinheit
analysiert den Operationscode in jedem Befehl. Stellt sie einen CIP-Befehl fest,
d.h. befindet sich der Befehlsprozessor im Freizustand, so sendet die Zentraleinheit
den Befehlsoperationscode und die zugehörige Information in folgender Weise aus:
(i) Die Zentraleinheit sendet den Operationscode, d.h. das erste Wort des kommerziellen
Befehls an den Befehlsprozessor. Dieser geht in den Ladezustand über, sobald er
den Operationscode annimmt; (ii) die Zentraleinheit ruft den ersten Datendeskriptor
ab und fragt die Adressensilbe ab, um die wirksame Adresse zu erzeugen; (iii) die
Zentraleinheit gibt die folgende Information ab: Die aus 24 Bit bestehende effektive
Byte-Adresse des ersten Operanden, gegebenenfalls den Inhalt des entsprechenden
Datenregisters der Zentraleinheit und den Datendeskriptor des ersten Operanden derart
auf den neuesten Stand gebracht, daß sie die Lage eines Bytes (8 Bits) oder eines
Halb-Bytes (4 Bits) innerhalb eines Wortes wiedergibt.
-
Sind weitere, beispielsweise ein zweiter oser ein dritter Operand
vorhanden, so führt die Zentraleinheit die entsprechenden Vorgänge der Schritte
ii und iii aus.
-
Zu diesem Zeitpunkt wird der Befehlsprozessor 13 mit aller für die
Ausführung kommerzieller Befehle erforderlichen Information geladen und geht in
den Belegtzustand über, um den Befehl auszuführen.Falls notwendig, tritt der Befehlsprozessor
13 unmittelbar inlnformationsaustausch mit dem Hauptspeicher 17, um die zugehörigen
Operanden zu erhalten. Der Befehlsprozessor 13 hat jedoch niemals direkten Zugriff
zu den Registern der Zentraleinheit 11. Er verwendet nur Informationen, die ihm
von der Zentraleinheit zugesandt wurde Somit werden keine CPU-Register vom Befehlsprozessor
geändert und die Zentraleinheit arbeitet solange den nächsten und jeden folgenden
CPU-Befehl ab,
bis einer der folgenden Zustände auftritt: (i) der
Befehlsprozessor setzt die Zentraleinheit über einen Abfangvektor (TV) davon in
Kenntnis, daß während der Ausführung des laufenden kommerziellen Befehls ein unzulässiges
Ereignis aufgetreten ist; oder (ii) von der Zentraleinheit wird ein internes oder
externes Unterbrechungssignal festgestellt.
-
Liegt ein solches Unterbrechungssignal vor, so bestimmt die Zentraleinheit,
ob der letzte kommerzielle Befehl vom Befehlsprozessor ausgeführt wurde. Die Zentraleinheit
waitet bis zur Beendigung des letzten kommerziellen Befehls. Sobald dies geschehen
ist, bestimmt sie, ob sich hieraus eine Abfanganforderung ergibt. Ist dies der Fall,gibt
die Zentraleinheit der Ablanganforderung Vortritt, ehe sie eine Unterbrechung durchführt.
Hierdurch wird eine typische Operation zur Speicherinhaltssicherung und Wiedereinspeicherung
ausgelöst, um alle entsprechenden CPU und CIP Zustandsinformationen zu speichern.
Bei Abschluß der CPU-Operation für die Erledigung einer CIP-Abfanganforderullg oder,
sofern keine Abfanganforderung ansteht und ein CIP-Befehl zur Verarbeitung vorhanden
ist, geht die Zentraleinheit wie folgt vor: Sie scheltet ihren Programmzähier fort,
bis zu dem kommerziellen Befehl, den sie in Gang zu setzen versuchte. Die Zentraleinheit
11 verzögert den Versuch der Verarbeitung des kommerziellen Befehls solange, bis
der laufende Unterbrechungsvorgang abgewickelt ist.
-
Sie beachtet und bedient die von einem Außengerät verursachte Unterbrechung.
-
Wenn der Befehlsprozessor 13 einen Befehl abarbeitet, können alle
CPU-Register einschließlich derjenigen, die vom laufenden kommerziellen Befehl angesprochen
sind, durch ein Programm über CPU-Befehle geändert werden. Die Software braucht
jedoch den Operanden für einen kommerziellen Befehl solange nicht zu ändern, bis
der Befehlsprozessor diesen Befehl durchführt. Andernfalls würden unbestimmte Ergebnisse
erzielt werden. Verzweigungsbefehle im Befehlsbestand des Befehlsprozessors CIP
13 werden snychron von der Zentraleinheit CPU 11 und vom Befehlsprozessor CIP 13
verarbeitet.
-
Die drei vom Befehlsprozessor verarbeiteten Datenarten sind alphanumerische
Daten, binäre Daten und Dezimaldaten. Jeder Datentyp ist in Gruppen von Binärinformationen
eingeteilt. Per Definition hat diese Einheit acht Bits ( ein Byte), wenn alphanumerische
und binäre Datenzeichen anstehen. Wenn dezimale Datenzeichen vorliegen, hat die
Einheit vier Bits (Halb-Byte) für paketierte Dezimaldaten und acht Bits (ein Byte)
für Reihendezimaldaten.
-
Eine einzige Präzisionsbinärzahl besteht ebentalls aus zwei Einheiten
(2 Bytes) und eine Doppelpräzisionsbinäreinheit besteht aus vier Einheiten (4 Bytes).
-
Fig. 3 zeigt das wesentliche Blockschaltbild des Befehlsprozessors
13 mit allen bedeutsamen Datenübertragungswegen zwischen den Registern des Prozessors.
Der Steuerspeicher 10 besteht aus mehreren Speicherplätzen und zwar jeweils einem
für jedes Steuerspeicher-oder Firmware-Wort. Diese Firmwareworte steuern direkt
oder indirekt die Prozessorfolgen, Datenübertiagungswege sowie den Busbetrieb.
-
Eine Operandenregisterdateien sowie das Rechenwerk umfassende vinheit
RALU 12 enthält in erster Linie zwei Registerdateien, ein Rechenwerk (ALU) sowie
die zugehörigen Multiplexer und Steuerregister. In dereräteeinheit RALU 12 befinden
sich Operandenregisterdateien RF1 und RF2, von denen jede 16 Speicherplätze f)ür
jeweils 16 Bit aufweist, die als Pufferspeicher für im Rechenwerk ALU zu verarbeitende
Operanden dienen. Die ALU-Eingangsmultiplexer und Verriegelungsschaltungen umfassen
drei 2:1-Multiplexer (Zonenauswahl) , zwei 4:4 Multiplexer (Ziffernauswahl) sowie
zwei 8 Bit Verriegelungsschaltungen (Byteverriegelung).
-
Diese Multiplexer und Verriegelungsschaltungen werden für die Übertragung
von Daten aus den Operandenregisterdateien an das Rechenwerk benutzt. Daten können
auch vom Zähler für das laufende Produkt an die linke Seite des Rechenwerks oder
von der Operandenregisterdatei 2 an das Multiplikationsregister übertragen werden.
-
Das 8 Bit-Rechenwerk #LU,bestehend aus zwei 4-Bit-Bausteinen, einem
Vörwärtsübertragungsbaustein und einem Eingabe/Ausgabe-Flip-Flopkamfolgende Operationen
zwischen den linken (1) und rechten (2) Ausgängen ausführen: Binäre Addition, binäre
Subtraktion
des Eingangssignals 1 vom Eingangssignal 2, binäre Subtraktion des Eingangssignals
2 vom Eingangssignal 1, logische ODER-Verknüpfung, logische UND-Verknüpfung, Exklusiv-ODER-Verknüpfung,
Setzen des Rechenwerkausgangs auf FF, Löschen des Rechenwerkausgangs auf 00. Die
Einheit RALU 12 wird später anhand von Fig. 5 im einzelnen erläutert.
-
Die Uberschuß-6-Korrekturlogik XS6 der Einheit RALU 12 wird jedesmal
aktiviert, wenn das Rechenwerk im Dezimalbetrieb arbeitet und dient dazu, das binäre
Ausgangssignal des Addierers in die kcrrekte Dezimalziffer umzuwandeln und dabei
den Ubertragausgang für Folgeoperationen zu modifizieren. Die XS6-Korrektur wird
mit Hilfe eines 32-Bit mal 8-Bit programmierbaren Festwertspeichers PROM durchgeführt,
welcher die korrigierten drei Bits hoher Wertigkeit der Ziffer codiert und den korrigierten
Übertrag erzeugt. Am Ausgang des PROM-Bausteins ist für andere Steuerzwecke Funktionssignal
für Ziffern kleiner als Zwei vorhanden.
-
Der Ausgangsmultiplexer des Rechenwerks wird dazu benutzt, entweder
die oberen vier Bits des Addiererausgangssignals oder die korrekten Dezimalzonenbits
der internen Sammelschiene, genannt Bus 14, zuzuführen und zwar abhängig davon,
ob das Rechenwerk im Binärbetrieb der Dezimalbetrieb arbeitet. Die RALU-Steuereinheit
besteht aus drei Registern, nämlich einem Registerdatei-1-Adressregister RF1A, einem
Reoi sterdatei-2 -Adressregister RF2A und einem Rechenwerk-Betriebsartsteuerregister
ALMR. Diese Register steuern zusammen mit verschiedenen Mikröbefehlen alle Vorgänge
innerhalb der Geräteeinheit RALU 12. Neben den beschriebenen Registern und Steuereinrichtungen
sind zwei weitere Register vorhanden, welche als RÄLU-Register eingeordnet sind.
Dies sind der Zähler CPRC für das laufende Produkt sowie das Multiplikatorregister
MIER.
-
Die Steuerdatei 16, auch als Registerdatei C (RFC) bezeichnet, ist
ein 24-Bit Speicher mit wahlfreiem Zugriff (RAM) mit 16 Speicherplätzen und wird
hauptsächlich benutzt, um alle befehlsbezogenen Informationen zu speichern,die von
der Zentraleinheit CPU11 kommen, beispielsweise Aufgabenworte, Datendeskriptcren,
effektive Adressen usw. Die Steuerdatei enthält ferner mehrere
Wortspeicherplätze,
welche durch die Firmware des Befehlsprozessors CIP benutzt werden. Die Steuerdatei
16 empfängt die Bits 0 bis 7 entweder vom internen BUS 14 oder über den Multiplexer
21 mit ODER-Logik vom Bus-Adressregister MAR 18. Das Busadressregister 18 ist ein
24-Bit-Adressregister und dient hauptsächlich der Adressierung des Systembus 19.
Es besteht aus einem 8-Bit-Multiplexerregister mit zwei Eingängen am unteren Ende
sowie einer 16-Bit-Fortschalt/Rückschalteinrichtung am oberen Ende. Das Nultiplexeingangssignal
für die unteren 8 Bits kommt entweder von der Steuerdatei 16 oder vom Ausgang des
Adressaddierers 20.
-
Letzterer ist ein 8-Bit-Zweierkomplement-Addierer und wird in erster
Linie zum Fortschalten oder Rückschalten des Inhalts im Busadressregister 18 eingesetzt.
Die Eingangssignale zum Adressaddierer 20 sind die geringwertigen 8 Bits des Busadressregisters
und des 8-Bit-Schieberegisters MSR 22. Hierbei handelt essichinein 8-Bit-Universalschieberegister,
welches vom internen Bus 14 geladen wird und seinen Inhalt um 1 Bit nach links oder
rechts verschieben kann, d.h. eine Offenend-Verschiebung mit Nullergänzung. Das
Schieberegister arbeitet als Eingang des Adressaddierers 20 zum Fortschalten oder
Zurückschalten des Busadressregisters 18.
-
Außerdem kann das Bit s des Schieberegisters 22 in das Rechenwerk-Eintrag-Flip-Flop
geladen werden, welches sich während der Ausführung von Umwandlungsbefehlen als
nützlich erweist.
-
Das Busausgangsdatenregister OUR 24 ist ein 16-Bit-Datenregister und
wird zur Datenübertragung auf die Datenleitungen des Bus 19 benutzt. Es wird vom
internen Bus 14 entweder mit dem unteren oder dem oberen Byte oder dem gesamten
16-Bit-Wort geladen. Beim Buseingangsdatenregister INR 26 handelt es sich um ein
16-Bit-Datenregister, welches Daten von den Datenleitungen des Bus 19 empfängt.
Der Inhalt dieses Datenregisters kann in den internen Bus 14 umgeladen werden.
-
Das Eingangsfunktionscoderegister BFCR 28 stellt sich als 6-Bit-Register
dar, welches der Speicherung des Funktionscodes dient, wenn der Befehlsprozessor
vom Bus 19 irgendwelche Eingangs- oder Ausgangsbefehl annimmt. Anschließend prüft
die Firmware den
Inhalt des Funktionscoderegisters 28 und führt
den angegebenen Befehl durch. Das Eingangsadressbankregister INAD 3G ist ein 8-Bit-Register
für die Speicherung der höherwertigen 8 Speicheradressbits, die über die Adressleitungen
des Bus 19 ankommen. Sie enthalten die Speichermoduladresse und werden von der Zentraleinheit
11 als Ergebnis eines sogenannten IOLD-Befehls oder eines Ausgangs-Funktionscodes
für Effektivadressen übertragen.
-
Die niederwertigen 16 Bits der Speicheradresse werden über die Datenleitungen
des Bus 19 empfangen und in das INR-Register 26 eingegeben und bilden die geforderte
24-Bit-Hauptspeicheradresse.
-
Das CIP-Anzeigeregister 32 ist als 8-Bit-Speicherregister ausgebildet,
in dem jedes Bit einzeln gesetzt oder rückgestellt werden kann. Die Bit-Konfiguration
des Anzeigeregisters ist in Fig 4 dargestellt. Die TRP- und TRP-Leitungs-Anzeiger
werden vom Befehlsprozessor nur für interne Verarbeitung benutzt und sind für die
Software unsichtbar. Der TRP-Leitungsanzeiger (CIP-Abfangleitung) informiert die
Zentraleinheit 11 über einen bestehenden CIP-Abfangzustand und wird über das externe
Abfangsignal über den Bus 19 übertragen. Ist der TRP-Anzeiger gesetzt, so kann der
Befehlsprozessor nur Eingangsbefehle von der Zentraleinheit CPU 11 annehmen.
-
Das Analysenregister AR34 ist ein 16-Bit-Register und wird in erster
Linie zur Steuerung von Mikroprogrammverzweigungen tnaskierte Verzweigungen) benutzt
sowie zur Steuerung der Codier/ Decodierlogik für das Überlochbyte. Dieses Register
wird vom internen Bus 14 mit dem gesamten 16-Bitwort geladen. Das mikroprogrammierbare
Schaltregister MPSR 36 stellt sich als 8 Bitregister dar, indem durch Steuerung
über Mikroprocramm jedes Bit einzelnen gesetzt oder rückgestellt werden kann. Jedes
Bit im Register 36 wird als Anzeiger zur Erleichterung der Mikroprogrammierung benutzt,
d.h. die Firmware kann jedes der Registerbits prüfen und in Abhängigkeit vom Prüfergebnis
Verzweigungs-Operationen ausführen. Einige dieser Bits werden auch zur
Steuerung
bestimmter Hardware-Funktionen im Befehlsprozessor 13 genutzt.
-
Beim ROS-Datenregister RD 38 handelt es sich um ein 52-Bit-Speicherregister
für die Speicherung des Steuerspeicherausgangssignals (eines Firmwarewortes)im laufenden
Firmwarezyklus. Das Mikroprogramm-Rückkehradressadressregzter SRA 40 ist ein 11-Bit-Register
und wird vom Ausgangssignal der Folgeadresslogik NAG 42 geladen. Es dient der Speicherung
der Mikroprogrammrückkehradresse beim Ausführen einer Firmware-Subroutine. Der Registerdatei-C-Adressmultiplexer/selektor
RFCA 31 ist ein 4-Bit-2:1-Selektor und kann einen der 16 Speicherplätze innerhalb
der Registerdatei C16, d.h. innerhalb der Steuerdatei adressieren.
-
Der Selektor 31 wählt eine Kombination des Funktionscoderegisters
28 sowie entweder den Zähler (1)46 oder bestimmte Bits des ROS-Datenregisters 38
an. Die CIP-Zähler 44 enthalten drei 8-Bit-Auf/Ab-Zähler 46, 48 und 50, welche als
Zähler 1(CTR1),Zähler 2 (CTR 2) und Zähler 3(CTR 3) bezeichnet sind. Diese Zähler
werden über den internen Bus 14 geladen und entladen. Der Inhalt jedes Zählers steht
für Prüfung- und Verzweigungsoperationen zur Verfügung.
-
Die Decodier/Codierlogik 52 für das Überlochbyte umfaßt zwei Speicherbausteine
in Form programmierbarer Festwertspeicher PROM trit 512 Speicherplätzen für je 4
Bit. Sie werden zum Decodieren und Codieren des Inhalts des Analysenregisters AR34
eingesetzt.
-
Das decodierte Byte wird von den Bits 1 bis 7 des Analysenregisters
erhalten und den codierten Ziffernanfang erhält man von den Bits 4 bis 7 des Analysenregisters.
Die Decodier/Codieroperation wird durch Verwendung der Bit 1 bis 7 des Analysenregisters
benutzt, um hierdurch einen speziellen PROM-Speicherplatz zu adressieren. Der Inhalt
dieses Speicherplatzes wird codiert, um entweder (1) die decodierte Ziffer, ihr
Vorzeichen und ihre Wertigkeit oder (2) das codierte Überlochbyte zu prüfen.
-
Bit 4 des Schaltregisters 36 bestimmt, ob eine Decodier oder eine
Codieroperation ausgeführt wird, während Bit 1 das Vorzeichen
des
codierten Bits anzeigt. Das Ausgangssignal der Decodier/odierlogik für das Überlochbyte
ist auch auf beiden Hälften des internen Bus 14 verfügbar.
-
Die CIP-Prüflogik 54 wählt einen der 32 möglichen Firmware-Prüfzustände
als Eingangssignal für die Folgeadressenlogik 42 aus. Der zutreffende oder falsche
Zustand der geprüften Funktion steuert Bit 50 des Steuerspeicher-Folgeadresenfeldes,
d.h. er setzt das Bit 50 oder stellt es zurück, je nach dem Zustand der überprüften
Funktion. Die Folgeadressenlogik NAG 42 im Befehlsprozessor 13 benutzt eine der
folgenden fünf Methoden zur Erbeugung der nächsten, also folgenden Firmwareadresse:
Direkte Adressierung, Prüfen und Verzweigen, maskierte Verzweigung, Hauptverzweigung
oder Rückkehr über Subroutine. Die direkte Adressierung wird benutzt, wenn eine
bedingungslose Verzweigung zum nächstfolgenden Steuerspeicherplatz ausgeführt wird.
Hierfür werden die Bits 41 bis 51 des Steuerspeicherworts zur Bildung der Folgeadresse
verwandt. Diese Bits enthalten das Folgeadressenfeld, welches unmittelbar jeden
der vorhandenen Steuerspeicherplätze adressieren kann. Eine Prüf- und Verzweigungsoperation
wird durchgeführt, wenn eine Zweiweg-Bedingungsverzweigung bei erfolgreicher Prüfbedingung
innerhalb einer Firmwareseite durchgeführt wird. Eine Firmwareseite ist ein Segment
mit 128 Speicherplätzen innerhalb des Steuerspeichers. Hierbei werden die Steuerspeicherbits
41 bis 44 und 50 zur Auswahl des Prüfzustands herangezogen. Je nach Zustand der
überprüften Funktion wird eine Verzweigung zu einem der beiden Speicherplätze eingeleitet.
Die Verzweigungsoperation gemäß diesem Verfahren ist von der Art Modulo 2, d.h.
die beiden möglichen Verzweigungsadressen liegen zwei Speicherplätze auseinander.
Die Modulo 2-Adresse wird wie wie folgt entwickelt: (1) Ist die Testbedingung erfüllt,
so wird Bit 9 der Adresse auf "1" gesetzt, oder (2) ist die Testbedingung nicht
erfüllt, so wird Bit 9 der Adresse auf "0" gesetzt.
-
Eine maskierte Verzweigung wird normalerweise benutzt, wenn eine Verzweigung
für den Inhalt des Analysenregisters AR 34 oder
bestimmter anderer
Zustände erfolgen soll. Sie stellt eine Verzweigung zu zwei, vier acht oder sechzehn
Speicherplätzen innerhalb der gleichen Firmwareseite dar. Eine Hauptverzweigung
wird für die Verzweigung innerhalb einer Firmwareseite (128 Worte) angewandt. Eine
CPU/CIP-Schnittstellenroutine verwendet diese Methode, um die erforderliche 16-Wegverzweigung
für den Inhalt des Funktionscoderegisters 28 zu erreichen (INB-Hauptverzweigung
und EOP-Hauptverzweigung. Die Rückkehr über eine Subroutine erfolgt dann, wenn die
Firmware nach Durchführung einer Firmware-Subroutine zum nächsten ungeradezahligen
oder geradzahligen Steuerspeicherplatz zurückgebracht werden soll. Die Rückkehradresse
erhält man vom Rückkehradressregister RSRA 40. Sie muß in diesem Register 40 gespeichert
werden, ehe die betreffende Subroutine ausgeführt wird.
-
Der interne Bus 14 ist für 16 Bits eingerichtet und dient in erster
Linie der Datenübertragung zwischen CIP-Re;istern einschließlich von Speicherplätzen
innerhalb der Registerdateien.
-
Er empfängt, wie Fig. 2 zeigt, Daten von verschiedenen Quellen.
-
Ausgangssignale des internen Bus 14 werden verschiedenen Registern
innerhalb des Befehlsprozessors 13 zugeleitet. Die Paritätsprüflogik 56 liegt zwischen
dem Bus 19 und dem internen Bus 14 und prüft die Parität der ankommenden Daten.
Die Paritätserzeugerlogik 58 andererseits wird zur Erzeugung des richtigen Paritätsbits
für die Übertragung über den Bus 19 verwandt. Die Busanforderungslogik 60 und die
Busantwortlogik 62 dienen der Aktivierung des Befehlsprozessors 13,um Zugriff zum
Bus 19 zu erlangen bzw.
-
auf Anforderungen nach Zugriff zum Befehlsprozessor zu antworten.
-
Die Logikschaltungen 60 und 62 sind in der US-PS 39 93 981 beschrieben.
-
Fig. 5 zeigt das Blockschaltbild der Geräteeinheit RALU 12 mit den
hauptsächlichen Datenübertragungswegen und Steuerleitungen.
-
Letztere sind als gestrichelte Linien dargestellt. Die Beschreibung
der Geräteeinheit 12 ist in sieben Bereiche unterteilt:
Operandenregisterdateien,
Rechenwerk-Eingangsmultiplexer und Verriegelungsschaltungen, Rechenwerk, XS6-Korrekturlogik,
Rechenwerk-Ausgangsmultiplexer, RALU-Steuerlogik, verschiedene RALU-Register. Jede
der Operandenregisterdateien RF1 70 und RF2 72 besteh aus vier RAM-Speicherbausteinen
und wird zur vorübergehenden Speicherung der CIP-Operanden benutzt. Die Adressen
für jede der Registerdateien werden durch zwei 6-Bit-iressregister RF1A 74 bzw.
RF2A 76 geliefert. Die Bits 0 bis 3 jedes Pdressregisters liefern die Adresse des
Speicherplatzesinnerhalb der zugehörigen Registerdatei, während die geringwertigen
Bits für die Byte- und Ziffernauswahl am Ausgang der Registerdatei sorgen.
-
Beide Adressregister können durch Ziffern, Bytes oder Worte um jeweils
einen, zwei oder vier Schritte vor-und zurückgeschaltet werden. Das Ausgangssignal
jeder Registerdatei wird den Eingängen zweier Multiplexer zugeleitet, welche zwischen
Zonen-und Zifferninformation unterscheiden. Diese Auswahl erfolgt anhand der Bits
4 und 5 des zugeordneten Adressregisters. Bit 4 wählt aus, ob die Bits 0 bis 3 oder
8 bis 11 der Registerdatei zum Ausgang des 2:2-Multiplexers 78 oder 80 geleitet
werden, während das Bit 5 die Registerdateibits auswählt, welche die zum Ausgang
des 4:1-Multiplexers 82 bzw. 84 zu leitende Ziffer enthalten.
-
Die verschiedenen Register und Multiplexer sind über verschiedene
Steuerleitungen 71, 73, 75 und 77 miteinander verbunden. Ein dritter 2:1-Multiplexer
86 dient der Auswahl ob der Inhalt des Zählers CPRC 88 für das laufende Produkt
oder die Ziffer vom Register RF1 der A-Verriegelungsschaltung 90 zugeleitet wird.
-
Dieser Multiplexer wirdvom ALMR-Register 92 gesteuert. Die ALU-Eingangsverriegelungsschaltungen,
die A-Verriegelungsschaltung 90 und die B-Verriegelungsschaltung 106, erhalten sowohl
Zonen-als auch Zifferninformation von den Rechenwerkeingangsmultiplexern und verriegeln
während der Schreiboperationen die Daten in den Registerdateien. Die Ausgangssignale
der Verriegelungsschaltungen liefern die Zonen- und Zifferninformation an die linke
bzw. die rechte Seite des Rechenwerkes.
-
Der Zähler CPRC 88 für das laufende Produkt ist ein dezimaler 4-Bit-Auf/Abwärtszähler
und wird in erster Linie bei dezimalen Multiplikations- und Divisionsoperarationen
eingesetzt. Das Multiplikatorregister MIER 94 ist ein binärer 4-Bit Auf/Abwärtszähler
und dient gleichen Zwecken. Beim Rechenwerk-Betriebsartsteuerregister ALMR 72 handelt
es sich um ein 6-Bit-Steuerregister. Das Adressregister RF1A 74 für die Registerdatei
1 stellt sich als 6-Bit-Adressregister dar und hat zwei Funktionen: (1) es liefert
Adressen für die Registerdatei 1 (70) und (2) steuert zwei der drei Rechenwerkeingangsmultiplexer,
die der Registerdatei 1 zugeordnet sind. Das Registerdatei-2-Adressregister RF2A
76 ist ebenfalls ein 6-BitAdressregister und übt inBezug auf die Registerdatei 3
(72) die entsprechenden Funktionen aus. Alle Operationen des Rechenwerks ALU 100
werden entweder dezimal oder binär ausgeführt. Dezimalbetrieb erfolgt bei der Verarbeitung
von Dezimalzifferinformationen, während Binärbetrieb für die Verarbeitung von Bytes
(Alpha) dient. Beide Betriebsarten steuern außerdem die Über-6-Korrekturlogik 102
(XS6) sowie die Eingänge des Übertragungs-Flip-Flops. Bei Dezimalbetrieb wird dieses
Flip-Flop mit dem Übertrag aus den vier Bits niedriger Wertigkeit des Rechenwerks
geladen, während es bei Binärbetrieb den Übertrag der acht Bits des Rechenwerks
für nachfolgende arithmetische Operationen aufnimmt. Das Laden des Übertrag-Flip-Flops
erfolgt, gesteuert durch ein Mikroprogramm, sobald ein Übertrag für nachfolgende
Operationen weitergegeben werden muß. Außerdem kann das Übertrag-Flip-Flop vom MSR-Register
geladen werden sowie von einem Mikroprogramm gesteuert, gesetzt oder zurückgestellt
werden.
-
Die XS6-Korrekturlogik 102 enthält einen 32-Bit x 8 Bit PROM-Baustein
sowie die zugehörige Steuerlogik für die Korrektur der drei höherwertigen Bits am
Ziffernausgang des Rechenwerks. Die XS6-Korrektur wird durchgeführt, sofern: (1)
das Rechenwerk im dezimalen Additionsbetrieb arbeitet und ein dezimaler Übertrag
festgestellt wirdoderfiffernausgang des Rechenwerks 100 größer
als
9 ist, sowie (2) wenn das Rechenwerk im dezimalen Subtza>#ionsbetrieb arbeitet
und ein Borgbetrag erforderlich ist, d.h. ein Übertrag vom Ziffernteil des Addierers
fehlt. Der PROM-Baustein hat fünf Adressleitungen, drei hiervon sind für die drei
Bits höherer Ordnung vom Ziffernausgang des Rechenwerks bestimmt, während die anderen
beiden Adressleitungen die Art der ausgeführten Operation anzeigen, d.h. Addier-Korrektur
Subtrahier-Korrektur oder keine Korrektur. Der codierte Inhalt des PROM-Bausteins
besteht aus den drei korrigierten Bits höherer Ordnung der Ziffer, dem korrigierten
Dezimalübertrag und dem Zustand "Ziffer kleiner als 2".
-
Der Rechenwerkausgangsmultiplexer 104 wählt zwischen oberen vier Bits
des Addiererausgangssignals und den korrigierten Dezimalzonenbits aus und liefert
diese an den internen Bus. Die Konfiguration der Zonenbits für den Dezimalbetrieb
hängt davon ab, ob ASCII-oder EBCDIC-Daten verwendet werden. Wenn ASCII-Daten verarbeitet
werden, erhalten die Zonenbits den Wert 3, während bei der Verarbeitung von EBCDIC-Daten
die Zonenbits einen Wert F haben.
-
Die Register- und Rechenwerksteuerung 12 besteht aus Registern RF1A
74, RF2A 76 und ALMR 92 sowie verschiedenen Mikrobefehlen.
-
Außerdem wird das Rechenwerk-Übertragungs-Flip-Flop durch ein Mikroprogramm
gesteuert. Es kann je nach Bedarf durch entsprechende Mikrobefehle gelöscht oder
vorgesetzt werden und läßt sich laden von: (1) dem 4-Bit-Digialübertrag für Dezimaloperationen,
(2) dem 8-Bit-Binärübertrag für Binäroperationen, oder (3) durch das Bit 0 des MSR-Registers
22, während der Durchführung eines Umwandlungsbefehls. Das alle Rechenwerkoperationen
steuernde ALMR-Register 92 wird mit den Steuerspeicherbits 2 bis 7 geladen. Bit
0 gibt an, ob das Rechenwerk im Dezimal-oder im Binärbetrieb arbeitet, d.h. ob der
Austrag des Rechenwerks mit Bit 4 (digitaler Übertrag) oder mit Bit 0 (binärer Übertrag)
erfolgt. Bit 0 steuert weiterhin sowohl die Rechenwerkkorrektur
XS6
für Dezimaloperationen sowie den Rechenwerkausgangsmultiplexer 104. Dieser bestimmt,
ob die höherrangigen vier Bits des Rechenwerks oder die Zonenbits dem internen Bus
zugeleitet werden. Die Bits 1, 2 und 3 dienen der Operationssteuerung innerhalb
des Rechenwerks. Bit 4 bestimmt, ob die Zonenbits auf einen Wert 3 oder F gesetzt
werden und zwar auf den Wert 3 für ASCII-Daten und auf den Wert F für EDCDIC-Daten.
Bit 5 gibt an, ob die aus der Registerdatei 1 oder dem Inhalt des Zählers 88 für
das laufende Produkt ausgewählte Ziffer den auf der linken Seite des Rechenwerks
angeordneten Verriegelungsschaltungen 90 zugeführt wird. Das Register RF1A liefert
die Adresse und steuert die Registerdatei sowie die zugehörigen Rechenwerk-Eingangsmultiplexer.
Das Register RF2A hat die gleiche Aufgabe in Bezug auf die Registerdatei 2.
-
Die Steuerdatei 16 ist in zwei Bereiche unterteilt, nämlich die obere
Sektion mit den Bits 0 bis 7 und die untere Sektion mit den Bits 8 bis 23. Jede
Sektion kann wie folgt geladen werden: Die niedrige Sektion vom internen Bus (Bits
0 bis 15), die obere vom internen Bus (Bits 0 bis 7), die untere vom internen Bus
(Bits 0 bis 15) und die obere vom Busadressregister 18 (Bits 0 bis 7). Den die obigen
Operationen durchführenden Funktionen ist eine Adresse zugeordnet, welche der in
den Speicherplatz RFC 16 geladenen entspricht. Diese Adresse stammt entweder vom
Funk tionscoderegister 28 oder vom Steuerspeicher 10. Damit steht die RFC-Adresse
in unmittelbarem Zusammenhang zur Art der von der Zentraleinheit übertragenen Daten
bzw. zum angezeigten Funktionscode.
-
Nach der vorangehenden Beschreibung des Aufbaus der DV-Anlage wird
nachfolgend anhand des Flußdiagramms gemäß Fig. 6 sowie des Blockschaltbildes nach
Fig. 7 ihre Anwendung zur Durchführung des erfindungsgemäßen Multiplikationsverfahrens
erläutert. Der Eintritt in das Flußdiagramm gemäß Fig. 6 erfolgt aus einer 16-Weg-Operationscodeverzweigung
in die Blöcke 200 und 201. Die erste Routine DD1 analysiert den Wortbeschreibungsoperanden
1 im Block 202. Diese Routine prüft die Länge des Operanden um festzustellen, ob
er gleich oder größer als Null ist. Ist er Null, so tritt ein Abfangzustand IS wegen
unzulässiger Eigenschaft ein. R4 ist ein Platz in der Steuerdatei 16 (RFC) und dient
zum Sicherstellen der Länge des Operanden 1 (MAND), der aus dem Datendeskriptor
herausgezogen wurde. Die DD1-Analyse endet mit einer Zweiwegverzweigung der Datenartspezifikation
des Datendeskriptors 1, je nachdem ob der Operand ein gepacktes Format oder ein
ungepacktes Format hat. Gepackte Dezimaldaten sind im BCD-Code mit 4 Bits pro Ziffer
formatiert. Ungepackte Dezimaldaten sind in 8 Bits per Ziffer gepackt,bestehend
aus einer 4-Bitzone und einem 4-Bit-Ziffernanteil. Die gepackte 8-Bit-Information
ist für die Ausgabe auf einem Schnelldrucker formatiert.
-
Sie dient der Unterscheidung zwischen Alpha zahlen und Sonderzeichen.
Das gepackte Format wird im Rechner als rein numerische Information benutzt, wo
sich das Problem der Unterscheidung zwischen Aplhazeichen und numerischen Zeichen
nicht stellt. Hierdurch wird Speicherplatz gespart.
-
Ist der Operand 1 gepackt, so läuft die Routine 204 an. Hier wird
der gesamte Operand aus dem Speicher ausgelesen und in die Registerdatei 1 innerhalb
des Befehlsprozessors CIP 13 eingegeben.
-
Auch wird die Adresse der höchstwertigen Ziffer im Register RF1 im
Gebrauchsspeicherplatz ULO des Registers RFC sichergestellt.
-
Nachdem der gesamte Operand 1 in das Register RF1 eingegeben ist,
fängt die Routine 208 an. Hier wird das Vorzeichen des Operanden analysiert und
decodiert, und eine Aufzeichnung des Vorzeichens wird im Register MPSR 36 im Speicherplatz
0 festgehalten. Außer
der Aufzeichnung des Vorzeichens wird die
Adresse der höchstwertigen Ziffer des Operanden 1 im Gebrauchsspeicherplatz 1 des
Registers RFC16 festgehalten. Die Länge des Operanden 1, d.h.
-
seine Länge ohne das Vorzeichen, wird im Speicherplatz R4 des Registers
RFC niedergelegt. Das Vorzeichen des Operanden 1 wird hinsichtlich Richtigkeit überprüft
und wenn ein falscher Vorzeichencode auftritt, beginnt ein Abfangvorgang wegen unzulässiger
Codierung; die Befehlsausführung endet an diesem Punkt, Enthält der Operand 1 nur
ein Vorzeichen, d.h. wenn seine Länge gleich 1 ist und ist der Operand mit einem
Vorzeichen versehen, so entsteht ein Abfangpunkt wegen unzulässiger Spezifikation
und der Befehl endet. Enthält der Operand Daten und ist sein Vorzeichen ordnungsgemäß,
so beginnt die Routine 210, welche den Deskriptor des Operanden 2 analysiert. Operand
2 ist der Multiplikator.
-
Ist der Operand 1 gepackt, so fängt Routine 206 an und der gepackte
Operand wird aus dem Speicher ausgelesen, aus dem ungepackten in ein gepacktes Format
umgewandelt und im Register RF1 sichergestellt. Die 8-Bit-Darstellung wird also
in eine 4-Bit-Darstellung in der Registerdatei 1 umgewandelt und die Zoneninformation
entfernt. Ähnlich wie im Fall des gepackten Formats wird die Adresse der höchstwertigen
Ziffer des Operanden 1 im Gebrauchsspeicherplatz 0 der Steuerdatei RFC 16 abgelegt.
Die Routine 206 geht in die Routine 212 über und analysiert das Vorzeichen des Operanden
1. Es handelt sich um gepackte Vorzeichen. Es gibt zwei unterschiedliche Formate,
nämlich ein Vorzeichen mit acht getrennten Bits und ein Überloch-Vorzeichen in der
gepackten Information. Das Vorzeichen wird auf Richtigkeit geprüft. Ist es unzulässig,
d.h. wenn der Vorzeichencode unzulässige Zeichen enthält, so ergibt sich ein Abfangzustand
wegen unzulässiger Codierung und der Befehl endet. Besteht der Operand 1 nur aus
einem Vorzeichen ohne Daten, so erfolgt ebenfalls ein Abfangen wegen unzulässiger
Spezifikation und eine Beendigung des Befehls. Ist keiner dieser Zustände gegeben,
so geht die Routine 212 in die Routine 210 über und analysiert den Deskriptor des
Operanden 2 (MIER). Zur Analyse des Datendeskriptors DD2 des Operanden 2
wird
in der Routine 210 zunächst geprüft, ob die angegebene Adresse einen Direktoperanden
angibt. Ist dies der Fall, so wird die Operation abgefangen wegen unzulässiger Spezifikation
und die Befehlsverarbeitung endet an dieser Stelle. Ein Direktoperand ist ein solcher,
der im Befehlswort enthalten ist und ist als Operand 2 für einen dezimalen Multiplikationsbefehl
unzulässig. Der Operand 2 wird ferner darauf überprüft, ob seine Länge größer als
Null istund ob er ein Datenzeichen enthält, d.h.ob er nicht etwa nur aus einem Vorzeichen
besteht. Die DD2-Analysenroutine entnimmt die Länge des Operanden 2 aus dem Datendeskriptor
DD2 und stellt sie im Gebrauchsspeicherplatz R5 der Registersteuerdatei RFC16 sicher.
Während der l)D2-Analyse wird die Adresse der geringstwertigen Ziffer des Operanden
2 im Speicher gebildet als Vorbereitung für den Zugriff zum Operanden im Speicher
und zwar sofern der Operand gepackt ist. Ist der Operand 2 hingegen ungepackt, so
würde dieselbe Adresse für das geringstwertige Byte des Operanden 2 berechnet. Ist
die Länge des Operanden 2 größer als Null und bezeichnet der Datendeskriptor DD2
keine direkte Operandenadresse IMO, so verzweigt die DD2-Analyse für den Datentyp
des Operanden 2,der gepackt oder ungepackt sein kann. Sofern der Operand 2 gepackt
ist, geht die Firmware-Routine 210 in die Routine 214 über und wenn er ungepackt
ist, in die Routine 216. In beiden Routinen wird das Vorzeichen des Operanden 2
analysiert und auf Gültigkeit sowie zulässige Codierung überprüft.
-
Die Operation wird wegen unzulässiger Codierung abgefangen und der
Befehl beendet, falls sich das Zeichen als ungültig erweist.
-
Besteht der Operand nur aus einem Vorzeichen, so wird auch dieser
Zustand festgestellt und der Befehl beendet. Anschließend wird die Länge des Operanden
abzüglich des Vorzeichens bestimmt und im Gebrauchs- oder Dienstspeicherplatz BUL
der Registersteuerdatei abgelegt. Die der geringstwertigen Ziffer oder dem geringstwertigen
Byte des Operanden 2 entsprechende Adresse im Register RF2 wird im Dienstspeicherplatz
WL1 der Datei 16 sichergestellt. Beide Firmware-Routinen 214 und 216 gehen in
die
Firmware-Routine 218 über. Der Unterschied zwischen den Routine 214 und 216 besteht
darin, daß der Umfang des Zeichens für gepackte Operanden nur 4 Bit beträgt, während
der Umfang des Zeichens für ungepackte Operanden ein 8-Bit-Zeichen ist und daß zwei
Formate von Zonenzeichen bestehen.
-
Die Firmware-Routine 218 tastet den Operanden 1, d.h. den Multiplikanden
vom höchstwertigen zum geringstwertigen Ende ab, um eine Kette höchstwertiger Nullstellen
zu ermitteln. Die Operation hört auf, sobald ein Zeichen ungleich Null gefunden
ist.
-
Für jedes gefundene 0-Zeichen wird die Länge des Operanden verringert.
Die Anzahl der gefunden Nulls#llen am höchstwertigen Ende verringert die Länge des
Operanden auf eine signifikante Länge und diese signifikante Länge des Operanden
wird im Speicherplatz R4 der Registersteuerdatei 16 abgelegt. Die Firmware-Routine
218 prüft schließlich die reduzierte signifikante Länge des Multiplikanden. Ist
diese gleich Null und ist folglich das Produkt gleich Null so geht die Routine zum
Produktblock 224 (Punkt B) über. Weder der Block 224 noch der Block 222 sind Operationsblöcke.
Sie sind lediglich Anschlüsse oder Anzeiger im Flußdiagramm.
-
Findet die Firmware-Routine 218 beim Abtasten des Multiplikanden auf
Nullstellen, daß der Multiplikand nicht gleich Null ist, so geht sie in die Firmware-Routine
220 über. Hier wird eine ähnliche Abtastung des Operanden 2, d.h. des Multiplikators
vorgenommen, wiederum vom höchstwertigen Ende zum geringstwertigen Ende. Für jede
am höchstwertigen Ende des Operanden 2 in einer Reihe gefundene Nullstelle wird
die Länge des Operanden um 1 verringert. Die verringerte oder signifikante Länge
des Operanden 2 wird im Speicher CTR1 46 festgehalten und die Adresse des geringstwertigen
Multiplikatorzeichens im Dienstspeicherplatz WL1 der Registersteuerdatei RFC16.
Die Firmware-Routine 220 prüft die Länge des Multiplikators, um festzustellen, ob
diese gleich Null ist. Ist dies der Fall, so gilt dies auch für das
Produkt
und die Routine 220 geht in die Routine 224 über. Ist der Multiplikator hingegen
nicht gleich Null, d.h. wenn bei der Abtastung einige signifikante von Null verschiedene
Zeichen gefunden werden, so geht die Routine 220 in die Routine 222 (Punkt A) über
und beginnt mit der Berechnung des Produkts.
-
Am Anfang der Produktberechnung steht die Firmware-Routine 226.
-
Dieser Vorzyklus wird nur einmal während jedes Multiplikationsbefehls
durchgeführt. Mit ihm wird die Länge des Produkts berechnet, indem man die signifikanten
Längen von Multiplikator und Multiplikand addiert. Eine andere Funktion des Vorzyklus
ist die sicherstellung der Produktlänge für spätere Verwendung. Die nächste Funktion
besteht im Löschen des Registerbereichs RF2 auf Null, in welchem das Produkt entsteht.
Das anfängliche Teilprodukt ist gleich Null. Die Länge des Produkts wird ebenfalls
in der Registerdatei C gespeichert. Dieser Vorzyklus geht in die Firmware-Routine
228 über, welche den Vorzyklus für jedes Multiplikatorzeichen darstellt. Zu Beginn
der Bildung jedes Teilprodukts wird dieser Zyklus angelaufen.
-
Die Vorzyklusroutine für das Multiplikatorzeichen überprüft jedes
der Multiplikatorzeichen. Zunächst wird festgestellt, ob es sich um ein gültiges
Zeichen handelt. Ist das Multiplikatorzeichen größer als 9, so erfolgt ein Abfangen
wegen unzulässiger Codierung und der Befehl endet. Anschließend wird das Multiplikatorzeichen
auf Null überprüft. Ist das Multiplikatorzeichen gleich Null, so ist auch das Teilprodukt
gleich Null. Ist dies der Fall und war der vorangehende Zyklus ein Additionszyklus,
d.h. lag kein Übertrag von einem vorangehenden Zyklus vor, so geht der Zeichenvorzyklus
über in die Routine 234, welche die Fertigstellung des Teilprodukts darstellt. Ist
das Multiplikatorzeichen nicht größer als 9 und auch nicht gleich Null, so wird
wird geprüft, ob es größer als 5 ist. Ist gleich oder kleiner als 5, so setzt der
Multiplikatorzeichen-Vorzyklus eine Additionsoperation in Gang und der echte Wert
des Multiplikators wird in den Multiplikatorzähler,nämlich das Multiplikatorregister
MIER
94 eingegeben. Ist hingegen das Multiplikatorzeichen größer als 5, so wird das Rechenwerk
auf eine Subtraktion eingestellt und das Zehnerkomplement des Multiplikatorzeichens
wird in das Multiplikatorregister 94 eingespeichert.
-
Ist das gegenwärtige Multiplikatorzeichen gleich oder kleiner 5 und
fand im vorangehenden Zyklus eine Subtraktionsoperation statt, so wird das laufende
Multiplikatorzeichen um 1 erhöht.
-
Wenn beispielsweise der Multiplikator den Wert 39 hat, so könnte die
9 minus einmal eine Addition des Multiplikanden zum Teilprodukt bewirken und da
es sich um eine Subtraktionsoperation handelt, würde die 3 auf 4 erhöht, um 40 minus
1 darzustellen.
-
Die Vorzyklusroutine 228 für das Multiplikatorregisterzeichen geht
jeweils in die Produktberechnungsroutine 230 über.
-
Diese addiert oder subtrahiert den Multiplikanden einmal zum Teilprodukt.Dies
geschieht jeweils mit einer Ziffer und die Teilproduktberechnungsroutine wird so
oft wiederholt, bis alle Ziffern des Multiplikanden verarbeitet sind. Diese Wiederholung
wird durch die Linie 231 angedeutet. Zusätzlich zur Addition einer Multiplikandenziffer
(MAND) zum Teilprodukt ist die Berechnungsroutine die Adresse für das nächste oder
nachfolgend signifikante Teilproduktzeichen und das Multiplikandenzeichen; und das
Ergebnis der laufenden Addition wird in ein Register übertragen, um als Übertrag
für die nächste Operation zu dienen.
-
Die Multiplikationsroutine bleibt iterativ in der Produktberechnungsroutine,
bis die wichtigste Ziffer'des Multiplikanden zum Teilprodukt addiert ist. Dann geht
die Produktberechnungsroutine in die Firmware-Routine 232 über.
-
Diese Routine 232 fängt an, nachdem das höchstwertige Multiplikandenzeichen
verarbeitet ist und ein durch die höchstwertige Multiplikandenziffer erzeugter Übertrag
wird zum Teilprodukt addiert. Außerdem wird das Multiplikatorzeichen im MIER-Register
um 1 zurückgeschaltet und überprüft, ob das Multiplikandenzeichen größer als 9 ist.
Ist dies der Fall, so wird
die Routine abgefangen und der Befehl
ist beendet. Die Routine 232 schließt mit der Überprüfung des zurückgeschalteten
Wertes des Multiplikators, um festzustellen, ob er auf Null zurückgeschaltet ist.
Ist dies nicht der Fall, so sind zusätzliche Additionen des Multiplikanden zum Multiplikator
erforderlich und die Produktberechnungsroutine 230 läuft erneut an. Ist das Multiplikatorzeichen
auf Null zurürkgeschaltet, so ist diese Teilprodukt fertig und die Routine 232 geht
in die Firmware-Routine 234 über, wo Operationen für ein fertiges Teilprodukt durchgeführt
werden.
-
Der Teilprodukt-Fertigstellungszyklus 234 prüft, ob irgendein Übergang
von einem Subtrahier- zu einem Addierzyklus stattgefunden hat. Wenn ein vorangehender
Zyklus e# Subtrahierzyklus war und der laufende Zyklus addiert hat, so ist der wichtigste
Teil des Teilprodukts von Neunen in Nullen umgeändert worden, weil es nun in positiver
Form dasteht. Ist ein anderer Übergang durchgeführt worden, d.h. war der vorangehende
Zyklus ein Addierzyklus und der laufende Zyklus ein Subtrahierzyklus, so ist das
Teilprodukt nunmehr negativ und der nicht berechnete Teil des Teilprodukts muß mit
Neunen aufgefüllt werden. Die Teilprodukt-Vervollständigungsroutin# 234 prüft als
letztes die Länge des Multiplikators. Ist dieser auf Null zurückgeschaltet, zeigt
sie an, daß keine weiteren Multiplikatorzeichen verarbeitet werden müssen. Ist der
Multiplikatorlängenzähler nicht auf Null zurückgestellt, d.h. ist die Multiplikator0#inge
größer als Null, so bedeutet dies daß weitere Multiplikatorzeichen verarbeitet werden
müssen. In diesem Fall geht die Firmware-Routine 234 in die Firmware-Routine 228
über, mit der das Produkt für ein weiteres Multiplikatorzeichen gebildet wird. Wenn
das laufende Multiplikatorzeichen das höchstwertige verarbeitete Zeichen ist, d.h.
der Multipllkatorlängenzähler auf Null zurückgeschaltet ist, geht die Firmware-Routine
234 in die Routine 236 über, welche prüft, ob das höchstwertige Multiplikatorzeichen
größer als 5 war.
-
Ist der höchstwertige Multiplikator größer als 5, so handelt es sich
beim vorangehenden Produktzyklus um eine Subtrahierroutine und das Ergebnis steht
in komplementärer Form dar. In diesem Fall wird zum Ergebnis das Komplement gebildet,
indem das Multiplikatorzeichen auf 1 gesetzt wird und die Multiplikatorzeichenvorzyklusroutine
erneut in Gang gesetzt wird. Auf diese Weise wird 10n mal der Multplikand zum Teilprodukt
addiert, um dieses von der Komplementärform in die echte Form umzuwandeln. Ist das
höchstwertige Multiplikatorzeichen gleich oder kleiner als 5, so läuft im Punkt
B der Produktberechnungs-Nachzyklus 238 an, der auch dann in Gang gesetzt wurde,
wenn der Multiplikator oder der Multiplikand gleich Null ist. Der Zyklus wurde dann
von der Abtastroutine gemäß Block 224 angelaufen. Zweck dieses Nachzyklus ist das
Setzen der Anzeiger,um den Procrammierer vom Ergebnis der Multiplikationsoperation
zu informieren und das Produkt auf seine Umspeicherung vom zeitweisen Speicherplatz
im Register RF2 in den Hauptspeicher vorzubereiten.
-
Die Operation im Produktberechnungs-Naczyklus bestimmt das Vorzeichen
des Operanden entsprechend den Regeln der Algebra und entsprechend dem Vorzeichen
der Operanden 1 und 2. Das Vorzeichen des Produkts ist positiv, wenn beide Operanden
positives Vorzeichen haben und es ist negativ, wenn die Operanden unterschiedliches
Vorzeichen haben. Sobald der Wert des Vorzeichens bestimmt ist, d.h. entweder Plus
oder Minus,so wird das Vorzeichen dem Produkt hinzugeführt, je nachdem ob das Produkt
gepackt oder ungepackt vorliegt. Nach Bestimmung des Vorzeichens werden die Zustandscode-Bits
gesetzt. Diese Bits werden größer als oder kleiner als bezeichnet und entsprechend
codiert, je nachdem ob das Produkt Null, negativ oder positiv ist. Ist das Produkt
negativ und beschreibt der Datendeskriptor des Operanden 2 den Operanden 2 als vorzeichenlosen
Operanden, so wird der Vorzeichenfehlerindikator gesetzt. Der Produktberechnungsnachzyklus
238 prüft das Produkt auf Überlauf, d.h. es prüft die Länge des Produkts gegenüber
der vom Programmiererer vorgesehenen
Länge zur Porduktspeicherung.
Ist das Produkt zu lang und paßt nicht in den Operanden 2, so besteht ein Überlauf
und der entsprechende Anzeiger wird gesetzt. Sobald dieser festgestellt wird, wird
eine Überlaufabfangmaskierung überprüft. Sobald diese das Abfangen ermöglicht, geschieht
dies und als Ergebnis wird das Produkt nicht im Speicher gespeichert und der Befehl
beendet. Hört der Befehl nicht über einen Überlaufabfangvorgang auf, so endet er
entweder durch Einlauf in den Speicherzyklus 240 bzw. 244 für gepackte oder ungepackte
Ergebnisse.
-
Damit ist das Flußdiagramm im Block 244 beendet.
-
Fig. 7 zeigt den Logikaufbau der Geräteinheit zur Durchtührung des
Verfahrens gemäß der Erfindung. Der Multiplikatorzeichenvorzyklus 228 (Fig. 6) beginnt
mit dem Auffinden des Multiplikatorzeichens in der Operandenregisterdatei RF2 72.
Der Multiplikator wird aus dem Speicher ausgelesen und zwar jeweils ein Wort, beginnend
vom geringstwertigen Ende zum höchstwertigen Ende. Beim Lesen jedes Wortes wird
dieses in die Registerdatei RF2 und zwar an den Speicherplatz F gebracht,und das
laufende Multiplikatorzeichen wird durch Setzen des Registers RF2A 76 angewählt,
welches auf eine der vier Ziffdern im Speicherplatz F des Registers RF2 hinweist.
Der Multiplikatorzeichenvorzyklus 228 beginnt mit dem Zugriff bzw. dem Auffinden
des entsprechenden Multiplikatorzeichens in der Registerdatei RF2 72, indem er das
Register RF2A 76 zu Hilfe nimmt. Die ausgewählte Ziffer wird als Eingangssignal
an den Multiplikator-PROM-Baustein 318 gegeben.
-
Dieser Baustein stellt fest, ob die Ziffer größer als Neun und ob
sie größer als Fünf ist. Der Baustein 318 liefert als Ausgangssignal entweder den
echten Wert der Multiplikatorziffer oder ihr Komplement. Diese Signale stehen als
Eingangssignale für das Multiplikatorregister 94 zur Verfügung.
-
Nachdem die Ziffer in dieses Register eingegeben ist, wird die an
das Multiplikatorregister angeschlossene Nullstellen-Decodierung 324 ihr Signal
an die Folgeadressen-Erzeugungslogik 42 geben, um die Auswahl des nächsten Firmware-Wortes
zu
ermöglichen. Der gesamte Operand wird in die Registerdatei 1
eingegeben und der Multiplikator vom Speicher in die Registerdatei Wort fürfür WortWigeefordert
übertragen. Außerdem enthält die Registerdatei 2 neben den laufenden vier Zeichen
des Multiplikators auch die Produkte. Der Produktbereich innerhalb der Registerdatei
RF2 wird anfänglich auf Null gestellt.
-
Die Multiplikation geht Zeichen für Zeichen weiter. Die Register RF2A
und RF1A sind Zähler, welche zum Adressieren der Registerdateien RF2 bzw. RF1 dienen,
welche das zu verarbeitende Zeichen auswählen. Wegen der iterativen Art des Multiplikationsprozesses
werden Dienstspeicherplätze benötigt, um den Startplatz für den Multiplikanden und
den Startplatz des Teilprodukts festzulegen.
-
Der Multiplikand wird immer vom geringstwertigen Ende zum höchstwertigen
Ende abgearbeitet und zwar schrittweise jeweils einmal für jeden Wert des Multiplikators.
Folglich enthält der Dienstspeicherplatz 1 300 in der Registerdatei RFC16 die Adresse
des geringstwertigen Endes des Multiplikanden. Dieses wird in das Adressregister
RF1A der Registerdatei 1 übertragen, um das gerinostwertige Ende des Mtlltiplikanden
am Beginn des Produktberechnungszyklus aufzufinden. Das Teilprodukt wird ebenfalls
vom geringstwertigen Ende her zum höchstwertigen Ende hin abgearbeitet, jedoch wird
für jedes Multiplikatorzeichen der Speicherplatz des geringstwertigen Endes eines
Teilprodukts geändert. Der Dienstspeicherplatz 2 332 in der Registersteuerdatei
16 enthält die geringstwertige Adresse des Teilprodukts, welche bei jeder Teil produktberechnung
um einen Schritt verringert wird. Der Inhalt des Dientspeicherplatz 2 wird bei jedem
Anfang eines Teilproduktzyklus in das Adressregister RF2A übertragen, um das geringstwertige
Zeichen des Teilprodukts aufzufinden und auszuwählen.
-
Außerdem erfolgt Zeichen für Zeichen Zugriff zum Multiplikator in
der Operandenregisterdatei RF2 72. Folglich wird ein Dienstspeicherplatz in der
Registersteuerdatei 16 benötigt, um die Adresse für das nächste zu verarbeitende
Multiplikatorzeichen festzuhalten.
-
Dieser Speicherplatz ULO 328 wird am Ende jedes Multiplikatorzeichens
einmal fortgeschaltet und nach der Verarbeitung von vier
Multiplikatorzeichen
zurückgesetzt. Dann muß ein neues Wort aus dem Speicher ausgelesen werden und der
Speicherplatz ULO 328 erneut in Gang gesetzt werden.
-
Wie erwähnt, besteht die Aufgabe des Multiplikator-PROM-Bausteins
318 darin, hinsichtlich des laufenden Wertes des Multiplikatorzeichens festzustellen,
ob der Mrqltiplikator größer als 9 ist und ob er größer als 5 ist. Hiervon hängt
es ab, ob entweder die echten die komplementären Eingangssignale dem Multiplikatorregister
94 zugeführt werden. Die Ausgangssignale des Bausteins 318 gelangen zur Erzeugerlogik
42 für die Folgeadresse, wo auf Grund des Wertes des Multiplikatorzeichens eine
Entscheidung gefällt wird. Der Datenausgang des Bausteins PROM 318 ist entweder
echt, wenn der Wert des Multiplikatorzeichens gleich oder kleiner als 5 ist oder
er wird als Zehnerkomplement dargestellt, wenn das gerade bearbeitete Multiplikatorzeichen
größer als 5 ist. Das Ausgangssignal dieses Bausteins 318 wird zu Beginn jedes Teilprodukt-Berechnungszyklus
in das Multiplikatorregister 94 geladen.
-
Der Inhalt des Multiplikatorregisters wird mit Hilfe des Decodierers
324 auf Null decodiert und das Ergebnis dieser Decodieung steht der Folgeadressen-Erzeugungslogik
als Verzweigungszustand für die Steueroperation der Firmware zur Verfügung, wenn
das Multiplikatorzeichen auf Null zurückaeschaltet ist und damit anzeigt, daß das
Teilprodukt vollständig ist.
-
Die Berechnung des Produkts erfolgt in einem 4-Bit-Dezimaladdierer
316, dessen Eingangssignalevon den Registerdateien RF1 und RF2 kommen. Die Datei
RF1 enthält das Multiplikandenzeichen und das Register RF2 das Teilproduktzeichen.
Diese beiden Zeichen werden im Addierers316 addiert und die sich hieraus ergebene
Summe in den Teilprodukt-Speicherbereich des Registers RF2 eingespeichert.
-
Während jedes Zyklus der Produktberechnungsroutine wird der Überlauf
der anstehenden Addition im Register 306 sichergestellt. um im nächsten Additionszyklus
als Übertrag zu dienen. Beim Auslesen jedes Multiplikandenzeichens aus der Registerdatei
RF1 70 wird es auf Gültigkeit überprüft. Es wird hierzu vom Decoder 308 decodiert
und wenn sein Wert größer als 9 ist wird eine Aufzeichnung im Kumulator 309 bewirkt,
der alle Zeichen größer als 9 festhält, um sie am Ende des Berechnungszyklus bereitzuhalten.
-
Der Produktberechnungszyklus schaltet den Inhalt der Adressregister
RF1A und RF2A schrittweise zurück, um die nächsten zu verarbeitenden Zeichen anzuwählen
und verringert außerdem die Länge des Multiplikanden im Zähler 3 (50). Die Produktberechnungsroutine
prüft den Zähler 3, um festzustellen, wenn die höchstwertige Multiplikandenziffer
verarbeitet ist. Die Routine 232, genannt die Multiplikanden-Vervollständigungsroutine,
prüft den Zeichenkumulator 309, um festzustellen, ob irgendeines der Multiplikandenzeichen
unzulässig ist. Wird ein solches unzuläsiges Zeichen festgestellt, so beginnt eine
Abfangroutine und der Befehl wird beendet. Die Multiplikandenvervollständigungsroutine
schaltet außerdem das Multiplikatorregister 94 zurück und prüft, ob sein Inhalt
auf Null zurückgeschaltet ist. Ist dies der Fall, so bedeutet dies, daß ein Teilprodukt
gebildet ist. Ist der Inhalt des Multiplikatorregister 94 hingegen noch nicht gleich
Null, so heißt dies, daß das laufende Teilprodukt noch nicht vollständig ist und
die Produktberechnungsroutine 230 läuft erneut an. Sobald die Vervollständigungsroutine
feststellt, daß das Multiplikatorregister 94 auf Null zurückgeschaltet und damit
das Teilprodukt vollständig ist, läuft die Teilprodukt-Vervollständigungsroutine
234 an. Sie prüft die beiden Bits im Schaltregister 36, denen die Zustände laufend
und "vorherig" zugeordnet sind. Diese Bits zeigen an, ob der laufende Zyklus ein
Addier- oder ein Subtrahierzyklus und geben gleichen Information hinsichtlich des
vorangehenden Zyklus. Die Routine 234 führt auf Grund dieser Bits eine Vierwegverzweigung
durch. In zwei der vier Fälle muß das Teilprodukt modifiziert werden. Hat ein Ubergang
von einem Addierzyklus zu einem Subtrahierzyklus stattgefunden oder ist ein Übergang
von einem Subtrahierzyklus zu einem Addierzyklus erfolgt, so muß der noch nicht
verarbeitete Teil des Produkts mit Nullen oder Neunen aufgefüllt werden, je nachdem
in welcher Richtung der übergang erfolgt ist. Die Routine 234 aktiviert das Testen
des Multiplikatorlängenzählers im Zähler 2 (48) um festzustellen, ob weitere Multiplikatorzeichen
verarbeitet werden müssen. Der Multiplikatorlängenzähler wird bei jeder Verarbeitung
eines Multiplikatorzeichens um einen Schritt zurückgestellt.
-
Erreicht der Zähler 2 (48) den Wert Null, so geht die Teilproduktvervollständigungsroutine
234 in die Ergebnisvervollständigungsroutine 236 über. Anderfalls, d.h. wenn der
Zähler 2 nicht auf Null zurückgestellt ist, steuert die Routine 234 erneut den Multiplikatorvorzyklus
an, um die Berechnung des nächsten Teilprodukts in Gang zu setzen. Die Ergebnisvervollständigungsroutine
236 prüft die Bits im Schaltregister 36 entsprechend dem laufenden Zyklus, ob eine
Additions- oder Subtraktionsoperation durchgeführt wurde. Wurde addiert, so geht
die Routine 236 in den Produktberechnungsnachzyklus über. Wurde hingegen eine Subtraktion
durchgeführt, so addiert die Ergebnisvervollständigungsroutine zum Multiplikator
den Wert 1 und läuft erneut den Multiplikatorzeichen-Vorzyklus an, um das Komplement
zum negatin+1 ven Ergebnis zu bilden, indem zu ihm 10 1 mal der Multiplikant hinzuaddiert
wird.