DE3507584C2 - - Google Patents
Info
- Publication number
- DE3507584C2 DE3507584C2 DE3507584A DE3507584A DE3507584C2 DE 3507584 C2 DE3507584 C2 DE 3507584C2 DE 3507584 A DE3507584 A DE 3507584A DE 3507584 A DE3507584 A DE 3507584A DE 3507584 C2 DE3507584 C2 DE 3507584C2
- Authority
- DE
- Germany
- Prior art keywords
- address
- register
- data
- value
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
Die Erfindung betrifft eine digitale Verarbeitungseinrichtung
und insbesondere eine Anordnung zum Berechnen der
Adresse des nächsten aus einem Datenspeicher zu holenden
Operanden gleichzeitig mit der Ausführung des letzten
geholten Operanden, nach dem Oberbegriff des Anspruchs 1.
Bei einer Feldverarbeitungseinrichtung ist es des öfteren
erforderlich, eine geordnete Gruppe oder Reihe von Daten
mit einer anderen geordneten Gruppe von Daten wiederholt
zu bearbeiten, wobei bei jedem folgenden Durchgang bei
einem neuen Datenpunkt in der ersten Gruppe begonnen
wird. Bei der digitalen Filterung eines durch eine Reihe
von Abtastungen dargestellten Signals wird beispielsweise
eine Signalformfaltung durchgeführt. Ein allgemeiner
Ausdruck, der die Faltung des Signals x durch den Filterkennwert
h darstellt, lautet:
P
= Anzahl der Koeffizienten der Filterkennlinie
i
= Nummer der Datenpunkte, wobei 0 i P
Bei diesem Beispiel wird jeder Satz von die Signalform x
darstellenden Datenpunkten zuerst mit einem entsprechenden
Koeffizienten von h multipliziert und die Summe
dieser Produkte wird addiert; hierauf werden die Koeffizienten
um eine Position verschoben und dieser Vorgang
wird wiederholt. Diese Multiplikation und Addition für
jeden der die Filterkennlinie darstellenden Koeffizienten
wird wiederholt, bis die vollständige, die Signalform
darstellende Datengruppe, mit allen die Filterkennlinie
darstellenden Koeffizienten gefaltet wurde. Während jedes
Durchgangs durch die Gruppe von Koeffizienten müssen die
Adressen der Daten und Koeffizienten in dem Datenspeicher
nach jeder folgenden Multiplikation und Addition berechnet
werden. Nach jedem derartigen Durchlauf durch die
Gruppe von Koeffizienten, die die Filterkennlinie oder
-charakteristik darstellen, muß die Anordnung zu einer
Startadresse zurückkehren, die auf den Beginn der Gruppe
von Koeffizienten in dem Datenspeicher zeigt, sowie zu
einer Startadresse, die auf den nächsten Datenpunkt in
der Gruppe von die Signalform darstellenden Datenpunkten
zeigt, wobei der ursprüngliche Zeiger oder Cursor um "1"
erhöht wurde.
Ein Ziel, was gewöhnlich bei der Feldverarbeitung,
insbesondere bei der Signalverarbeitung angestrebt wird,
ist die Verarbeitung mit hoher Geschwindigkeit. Dies ist
insbesondere dort wichtig, wo eine Echtzeitverarbeitung
wünschenswert ist. Wo, wie in dem vorhergehenden Beispiel,
wiederholte Durchgänge durch die Gruppen von Datenpunkten
erforderlich sind, müssen neue Adressen für jede folgende
Operation berechnet werden; dies bedeutet, daß irgendein
Mechanismus vorgesehen sein muß, der die Operandenadressen
während jedes Durchlaufs fortschaltet und die
Zeiger oder Cursoren zu Beginn jedes Durchlaufs wieder
initialisiert, einschließlich des Fortschaltens des
Wertes auf den jeder Zeiger initialisiert wird.
Bei bekannten Mikroprozessoreinrichtungen erfordert das
Starten der Adressenberechnung üblicherweise, daß die
Startadressen und der Wert, um den die Startadressen
fortzuschalten sind, in einem Speicher gespeichert
werden, daß diese Werte immer dann aufgerufen werden,
wenn eine Berechnung einer neuen Startadresse erforderlich
ist, nämlich für eine erneute Initialisierung der
augenblicklichen Adresse zu Beginn jedes neuen Durchlaufs
durch eine Gruppe von Operanden, und daß die neue
Startadresse berechnet wird. Dieser Vorgang wird durch
eine Reihe von Programmschritten, d. h. Befehlen, durchgeführt.
Eine Einrichtung, die auf die vorbeschriebene
Weise arbeitet, ist beispielsweise der TMS-320-Mikroprozessor,
der
F9445-Mikroprozessor und der
ATMAC-Mikroprozessor.
Diese Programmschritte erfordern eine übergeordnete
Aktivität, die den Zeitaufwand erhöht, der für eine
Reihenverarbeitung erforderlich ist.
In der US-PS 41 30 868 ist dazu eine Datenverarbeitungseinrichtung
beschrieben mit zwei unabhängig steuerbaren Adressenregistern,
von denen das eine oder das andere einen Adressenwert an
eine Speichereinheit anlegen kann. Die beiden Adressenregister
sind Auf-/Ab-Zähler, die jeweils nur um eine Einheit
auf- oder abgezählt werden können. Eine Steuereinrichtung
dient dazu festzulegen, welches Adressenregister aktiviert
wird und ob dann das jeweils andere um eine Einheit auf-
oder abgezählt wird. Dies erfolgt jedoch programmgesteuert,
wobei der Steuereinheit ein Mehr-bitbefehl zugeführt wird,
in dem die einzelnen Bit bestimmen, welcher Zähler zu aktivieren
ist und welcher auf- bzw. abgezählt werden soll.
Die notwendigen Programmschritte erhöhen auch in diesem Fall den Zeitaufwand.
Der Erfindung liegt daher die Aufgabe zugrunde, zur Verringerung des Zeitaufwands,
eine Adressenberechnungsanordnung anzugeben, die unter Verwendung gerade
aufgerufener Adressen bereits während des laufenden Befehlzyklus
die im nächsten Befehlzyklus aufzurufende Adresse
bestimmt und zur Verfügung stellt. Ferner sollen die
Startadressen in Rechenschleifen automatisch neu initialisiert
werden.
Diese Aufgabe wird erfindungsgemäß gelöst durch eine
Adressenberechnungsanordnung mit den Merkmalen des Kennzeichens
des Patentanspruchs 1.
Das Bedürfnis, die zusätzliche Zeit zu eliminieren, die
üblicherweise zur Berechnung neuer Adressen und zur neuen
Einstellung der Zeiger verwendet wird, wird bei der
vorliegenden Erfindung erfüllt durch einen Anordnungsbau,
der eine übliche Softwarefunktion ersetzt. Eine erste
Gruppe von Adressenregistern ist zum Speichern der Zeiger
auf die Startadressen von Gruppen von Daten vorgesehen.
Eine zweite Gruppe von Adressenregistern dient zum
Speichern der augenblicklichen Adressen, die diesen Daten
zugeordnet sind, und eine dritte Gruppe von Registern
dient zum Speichern der Seite und des Speichers, in denen
diese Adressen auftreten. Die dem Datenspeicher zugeführte
Adresse ist eine Verkettung der Werte am Ausgang der
Seitenregister und am Ausgang entweder der ersten oder
zweiten Adressenregister.
Zu Beginn führt die erste Gruppe von Registern zusammen
mit dem Seitenregister die Startadressen dem Datenspeicher
zu. Gleichzeitig werden die Startadressen in der
ersten Gruppe von Registern um einen vorbestimmten Wert
geändert und in der zweiten Gruppe und falls erforderlich
in der ersten Gruppe von Registern rückgespeichert.
Hierdurch erfolgt nicht nur eine Aktualisierung der
ersten Gruppe von Registern mit den Startadressen für die
nächste Schleife, sondern auch eine Fortschaltung der
Adressen in der zweiten Gruppe von Registern zum zweiten
Schritt der Schleife. Während dann die Anordnung durch eine
Berechnung läuft, wird das zweite Register mit jedem
folgenden Schritt geändert. Nach Beendigung eines Durchlaufs
durch eine Rechenschleife gibt die erste Gruppe von
Registern wiederum die Startadressen an, die auch
wiederum aktualisiert werden, und die zweite Gruppe von
Registern schreitet fort wie zuvor. Dies erfolgt bis die
ganze Verarbeitung beendet ist.
Die Aktualisierung wird erreicht durch eine kombinierende
Logik, die die Ausgangswerte der ersten, zweiten oder
dritten Gruppe von Registern aufnimmt und in einer
arithmetisch/logischen Einheit gemäß einer vorbestimmten
Funktion mit einem vorbestimmten Wert kombiniert. Das
Ergebnis wird rückgespeichert in das entsprechende
Register. Ein gewählter Wert kann dazu dienen, die
Ausgangswerte zu ändern und das vorgenannte Ergebnis zu
erzielen. Das Adressieren des Datenspeichers, die Berechnung
der neuen Adressen und das Laden der neuen Adressen
in die Adressenregister tritt innerhalb eines Befehlsaus
führungszyklus der Datenverarbeitungseinrichtung auf.
Bevorzugte Weiterbildungen des erfindungsgemäßen Adres
senberechnungssystems sind in den Unteransprüchen gekennzeichnet.
Im folgenden wird anhand der Zeichnung ein Ausführungsbeispiel
der vorliegenden Erfindung näher beschrieben.
Es zeigt
Fig. 1 eine beispielhafte Gruppe von Datenpunkten und
Koeffizienten, die in einer Reihenverarbeitungsberechnung
verwendet werden können,
Fig. 2 eine allgemeine Ausführungsform eines Teiles eines
Reihenprozessoraufbaus, mit der die Adressenbe
rechnungsanordnung der vorliegenden Erfindung vorteilhaft
eingesetzt werden könnte, und
Fig. 3 ein Blockschaltbild einer bevorzugten Ausführungsform
der Adressenberechnungsanordnung der vorliegenden
Erfindung.
Die Fig. 1 und 2 zeigen Datenpunkte D 1-D 12, die eine
abgetastete Signalform darstellen, welche gemäß einer
Funktion verarbeitet werden sollen, die durch die
Koeffizienten C 1-C 6 repräsentiert wird. Diese Gruppen von
Datenpunkten und Koeffizienten stellen zu verarbeitende
Reihen oder Anordnungen dar und entsprechen Werten, die
in einem Datenspeicher 10 der allgemein in Fig. 2
gezeigten Anordnung 2 gespeichert sind, wobei jeder Wert
eine entsprechende Speicheradresse besitzt. Bei einer
typischen Anwendung wird die Datenreihe oder -anordnung
mit der Koeffizientenreihe oder -anordnung gefaltet.
Somit werden basierend auf Adressen von der Adressiereinheit
14 D 1 und C 1 aus dem Speicher abgerufen und in der
arithmetischen Einheit 12 multipliziert, die auch das
Ergebnis sichert. Dann werden D 2 und C 2 aufgerufen und
multipliziert usw. bis D 6 und C 6 aufgerufen und multipliziert
wurden, wobei während dieses Ablaufs die entsprechenden
Produkte summiert werden. Die Gesamtsumme wird
typischerweise jedoch nicht notwendigerweise im Speicher
gesichert. Dann wird die gleiche Folge wiederholt,
beginnend mit dem zweiten Datenpunkt in der Datenreihe,
d. h. D 2 wird multipliziert mit C 1, D 3 mit C 2 usw. bis D 7
mit C 6. Der Vorgang wird nun wiederum so viele Male
wiederholt als erforderlich ist, um eine vorbestimmte
Anzahl von Datenpunkten mit allen Koeffizienten zu
multiplizieren.
Der Multiplikationsvorgang der Datenpunkte mit entsprechenden
Koeffizienten und die Summenbildung der Produkte
umfaßt eine Reihe von Schritten, die wiederholt durchzuführen
sind, d. h. eine Schleife. Während jedes Durchlaufs
durch die Schleife muß die Adresseneinheit dem Datenspeicher
die Adressen der augenblicklichen zu multiplizierenden
Daten- und Koeffizientenwerte zuführen. Somit
müssen diese Adressen für jedes folgende Aufrufen,
Multiplizieren und Addieren geändert werden. Zu Beginn
jedes folgenden Durchlaufs durch die Schleife muß die
Adresseneinheit auf den Startkoeffizienten und die neuen
Startdatenadressen zeigen. Während diese Feld- oder
Anordnungsverarbeitung als Beispiel zur Erläuterung der
Erfindung gedacht ist, erkennt man, daß viele andere
Feldverarbeitungsalgorithmen ein ähnliches Wiederholen
des Durchschreitens durch eine oder mehrere Reihen von
Adressen entsprechend der Anordnungen von Daten erfordert,
die mit einer oder mehreren neuen Adressen für jede
folgende Reihe von Operationen beginnen, so daß die
Erfindung auf viele derartiger Algorithmen anwendbar ist.
Bei der allgemein dargestellten Anordnung der Fig. 2
erfolgt die Berechnung von Adressen in der Adresseneinheit
14, während derjenigen Zeit, die die arithmetische
Einheit 12 benötigt, um eine Rechenoperation durchzuführen,
d. h. während eines Arbeitsbefehlszyklus der Daten
verarbeitungseinrichtung. Bei dem vorgenannten Beispiel
wird die Adresse für den nächsten Datenpunkt zum Speicher
gesandt und die Adresse für den folgenden Datenpunkt wird
durch die Adresseneinheit berechnet, während ein Datenpunkt
und ein Koeffizient multipliziert werden. Während
das Produkt zum vorhergehenden Produkt addiert wird, wird
die Adresse für den nächsten Koeffizienten zum Speicher
gesandt und die Adresse für den folgenden Koeffizienten
wird berechnet. Dies setzt voraus, daß der Datenspeicher
automatisch seinen Inhalt an die Recheneinheit nach
Empfang einer Adresse abgibt, und daß die Recheneinheit
Register zum zeitweiligen Speichern seine Operanden
besitzt, wie dies allgemein bekannt ist. Es ist zu
erkennen, daß die Adressenberechnungsanordnung der vorliegenden
Erfindung mit einer Vielfalt von unterschiedlichen
Prozessoraufkonfigurationen verwendet werden kann. Vorzugsweise
sind jedoch getrennte Daten- und Programm
befehlsspeicher vorgesehen und die Programmbe
fehlsschaltung, die Recheneinheit und die Adresseneinheit
arbeiten alle gleichzeitig und unabhängig für die
maximale Ausnutzung der Vorteile der Erfindung.
Fig. 3 veranschaulicht eine bevorzugte Ausführungsform
der erfindungsgemäßen Adressenberechnungsanordnung, wobei
die Startadresse für jede Gruppe von aufzurufenden Daten
in einem ersten Adressenspeicher (ARA) 16 gespeichert
ist, der vorzugsweise tatsächlich aus einer Gruppe von
Speicherregistern zum Speichern der Startadressen von
entsprechenden Gruppen von Datenreihen besteht. Die
augenblicklichen Datenadressen werden in einem zweiten
Adressenspeicher (ARB) 18 gespeichert, der ebenfalls aus
einer Gruppe von Speicherregistern zum Speichern augen
blicklicher Adressen besteht. Die Adressen in (ARA) 16
und (ARB) 18 werden von einer Quelle für neue oder
aktualisierte Adressen über Eingänge 20 bzw. 22 zugeführt.
Sind Daten in einem Speicher in "Seiten" gespeichert,
dann besitzt das System vorzugsweise auch einen Seiten
adressenspeicher (PR) 24 zum Speichern der höchsten Bits,
der zum Datenspeicher zu sendenden Adresse, wobei ARA und
ARB die niedrigsten Bits ihrer entsprechenden Adressen
speichern. Wie ARA und ARB besteht PR 24 vorzugsweise
ebenfalls aus einer Vielzahl von Registern zum Speichern
von Teilen von Adressen, die Seiten darstellen, in denen
entsprechende Reihendaten gespeichert sind. Wie ARA und
ARB empfängt PR seine Adressenbits von einer Quelle neuer
oder aktualisierter Adressen an einem Eingang 26. Das
bestimmte Register in ARA, ARB und PR, von dem oder zu
dem eine Adresse während einer bestimmten Operation
übertragen wird, empfängt ein Registerindexeingangssignal
28, das ein Teil der Prozessorbefehlskodierung ist,
welche von der Programmbefehlsschaltung beliebiger (nicht
gezeigter) Bauart zugeführt wird.
Die am Ausgang 30 dem Datenspeicher zugeführte Adresse
ist eine Verkettung der Werte am Ausgang 32 der PR 24 und
am Ausgang 34 eines Adressenmultiplexers 36. Zuerst wählt
der Multiplexer 36 an seinem Ausgang den Ausgang 38 vom
ARA 16. Hiernach wählt der Adressenmultiplexer 36 den
Ausgang 40 von ARB 18 usw. bis eine Folge von Schritten
bzw. eine Schleife beendet ist.
Zur gleichen Zeit, zu der der Ausgangswert von ARA dem
Multiplexer 36 zugeführt wird, kann ARA geändert, d. h.
aktualisiert und in das entsprechende Register von ARA
über den Eingang 20 zurückgebracht werden. In ähnlicher
Weise kann, wenn der Ausgangswert von ARB dem Adressenmultiplexer
36 zugeführt wird, dieser ebenfalls aktualisiert
werden, wobei das Ergebnis in das entsprechende
Register von ARB über Eingang 22 zurückgebracht wird. Es
ist von besonderer Wichtigkeit, daß, wenn die Ausgangswerte
von ARA dem Datenspeicher zugeführt und aktualisiert
werden, die aktualisierte Adresse nicht nur in den
ARA-Speicher, sondern auch in den ARB-Speicher geladen
wird, wodurch der ARB-Speicher fortgeschaltet wird.
Typischerweise werden die Adressen einfach um eins
erhöht; sie können jedoch auch um einen größeren Wert
erhöht oder um irgendeinen Wert verringert werden oder
sie können sich auch überhaupt nicht ändern. Auf jeden
Fall wird der Mechanismus zum Ändern dieser Werte
nachstehend beschrieben.
Der Wert am Ausgang 38 des ARA-Speichers 16 wird einem
ersten Multiplexer 44 zugeführt, der auch als Eingangswerte
eine Gruppe von Nullen am Eingang 46, eine Gruppe
von Einsen am Eingang 48, den Wert am Ausgang 50 eines
x-Registers 52 (typischerweise ein versetzter Wert) und
den Wert am Ausgang 54 eines y-Registers 56 empfängt. Ein
weiterer Zwischenmultiplexer 58 empfängt an seinen
Eingängen den Wert vom Ausgang 40 des ARB 18, den Wert am
Ausgang 32 des PR 24, eine Gruppe von Nullen vom Eingang
60 und den Wert am Ausgang 50 des x-Registers 52. Eine
arithmetisch/logische Einheit (ALU) 62, die selektiv
mathematische oder logische Operationen ausführen kann,
besitzt zwei Eingänge, die mit dem Ausgang 64 des ersten
Zwischenmultiplexers 44 bzw. dem Ausgang 66 des zweiten
Zwischenmultiplexers 58 verbunden sind. Diese beiden
Eingänge der ALU 62 werden mittels der ALU kombiniert,
damit sich ein Ergebnisausgangswert 68 ergibt.
Dieser Wert am Ausgang 68 der ALU 62 wird einem weiteren
Multiplexer 70 zugeführt, dessen Ausgang Eingangssignale
zu dem ARA 16, ARB 18, PR 24, x-Register 52 und y-Register
56 abgibt. Somit kann der Ausgangswert vom Multiplexer
70 zur Aktualisierung der Adressen in den ARA-,
ARB- und PR-Speichern und zum Ändern der Werte in den x-
und y-Registern dienen. Beispielsweise kann der Ausgangswert
vom ARA 16 durch den Multiplexer 44 als Eingangswert
zur ALU 62 zusammen mit einem Wert Eins der durch den
Multiplexer 58 gewählten Eingangssignale ausgewählt
werden, so daß die beiden Werte durch die ALU logisch
oder mathematisch verarbeitet werden können, damit sich
ein neuer Wert am Ausgang 68 ergibt. Eine Startadresse in
dem ARA-Speicher kann um Eins dadurch erhöht werden, daß
eine Eins in das x-Register 52 gebracht und diese als ein
Eingangssignal vom Multiplexer 58 für eine Addition mit
dem Wert in einem gewählten Register des ARA-Speichers
gewählt wird. Der Ausgangswert der ALU 62 würde den Wert
des gewählten Registers im ARA-Speicher plus Eins
darstellen. Der Wert des ARA-Speichers plus Eins wird
durch den Multiplexer 70 ausgewählt und an den Eingang 20
des ARA-Speichers angelegt, so daß er in dem gewählten
Register des ARA-Speichers zurückgespeichert wird, wodurch
das Register des ARA-Speichers um Eins erhöht wird.
Er wird auch an den Eingang 22 des ARB-Speichers zum
Ersetzen der entsprechenden augenblicklichen Adresse
angelegt, wodurch die augenblickliche Adresse entsprechend
der Gruppe von Daten fortgeschaltet wird, für die
die Startadresse aktualisiert wurde. Bei dem Faltungsbeispiel
gemäß der vorangegangenen Beschreibung resultiert
dies in einem Verschieben der Startadresse der Datenanordnung
um einen Datenpunkt und Fortschalten der augenblicklichen
Adresse des zweiten Datenanordnungsschritts
einer neuen Schleife.
In gleicher Weise wird jedesmal dann, wenn eine Adresse
von einem gewählten Register des ARB 18 zum Datenspeicher
gesandt wird, diese auch zur ALU 62 über den Zwischenmultiplexer
58 geleitet werden. Gleichzeitig kann durch
den Zwischenmultiplexer 44 eine Zahl, beispielsweise vom
x-Register zum Addieren zu der Adresse und zu deren
Fortschalten ausgewählt werden, wobei das Ergebnis in
das gewählte Register des ARB zurückgespeichert wird. Bei
dem Faltungsbeispiel führt dies zu einem Fortschreiten zu
einem neuen Datenpunkt oder Koeffizienten.
Das x-Register 52 dient somit dazu, einen Wert abzugeben,
mit dem die Werte in den ARA-Speicher 16, ARB-Speicher 18
oder PR-Speicher 24 geändert werden können. Das y-Register
56 kann andererseits dazu verwendet werden, einen
Wert zum Ändern der Werte in den ARB-Speicher oder dem
PR-Speicher 24 abzugeben. Dieses x- und y-Register wird
von einer Registersammelleitung 72 über den Multiplexer
70 geladen, wobei die in das x- und y-Register zu
ladenden Werte von anderen Recheneinheiten etwa der
vorgenannten Befehlsschaltung in einer vollständigen
Datenverarbeitungsanlage kommen. Beispielsweise könnte
das x-Register mit einem Wert geladen werden, um den ein
Register in dem ARA-Speicher für eine erneute Initialisierung
der Startadresse einer Anordnung am Beginn einer
Schleife erhöht wird, während das y-Register mit einem
anderen Wert geladen werden könnte, mit dem ein Register
in dem ARB-Speicher unter Berechnen der augenblicklichen
Adresse einer anderen Anordnung während eines Durchlaufs
durch eine Schleife erhöht würde.
Der Wert am Ausgang 68 der ALU kann auch über einen
Puffer 74 an die Registersammelleitung 72 zur Verwendung
durch eine andere Einheit der Anlage gelegt werden. Unter
Umständen kann es wünschenswert sein zu bestimmen, wenn
eine wiederberechnete Adresse Null ist, was direkt am
ALU-Ausgang 68 festgestellt werden kann. Es ist zu
beachten, daß die vorgenannten Funktionsmerkmale der
Adressenberechnungseinheit eine zugehörige (nicht gezeigte)
Steuerlogik umfassen. Der Aufbau und die Konstruktion
spezieller Schaltungen zur Realisierung des
zuvor beschriebenen Systemaufbaus einschließlich der
zugeordneten Steuerlogik ist in der Technik bekannt und
es ist kein besonderer Aufbau für die vorliegende
Erfindung erforderlich, mit der Ausnahme, daß eine solche
kombinierende Logik verwendet wird, daß die Abgabe einer
Adresse und die erneute Berechnung dieser Adresse zum
Anlegen an die Eingänge des ARA-, ARB- und PR-Speichers
alle in einem Schritt auftreten, während die Speicherung
des Ergebnisses in dem ARA-, ARB- oder PR-Speicher in
einem zweiten Schritt erfolgt. Somit kann das Anlegen von
Adressen an den Datenspeicher und das Aktualisieren
dieser Adressen in einem einzigen Arbeitsfehlszyklus der
Datenverarbeitungsanlage durchgeführt werden, d. h. in der
Periode, die die Recheneinheit benötigt, um einen
einzigen Arbeitsbefehl vollständig auszuführen. Üblicherweise
würde dies bedeuten, einen Operanden aus einer
Speicherstelle, etwa einem Register für zeitweilige
Speicherung innerhalb der Recheneinheit zu holen, diesen
Operanden zu bearbeiten und das Ergebnis abzuspeichern.
Claims (9)
1. Adressenberechnungsanordnung für einen Datenspeicher in
Datenverarbeitungseinrichtungen mit einem ersten und zweiten
Adressenregister, von denen entweder das eine oder das andere einen
Adressenwert an den Datenspeicher anlegt,
dadurch gekennzeichnet,
daß die von dem ersten (16) und dem zweiten Adressenregister (18)
gespeicherten Adressenwerte gleichzeitig einer Aktualisierungslogik
(44, 52, 56, 58, 62) zugeführt werden und noch während der Durchführung
eines laufenden Datenspeicherzugriffs die in dem ersten (16) und
zweiten Adressenregister (18) gespeicherten Adressen zugleich
aktualisiert werden.
2. Adressenberechnungsanordnung nach Anspruch 1,
dadurch gekennzeichnet,
daß das erste Adressenregister (16) eine Startadresse für einen
Arbeitsablauf und das zweite Adressenregister (18) die jeweilige von
mehreren während des Arbeitsablaufs auftretenden augenblicklichen
Adresse speichern.
3. Adressenberechnungsanordnung nach Anspruch 2,
dadurch gekennzeichnet,
daß für repetitive Arbeitsabläufe, die jeweils mit der
nächstfolgenden Speicheradresse wieder beginnen, während der Zuführung
des Startadressenwertes zu dem Datenspeicher die nächstfolgende
Adresse berechnet und gleichzeitig sowohl dem ersten Adressenregister
(16) als Startadresse für den nächsten Arbeitsablauf als auch dem
zweiten Adressenregister (18) als nächste augenblickliche Adresse
zugeführt wird.
4. Adressenberechnungsanordnung nach einem der Ansprüche 1 bis 3,
dadurch gekennzeichnet,
daß ein drittes Adressenregister (24) zum Speichern eines zusätzlichen
Adressenteils vorgesehen ist, der dem Adressenwert des ersten oder
zweiten Adressenregisters (16, 18) vor dem Anlegen an den Datenspeicher
hinzugefügt wird.
5. Adressenberechnungsanordnung nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet,
daß die Aktualisierungslogik (44, 52, 56, 58, 62) die Adressenwerte der
Adressenregister (16, 18, 24) um jeweils vorbestimmte gleiche Werte
ändert.
6. Adressenberechnungsanordnung nach einem der Ansprüche 1 bis 5,
dadurch gekennzeichnet,
daß die Aktualisierungslogik (44, 52, 56, 58, 62) eine arithmetisch/-
logische Einheit (62) zum selektiven Ausführen von Rechen- oder
logischen Operationen entweder mit einem oder zwei eingegebenen
Operanden, einen ersten Zwischenmultiplexer (44) zum Abgeben eines
Datenwertes vom ersten Adressenregister (16) als ein Eingangsoperand
zu der arithmetisch/logischen Einheit (62), eine Vorrichtung (58) zur
Eingabe eines vorbestimmten Wertes als zweiten Eingangsoperanden zu
der arithmetisch/logischen Einheit (62) und eine Vorrichtung (70) zum
Anlegen und Einspeichern der in der arithmetisch/logischen Einheit
(62) berechneten Adressenwerte im ersten und/oder zweiten
Adressenregister (16, 18) aufweist.
7. Adressenberechnungsanordnung nach Anspruch 6,
dadurch gekennzeichnet,
daß der zweite Eingangsoperand zu der arithmetisch/logischen Einheit
(62) in einem zweiten Zwischenmultiplexer (58) und einem
Versetzungsregister (52) gebildet wird.
8. Adressenberechnungsanordnung nach Anspruch 7,
dadurch gekennzeichnet,
daß dem ersten Zwischenmultiplexer (44) der vorbestimmte Betrag aus
dem Versetzungsregister (52) und dem zweiten Zwischenmultiplexer (58)
der Adressenwert des zweiten Adressenregisters (18) zugeführt werden.
9. Adressenberechnungsanordnung nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet,
daß das erste und zweite Adressenregister (16, 18) aus einer Vielzahl
von Speicherregistervorrichtungen bestehen, die jeweils Adressenwerte
speichern, die selektiv aufrufbar sind.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/641,098 US4704680A (en) | 1984-08-15 | 1984-08-15 | Address computation system for updating starting addresses of data arrays in an array processor within an instruction cycle |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3507584A1 DE3507584A1 (de) | 1986-02-27 |
DE3507584C2 true DE3507584C2 (de) | 1988-10-20 |
Family
ID=24570924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19853507584 Granted DE3507584A1 (de) | 1984-08-15 | 1985-03-04 | Adressenberechnungssystem fuer digitale verarbeitungseinrichtungen |
Country Status (7)
Country | Link |
---|---|
US (1) | US4704680A (de) |
JP (1) | JPS6160133A (de) |
CA (1) | CA1223664A (de) |
DE (1) | DE3507584A1 (de) |
FR (1) | FR2569288B1 (de) |
GB (1) | GB2163280B (de) |
NL (1) | NL8500683A (de) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3619036A1 (de) * | 1986-06-06 | 1987-12-10 | Wajda Eligiusz Dipl Ing | Verfahren zur steuerung von datenverarbeitenden einrichtungen |
US5050070A (en) * | 1988-02-29 | 1991-09-17 | Convex Computer Corporation | Multi-processor computer system having self-allocating processors |
US5159686A (en) * | 1988-02-29 | 1992-10-27 | Convex Computer Corporation | Multi-processor computer system having process-independent communication register addressing |
JP2617974B2 (ja) * | 1988-03-08 | 1997-06-11 | 富士通株式会社 | データ処理装置 |
US5163149A (en) * | 1988-11-02 | 1992-11-10 | International Business Machines Corporation | Combining switch for reducing accesses to memory and for synchronizing parallel processes |
US5265225A (en) * | 1990-02-21 | 1993-11-23 | Harris Corporation | Digital signal processing address sequencer |
US5293596A (en) * | 1990-02-21 | 1994-03-08 | Matsushita Electric Industrial Co., Ltd. | Multidimensional address generator and a system for controlling the generator |
US5832533A (en) * | 1995-01-04 | 1998-11-03 | International Business Machines Corporation | Method and system for addressing registers in a data processing unit in an indexed addressing mode |
US6049858A (en) * | 1997-08-27 | 2000-04-11 | Lucent Technologies Inc. | Modulo address generator with precomputed comparison and correction terms |
US5983333A (en) * | 1997-08-27 | 1999-11-09 | Lucent Technologies Inc. | High speed module address generator |
US6047364A (en) * | 1997-08-27 | 2000-04-04 | Lucent Technologies Inc. | True modulo addressing generator |
US6529983B1 (en) | 1999-11-03 | 2003-03-04 | Cisco Technology, Inc. | Group and virtual locking mechanism for inter processor synchronization |
US6892237B1 (en) | 2000-03-28 | 2005-05-10 | Cisco Technology, Inc. | Method and apparatus for high-speed parsing of network messages |
US6505269B1 (en) | 2000-05-16 | 2003-01-07 | Cisco Technology, Inc. | Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system |
WO2001090888A1 (en) * | 2000-05-23 | 2001-11-29 | Theis Jean Paul | A data processing system having an address generation unit with hardwired multidimensional memory indexing support |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5852265B2 (ja) * | 1977-01-12 | 1983-11-21 | 株式会社日立製作所 | デ−タ処理装置 |
US4130868A (en) * | 1977-04-12 | 1978-12-19 | International Business Machines Corporation | Independently controllable multiple address registers for a data processor |
JPS54127653A (en) * | 1978-03-28 | 1979-10-03 | Toshiba Corp | Data processor |
US4365292A (en) * | 1979-11-26 | 1982-12-21 | Burroughs Corporation | Array processor architecture connection network |
US4370732A (en) * | 1980-09-15 | 1983-01-25 | Ibm Corporation | Skewed matrix address generator |
US4439827A (en) * | 1981-12-28 | 1984-03-27 | Raytheon Company | Dual fetch microsequencer |
JPS5965377A (ja) * | 1982-10-05 | 1984-04-13 | Nippon Telegr & Teleph Corp <Ntt> | アドレス制御方法およびその装置 |
DE3483489D1 (de) * | 1983-04-13 | 1990-12-06 | Nec Corp | Speicherzugriffseinrichtung in einem datenverarbeitungssystem. |
-
1984
- 1984-08-15 US US06/641,098 patent/US4704680A/en not_active Expired - Lifetime
-
1985
- 1985-02-25 GB GB08504822A patent/GB2163280B/en not_active Expired
- 1985-03-04 DE DE19853507584 patent/DE3507584A1/de active Granted
- 1985-03-11 NL NL8500683A patent/NL8500683A/nl not_active Application Discontinuation
- 1985-03-12 FR FR8503613A patent/FR2569288B1/fr not_active Expired - Lifetime
- 1985-03-13 CA CA000476418A patent/CA1223664A/en not_active Expired
- 1985-08-13 JP JP60178485A patent/JPS6160133A/ja active Granted
Also Published As
Publication number | Publication date |
---|---|
US4704680A (en) | 1987-11-03 |
GB2163280A (en) | 1986-02-19 |
GB8504822D0 (en) | 1985-03-27 |
CA1223664A (en) | 1987-06-30 |
JPH0444970B2 (de) | 1992-07-23 |
JPS6160133A (ja) | 1986-03-27 |
NL8500683A (nl) | 1986-03-03 |
FR2569288B1 (fr) | 1990-12-14 |
DE3507584A1 (de) | 1986-02-27 |
FR2569288A1 (fr) | 1986-02-21 |
GB2163280B (en) | 1988-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2753062C2 (de) | Einrichtung zur wiederholten Durchführung von Programmschleifen | |
DE3507584C2 (de) | ||
DE3210816C2 (de) | ||
DE1549476C3 (de) | Anordnung zur Ausführung von Divisionen | |
DE3882772T2 (de) | Vektorprozessor angepasst zum Sortieren von Vektordaten. | |
DE2714805A1 (de) | Datenverarbeitungssystem | |
DE2712224A1 (de) | Datenverarbeitungsanlage | |
DE2758830A1 (de) | Rechenvorrichtung | |
DE3400723C2 (de) | ||
DE4334294C1 (de) | Prozessor für Zeichenketten variabler Länge | |
DE3314137C2 (de) | ||
DE2725614C2 (de) | ||
DE2245284A1 (de) | Datenverarbeitungsanlage | |
EP0347970B1 (de) | Verfahren zum Prüfen eines Festwertspeichers und Anordnung zur Durchführung des Verfahrens | |
DE3507605A1 (de) | Schleifensteuersystem fuer digitale verarbeitungseinrichtungen | |
EP0265555A1 (de) | Verfahren und Schaltungsanordnung zur Addition von Gleitkommazahlen | |
EP0598112B1 (de) | Verfahren und anordnung zum bilden der summe einer kette von produkten | |
DE2900460A1 (de) | Warteschlangenstruktur | |
DE3104256C2 (de) | ||
DE4416143A1 (de) | Verfahren zum Entwerfen von Pipeline - Stufen in einem Computer-unterstützten Entwurfssystem | |
DE4001232C2 (de) | Gleitkommaeinheit | |
DE1524211B2 (de) | Datenverarbeitungsanlage | |
DE2622140A1 (de) | Verfahren zur durchfuehrung manueller operationen | |
DE2717374C2 (de) | Datenverarbeitungsanlage | |
DE4342521C1 (de) | Verfahren und Anordnung zur Expansion komprimierter Daten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: ST. CLAIR INTELLECTUAL PROPERTY CONSULTANTS, INC., |
|
8328 | Change in the person/name/address of the agent |
Free format text: WEICKMANN & WEICKMANN, 81679 MUENCHEN |