DE69500074T2 - Modulo-adressierter Pufferspeicher - Google Patents
Modulo-adressierter PufferspeicherInfo
- Publication number
- DE69500074T2 DE69500074T2 DE69500074T DE69500074T DE69500074T2 DE 69500074 T2 DE69500074 T2 DE 69500074T2 DE 69500074 T DE69500074 T DE 69500074T DE 69500074 T DE69500074 T DE 69500074T DE 69500074 T2 DE69500074 T2 DE 69500074T2
- Authority
- DE
- Germany
- Prior art keywords
- address
- adder
- input
- circuit
- output
- 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 - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/355—Indexed addressing
- G06F9/3552—Indexed addressing using wraparound, e.g. modulo or circular addressing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/10—Indexing scheme relating to groups G06F5/10 - G06F5/14
- G06F2205/106—Details of pointers, i.e. structure of the address generators
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Stored Programmes (AREA)
Description
- Die vorliegende Erfindung betrifft Adressierungsschaltkreise zum Steuern des Zugriffs auf Speicherplätze in einer Speichervorrichtung, insbesondere Adressierungsschaltkreise zum Erzeugen von Zugriffsadressen für Zirkularzwischenspeicher.
- Bei vielen elektronischen Schaltkreisen muß auf bestimmte aufeinanderfolgende Speicherplätze periodisch zyklisch zugegriffen werden oder müssen diese adressiert werden. Dadurch wird das seguentielle Ausführen einer unbegrenzten Anzahl von Lese- oder Schreiboperationen möglich, indem nur ein kleiner Teil des verfügbaren Speichers ausgenutzt wird. Ein Speicherplatz wird adressiert, dann der folgende usw. bis das Ende einer vordefinierten Speicherzone - der Pufferspeicher erreicht wird. Die Adressierung springt dann an den Platz am anderen Ende des Pufferspeichers zurück. Typischerweise beginnt die Adressierung an der niedrigsten verfügbaren Adresse und wächst bis zu einer oberen Grenze, dann springt der Speicherzugriff in zyklischem Übergang auf die niedrigste verfügbare Adresse zurück. Selbstverständlich könnte man genausogut die Adressierung bei der obersten verfügbaren Adresse beginnen lassen und sie kleiner werden lassen, bis eine untere Grenze erreicht ist, und dann den Speicherzugriff auf die höchste verfügbare Adresse im zyklischen Übergang springen lassen. Dies ist bekannt unter dem Namen Zirkularadressierung oder Moduloadressierung, und der Zwischenspeicher ist unter dem Namen Zirkularadressierungs- oder Moduloadressierungs-Zwischenspeicher bekannt.
- Die Adressierungsberechnung für den Zugriff auf Speicherplätze in einem solchen Zirkularzwischenspeicher kann mit einer Software erfolgen, die sich in einem dazugehörigen Mikroprozessor befindet. Diese Softwaretechniken erfordern jedoch mehrere Maschinenzyklen zum Ausführen der Berechnung und sind viel zu langsam für gewisse Anwendungen wie z.B. numerische Filterung, Matrixberechnung und viele andere Routinen zur numerischen Signalverarbeitung. Man bevorzugt daher oft Adressierungsverfahren physikalischer Art aufgrund ihrer Arbeitsgeschwindigkeit. Eine solche Moduloadressierung kann physikalisch mit einem Schaltkreis erfolgen, wie er in der internationalen Patentanmeldung PCT/US91/08102 mit der veröffentlichungsnummer SO 92/08186 von Analog Devices Inc. beschrieben ist.
- Fig. 1 der vorliegenden Anmeldung stellt den typischen Aufbau eines einfachen Zirkularzwischenspeichers nach Stand der Technik dar. Eine Gruppe von Speicherplätzen ist als Zwischenspeicher reserviert. Diese Plätze umfassen den Platz 3 als untersten Platz und den Platz 4 als obersten Platz. Andere Speicherplätze, z.B. 6, 8 befinden sich an Plätzen mit dazwischenliegenden Adressen. Die Adresse des Speicherplatzes 14 gerade oberhalb der oberen Grenze des Zwischenspeichers wird in dem zyklischen Programm verwendet. Ein Steuerschaltkreis ermöglicht den Zugriff auf Speicherplätze des Zwischenspeichers, indem er die laufende absolute Adresse von jedem Speicherplatz erzeugt und an ein Zeigerregister ausgibt. Die Funktion dieses Steuerschaltkreises wird durch den Distanzzeiger 16 dargestellt.
- Wenn man annimmt, daß der Speicherplatz 6 gerade ausgelesen werden soll, so zeigt der Zeiger 16 auf diesen Platz. Einmal ausgeführt, wird die Zeigeradresse 16 inkrementiert mit Eins, und der Speicherplatz 8 wird beim Lesen oder beim Schreiben im Verlauf des nächsten Zyklus angezeigt. Dieses läuft identisch so ab, bis der letzte Speicherplatz 4 des Zwischenspeichers gelesen ist. Die an den Zeiger 16 ausgegebene Adresse wird mit Eins inkrementiert und wird zur Adresse des Speicherplatzes 14, wobei die obere Grenze des Zwischenspeichers überschritten wird. Der Steuerschaltkreis erkennt das Anliegen der Adresse des Platzes 14 im Register, das die Eingangsadresse des Zeigers enthält, der Steuerschaltkreis setzt den Inhalt dieses Registers auf Null zurück, und es wird auf den Speicherplatz 3 mit der niedrigsten Adresse gezeigt, die der nächste Platz ist, auf den man zugreift. In diesem Zwischenspeicher greift man sequentiell auf einen Speicherplatz nach dem anderen zu. Der Steuerschaltkreis erkennt, daß das Ende des Zwischenspeichers erreicht ist, wenn die Adresse des Speicherplatz 14 grade oberhalb der Obergrenze des Zwischenspeichers an den Zeiger ausgegeben wird.
- Der Steuerschaltkreis eines solchen Zwischenspeichers kann in der Weise ausgeführt sein, daß ein Register mit M-1 geladen wird, wobei M die Zahl der Plätze im Zwischenspeicher ist, der Inhalt dieses Registers bei jedem Lese- oder Schreibzyklus dekrementiert wird und das Register auf den Wert M-1 zurückgesetzt wird, wenn der Inhalt des Registers 0 erreicht. Der Inhalt des Registers wird der Adresse des niedrigsten Platzes im Zwischenspeicher hinzugefügt. Es gibt keine Beschränkung in bezug auf die Größe des Zwischenspeichers und auch nicht in bezug auf die Startadresse des Zwischenspeichers. Er kann eine beliebige Größe haben. Dieser Zwischenspeicher funktioniert nicht, wenn die Adresse pro Schritt um zwei Speicherplätze oder mehr inkrementiert wird, da man den Speicherplatz 14 überspringen kann.
- Fig. 2 stellt einen anderen Zirkularzwischenspeicher nach Stand der Technik dar. Ein solcher Zirkularzwischenspeicher wird z.B. in US-A-4 800 524 beschrieben. Eine Gruppe von Speicherplätzen bildet einen Teil des Zwischenspeichers. Der Zwischenspeicher umfaßt den Platz 23 als Platz mit der niedrigsten Adresse und den Platz 24 als Platz mit der höchsten Adresse. Die Speicherplätze 25, 27, 31, 32 befinden sich zwischen diesen zwei Grenzen. Ein Steuerschaltkreis ermöglicht den Zugriff auf die Speicherplätze des Zwischenspeichers, indem die Absolutadresse jedes Speicherplatzes erzeugt und ausgegeben wird. Dies wird durch einen Distanzzeiger 33 dargestellt.
- Dieser Zwischenspeicher ermöglicht den Zugriff auf den Speicher mit Schritten, die größer als eine Einheit sind. In diesem Fall muß der Zwischenspeicher eine Anzahl an Speicherplätzen umfassen, die eine ganze Potenz von 2 ist. Wenn der Zwischenspeicher 2 Plätze umfaßt, müssen bei der niedrigsten Adresse 23 des Zwischenspeichers unter anderem alle n Bit niedrigsten Wertes 0 sein. Bei der höchsten Adresse des Zwischenspeichers werden also deren n Bit niedrigsten Wertes 1 sein. Wenn man als Beispiel den Fall mit n = 8 annimmt, so umfaßt der Zwischenspeicher 2&sup8; = 256 Speicherplätze Der Zeiger zeigt momentan den Platz 27 an, der die 12-Bit-Adresse 110010101000 haben kann. Es wird angenommen, daß der Steuerschaltkreis des Zwischenspeichers die Adressen um vier inkrementiert. Der nächste Platz, auf den er zeigen wird, wird der Platz 31 mit der Adresse 110010101100 sein. Dies wird sich wiederholen, bis das Ende des Zwischenspeichers fast erreicht ist. Nach Adressierung des Platzes 32 mit - zum Beispiel - der Adresse 110011111110 wird die Adresse um vier auf den Wert 110100000010 inkrementiert. Diese liegt außerhalb des Zwischenspeichers und wird durch den Steuerschaltkreis durch Änderung von Bit 8 erkannt. Das Bit 8 wird also auf Null zurückgesetzt und die neue Adresse ist 110000000010, Platz 25, nahe dem Ende mit der niedrigsten Adresse des Zwischenspeichers. Der Steuerschaltkreis für diesen Zwischenspeicher ist viel komplexer als der, der für den Zwischenspeicher in Fig. 1 notwendig ist. Der einfachste Schaltkreis ist derjenige, der sich ergibt, wenn der Zwischenspeicher mit allen vorher genannten Einschränkungen verwendet wird; das bedeutet, daß der Zwischenspeicher eine Länge von 2n haben muß und an einem Platz starten muß, dessen Adresse ein ganzzahliges Vielfaches von 2 ist, wobei deren n Bit mit niedrigstem Wert gleich Null sind. Aber dies stellt eine Einschränkung dar.
- Unter Verwendung eines zusätzlichen Schaltkreises ist ein Zirkularzwischenspeicher zulässig, dessen Länge nicht eine Potenz von zwei ist. Zum Beispiel kann ein Zirkularzwischenspeicher mit 120 Plätzen dadurch möglich werden, daß man eine Änderung im achten Bit am Ausgang eines Addierers erfaßt, der dazu dient, 8 zu der Adresse des Zeigers hinzuzuzählen. Aber dieses ist noch komplizierter.
- Es wird außerdem vorgeschlagen, die Zugriffsadresse um irgendeine Zahl an Plätzen zu dekrementieren und einen Zwischenspeicher beliebiger Länge zu verwenden, die nicht unbedingt ein Vielfaches von 2n sein muß.
- Die vorgeschlagene Funktion eines Zirkularzwischenspeichers besteht darin, das Überschreiten der oberen Grenze der Adresse zu erfassen und den Zeiger für den Fall der positiven Inkrementierung auf die korrekte Anzahl der Plätze oberhalb der unteren Grenze zurückzusetzen, wobei diese Zahl gleich der Überschreitungslänge über die Adresse der oberen Grenze hinaus ist.
- Unter Verwendung der Symbole Addr für die laufende Adresse, Nadr für die folgende Adresse, Inc für das Inkrement, Ladd für die Grenze der untersten Adresse und Hadd für die Grenze der obersten Adresse wird die nächste Adresse Nadr:
- Addr + Inc,
- wenigstens solange dies nicht größer als Hadd ist, in welchem Fall die nächste Adresse sein wird:
- Nadr = Addr + Inc - Hadd + Ladd - 1.
- Zum Beispiel gilt bei einem Zwischenspeicher mit einer oberen Grenzadresse von 120, einer unteren Grenzadresse von 10, einer laufenden Adresse von 117 und einem Inkrement von 4
- Nadr = 117 + 4 - 120 + 10 - 1 = 10.
- Wenn man umgekehrt eine negative Inkrementierung verwendet, so besteht die vorgeschlagene Funktion bei einem Zirkularzwischenspeicher darin, das Überschreiten der unteren Grenzadresse zu erfassen und den Zeiger auf die korrekte Zahl an Plätzen unterhalb der Obergrenze zurückzusetzen, wobei für den Fall mit negativem Inkrement die korrekte Zahl gleich der Überschreitungslänge unter die Adresse der unteren Grenze hinaus ist.
- Unter Verwendung der gleichen Symbole und des gleichen Beispiels aber mit einem Inkrement von 4 wird die neue Adresse sein:
- Addr + Inc,
- wobei Inc eine mit Vorzeichen behaftete ganze Zahl ist. Wenn dieser Wert niedriger als die untere Grenzadresse ist, wird die nächste Adresse sein:
- Nadr = Addr + Inc - Hadd + Ladd - 1.
- Unter der Annahme, daß die laufende Adresse 12 ist, wird die nächste Adresse sein:
- Nadr = 12 - 4 + 120 - 10 + 1 = 119.
- Die obengenannte Patentanmeldung versucht die Probleme aufgrund der Beschränkungen, die durch die vorher beschriebenen Zwischenspeicher entstehen, zu lösen, indem zum Ausführen dieser Operationen vier Register mit N Bit eingerichtet werden, die enthalten: die erste Grenzadresse im Zwischenspeicher; die nächste Adresse, auf die zugegriffen wird; den Wert des Inkrements und die Länge des Zwischenspeichers. Man kann entweder das erste Grenzadressenregister oder das Längenregister durch ein Register ersetzen, das eine zweite Grenzadresse des Registers enthält. Die Inkrementierung und der Adressierungszyklus werden so ausgeführt, daß der Zwischenspeicher eine beliebige Länge haben kann und an beliebiger Stelle im Speicher angeordnet sein kann. Die Inhalte des Inkrementregisters werden den Inhalten des Registers mit der laufenden Adresse hinzugefügt, und wenn die Grenze des Zwischenspeichers überschritten wird, wird eine alternative Adresse ausgewählt, wobei diese alternative Adresse oben beschrieben ist. Dieser Schaltkreis führt jedoch zu einigen Problemen.
- Zunächst ist der Schaltkreis aufwendig, da wenigstens vier unterschiedliche Schaltkreisblöcke verwendet werden, nämlich ein Multiplexer, ein Addierer, ein Addierer/Subtrahierer und ein Vergleicher. Dieses macht die Optimierung des Schaltkreises zur Einstellung der optimalen Leistung bei jedem Herstellungsverfahren schwierig, da jeder Block individuell optimiert werden muß, wonach die Effekte eines Blocks auf die mit ihm verbundenen Blöcke überprüft werden müssen. Es ist daher wahrscheinlich, daß der Schaltkreis mit nicht optimaler Geschwindigkeit arbeitet und daß jede Modifizierung beim Herstellungsverfahren einen beträchtlichen Optimierungsaufwand nach sich zieht.
- Zweitens wird durch den Schaltkreis die unter den zwei möglichen folgenden Adressen zu verwendende erst vollständig am Ende der Verarbeitung bestimmt. Zwei Adressen werden berechnet, dann wird die erste temporäre nächste Adresse mit einer festen Grenzadresse oder der Länge des Zwischenspeichers verglichen, um festzustellen, welche die nächste provisorische zu verwendende Adresse ist. Die Verwendung eines Bit-für-Bit-Vergleichers führt zu Verzögerungen aufgrund der Komplexität eines solchen Schaltkreises, und die Aufnahme in den kritischen Pfad bei der Berechnung der nächsten Adresse bedeutet, daß eine zusätzliche Verzögerung entsteht, nachdem die beiden nächsten Adressen berechnet worden sind.
- Die Aufgabe der vorliegenden Erfindung, wie sie in Anspruch 1 beansprucht wird, besteht darin, als Ausgleich einen einfachen, schnellen Adressierungsschaltkreis für ein Zirkularregister anzugeben, der physikalisch so aufgebaut ist, daß eine Adressierung vom Typ Modulo eines Zwischenspeichers beliebiger Größe möglich wird, der sich an beliebiger Adresse im Speicher befindet und in dem man den Zeiger bei jeder Adressierungsoperation in beliebiger Größe bis zur Größe des Zwischenspeichers inkrementieren oder dekrementieren kann. Im übrigen zielt die Erfindung darauf, einen solchen Schaltkreis mit einem reduzierten kritischen Pfad zur Sicherstellung höchster Geschwindigkeit mit einem einfachen Schaltkreis zur Vereinfachung der Funktionsoptimierung und zur Vereinfachung der Anpassung an die Herstellungsverfahren anzugeben. Die Erfindung zielt außerdem darauf ab, einen Schaltkreis anzugeben, den man leicht auf die Größe des Zwischenspeichers skalieren kann und wo man die gesamte Adressierungslänge ausnutzen kann.
- Besondere Ausführungsformen der Erfindung werden in den dazugehörigen abhängigen Ansprüchen beansprucht.
- Insbesondere ist erfindungsgemäß ein Schaltkreis beschrieben, um die laufende Zugriffsadresse eines Zirkularzwischenspeichers in einem elektronischen Speicher mit einem Inkrement zu inkrementieren, um die nächste Adresse zu erzeugen. Dieser Schaltkreis umfaßt einen Additionsschaltkreis, um die laufende Adresse dem Inkrement hinzuzufügen und um einen ersten temporären Wert der nächsten Adresse zu erzeugen, und einen Schaltkreis, der die nächste Adresse auf eine Basisadresse plus Überschreitung zurücksetzt, wenn die inkrementierte Adresse eine Grenzadresse um eine Zahl gleich der Überschreitung überschreitet. Um die nächste Adresse zu berechnen , wird ein Additionsschaltkreis angegeben, der nur drei Addierer zum Empfang der laufenden Adresse, des Inkrements und der Grenzadresse und zur Erzeugung eines ersten und eines zweiten temporären Wertes für die nächste Adresse und der Differenz zwischen dem ersten temporären Wert der nächsten Adresse und der Grenzadresse sowie einen Selektionsschaltkreis zur Auswahl einer der zwei temporären Werte der nächsten Adresse als nächste Adresse umfaßt, wobei die Auswahl aufgrund der Polarität der Differenz zwischen dem ersten temporären Wert der nächsten Adresse und der Grenzadresse erfolgt.
- Das Inkrement kann positives oder negatives Vorzeichen haben, das Vorzeichen, das im Verlauf der Arbeit des Schaltkreises ausgewählt werden muß. Desgleichen können die Größe des Inkrements und die Grenzadressen des Zwischenspeichers gewählt werden, während der Schaltkreis arbeitet.
- Ein solcher Schaltkreis kann einen ersten Addierer umfassen, der die laufende Adresse und das Inkrement zusammenzählt, um einen ersten temporären Wert der nächsten Adresse zu erzeugen, sowie einen zweiten Addierer, der je nach Vorzeichen des Inkrements den ersten temporären Wert der nächsten Adresse und die Grenzadresse addiert oder subtrahiert, um den Wert der Differenz und ein Signal zu bilden, das das Überschreiten der Grenzadresse durch den ersten temporären Wert der Adresse anzeigt; sowie einen dritten Addierer, der je nach Polarität des Inkrements den Wert der Differenz und die Basisadresse addiert oder subtrahiert, um einen zweiten temporären Wert der nächsten Adresse zu erzeugen.
- Der zweite und der dritte Addierer kann ein Übertragssignal am Eingang empfangen, das die Polarität des Inkrements angibt.
- In den möglichen bevorzugten Ausführungsformen wird davon ausgegangen, daß einer der Eingänge jedes der beiden Addierer zwei und drei mit dem Ausgang des ersten bzw. zweiten Inverters verbunden ist oder daß einer der Eingänge des zweiten Addierers mit dem Ausgang des dritten Inverters verbunden ist.
- Insbesondere kann der Schaltkreis umfassen: einen ersten Addierer mit zwei Eingängen, dessen Ausgang mit einem Eingang eines ersten Multiplexers mit zwei Eingängen verbunden ist und nachfolgend mit dem ersten Eingang eines zweiten Addierers mit zwei Eingängen verbunden ist; wobei der Ausgang des zweiten Addierers mit zwei Eingängen mit dem ersten Eingang eines dritten Addierers verbunden ist; wobei der Ausgang des dritten Addierers mit zwei Eingängen mit einem zweiten Eingang des ersten Multiplexers verbunden ist; wobei der Ausgang des ersten Multiplexers mit einem ersten Eingang des ersten Addierers mit zwei Eingängen verbunden ist; u.a. eine Verbindung zwischen einem Übertragungsausgang des zweiten Addierers mit zwei Eingängen und eine Verbindung zur Steuerung des ersten Multiplexers umfassend.
- Der Schaltkreis kann u.a. einen zweiten und einen dritten Multiplexer umfassen, deren Ausgänge mit den zweiten Eingängen des zweiten bzw. des dritten Multiplexers verbunden sind und wobei der erste Eingang, zweite Eingang und Steuereingang jeweils miteinander verbunden sind.
- Bei den bevorzugten möglichen Ausführungsformen wird davon ausgegangen, daß man einen ersten Inverter zwischen Ausgang des ersten Addierers und den ersten Eingang des zweiten Addierers einfügt und man einen zweiten Inverter zwischen Ausgang des zweiten Addierers und den ersten Eingang des dritten Addierers einfügt; daß ein dritter Inverter geschaltet ist zwischen Ausgang des zweiten Multiplexers und zweitem Eingang des zweiten Addierers.
- Der Schaltkreis wird außerdem vorzugsweise eine Verbindung zwischen dem Steuereingang des zweiten Multiplexers und dem Übertragungseingang des dritten Addierers in der ersten Ausführungsform umfassen sowie eine Verbindung zwischen dem Steuereingang des zweiten Multiplexers und den Übertragungseingängen des zweiten und des dritten Addierers in der zweiten Ausführungsform umfassen.
- Die Vorschläge der vorliegenden Erfindung lassen sich wie unten mit Bezug auf die speziellen Ausführungsformen beschrieben realisieren, wobei Bezug genommen wird auf die schematischen Darstellungen in Fig. 3 und 4, wobei:
- Fig. 1, wie bereits beschrieben, einen Zirkularzwischenspeicher nach früherer Technik schematisch darstellt;
- Fig. 2, wie bereits beschrieben, einen anderen Zirkularzwischenspeicher nach früherer Technik schematisch darstellt;
- Fig. 3 ein Blockdiagramm einer Ausführungsform eines Steuerschaltkreises eines Zirkularzwischenspeichers gemäß der vorliegenden Erfindung ist;
- Fig. 4 ein Blockdiagramm einer anderen Ausführungsform eines Steuerschaltkreises eines Zwischenspeichers gemäß der vorliegenden Erfindung ist.
- Fig. 3 stellt einen Inkrementierungsschaltkreis 36 gemäß einer ersten Ausführungsform der Erfindung dar, der die Inkrementierung der laufenden Adresse eines Zirkularzwischenspeichers eines elektronischen Speichers zur Erzeugung der folgenden Adresse ermöglicht. Der Schaltkreis umfaßt: einen Additionsschaltkreis 40 zum Zusammenzählen der laufenden Adresse Addr und des Inkrements Inc und zum Erzeugen eines ersten temporären Wertes der nächsten Adresse Nadr1; einen Schaltkreis 51, 56, 63, der die nächste Adresse auf die Basisadresse Ladd/Hadd plus Überschreitung zurücksetzt, wenn die inkrementierte Adresse eine Grenzadresse Hadd/Ladd um eine Zahl überschreitet, die gleich der Überschreitung ist. In dem Schaltkreis 36 für die Berechnung der neuen Adresse ist ein Additionsschaltkreis vorgesehen, der drei Addierer 40, 56, 63 umfaßt, die die laufende Adresse Addr, das Inkrement Inc und die Grenzadresse Hadd/Ladd lesen und einen ersten und einen zweiten temporären Wert der nächsten Adresse Nadr1, Nadr2 und die Differenz zwischen dem ersten temporären Wert Nadr1 für die nächste Adresse und der Grenzadresse angeben, wobei der Inkrementierungsschaltkreis einen Auswahlschaltkreis zum Auswählen eines der zwei temporärer Werte der nächsten Adresse umfaßt, wobei die Auswahl nach dem Vorzeichen der Differenz zwischen dem ersten temporären Wert für die nächste Adresse und der Grenzadresse erfolgt. Die meisten Schaltkreise arbeiten mit vieladrigen Datenbussen. In dem vorliegenden Beispiel geht man von einer Adressenlänge von 16 Bit aus. Die Adressenlänge kann jedoch auch eine beliebige Bitzahl sein.
- Der erste Addierer 40 hat zwei Eingänge 41, 42 und einen Ausgang 43. Der Ausgang 43 dieses Addierers 40 ist mit einem Eingang eines ersten Inverters 45 und einem Eingang (b) 47 eines ersten Multiplexers 49 mit zwei Eingängen verbunden. Ein zweiter Multiplexer 51 mit zwei Eingängen empfängt die höchste Adresse Hadd und die niedrigste Adresse Ladd des Zwischenspeichers über seine Eingänge (b) bzw. (a). Ein dritter Multiplexer 53 mit zwei Eingängen empfängt die niedrigste Adresse Ladd und die höchste Adresse Hadd des Zwischenspeichers über seine Eingänge (b) bzw. (a). Die Auswahleingänge 54, 55 des zweiten und dritten Multiplexers sind zusammengeschaltet und empfangen ein Signal inc-sign. Der Ausgang des ersten Inverters 45 ist mit dem ersten Eingang eines zweiten Addierers mit zwei Eingängen 56 verbunden. Der Ausgang des zweiten Multiplexers 51 ist mit dem zweiten Eingang des zweiten Addierers 56 verbunden, dessen Übertragungseingang 57 über einen Inverter 73 das negierte inc-sign-Signal empfängt und dessen Übertragsausgang 59 mit einem Auswahleingang 60 des ersten Multiplexers 49 verbunden ist. Der Ausgang des Addierers 56 ist mit einem Eingang eines zweiten Inverters 61 verbunden, dessen Ausgang mit einem ersten Eingang 62 eines dritten Addierers mit zwei Eingängen 63 verbunden ist. Dieser Addierer 63 hat einen zweiten Eingang 64, der mit dem Ausgang 65 des dritten Multiplexers 53, einem Übertragseingang 66, der das inc-sign- Signal empfängt, und einem Ausgang 67 verbunden ist, der mit dem Eingang (a) 68 des ersten Multiplexers 49 verbunden ist. Der Ausgang 71 des ersten Multiplexers 49 ist der Schaltkreisausgang, er ist auch mit dem ersten Eingang 41 des ersten Addierers 40 verbunden. Die Signale Inc und inc- sign werden vqn einem Schaltkreis 72 ausgegeben, der die Modifizierung der Polarität des inc-sign und die Größe des Inkrements Inc im Verlauf des Programms ermöglicht.
- Jeder der Addierer, Multiplexer und Invertierer besteht aus einer gewissen Anzahl, 16 in diesem Fall, an Schaltkreisen für ein Bit, die identisch sind und geeignet miteinander verbunden sind.
- Die Multiplexer 49, 51, 53 übertragen die Daten von ihrem Eingang (b) zu ihrem Ausgang, wenn die jeweiligen Auswahleingänge im Zustand LOW bleiben, und übertragen die an ihrem Eingang (a) anliegenden Daten an ihren Ausgang, wenn die jeweiligen Auswahleingänge auf dem Zustand HIGH bleiben.
- Das Signal inc-sign gibt an, daß die laufende Adresse inkrementiert oder dekrementiert werden muß. Es ist im zustand LOW bei einem positiven Inkrement und im Zustand HIGH bei einem negativen Inkrement (Dekrement).
- Wenn man als Beispiel den Fall mit positivem Inkrement heranzieht, ist das Signal inc-sign im Zustand LOW. Dieses Signal, das an den Auswahleingängen des zweiten und dritten Multiplexers 51, 53 anliegt, veranlaßt, daß die Daten an den Eingängen (b) jedes Multiplexers an deren jeweilige Ausgänge weitergeleitet werden. Die maximale Adresse des Zwischenspeichers Hadd wird so an den zweiten Ausgang des Addierers 56 ausgegeben, und die minimale Adresse des Zwischenspeichers Ladd wird an den zweiten Eingang 64 des Addierers 63 ausgegeben. Das gesamte Inc mit Vorzeichen, das den notwendigen Schritt zwischen laufender Adresse Addr und der nächsten Adresse Nadr darstellt, wird durch einen Auswahlschaltkreis 72 ausgegeben, und zwar jeweils an den zweiten Eingang 42 des ersten Addierers 40 und den Auswahleingang des Multiplexers 51 und 53: der Schaltkreis 72 trennt in dem Inkrement-Signal den Absolutwert und das Vorzeichen. Die laufende Adresse Addr wird an den ersten Eingang 41 ausgegeben. Der Ausgang 43 gibt danach einen ersten temporären Wert der nächsten Adresse Nadr1 aus, der die laufende Adresse Addr plus Inkrement Inc am Eingang (b) 47 des ersten Multiplexers 49 ist. Also
- Nadr1 = Addr + Inc.
- Der zweite Addierer 56 empfängt über seinen ersten Eingang das Inverse des ersten temporären Wertes der nächsten Adresse not (Nadr1) vom ersten Inverter 45 und die maximale Adresse Hadd des Zwischenspeichers über seinen zweiten Eingang. Der Übertragseingang 57 des zweiten Addierers 56 wird durch das Signal not(inc-sign) auf HIGH gehalten, und daher wird ein Übertragsbit dem Ausgang hinzugefügt. Das Hinzufügen von diesem entspricht dem Abziehen des ersten temporären Wertes der nächsten Adresse Nadr1 von der Maximaladresse Hadd des Zwischenspeichers:
- not(Hadr1) + Hadd + 1 = (-Nadr1 -1) + 1 + Hadd
- = Hadd - Nadr1 - 1 + 1
- = Hadd - Nadr1.
- Tatsächlich folgt aus Binärarithmetik mit einer festen Anzahl an Bits: not(x) + 1 = -x.
- Der Ausgang dieses zweiten Addierers 56 wird an den zweiten Inverter 61 und dann als invertierter Ausgang des zweiten Addierers an den ersten Eingang 62 des dritten Addierers 63 ausgegeben, über dessen zweiten Eingang 64 die niedrigste Adresse Ladd des Zwischenspeichers eingelesen wird. Diese werden hinzugefügt, ohne Übertragsbit, da sein Eingang 66 das Signal inc-sign im Zustand LOW einliest. Das am Ausgang des dritten Addierers 63 verfügbare Ergebnis ist der zweite temporäre Wert für die nächste Adresse Nadr2, der am Eingang (a) des Multiplexers 49 anliegt. Das Ergebnis dieser Addition ist das folgende:
- Nadr2 = not(Hadd - Nadr1) + Ladd;
- Nadr2 = -(Hadd - Nadr1) - 1 + Ladd;
- Nadr2 = - Hadd + Nadr1 - 1 + Ladd;
- Nadr2 = Nadr1 - Hadd + Ladd - 1;
- Nadr2 = Addr + Inc - Hadd + Ladd - 1.
- Die zwei möglichen nächsten Adressen werden jetzt ausgegeben. Der erste temporäre Wert der nächsten Adresse Nadr1 muß verwendet werden, wenn sich das Inkrement ergibt, ohne den höchsten Adressenwert des Zwischenspeichers zu überschreiten, der zweite temporäre Wert der nächsten Adresse wird verwendet, wenn das Inkrement den ersten temporären Wert der nächsten Adresse den oberen Adressengrenzwert des Zwischenspeichers übersteigen läßt.
- Die Wahl des temporären Wertes der nächsten zu verwendenden Adresse erfolgt über den Auswahleingang 60 des ersten Multiplexers 49. Er empfängt ein Signal vom Übertragsausgang 59 des zweiten Addierers 56. Wenn der erste temporäre Wert der nächsten Adresse Nadr1 niedriger als die maximale Adresse des Zwischenspeichers Hadd ist, so wird dieser Übertragsausgang in niedrigem Zustand sein. Das wird dazu führen, daß der erste Multiplexer 49 die verfügbaren Daten an seinem Eingang (b) nämlich den ersten temporären Wert der nächsten Adresse Nadr1, an seinen Ausgang 71, sowie zum Zeiger und zum ersten Addierer 40 übertragen wird. Wenn jedoch der erste temporäre Wert der nächsten Adresse Nadr1 größer als die maximale Adresse Hadd des Zwischenspeichers ist, wird der Übertragsausgang 59 im Zustand HIGH sein, da sich eine negative Zahl aus der Addition ergeben wird. Dieses wird dazu führen, daß der erste Multiplexer 49 die an seinem Eingang (a) anliegenden Daten, nämlich den zweiten temporären Wert der nächsten Adresse Nadr2 über seinen Ausgang an den Zeiger und an den ersten Addierer 40 ausgeben wird.
- So wird die erforderliche Spezifizierung erfüllt, indem die Adresse auf den unteren Grenzwert plus Überschreitung zurückgesetzt wird, wenn die an dem Zeiger übertragene nächste Adresse die obere Grenze Hadd überschreitet.
- Desgleichen wird für den Fall, daß negative Inkremente verwendet werden, das Signal inc-sign im Zustand HIGH sein. Dieses Signal, das an den Auswahleingängen des zweiten und dritten Multiplexers 51, 53 anliegt, läßt die Daten an den Eingängen (a) jedes Multiplexers zu deren jeweiligen Ausgängen durch. Die minimale Adresse des Zwischenspeichers Ladd wird so an den zweiten Eingang des Addierers 56 ausgegeben, und die maximale Adresse des Zwischenspeichers Hadd wird an den zweiten Eingang 64 des Addierers 63 ausgegeben. Das gesamte Inc mit Vorzeichen, das den notwendigen Übergang zwischen laufender Adresse Addr und der nächsten Adresse Nadr darstellt, wird an den zweiten Eingang 42 des ersten Addierers 40 ausgegeben. Die laufende Adresse Addr wird an den ersten Eingang 41 ausgegeben. Der Ausgang 43 gibt in der Folge einen ersten temporären Wert der nächsten Adresse Nadr1 aus, der die laufende Adresse Addr plus Inkrement Inc am Eingang (b) 47 des ersten Multiplexers 49 ist. Also:
- Nadr1 = Addr + Inc.
- Der zweite Addierer 56 empfängt über seinen ersten Eingang das Inverse des ersten temporären Wertes der nächsten Adresse not(Nadr1) vom ersten Inverter 45 und die minimale Adresse Ladd des Zwischenspeichers über seinen zweiten Eingang. Der Übertragseingang 57 des zweiten Addierers 56 wird durch das Signal not(inc-sign) auf LOW gehalten, und daher wird kein Übertragsbit dem Ausgang zugefügt. Das Zufügen dieses entspricht dem Abziehen des ersten temporären Wertes der nächsten Adresse Nadr1 von der minimalen Adresse Ladd des Zwischenspeichers weniger 1:
- not(Nadr1) + Ladd = (- Nadr1 - 1) + Ladd
- = Ladd - Nadr1 - 1.
- Der Ausgang dieses zweiten Addierers 56 liegt am zweiten Inverter 61 und dann als invertierter Ausgang des zweiten Addierers am ersten Eingang 62 des dritten Addierers 63 an, dessen zweiter Eingang 64 die höchste Adresse Hadd des Zwischenspeichers empfängt. Diese werden zusammengefügt, mit einem Übertragsbit, da der Eingang 66 das Signal inc-sign im Zustand HIGH empfängt, und das Ergebnis ist der zweite temporäre Wert der nächsten Adresse Nadr2, der an den Eingang (a) des Multiplexers 49 ausgegeben wird. Das Ergebnis dieser Addition ist das folgende:
- Nadr2 = not(Ladd - Nadr1 -1) + Hadd + 1;
- Nadr2 = -Ladd + Nadr1 + 1 - 1 + Hadd + 1;
- Nadr2 = Nadr1 - Ladd + Hadd + 1;
- Nadr2 = Addr + Inc + Hadd + Ladd + 1.
- Die zwei nächsten möglichen Adressen werden jetzt ausgegeben. Der erste temporäre Wert der nächsten Adresse Nadr1 muß verwendet werden, wenn sich das Dekrement ergeben kann, ohne den niedrigsten Grenzwert der Adresse des Zwischenspeichers zu überschreiten, der zweite temporäre Wert der nächsten Adresse wird verwendet, wenn das Dekrement den ersten temporären Wert der nächsten Adresse die untere Grenzadresse des Zwischenspeichers unterschreiten läßt.
- Die Wahl des temporären Wertes der zu verwendenden nächsten Adresse erfolgt über den Auswahleingang 60 des ersten Multiplexers 49. Er empfängt ein Signal vom Übertragsausgang 59 des zweiten Addierers 56. Wenn der erste temporäre Wert der nächsten Adresse Nadr1 größer als der untere Grenzwert für die Adresse Ladd des Zwischenspeichers ist, wird der Übertragsausgang im niedrigen Zustand sein. Dies wird dazu führen, daß der erste Multiplexer 49 den ersten temporären Wert der nächsten Adresse Nadr1, der an seinem Eingang (b) anliegt, an seinen Ausgang übertragen wird, sowie an den Zeiger und an den ersten Addierer 40. Wenn jedoch der erste temporäre Wert der nächsten Adresse Nadr1 kleiner als die minimale Adresse Ladd des Zwischenspeichers ist, wird der Übetragsausgang 59 im Zustand HIGH sein, da sich eine negative Zahl aus der Addition ergeben wird. Dies wird dazu führen, daß der erste Multiplexer 49 den zweiten temporären Wert der nächsten Adresse Nadr2 an seinem Eingang (a) zum Zeiger und zum ersten Addierer 40 übertragen wird.
- Somit wird gleichermaßen die erforderliche Spezifikation erfüllt, indem die Adresse auf den oberen Grenzwert minus überschreitung zurückgesetzt wird, wenn die an den Zeiger übertragene nächste Adresse kleiner als der untere Grenzwert Ladd ist.
- Bei dieser Ausführungsform kann die Geschwindigkeit der Bearbeitung durch Verzögerung auf dem kritischen Pfad beschränkt sein. Der kritische Pfad ist der Pfad der Daten, der der letzte bei der Bestimmung des erforderlichen Ergebnisses für die Ausgabe der nächsten Adresse an den Zeiger ist. Für den Schaltkreis in Fig. 3 durchläuft der kritische Pfad den ersten Addierer 40, den ersten Inverter 45, den zweiten Addierer 56, den zweiten Inverter 61, den dritten Addierer 63 und den ersten Multiplexer 49.
- Bei der Überprüfung der Ableitung des Ausgangs des dritten Addierers 63 kann man zu einem vereinfachten Schaltkreis mit einem reduzierten kritischen Pfad gelangen. Der Ausgang des dritten Addierers 63 für den Fall der positiven Inkrementierung muß sein:
- Nadr2 = Nadr1 - Hadd + Ladd - 1, was ergibt:
- Nadr2 = Nadr1 + not(Hadd) + Ladd.
- In dem Fall der negativen Inkrementierung muß dieser Ausgang sein:
- Nadr2 = Nadr1 - Ladd + Hadd + 1, was ergibt:
- Nadr2 = Nadr1 + Hadd + not(Ladd) + 2.
- Fig. 4 zeigt einen Schaltkreis, der diese Gleichungen wiedergibt, mit einem anderen Schaltkreis, um den zweiten temporären Wert für die nächste Adresse Nadr2 zu erhalten. Dieser Schaltkreis ist im wesentlichen identisch mit dem in Fig. 3, und die identischen Funktionen haben identische Bezugszeichen. Der erste und der zweite Inverter 45, 61 sind fortgefallen, ein dritter Inverter 81 ist zwischen dem Ausgang des zweiten Multiplexers 51 und dem zweiten Eingang des zweiten Addierers 56 eingefügt. Die Übertragseingänge 57, 66 des zweiten und dritten Addierers 56, 63 sind jeweils mit dem inc-sign-Signal verbunden. Die Eingänge (a) und (b) am ersten Multiplexer 49 sind invertiert.
- Für den Fall der positiven Inkrementierung und wenn das inc-sign-Signal auf LOW liegt, fügt der zweite Addierer 56 den ersten temporären Wert der nächsten Adresse Nadr1 vom Ausgang 43 des ersten Addierers 40 zu dem Inversen der höchsten Adresse des Zwischenspeichers not (Hadd) hinzu, wobei das inc-sign-Signal im Zustand LOW am Übertragseingang das Hinzufügen eines Übertragsbits verhindert. Der Ausgang dieses zweiten Addierers ist daher:
- Nadr1 + not(Hadd) = Nadr1 - Hadd - 1.
- Der dritte Addierer 63 fügt das Ergebnis dieser Addition zu der niedrigsten Adresse Ladd des Zwischenspeichers hinzu. Das inc-sign-Signal im Zustand LOW am Übertragseingang sorgt dafür, daß kein Übertragsbit hinzugefügt wird, und der Ausgang des dritten Addierers 63 ist daher:
- Nadr2 = (Nadr1 - Hadd - 1) + Ladd;
- Nadr2 = Nadr1 - Hadd + Ladd - 1,
- was identisch mit dem entsprechenden Ergebnis des Schaltkreises in Fig. 3 ist.
- Für den Fall der negativen Inkrementierung und wenn das inc-sign-Signal auf HIGH liegt, fügt der zweite Addierer 56 dem ersten temporären Wert der nächsten Adresse Nadr1 von dem Ausgang 43 des ersten Addierers 40 das Inverse der niedrigsten Adresse des Zwischenspeichers not (Ladd) hinzu, wobei das inc-sign-Signal im Zustand HIGH am Übertragseingang dem Ausgang Eins hinzufügt. Der Ausgang des zweiten Addierers ist daher:
- Nadr1 + not (Ladd);
- Nadr1 - Ladd.
- Der dritte Addierer 63 fügt dem Ergebnis dieser Addition die höchste Adresse Hadd des Zwischenspeichers hinzu. Das inc-sign-Signal im Zustand HIGH am Übertragseingang veranlaßt, daß ein Übertragsbit hinzugefügt wird, und der Ausgang des dritten Addierers 63 ist also:
- Nadr2 = (Nadr1 - Ladd) + Hadd + 1;
- Nadr2 = Nadr1 - Ladd + Hadd + 1,
- was identisch dem entsprechenden Ergebnis des Schaltkreises in Fig. 3 ist.
- Jedoch ändert sich in diesem Fall die Funktion des ersten Multiplexers. Wenn der erste temporäre Wert der Adresse den oberenadressengrenzwert Hadd nicht überschreitet, so ist das Ergebnis der durch den zweiten Inverter ausgeführten Addition negativ, was dazu führt, daß ein Übertragsausgangssignal 59 mit hohem Pegel am Steuereingang des Multiplexers 49 anliegt. Wenn der erste temporäre Wert der Adresse den oberen Adressengrenzwert überschreitet, ist das Ergebnis der Addition positiv, und der Übertragsausgang 59 ist in niedrigem Zustand. Dies ist das Gegenteil von der Situation, wie sie mit Bezug auf Fig. 3 beschrieben wurde. Das rührt daher, daß die Eingänge des dritten Inverters 49 invertiert sind: der erste temporäre Wert der nächsten Adresse in Nadr1 wird an den Eingang (a) angelegt, und der zweite temporäre Wert der nächsten Adresse Nadr2 wird an den Eingang (b) angelegt.
- In dem Schaltkreis ist wenigstens ein Inverter notwendig, und die Länge des kritischen Pfades wird reduziert. Der Eingang und der Ausgang des Inverters 81 sind tatsächlich konstant, sie werden nur geändert, wenn sich die Richtung der Inkrementierung ändert, was angezeigt wird durch die Änderung des Vorzeichens des inc-sign-Signals, oder für den Fall daß eine der Grenzadressen Ladd, Hadd während des Betriebs des Schaltkreises geändert wird. Der kritische Pfad ist um zwei Verzögerungen durch Inverter verkürzt. Dieses stellt einen großen Zeitgewinn dar, da die Verwendung von Adressengeneratoren bei Zwischenspeicherentwicklungen mit Schaltkreisen zunächst darauf abzielt, die Arbeitsgeschwindigkeit gegenüber Software-Installationen zu verbessern.
- Die Erfindung erfüllt daher die Aufgaben, einen Adressierungsschaltkreis anzugeben, der mit einfachem Material entwickelt wurde und schnell ist, der sich fur einen Zirkularzwischenspeicher eignet, ohne Einschränkungen in bezug auf die Anfangs- und End-Adressen oder die Größe des Zwischenspeichers oder die Größe oder das Vorzeichen der Inkremente zwischen den aufeinanderfolgenden Adressen zur Folge zu haben. Alle verwendeten Parameter - obere und untere Adressengrenzwerte, Größe und Vorzeichen des Inkrements - können während des Betriebs des Schaltkreises beliebig geändert werden. Die Arbeitsgeschwindigkeit wird optimiert durch Verwendung von einfachen Funktionsblöcken, indem Inverter auf dem kritischen Pfad herausgenommen werden, indem entschieden wird, welcher von zwei temporären Werten der nächsten Adresse verwendet wird, bevor der temporäre Wert der nächsten Adresse berechnet wird, und weil die Konfiguration bei positiver Inkrementierung oder negativer Inkrementierung mittels zweitem und drittem Multiplexer erfolgt, hier noch außerhalb des kritischen Pf ades. Der Schaltkreis verwendet nur zwei Funktionsblöcke unterschiedlichen Typs - einen Addierer mit zwei Eingängen und einen Multiplexer mit zwei Eingängen plus einer Gruppe von Invertern. Dieses vereinfacht die Optimierung des Schaltkreises, weil es nur notwendig ist, zwei einfache Funktionsblöcke zu optimieren, was es erlaubt, höchste Arbeitsgeschwindigkeiten zu erzielen und die Anpassung des Schaltkreises an Modifizierungen des Verlaufs des Herstellungsprozesses zu vereinfachen. Die Erweiterung oder die Reduzierung des Schaltkreises, um ihn an eine beliebige Adressenlänge anzupassen, ist einfach, indem elementare Ein-Bit-Addierer, Multiplexer und parallel dazu Inverter hinzugefügt oder weggenommen werden.
- Obgleich die Erfindung beschrieben wurde mit Bezug auf zwei spezielle Ausführungsformen, sind zahlreiche Ausführungsformen möglich. Zum Beispiel die Verwendung von anderen Adressenlängen als 16, das Fortlassen des zweiten und dritten Multiplexers, wenn ein einziges positives oder negatives Inkrementierungsvorzeichen ausreicht; und die Integration anderer Multiplexer, um den Steuerschaltkreis für zwei Zirkularzwischenspeicher oder mehr auszulegen.
Claims (11)
1. Schaltkreis zur Inkrementierung mit einem Inkrement
(Inc) einer laufenden Adresse (Addr) eines
Pufferumlaufspeichers in einem elektronischen Speicher, wobei
diese laufende Adresse sich zwischen einer unteren
Grenzadresse und einer oberen Grenzadresse (Ladd,
Hadd) befindet, wobei das Inkrement (Inc) es
ermöglicht, die nächste Adresse zu bilden, welcher
Schaltkreis umfaßt:
- einen Additionssöhaltkreis (40), um die laufende
Adresse dem Inkrement hinzuzufügen und um einen
ersten temporären Wert der nächsten Adresse (Nadr1)
zu erzeugen;
gekennzeichnet durch
- einen Schaltkreis (45, 56, 61, 49), der als zweiten
temporären Wert der nächsten Adresse (Nadr2) eine
erste Grenzadresse (Ladd) ausgibt, die beim
Überschreiten, wenn der erste temporäre Wert der
nächsten Adresse (Nadr1) die andere Grenzadresse (Hadd)
überschreitet, um eine der besagten Überschreitung
gleiche Zahl modifiziert ist, wobei diese Schaltung
umfaßt:
- einen zweiten Addierer (56), der den ersten
temporären Wert der nächsten Adresse und eine erste
Grenzadresse einliest und einen Wert (62) erzeugt,
der die Differenz zwischen dem ersten temporären
Wert der nächsten Adresse und der ersten
Grenzadresse angibt, und
- einen dritten Addierer (63), der die zweite
Grenzadresse und den Wert, der die Differenz zwischen
dem ersten temporären Wert der nächsten Adresse und
der ersten Grenzadresse darstellt, einliest, und
der den zweiten temporären Wert der nächsten
Adresse erzeugt,
- einen ersten Multiplexer (49), der den ersten und
zweiten temporären Wert der Adresse über zwei
Eingänge einliest, und
- einen Selektionsschaltkreis (59), der mit einem
Befehlseingang des ersten Multiplexers verbunden ist
und es erlaubt, als nächste Adresse einen der
beiden temporären Werte der nächsten Adresse
einzulesen, wobei die Funktion des Überschreitens der
besagten anderen Grenzadresse durch den besagten
zweiten Addierer (56) erkannt wird.
2. Schaltkreis nach Anspruch 1, in welchem Vorrichtungen
(72) vorgesehen sind, um das Vorzeichen und die Größe
des Inkrements sowie die Grenzadressen während des
Betriebs des Schaltkreises auszuwählen.
3. Schaltkreis nach Anspruch 1 oder Anspruch 2, dadurch
gekennzeichnet, daß die Auswahl der nächsten Adresse
entsprechend dem Vorzeichen des Wertes erfolgt, der
die Differenz zwischen dem ersten temporären Wert der
nächsten Adresse und der ersten Grenzadresse
darstellt.
4. Schaltkreis nach einem der Ansprüche 1 bis 3, dadurch
gekennzeichnet, daß der zweite und dritte Addierer
ein Signal über einen Übertragungseingang unter
Angabe des Vorzeichens der Inkrementierung einlesen.
5. Schaltkreis nach einem der Ansprüche 1 bis 4, dadurch
gekennzeichnet, daß einer der Eingänge des zweiten
Addierers mit dem Ausgang eines Inverters verbunden
ist.
6. Schaltkreis nach einem der Ansprüche 1 bis 4, dadurch
gekennzeichnet, daß einer der Eingänge des zweiten
Addierers und einer der Eingänge des dritten
Addierers jeweils mit dem Ausgang eines ersten und eines
zweiten Inverters verbunden sind.
7. Schaltkreis nach einem der Ansprüche 1 bis 6, in
welchem ein Inverter (45) zwischen Ausgang (43) des
ersten Addierers (40) und dem ersten Eingang des
zweiten Addierers (56) eingesetzt ist, und in welchem ein
zweiter Inverter (61) zwischen dem Ausgang des
zweiten Addierers und dem ersten Eingang des dritten
Addierers (63) eingesetzt ist.
8. Schaltkreis nach einem der Ansprüche 1 bis 7, der
außerdem einen zweiten (51) und einen dritten (53)
Multiplexer umfaßt, deren Ausgänge verbunden sind mit
den zweiten Eingängen des zweiten (56) und des
dritten (63) Addierers, und deren erster, zweiter Eingang
und Befehlseingang jeweils zusammengeschaltet sind.
9. Schaltkreis nach einem der Ansprüche 7 oder 8, der
unter anderem einen dritten Inverter (81) umfaßt, der
zwischen den Ausgang des zweiten Multiplexers und dem
zweiten Eingang des zweiten Addierers geschaltet ist.
10. Schaltkreis nach Anspruch 9, der außerdem eine
Verbindung zwischen dem Befehlseingang (54) des zweiten
Multiplexers und dem Übertragungseingang (66) des
dritten Addierers (63) umfaßt.
11. Schaltkreis nach Anspruch 8, soweit sich dieser auf
Anspruch 7 bezieht, der außerdem eine Verbindung
zwischen dem Befehlseingang (54) des zweiten
Multiplexers (51) und den Übertragungseingängen (57, 66) des
zweiten und dritten Addierers umfaßt.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR9403861A FR2718262B1 (fr) | 1994-03-31 | 1994-03-31 | Mémoire tampon à adressage modulo. |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE69500074D1 DE69500074D1 (de) | 1996-11-28 |
| DE69500074T2 true DE69500074T2 (de) | 1997-03-13 |
Family
ID=9461659
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE69500074T Expired - Fee Related DE69500074T2 (de) | 1994-03-31 | 1995-03-23 | Modulo-adressierter Pufferspeicher |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US5692190A (de) |
| EP (1) | EP0676689B1 (de) |
| DE (1) | DE69500074T2 (de) |
| FR (1) | FR2718262B1 (de) |
Families Citing this family (78)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5418918A (en) * | 1993-09-10 | 1995-05-23 | Compaq Computer Corp. | Scanning initial CD-ROM sectors for a boot record and executing said boot record to load and execute floppy disk image corresponding to the existing floppy drive |
| US5864698A (en) * | 1994-08-24 | 1999-01-26 | Packard Bell Nec | Disk based bios |
| US5659700A (en) * | 1995-02-14 | 1997-08-19 | Winbond Electronis Corporation | Apparatus and method for generating a modulo address |
| GB2309104B (en) * | 1996-01-11 | 2000-06-07 | Ibm | Preloading software onto a computer system |
| US5991542A (en) * | 1996-09-13 | 1999-11-23 | Apple Computer, Inc. | Storage volume handling system which utilizes disk images |
| KR100291267B1 (ko) * | 1996-12-23 | 2001-09-17 | 윤종용 | 부트가능한데이터시디롬디스크제조시스템,그제조방법및그에의해제조딘시디롬디스크 |
| JP3196107B2 (ja) * | 1997-03-27 | 2001-08-06 | 日本電気エンジニアリング株式会社 | データ交換システム |
| US6049858A (en) * | 1997-08-27 | 2000-04-11 | Lucent Technologies Inc. | Modulo address generator with precomputed comparison and correction terms |
| US6047364A (en) * | 1997-08-27 | 2000-04-04 | Lucent Technologies Inc. | True modulo addressing generator |
| JPH11167493A (ja) * | 1997-12-02 | 1999-06-22 | Nec Corp | 情報処理装置およびその拡張装置の立ち上げ方法 |
| JP3681880B2 (ja) * | 1998-01-28 | 2005-08-10 | 富士通株式会社 | リムーバブル媒体の処理装置 |
| US5968174A (en) * | 1998-03-19 | 1999-10-19 | Bay Networkds, Inc. | Method and apparatus for implementing a 32-bit operating system which supports 16-bit code |
| US6397318B1 (en) * | 1998-04-02 | 2002-05-28 | Cirrus Logic, Inc. | Address generator for a circular buffer |
| US6158002A (en) * | 1998-08-14 | 2000-12-05 | Adaptec, Inc. | Method and apparatus of boot device switching by a floppy disk |
| US6304965B1 (en) | 1998-09-29 | 2001-10-16 | Phoenix Technologies Ltd. | Method and device for booting a CD-ROM from a single disk image having multiple emulations |
| US6308264B1 (en) * | 1998-09-30 | 2001-10-23 | Phoenix Technologies Ltd. | Dual use master boot record |
| JP3564395B2 (ja) * | 1998-11-27 | 2004-09-08 | 松下電器産業株式会社 | アドレス生成装置および動きベクトル検出装置 |
| US6370614B1 (en) | 1999-01-26 | 2002-04-09 | Motive Power, Inc. | I/O cache with user configurable preload |
| US6463509B1 (en) | 1999-01-26 | 2002-10-08 | Motive Power, Inc. | Preloading data in a cache memory according to user-specified preload criteria |
| JP2000267818A (ja) * | 1999-03-18 | 2000-09-29 | Matsushita Electric Ind Co Ltd | リムーバブルデバイスでのパーティション実現方法 |
| US6715043B1 (en) | 1999-03-19 | 2004-03-30 | Phoenix Technologies Ltd. | Method and system for providing memory-based device emulation |
| US6415382B1 (en) | 1999-04-30 | 2002-07-02 | Adaptec, Inc. | Hard disk bootstrap redirection |
| US6519659B1 (en) | 1999-06-18 | 2003-02-11 | Phoenix Technologies Ltd. | Method and system for transferring an application program from system firmware to a storage device |
| US6438750B1 (en) | 1999-06-18 | 2002-08-20 | Phoenix Technologies Ltd. | Determining loading time of an operating system |
| US6449682B1 (en) | 1999-06-18 | 2002-09-10 | Phoenix Technologies Ltd. | System and method for inserting one or more files onto mass storage |
| US6405309B1 (en) | 1999-06-18 | 2002-06-11 | Phoenix Technologies Ltd. | Method and apparatus for creating and deploying smaller Microsoft Windows applications for automatic configuration of a computing device |
| US6578142B1 (en) | 1999-06-18 | 2003-06-10 | Phoenix Technologies, Ltd. | Method and apparatus for automatically installing and configuring software on a computer |
| US6457122B1 (en) | 1999-06-18 | 2002-09-24 | Phoenix Technologies Ltd. | Fault tolerant process for the delivery of programs to writeable storage device utilizing pre-operating system software/firmware |
| US6373498B1 (en) | 1999-06-18 | 2002-04-16 | Phoenix Technologies Ltd. | Displaying images during boot-up and shutdown |
| US6542160B1 (en) | 1999-06-18 | 2003-04-01 | Phoenix Technologies Ltd. | Re-generating a displayed image |
| US6477642B1 (en) | 1999-06-18 | 2002-11-05 | Phoenix Technologies Ltd. | Method and apparatus for extending BIOS control of screen display beyond operating system boot process |
| US6401202B1 (en) | 1999-06-18 | 2002-06-04 | Phoenix Technologies Ltd. | Multitasking during BIOS boot-up |
| US6486883B1 (en) | 1999-06-18 | 2002-11-26 | Phoenix Technologies, Ltd. | Apparatus and method for updating images stored in non-volatile memory |
| US6453469B1 (en) | 1999-06-18 | 2002-09-17 | Phoenix Technologies Ltd. | Method and apparatus to automatically deinstall an application module when not functioning |
| US6473855B1 (en) | 1999-06-18 | 2002-10-29 | Phoenix Technologies Ltd. | Method and apparatus for providing content on a computer system based on usage profile |
| US6374338B1 (en) * | 1999-06-25 | 2002-04-16 | International Business Machines Corporation | Method for performing configuration tasks prior to and including memory configuration within a processor-based system |
| AU7035800A (en) * | 1999-09-08 | 2001-04-10 | Massana Research Limited | An address generation unit |
| US6578034B1 (en) * | 1999-09-30 | 2003-06-10 | International Business Machines Corporation | Method and system for a distributed hidden database across a plurality of computer media |
| US6931522B1 (en) * | 1999-11-30 | 2005-08-16 | Microsoft Corporation | Method for a computer using the system image on one of the partitions to boot itself to a known state in the event of a failure |
| US6487656B1 (en) | 1999-12-10 | 2002-11-26 | Phoenix Technologies Ltd. | System and method for providing functionalities to system BIOS |
| US6782447B2 (en) * | 1999-12-17 | 2004-08-24 | Koninklijke Philips Electronics N.V. | Circular address register |
| US6252821B1 (en) * | 1999-12-29 | 2001-06-26 | Intel Corporation | Method and apparatus for memory address decode in memory subsystems supporting a large number of memory devices |
| US20050160213A1 (en) * | 2004-01-21 | 2005-07-21 | Chen Ben W. | Method and system for providing a modular server on USB flash storage |
| US7668938B1 (en) | 2000-01-14 | 2010-02-23 | Microsoft Corporation | Method and system for dynamically purposing a computing device |
| US8612553B2 (en) * | 2000-01-14 | 2013-12-17 | Microsoft Corporation | Method and system for dynamically purposing a computing device |
| US6880048B1 (en) * | 2000-06-08 | 2005-04-12 | Palm, Source, Inc. | Method and apparatus for fault-tolerant update of flash ROM contents |
| US6647484B1 (en) * | 2000-09-19 | 2003-11-11 | 3 Dsp Corporation | Transpose address mode in general purpose DSP processor |
| US20020152397A1 (en) * | 2001-04-06 | 2002-10-17 | Mckay Drew | Virtual investigator |
| US6985986B2 (en) * | 2001-06-01 | 2006-01-10 | Microchip Technology Incorporated | Variable cycle interrupt disabling |
| US7467178B2 (en) | 2001-06-01 | 2008-12-16 | Microchip Technology Incorporated | Dual mode arithmetic saturation processing |
| US7007172B2 (en) | 2001-06-01 | 2006-02-28 | Microchip Technology Incorporated | Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection |
| US7003543B2 (en) * | 2001-06-01 | 2006-02-21 | Microchip Technology Incorporated | Sticky z bit |
| US6952711B2 (en) | 2001-06-01 | 2005-10-04 | Microchip Technology Incorporated | Maximally negative signed fractional number multiplication |
| US7020788B2 (en) | 2001-06-01 | 2006-03-28 | Microchip Technology Incorporated | Reduced power option |
| US20020184566A1 (en) | 2001-06-01 | 2002-12-05 | Michael Catherwood | Register pointer trap |
| US6604169B2 (en) * | 2001-06-01 | 2003-08-05 | Microchip Technology Incorporated | Modulo addressing based on absolute offset |
| US6937084B2 (en) | 2001-06-01 | 2005-08-30 | Microchip Technology Incorporated | Processor with dual-deadtime pulse width modulation generator |
| US6934728B2 (en) | 2001-06-01 | 2005-08-23 | Microchip Technology Incorporated | Euclidean distance instructions |
| US6975679B2 (en) | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Configuration fuses for setting PWM options |
| US6976158B2 (en) | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Repeat instruction with interrupt |
| CN1122281C (zh) * | 2001-06-30 | 2003-09-24 | 深圳市朗科科技有限公司 | 一种多功能半导体存储装置 |
| US7421411B2 (en) | 2001-07-06 | 2008-09-02 | Nokia Corporation | Digital rights management in a mobile communications environment |
| US6993643B2 (en) * | 2001-12-03 | 2006-01-31 | International Business Machines Corporation | Method and system of dynamic video driver selection on a bootable CD via symbolic links |
| US7411694B2 (en) * | 2002-01-21 | 2008-08-12 | Ricoh Company, Ltd. | Data conversion apparatus for and method of data conversion for image processing |
| GB2385688A (en) * | 2002-02-26 | 2003-08-27 | Nec Technologies | Minimising power loss in addressing memory |
| US7478248B2 (en) * | 2002-11-27 | 2009-01-13 | M-Systems Flash Disk Pioneers, Ltd. | Apparatus and method for securing data on a portable storage device |
| US6938104B2 (en) * | 2003-08-12 | 2005-08-30 | Arco Computer Products, Inc. | Removable hard drive assembly, computer with a removable hard disk drive, method of initializing and operating a removable hard drive |
| US7475221B1 (en) * | 2004-01-06 | 2009-01-06 | Altera Corporation | Circular buffer addressing |
| US7287154B1 (en) * | 2004-02-02 | 2007-10-23 | Trimble Navigation Limited | Electronic boot up system and method |
| US20060075184A1 (en) * | 2004-10-01 | 2006-04-06 | Jen-Ying Chen | Synchronous\asynchronous memory device with single port memory unit |
| US7305539B2 (en) * | 2004-10-14 | 2007-12-04 | Sandisk Il Ltd. | Adaptive booting from mass storage device |
| US8972545B2 (en) | 2004-11-02 | 2015-03-03 | Dell Products L.P. | System and method for information handling system image network communication |
| US8949388B2 (en) | 2005-04-25 | 2015-02-03 | Dell Products L.P. | System and method for information handling system image network communication |
| US7849125B2 (en) | 2006-07-07 | 2010-12-07 | Via Telecom Co., Ltd | Efficient computation of the modulo operation based on divisor (2n-1) |
| US8695087B2 (en) * | 2008-04-04 | 2014-04-08 | Sandisk Il Ltd. | Access control for a memory device |
| TWI359378B (en) * | 2008-07-03 | 2012-03-01 | Asustek Comp Inc | Booting method of computer system |
| US8762769B2 (en) * | 2011-08-25 | 2014-06-24 | Hewlett-Packard Development Company, L.P. | Downloading a disk image from a server with a reduced corruption window |
| US10180829B2 (en) * | 2015-12-15 | 2019-01-15 | Nxp Usa, Inc. | System and method for modulo addressing vectorization with invariant code motion |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4202035A (en) * | 1977-11-25 | 1980-05-06 | Mcdonnell Douglas Corporation | Modulo addressing apparatus for use in a microprocessor |
| US4800524A (en) * | 1985-12-20 | 1989-01-24 | Analog Devices, Inc. | Modulo address generator |
| CA2010591C (en) * | 1989-10-20 | 1999-01-26 | Phillip M. Adams | Kernels, description tables and device drivers |
| SE465393B (sv) * | 1990-01-16 | 1991-09-02 | Ericsson Telefon Ab L M | Adressprocessor foer en signalprocessor |
| US5018095A (en) * | 1990-02-15 | 1991-05-21 | Seagate Technology, Inc. | Universal disk drive type emulation for IBM PC-AT computers |
| US5136711A (en) * | 1990-10-17 | 1992-08-04 | Ast Research | System for multiple access hard disk partitioning |
| EP0555382B1 (de) * | 1990-11-02 | 1996-03-27 | Analog Devices, Inc. | Adressengenerator für einen ringpuffer |
| AU634431B2 (en) * | 1990-11-27 | 1993-02-18 | Kabushiki Kaisha Toshiba | Japanese emulator |
| US5448706A (en) * | 1992-05-13 | 1995-09-05 | Sharp Microelectronics Technology, Inc. | Address generator for multi-channel circular-buffer style processing |
| US5379432A (en) * | 1993-07-19 | 1995-01-03 | Taligent, Inc. | Object-oriented interface for a procedural operating system |
| US5418918A (en) * | 1993-09-10 | 1995-05-23 | Compaq Computer Corp. | Scanning initial CD-ROM sectors for a boot record and executing said boot record to load and execute floppy disk image corresponding to the existing floppy drive |
-
1994
- 1994-03-31 FR FR9403861A patent/FR2718262B1/fr not_active Expired - Fee Related
- 1994-09-27 US US08/313,709 patent/US5692190A/en not_active Expired - Fee Related
-
1995
- 1995-03-23 DE DE69500074T patent/DE69500074T2/de not_active Expired - Fee Related
- 1995-03-23 EP EP95400650A patent/EP0676689B1/de not_active Expired - Lifetime
- 1995-03-30 US US08/413,709 patent/US5649146A/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| US5692190A (en) | 1997-11-25 |
| DE69500074D1 (de) | 1996-11-28 |
| EP0676689B1 (de) | 1996-10-23 |
| US5649146A (en) | 1997-07-15 |
| FR2718262A1 (fr) | 1995-10-06 |
| EP0676689A1 (de) | 1995-10-11 |
| FR2718262B1 (fr) | 1996-05-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE69500074T2 (de) | Modulo-adressierter Pufferspeicher | |
| EP0137208B1 (de) | Verfahren zur Umwandlung eines Eingangsbitstromes | |
| DE3789490T2 (de) | Steuerungssystem für ein Vektorprozessor. | |
| DE1956604B2 (de) | Datenverarbeitungsanlage | |
| DE2710173A1 (de) | Nachrichtenanlage | |
| DE2747146A1 (de) | Datenverarbeitungsanlage | |
| DE2854782C2 (de) | Datenverarbeitungssystem und Verfahren zum Ersetzen eines Datenblocks in einem Schnellspeicher | |
| DE2031040B2 (de) | Verfahren zur festlegung des zugangs von mehreren benutzern zu einer einheit einer datenverarbeitungsanlage und anordnung zur durchfuehrung des verfahrens | |
| DE3888891T2 (de) | Steuersystem zum Umdrehen von Seiten mit grosser Geschwindigkeit. | |
| DE1449544A1 (de) | Datenverarbeitende Maschine mit ueberlappend abrufbarem Speicherwerk | |
| DE2703559A1 (de) | Rechnersystem | |
| DE2900586C2 (de) | Anordnung zum Decodieren von Codewörtern variabler Länge | |
| DE2458525B2 (de) | Speicheranordnung mit Haupt- und Pufferspeicher | |
| DE69118392T2 (de) | Adressengenerator für einen ringpuffer | |
| DE69112434T2 (de) | Kurvengenerator. | |
| DE3018509C2 (de) | Schieberegister | |
| DE2233193B2 (de) | Stapel-Speichersystem | |
| EP0374436B1 (de) | Verfahren und Schaltungsanordnung zur Taktanpassung in der digitalen Nachrichtentechnik | |
| DE2459476C3 (de) | ||
| DE2406171B2 (de) | Synchron-mehrzweck-zaehler | |
| DE3852204T2 (de) | Datenübertragungsvorrichtung und Datenübertragungsverfahren zur Anwendung in einer Datenverarbeitungsanordnung. | |
| EP1099153A1 (de) | Speichereinrichtung und verfahren zum betreiben der speichereinrichtung | |
| EP0694843A1 (de) | Verfahren zur Steuerung einer Sequenz von Zugriffen eines Prozessors zu einem zugeordneten Speicher | |
| DE2610428A1 (de) | Anordnung zur steuerung der zwischenspeicherung von zwischen zwei funktionseinheiten zu uebertragenden daten in einem pufferspeicher | |
| DE1499186A1 (de) | Eingabe-Ausgabe-System fuer Rechengeraete |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |