PatentDe  


Dokumentenidentifikation DE3229452C3 02.11.1989
Titel Anordnung zur Durchführung von arithmetischen und logischen Operationen
Anmelder Hitachi, Ltd., Tokio/Tokyo, JP
Erfinder Nagafuji, Motonobu, Hadano, JP
Vertreter Beetz sen., R., Dipl.-Ing.; Beetz jun., R., Dipl.-Ing. Dr.-Ing.; Timpe, W., Dr.-Ing.; Siegfried, J., Dipl.-Ing.; Schmitt-Fumian, W., Prof. Dr.rer.nat., Pat.-Anwälte, 8000 München
DE-Anmeldedatum 06.08.1982
DE-Aktenzeichen 3229452
Offenlegungstag 01.06.1983
Veröffentlichungstag der Patenterteilung 08.01.1987
Date of publication of amended patent 02.11.1989
Veröffentlichungstag im Patentblatt 02.11.1989
IPC-Hauptklasse G06F 7/00
Zusammenfassung Im Rahmen der vorliegenden Erfindung kann die vorgesehene Arithmetiklogikeinheit einen Befehl mit veränderlicher Operandenlänge - beispielsweise einen dezimalen arithmetischen Verarbeitungsbefehl - unter gleichzeitiger Verarbeitung von mehreren Bytes durch Einsatz einer Arithmetiklogikeinheit mit einer Mehr-Byte-Verarbeitungstiefe durchführen. Die aus einem ersten und einem zweiten Operanden bestehenden Mehr-Byte-Daten werden dabei über entsprechende Unterdrückungskreise (14, 15) einem Arithmetiklogikkreis (16) zugeführt. Die Unterdrückungskreise (15, 16) unterdrücken dabei unnötige Bytes mit Ausnahme der Operanden-Bytes, wobei fernerhin alle Bytes von einem Operanden unterdrückt werden, wenn der betreffende Operand zur Erschöpfung gelangt ist.

Beschreibung[de]

Die vorliegende Erfindung betrifft eine Anordnung zur Durchführung von arithmetischen und logischen Operationen nach dem Oberbegriff des Patentanspruchs.

Bei Datenverarbeitungssystemen werden Befehle mit veränderlicher Operandenlänge, beispielsweise in Form von Dezimaloperationsbefehlen, entweder Byte bei Byte mit Hilfe einer Arithmetiklogikeinheit verarbeitet, welche eine Bearbeitungstiefe von einem Byte besitzt, oder es werden eine Mehrzahl von Bytes gleichzeitig innerhalb einer Arithmetiklogikeinheit verarbeitet, welche eine Bearbeitungstiefe von vier oder acht Bytes besitzt. Die im ersteren Fall auftretenden technischen Probleme sind dabei geringer, jedoch ergibt sich dabei eine relativ niedrige Verarbeitungsgeschwindigkeit. Im letzteren Fall kann zwar eine hohe Verarbeitungsgeschwindigkeit erreicht werden, jedoch muß eine besondere Verarbeitung vorgenommen werden, falls die Operandenlängen unterschiedlich sind und einer der Operanden bereits vorzeitig keine weiteren Bytes mehr aufweist. Die in diesem Fall auftretenden Steuervorgänge werden dabei relativ komplex, während auf der anderen Seite die Verarbeitungszeit relativ lang wird.

In diesem Zusammenhang ist bereits versucht worden, daß in dem vorerwähnten Fall eine Spezialbehandlung durchgeführt wird, indem in die bereits vorzeitig fehlenden Bit- Positionen entsprechend der Byte-Tiefe der Arithmetiklogikeinheit Bit-Werte von "0" mit Hilfe einer Verschiebungseinheit eingeschoben werden, so daß der eine Operand mit dem anderen entweder auf einer Basis Byte bei Byte oder mit einer Mehrzahl von Bytes gleichzeitig verarbeitet wird.

Eine Arithmetiklogikeinheit zur parallelen Verarbeitung von Operanden in Blocklänge in jeweils einem Zyklus mit Dateneingabeeinrichtungen zur aufeinanderfolgenden Aufnahme von Operanden in jeweiligen Teillängen von jeweils der Länge eines Blockes und mit einer Stellenverschiebeeinrichtung zur stellenrichtigen Ausrichtung der Operanden und mit Unterdrückungseinrichtungen zur Unterdrückung der Byte-Stellen innerhalb einer Blocklänge der Operanden in denen keine Byte-Werte eingetragen sind, ist bekannt (DE-AS 28 06 452). Im Gegensatz zur vorliegenden Erfindung werden bei der bekannten Arithmetiklogikeinheit Masken zur Eliminierung der nicht zu den Operanden gehörenden Bytes verwendet und diese ist grundsätzlich auf die Verarbeitung von Operanden gleicher Länge ausgerichtet.

Durch die US-PS 40 21 655 ist eine ALU bekanntgeworden, mit der Operanden unterschiedlicher Länge verarbeitet werden können. Die Länge der Operanden wird hierbei in jeweils zugeordneten Zählern festgehalten. Durch Rückwärtszählen entsprechend der Anzahl der Operationszyklen der ALU zeigen diese Zähler jeweils die vorhandenen Restlängen der Operanden an. Im Gegensatz zur vorliegenden Erfindung arbeitet die bekannte Anordnung jedoch nicht mit einer ALU, der Unterdrückungseinrichtungen vorgeschaltet sind, die bei völliger Abarbeitung eines der Operanden durch ein Signal des zugeordneten Längenzählers die Unterdrückung aller Stellen des betreffenden Operanden in der zur Verarbeitung anstehenden Breite bewirken, wenn noch signifikante Stellen des anderen Operanden vorhanden sind.

Der vorliegenden Erfindung liegt, ausgehend von einer Arithmetiklogikeinheit entsprechend der DE-AS 28 06 452 die Aufgabe zugrunde, eine Anordnung zur Durchführung von arithmetischen und logischen Operationen mit Operanden von beliebiger Byte-Stellenzahl zu schaffen, bei der auf einfache Weise eine schnelle Durchführung der Operationen dann bewirkt wird, wenn bei unterschiedlicher Länge der Operanden, in einem der Operanden keine weiteren Bytes mehr für den nächstfolgenden Zyklus zur Verfügung stehen.

Diese Aufgabe wird erfindungsgemäß durch die im kennzeichnenden Teil des Patentanspruchs angegebenen Merkmale gelöst.

Die Erfindung soll nunmehr anhand eines Ausführungsbeispieles näher erläutert und beschrieben werden, wobei auf die Zeichnung Bezug genommen ist. Es zeigt

Fig. 1 eine schematische Darstellung eines Befehlsformates eines eine veränderliche Operandenlänge aufweisenden Befehles;

Fig. 2 ein Blockdiagramm einer Ausführungsform der Erfindung;

Fig. 3 ein Blockdiagramm eines die Daten auf den neuesten Stand bringenden Schaltkreises für ein Register der effektiven Länge des Operanden;

Fig. 4 ein Diagramm zur Erläuterung der Funktionsweise der Schaltanordnung von Fig. 3;

Fig. 5 ein Blockdiagramm des in Fig. 2 gezeigten Unterdrückungskreises;

Fig. 6 bis 11 Blockdiagramme der in Fig. 5 gezeigten Gatterkreise und der in diesem Zusammenhang verwendeten Steuerkreise und

Fig. 12 bis 14 grafische Darstellungen zur Erläuterung der vorliegenden Erfindung.

Fig. 1 zeigt ein Befehlsformat eines Befehles mit veränderlicher Operandenlänge. Im Rahmen des Feldes OP wird dabei die Art des Berechnungsvorganges, d. h. Addition, Subtraktion, Multiplikation oder Division festgelegt. Mit Hilfe der Felder L1 und L2 werden hingegen die effektiven Längen der beiden Operanden abzüglich Eins festgelegt. Die Felder ADR1 und ADR2 enthalten schließlich die Startadressen der beiden Operanden innerhalb des Hauptspeichers. Die Felder L1 und L2 enthalten dabei jeweils vier Bit, so daß die effektive maximale Operandenlänge 16 Bytes beträgt. Es sei in diesem Zusammenhang angenommen, daß der erste Operand mit einer Byte-Länge von L1+1 (ausgehend von der durch das Feld ADR1 festgelegten Adresse des Hauptspeichers) und der zweite Operand mit einer Byte-Länge von L2+1 (ausgehend von der durch das Feld ADR2 festgelegten Adresse des Hauptspeichers) addiert oder subtrahiert werden, wobei die rechten Enden, d. h. die wenigst signifikantesten Digitalwerte aufeinander ausgerichtet werden, und daß das Resultat in dem ersten Operandenfeld des Hauptspeichers eingespeichert wird. Es sei fernerhin angenommen, daß der Datentransfer zwischen der Arithmetiklogikeinheit und dem Hauptspeicher auf einer Acht-Byte-Basis durchgeführt wird.

Fig. 2 zeigt ein Blockdiagramm einer Ausführungsform der Erfindung. Dabei sind Acht-Byte-Register, nämlich Dateneingabeeinrichtungen 11 und 12 vorgesehen, in welchen die der Arithmetiklogikeinheit 16 zuzuführenden Operanden gespeichert werden. Fernerhin ist eine Stellenverschiebungseinrichtung 13 vorgesehen, welche die Position des rechten End-Bytes des zweiten Operanden gegenüber der Position des rechten End-Bytes des ersten Operanden ausrichtet. Fernerhin sind in diesem Zusammenhang Unterdrückungseinrichtungen 14 und 15 vorgesehen, mit welchen die zu den Operationen nicht erforderlichen (später "unnötige Bytes" genannt) Bytes unterdrückt werden, mit Ausnahme der Operanden-Bytes von Daten, die der Arithmetiklogikeinheit 16 zugeführt werden. In den unterdrückten Positionen weisen dabei die einzelnen Bits die Werte "0" auf. Fernerhin ist eine Arithmetiklogikeinheit 16 mit einer Verarbeitungstiefe von acht Bytes vorgesehen. Entsprechend dem Blockschaltbild ist ausgangsseitig der Arithmetiklogikeinheit 16 ein Resultat-Register 17 vorgesehen. Zwei Zähler 18 und 21 dienen zur Einspeicherung der effektiven Längen L1 und L2 der beiden Operanden, so wie sie von den Befehlen abgeleitet werden. Der Inhalt dieser beiden Zähler 18 und 21 wird dabei für jede Operation auf den jeweils neuesten Stand gebracht, so wie dies in dem folgenden noch beschrieben sein wird. Fernerhin sind Positionszähler 19 und 22 vorgesehen, in welchen die drei niedrigsten Bits BC und AC der Felder ADR1 bzw. ADR2 der Befehle eingespeichert werden. Mit Hilfe der Positionszähler 19 und 22 werden dabei die beiden Positionen innerhalb der Acht-Byte-Blöcke der am rechten Ende befindlichen Bytes der beiden Operanden angegeben. Schließlich sind noch Register L1C und L2C mit dem Bezugszeichen 20 und 23 vorgesehen, welche anzeigen, daß die Inhalte der Zähler 18 und 21 negative sind, was bedeutet, daß die entsprechenden Operanden abgearbeitet sind.

Die Funktionsweise der beschriebenen Anordnung ist wie folgt:

Die Acht-Byte-Daten der Dateneingabeeinrichtung 11 werden direkt der Unterdrückungseinrichtung 14 zugeführt, welcher ebenfalls die Daten BC, L1 und L1C zugeführt werden. Diese Unterdrückungseinrichtung 14 fügt Bit- Werte "0" in jene Positionen ein, die für den Berechnungsvorgang unnötig sind. Da bei dem gewählten Beispiel der erste Operand die Bytes 1 bis 5 besetzt, unterdrückt die Unterdrückungseinrichtung 14 die auf der rechten Seite des Operanden befindlichen Bytes 6 und 7, welche mit Hilfe von BC festgestellt werden, während gleichzeitig das Byte "0" auf der linken Seite des Operanden unterdrückt wird, welches durch BC und L1 festgestellt wird. Die Unterdrückungseinrichtung 14 fügt dann Bit-Werte "0" in jene Byte-Positionen ein, worauf die Daten der Arithmetiklogikeinheit 16 zugeführt werden. Sobald L1C gesetzt ist, unterdrückt die Unterdrückungseinrichtung 14 alle acht Bytes, so wie dies im folgenden noch beschrieben sein wird. Die acht Bytes der Dateneingabeeinrichtung 12 werden hingegen der Stellenverschiebungseinrichtung 13 zugeführt, welche ebenfalls die Eingangssignale BC und AC erhält. Die Stellenverschiebungseinrichtung 13 verschiebt die eine Größe von acht Bytes aufweisenden Eingangsdaten entsprechend der Differenz zwischen den Werten BC und AC nach rechts oder nach links, um auf diese Weise das rechte Ende des zweiten Operanden in bezug auf das rechte Ende des ersten Operanden auszurichten. Bei dem gewählten Beispiel werden die Bytes 2 bis 4 von dem zweiten Operanden besetzt. Die Stellenverschiebungseinrichtung 13 verschiebt demzufolge den zweiten Operanden um ein Byte nach rechts, um auf diese Weise das rechte Ende des zweiten Operanden auf das rechte Ende des ersten Operanden auszurichten. Das Ausgangssignal der Stellenverschiebungseinrichtung 13 wird dann der Unterdrückungseinrichtung 15 zugeführt, welcher ebenfalls die Eingangssignale BC, L2 und L2C zugeführt werden. Die Betriebsweise der Unterdrückungseinrichtung 15 ist dabei dieselbe wie die der Unterdrückungseinrichtung 14.

Fig. 3 zeigt eine Schaltanordnung, mit welcher die effektive Länge L2 des zweiten Operanden auf den neuesten Stand gebracht wird. Der Inhalt L2 des Zählers 21 wird dabei über ein Verzögerungsregister 33 mit der Bezeichnung L2D einem Addierkreis 32 zugeführt. Dabei ist zusätzlich ein Wählkreis 30 vorgesehen, welchem über den Positionszähler 19 der Wert BC+1 und gleichzeitig von einem Generator der Wert "8" zugeführt wird. Im Rahmen eines ersten Bearbeitungsvorganges wird der Wert BC+1 gewählt, während innerhalb eines zweiten Ablaufes der Wert "8" ausgewählt wird. Die Zufuhr zu dem Addierkreis 32 erfolgt dabei über einen 1er-Komplement-Generator 31, und ein Zwischenübertrag mit dem konstanten Wert "1" wird dem Addierkreis 32 über eine Zwischenübertragungsleitung bei jeder Addition zugeführt. In einem ersten Durchlauf ist das Resultat: LD 2 plus dem Einserkomplement von (BC+1) plus Zwischenübertrag; d. h. gleich der Subtraktion von (BC+1) von L2D, also L2D-(BC+1). In gleicher Weise ist im zweiten Durchlauf und in den nachfolgenden das Resultat gleich L2D-8. Das Resultat der Subtraktion wird dann in den Zähler L2 21 eingegeben. Sobald der Inhalt des Verzögerungsregisters 33 größer als "8" bzw. BC+1 ist, wird auf einer Übertragungsleitung ein Übertragssignal erzeugt, während im entgegengesetzten Fall kein Übertragssignal ausgelöst wird. Das Übertragssignal wird über einen Inverter 34 einem L2C-Register 23 zugeführt, in welches demzufolge eingeschrieben wird, wenn kein Übertragssignal erzeugt wird. Dies bedeutet, daß in das Register 23 eingeschrieben wird, wenn der Inhalt des L2-Zählers 21 negativ ist, d. h., der zweite Operand erschöpft ist.

Fig. 4 zeigt ein Berechnungsbeispiel, bei welchem der erste Operand aus neun Bytes a-i besteht, die somit über die Acht-Byte-Grenze hinausgehen. Der Wert BC beträgt somit 4 und L1=8. Der zweite Operand besteht hingegen aus drei Bytes l-n, demzufolge die Größe AC den Wert 4 und die Größe L2 den Wert 2 besitzt. Aus Einfachheitsgründen ist demzufolge BC gleich AC. Während des ersten Bearbeitungsdurchlaufes werden die Bytes e, f, g, h und i des ersten Operanden und die Bytes l, m und n des zweiten Operanden verarbeitet. Da L2 und L2D den Wert 2 besitzen und dieselben innerhalb des ersten Bearbeitungsdurchlaufes von BC+1 bwz. 5 subtrahiert werden, erhält die Größe L2 den Wert -3. Demzufolge wird in das Register 23 über den Inverter 34 eingeschrieben, wodurch angezeigt wird, daß der zweite Operand innerhalb des zweiten und der folgenden Durchläufe abgearbeitet worden ist.

Die Schaltanordnung, mit welcher der erste Operand L1 jeweils auf dem neuesten Stand gehalten wird, ist in entsprechender Weise wie die Schaltanordnung gemäß Fig. 3 ausgebildet, mit welcher der zweite Operand L2 auf dem neuesten Stand gehalten wird.

Die Unterdrückungseinrichtungen 14 und 15 sollen nunmehr in dem folgenden erläutert werden. Dabei zeigt die folgende Tabelle 1 die Positionen der "unnötigen Bytes" auf der rechten Seite des Operanden. Wenn beispielsweise die Größe BC den Wert 5 besitzt, dann stellen die Byte- Positionen 6 und 7 "unnötige Byte-Positionen" dar, das heißt, diese Byte-Stellen sind für Operationen, wie z. B. Addition oder Subtraktion, nicht erforderlich, da sie außerhalb des Operanden liegen. (Ein Beispiel des ersten Operanden für das Register 11 ist dabei in Fig. 2 gezeigt.)

Tabelle 1


Die Tabelle 2 zeigt die Positionen der "unnötigen Bytes" am linken Ende der Operanden. Wenn beispielsweise die Größe BC den Wert 5 aufweist und L1 gleich 4 ist, dann handelt es sich bei der Byte- Position 0 um eine "unnötige Byte-Position". (Ein Beispiel des ersten Operanden des Registers 11 ist in Fig. 2 gezeigt.)

Tabelle 2


Wenn somit der erste und der zweite Operand an allen jenen Positionen Nullwerte aufweist, welche entsprechend Tabellen 1 und 2 "unnötigen Bytes" entsprechen bzw. entsprechend L1C oder L2C erschöpft sind, wird somit bei Zufuhr dieser Operanden an die Arithmetiklogikeinheit 16 ein korrektes arithmetisches Rechenresultat erzielt werden. Die in den Tabellen 1 und 2 angegeben Symbole "-" bedeuten dabei, daß das "unnötige Byte" abwesend ist.

Fig. 5 zeigt ein Blockdiagramm der in Fig. 2 dargestellten Unterdrückungseinrichtung 15. Die Unterdrückungseinrichtung 14 ist dabei in entsprechender Weise ausgebildet. Die Unterdrückungseinrichtung 15 besitzt dabei einen Steuerkreis 50, welchem die Eingangssignale BC, L2 und L2C zugeführt werden, wodurch in Übereinstimmung mit den Tabellen 1 und 2 und L2C Unterdrückungssignale 100-107 für "unnötige Bytes" erzeugt werden. Fernerhin ist ein Gatterkreis 51 vorgesehen, welcher eine Acht-Byte-Verarbeitungstiefe besitzt. Diesem Gatterkreis 51 werden die den zweiten Operanden zugehörigen Eingangssignale 200-263 der Verschiebungseinrichtung 3 zugeführt, worauf dieselbe an die dem zweiten Operanden zugeordnete Eingangsseite der Arithmetiklogikeinheit 16 Ausgangssignale 300-363 zuführt, welche in den "unnötigen Byte-Positionen" entsprechend den Unterdrückungssignalen 100-107 für die Bytes 0-7 Werte "0" aufweisen. Das Bezugszeichen 52 entspricht dabei der Byte-Position "0" des Gatterkreises 51, der entsprechend Fig. 6 aus acht UND-Gattern aufgebaut ist. Mit Hilfe dieser UND-Gatter werden die Acht-Bit-Eingangsdatensignale 200-207 für das Byte "0" mit Hilfe des Unterdrückungssignals 100 logisch verknüpft, demzufolge Ausgangssignale 300-307 erzeugt werden. Falls es sich bei dem Byte "0" um ein "unnötiges Byte" handelt, bei welchem Werte "0" eingefügt werden sollen, besitzt das Unterdrückungssignal 100 den logischen Wert "1", so daß die Ausgangsdatensignale 300-307 alle den Wert "0" aufweisen.

Fig. 7 bis 11 zeigen Ausführungsbeispiele des in Fig. 5 gezeigten Steuerkreises 50.

Fig. 7 zeigt dabei einen Endkodierer DEC1 für die Größen BC oder den Wert "7", um auf diese Weise die rechten Endpositionen des ersten Operanden anzuzeigen. Ferner ist ein Endkodierer DEC2 vorgesehen, um auf diese Weise die effektive Länge L2 des zweiten Operanden festzulegen. Innerhalb des ersten Durchlaufes der arithmetisch/ logischen Operation wird die Größe BC als Eingang für den Endkodierer DEC1 gewählt, während die Größe "7" für den zweiten und die folgenden Durchläufe gewählt wird. Die Beziehung zwischen den Eingängen und Ausgängen der Endkodierer DEC1 und DEC2 ist in den Fig. 8a bzw. 8b gezeigt.

Fig. 9 zeigt ein Beispiel eines Logikkreises zur Bestimmung der "unnötigen Bytes" am linken Ende des Operanden entsprechend Tabelle 2. Die Endkodierausgänge 161-167 und 180-186 gemäß Fig. 7 erzeugen dabei Unterdrückungssignale 110-116 für die Bytes 0-6.

Fig. 10 zeigt ein Beispiel eines Logikkreises zur Bestimmung der "unnötigen Bytes" am rechten Ende des Operanden gemäß Tabelle 1. Die Endkodierausgänge 160-166 gemäß Fig. 7 erzeugen dabei Unterdrückungssignale 121-127 für die Bytes 1-7.

Fig. 11 zeigt ODER-Kreise, welche die "unnötigen Byte-Unterdrückungssignale" 110-116 und 121-127 gemäß Fig. 9 und 10 und die Unterdrückungssignale zur Unterdrückung aller Bytes in Übereinstimmung mit dem Ausgang des Registers L2C einer ODER-Funktion unterwerfen. Bei den Ausgangssignalen 100-107 der ODER-Kreise handelt es sich dabei entweder um die Ausgangssignale des in Fig. 5 dargestellten Steuerkreises 50 oder um die Unterdrückungssignale für die Bytes 0-7 der Eingangsdaten an die Artithmetiklogikeinheit 16. Der in Fig. 11 dargestellte UND-Kreis verknüpft das Signal L2C und das Festlegungssignal für den dezimalen Acht-Byte-Ablauf mit einer UND-Funktion.

Wenn somit die Länge von einem der Operanden einen negativen Wert erhält, können alle Bytes des betreffenden Operanden gleichzeitig unterdrückt werden. Es ist demzufolge möglich, den Rest des anderen Operanden gleichzeitig mit Hilfe der eine Acht-Byte-Tiefe aufweisenden Arithmetiklogikeinheit 16 zu verarbeiten. Wenn einer der Operanden nämlich erschöpft ist, werden die Bytes des anderen Operanden entsprechend der effektiven Länge des Restes der Arithmetiklogikeinheit 16 zugeführt, während die anderen Bytes unterdrückt werden, wobei der Rechenvorgang durchgeführt wird, indem der Übertrag der höchsten Stelle des vorangehenden Durchlaufes zum anderen Operanden addiert wird, weil der eine Operand den Wert "0" besitzt.

Anhand von Fig. 12 soll nunmehr ein besonderes Beispiel dargelegt werden. Die betreffende Figur zeigt dabei Operanden zur Ausführung eines dezimalen Addierungsbefehls. Der erste Operand beginnt mit dem Positionszähler BC =1, während der Zähler 18 für die effektive Länge L1 den Zählwert 11 aufweist. Der zweite Operand beginnt mit dem Positionszähler AC=1, wobei der Zähler L2 (21) für die effektive Länge den Zählwert 6 aufweist. Aus Einfachheitsgründen werden die Werte AC und BC in dem betreffenden Beispiel gleichgemacht. Falls sie jedoch nicht gleich sind, wird der zweite Operand gegenüber dem ersten Operanden ausgerichtet. Da der erste Operand gemäß Fig. 12 sich über drei Acht-Byte-Blöcke erstreckt, sind drei Durchläufe von Acht-Byte-Abläufen notwendig. Die Inhalte L&sub1; und L&sub2; der effektiven Längenzähler 18 und 21 für die beiden Operanden sind in Fig. 14a für den ersten, zweiten und dritten Durchlauf dargestellt. Diese Zählungen werden festgelegt, indem die innerhalb jeder Acht-Byte-Grenze verarbeiteten Bytes subtrahiert werden. Entsprechend Fig. 3 werden innerhalb des ersten Durchlaufes zwei Bytes verarbeitet. Demzufolge beträgt die Zählung von L&sub1; vor dem zweiten Durchlauf L&sub1;-(BC+1) =9, während der Inhalt von L&sub2; vor dem zweiten Durchlauf den Wert L&sub2;-(BC+1)=4 besitzt. Fig. 14b zeigt die jeweils auf den neuesten Stand gebrachten Inhalte für L&sub1; und L&sub2;. Innerhalb des zweiten Durchlaufes werden dann acht Bytes verarbeitet. Vor dem dritten Durchlauf besitzen die Inhalte von L&sub1; und L&sub2; demzufolge gemäß Fig. 14b die Werte L&sub1;-(BC+1)-8=1 und L&sub2;-(BC+1)-8=4.

Da der Inhalt von L&sub2; somit negativ ist, besitzt der Übertragsausgang für den Addierkreis 32 für L&sub2; gemäß Fig. 3 den Wert Null, während das Register L2C (23) nunmehr auf den Wert "1" gesetzt wird. Das Signal zur Unterdrückung aller Bytes für den zweiten Operanden wird demzufolge, wie bereits erklärt, angeschaltet, so daß der nunmehr Nullwerte besitzende zweite Operand der Arithmetiklogikeinheit 16 zugeführt wird. Fig. 13 zeigt die Abläufe für den dezimalen Addierbefehl innerhalb des ersten bis dritten Durchlaufes. Während des ersten Durchlaufes werden zwei Bytes einschließlich des auf der rechten Seite liegenden Bytes im Rahmen der Acht-Byte-Verarbeitungstiefe verarbeitet. Die Bytes des ersten und zweiten Operanden auf der rechten Seite von BC+1 werden dabei unterdrückt. Das sich ergebende Übertragssignal weist den Wert "1" auf, welches innerhalb des zweiten Durchlaufes als ein Zwischenübertrag der niedrigsten Stelle zuaddiert wird. Innerhalb des zweiten Durchlaufes besitzt die erste Operandenlänge den Wert "9", so daß alle acht Bytes des ersten Operanden der Arithmetiklogikeinheit 16 zugeführt werden. Die zweite Operandenlänge L&sub2; beträgt hingegen "4". Innerhalb des zweiten und der folgenden Durchläufe wird dabei der Wert BC automatisch als "7" angesehen, so daß fünf Bytes von der rechten Seite her der Arithmetiklogikeinheit 16 zugeführt werden, während eine Unterdrückung der drei oberen Bytes 0-2 vorgenommen wird. Das sich ergebende Übertragssignal besitzt den Wert "0", welches als Zwischenübertragssignal für den nächsten Durchlauf verwendet wird. Innerhalb des dritten Durchlaufes wird der zweite Operand in Übereinstimmung mit den charakteristischen Merkmalen der vorliegenden Erfindung verarbeitet. Da L&sub2;=4 beträgt, somit negativ ist, werden alle Bytes des zweiten Operanden unterdrückt und die verbleibenden effektiven Bytes des ersten Operanden der Arithmetiklogikeinheit 16 zugeführt, während die anderen oberen Bytes unterdrückt werden. Innerhalb des dritten Durchlaufes wird dann die Summe berechnet. Das Resultat der folgenden Durchläufe wird in einem Speicher unter Einsatz geeigneter Datentransferkreise eingespeichert. Fig. 14c zeigt die Eingangsunterdrückungspositionen der Arithmetiklogikeinheit 16 für die entsprechenden Durchläufe. Die Dezimaladdition kann innerhalb des ersten, zweiten und dritten Durchlaufes unter Einsatz derselben Mikrofunktion durchgeführt werden. Innerhalb jedes Durchlaufes wird die Verarbeitung mit maximaler Byte-Tiefe bzw. der Acht-Byte-Verarbeitungstiefe durchgeführt.

Während im Rahmen der obigen Erörterungen ein dezimaler Addierbefehl erklärt worden ist, so kann jeder beliebige logische Vorgang in entsprechender Weise durchgeführt werden, indem das der Arithmetiklogikeinheit 16 zugeführte Eingangssignal für den zuerst erschöpften Operanden unterdrückt wird. Bei einer dezimalen Subtraktion wird unter Verwendung des oben beschriebenen Beispiels die Nullunterdrückung für den zweiten Operanden durch den Wert "1" ersetzt, so daß in entsprechender Weise eine mit hoher Geschwindigkeit arbeitende Arithmetiklogikeinheit zur Verfügung steht.

Zusammenfassend ergibt sich, daß, wenn der effektive Operand mit kürzerer Operandenlänge abgearbeitet ist, dann kann im Rahmen der vorliegenden Erfindung der andere nicht verarbeitete Operand mit einer Multi-Byte-Verarbeitungstiefe durch dieselbe Mikrofunktion verarbeitet werden. Der arithmetische Logikvorgang und die logischen Verarbeitungsschritte können dabei mit hoher Geschwindigkeit durchgeführt werden. Während beim Stand der Technik bei einer Byte-bei-Byte-Verarbeitung, wenn einer der Operanden zuerst abgearbeitet ist, durchschnittlich vier weitere Verarbeitungszyklen notwendig sind, bei Annahme, daß die durchschnittliche verbleibende Länge gleich vier ist (Mittelwert von 1 und 8), ist im Rahmen der vorliegenden Erfindung ein einziger weiterer Zyklus erforderlich, so daß im Durchschnitt eine Ersparnis von drei Zyklen zustande kommt.


Anspruch[de]
  1. Anordnung zur Durchführung von arithmetischen und logischen Operationen mit Operanden von beliebiger Byte-Stellenzahl mit:
    1. - einem Speicher, dessen Speicherplätze in Byte-Blöcke (z. B. 8 Bytes pro Block) untergliedert sind zur Aufnahme der Operanden und Resultate,
    2. - einer Arithmetiklogikeinheit (16) zur parallelen Verarbeitung von Operanden in Blocklänge in jeweils einem Zyklus,
    3. - mit Dateneingabeeinrichtungen (11, 12) zur aufeinanderfolgenden Aufnahme der Operanden in jeweiligen Teillängen von jeweils der Länge eines Blockes,
    4. - einer Stellenverschiebeeinrichtung (13) zur stellenrichtigen Ausrichtung der Operanden und
    5. - Unterdrückungseinrichtungen (14, 15) zur Unterdrückung der Byte-Stellen innerhalb einer Blocklänge der Operanden, in denen keine Byte-Werte eingetragen sind,
  2. dadurch gekennzeichnet, daß die Anordnung ferner aufweist:
    1. - Zähler (18, 21) zur Anzeige der effektiven Länge der Operanden vor Beginn eines jeden Zyklus, wobei die effektive Länge die Anzahl der abzuarbeitenden Bytes, verringert um Eins, angibt,
    2. - Positionszähler (19, 22) zur Aufnahme der Teile der Operandenadressen (ADR1, ADR2), die den jeweiligen Ort innerhalb eines Blockes angeben, an dem das erste (stellenniedrigste) Byte eines Operanden im Speicher eingetragen ist,
    3. - Subtraktionseinrichtungen (30, 31, 32, 33, 34) zur Ermittlung der fortgeschriebenen Werte der effektiven Operandenlängen (L&sub1;, L&sub2;) durch Subtraktion einer Zahl, die der Blocklänge, und zwar nach dem Ablauf des zweiten Zyklus bzw. nur nach dem ersten Zyklus der jeweiligen Werte der in den Positionszählern (19, 22) angegebenen Zahlen plus Eins, entspricht von den in den Zählern (18, 21) zur Anzeige der effektiven Länge der Operanden, vorhergehend angezeigten Werten, und
    4. - Register (20, 23) zur Anzeige eines Signals, daß bei der Ermittlung der fortgeschriebenen Größe eines Operanden sich ein negativer Wert ergeben hat, und zur Weitergabe dieses Signals an die entsprechende Unterdrückungseinrichtung (14, 15) zur Unterdrückung aller Stellen in dem zur Verarbeitung anstehenden Block des betreffenden Operanden.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com