-
Die Erfindung betrifft eine Schaltungseinheit und ein Verfahren zur Datenbitinvertierung eines aus einem Speicherbaustein ausgelesenen Datenbursts, insbesondere für DDR-SDRAM (Double Data Rate Synchronous Dynamic Random Access Memories).
-
1 zeigt ein Computersystem nach dem Stand der Technik, bei dem ein Speicherchip und ein Controllerchip über einen gemeinsamen Datenbus Daten austauschen. Die zunehmende Geschwindigkeit von Computerprozessoren bzw. Controllern erfordert eine entsprechend höhere Geschwindigkeit bei Speicherzugriffen bzw. schnellere Speicherbausteine. Der Speicherbaustein und der Prozessor werden über ein Taktsignal CLK getaktet.
-
Es wurden verschiedene Generationen von RAM-Speichern entwickelt, deren Zugriffsrate beständig anstieg. Die zeitlichen Abstände, in denen neue, aus dem Speicherzellenfeld ausgelesene oder einzuschreibende Daten an den Datenein-/ausgängen des entsprechenden. Speicherbausteins bereitstehen, wurden dabei ständig verkürzt. Ausgehend von synchronen dynamischen RAMs (SDRAMS) wurden so genannte DDR-SDRAMs mit doppelter Datenrate entwickelt. Derartige DDR-SDRAMs liefern Daten doppelt so schnell wie herkömmliche SDRAMs. Bei DDR-SDRAMs wird allerdings nicht der Takt verdoppelt, sondern es werden zwei Aktionen in einem Takt ausgeführt. Während herkömmliche SDRAMs stets nur zur aufsteigenden Taktflanke des Bustaktes synchronisiert sind, werden bei einem DDR-SDRAM sowohl die aufsteigende als auch die fallende Taktflanke zur Datenübermittlung eingesetzt.
-
Die Datenübertragungsrate eines DDR-SDRAM, welche einer doppelten Taktfrequenz entspricht, liegt bei Taktfrequenzen im Bereich von 800 MHz bis 1 GHz bei fast 2 GHz.
-
Bei einem Lesezugriff auf den Speicherbaustein werden Daten als Datenburst ausgelesen, wobei jeder Datenburst aus mehreren Datenwörtern besteht, die jeweils eine vorbestimmte Anzahl n von Datenbits umfassen. Die Anzahl der Datenbits innerhalb eines Datenwortes entspricht der Busbreite N des Datenbusses. Bei einem Datenburst werden beispielsweise 4 Datenwörter (m = 4), die jeweils 8 Bit (n = 8) umfassen, ausgelesen. 2 zeigt das Auslesen eines Datenbursts aus einem SDRAM nach dem Stand der Technik. Aufgrund der zunehmenden Betriebsfrequenz bzw. Arbeitsfrequenz nehmen die induktiven und kapazitiven Kopplungen zu, so dass es zu Datenverfälschungen kommt. Mit zunehmender Betriebsfrequenz wird es immer schwieriger, die Daten von dem Speicherbaustein zu dem Controller zu übertragen. Eine Limitierung stellt hierbei das Rauschen bzw. Noise auf den Datenleitungen des Datenbusses dar. Das Rauschen limitiert die Gültigkeitsdauer der Daten und verringert die sogenannte Datenaugengröße. Je mehr Schaltvorgänge bzw. Datenübergänge auf den Datenleitungen auftreten, desto mehr nehmen die Datenverfälschungen zu, d. h. die Bitfehlerrate (BER) steigt an.
-
3 zeigt die Übertragung eines Datenbursts bei einem Lesezugriff von einem Speicherbaustein zu einem Controller bei einem herkömmlichen Datenverarbeitungssystem nach dem Stand der Technik. Bei dem in 3 dargestellten Beispiel wird ein Datenburst mit 8 Datenwörtern, die jeweils 8 Bit umfassen, übertragen. Nachdem der Speicherbaustein über einen Steuerbus einen Lesebefehl (RD) von dem Controller empfangen hat, überträgt er nach einer gewissen Latenzzeit ein Datenburst über den Datenbus zu dem Controller. Bei dem dargestellten Beispiel überträgt der Speicherbaustein folgende Folge von Datenwörtern, nämlich: FF, 00, 00, EF, FF, 00, 02, FF. In 3 ist die Anzahl der dabei auftretenden Bits angegeben, die bei einem Übergang von einem Datenwort zu dem nächsten Datenwort ihren Wert ändern. Beim Übergang von dem ersten Datenwort (FF) zu dem zweiten Datenwort (00) ändern alle Bits des Datenworts ihren logischen Wert. Beim nächsten Übergang ändert keines der Bits seinen logischen Wert. Beim Übergang von dem Datenwort 00 zu dem Datenwort EF ändern sieben Bits ihren logischen Wert.
-
Um das durch das Schalten hervorgerufene Rauschen zu begrenzen, wird bei dem GDDR4-(Graphics Data Double Rate-)Standard eine sogenannte Datenbitinvertierung (DBI: Data Bit Inversion) eingeführt. Hierbei wird intern im Speicherchip vor der Übertragung der Daten mit Hilfe eines Dekoders überprüft, wie viele Datenbits eines Datenworts sich relativ zu den direkt zuvor übertragenen Datenbit des vorangehenden Datenworts geändert haben. Übersteigt die Anzahl der geänderten Datenbits die Hälfte der Datenbits des Datenwortes, werden alle Datenbits des nachfolgenden Datenwortes invertiert an den Controller auf den Datenbus übertragen. Die Invertierung der Datenbits des Datenwortes werden dem Controller durch zusätzliche Übertragung eines DBI-Flags angezeigt. 4 zeigt eine derartige Datenbitinvertierung nach dem Stand der Technik und für das in 3 dargestellte Beispiel.
-
Da zwischen den beiden ersten Datenwörtern (FF, 00) mehr als die Hälfte, nämlich acht Datenbits, den Datenzustand ändern, wird das zweite Datenwort invertiert übertragen als FF. Da zwischen dem invertierten Datenwort FF und dem nächsten zu übertragenden Datenwort 00 ebenfalls mehr als die Hälfte der Datenbits ihren Zustand ändern, wird auch das dritte Datenwort invertiert und als FF an den Controller übertragen. Da zwischen dem dritten invertierten übertragenen Datenwort und dem nächsten zu übertragenden Datenwort EF nur ein Datenbitübergang und somit weniger als die Hälfte der Anzahl der Datenbits innerhalb eines Datenworts invertiert wird, wird das vierte Datenwort EF nicht invertiert an den Controller übertragen usw.. Wie man aus 4 erkennen kann, ist die Anzahl der Datenbitübergänge bzw. schaltenden Bits erheblich geringer als bei einer Datenübertragung ohne Datenbitinvertierung, wie sie in 3 dargestellt ist. 4 zeigt auch das parallel übertragene Datenbitinvertierungsflag DBI, welches dem Prozessor anzeigt, ob das empfangene Datenwort invertiert wurde oder nicht.
-
5 zeigt eine Schaltungseinheit zur Datenbitinvertierung eines aus einem Speicherbaustein ausgelesenen Datenbursts nach dem Stand der Technik. Aus dem Speicherzellenfeld wird der gesamte ausgelesene Datenburst zunächst in einem Burst-Zwischenspeicher zwischengespeichert. Beispielsweise werden in dem Burst-Zwischenspeicher m = 4 Datenwörter mit jeweils n = 8 Datenbits zwischengespeichert. Für jedes Datenwort DW innerhalb des Burst-Zwischenspeichers ist ein zugehöriger Dekodierer vorgesehen, beispielsweise m = 4 Dekodierer. Jeder Dekodierer vergleicht die Datenbits eines Datenwortes mit denjenigen Datenbits des vorangehenden Datenwortes.
-
6 zeigt einen schaltungstechnischen Aufbau eines herkömmlichen Dekodierers, wie sie in der Datenbit-Invertierungseinheit nach dem Stand der Technik gemäß 5 eingesetzt wird. Das aus dem Burst-Zwischenspeicher ausgelesene Datenwort wird bei Empfang eines Enable-Signals (EN) in ein Register geladen. Gleichzeitig wird das vorangehende Datenwort (DWi-1) des Datenbursts als Referenzdatenwort ebenfalls in ein Register geladen. Eine XOR-Logikschaltung vergleicht bitweise den Dateninhalt der beiden Register. Eine Zähleinrichtung zählt die Anzahl der unterschiedlichen Datenbits. Ein Komparator vergleicht die Anzahl der unterschiedlichen Datenbits in den beiden Datenwörtern mit der Hälfte der Anzahl von Datenbits innerhalb eines Datenwortes. Beträgt beispielsweise die Anzahl von Datenbits innerhalb eines Datenworts 8 Bit, vergleicht der Komparator die aufgefundene Anzahl von unterschiedlichen Datenbits mit dem Wert 4. Ist die Anzahl der unterschiedlichen Datenbits höher als die Hälfte der Anzahl n von Datenbits innerhalb des Datenwortes, wird ein Datenbit-Invertierungsflag (DBI) durch den Komparator gesetzt. Das DBI-Flag steuert intern einen Multiplexer des Dekoders. Das in dem ersten Register zwischengespeicherte Datenwort DWi wird durch den Multiplexer entweder invertiert oder nicht invertiert durchgeschaltet. Wenn durch den Komparator das DBI-Flag gesetzt wird, folgt eine bitweise Invertierung der Datenbits. Ist der Komparator mit dem Vergleich fertig, leitet er ein Fertig-Anzeigesteuersignal an den nächsten Dekodierer innerhalb der Kaskade weiter.
-
Wie man aus 5 erkennen kann, werden die von den Dekodierern ausgegebenen Datenwörter an einen Parallel/Seriell-Wandler angelegt, der durch das Fertig-Steuersignal des letzten Dekodierers innerhalb der Kaskade aktiviert wird. Der Parallel/Seriell-Wandler wandelt die empfangenen Datenwörter und die zugehörigen Datenbit-Invertierungsflags in einen seriellen Datenstrom um. Über einen Datenbus wird ein Datenburst bestehend aus m Datenwörtern, die jeweils eine Bitbreite n aufweisen, sowie m Datenbit-Invertierungsflags an den Controller abgegeben. Wie man aus 5 erkennen kann, arbeiten die Dekodierer der Datenbit-Invertierungseinheit nach dem Stand der Technik seriell. Die Dekodierer sind als Kaskade verschaltet, d. h. ein Dekodierer i innerhalb der Kaskade benötigt stets den Ausgabewert des vorangehenden Dekodierers i-1 innerhalb der Kaskade als Referenzdatenwort, um den notwendigen Vergleich anstellen zu können. Der Parallel/Seriell-Wandler P/S kann mit der Umwandlung der parallel anliegenden Datenwörter zu einer seriellen Folge erst beginnen, nachdem der letzte Dekodierer DECm innerhalb der Kaskade mit dem Vergleich fertig ist und ihn über ein Enable-Signal aktiviert. Die Wartezeit beträgt somit das m-fache der notwendigen Dekodierzeit eines Dekodierers i innerhalb der Kaskade: TWarte = m·TDEC
-
Beträgt beispielsweise die Dekodierzeit für einen Dekodierer DECi innerhalb der Kaskade eine Nanosekunde und umfasst ein Datenburst m = 4 Datenwörter, beträgt die Wartezeit 4 ns.
-
Die erhöhte Wartezeit führt zu einer unerwünschten Verzögerung und der Speicherzugriffszeit auf Daten innerhalb des Speicherbausteins. Dies wirkt sich insgesamt negativ auf die System-Performance aus. Die serielle Bearbeitung bei der DBI-Bewertung führt zu einer starken zeitlichen Verzögerung bei der parallelen Datenübertragung, da abgewartet werden muss, bis die Dekodierung des letzten Datenworts innerhalb des Datenbursts beendet ist. Alle schon bearbeiteten Daten müssen diese Zeit abwarten, bis sie parallel weiter verarbeitet werden können.
-
Aus der
US 6,671,212 ist eine Datenwortinvertierung bekannt, bei der über die Bitinvertierung im Datenwort durch Vergleich mit dem vorhergehenden Datenwort entschieden wird. Die Datenwörter des Datenbursts werden dabei nacheinander abgearbeitet.
-
Der
US 6,243,779 ist eine Dekodiereinheit zur Datenwortinvertierung zu entnehmen, bei der ein bitweiser Datenvergleich sequentiell zwischen zwei aufeinanderfolgenden Datenwörtern erfolgt.
-
Es ist eine der Aufgabe der vorliegenden Erfindung, eine Schaltungseinheit und ein Verfahren zur Datenbitinvertierung eines aus einem Speicherbaustein ausgelesenen Datenbursts zu schaffen, bei denen die Wartezeit und somit die Speicherzugriffszeit minimal sind.
-
Diese Aufgabe wird erfindungsgemäß durch eine Schaltungseinheit zur Datenbitinvertierung mit den in Patentanspruch 1 angegebenen Merkmalen und durch eine Verfahren zum Datenbitinvertieren mit den in Patentanspruch 18 angegebenen Merkmalen gelöst. Bevorzugte Weiterbildungen sind in den abhängigen Ansprüchen angegeben.
-
Die Erfindung schafft eine Schaltungseinheit zur Datenbitinvertierung eines aus einem Speicherbaustein ausgelesenen Datenbursts mit
- (a) einem Zwischenspeicher zum Zwischenspeichern des aus mehreren Datenwörtern bestehenden Datenbursts, wobei jedes Datenwort eine bestimmte Anzahl von Datenbits umfasst;
einer Dekodiereinheit, die aus mehreren parallel verschalteten Dekodierern besteht, wobei jeder der m Dekodierer jeweils ein zugehöriges anliegendes Datenwort des zwischengespeicherten Datenbursts mit einem benachbarten Datenwort des zwischengespeicherten Datenbursts, welches ein Referenzdatenwort bildet, bitweise vergleicht und ein Invertierungsflag erzeugt, wenn die Anzahl der unterschiedlichen Datenbits der beiden benachbarten Datenwörter mehr als die Halfte der Anzahl von Datenbits innerhalb eines Datenwortes betragt;
- (c) einer Korrektureinheit, die jedes von einem Dekodierer erzeugte Invertierungsflag in Abhangigkeit von den Invertierungsflags, die von allen ubrigen Dekodierern erzeugt werden, zur Erzeugung eines korrigierten Invertierungsflags des Dekodierers korrigiert; und mit
- (d) einer Invertierungseinheit, die aus mehreren Invertierern besteht, die jeweils das anliegende Datenwort eines zugehörigen Dekodierers in Abhängigkeit von dem korrigierten Invertierungsflag des Dekodierers invertiert oder nicht invertiert abgibt.
-
Bei einer bevorzugten Ausführungsform der erfindungsgemäßen Schaltungseinheit ist ein Parallel/Seriell-Wandler vorgesehen, der die von der Invertierungseinheit abgegebenen Datenworter und die zugehörigen korrigierten Invertierungsflags parallel/seriell wandelt und als Datenburst aus dem Speicherbaustein ausgibt.
-
Bei einer bevorzugten Ausfuhrungsform der erfindungsgemaßen Schaltungseinheit bestehen die m Invertierer der Invertierungseinheit jeweils aus n XOR-Gattern.
-
Bei einer bevorzugten Ausführungsform der erfindungsgemaßen Schaltungseinheit weist jeder Dekodierer der Dekodiereinheit eine Logikschaltung auf, die das an den Dekodierer anliegende Datenwort mit dem Referenzdatenwort bitweise vergleicht.
-
Bei einer bevorzugten Ausfuhrungsform der erfindungsgemaßen Schaltungseinheit besteht die Logikschaltung des Dekodierers aus n XOR-Gattern.
-
Bei einer bevorzugten Ausfuhrungsform der erfindungsgemäßen Schaltungseinheit weist jeder Dekodierer der Dekodiereinheit eine Zähleinrichtung auf, die die Anzahl der unterschiedlichen Datenbits des an den Dekodierer anliegenden Datenwortes und des Referenzdatenwortes ermittelt.
-
Bei einer bevorzugten Ausfuhrungsform der erfindungsgemäßen Schaltungseinheit weist jeder Dekodierer der Dekodiereinheit einen Komparator auf, der die von der Zählereinrichtung ermittelte Anzahl von Datenbits mit der halben Anzahl ( n / 2) von Datenbits innerhalb eines Datenwortes vergleicht.
-
Bei einer bevorzugten Ausführungsform der erfindungsgemäßen Schaltungseinrichtung erzeugt der Komparator des Dekodierers ein logisch hohes Invertierungsflag (DBIi), wenn die durch die Zähleinrichtung ermittelte Anzahl mehr als die Hälfte der Anzahl (n) von Datenbits innerhalb eines Datenwortes betragt.
-
Bei einer bevorzugten Ausführungsform der erfindungsgemäßen Schaltungseinheit bildet die Korrektureinheit eine separate Schaltungseinheit, die der Dekodiereinheit nachgeschaltet ist.
-
Bei einer bevorzugten Ausführungsform der erfindungsgemäßen Schaltungseinheit ist die Korrektureinheit in die Dekodiereinheit integriert.
-
Bei einer bevorzugten Ausfuhrungsform der erfindungsgemäßen Schaltungseinheit besteht die integrierte Korrektureinheit aus mehreren Korrekturschaltungen, wobei jede Korrekturschaltung in einem zugehorigen Dekodierer der Dekodiereinheit enthalten ist.
-
Bei einer bevorzugten Ausführungsform der erfindungsgemäßen Schaltungseinheit ist die Korrekturschaltung eines Dekodierers durch eine Logikschaltung gebildet, die das von dem Komparator des Dekodierers erzeugte Invertierungsflag in Abhangigkeit von den Invertierungsflags, die von den Komparatoren aller übrigen m-1 Dekodierer erzeugt werden, zur Generierung eines korrigierten Invertierungsflags des Dekodierers korrigiert.
-
Bei einer bevorzugten Ausfuhrungsform der erfindungsgemaßen Schaltungseinheit ist die integrierte Korrektureinheit durch einen Speicher gebildet, aus dem in Abhängigkeit von dem Invertierungsflag, das von dem Komparator des Dekodierers erzeugt wird, und in Abhängigkeit von allen Invertierungsflags, die von den Komparatoren der übrigen m-1 Dekodierer erzeugt werden, ein korrigiertes Invertierungsflag des Dekodierers ausgelesen wird.
-
Bei einer bevorzugten Ausführungsform der erfindungsgemäßen Schaltungseinheit steuert das korrigierte Invertierungsflag einen Multiplexer des Dekodierers an, der an den Dekodierer angelegte Daten direkt oder invertiert abgibt.
-
Bei einer bevorzugten Ausführungsform der erfindungsgemaßen Schaltungseinheit umfasst jeder Datenburst vier Datenwörter (m = 4).
-
Bei einer bevorzugten Ausführungsform der erfindungsgemäßen Schaltungseinheit umfasst jedes Datenwort acht Bit (n = 8).
-
Bei einer bevorzugten Ausfuhrungsform der erfindungsgemaßen Schaltungseinheit weist jeder Dekodierer der Dekodiereinheit eine zugehörige GAP-Erkennungseinheit auf, die zur Erzeugung eines Steuersignals für einen Multiplexer feststellt, ob das Referenzdatenwort einen Teil einer Lücke (GAP) zwischen zwei Datenbursts bildet.
-
Bei einer bevorzugten Ausführungsform der erfindungsgemaßen Schaltungseinheit steuert die GAP-Erkennungseinheit, wenn das Referenzdatenwort einen Teil einer Lücke zwischen zwei Datenbursts bildet, den Multiplexer derart an, dass ein vorbestimmtes Datenwort (FF) zum bitweisen Vergleich mit dem an dem Dekodierer anliegenden Datenwort durchgeschaltet wird, wobei die GAP-Erkennungseinheit, wenn das Referenzdatenwort nicht einen Teil einer Lücke (GAP) zwischen zwei Datenbursts bildet, den Multiplexer derart ansteuert, dass das Referenzdatenwort zum bitweisen Vergleich mit dem an dem Dekodierer anliegenden Datenwort durchgeschaltet wird.
-
Bei einer bevorzugten Ausfuhrungsform der erfindungsgemäßen Schaltungseinheit sind dem Multiplexer, der durch das von der GAP-Erkennungseinheit erzeugte Steuersignal angesteuert wird, zwei separate Dekodierer nachgeschaltet,
wobei ein erster Dekodierer das anliegende Datenwort mit dem Referenzdatenwort bitweise zur Erzeugung eines ersten Invertierungsflags (DBI1) vergleicht,
wobei ein zweiter Dekodierer das anliegende Datenwort mit einem vorbestimmten Datenwort (FF) zur Erzeugung eines zweiten Invertierungsflags (DBI2) vergleicht, und wobei der Multiplexer das erste Invertierungsflag (DBI1) und das zweite Invertierungsflag (DBI2) in Abhangigkeit von einem Steuersignal an die Korrektureinheit durchschaltet.
-
Des Weiteren werden bevorzugte Ausfuhrungsformen der erfindungsgemaßen Schaltungseinheit unter Bezugnahme auf die beigefügten Figuren zur Erläuterung erfindungswesentlicher Merkmale beschrieben.
-
Es zeigen:
-
1 eine Schaltungsanordnung nach dem Stand der Technik;
-
2 den Aufbau eines Datenbursts nach dem Stand der Technik;
-
3 das Auslesen eines Datenbursts aus einem DRAM ohne Datenbitinvertierung nach dem Stand der Technik;
-
4 das Auslesen eines Datenbursts aus einem DRAM mit Datenbitinvertierung nach dem Stand der Technik;
-
5 eine Schaltungseinheit zur Datenbitinvertierung eines aus einem Speicherbaustein ausgelesenen Datenbursts nach dem Stand der Technik;
-
6 ein Blockschaltbild eines Dekodierers innerhalb der herkömmlichen Schaltungseinheit zur Datenbitinvertierung nach dem Stand der Technik, wie sie in 5 dargestellt ist;
-
7 eine erste Ausführungsform der erfindungsgemaßen Schaltungseinheit zur Datenbitinvertierung;
-
8 ein Blockschaltbild eines Dekodierers innerhalb der Schaltungseinheit gemäß der ersten Ausführungsform, wie sie in 7 dargestellt ist;
-
9 eine Tabelle der innerhalb einer Korrekturschaltung abgelegten Datenbit-Invertierungsflags gemäß einer ersten Ausführungsform der erfindungsgemäßen Schaltungseinheit;
-
10 eine zweite Ausfuhrungsform der erfindungsgemäßen Schaltungseinheit zur Datenbitinvertierung eines aus einem Speicherbaustein ausgelesenen Datenbursts;
-
11 ein Blockschaltbild eines Dekodierers innerhalb der Schaltungseinheit gemäß der in 10 dargestellten zweiten Ausführungsform;
-
12 ein Blockschaltbild einer Korrektureinheit gemäß der zweiten Ausführungsform der erfindungsgemäßen Schaltungseinheit zur Datenbitinvertierung;
-
13 ein Diagramm zur Erläuterung einer Lücke zwischen zwei Datenbursts zur Erlauterung der Funktionsweise einer bevorzugten Ausführungsform der erfindungsgemäßen Schaltungseinheit;
-
14 eine bevorzugte Ausführungsform einer innerhalb der erfindungsgemäßen Schaltungseinheit eingesetzten GAP-Erkennungseinheit; und
-
15 eine bevorzugte Ausführungsform der innerhalb der erfindungsgemäßen Schaltungseinheit eingesetzten GAP-Erkennungseinheit.
-
7 stellt eine erste Ausführungsform der erfindungsgemäßen Schaltungseinheit 1 zur Datenbitinvertierung eines aus einem Speicherbaustein ausgelesenen Datenbursts dar. Die erfindungsgemaße Schaltungseinheit 1 ist innerhalb des Speicherbausteins integriert und bildet einen Teil des Lesesignalpfads. Der Speicherbaustein enthalt ein Speicherzellenfeld 2 mit einer Vielzahl von Speicherzellen zum Speichern von Datenbits. Uber einen internen Datenbus 3 werden alle Datenbits eines auszulesenden Datenbursts in einen Burst-Zwischenspeicher 4 der Schaltungseinheit 1 zwischengespeichert. Besteht der Datenburst aus m Datenwortern zu je n Datenbits, werden gleichzeitig m·n Datenbits in den Burst-Zwischenspeicher 4 eingeschrieben.
-
Die Schaltungseinheit 1 enthält eine Dekodiereinheit 5, die aus mehreren parallel verschalteten Dekodierern 5-i besteht. Für jedes Datenwort DWi ist ein zugehöriger Dekodierer 5-i innerhalb der Dekodiereinheit 5 vorgesehen. Jeder Dekodierer 5-i vergleicht bitweise jeweils das an ihm anliegende zugehörige Datenwort DWi des zwischengespeicherten Datenbursts DB mit einem benachbarten Datenwort DWi-1 des zwischengespeicherten Datenbursts DB. An einem ersten Dateneingang 6-i des Dekodierers 5-i liegt das zugehörige Datenwort DWi des zwischengespeicherten Datenbursts DB an. An einem zweiten Dateneingang 7-i des Dekodierers 5-i liegt jeweils das benachbarte Datenwort des zwischengespeicherten Datenbursts DB als Referenzdatenwort an. Jeder Dekodierer 5-i vergleicht das an dem ersten Dateneingang 6-i anliegende Datenwort des zwischengespeicherten Datenbursts DB mit dem an dem zweiten Dateneingang 7-i anliegenden benachbarten Datenwort bitweise und erzeugt ein Invertierungsflag DBIi, wenn die Anzahl der unterschiedlichen Datenbits der beiden benachbarten Datenwörter mehr als die Hälfte der Anzahl n von Datenbits innerhalb eines Datenwortes beträgt. Wie man aus 7 erkennen kann, sind die Dekodierer innerhalb der Dekodiereinheit parallel verschaltet und werden synchron uber eine gemeinsame Taktleitung 8 getaktet. Jeder Dekodierer 5-i weist einen Takteingang 9-i auf. Die parallel verschalteten Dekodierer 9-i der Dekodiereinheit 5 werden durch ein gemeinsames Aktivierungssignal (Enable) über eine Steuerleitung 10 aktiviert. Jeder Dekodierer enthalt einen Enable-Steuereingang 11.
-
Bei der in
7 dargestellten ersten Ausfuhrungsform weist jeder Dekodierer einen Datenausgang
12 zur Abgabe des anliegenden Datenwortes DW
i in invertierter oder nicht invertierter Form auf. Die von den Dekodierern
5-i abgegebenen invertierten bzw. nicht invertierten Datenworter werden über einen internen Datenbus
13-i an einen nachgeschalteten Parallel/Seriell-Wandler
14 abgegeben. Dabei generiert bei der in
7 dargestellten ersten Ausfuhrungsform der erfindungsgemaßen Schaltungseinheit jeder Dekodierer
5-i ein Datenbit-Invertierungsflag, welches über eine Ausgabeleitung
15 ebenfalls an den Parallel/Seriell-Wandler
14 ausgegeben wird. Die von den Dekodierern
5-i ausgegebenen Datenbit-Invertierungsflags DBI werden über einen internen Bus
16 an alle übrigen Dekodierer
5-i innerhalb der Dekodiereinheit
5 angelegt. Bei der in
7 dargestellten ersten Ausfuhrungsform erzeugt eine innerhalb der Dekodierer
5-i vorgesehene integrierte Korrektureinheit in Abhängigkeit von den Invertierungsflags DBI
i, die von allen übrigen Dekodierern erzeugt werden, in jedem Dekodierer jeweils ein korrigiertes Invertierungsflag
das über eine Datenleitung
17-i an den Parallel/Seriell-Wandler
14 abgegeben wird. Sobald ein Dekodierer
5-i mit der Dekodierung fertig ist, zeigt er dies an einem Steuerausgang
18-i an. Die Anzeigeausgänge der Dekodierer
5-i sind über eine gemeinsame Steuerleitung
19 an einen Aktivierungseingang (Enable)
20 des Parallel/Seriell-Wandlers
14 angeschlossen. Sobald alle Dekodierer
5-i der Schaltungseinheit
1 fertig sind mit dem Dekodieren, beginnt der Parallel/Seriell-Wandler
14 mit der Umwandlung. Der Parallel/Seriell-Wandler
14 wandelt die von den Dekodiereinheiten empfangenen Datenworter DW und die zugehörigen korrigierten Invertierungsflags DBI parallel/seriell um und gibt sie als Datenburst DB aus dem Speicherbaustein aus. Die korrigierten Invertierungsflags DBI
KORR werden über einen m Bit breiten Datenbus
21 und die Datenworte werden über einen n Bit breiten Datenbus
22 ausgelesen. Auf diese Weise wird der Datenburst DB seriell an den Controller ubertragen.
-
Die Bewertung der Datenworter DW eines Datenbursts DB, die in dem Burst-Zwischenspeicher 4 zwischengespeichert sind, erfolgt erfindungsgemaß durch die Dekodiereinheit 5 parallel fur alle vorliegenden Datenbits zur gleichen Zeit. Sobald die Dekodierer 5-i der Dekodiereinheit 5 das Aktivierungssignal uber die Steuerleitung 10 erhalten haben, beginnen sie mit dem Dekodiervorgang. Als Referenzdatenwort dient das an dem zweiten Dateneingang 7-i anliegende benachbarte Datenwort DWi-1. Da die Dekodierer 5-i zu diesem Zeitpunkt keine Information darüber haben, ob der als Referenzdatenwort verwendete Datenwert seinerseits invertiert werden muss oder nicht, führt eine Korrektureinheit eine entsprechende Nachkorrektur durch. Sobald die Dekodierung durch die Dekodierer 5-i abgeschlossen ist, wird uber die Steuerleitung 19 der Parallel/Seriell-Wandler 14 aktiviert, der die durch die Dekodiereinheit 5 ausgegebenen Datenworter DW und die korrigierten Datenbit-Invertierungsflags ausgibt.
-
Da die Dekodierer 5-i der Dekodiereinheit 5 alle gleichzeitig parallel arbeiten, setzt sich die Wartezeit aus der Bearbeitungszeit eines Dekodierers und derjenigen Zeit, die für die Nachkorrektur notwendig ist, zusammen: TWARTE = TEC + TKORR < m·TDEC
-
Besteht ein Datenburst aus m = 4 Datenwörtern und betragt die Dekodierzeit eines Dekodierers 5-i beispielsweise 1 ns, betragt die Wartezeit einer herkömmlichen Schaltungseinheit zur Datenbitinvertierung 4·1 ns wahrend bei der erfindungsgemäßen Schaltungseinheit 1 zur Datenbitinvertierung die Wartezeit lediglich 1 ns zuzüglich derjenigen Zeit ist, die fur die Nachkorrektur benotigt wird. Da die fur die Nachkorrektur benotigte Zeit sehr gering ist und typischerweise unter 1 ns liegt, beträgt die Wartezeit der erfindungsgemäßen Schaltungseinheit zur Datenbitinvertierung weniger als 2 ns und somit weniger als die Halfte derjenigen Dekodierzeit, die bei einer herkommlichen Schaltungseinheit zur Datenbitinvertierung benotigt wird. Aufgrund der herabgesetzten Wartezeit TWARTE zur Dekodierung wird die Speicherzugriffszeit bei einem Speicherbaustein, der die erfindungsgemaße Schaltungseinheit zur Datenbitinvertierung enthalt, erheblich abgesenkt.
-
8 zeigt den schaltungstechnischen Aufbau eines Dekodierers 5-i innerhalb der Dekodiereinheit 5 gemaß der ersten Ausführungsform der Erfindung, wie sie in 7 dargestellt ist. Der Dekodierer 5-i enthält ein erstes Register 5A zum Zwischenspeichern des an dem ersten Datensignaleingang 6-i anliegenden Datenwortes DWi, welches aus dem Burst-Zwischenspeicher 4 ausgelesen wird. Darüber hinaus enthalt der Dekodierer 5-i ein zweites Register 5B, das das an dem zweiten Dateneingang 7-i anliegende Referenzdatenwort, welches durch das benachbarte Datenwort gebildet wird, zwischenspeichert. Die beiden Register 5A, 5B werden über eine interne Steuerleitung in Abhangigkeit von dem Aktivierungssteuersignal (Enable) zum Zwischenspeichern der anliegenden Daten aktiviert. Der Dekodierer 5-i enthalt ferner eine Logikschaltung 5C, welche die in den beiden Registern 5A, 5B zwischengespeicherten Datenbits bitweise miteinander vergleicht. Die Logikschaltung 5C weist vorzugsweise n XOR-Gatter auf, welche jeweils ein Datenbit der beiden benachbarten Datenwörter miteinander vergleicht. Eine der Logikschaltung 5C nachgeschaltete Zähleinrichtung 5D ermittelt die Anzahl der unterschiedlichen Datenbits. Ein Komparator 5E vergleicht die Anzahl der unterschiedlichen Datenbits der beiden benachbarten Datenwörter mit der Hälfte der Anzahl n von Datenbits innerhalb eines Datenwortes DWi. Ist die Anzahl der unterschiedlichen Datenbits großer als die Halfte der Anzahl von Datenbits innerhalb eines Datenwortes DWi, wird durch den Komparator 5E ein internes Datenbit-Invertierungsflag DBIi gesetzt und uber eine Ausgabeleitung 15-i an den internen Bus 16 abgegeben. Bei einer bevorzugten Ausführungsform wird das interne Datenbit-Invertierungsflag logisch hoch gesetzt, wenn die Anzahl der unterschiedlichen Datenbits mehr als die Halfte der Anzahl von Datenbits innerhalb eines Datenwortes betragt.
-
Bei der in 8 gezeigten ersten Ausfuhrungsform des Dekodierers 5-i enthält der Dekodierer 5-i eine integrierte Korrektureinheit 5F. Die Korrektureinheit 5F wird entweder durch eine Logikschaltung gebildet oder durch einen Speicher. Wird die Korrektureinheit 5F durch eine Logikschaltung gebildet, korrigiert diese das erzeugte Invertierungsflag DBIi, welches durch den Komparator 5E generiert wird, in Abhängigkeit von denjenigen Invertierungsflags, die von den Komparatoren aller übrigen m-1 Dekodierer 5-i erzeugt werden. Die Korrektureinheit 5F erhält die Invertierungsflags, die von den übrigen Dekodierern 5-i erzeugt werden, uber den internen Bus 16. Die Korrektureinheit 5F erzeugt in Abhängigkeit von den empfangenen Invertierungsflags der ubrigen Dekodierer und dem von dem Komparator 5E erzeugten internen Invertierungsflag ein korrigiertes Invertierungsflag DBIKORR, das über eine Ausgabeleitung 17-i an den Parallel/Seriell-Wandler 14 abgegeben wird, wie dies in 7 dargestellt ist. Das korrigierte Invertierungsflag DBIKORR steuert zudem einen in dem Dekodierer 5-i integrierten Multiplexer 5G an. Das in dem Register 5A zwischengespeicherte Datenwort DWi wird uber eine Invertierungseinheit 5H an einen ersten Eingang des Multiplexers oder direkt an einen zweiten Eingang des Multiplexers 5G angelegt. Das korrigierte Invertierungsflag DBIKORR, welches von der Korrektureinheit 5F erzeugt wird, steuert den Multiplexer 5G an, so dass über die Ausgabeleitungen 13-i entweder das in dem Register 5A zwischengespeicherte Datenwort DWi unverändert oder invertiert ausgegeben wird. Bei einer bevorzugten Ausführungsform wird, wenn das korrigierte Invertierungsflag DBIKORR logisch hoch ist, das in dem Register 5A zwischengespeicherte Datenwort DWi invertiert ausgegeben.
-
Bei einer alternativen Ausführungsform wird die Korrektureinheit 5F innerhalb des Dekodierers 5-i durch einen Speicher gebildet, in dem eine Tabelle abgespeichert ist. 9 zeigt ein Beispiel fur eine derartige Korrekturtabelle innerhalb der Korrektureinheit 5F fur eine Dekodiereinheit 5, welche m = 4 Dekodierer 5-i enthält. Von den vier parallel verschalteten Dekodierern 5-i innerhalb der Dekodiereinheit 5 werden vier DBI-Werte erzeugt, die einer Nachkorrektur unterzogen werden. Fur vier DBI-Werte gibt es 16 Kombinationsmoglichkeiten, aus denen 16 korrigierte Kombinationen hergeleitet werden. Bei dem in 9 dargestellten Beispiel erhält jede Korrektureinheit 5F an allen Dekodiereinheiten 5-i die berechneten DBI-Flags über den internen Bus 16, d. h. die ersten vier Spalten der Tabelle in 9 bilden die Input-Daten für die Korrektureinheit 5F. Die Korrektureinheit 5F der ersten Dekodiereinheit 5-1 gibt die fünfte Spalte der Tabelle als korrigiertes Datenbit-Invertierungsflag über die zugehörige Ausgabeleitung 17-1 aus. Die zweite Korrektureinheit 5F innerhalb der zweiten Dekodiereinheit 5-2 gibt die sechste Spalte als korrigiertes Invertierungsflag DBIKORR2 aus, usw.. Die in 9 dargestellte Korrekturtabelle ist in Abhängigkeit von den 16 Kombinationsmöglichkeiten, die in den vier ersten Spalten angegeben sind, gebildet. Liest man die ersten vier Spalten der Korrekturtabelle reihenweise, so ergeben sich die letzten vier Spalten der Korrekturtabelle, indem man, sobald ein Datenbit-Invertierungsflag einen logisch hohen Wert (1) annimmt, die nachfolgenden Datenbit-Invertierungsflags innerhalb dieser Zeile bis zur nachsten logisch hohen Wert (1) invertiert und die übrigen Datenbit-Invertierungsflags innerhalb der Zeile belässt, bis die nächste logische 1 in der Zeile auftaucht.
-
10 zeigt eine weitere alternative Ausführungsform der erfindungsgemäßen Schaltungseinheit 1 zur Datenbitinvertierung eines aus einem Speicherbaustein ausgelesenen Datenbursts. Bei der in 10 dargestellten Ausfuhrungsform ist die Korrektureinheit nicht in der Dekodiereinheit 5 integriert, sondern bildet eine selbstständige Einheit. Eine Korrektureinheit 23 ist bei dieser Ausfuhrungsform der Dekodiereinheit 5 nachgeschaltet. Auch die Invertierungseinheit bildet bei dieser Ausführungsform eine selbststandige Einheit 24. Die von den Dekodierern der Dekodiereinheit 5 erzeugten Invertierungsflags werden über Datenleitungen 15-i der Korrektureinheit 23 zugeführt.
-
11 zeigt den schaltungstechnischen Aufbau eines Dekodierers 5-i innerhalb der Dekodiereinheit 5 bei der erfindungsgemäßen Schaltungseinheit 1 gemaß der in 10 dargestellten Ausfuhrungsform. Das von dem Dekodierer 5-i zwischengespeicherte Datenwort DWi wird über Datenleitungen 13-i an eine XOR-Logikschaltung 24-i innerhalb der Invertierungseinheit 24 abgegeben und in Abhängigkeit von den erzeugten korrigierten Datenbit-Invertierungsflags, die durch die Korrektureinheit 23 erzeugt werden, invertiert oder nicht invertiert von dem Parallel/Seriell-Wandler 14 ausgegeben.
-
12 zeigt einen schaltungstechnischen Aufbau der Korrektureinheit 23 für ein Datenburst, der m = 4 Datenwörter umfasst.
-
13 zeigt die Übertragung von Datenbursts in verschiedenen Betriebsmodi. Bei den in 13A dargestellten Betriebsmodus werden die Datenbursts DB luckenlos ubertragen, d. h. es besteht keine Datenlucke zwischen zwei Datenbursts. Demzufolge kann das letzte Datenwort des vorangehenden Datenbursts DBi-1 in diesem Betriebsmodus als Referenzdatenwert für das erste Datenwort des nachstfolgenden Datenbursts DBi dienen. In einem alternativen Betriebsmodus, bei der eine Datenlücke auftritt, sind die Datenbits während einer vorgegebenen Zeit, die den zeitlichen Mindestabstand zwischen Read-Befehlen (RD) angibt, auf dem Datenbus logisch hoch. Diese logisch hoch gesetzten Datenbits konnen als Referenzdatenwert (FF) für die Datenbitinvertierung genutzt werden, wie in 13B ersichtlich ist. Während dieser Zeit befinden sich alle Datenleitungen in einem definierten Datenzustand, d. h. alle Datenleitungen werden mittels aktiver Terminierungs-Pull-up-Widerstande logisch hoch gezogen. Wahrend in dem lückenlosen Betriebsmodus das letzte Datenwort des zuvorgehenden Datenbursts DBi-1 als Referenzdatenwert genutzt wird, wird in dem Betriebsfall, dass eine Datenlücke zwischen den Datenbursts auftritt ein Referenzdatenwort herangezogen, bei dem alle Daten logisch hoch gesetzt sind, d. h. in dem Gap-Betriebsmodus ist das Referenzdatenwort durch den Wert FF gebildet.
-
In einer bevorzugten Ausführungsform der erfindungsgemäßen Schaltungseinheit 1 werden die Dekodierer 5-i innerhalb der Dekodiereinheit 5 derart erweitert, dass sie beide Betriebsmodi berucksichtigen. Hierzu wird für jeden Dekodierer 5-i eine GAP-Erkennungseinheit 25 vorgesehen, die erkennt, ob eine Datenlücke zwischen zwei Datenbursts DB besteht oder nicht. Die GAP-Erkennungseinheit 25, wie sie in 14 dargestellt ist, erzeugt ein Steuersignal für einen Multiplexer 26 in Abhängigkeit davon, ob das Referenzdatenwort einen Teil einer Datenlucke zwischen zwei Bursts DB bildet oder nicht. Sobald ein Kommandodekoder 26 innerhalb des Speicherbausteins einen Read-Befehl (RD) erkennt, gibt er ein Trigger-Signal uber eine Leitung 27 an den Set-Eingang eines Flip-Flops 28 innerhalb der GAP-Erkennungseinheit 25 aus und startet gleichzeitig einen Zähler 29. Der Zähler 29 zählt die in einem Register des Speicherbausteins programmierte Lange N eines Datenbursts DB ab. Sobald die Datenlänge N des Datenbursts erreicht ist, sendet der Zahler 29 einen Rucksetzimpuls an das Flip-Flop 28. Im Falle eines kontinuierlichen Datenzugriffs, bei dem keine Datenlücke auftritt, wird der erzeugte Rücksetzimpuls durch erneutes Lesen an einem Gatter 30 innerhalb der GA2-Erkennungseinheit 25 unterdrückt, so dass das an der Steuerleitung 31 erzeugte Steuersignal (Read Gapless) gesetzt bleibt. Bei gesetztem Steuersignal der Steuerleitung 31, d. h. für über den Gapless-Betriebsfall, wird als Referenzdatenwort für die Dekodierer 5-i das benachbarte Datenwort des zwischengespeicherten Datenbursts, welches an dem ersten Signaleingang 32 des Multiplexers anliegt, uber Datenleitungen 33 als Referenzdatenwort an den Dekodierer 5-i durchgeschaltet. Wird durch die Erkennungseinheit 25 umgekehrt erkannt, dass zwischen beiden Datenbursts eine Lücke aufgetreten ist, wie dies in 13B dargestellt ist, wird der Multiplexer 26 auf seinen zweiten Signaleingang 34 umgeschaltet, so dass der Dekodierer 5-i ein vorbestimmtes Referenzdatenwort erhalt, vorzugsweise das Referenzdatenwort FF.
-
Bei kontinuierlichem Datenzugriff (Gapless) ist der Referenzdatenwert das letzte Datenwort, das auf dem Bus getrieben wurde. Bei Zugriffen mit Abständen wird der Referenzdatenwert durch ein vorbestimmtes Datenwort, beispielsweise FF, gebildet. Bei dem GDDR3- und GDDR4-Interface mit entsprechendem Standard wird der Datenbus bei auftretenden Datenlücken im Ruhezustand auf High-Pegel terminiert. Für die Datenbitinvertierung hat dies zur Folge, dass zum Start der ersten Bewertung der Referenzwert fur alle Datenbits auf high gesetzt ist.
-
15 zeigt eine weitere Verbesserung der in 14 dargestellten Schaltungsanordnung. Bei der in 15 dargestellten Ausfuhrungsform wird jeder Dekodierer 5-i der Dekodiereinheit 5 durch zwei parallel verschaltete Dekodierer 5A-i, 5B-i ersetzt, die dem Multiplexer 26 vorgeschaltet sind. Bei der in 14 dargestellten Ausführungsform erfolgt die Gap-Erkennung und die anschließende Dekodierung seriell hintereinander, so dass hierdurch die Wartezeit bzw. Zugriffszeit entsprechend der Dauer des Erkennungsvorgangs erhoht wird. Bei der in 15 dargestellten bevorzugten Ausfuhrungsform erfolgt die Erzeugung des Datenbit-Invertierungsflags parallel für beide Betriebsfälle, d. h. durch den ersten Dekodierer 5A-i fur den Fall lückenloser Datenbursts und durch den Dekodierer 5B-i für den Fall, dass eine Datenlücke zwischen zwei Datenbursts auftritt. Parallel dazu erkennt die Gapless-Erkennungsschaltung 25, welcher der beiden Betriebsmodi vorliegt. Während die Datenbit-Invertierungsflags durch die beiden Dekodierer erzeugt werden, erfolgt die Erkennung, welcher der beiden Betriebsfalle vorliegt, durch die Gapless-Erkennungseinheit 25, so dass die Wartezeit das Maximum der beiden Bearbeitungszeiten der Gapless-Einheit 25 und der Dekodiereinheiten 5A, 5B ergibt. ΔT = max(TDEC, TGAPDEC) < TGAPDEC + TDEC
-
Durch das Vorsehen zweier paralleler Dekodierer 5A, 5B kann die Wartezeit bzw. Speicherzugriffszeit weiter minimiert werden.