-
ALLGEMEINER
STAND DER TECHNIK
-
Die
vorliegende Erfindung betrifft eine Schnittstelle für eine Speichereinheit,
insbesondere einen Mikroprozessor mit einer Speichereinheit und einer
Schnittstelle zum Koppeln der Speichereinheit mit der Zentralverarbeitungseinheit.
Einer der Hauptfaktoren, die die Geschwindigkeit eines Mikroprozessors
bestimmen, wird durch die Schnittstelle zwischen der Zentralverarbeitungseinheit
und dem Speicher definiert. Deshalb enthalten moderne Mikroprozessoren
einen schnellen Cache-Speicher oder statischen Direktzugriffsspeicher
(SRAM) auf dem Chip, um Zugriffsverzögerungen aufgrund eines externen Speicherzugriffs
zu minimieren. Diese Cache- oder SRAM-Speicher besitzen eine sehr niedrige
Zugriffszeit und können
Daten im günstigsten
Fall innerhalb eines einzigen Prozessorzyklus abrufen oder schreiben.
Wenn eine Speichereinheit, zum Beispiel ein Cache-Speicher, Daten
innerhalb eines einzigen Prozessorzyklus schreiben und lesen kann,
hätte das System
den schnellstmöglichen
Zugriff auf in diesem Speicher gespeicherte Daten. Dennoch weisen
moderne Mikroprozessoren oder Mikrosteuerungen eine Pipeline-Struktur
auf. Anders ausgedrückt
wird jede vollständige
Verarbeitung einer Anweisung in mehrere Phasen aufgeteilt, wie zum
Beispiel das Abrufen einer Anweisung, das Decodieren derselben,
das Ausführen
derselben und das Zurückschreiben
des Ergebnisses. Diese Pipeline-Phasen
werden sequentiell ausgeführt
und jede Pipeline-Phase wird gewöhnlich
mit einem Teil einer unterschiedlichen Anweisung gefüllt. Durch
Ausführung
mehrerer Anweisungen gibt dies einem Mikroprozessor die Möglichkeit,
im Mittel eine Anweisung in einem Zyklus auszuführen. Je mehr Pipeline-Phasen
ein Prozessor aufweist, desto diverser sind diese Phasen.
-
Aufgrund
der Eigenschaften eines Pipeline-Mikroprozessors kann das Schreiben
von Daten innerhalb eines einzigen Prozessorzyklus unmöglich werden,
da die Adresse und die Daten nicht zur selben Zeit vorhanden sind.
In einem solchen System sind die zu schreibenden Daten gewöhnlich innerhalb
einer Verzögerungszeit
(Latenz) von einem Zyklus nach der Erzeugung der Adresse verfügbar, da jede
in einer unterschiedlichen Pipeline-Phase erzeugt wird. Da bei einer
Leseanweisung Daten durch den Speicher bereitgestellt werden, entsteht
nur die Speicherzugriffsverzögerung,
und das Lesen von Anweisungen kann in einem Zyklus ausgeführt werden, wenn
der Speicher schnell genug ist. Immer, wenn ein Lesen einem Schreiben
folgt, wird das System jedoch aufgrund der obenerwähnten Latenzeinschränkungen
verzögert.
-
EP 0 526 030 A betrifft
eine SRAM-Schnittstelleneinheit mit Lese- und Schreibschaltkreisen
für einen
Speicher, die die Präsentation
von in einem Schreibzyklus gelegten Daten ohne Verlust dieser Daten
ermöglicht.
Am Ende jedes Schreibzyklus werden eingegebene Daten in einem Datenspeicher
gespeichert, wobei gleichzeitig die zugeordnete Adresse für diese
Daten in einen schnellen temporären Adressenspeicher
geladen wird. Ein erster Multiplexer koppelt eine Hauptspeichereinheit
entweder mit dem Ausgang des Adressenspeichers oder mit einem Adressensignal.
Ein zweiter Multiplexer wählt entweder
den Datenausgang der Hauptspeichereinheit oder den Ausgang des Datenspeichers.
Ein Komparator vergleicht ein Adressensignal mit dem in dem Adressenspeicher
gespeicherten Signal und steuert den zweiten Multiplexer.
-
DE 41 14 053 A beschreibt
eine Cache-Schnittstelleneinheit mit einem Cache-Speicher mit einer
Anzahl von Adressenpuffern und Datenpuffern, die an jeweilige Eingänge des
Cache-Speichers angekoppelt
werden. Es wird eine geordnete Schreiboperation von Datensignalen
aus einem ersten Adressenpuffer in einen zweiten Adressenpuffer
und schließlich
in den Cache-Speicher
gelehrt. Im Fall einer Leseoperation sind keine Daten in einem jeweiligen
Datenregister zu speichern.
-
KURZE DARSTELLUNG
DER ERFINDUNG
-
Eine
Aufgabe der vorliegenden Erfindung ist deshalb die Bereitstellung
einer Schnittstelle zwischen einer Speichereinheit und einer Datenbearbeitungseinheit,
wie zum Beispiel einer Zentralverarbeitungseinheit eines Mikroprozessors
oder einer Mikrosteuerung, wodurch der schnellste Zugriff auf den Speicher
ermöglicht
wird. Zum Beispiel erfordert ein Synchron-SRAM gleichzeitige Adressen-
und Datendurchführung
mit der höchstmöglichen
Betriebsgeschwindigkeit.
-
Diese
Aufgabe wird gelöst
durch eine Schnittstellenschaltung zum Koppeln einer Datenbearbeitungseinheit
mit einer Speichereinheit mit Steuereingängen, einem Adressensignaleingang,
einem Datensignaleingang und einem Datensignalausgang. Die Schnittstellenschaltung
umfaßt
einen Adressenpuffer mit einem Eingang und einem Ausgang, wodurch
der Eingang ein Adressensignal von der Datenbearbeitungseinheit
empfängt,
einen ersten Multiplexer, der die Speichereinheit entweder mit dem Ausgang
des Adressenpuffers oder mit dem Adressensignal koppelt, einen Datenpuffer
mit einem Eingang und einem Ausgang, wobei der Eingang ein Datensignal
von der Datenbearbeitungseinheit empfängt und der Ausgang mit dem
Speicherdateneingang gekoppelt ist, einen zweiten Multiplexer zum Wählen entweder
des Speicherdatensignalausgangs oder des Datenpufferausgangs und
einen Komparator zum Vergleichen des Adressensignals mit dem Signal
aus dem Adressenpufferausgang, wobei ein Steuersignal erzeugt wird,
das den zweiten Multiplexer steuert.
-
Die
Schnittstellenschaltung kann in einem Mikroprozessor oder in einem
Speicherbaustein implementiert werden. Am vorteilhaftesten wird
sie in einer Mikrosteuerung implementiert, die einen Mikroprozessor
und einen Speicher auf einem einzigen Chip integriert aufweist.
-
Eine
weitere Ausführungsform
ist eine Schnittstellenschaltung zum Koppeln einer Datenbearbeitungseinheit
mit einer Speichereinheit mit Steuereingängen, einem Adressensignaleingang,
einem Datensignaleingang und einem Datensignalausgang. Die Schnittstelle
umfaßt
einen ersten Adressenpuffer mit einem Eingang und einem Ausgang,
wodurch der Eingang ein Adressensignal aus der Datenbearbeitungseinheit
empfängt.
Ein zweiter Adressenpuffer besitzt einen Eingang und einen Ausgang,
wodurch der Eingang mit dem Ausgang des ersten Adressenpuffers gekoppelt
wird. Ein erster Multiplexer besitzt Eingänge und einen Ausgang und koppelt
entweder den Inhalt des erste oder des zweiten Adressenpuffers an
seinen Ausgang an. Ein zweiter Multiplexer, der die Speichereinheit
entweder mit dem Ausgang des ersten Multiplexers oder mit dem Adressensignal koppelt,
ist weiter vorgesehen. Ein Datenpuffer besitzt einen Eingang und
einen Ausgang, wodurch der Eingang ein Datensignal von der Datenbearbeitungseinheit
empfängt,
und der Ausgang mit dem Speicherdateneingang gekoppelt ist. Ein
dritter Multiplexer zum Wählen
entweder des Speicherdatensignalausgangs oder des Datenpufferausgangs
ist vorgesehen. Weiterhin umfaßt
die Schnittstelle einen Komparator zum Vergleichen des Inhalts des
ersten und des zweiten Adressenpuffers, wobei ein Steuersignal erzeugt
wird, das den dritten Multiplexer steuert.
-
Weiterhin
wird ein Verfahren zum Schreiben von Daten in eine integrierte Speichereinheit
in einem Mikroprozessor mit einer Pipeline-Struktur offen gelegt,
bei dem ein in den Speicher zu schreibendes Datensignal in bezug
auf ein Adressensignal verzögert
wird. Das Verfahren umfaßt
die folgenden Schritte:
Puffern des Adressensignals,
im
Fall eines folgenden Schreibsignals, Speichern des Datensignals
unter dem gepufferten Adressensignal und Puffern des folgenden Adressensignals und
im
Fall eines folgenden Lesesignals, Puffern des Datensignals.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt ein Blockschaltbild
des Prinzips der vorliegenden Erfindung,
-
2A–2D zeigen
Impulsdiagramme von Speichereinheiten gemäß dem Stand der Technik,
-
3A und 3B zeigen Impulsdiagramme eines Speichers
mit einer Schnittstelle gemäß der vorliegenden
Erfindung,
-
4 zeigt eine weitere Ausführungsform
einer Schnittstelle gemäß der vorliegenden
Erfindung,
-
5 zeigt eine weitere Ausführungsform
einer Schnittstelle gemäß der vorliegenden
Erfindung,
-
6 zeigt ein Flußdiagramm
der Schritte des Lesens und Schreibens durch eine Speicherschnittstelle
gemäß der vorliegenden
Erfindung und
-
7 zeigt eine Tabelle des
Inhalts der Puffer und des Status der Multiplexer während verschiedener
Zyklen.
-
AUSFÜHRLICHE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
-
1 zeigt ein Blockschaltbild
einer Anordnung gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung. Ein statisches Direktzugriffsspeichermodul
(SRAM) 1 stellt einen Dateneingang Din und
einen Datenausgang Dout, einen Takteingang Clk,
einen Schreibfreigabeeingang WE, einen kombinierten Lese-/Schreibeingang
RD/WR und mehrere Adresseneingänge
Addr bereit. Eine Steuerlogikeinheit 2 empfängt ein
RD/WR' und ein WE' oder äquivalente
Steuersignale zum Beispiel von einem Mikroprozessor und erzeugt
die Signale RD/WR und WE für
den SRAM 1. Weiterhin erzeugt die Steuereinheit 2 ein
Steuersignal für
einen Multiplexer 3 und einen Multiplexer 8. Der
Multiplexer 3 empfängt
mehrere Adressensignale Addr',
z.B. von dem Mikroprozessor an seinen ersten Eingängen und
mehrere Adressensignale von einem Adressenpuffer 4, der
durch die Steuerlogik 2 gesteuert wird. Der Adressenpuffer 4 besitzt
Eingangsleitungen, die mit den Adressensignalen Addr' gekoppelt sind.
Es ist ein Komparator 5 vorgesehen, der die Ausgangssignale
des Adressenpuffers mit den Adressensignalen Addr' vergleicht. Der
Komparator 5 erzeugt ein Steuersignal, das einen zweiten
Multiplexer 7 steuert. Der Multiplexer 7 empfängt ein
Datensignal Dout aus dem SRAM 1 an seinem
ersten Eingang und ein Datensignal aus dem Ausgang eines Datenpuffers 6.
Der Ausgang des Multiplexers 7 liefert ein Datenausgangssignal
Dout'. Der
Datenpuffer 6 empfängt
ein Dateneingangssignal Din' zum Beispiel von
dem Mikroprozessor und umfaßt
einen Ausgang, der mit einem ersten Eingang eines Multiplexers 8 gekoppelt
ist, dessen Ausgang mit dem Dateneingang Din des
SRAM 1 gekoppelt ist. Der zweite Eingang des Multiplexers 8 ist
mit dem Dateneingangssignal Din' gekoppelt. Der Adressenpuffer 4 und
der Datenpuffer 6 werden durch Steuerlogik 2 gesteuert.
Der Datenpuffer 6 kann den Multiplexer 8 zum Umschalten
zwischen dem Signal Din' und der Ausgabe des Datenpuffers 6 enthalten.
-
2A–2D zeigt
die Standard-Zeitsteuerungseigenschaften eines Synchron-SRAM mit
einem Pipeline-Mikroprozessor. In 2A ist
die grundlegende Schreibzeitsteuerung abgebildet. Während der
ansteigenden Flanke (a) des Taktsignals Clk wird das RD/WR-Signal
gesetzt, und gleichzeitig werden die Adressensignale bereitgestellt.
Aufgrund der Pipeline-Architektur sind die eigentlichen Datensignale
und die jeweiligen Schreibfreigabebitsignale noch nicht verfügbar. Diese
Signale werden mit der ansteigenden Flanke (b) des nächsten Taktzyklus bereitgestellt.
-
In 2B ist die grundlegende
Lesezeitsteuerung in einem Pipeline-Prozessor abgebildet. Ein Lesezyklus
nimmt nur einen einzigen Taktzyklus in Anspruch, weil die einzige
Verzögerung,
die auftritt, die Zugriffszeitverzögerung des SRAM ist.
-
In 2C ist ein Lesezyklus, dem
ein Schreibzyklus folgt, abgebildet. Da ein Lesezyklus nur einen
einzigen Taktzyklus in Anspruch nimmt, kann ein Schreibzyklus unmittelbar
folgen.
-
Wie
oben beschrieben, entstehen gewöhnlich
keine Zeitsteuerungsprobleme, wenn ein Lesezyklus einem anderen
Lesezyklus folgt, ein Schreibzyklus einem Schreibzyklus folgt oder
ein Schreibzyklus einem Lesezyklus folgt.
-
2D zeigt einen Schreibzyklus,
dem unmittelbar ein Lesezyklus folgt. Bei diesem Ereignis kommt
es zu einer Kollision. Aufgrund der Verzögerung der zu schreibenden
Daten kollidieren die Signale Din und Dout. Deshalb muß für einen Lesezyklus, der einem
Schreibzyklus folgt, ein Wartezustand eingefügt werden.
-
Um
diese Zykluskosten zu vermeiden, stellt die vorliegende Erfindung
einen verzögerten Schreibzyklus
bereit. Zu diesem Zweck sind der Adressenpuffer 4 und der
Datenpuffer 6 vorgesehen. Immer, wenn ein Schreibzyklus
startet, speichert der Adressenpuffer 4 die bereitgestellten
Adressen Addr',
und der Datenpuffer 6 speichert die Datensignale Din' in
dem folgenden Zyklus. Die Steuersignale können gepuffert oder in der
Steuerlogik 2 erzeugt werden. Das Schreiben in den SRAM
wird zurückgestellt,
bis der nächste
Schreibzyklus beginnt. Anders ausgedrückt, werden nur dann, wenn
diesem „anfänglichen" Schreibzyklus ein
Schreibzyklus folgt, die Daten dieses „anfänglichen" Schreibzyklus, die in dem Datenpuffer 6 gepuffert
sind, unter Verwendung des Multiplexers 3 unter der in
dem Adressenpuffer 4 gepufferten Adresse in den SRAM 1 geschrieben. Solange
diesem „anfänglichen" Schreibzyklus ein
Lesezyklus folgt, wird der eigentliche Schreibzyklus in den SRAM 1 zurückgestellt.
-
Wenn
einer der Lesezyklen zwischen dem „anfänglichen" Schreibzyklus und den ersten folgenden
Schreibzyklen dieselbe Adresse wie die „anfängliche" Schreibadresse lesen möchte, dann
finden die folgenden Schritte statt: Der Komparator 5 vergleicht die
Adressensignale Addr' jedes
Lesezyklus mit der gepufferten Adresse in dem Adressenpuffer 4.
Wenn diese Signale gleich sind, wird der Multiplexer 7 so gesteuert,
daß er die
gepufferten Daten aus dem Datenpuffer 6 an die Ausgangsleitungen
Dout' ausgibt.
-
Als
Beispiel zeigt 3A eine
Reihe von Lese- und Schreibzyklen mit einer Ausführungsform gemäß 1. 3A zeigt die Signale RD/WR', ADDR', Din', Dout' sowie die Signale
RD/WR, ADDR, WE, Din und Dout.
Als erstes wird ein Lesezyklus in dem Zyklus t1 ausgeführt. In
t2 findet ein Schreibzyklus statt und die zugeordnete Adresse b
wird in dem Adressenpuffer 4 gepuffert. Im Zyklus t3 erfolgt
ein weiterer Schreibzyklus. Deshalb wird der Multiplexer 3 unter
Verwendung der gepufferten Adressensignale aus dem Adressenpuffer 4 auf
seinen zweiten Eingang geschaltet. Daten (b) werden unter der gepufferten
Adresse b in den SRAM 1 geschrieben, und die Adresse c
wird in dem Adressenpuffer 4 gepuffert. Da Daten (b) in
dem Zyklus t3 direkt in den SRAM 1 geschrieben werden,
müssen
sie nicht in dem Datenpuffer 6 gepuffert werden. Im Zyklus
t4 erfolgt ein weiterer Schreibzyklus. Deshalb werden Daten (c)
unter der gepufferten Adresse c aus dem Adressenpuffer 4 in
den SRAM 1 geschrieben. Wieder wird der Multiplexer 3 in
diesem Fall auf den Adressenpuffer 4 geschaltet. Im Zyklus
t5 beginnt ein Lesezyklus. Der Multiplexer 3 wird zurückgeschaltet,
um das Adressensignal Addr' an
seinem Ausgang zu führen.
Nun puffert der Datenpuffer 6 die Daten (d), während der SRAM 1 Daten
(e) an dem Ausgang Dout bereitstellt. Der
Multiplexer 7 wird so gesteuert, daß er Dout' mit Dout koppelt.
In dem folgenden Zyklus t6 erfolgt ein weiterer Schreibzyklus. Der
Multiplexer 3 wird auf den Adressenpuffer 4 geschaltet.
Die zuvor gepufferte Adresse d und die gepufferten Daten (d) werden nun
in den SRAM geschrieben, während
der Adressenpuffer 4 die neue Adresse f puffert.
-
3B zeigt ein weiteres Beispiel
für Kombinationen
von Lese- und Schreibzyklen mit einer Ausführungsform gemäß 1.
-
Während t1
erfolgt ein erster Schreibzyklus, in dem die Adresse a in dem Adressenpuffer 4 gepuffert
wird. In t2 folgt ein zweiter Schreibzyklus. Die Daten (a), die
nun bereitgestellt werden, werden deshalb unter der gepufferten
Adresse a in den SRAM 1 geschrieben. Zu diesem Zweck wird
der Multiplexer 3 auf den Adressenpuffer 4 geschaltet.
Weiterhin wird die Adresse b aus dem zweiten Schreibzyklus in dem Adressenpuffer 4 gepuffert.
Während
t3 erfolgt ein Lesezyklus. Der Multiplexer 3 wird auf den
Adresseneingang Addr' zurückgeschaltet.
Die nun bereitgestellten Daten (b) werden in dem Datenpuffer 6 gepuffert
und parallel dazu wird der SRAM 1 unter Verwendung der
bereitgestellten Adressen an Addr', in diesem Fall der Adresse a, ausgelesen.
Der Multiplexer 7 wird so geschaltet, daß er den
Ausgang Dout des SRAM 1 mit dem
Ausgang Dout' koppelt. In dem nächsten Zyklus t4 erfolgt ein
Lesezyklus. Dieser Lesezyklus versucht, auf die zuvor geschriebene Adresse
b zuzugreifen. Da diese Daten noch nicht in den SRAM 1 geschrieben
wurden, findet das folgende Szenario statt: Der Komparator 5 vergleicht
das Adressensignal Addr' mit
der gepufferten Adresse in dem Adressenpuffer 4. Da diese
Adressen identisch sind, steuert der Komparator 5 den Multiplexer 7 so, daß der Ausgang
des Datenpuffers 6 mit dem Ausgang Dout' verbunden wird.
In diesem Spezialfall ist der SRAM 1 nicht beteiligt. Die
Daten sind sofort durch den Datenpuffer 6 zugänglich.
Der Komparator muß die
ankommende Adresse Addr' mit
der gepufferten Adresse in dem Adressenpuffer 4 vergleichen und
das Ergebnis während
des Zyklus halten können.
Haltemittel wie zum Beispiel ein Puffer oder ein Register oder ein
beliebiges anderes entsprechendes Mittel sind dazu fähig.
-
Abhängig von
der Pipeline-Struktur kann die Verzögerung zwischen der Bereitstellung
des Adressensignals und des Datensignals im Fall eines Schreibzyklus
unterschiedlich sein. Wie oben beschrieben, kann diese Verzögerung einen
einzigen Zyklus betragen. Natürlich
ist es möglich,
daß sich diese
Verzögerung
aufgrund der Struktur der Pipeline vergrößert. In diesem Fall muß der oben
beschriebene Speicherweiterleitungsmechanismus verwendet werden.
Wenn die Verzögerung
zum Beispiel zwei Zyklen beträgt,
sind zwei Adressenpuffer und die jeweilige Logik notwendig, um diese
Signale zu puffern, bevor die eigentlichen Daten in den SRAM geschrieben
werden. Dies ist in 1 durch
die gepunkteten zusätzlichen
Adressenpuffer dargestellt. Die Anzahl von Adressenpuffern ist so
tief wie die Verzögerung
zwischen Adressen- und Datensignalen. Die erforderliche Logik zur
Steuerung dieser Puffer nimmt jeweils zu.
-
4 zeigt eine weitere bevorzugte
Ausführungsform
gemäß der vorliegenden
Erfindung. Bei dieser Ausführungsform
wird eine Funktion der eingebauten Speicherselbstprüfung (MBIST)
mit dem oben beschriebenen Speicherweiterleitungsmechanismus kombiniert.
Wieder umfaßt
ein SRAM 410 einen Adresseneingang Addr, einen Schreibfreigabeeingang
WE, einen Dateneingang Din und einen Datenausgang
Dout. Der eigentliche Adresseneingang Addr' ist mit dem ersten
Eingang eines Multiplexers 400, mit dem Eingang eines Adressenpuffers 402 und
mit dem ersten Eingang eines Komparators 403 gekoppelt.
Der Ausgang des Adressenpuffers 402 ist mit dem zweiten
Eingang des Komparators 403 und dem ersten Eingang eines
Multiplexers 401 gekoppelt. Der Ausgang des Multiplexers 401 ist
mit dem zweiten Eingang des Multiplexers 400 gekoppelt, dessen
Ausgang mit dem Adresseneingang Addr des SRAM 410 verbunden
ist. Der Multiplexer 400 wird durch Steuer- und MBIST-Steuersignale
gesteuert, und der Multiplexer 401 durch ein jeweiliges MBIST-Steuersignal.
Der zweite Eingang des Multiplexers 401 ist mit den Prüfadressenleitungen
MBIST ADDR verbunden. Das Schreibfreigabesig nal WE' ist mit einem Gültig-Bit-Register 406 und
dem ersten Eingang eines Multiplexers 411 gekoppelt. Das
Gültig-Register
ist so breit wie das Datenregister und gibt das WE-Signal für jedes
Bit wieder. Das hat den Vorteil, daß man die tatsächliche
Größe des Datenworts, das
in den SRAM geschrieben wird, zum Beispiel 8, 16 oder 32 Bit, entscheiden
kann. Außerdem
ist Einzelbitmanipulation auf herkömmliche Weise durch Validierung
der jeweiligen Bit des Gültig-Registers 406 möglich. Bei
dieser Ausführungsform
besitzt jedes Bit eines Worts in dem SRAM seine eigene WE-Leitung.
Natürlich
kann dieses Schema leicht an andere organisierte SRAMs zum Beispiel
nur mit einer einzigen WE-Leitung angepasst werden. Der zweite Eingang
des Multiplexers 411 ist mit dem Ausgang des Multiplexers 412 angekoppelt.
Der Multiplexer 412 empfängt an seinem ersten Eingang
das Signal MBIST WE und an seinem zweiten das Ausgangssignal aus
dem Bit-Gültig-Register 406.
Die Multiplexer 411 werden durch ein kombiniertes Steuer-
und MBIST-Steuersignal
gesteuert, und der Multiplexer 412 durch ein jeweiliges
MBIST-Steuersignal. Der Ausgang des Bit-Gültig-Puffers 406 ist auch pro Bit
mit dem ersten Eingang eines AND-Gatters 405 verbunden,
dessen zweiter Eingang mit dem Ausgang des Komparators 403 gekoppelt
ist. Der Dateneingang Din' ist mit dem Eingang
eines Datenpuffers 407 und dem ersten Eingang eines Multiplexers 409,
dessen zweiter Eingang mit dem Ausgang des Multiplexers 408 gekoppelt
ist, verbunden. Der erste Eingang des Multiplexers 408 ist
mit dem Ausgang des Datenpuffers 407 gekoppelt. Der zweite
Eingang des Multiplexers 408 empfängt ein MBIST-Din-Signal. Der
Multiplexer 408 wird durch ein jeweiliges MBIST-Steuersignal
gesteuert, und der Multiplexer 412 wird wieder durch ein
kombiniertes Steuer- und MBIST-Steuersignal gesteuert. Eine (nicht
gezeigte) Steuereinheit erzeugt alle Steuer- und MBIST-Steuersignale. Der
Ausgang des Multiplexers 409 ist mit dem Dateneingang Din des SRAM 410 gekoppelt. Der Datenausgang
Dout des SRAM 410 ist mit dem ersten Eingang
eines Multiplexers 404 gekoppelt, dessen zweiter Eingang
mit dem Ausgang des Datenpuffers 407 gekoppelt ist. Der
Ausgang des AND-Gatters 405 steuert den Multiplexer 404 pro
Bit, dessen Ausgang mit dem Datenausgang Dout' gekoppelt ist. Diese
Ausführungsform
besitzt immer dann, wenn die jeweiligen MBIST-Steuersignale auf
den normalen Betriebsmodus, nämlich
den Lese-/Schreibmodus, gesetzt sind, eine ähnliche Funktionalität. In diesem Modus
wird der Multiplexer 401 auf den Adressenpuffer 402,
der Multiplexer 412 auf das Gültig-Bit-Register und der Multiplexer 408 auf
den Datenpuffer 407 geschaltet. Der Gültig-Bit-Puffer 406 ist
vorgesehen, um anzuzeigen, ob der Datenpuffer 407 gültige Daten
enthält,
wie oben beschrieben. Die Bit in diesem Puffer werden für die jeweiligen
Bit in dem Datenpuffer 407 immer dann gesetzt, wenn diese
Bit des Datenpuffers 407 geschrieben werden und der Adressenpuffer 402 die
entsprechende Adresse enthält. Durch
das AND-Gatter 405 schaltet der Multiplexer 404 zwischen
dem Ausgang des Datenpuffers 407 und dem Datenausgang Dout des SRAMs 410. Immer wenn das
MBIST-Steuersignal
auf MBIST-Funktion geschaltet ist, wird der Multiplexer 401 auf
den Eingang MBIST ADDR geschaltet. Der Multiplexer 400 wird
dann auf den Ausgang des Multiplexers 401 geschaltet und
die (nicht gezeigte) MBIST-Einheit kann durch den Eingang MBIST
ADDR dem SRAM 410 verschiedene Prüfadressen zuführen. Außerdem wird
das Schreibfreigabesignal durch die Multiplexer 411 und 412 zu
dem Signal MBIST WE geschaltet. In diesem Modus können Daten
mittels des Multiplexers 409 und des Multiplexers 408 dem
SRAM 410 zugeführt
werden. Bei Ausführungsformen
von SRAMs mit MBIST-Funktionalität
gemäß dem Stand der
Technik werden gewöhnlich
außerhalb
angeordnete Multiplexer verwendet, die zwischen den jeweiligen Signalen
umschalten. Dadurch könnte
die Zugriffszeit auf den SRAM ver langsamt werden, weil zusätzliche
Einrichtzeit notwendig ist. Die zusätzlichen Multiplexer, die für die MBIST-Funktionalität gemäß der vorliegenden
Erfindung benötigt
werden, bei der die MBIST-Funktionalität voll in die SRAM-Schnittstelle integriert
ist, werden in einem bezüglich
Zeitsteuerung unkritischen Weg angeordnet.
-
5 zeigt eine weitere Ausführungsform gemäß der vorliegenden
Erfindung. Adressenleitungen Addr' von der Mikroprozessorseite werden
mit einem ersten Eingang eines Multiplexers 500 und mit dem
Eingang eines Puffers oder Registers 504 gekoppelt. Der
Ausgang des Multiplexers 500 führt das Adressensignal Addr
für die
Speichereinheit. Der Ausgang des Registers 504 ist mit
dem Eingang des Registers 503 und dem ersten Eingang des
Multiplexers 502 gekoppelt, dessen Ausgang mit dem zweiten
Eingang des Multiplexers 500 gekoppelt ist. Der Multiplexer 500 wird
durch ein Steuersignal 501 gesteuert. Der Ausgang des Registers 503 ist
mit dem zweiten Eingang des Multiplexers 502 gekoppelt.
Die Ausgänge
der Register 503 und 504 sind mit jeweiligen Eingängen eines
Komparators 505 gekoppelt, dessen Ausgangssignal pro Bit
mit dem ersten Eingang eines AND-Gatters 521 gekoppelt
wird. Das Ausgangssignal des AND-Gatters 521 steuert einen Multiplexer 520.
Dateneingangsleitungen Din' von dem
Mikroprozessor werden mit einem ersten Eingang eines Multiplexers 510 und
dem Eingang des Registers 512 gekoppelt. Der Ausgang des
Registers 512 ist mit dem zweiten Eingang des Multiplexers 510 gekoppelt,
dessen Ausgang das Eingangsdatensignal für die Speichereinheit führt. Der
erste Eingang des Multiplexers 520 ist mit dem Ausgang
des Registers 512 gekoppelt. Der zweite Eingang des Multiplexers 520 ist
mit den Ausgangsdatenleitungen Dout der Speichereinheit gekoppelt
und sein Ausgang führt
die Ausgangsdatensignale für
den Mikroprozessor. Das Schreibfrei gabesignal WE' von dem Mikroprozessor wird mit dem
ersten Eingang eines Multiplexers 531 und dem Eingang eines
Registers 530 gekoppelt. Der Ausgang des Registers 530 wird
mit dem zweiten Eingang des Multiplexers 531 gekoppelt,
dessen Ausgang das Schreibfreigabesignal WE für die Speichereinheit führt. Weiterhin
ist der Ausgang des Registers 530 pro Bit mit dem zweiten
Eingang des AND-Gatters 521 gekoppelt. Die Multiplexer 502, 510 und 531 werden
durch das Steuersignal 511 gesteuert.
-
Diese
Anordnung ermöglicht
eine weniger kritische Implementierung des Komparators 505.
Im Fall eines Schreibzyklus puffert das Register 504 die Adresse
Addr'. Wenn in dem
folgenden Zyklus ein Lesezyklus erfolgt, werden die zugeordneten
Daten Din' für den Schreibzyklus
in dem Register 512 und das Schreibfreigabesignal WE' in dem Register 530 gespeichert.
Außerdem
wird die gepufferte Adresse des vorherigen Schreibzyklus in das
Register 503 weitergeleitet und die Lesezyklusadresse wird
in dem Register 504 gespeichert. Der Komparator 505 vergleicht
beide Adressen. Da beide Adressen in Registern gespeichert sind,
ist der eigentliche Vergleich weniger zeitkritisch, und die Adresseneinrichtzeit,
die am kritischsten ist, leidet nicht. Wenn beide Adressen identisch
sind, wird der Multiplexer 520 durch den Komparator 505 so
gesteuert, daß er
den Inhalt des Registers 512 zu dem Datenausgang Dout' weiterleitet,
wenn das entsprechende WE-Bit für
jede Bitposition zugesetzt ist. Wenn die verglichenen Adressen verschieden
sind, koppelt der Multiplexer 520 den Datenausgang Dout' mit
dem Datenausgang Dout der Speichereinheit,
und es findet ein regulärer
Lesezyklus statt. Zu diesem Zweck koppelt der Multiplexer 500 die
Adressenleitungen Addr' mit
den Adressenleitungen Addr der Speichereinheit. Die Register 503, 512 und 530 halten
die gepufferten Schreibzyklusadressen, Daten und das Steuersignal,
während
Lesezyklen durchgeführt
werden, bis ein weiterer Schreibzyklus erfolgt. Wenn ein zweiter
Schreibzyklus folgt, wird der Inhalt des Registers 512 tatsächlich unter der
durch das Register 503 gepufferten Adresse in die Speichereinheit
geschrieben, wobei das WE oder Gültig-Bit
des Registers 530 verwendet werden. Deshalb schalten die
Multiplexer 502 und 500 zu den entsprechenden
Eingängen.
Das Register 530 puffert das Schreibfreigabesignal. Mit
diesem Signal kann bestimmt werden, ob ein Schreibzyklus tatsächlich durchgeführt werden
soll, wobei zum Beispiel im Fall eines Cache-Treffers ein Schreibsteuersignal
angezeigt wird. Es kann auch ähnlich
wie in 4 gezeigt als
ein Anzeiger dafür
verwendet werden, ob Daten oder einzelne Bit in dem Register 512 gültig sind
und deshalb geschrieben werden müssen.
WE und Gültig-Signal
sind deshalb bei dieser Ausführungsform identisch. 6 zeigt ein Flußdiagramm
der verschiedenen Zyklen, die auftreten können.
-
Ein
Lesezyklus startet mit dem Schritt 602, in dem bestimmt
wird, ob etwaige Daten und Steuersignale von einem vorherigen Schreibzyklus
verfügbar sind,
oder anders ausgedrückt,
ob der vorherige Zyklus ein Schreibzyklus war. Wenn dies der Fall
ist, kopieren die Schritte 603–605 den Inhalt des
Puffers 504 nach 503, die transferierten Daten
und Steuersignale werden in den Puffern 512 bzw. 530 gespeichert
und die mit dem Lesezyklus übertragene
tatsächliche
Adresse wird in dem Register 504 gepuffert. Als nächstes,
oder wenn die obigen Schritte übersprungen
wurden, wird in Schritt 607 der Inhalt der Register 503 und 504 verglichen.
Wenn sie gleich sind, wird im Schritt 608 geprüft, ob die
Register 512 und 530 gültige Daten enthalten. Wenn
dies der Fall ist, wird der Inhalt des Registers 512 im
Schritt 609 zu dem Ausgang Dout' weitergeleitet. 6 zeigt nur die Speicherweiterleitungsfunktion
wäh rend
eines Lesezyklus, wobei der Inhalt entweder aus dem Speicherweiterleitungspuffer
oder direkt aus dem SRAM kommt. Wenn die Schnittstelle eine Veränderung
einzelner Bit erlaubt, dann werden nur die Bit, die gültig sind,
aus dem jeweiligen Puffer im Schritt 609 weitergeleitet.
Parallel wird der SRAM gelesen, und die übrigen Bit des jeweiligen Datenworts
werden mit den gepufferten Bit zusammengeführt. Wenn Schritt 607 oder 608 verschieden
resultieren, koppelt der Multiplexer 500 die Adressensignale
Addr' mit dem Adresseneingang
des SRAM, und die jeweiligen Speicherzellen des SRAM werden gelesen
und ihr Inhalt wird im Schritt 610 zu dem Datenausgang
Dout' transferiert.
-
Während eines
Schreibzyklus wird zuerst im Schritt 612 geprüft, ob die
Puffer 512 und 530 gültige Daten enthalten. Wenn
dies der Fall ist, wird im folgenden Schritt 613 der Inhalt
des Puffers 512 unter der im Puffer 503 gepufferten
Adresse in den SRAM geschrieben. Als nächstes wird im Schritt 614 geprüft, ob Daten
und Steuersignale aus einem vorherigen Schreibzyklus verfügbar sind.
Wenn dies der Fall ist, wird im Schritt 615 der Puffer 504 in
den Puffer 503 kopiert, und die Daten und Steuersignale
werden in 512 bzw. 530 gepuffert. Wenn im Schritt 612 die Entscheidung „Nein" ist, wird anschließend im
Schritt 617 geprüft,
ob Daten und Steuersignale aus einem vorherigen Schreibzyklus verfügbar sind.
Wenn dies der Fall ist, werden anschließend im Schritt 618 diese Daten
zu den SRAM-Schaltmultiplexern 510 und 531 zu
Eingang „1" gelenkt.... Der
Multiplexer 502 wird auch unter Verwendung des Ausgangssignals
des Registers 504 als die zugeordnete Adresse auf Eingang „1" geschaltet. Der
Multiplexer 500 wird auf Eingang „0" geschaltet. Als nächstes folgen die Schritte 615 bis 616.
Im Schritt 619, der Schritt 616 folgt, wird die
neue Adresse aus dem aktuellen Schreibzyklus in dem Register 504 gepuffert.
Wenn im Schritt 617 keine Daten und Steuersignale aus einem
vorherigen Schreibzyklus verfügbar
sind, folgt nur Schritt 619.
-
Während eines
Leerzyklus muß nur
im Schritt 621 geprüft
werden, ob Daten und Steuersignale aus einem vorherigen Schreibzyklus
verfügbar sind.
Wenn dies der Fall ist, wird der Puffer 504 in den Puffer 503 kopiert,
und die ankommenden Daten und Steuersignale werden in den Registern 512 bzw. 530 gepuffert.
-
Als
Alternative kann Schritt 619 direkt auf Schritt 618 folgen,
wodurch die Schritte 615 und 616 übersprungen
werden. Bei dieser Ausführungsform können Daten
in einem einzigen Zyklus aus SRAM gelesen werden. Wenn die ankommenden
Daten im Schritt 618 in den SRAM geschrieben werden, können sie
deshalb innerhalb des nächsten
Zyklus aus dem SRAM gelesen werden. Wenn nach Schritt 618 die
Schritte 615 und 816 verwendet werden, kann das
in den Schritten 607–609 Beschriebene
weiterleitend verwendet werden.
-
7 zeigt eine Tabelle der
verschiedenen Inhalte der Puffer/Register und des Status der Multiplexer
während
verschiedener Zyklen. Es wird angenommen, daß vor dem ersten Zyklus W1
alle Register/Puffer leer sind. W1 ist ein Schreibzyklus, in dem die
Adresse „1" in das Register 503 geschrieben
wird. Es wird angenommen, daß der
nächste
Zyklus ein Schreibzyklus W2 ist. Während dieses Zyklus kommen
die Daten und Steuersignale aus dem vorherigen Schreibzyklus W1
an und werden in den Registern 512 bzw. 530 gespeichert.
Parallel werden sie in den SRAM geschrieben. Deshalb wird der Multiplexer 500 auf
Eingang 0 und die Multiplexer 502, 510 und 531 auf
Eingang 1 geschaltet. Es wird angenommen, daß der nächste Zyklus ein Lesezyklus
R3 ist. Während
dieses Zyklus werden die nun ankommenden Daten und Steuersignale
aus dem vorherigen Schreibzyklus in den Registern 512 und 530 gepuffert.
Die zuvor gespeicherte Adresse wird aus dem Register 504 in
das Register 503 kopiert. Die neue ankommende Adresse wird
durch den Multiplexer 500, der auf Eingang 1 geschaltet
ist, dem SRAM zugeführt
und in dem Register 504 gespeichert. Der Komparator 505 vergleicht
den Inhalt der Register 504 und 503. In diesem
Fall ist er unterschiedlich. Deshalb wird der Multiplexer 520 auf
Eingang 0 geschaltet und führt
die aus dem SRAM gelesenen Daten dem Ausgang Dout zu.
Der Multiplexer 531 wird auf Eingang 1 geschaltet, um das
Steuersignal WE' mit
dem jeweiligen Steuereingang des SRAM zu koppeln. Während des
nächsten
Zyklus, von dem angenommen wird, daß er ein weiterer Schreibzyklus
W4 ist, werden die zuvor gepufferten Adressen-, Daten- und Steuersignale
zum Schreiben der gepufferten Daten in den SRAM verwendet. Deshalb
werden der Multiplexer 500 auf 0 und die Multiplexer 502, 510 und 531 jeweils
auf Eingang 0 geschaltet. Die neu eingereichte Adresse „4" wird in dem Register 503 gespeichert.
Während
eines folgenden Lesezyklus R4 werden die nun ankommenden Daten und
Steuersignale in den Registern 512 und 530 gespeichert. Außerdem wird
der Inhalt des Registers 504 in das Register 503 kopiert,
und die neu angekommene Adresse für den Lesezyklus wird in dem
Register 504 gespeichert. Der Komparator 505 vergleicht
den Inhalt beider Register 503 und 504, und schaltet,
da er identisch ist, den Multiplexer 520 auf Eingang 1.
Deshalb wird der Inhalt des Registers 512 für die Bit,
die gültig
gesetzt sind, zu dem Ausgang Dout' weitergeleitet.
Falls notwendig, werden diese weitergeleiteten Bit mit den jeweiligen
Bit aus dem SRAM, die für
den Puffer 512 ungültig
gesetzt wurden, kombiniert. In dem folgenden Schreibzyklus W5 wird
der Inhalt der Register 503, 512 und 530 nochmals
zum Schreiben in den SRAM verwen det, wie oben mit Bezug auf den Schreibzyklus
W4 beschrieben. Während
eines folgenden IDLE-Zyklus werden die nun ankommenden Daten und
Steuersignale aus dem vorherigen Schreibzyklus W5 in den Registern 512 und 530 gespeichert
und der Inhalt des Registers 504 wird in das Register 503 kopiert.
Als Alternative können
während eines
Leerzyklus, wenn der Puffer voll ist oder wenn Daten aus einem vorherigen
Schreibzyklus ankommen, diese Daten in den SRAM geschrieben werden.
-
Zusammengefaßt müssen bei
einer Sequenz von Lesen nach Schreiben keine Wartezustände eingefügt werden,
und der Mikroprozessor kann mit voller Geschwindigkeit betrieben
werden.