PatentDe  


Dokumentenidentifikation DE602004001679T2 02.08.2007
EP-Veröffentlichungsnummer 0001604371
Titel SPEICHERSYSTEM MIT SEQUENZIELL AUSGEFÜHRTEN SCHNELLEN UND LANGSAMEN LESEZUGRIFFEN
Anmelder ARM Ltd., Cherry Hinton, Cambridge, GB;
The University of Michigan, Ann Arbor, Mich., US
Erfinder AUSTIN, Michael, Todd, Ann Arbor, MI 48105, US;
BLAAUW, Theodore, David, Ann Arbor, MI 48104, US;
MUDGE, Nigel, Trevor, Ann Arbor, MI 48105-2880, US;
FLAUTNER, Krisztian, Cambridge CB1 2NU, GB;
SYLVESTER, Michael, Dennis, Ann Arbor, MI 48103, US
Vertreter Dr. Weber, Dipl.-Phys. Seiffert, Dr. Lieke, 65183 Wiesbaden
DE-Aktenzeichen 602004001679
Vertragsstaaten DE, FR, GB, IT, NL
Sprache des Dokument EN
EP-Anmeldetag 17.03.2004
EP-Aktenzeichen 047212303
WO-Anmeldetag 17.03.2004
PCT-Aktenzeichen PCT/GB2004/001137
WO-Veröffentlichungsnummer 2004084233
WO-Veröffentlichungsdatum 30.09.2004
EP-Offenlegungsdatum 14.12.2005
EP date of grant 26.07.2006
Veröffentlichungstag im Patentblatt 02.08.2007
IPC-Hauptklasse G11C 29/00(2006.01)A, F, I, 20051224, B, H, EP
IPC-Nebenklasse G11C 7/10(2006.01)A, L, I, 20051224, B, H, EP   G06F 11/14(2006.01)A, L, I, 20051224, B, H, EP   

Beschreibung[de]

Diese Erfindung betrifft das Gebiet der Datenverarbeitungssysteme. Genauer gesagt betrifft die Erfindung einen Speicher für das Speichern von Daten in Datenverarbeitungssystemen.

Es ist bekannt, Speicher innerhalb von Datenverarbeitungssystemen mit einer Hierarchie von Speicherlevels bereitzustellen. Ein Speichersystem kann typischerweise ausgebildet sein beginnend mit einem lokalen Cachespeicher und sich nach außen erweitern über einen Hauptfestkörperspeicher und möglicherweise nicht flüchtigen permanenten Speicher, wie z. B. ein Festplattenlaufwerk. Ein wichtiges Leistungsmerkmal für Speicher ist die Geschwindigkeit, mit der sie ausgelesen werden können. Je schneller Datenwerte aus einem Speicher ausgelesen werden können, umso höher ist die Maximalgeschwindigkeit der Datenverarbeitung, die typischerweise erzielt werden kann (andere Faktoren außer der Speicherlesegeschwindigkeit können die Verarbeitungsgeschwindigkeit ebenso begrenzen). Speichersystemkonstruktionen beinhalten normalerweise ein Gleichgewicht zwischen Geschwindigkeit und anderen Parametern, wie z. B. Kapazität, Energieverbrauch, Kosten, Komplexität usw.

In dem Kontext von Speichersystemen ergibt es ebenso einen Grad der herstellungs- oder zustandsinduzierten Variation in der Leseleistung, die erzielt werden kann. Beispielsweise können Herstellungsvariationen in der Art, wie ein integrierter Schaltkreisspeicher produziert wird, zu verschiedenen maximalen Lesegeschwindigkeiten, die erzielt werden können, führen, wenn ansonsten identische integrierte Speicherschaltkreise verglichen werden. Es ist ebenso möglich, daß die maximale Leseleistung, die erzielt werden kann, abhängig von dem physikalischen oder logischen Zustand des Systems variieren wird, z. B. abhängig von der Umgebungstemperatur.

Um den korrekten Betrieb sicherzustellen, betreiben Speichersystemdesigner normalerweise das Speichersystem, um zu einem gegebenen Zeitpunkt einen Lesewert hiervon abzufragen, um sicherzustellen, daß im schlimmsten Fall von Annahmen umfassend die Herstellungsvariationen, die Umgebungsbedingungen usw. die mit den betreffenden Speichersystemen verbunden sind, der korrekte Lesewert von dem Speicher ausgegeben wird. Ein Speichersystemdesigner wird eine geringste wahrscheinliche Lesegeschwindigkeit berechnen und dann einen bestimmten Sicherheitsbereich dazu addieren, wenn er entscheidet, mit welcher Geschwindigkeit der Speicher betrieben werden sollte. Während dieser Ansatz sicher in Bezug auf das Sicherstellen der korrekten Betriebs und der Datenintegrität ist, kann er die Datenverarbeitungsleistung, die erreicht werden kann, signifikant beschränken.

Als konkreteres Beispiel kann es wünschenswert sein, einen Speicher in einem Niedrigenergieverbrauchsmodus zu betreiben. In diesem Modus ist die Leseleistung geringer als in einem entsprechenden Hochenergieverbrauchsmodus, z. B. kann ein integrierter Speicherschaltkreis schneller ausgelesen werden, wenn er mit einer höheren Spannung betrieben wird als wenn er mit einer niedrigeren Spannung betrieben wird. In diesen Fällen, um den korrekten Betrieb und die Datenintegrität sicherzustellen, ist der Systemdesigner normalerweise gezwungen, entweder eine Speicherleseleistung anzunehmen, die geringer ist als die mit dem bestimmten betreffenden Speicher letztlich erreichbar ist, und/oder in einem höheren Energieverbrauchszustand zu arbeiten, der tatsächlich notwendig wäre, um den gewünschten Grad von Verarbeitungsleistung zu erzielen.

Aus der US-B-6188610 ist ein Speicher bekannt, der auf Basis von zwei Lesemechanismen betrieben wird, wobei der zweite Lesemechanismus eine Lesespannung verwendet, die sich von derjenigen des ersten Lesemechanismus unterscheidet, und wobei das Lesen wiederholt wird, wenn die Leseergebnisse nicht übereinstimmen. Betrachtungen im Bezug auf die Lesegeschwindigkeit werden nicht durchgeführt.

Von einem Aspekt aus betrachtet stellt die vorliegende Erfindung einen Speicher bereit für das Speichern von Daten, der aufweist:

einen schnellen Datenlesemechanismus, der betreibbar ist, um einen Datenwert aus dem Speicher auszulesen, um ein schnelles Leseergebnis zu erzeugen, das von dem Speicher für die weitere Verarbeitung ausgegeben wird,

einen langsamen Datenlesemechanismus, der in der Weise betreibbar ist, daß er den Datenwert von dem Speicher ausliest, um ein langsames Leseergebnis zu erzeugen, das verfügbar ist, nachdem das schnelle Leseergebnis für die weitere Verarbeitung ausgegeben wurde, wobei der langsame Datenlesemechanismus beim Lesen des Datenwertes weniger fehleranfällig ist als der schnelle Datenlesemechanismus,

einen Vergleicher, der so betreibbar ist, daß er das schnelle Leseergebnis und das langsame Leseergebnis vergleicht, um festzustellen, ob das schnelle Leseergebnis sich von dem langsamen Leseergebnis unterscheidet, und

eine Fehlerreparaturlogik, die in der Weise betreibbar ist, daß sie dann, wenn der Vergleicher erfaßt hat, daß das schnelle Leseergebnis sich von dem langsamen Leseergebnis unterscheidet, die Weiterverarbeitung unter Verwendung des schnellen Leseergebnisses stoppt, um anstelle des schnellen Leseergebnisses das langsame Leseergebnis auszugeben und die weitere Verarbeitung auf der Basis des langsamen Leseergebnisses erneut zu beginnen.

Die vorliegende Erfindung erkennt, daß ein Speicher mit mehr als einem Lesemechanismus betrieben werden kann. Ein schneller Lesemechanismus kann bereitgestellt werden, der einen relativ offensiven Satz von Leistungsannahmen verwendet. Dieser schnelle Lesemechanismus wird manchmal die Daten aus dem Speicher fehlerhaft auslesen aufgrund dessen, daß die Leistungsannahmen zu offensiv waren, z. B. kann die Lesezeit zu schnell sein oder die Betriebsspannung zu gering. Der Speicher der vorliegenden Technik ist jedoch ebenso mit einem langsamen Datenlesemechanismus ausgestattet, der den Datenwert von dem Speicher zu einem späteren Zeitpunkt ausliest, und der jedoch weniger anfällig gegenüber Fehlern beim Lesen des Datenwertes ist verglichen mit dem schnellen Datenlesemechanismus. Um von den offensiven Leistungsannahmen, die mit dem schnellen Datenlesemechanismus verknüpft sind, zu profitieren, wird das schnelle Leseergebnis von dem Speicher weitergeleitet für die weitere Verarbeitung sobald es verfügbar ist und bevor das langsame Leseergebnis verfügbar ist. Das langsame Leseergebnis wird mit dem schnellen Leseergebnis verglichen, wenn das langsame Leseergebnis verfügbar wird und, wenn ein Unterschied erfaßt wird, dann arbeitet die Fehlerreparaturlogik derart, daß die weitere Verarbeitung unter Verwendung des schnellen Leseergebnisses unterdrückt wird, und das langsame Leseergebnis statt dessen ausgegeben wird. Es wird angenommen, daß das langsame Leseergebnis der korrekte Datenwert ist und dient dazu, die nichtkorrekte Verarbeitung, die mit dem schnellen Leseergebnis verknüpft ist, zu ersetzen. Selbst wenn die Unterdrückung der weiteren Verarbeitung, die bereits unter Verwendung des schnellen Leseergebnisses begonnen haben kann, wahrscheinlich eine signifikante Zeitverzögerung verursachen wird, wird, vorausgesetzt die Notwendigkeit dieser Unterdrückung aufzurufen ist ausreichend selten, eine Gesamtverbesserung der Leistung erfolgen (falls diese in der Verarbeitungsgeschwindigkeit, der geringen erreichbaren Betriebsspannung oder auf andere Weise gemessen wird).

Es versteht sich, daß die Technik des schnellen und langsamen Datenlesemechanismus, der oben beschrieben wurde, in einer weiten Vielfalt von unterschiedlichen Speichern eingesetzt werden kann, z. B. Plattenlaufwerke, sie ist jedoch insbesondere gut geeignet bei integrierten Schaltkreisspeichern, die typischerweise eine Anordnung von Speicherzellen aufweisen, die über eine oder mehrere Bitleitungen ausgelesen werden.

Im Kontext solcher integrierter Schaltkreisspeichern kann der schnelle Datenlesemechanismus so angeordnet sein, daß er betreibbar ist, um die Bitleitungen mit einer ersten Verzögerungszeit gefolgt auf eine Leseoperation, die initiiert wurde, abzufragen und mit dem langsamen Datenlesemechanismus, der die Bitleitung bei einer zweiten, späteren Zeit abfragt, zu vergleichen. Die Bitleitungen, mit der ein integrierter Schaltkreisspeicher ausgelesen wird, benötigen ein endliches Zeitintervall, nachdem sie mit den relevanten Speicherzellen verbunden sind, um auf die entsprechenden Werte gebracht zu werden, die den betreffenden Datenwert anzeigen. Diese Zeit, die von den Bitleitungen benötigt wird, um den erforderlichen Level zu erhalten, kann variieren abhängig von einer Vielzahl von unterschiedlichen Faktoren, wie z. B. Herstellungstoleranzen, Betriebsspannung, Betriebstemperatur, benachbarten Datenwerten, die im Speicher gehalten werden, usw. Der schnelle Datenlesemechanismus fragt die Bitleitung früh ab, und zwar zu einer Zeit, wenn der korrekte Wert normalerweise vorhanden ist, jedoch nicht immer. Der langsame Datenlesemechanismus fragt die Bitleitungen zu einem späteren Zeitpunkt ab, wenn der korrekte Datenwert mehr oder weniger sicher verfügbar ist. Sollte ein Unterschied zwischen dem frühen und dem späten Lesewert auftreten, dann wird die Verwendung des frühen Lesewertes unterdrückt und durch den späten Lesewert ersetzt.

Während einige Speicher eine einzelne Bitleitung verwenden können, ist die Erfindung insbesondere gut geeignet bei Ausführungsformen, bei denen die Speicherzelle über ein Paar aus Bitleitungen ausgelesen wird, und insbesondere, wo ein oder mehrere strom- oder spannungsempfindliche Differenzleseverstärker derart betreibbar sind, daß sie Signalwerte von dem Paar von Bitleitungen lesen.

Es versteht sich, daß während der schnelle und der langsame Lesemechanismus vollständig unabhängig voneinander sind, eine vorteilhafte Verrigerung in der Schaltkreisfläche, des Energieverbrauchs, usw. erfolgen kann, wenn diese zumindest einige Schaltkreiselemente gemeinsam nutzen, z. B. ist es möglich, die selbe Abfragehardware zu verwenden, jedoch mit einem schnelleren Triggersignal und einem langsamen Triggersignal, um die Abfragezeiten zu steuern.

Die Fehlerreparaturlogik kann in einer Vielzahl von unterschiedlichen Wegen arbeiten, ist jedoch im allgemeinen betreibbar, so daß ein Unterdrückungssignal an Schaltkreise ausgegeben wird, an die das schnelle Lesergebnis für die weitere Verarbeitung weitergeleitet wurde. Diese Schaltkreise fungieren dann auf das empfangene Unterdrückungssignal, indem sie die Verarbeitung basierend auf dem falschen Wert in einer Vielzahl von unterschiedlichen Wegen unterdrücken, wie es für ihre individuellen Operationen geeignet ist.

Während es möglich sein könnte, den schnellen Lesemechanismus anzuordnen, so daß er im wesentlichen eine Fehlerrate von Null hat, steuern bevorzugte Ausführungsformen der Erfindung ein oder mehrere leistungsbestimmende Parameter des Speichers, um eine endliche Fehlerrate von nicht Null in dem schnellen Leseergebnis beizubehalten. Die Zielfehlerrate von ungleich Null ist alles andere als intuitiv im Kontext von Speichersystemen, in denen es normalerweise ein erforderliches Leistungselement ist, das eine Fehlerrate von im wesentlichen Null beibehalten wird.

Der eine oder die mehreren leistungsbestimmenden Parameter, die variiert werden können, um eine Fehlerrate von ungleich Null beizubehalten, beinhalten ein oder mehrere von der Betriebsspannung, der Betriebsfrequenz, der Vorspannung und der Temperatur. Es versteht sich, daß andere leistungsbestimmende Parameter zusätzlich oder statt dessen der oben genannten variiert werden können. Ebenso kann die Leistung bestimmt werden durch Herstellungsvariationen, selbst wenn dies kein dynamisch einstellbarer Parameter ist.

Von einem anderen Aspekt aus betrachtet stellt die vorliegende Erfindung ein Verfahren zum Lesen von gespeicherten Daten aus einem Speicher zur Verfügung, wobei das Verfahren die Schritte aufweist:

Lesen eines Datenwertes mit einem schnellen Datenlesemechanismus aus dem Speicher, um ein schnelles Leseergebnis zu erzeugen, welches für die weitere Verarbeitung aus den Speichern ausgegeben wird,

Lesen des Datenwertes mit einem langsamen Datenlesemechanismus aus dem Speicher, um ein langsames Lesergebnis zu erzeugen, welches verfügbar ist, nachdem das schnelle Leseergebnis für die weitere Verarbeitung ausgegeben worden ist, wobei der langsame Datenlesemechanismus beim Lesen der Datenwertes weniger fehleranfällig ist als der schnelle Datenlesemechanismus,

Vergleichen des schnellen Leseergebnisses und des langsamen Leseergebnisses, um zu erfassen, ob sich das schnelle Leseergebnis von dem langsamen Leseergebnis unterscheidet, und

wenn sich das schnelle Leseergebnis von dem langsamen Leseergebnis unterscheidet, Unterdrücken der weiteren Verarbeitung unter Verwendung des schnellen Leseergebnisses, und Ausgeben des langsamen Leseergebnisses anstelle des schnellen Leseergebnisses und erneutes Starten der weiteren Verarbeitung auf der Grundlage des langsamen Leseergebnisses.

Ausführungsformen der Erfindung werden nun – lediglich beispielhaft – unter Bezugnahme auf die begleitenden Zeichnungen beschrieben, in denen:

1 schematisch eine Mehrzahl von Verarbeitungsstufen darstellt, bei denen die vorliegende Technik angewendet wird,

2 ein Schaltkreisblockdiagramm ist, das schematisch einen Schaltkreis für die Verwendung in der vorliegenden Technik darstellt,

3 ein Schaltkreisdiagramm ist, das schematisch ein nichtverzögerter Latch und ein verzögerter Latch zusammen mit einem verknüpften Vergleicher und einer Fehlerkorrekturlogik darstellt,

4a und 4b ein Flußdiagramm sind, das schematisch die Funktionsweise des Schaltkreises von 1 darstellt,

5 schematisch einen Speicherschaltkreis darstellt, der einen schnellen Lesemechanismus und einen langsamen Lesemechanismus beinhaltet,

6 eine alternative Schaltkreisanordnung darstellt für einen Abschnitt des Schaltkreises von 5,

7 ein Flußdiagramm ist, das schematisch die Funktionsweise des Speicherschaltkreises von 5 darstellt,

8 einen Bus mit Pipeline einschließlich nichtverzögerter Latches und verzögerter Latches zwischen den Busstufen darstellt,

9 ein Flußdiagramm ist, das schematisch die Funktionsweise des Bus mit Pipeline von 8 darstellt,

10 schematisch die Erzeugung von Steuersignalen für das Steuern eines Mikroprozessors darstellt, der sowohl einem nichtverzögerten Latching (Einklinken) und Ausgabe und auch einem verzögerten Latching und Ausgabe ausgesetzt ist,

11 ein Flußdiagramm ist, das schematisch ein Beispiel des Betriebs des Schaltkreises von 10 darstellt,

12 eine Verarbeitungspipeline darstellt einschließlich nichtverzögerter Latches und verzögerter Latches, wobei die verzögerten Latches wiederverwendet werden als Datenbeibehaltungslatches während eines Niedrigenergiebetriebs,

13 ein Flußdiagramm ist, das schematisch die Funktionsweise des Schaltkreises von 12 darstellt,

14 schematisch eine Mehrzahl von Verarbeitungsstufen darstellt, an die die Fehlerkorrektur und die verzögerten Latches angewendet wurden,

15 eine Fehlerkorrektur für Daten, die durch einen Kanal weitergeleitet werden, darstellt, die den Datenwert unverändert von dem Eingang zum Ausgang weiterleitet, wenn kein Fehler auftritt,

16 schematisch darstellt, wie die Fehlerkorrektur durchgeführt wird für ein wertveränderndes Logikelement, wie z. B. ein Addierer, Multiplizierer oder Verschieber,

17 ein Flußdiagramm ist, das schematisch den Betrieb des Schaltkreises von 14 darstellt,

18 schematisch darstellt, wie verzögerte und nichtverzögerte Latches verwendet werden können, um die relativen Phasen der Taktsignale innerhalb einer Verarbeitungspipeline zu steuern,

19 und 20 schematisch entsprechende Verwendungen von Blockierungs- und Blaseneinfügung bei der Behebung von Fehlern darstellen, und

21 ein nichtverzögertes und verzögertes Latch darstellt für die Verwendung zwischen den Verarbeitungsstufen, wobei das verzögerte Latch wiederverwendet wird als ein serielles Abtastkettenlatch.

1 stellt einen Teil eines integrierten Schaltkreises dar, der Teil einer synchronen Pipeline innerhalb eines Prozessorkerns sein kann, wie z. B. eines ARM-Prozessorkerns, der von ARM limited in Cambridge, England produziert wird. Die synchrone Pipeline wird aus einer Mehrzahl von gleichen Verarbeitungsstufen gebildet. Die erste Stufe weist eine Verarbeitungslogik 2 gefolgt von einem nichtverzögerten Latch 4 in Form eines Flip-Flops zusammen mit einem Vergleicher 6 und einem verzögerten Latch 8 auf. Der Begirff Latch, der hier verwendet wird, umfaßt jedes Schaltkreiselement, das betreibbar ist, um einen Signalwert unabhängig vom Triggern, dem Takt und anderen Anforderungen zu speichern. Nachfolgende Verarbeitungsstufen sind in ähnlicher Weise gebildet. Ein nichtverzögertes Taktsignal 10 treibt die Prozeßlogik und die nichtverzögerten Latches 4 innerhalb aller Verarbeitungsstufen an, um synchron zu arbeiten als Teil einer synchronen Pipeline. Ein verzögertes Taktsignal 12 wird zu den verzögerten Latches 8 der jeweiligen Verarbeitungsstufen geliefert. Das verzögerte Taktsignal 12 ist eine phasenverschobene Version des nichtverzögerten Taktsignals 10. Der Grad der Phasenverschiebung steuert die Verzögerungsperiode zwischen der Aufnahme des Ausgangs der Verarbeitungslogik 2 durch das nichtverschobene Latch 4 und der Aufnahme der Ausgabe der Verarbeitungslogik 2 zu einem späteren Zeitpunkt, die durch das verzögerte Latch 8 durchgeführt wird. Falls die Verarbeitungslogik 2 innerhalb von Grenzen arbeitet, die durch die existierende nichtverzögerte Taktsignalfrequenz, die Betriebsspannung, die von dem integrierten Schaltkreis bereitgestellt wird, die Substratvorspannung, die Temperatur usw. gegeben werden, dann wird die Verarbeitungslogik 2 ihre Verarbeitungsoperationen zu dem Zeitpunkt beendet haben, wenn der nichtverzögerte Latch 4 getriggert wird, um seinen Wert aufzunehmen. Folglich, wenn das verzögerte Latch 8 später den Ausgang der Verarbeitungslogik 2 aufnimmt, wird dies den selben Wert haben wie der innerhalb des nichtverzögerten Latch 4 aufgenommene Wert. Folglich wird der Vergleicher 6 keine Veränderung erfassen, die während der Verzögerungsperiode aufgetreten ist und die Fehlerkorrekturoperation wird nicht angestoßen. Umgekehrt, wenn die Arbeitsparameter für den integrierten Schaltkreis derart sind, daß die Verarbeitungslogik 2 ihre Verarbeitungsoperation zu dem Zeitpunkt, wenn der nichtverzögerte Latch 4 seinen Wert aufnimmt, nicht abgeschlossen hat, dann wird das verzögerte Latch 8 einen anderen Wert aufnehmen und dies wird von dem Vergleicher 6 erfaßt, wodurch erzwungen wird, daß eine Fehlerkorrekturoperation durchgeführt wird. Man wird sehen, daß die Fehlerkorrekturoperation derart sein könnte, daß sie den Ausgang des nichtverzögerten Latch 4, der während der Zeit nach seiner Aufnahme zu der folgenden Verarbeitungsstufe geliefert wurde durch den verzögerten Wert, der in dem verzögerten Latch 8 gespeichert ist, ersetzt. Dieser verzögerte Wert kann zusätzlich dazu gebracht werden, daß er in dem nichtverzögerten Latch 4 gespeichert wird und den vorher fehlerhaft aufgenommenen Wert, der hierin gespeichert ist, ersetzt.

Ein Metastabilitätsdetektor 7 dient dazu, die Metastabilität im Ausgang des nichtverzögerten Latch 4 zu erfassen, d. h. einen nicht klar definierten logischen Zustand. Falls solch eine Metastabilität erfaßt wird, wird dies als ein Fehler angesehen und der Wert des verzögerten Latch 6 wird statt dessen verwendet.

Mit Erfassen einer Fehlers kann die gesamte Pipeline blockiert werden durch Ansteuern des nichtverzögerten Taktsignals 10 für eine zusätzliche verzögerte Periode, um der Verarbeitungslogik der folgenden Verarbeitungsstufe ausreichend Zeit zu geben, um korrekt auf den korrigierten Eingangssignalwert, der ihm zur Verfügung gestellt wird, zu reagieren. Alternativ ist es möglich, das aufstromige Verarbeitungsstufen blockiert werden, wobei es nachfolgenden Verarbeitungsstufen erlaubt wird, den Betrieb fortzusetzen mit einer in die Pipeline eingefügten Blase (bubble) in Übereinstimmung mit üblichen Pipelineverarbeitungstechniken unter Verwendung einer Gegenstromarchitektur (siehe die Bubble- und Flushlatches in 2). Eine andere Alternative ist es, daß die gesamte Verarbeitungspipeline zurückgesetzt wird und die verzögerten Latchwert in die die nichtverzögerten Latches von jeder Stufe übertragen werden und die Verarbeitung wieder aufgenommen wird. Die Wiederverwendung des verzögerten Latchwertes anstelle des fehlerhaften Wertes statt einer versuchten Neuberechnung stellt sicher, daß ein Vorwärtsfortschritt durch die Verarbeitungsoperationen erfolgt, selbst wenn ein Fehler aufgetreten ist.

Es gibt Grenzen betreffend der Beziehung zwischen der Verarbeitungszeit, die die Verarbeitungslogik innerhalb der Verarbeitungsstufen benötigt, und der Verzögerung zwischen der nichtverzögerten Aufnahmezeit und der verzögerten Aufnahmezeit. Insbesondere sollte die minimale Verarbeitungszeit jeder Verarbeitungsstufe nicht geringer als die Verzögerung sein, um sicherzustellen, daß der verzögerte Wert, der aufgenommen wird, nicht durch neue Daten beschädigt wird, die von einer Verarbeitungsstufe mit kurzer Verzögerung ausgegeben werden. Es kann notwendig sein, Verarbeitungsstufen mit kurzer Verzögerung zu dämpfen mit zusätzlichen Verzögerungselementen, um sicherzustellen, daß sie nicht in diese minimale Verarbeitungszeit fallen. Im anderen Extrem muß sichergestellt werden, daß die maximale Verarbeitungsverzögerung der Verarbeitungslogik innerhalb der Verarbeitungsstufe, die an irgendeinem Arbeitspunkt für irgendwelche Betriebsparameter auftreten kann, nicht größer ist als die Summe aus der normalen nichtverzögerten Arbeitstaktperiode und dem Verzögerungswert, so daß der Verzögerungswert, der in dem Verzögerungslatch aufgenommen wird, sicher stabil und korrekt ist.

Es gibt eine Anzahl von alternativen Arten, in denen das System gesteuert werden kann, um den Energieverbrauch und die Leistung einzustellen. Gemäß einer Anordnung wird ein Fehlerzählschaltkreis (nicht gezeigt) bereitgestellt, um die Anzahl von Ungleicherfassungen, die von dem Vergleicher 6 erfaßt werden, zu zählen. Diese Zahl der erfaßten und behobenen Fehler kann verwendet werden, um die Betriebsparameter unter Verwendung von entweder handwareimplementierten oder softwareimplementierten Algorithmen zu steuern. Der Zähler kann von der Software ausgelesen werden. Die beste Gesamtleistung, entweder im Bezug auf die Maximalgeschwindigkeit oder den niedrigsten Energieverbrauch kann erzielt werden durch gezieltes Betreiben des integrierten Schaltkreises mit Parametern, die einen Fehlergrad von ungleich Null beibehalten. Ihre Verbesserung aufgrund des Betriebs mit unvorsichtigen Betriebsparametern in solchen Umständen wiegt den Nachteil, der durch die Notwendigkeit Fehler zu korrigieren auftritt, mehr als auf.

Gemäß einer alternativen Anordnung wird ein Hardware-Zähler bereitgestellt als ein Leistungsüberwachungsmodul und wird derart betrieben, daß es die nützliche Arbeit und die Fehlerbehebungsarbeit beobachtet. Insbesondere pflegt der Zähler die Zählung der Anzahl von nützlichen Befehlen, die verwendet wurden, um die Verarbeitungsoperationen, die ausgeführt werden, voranzubringen, und pflegt ebenso die Zählung der Anzahl von Befehlen und Blasen, die ausgeführt wurden, um die Fehlerbehebung durchzuführen. Die Software ist derart betreibbar, daß sie den Hardwarezähler ausliest und die Zahlenwerte verwendet, um die Nutzdaten der Fehlerbehandlung und seine Effekte auf die Systemleistung mit dem reduzierten Energieverbrauch, der erzielt wird durch Betreiben des integrierten Schaltkreises mit einer Fehlerrate von nicht Null, auszugleichen.

2 ist ein Schaltungsblockdiagramm, das schematisch einen Schaltkreis für die Verwendung mit der vorliegenden Technik darstellt. Der obere Abschnitt von 2 stellt Schaltkreiselemente dar, die innerhalb jeder Verarbeitungsstufe bereitgestellt werden, nämlich der nicht-verzögerte Latch 4, der verzögerte Latch 8 und der Vergleicher 6. Ein Metastabilitätsdetektor 7 dient dazu, die Metastabilität in der Ausgabe des nicht-verzögerten Latch 4 zu erfassen und dies triggert ebenso die Erzeugung eines Fehlersignals. Fehlersignale von einer Mehrzahl solcher Stufen werden zu den jeweiligen Eingängen eines ODER-Gatters (OR-Gate) 100 geliefert, wo ein globales Fehlersignal erzeugt wird, wenn ein Fehler in irgendeiner Prozessorstufe erfaßt wird. Das globale Fehlersignal kann verwendet werden, um die Flush- und Bubble-Einfügungssignale zu triggern, wie dargestellt. Die Schaltkreise 102 erfassen, ob das Fehlersignal selbst metastabil ist. Das Fehlersignal wird gelatcht (eingeklinkt) mit einem positiv flankengesteuerten Latch, das auf eine höhere Spannung verweist, und einem negativ flankengesteuerten Latch, das auf eine niedrigere Spannung verweist. Falls die beiden in ihrem aufgenommenen Wert nicht übereinstimmen, zeigt dies, daß das Fehlersignal metastabil war, und das Paniksignal wird ausgelöst. Durch Aufnehmen des Fehlersignals und Warten eines Gesamtzyklus, bevor es abgefragt wird (d.h. zwei Latches in Reihe), wird die Wahrscheinlichkeit, daß das Paniksignal metastabil ist, vernachlässigbar. Es ist signifikant, daß, wenn das Paniksignal ausgelöst wird, dann der erneut von dem verzögerten Latch gespeicherte Wert beschädigt sein könnte aufgrund der Metastabilität des Fehlersignals. In diesem Fall ist der Befehl ebenso ungültig und es gibt keinen Vorwärtsfortschritt. Es wird dann die Pipeline gespült, der Befehl erneut gestartet, und die Taktfrequenz erniedrigt, um sicherzustellen, daß das Fehlersignal nicht beim erneuten Versuch desselben Befehls metastabil ist (was ansonsten eine unendliche Schleife von Wiederholungen verursachen könnte).

3 ist eine Schaltung, die detaillierter das nicht-verzögerte Latch, das verzögerte Latch, den Vergleicher und zumindest einen Teil des Fehlerkorrekturschaltkreises veranschaulicht. Der nicht-verzögerte Latch 4 kann in Form eines Flip-Flops, das durch die beiden Latches 14, 16 bereitgestellt wird, gesehen werden. Das verzögerte Latch 8 hat die Form eines einzelnen Feedback-Elements. Ein XODER-Gatter (XOR-Gate) 18 dient als der Vergleicher. Ein Fehlersignal 20 geht von dem Schaltkreis von 3 aus und kann zu dem Fehlerzählschaltkreis geliefert werden, wie vorher erörtert wurde, oder irgendwelchen anderen Betriebsparameter einstellenden Schaltkreisen oder Systemen. Das Fehlersignal 20 dient dazu, einen Multiplexer 22, der dafür sorgt, daß der verzögerte Wert, der in dem verzögerten Latch 8 gespeichert ist, in dem Latch 14 des nicht-verzögerten Latch 4 gespeichert wird, zu schalten. Die metastabilitätserfassenden Schaltkreise 24 dienen dazu, das Auftreten einer Metastabilität innerhalb des nicht-verzögerten Latch 4 zu erfassen, und verwenden dies ebenso, um ein Fehlersignal zu triggern, welches bewirken wird, daß der fehlerhafte metastabile Wert durch den verzögerten Wert, der in dem verzögerten Latch 8 abgelegt ist, ersetzt wird.

Die 4a und 4b sind ein Flußdiagramm, das schematisch die Funktionsweise der Schaltkreise der 1, 2 und 3 darstellt.

In Schritt 26 erzeugt die Verarbeitungslogik von einer Stufe i ihr Ausgangssignal zu einem Zeitpunkt Ti. In Schritt 28 wird dies von dem nicht-verzögerten Latch aufgenommen und bildet den nicht-verzögerten Wert. In Schritt 30 startet die Weiterleitung des nicht-verzögerten Werts von dem nicht-verzögerten Latch zu den folgenden Verarbeitungsstufen i + 1, was die Verarbeitung basierend auf diesem Wert einleitet. Die Verarbeitung kann sich als fehlerhaft herausstellen und muß korrigiert werden, falls ein Fehler erfaßt wird.

Schritt 32 erlaubt es, daß die Verarbeitungslogik die Verarbeitung für eine weitere Zeitperiode, die Verzögerungszeit, fortsetzt, um ein Ausgangssignal zu dem Zeitpunkt Ti + d zu erzeugen. Dieses Ausgangssignal wird in dem verzögerten Latch in Schritt 34 eingeklinkt. Die Werte innerhalb des verzögerten Latch und des nicht-verzögerten Latch werden in Schritt 36 verglichen. Wenn sie gleich sind, dann ist kein Fehler aufgetreten und die normale Verarbeitung setzt in Schritt 37 fort.

Wenn sie nicht gleich sind, zeigt dies dann an, daß die Verarbeitungslogik zum Zeitpunkt Ti ihre Verarbeitungsoperationen nicht abgeschlossen hatte, als das nicht-verzögerte Latch seinen Wert aufnahm und begann, diesen Wert zu dieser nachfolgenden Verarbeitungsstufe i + 1 zu liefern. Somit ist eine Fehlerbedingung aufgetreten und dies wird die Korrektur erfordern. In Schritt 38 wird diese Korrektur gestartet durch das Weiterleiten einer Pipelineblase in die Pipelinestufen, die auf die Stufe i folgen. In Schritt 40 werden alle die der Stufe i + 1 vorhergehenden Stufen blockiert. Dies beinhaltet die Stufe i, in der der Fehler aufgetreten ist. In Schritt 42 führt die Stufe i + 1 ihre Funktion erneut aus unter Verwendung des verzögerten Latch-Wertes als deren Eingabe. In Schritt 44 können die Betriebsparameter des integrierten Schaltkreises modifiziert werden, wie dies erforderlich ist. So kann beispielsweise die Arbeitsfrequenz reduziert werden, die Betriebsspannung erhöht werden, die substratvorspannende Spannung erhöht werden usw. Die Verarbeitung setzt dann mit Schritt 46 fort.

Wenn eine ungenügende Anzahl von Fehlern erfaßt wird, dann können die betriebsparameterbestimmenden Algorithmen die Betriebsparameter gut überlegt einstellen, um den Energieverbrauch zu reduzieren und eine Fehlerrate von ungleich Null zu bewirken.

5 stellt einen Speicher 100 dar, der eine Anordnung von Speicherzellen 102 enthält. In diesem Beispiel ist eine einzelne Reihe von Speicherzellen dargestellt, wie es jedoch den Fachleuten auf diesem technischen Gebiet bekannt ist, sind Speicherzellenanordnungen typischerweise große, zweidimensionale Anordnungen, die viele Tausende von Speicherzellen enthalten. In Übereinstimmung mit normaler Speicheroperation dient ein Decoder 104 dazu, eine Speicheradresse, auf die zugegriffen werden soll, zu empfangen, und diese Speicheradresse zu decodieren, um dadurch eine der Wortleitungen 106 zu aktivieren. Die Wortleitungen dienen dazu, die Speicherzellen 102 in dieser Leitung mit den entsprechenden Bitleitungspaaren 108 zu verbinden. Abhängig von dem Bitwert, der in der betroffenen Speicherzelle 102 abgelegt ist, wird eine elektrische Veränderung (z. B. eine Veränderung in der Spannung und/oder einem Stromfluß) in den Bitleitungen 108, die nun hiermit verbunden sind, induziert, und die Veränderung wird von dem Leseverstärker 110 erfaßt. Der Ausgang des Leseverstärkers 110 wird zu einem ersten Zeitpunkt innerhalb eines nicht-verzögerten Latch 112 gespeichert und im folgenden bei einer verzögerten Zeit innerhalb eines verzögerten Latch 114 gespeichert. Der nicht-verzögerte Wert, der in dem nicht-verzögerten Latch 112 abgelegt ist, wird direkt nach außen über einen Multiplexer 116 zu einem weiteren Verarbeitungsschaltkreis 118 weitergeleitet, bevor der verzögerte Wert in dem verzögerten Latch 114 gespeichert wird. Wenn der verzögerte Wert innerhalb des verzögerten Latch 114 aufgenommen wurde, dient ein Vergleicher 120 dazu, den nicht verzögerten Wert und den verzögerten Wert miteinander zu vergleichen. Falls die Werte ungleich sind, dann wird der verzögerte Wert von dem Multiplexer 116 geschaltet, so daß er der Ausgangswert von dem Speicher 100 für das bestimmte betreffende Bit ist. Ein Unterdrückungssignal wird ebenso von dem Vergleicher 120 zu dem weiter verarbeitenden Schaltkreis 118 ausgegeben, um die Verarbeitung von diesem weiteren Verarbeitungsschaltkreis 118 basierend auf dem fehlerhaften nicht-verzögerten Wert, der nun ersetzt wurde, zu unterdrücken.

Diese Unterdrückung in diesem Beispiel nimmt die Form des Steuerns des Taktsignals CLK, das zu dem weiteren Verarbeitungsschaltkreis 118 geliefert wird, an, um den betreffenden Taktzyklus auszudehnen und das Einklinken des neuen Ergebnisses von dem weiteren Verarbeitungsschaltkreis zu verzögern bis zu einem Zeitpunkt, zu dem der verzögerte Wert die Möglichkeit hatte, sich durch den betreffenden Verarbeitungsschaltkreis auszubreiten, um das Latch am Ausgang des weiteren Verarbeitungsschaltkreises zu erreichen.

Man sieht, daß der Leseverstärker 110 und das nicht-verzögerte Latch 112 Teil des schnellen Lesemechanismus sind. Der Leseverstärker 110 und das verzögerte Latch 114 bilden einen Teil des langsamen Lesemechanismus. In den meisten Fällen wird das schnelle Leseergebnis, daß in dem nicht-verzögerten Latch 112 eingeklinkt ist, korrekt sein, und keine korrigierende Aktion ist notwendig. In einer geringen Anzahl von Fällen wird das schnelle Leseergebnis sich von dem langsamen Leseergebnis, das in dem verzögerten Latch 114 eingeklinkt ist, unterscheiden, und in diesem Fall wird das langsame Leseergebnis als korrekt erachtet und dient dazu, das schnelle Leseergebnis zu ersetzen und die Verarbeitung, die auf diesem schnellen Leseergebnis gründet, zu unterdrücken. Der Nachteil, der mit der relativ seltenen Notwendigkeit verknüpft ist, fehlerhafte schnelle Leseergebnisse zu korrigieren, wird mehr als kompensiert durch die verbesserte Leistung (in Bezug auf Geschwindigkeit, niedriger Betriebsspannung, niedriger Energieverbrauch und/oder andere Leistungsparameter), die erreicht wird durch Betreiben des Speichers 100 näher an seinen Grenzbedingungen.

6 stellt eine Variation eines Teils des Schaltkreises von 5 dar. In dieser Variation werden zwei Leseverstärker 110', 110'' bereitgestellt. Diese unterschiedlichen Leseverstärker 110', 110'' werden gebildet, so daß sie unterschiedliche Betriebsgeschwindigkeiten haben, wobei einer, 110', relativ schnell und weniger zuverlässig ist, und der andere, 110'', relativ langsam und zuverlässigerer ist. Diese unterschiedlichen Charakteristiken können erreicht werden durch Variieren der Parameter der Leseverstärker 110', 110'', z. B. der Konstruktionsparameter, wie z. B. der Transistorgröße, der Dotierniveaus, der Verstärkung usw. Ein Vergleicher 120' dient dazu, die beiden Ausgaben zu vergleichen. Die Ausgabe von dem schnellen Leseverstärker 110' wird normalerweise über den Multiplexer 116 ausgegeben und zwar bevor der Ausgang des langsamen Leseverstärkers 110'' verfügbar ist. Wenn der Ausgang des langsamen Leseverstärkers 110'' verfügbar ist und der Vergleicher 120 erfaßt, daß dieser nicht gleich dem Ausgang des schnellen Leseverstärkers 110' ist, dann steuert er den Multiplexer 116', so daß er den Ausgangswert schaltet, so daß der gleich dem von dem langsamen Leseverstärker 110'' erzeugten ist. Der Vergleicher 120 triggert ebenso die Erzeugung eines Unterdrückungssignals, so daß die abstromige Verarbeitung basierend auf dem fehlerhaften, schnellen Leseergebnis unterdrückt wird.

7 ist ein Flußdiagramm, das die Arbeitsweise des Schaltkreises von 5 darstellt. In Schritt 122 wird eine Adresse decodiert, was dazu führt, daß entsprechende Speicherzellen mit ihren benachbarten Bitleitungen unter Verwendung eines Signals, das über eine Wortleitung geleitet wird, verbunden werden. In Schritt 124 werden die Bitwerte, die in den ausgewählten Speicherzellen und ihren Komplementen gespeichert sind, auf die Bitleitungspaare getrieben. Dies verursacht Stromflüsse innerhalb der Bitleitungen und Spannungsveränderungen in den Bitleitungen. Die Leseverstärker 110 reagieren auf die erfaßten Strom- und/oder Spannungsniveauveränderungen.

In Schritt 126 fragt der schnelle Datenlesemechanismus den Wert, der von der Speicherzelle ausgegeben wird, zu diesem Zeitpunkt ab. In Schritt 128 wird dieser schnelle Lesedatenwert zu den nachfolgenden Verarbeitungsschaltkreisen für die weitere Verarbeitung unter der Annahme, daß dieser korrekt ist, weitergeleitet. In Schritt 130 fragt der langsame Datenlesemechanismus einen langsamen Lesedatenwert ab. Schritt 132 vergleicht den schnellen Lesewert und den langsamen Lesewert. Wenn diese gleich sind, dann setzt die normale Verarbeitung mit Schritt 134 fort. Wenn jedoch die abgefragten Werte sich unterscheiden, dann dient Schritt 136 dazu, ein Unterdrückungssignal an die weiteren Schaltkreise, an die der schnelle Lesewert weitergeleitet wurde, auszugeben, und ebenso den langsamen Lesewert anstelle des schnellen Lesewerts an diese weiteren Schaltkreise auszugeben, so daß die Korrekturverarbeitung stattfinden kann.

8 stellt die Verwendung der vorliegenden Techniken innerhalb eines gepipelineten Bus 140 dar. Der gepipelinete Bus 140 enthält eine Anzahl von Latches 142, die dazu dienen, die Datenwerte, die entlang des Busses weitergeleitet werden, zu speichern. Als ein Beispiel solch eines gepipelineten Bus 140 gibt es die bekannten AXI-Busse, die von ARM Limited of Cambridge, England entwickelt wurden. In dieser Anordnung ist das Ziel für den Datenwert, der entlang des gepipelineten Busses 140 weitergeleitet wird, ein digitaler Signalverarbeitungsschaltkreis 144. Dieser digitale Signalverarbeitungsschaltkreis (DSP) 144 implementiert nicht selbst die nicht-verzögerten Latching- und die verzögerten Latching-Techniken, die vorher erörtert wurden. In alternativen Anordnungen könnte das Ziel für den Datenwert, der entlang des gepipelineten Busses weitergeleitet wird, eine andere Vorrichtung als ein DSP-Schaltkreis sein, beispielsweise ein normaler ARM-Prozessorkern, der an sich die verzögerten und nicht-verzögerten Latching-Techniken nicht implementiert.

Verknüpft mit jedem der nicht-verzögerten Latches 142 ist ein entsprechendes verzögertes Latch 146. Diese verzögerten Latches 146 dienen dazu, den Signalwert auf dem Bus an einem Zeitpunkt abzufragen, der nach dem Zeitpunkt liegt, an dem von dem korrespondierenden nicht-verzögerten Latch 142 abgerufen und gelatcht wurde. Somit wird eine Verzögerung in dem Datenwert, der entlang des Busses weitergeleitet wird, aus irgendwelchen Gründen (z. B. eine zu niedrige verwendete Betriebsspannung, eine zu hohe Taktgeschwindigkeit, Koppeleffekte von benachbarten Datenwerten usw.) zu der Möglichkeit eines Unterschiedes führen, der zwischen den innerhalb des nicht-verzögerten Latch 142 und des verzögerten Latch 146 abgelegten Werten. Die Endstufe des Pipeline-Bus 140 ist dargestellt als einen Vergleicher 147 beinhaltend, der den nicht-verzögerten Wert und den verzögerten Wert vergleicht. Falls diese ungleich sind, dann wird der verzögerte Wert verwendet, um den nicht-verzögerten Wert zu ersetzen und die Verarbeitung basierend auf dem nicht-verzögerten Wert wird unterdrückt, so daß die Korrektur stattfinden kann (der Bus-Taktzyklus kann verlängert werden). Es versteht sich, daß dieser Vergleicher und die Multiplex-Schaltkreiselemente auf jeder der Latch-Stufen entlang des Pipeline-Bus 140 bereitgestellt werden, diese jedoch aus Gründen der Klarheit in 8 nicht gezeigt wurden.

Wenn der DSP-Schaltkreis 144 nicht von sich aus die nicht-verzögerten und verzögerten Latching-Mechanismen mit ihrer verknüpften Korrekturmöglichkeiten unterstützt, ist es wichtig, daß der Datenwert, der zu dem DSP-Schaltkreis 144 geliefert wird, jede notwendige Korrektur erfahren hat. Aus diesem Grund wird eine zusätzliche Puffer-Latchstufe 148 am Ende des gepipelineten Bus 140 bereitgestellt, so daß jede für den Datenwert, der zu dem Latch und dem verknüpften DSP-Schaltkreis 144 geliefert wird erforderliche Korrektur durchgeführt werden kann, bevor der Datenwert von dem DSP-Schaltkreis 144 verwendet wird. Der Puffer-Latch kann in ausreichender Nähe zu dem DSP-Schaltkreis 144 plaziert sein, so daß es nicht zum Auftreten einer nicht ausreichend verfügbaren Ausbreitungszeit kommt usw., was einen Fehler in dem Datenwert, der von dem Puffer-Latch 148 zu dem DSP-Schaltkreis 144 weitergeleitet wird, verursacht.

Es versteht sich, daß die Bus-Verbindungen zwischen den entsprechenden nicht-verzögerten Latches 142 betrachtet werden können als von der Form der Verarbeitungslogik, die die Daten lediglich unverändert weiterleitet. Auf diese Art und Weise wird sich die Äquivalenz zwischen der Ausführungsform von 8 mit gepipelinetem Bus und der vorher beschriebenen Ausführungsformen (z. B. 1) für den Fachmann ergeben.

9 ist ein Flußdiagramm, das den Betrieb von 8 darstellt. Auf der Stufe 150 wird ein nicht-verzögerter Signalwert von der Bus-Leitung aufgenommen. In Schritt 152 wird der nicht-verzögerte Wert dann zu der nächsten Bus-Pipeline-Stufe weitergeleitet. In Schritt 154 nimmt das entsprechende verzögerte Latch 146 ein verzögertes Bus-Signal auf. In Schritt 156 vergleicht der Vergleicher 147 den verzögerten Wert mit dem nicht-verzögerten Wert. Wenn diese gleich sind, dann setzt die normale Verarbeitung in Schritt 158 fort. Wenn die beiden verglichenen Werte ungleich sind, dann dient Schritt 160 dazu, den Bus-Takt zu verzögerten und den nicht-verzögerten Wert durch den verzögerten Wert zu ersetzen unter Verwendung des in 8 gezeigten Multiplexers.

10 stellt eine weitere Beispielausführungsform dar unter Verwendung der vorliegenden Techniken. In dieser Beispielsausführungsform wird ein Befehl von einem Befehlsregister innerhalb eines Prozessorkerns innerhalb eines Befehls-Latch 162 gelatcht. Von diesem Befehls-Latch 162 wird der Befehl zu einem Decoder 162 weitergeleitet, der ein mikrocodiertes ROM beinhaltet, das dazu dient, eine geeignete Sammlung von Prozessorsteuersignalen zu erzeugen für die Speicherung in einem nicht-verzögerten Steuersignal-Latch 166 und die nachfolgende Verwendung, um die Verarbeitung, die von dem Prozessorkern durchgeführt wird, in Übereinstimmung mit dem Befehl, der in dem Befehls-Latch 162 eingeklinkt ist, zu steuern. Die Steuersignale, die von dem Decoder 162 ausgegeben werden, werden ebenso innerhalb eines verzögerten Steuersignal-Latchs 168 zu einem späteren Zeitpunkt als den, als sie innerhalb des nicht-verzögerten Steuersignal-Latchs 166 eingeklinkt wurden, eingeklinkt. Die verzögerten Steuersignalwerte und die nicht-verzögerten Steuersignalwerte können dann verglichen werden. Wenn diese ungleich sind, zeigt dies an, daß eine Korrekturaktion notwendig ist. Eine Unterdrückungsoperation wird durch die Erfassung von solch einem Unterschied getriggert und dient dazu, die nachfolgende Verarbeitung basierend auf den nicht geeigneten Latch-Steuersignalwerten zu stoppen. Es kann sein, daß in einigen Fällen es die einzig effektive Wiederherstellungsoption ist, den Prozessor insgesamt zurückzustellen. Dies kann akzeptabel sein. In anderen Situationen könnte der Fehler in den Steuersignalen so sein, daß eine weniger drastische Unterdrückung und ein Behebungsmechanismus möglich ist. Beispielsweise könnte auf das bestimmte fehlerhafte Steuersignal noch nicht zugegriffen worden sein, z. B. in dem Fall eines Multizyklus-Programmbefehls, wo einige Verarbeitungsoperationen nicht starten bis zu einem späten Zeitpunkt in der Gesamtausführung des Multizyklusbefehls. Ein Beispiel ist eine Multiplikations-Akkumulations-Operation, in der der Multiplikationsabschnitt mehrere Taktzyklen benötigt, bevor die endgültige Akkumulierung stattfindet. Wenn es einen Fehler in dem Steuersignal gibt, der mit der Akkumulierung verknüpft ist und in der Praxis eine Akkumulierung nicht erforderlich ist, sondern lediglich eine einfache Multiplikation, dann wäre es möglich, die Akkumulierung zu unterdrücken durch Korrigieren des Steuersignals, das an den Akkumulator angelegt wird, bevor der Addierer versucht hat, die Akkumulationsoperation durchzuführen.

11 stellt ein Beispiel des Betriebs des Schaltkreises von 10 dar. In Schritt 170 wird ein Multiplikations-Akkumulierungssteuersignal von dem Decoder 164 (mikrokodierter ROM) ausgelesen. In Schritt 172 wird dieses Multiplikations-Akkumulierungssteuersignal innerhalb des nichtverzögerten Steuersignallatch 166 eingeklinkt und an die verschiedenen Verarbeitungselemente innerhalb des Prozessorkerns ausgegeben. In Schritt 174 werden die Multiplikationsoperanden aus der Registerdatei ausgelesen und die Multiplikationsoperation wird initiiert. In Schritt 176 werden die Steuersignale die von dem Befehlsdecoder 164 ausgegeben werden, erneut von dem verzögerten Steuersignallatch 168 abgefragt. In Schritt 178 werden die nichtverzögerten Steuersignale und die verzögerten Steuersignale verglichen. Wenn diese gleich sind, dann setzt die normale Verarbeitung in Schritt 180 fort. Falls diese jedoch nicht gleich sind, dann setzt die Verarbeitung mit Schritt 182 fort, wo eine Bestimmung durchgeführt wird, ob die Multiplikationsoperation bereits fertiggestellt wurde. Falls die Multiplikationsoperation bereits abgeschlossen wurden, dann wird die fehlerhafte Akkumulierungsoperation bereits gestartet sein und die beste Option für die Fehlerbehebung ist es, das System insgesamt in Schritt 184 zurückzusetzen. Falls jedoch die Multiplikationsoperation noch läuft, dann kann Schritt 186 verwendet werden, um den Addierer zurückzusetzen und die Akkumulationsoperation zu löschen mit dem gewünschten Multiplikationsoperationsausgabeergebnis, das in Schritt 188 erzeugt wurde, welches ursprünglich von dem Programmbefehl, der innerhalb des Befehlslatch 162 abgelegt ist, beabsichtigt war.

12 stellt eine Modifikation des in 1 dargestellten Schaltkreises dar. In dieser Ausführungsform liefern die verzögerten Latches 190 die zusätzliche Funktion der Datenrückhaltelatches (Ballon) für die Verwendung während eines Standby-/Schlafbetriebsmodus (Niedrigenergieverbrauchsmodus). Die Funktion der verzögerten Latches 190 während der normalen Verarbeitungsoperationen ist wie vorher beschrieben. Wenn jedoch ein Schlafcontroller 192 den Eintritt in einen Niedrigenergieverbrauchsbetriebsmodus initiiert, stoppt er den nichtverzögerten Takt und den verzögerten Takt, so daß die verzögerten Latches 190 alle Datenwerte entsprechend ihrer jeweiligen nichtverzögerten Latches speichern. An diesem Punkt wird die Spannungszuführung zu den nicht-verzögerten Latches und den verknüpften Verarbeitungsschaltkreisen entfernt, so daß sie abgeschaltet werden und ihren Zustand verlieren. Die Spannung, die zu den nichtverzögerten Latches 190 geliefert wird, wird jedoch beibehalten, so daß sie den Zustand des betreffenden Verarbeitungsschaltkreises beibehalten. Wenn das System den Niedrigenergieverbrauchsmodus verläßt, wird die Verarbeitungslogik und die nichtverzögerten Latches wieder eingeschaltet, wenn der Vergleicher einen Unterschied in den Werten in dem nichtverzögerten Latch und dem verzögerten Latch 190 erfasst, triggert er die Ersetzung des fehlerhaften Wertes innerhalb des nichtverzögerten Latches mit dem korrekten Wert, der innerhalb des verknüpften verzögerten Latch 190 gehalten wird. Es versteht sich, daß da die verzögerten Latches 190 weniger strengen Taktanforderungen als ihre nicht-verzögerten Gegenspieler unterliegen, und sie in einer Art und Weise ausgebildet sein können, wo sie eine geringere Betriebsgeschwindigkeit haben jedoch geeignet für den Niedrigenergieverbrauch während des Niedrigenergieverbrauchsmodus sind (z. B. führen hohe Schwellwertspannungen zu langsameren Schaltungen, jedoch mit einem reduzierten Leckstrom). Auf diese Art und Weise können die fehlerkorrigierenden verzögernden Latches, die während der Normalverarbeitung verwendet werden, während des Niedrigenergieverbrauchsmodus als Datenhaltelatches wiederverwendet werden, wodurch mit Vorteil die Gesamtgatezahl des betroffenen Schaltkreises reduziert wird.

13 ist ein Flußdiagramm, das schematisch die Funktionsweise des Schaltkreises von 12 darstellt. In Schritt 194 ist der integrierte Schaltkreis in seinem normalen Betriebsbearbeitungsmodus. In Schritt 196 erzeugen die Verarbeitungslogikstufen ein Ausgangsignal bei einer nichtverzögerten Zeit. In Schritt 198 nimmt das nichtverzögerte Latch das Ausgangssignal auf. In Schritt 200 wird das nichtverzögerte Signal innerhalb des nichtverzögerten Latches zu der nächsten Verarbeitungsstufe weitergeleitet. In Schritt 202 wird der Ausgang von der Verarbeitungsstufe mit einer verzögerten Zeit erzeugt und ist für die Aufnahme durch das verzögerte Latch verfügbar. In Schritt 204 wir der integrierte Schaltkreis getriggert, um einen Niedrigenergieverbrauchsmodus anzunehmen und der Geschwindigkeitscontroller 192 dient dazu, das Abschalten der Verarbeitungsschaltkreise zu initiieren, während die Leistung der verzögerten Latches 190 beibehalten wird. In Schritt 206 nimmt das verzögerte Latch 190 den verzögerten Signalwert auf. Es kann sein, daß die Aufnahme des verzögerten Signalwertes durch das verzögerte Latch in Schritt 206 stattfindet, bevor in Schritt 204 in den Niedrigenergieverbrauchsmodus geschaltet wird. In Schritt 208 wird das nicht-verzögerte Latch abgeschaltet und sein gespeicherter Wert geht verloren. Der integrierte Schaltkreis kann in diesem Zustand für eine lange Zeitperiode verbleiben. Wenn gewünscht, triggert Schritt 210 den Schlafcontroller 192, um den Niedrigenergieverbrauchsmodus zu verlassen und zurück in den Betriebsmodus zu kehren. In Schritt 212 werden die nichtverzögerten Latches und die verknüpfte Verarbeitungslogik wieder mit den verzögerten Datenwerten innerhalb der verzögerten Latches 190 versorgt, die verwendet werden, um die Pipelinestufen wieder zu bevölkern, so wie es notwendig ist, um das System wieder in den Zustand vor dem Eintritt in den Niedrigenergieverbrauchsmodus zu bringen.

14 erstellt schematisch eine Mehrzahl von Verarbeitungsstufen dar, bei denen die Fehlerkorrektursteuerung und die verzögerten Latches angewendet wurden. Die Verarbeitungsstufen bilden Teil eines integrierten Schaltkreises, der Teil einer synchronen Pipeline innerhalb eines Prozessorkerns, Teil eines Kommunikationsbusses oder Teil eines Speichersystems sein kann. Die erste Verarbeitungsstufe weist entweder einen Kanal für die Datenkommunikation oder eine Verarbeitungslogik 1014, ein nichtverzögertes Latch 1016, ein verzögertes Latch 1018, einen Vergleicher 1024, der die Ausgänge des verzögerten Latch und des nichtverzögerten Latch vergleicht und ein Steuersignal zu einem Multiplexer 1020 ausgibt, das bestimmt, ob der verzögerte Signalwert oder der nichtverzögerte Signalwert als Eingang zu einem nachfolgenden Verarbeitungsstufe oder Kanal 2016 geliefert wird, auf. Der Kanal/Logik 1014 und der nichtverzögerte Latch 1016 werden von einem nichtverzögerten Taktsignal angetrieben, während das verzögerte Latch 1019 von einem verzögerten Taktsignal, welches eine phasenverschobene Version des nichtverzögerten Taktsignals ist, angetrieben wird.

Wenn der Vergleicher 1024 einen Unterschied zwischen dem nichtverzögerten Signalwert und dem verzögerten Signalwert erfaßt, zeigt dies an, daß entweder die Verarbeitungsoperation zum nichtverzögerten Aufnahmezeitpunkt nicht vollständig war und zwar falls das Element 1014 eine Verarbeitungslogik darstellt oder daß das Signal von der vorherigen Pipelinestufe die gegenwärtige Stufe noch nicht erreicht hat, falls das Element 1014 einen Datenkanal darstellt. In dem Fall, daß solch eine Differenz tatsächlich erfaßt wird, ist der in dem verzögerten Latch 1018 gespeicherte Wert der zuverlässigere Datenwert, da er später aufgenommen wurde, wenn die Verarbeitungsoperation mit größerer Wahrscheinlichkeit fertiggestellt wurde oder die Daten von der vorherigen Stufe mit größerer Wahrscheinlichkeit über den Datenkanal angekommen sind. Durch Liefern des Ergebnisses von dem verzögerten Latch zu der nächsten Verarbeitungsstufe 1030 und durch Unterbrechen der Verwendung des nichtverzögerten Wertes in nachfolgenden Verarbeitungsstufen, kann der Fortschritt der Berechnung sichergestellt werden. Die Zuverlässigkeit des verzögerten Signalwertes, der in dem verzögerten Latch 1018 abgelegt ist, kann jedoch eingeschränkt werden, in dem Fall, daß ein einzelnes Störungsereignis auftrat und den verzögerten Wert beschädigte. Das einzelne Störungsereignis ist gewissermaßen ein Puls, so daß er von dem nichtverzögerten Latch verpaßt sein kann, jedoch von dem verzögerten Latch aufgenommen sein kann. Solch ein einzelnes Störungsereignis wird dazu führen, daß der Vergleicher einen Unterschied zwischen dem verzögerten und dem nichtverzögerten Wert erfaßt als ein direktes Ergebnis des einzelnen Störungsereignisses und wird dann den beschädigten verzögerten Wert zu den nachfolgenden Verarbeitungsstufen weiterleiten. Ein einzelnes Störungsereignis, das den nichtverzögerten Wert beschädigt wird nicht problematisch sein, da es dazu führen wird, daß die Verwendung des fehlerhaften nichtverzögerten Wertes unterdrückt wird und der verzögerte Wert zu nachfolgenden Stufen weitergeleitet wird.

Die Anordnung von 14 reduziert die Wahrscheinlichkeit eines beschädigten verzögerten Wertes, der sich durch die Berechnung ausbreitet durch Bereitstellen der Gegenprobe der Datenintegrität durch das Bereitstellen eines Fehlererfassungsmoduls 1026, eines Fehlerkorrekturmoduls 1028 und eines Multiplexers 1022, der von dem Fehlererfassungsmodul 1026 gesteuert wird, um entweder den verzögerten Wert von dem verzögerten Latch direkt zu dem Vergleicher 1024 zu liefern oder alternativ einen fehlerkorrigierten Wert zu liefern, der von dem Fehlerkorrekturmodul 1028 ausgegeben wird. Aufstromig zu dem Kanal/der logischen Einheit 1014 werden 8-Bit-Nutzdaten fehlerkorrekturkodiert und 4 Redundanzbits werden zu den Nutzdaten hinzugefügt, um ein 12-Bit-Signal zu bilden. Das 12-Bit-Signal wird durch den Kanal/logische Einheit 1014 geleitet und sein Wert wird von sowohl dem nichtverzögerten Latch 1016 als auch dem verzögerten Latch 1018 aufgenommen. Ein verzögerter Wert des Signals, das von dem verzögerten Latch 1018 abgeleitet wird, wird jedoch ebenso als Eingang zu dem Fehlererfassungsmodul 1026 geliefert, das aus dem 12-Bit-fehlerkorrekturkodierten Signal bestimmt, ob irgendwelche Fehler aufgetreten sind, die den verzögerten Wert beeinflussen. In einer alternativen Ausführungsform könnte ein weiteres Latch bereitgestellt werden, um einen Signalwert zu dem Fehlererfassungsmodul 1018 zu liefern, der dem Signalwert zu einem Zeitpunkt kurz nach dem verzögerten Latch 1018 aufnimmt. Die Fehlerüberprüfung muß auf einem Wert durchgeführt werden, der zur selben Zeit aufgenommen wurde wie der verzögerte Wert aufgenommen wurde oder kurz danach, um sicherzustellen, daß jeder zufälliger Fehler, der zwischen der Aufnahme des nichtverzögerten Wertes und der Aufnahme des verzögerten Wertes aufgetreten ist, erfaßt wird.

Ein gegebener Fehlerkorrekturcode ist in der Lage, eine vorbestimmte Anzahl von Fehlern zu erfassen und eine gegebene Anzahl von Fehlern zu korrigieren. Somit erfaßt das Fehlererfassungsmodul 1026, ob irgendwelche Fehler aufgetreten sind und, falls es so ist, ob die Anzahl von Fehlern ausreichend klein ist, so daß sie alle korrigierbar sind. Wenn korrigierbare Fehler erfaßt werden, dann wird der Signalwert zu dem Fehlerkorrekturmodul 1028 geliefert, wo die Fehler korrigiert werden unter Verwendung des Fehlerkorrekturcodes und der korrigierte verzögerte Wert wird zu dem Vergleicher 1024 geliefert. Wenn bestimmt wird durch den Vergleicher 1024, daß der korrigierte verzögerte Wert sich von dem nichtverzögerten Wert unterscheidet, dann wird die Fehlerkorrekturprozedur aufgerufen, so daß eine weitere Ausbreitung des nichtverzögerten Wertes in nachfolgenden Verarbeitungsstufen unterdrückt wird und die Operationen statt dessen durchgeführt werden unter Verwendung des korrigierten verzögerten Wertes. Auf der anderen Seite, wenn der Vergleicher 1024 bestimmt, daß der korrigierte verzögerte Wert der selbe wie der verzögerte Wert ist, dann gibt es 2 alternative Möglichkeiten für die weitere Berechnung. Als erstes könnte der Fehlerkorrekturmechanismus nichtsdestotrotz aufgerufen werden, so daß der nichtverzögerte Wert in nachfolgenden Verarbeitungsstufen unterdrückt und durch den korrigierten verzögerten Wert ersetzt wird. Alternativ dazu könnte, da der nichtverzögerte Wert als korrekt bestimmt wurde (bestätigt durch die Gleichheit des nichtverzögerten Wertes und des korrigierten verzögerten Wertes), der Fehlerkorrekturmechanismus unterdrückt werden (trotz der Erfassung eines Fehlers in dem verzögerten Wert) was somit es dem nichtverzögerten Wert erlaubt, weiterhin durch die nachfolgenden Verarbeitungsstufen fortzuschreiten. Wenn jedoch nichtkorrigierbare Fehler in dem verzögerten Wert durch das Fehlererfassungsmodul 1026 erfaßt werden, dann wird ein Steuersignal bereitgestellt, um die Verwendung des beschädigten verzögerten Wertes zu unterdrücken. In diesem Fall kann ein Voranschreiten der Berechnung nicht erzielt werden. Der Typ der Fehlerkorrekturkodierung, die angewendet wird, unterscheidet sich entsprechend der Natur des Kanals/Bearbeitungslogik 1014.

Die Verarbeitungslogik kann kategorisiert werden als entweder wertweiterleitend oder wertändernd. Beispiele von Verarbeitungslogik, die wertweiterleitend ist, sind Speicher, Register und Multiplexer. Beispiele von wertändernden logischen Verarbeitungselementen sind Addierer, Multiplizierer und Verschieber. Die Fehlererfassung und Korrektur für wertändernde logische Verarbeitungselemente ist komplexer als für wertweiterleitende logische Verarbeitungselemente, da selbst wenn kein Fehler aufgetreten ist, ist der Wertausgang von der logischen Stufe 1014 wahrscheinlich unterschiedlich von dem 12-Bit-Eingangssignal 1013.

15 stellt schematisch die Fehlerkorrektur für Daten, die durch einen Kanal geleitet werden, dar, die einfach den Datenwert unverändert vom Eingang zum Ausgang weiterleitet, wenn kein Fehler auftritt. Im Falle solch einer wertweiterleitenden Verarbeitungslogik ist es bequem, einen linearen Blockcode, wie z. B. einen Hamming Code, für die Fehlerkorrektur und -erfassung zu verwenden. Lineare Blockcodes beinhalten typischerweise das Bilden eines Codeworts, in dem die Nutzdatenbits der ursprünglichen Daten in dem Codewort unverändert bleiben, jedoch einige Paritätsbits (oder Redundanzbits) hinzugefügt werden. Hamming Codes sind einfach Einzelbitfehlerkorrekturcodes und für ein (N,K)-Code ist N die Gesamtzahl von Bits in dem Codewort und K ist die Anzahl von Datenbits, die codiert werden. Die Anwesenheit und der Ort eines Fehlers wird erfaßt durch Durchführen einer Anzahl von Paritätsüberprüfungen auf dem Ausgangscodewort. Der Hamming Code weist N – K Paritätsbits auf, wobei jedes aus einer unterschiedlichen Kombination von Bits in den Daten berechnet wird. Hamming Codes sind in der Lage einen Fehler zu korrigieren oder zwei Fehler zu erfassen. Die Anzahl von Paritätsbits (oder Redundanzbits), die erforderlich ist, wird durch die Hammingregel K + p + 1 ≤ 2p gegeben, wobei p die Anzahl von Paritätsbits ist und N = K + p.

Wie in 15 dargestellt, ist die Eingabe in den Kanal ein 12-Bit-Codewort, das 8 Datenbits und 4 Paritäts- oder Redundanzbits aufweist. Paritätsüberprüfungen werden von einem Fehlererfassungs-/Korrekturmodul 1116 auf der Ausgabe von dem Kanal 1114 durchgeführt. Jeder Einzelbitfehler in dem 12-Bit-Codewort wird erfaßt und korrigiert vor der Ausgabe des Codeworts durch das Fehlererfassungs-/Korrekturmodul 1116. Wenn erfaßte Fehler nicht korrigierbar sind, gibt das Fehlererfassungs-/Korrekturmodul 1116 ein Signal aus, das anzeigt, daß dies der Fall ist. Obgleich einfache Codes, wie z. B. Hamming Codes, in Bezug auf 11 für die Verwendung mit einer wertweiterleitenden Verarbeitungslogik beschrieben wurde, versteht es sich, daß andere Korrekturcodes wie z. B. Faltungscodes alternativ verwendet werden könnten.

16 stellt schematisch dar, wie eine Fehlerkorrektur für ein wertveränderndes Logikelement durchgeführt wird, wie z. B. einen Addierer, Multiplizierer oder Verschieber. Im Falle von wertändernder Verarbeitungslogik können arithmetische Codes, wie z. B. AN-Codes, Residuencodes, inverse Residuencodes oder Residuennummerncodes verwendet werden, um Zufallsfehler in der Ausgabe der Verarbeitungslogik zu erfassen und zu korrigieren.

Arithmetische Codes können verwendet werden, um arithmetische Operatoren zu überprüfen. Wo

den zu überprüfenden Operator darstellt, muß die folgende Relation erfüllt sein:

AN Codes sind arithmetische Codes, die das Multiplizieren des Datenwortes mit einem konstanten Faktor beinhalten, beispielsweise kann ein 3N Code verwendet werden, um die Gültigkeit einer Additionsoperation zu überprüfen durch Durchführen des folgenden Vergleichs: 3N(X) + 3N(Y) ?= 3N(X + Y) 3X + 3Y ?= 3(X + Y)

Ein weiteres Beispiel einer Klasse von arithmetischen Codes sind Residuencodes, in denen ein Residuum (Rest der Division durch eine Konstante) zu den Datenbits als Prüfbits zugefügt wird, z. B. beinhaltet ein 3R Code Modulo (MOD) 3 Operationen und die folgende Prüfung wird angewandt: X MOD 3 + Y MOD 3 ?= (X + Y) MOD 3

Man betrachtet das numerische Beispiel von X = 14 und Y = 7:

14 MOD 3 = 2 (Codewort 111010 mit den letzten zwei Bits als Residuum),

7 MOD 3 = 1 (Codewort 011101),

X + Y = 21 (10101)

und 21 MOD 3 = 0,

Summe der Residuen MOD 3 = (2 + 1) MOD 3 = 0 = Residuum von (X + Y).

16 stellt schematisch die Verwendung eines 7R Arithmetikcodes für das Überprüfen einer Additionsoperation in dem Kanal/der logischen Einheit 1014 von 10 dar. Die Additionsoperation, die überprüft wird, ist X + Y, wobei X und Y 8-Bit-Datenworte sind. Jedes Datenwort hat 4 Prüfbits mit Werten X MOD 7 bzw. Y MOD 7. X MOD 7 und Y MOD 7 werden als Operanden an einem ersten Addierer 1210 geliefert und die Ausgabe dieses Addierers wird zu der Logik geliefert, die den Wert (X MOD 7 + Y MOD 7) MOD 7 bestimmt und das Ergebnis als einen ersten Eingang zu einem Vergleicher 1250 liefert. Ein zweiter Addierer 1230 führt die Addition (X + Y) durch, liefert das Ergebnis an eine logische Einheit 1240, die (X + Y) MOD 7 berechnet und das Ergebnis als einen zweiten Eingang an den Vergleicher 1250 liefert. Wenn der Vergleicher irgendeinen Unterschied zwischen den beiden Eingangswerten erfaßt, dann ist ein Fehler aufgetreten.

17 ist ein Flußdiagramm, das schematisch die Funktionsweise des Schaltkreises von 14 veranschaulicht, daß eine Fehlerkorrektursteuerung des verzögerten Latchwertes aufweist. In der Stufe 1210 wird ein korrekturcodierter 12-Bit-Signalwert in den Kanal/logische Einheit 1014 eingegeben. Als nächstes nimmt in der Stufe 1320 das nichtverzögerte Latch 1016 den Ausgang von dem Kanal/logische Einheit 1014 zum Zeitpunkt Ti auf und der aufgenommene Wert wird zu der nachfolgenden logischen Verarbeitungsstufe I + 1 in Schritt 1330 weitergeleitet. In Schritt 1350 nimmt die Fehlererfassungslogik den Ausgang von dem Kanal/logische Einheit 1014 zum Zeitpunkt Ti + (d + &dgr;) auf. Obgleich &dgr; in bevorzugten Ausführungsformen Null ist, so daß der Wertausgang von dem verzögerten Wert selbst tatsächlich auf Fehler überprüft wird, kann der Ausgang alternativ kurz nachdem der verzögerte Latch das Ausgangssignal bei Ti + d aufnimmt, aufgenommen werden. Das Aufnehmen des Wertes für das Liefern zu dem Fehlererfassungsschaltkreis ist geeignet getaktet, um sicherzustellen, daß jeglicher zufällige Fehler in dem verzögerten Wert erfaßt wird. In Schritt 1360 bestimmt das Fehlererfassungsmodul 1026, ob das verzögerte Ausgangssignal einen Fehler hat unter Verwendung der Redundanzbits. Wenn ein Fehler erfaßt wird, wird dann bestimmt, ob der Fehler korrigierbar ist, und zwar in Schritt 1370, was davon abhängen wird, wie viele Bits beeinflußt sind. Beispielsweise kann ein Hamming Code nur einen einzelnen Bitfehler korrigieren. Wenn in Stufe 1370 bestimmt wird, daß der Fehler korrigierbar ist, dann setzt der Prozeß mit Schritt 1390 fort, bei dem der Fehler korrigiert wird und der korrigierte, verzögerte Wert an dem Multiplexer 1022 ausgewählt wird und zu dem Vergleicher 1024 geliefert wird. Wenn jedoch in Schritt 1370 bestimmt wird, daß erfaßte Fehler nicht korrigierbar sind, dann wird ein Steuersignal erzeugt, das anzeigt, daß ein nicht korrigierbarer Fehler aufgetreten ist. In diesem Fall kann das Fortschreiten der Berechnung nicht zuverlässig durchgeführt werden. In Schritt 1392 bestimmt der Vergleicher 1024, ob der fehlerüberprüfte verzögerte Wert gleich dem nichtverzögerten Wert ist und, falls dies der Fall ist, wird die Berechnung fortgesetzt. Anderenfalls wird der Prozeß mit der Abfolge von Schritten, die in Bezug auf 4 beschrieben wurden, die das Unterdrücken des nichtverzögerten Wertes und dessen Ersetzung durch den verzögerten Wert in nachfolgenden Verarbeitungsstufen beinhaltet, durchgeführt.

18 stellt die Verwendung der vorliegenden Technik dar, um dynamisch die relative Taktung zwischen den Verarbeitungsstufen einzustellen. Es ist bekannt, daß in einer Verarbeitungsumgebung mit Pipeline die Verarbeitungsstufen verschiedene Zeiten benötigen, um ihre entsprechenden Operationen auszuführen. Idealerweise wären alle Verarbeitungsstufen ausgeglichen, so daß sie dieselbe Zeit benötigen und daß ihre entsprechenden Zeiten in der gleichen Art und Weise mit Veränderungen der Umgebungsbedingungen variieren. Dies ist jedoch in vielen Fällen nicht praktikabel und es kann sein, daß eine Ansammlung von Verarbeitungsstufen, die bei einer Betriebsspannung oder Temperatur ausbalanciert sind bei einer anderen Betriebsspannung oder Temperatur nicht ausbalanciert sind. Weiterhin können Herstellungsvariationen und andere Merkmale zu beachtlichen Unterschieden zwischen den Verarbeitungsstufentaktungen führen, was die konstruierte Balance dazwischen aufhebt. In diesen Fällen werden die Taktfrequenz und andere Betriebsparameter in Bezug auf ein Worst-Case-Szenario ausgesucht, so daß die Verarbeitungsstufen ausreichend gut ausbalanciert sind, so daß sie unter allen Bedingungen betreibbar sind.

Die vorliegende Technik erlaubt einen selektiveren und tatsächlich dynamischeren Ansatz. Ein Verarbeitungsschaltkreis mit Pipeline 2000 beinhaltet verzögerte Latches 2002, die verwendet werden können, um das Auftreten von Fehlern in den Signalwerten, die von den nicht-verzögerten Latches aufgenommen wurden, zu erfassen. Das Auftreten dieser Fehler wird rückgekoppelt zu einem Taktphasensteuerschaltkreis 204, der dazu dient, die relativen Phasen der Taktsignale, die zu den jeweiligen Latches innerhalb des Hauptpfades geliefert werden, einzustellen, d.h. die nicht-verzögerten Latches. In diesem Fall wird eine Einstellung gemacht, wobei die Zeit effektiv von einer Verarbeitungsstufe geliehen und einer anderen Verarbeitungsstufe zugewiesen wird. Dies kann erreicht werden durch Abgreifen der Taktsignale, die von den jeweiligen nicht-verzögerten Latches verwendet werden, vorauswählbaren Positionen innerhalb einer Verzögerungsleitung entlang der sich das Basistaktsignal ausbreitet.

Bei dem dargestellten Beispiel ist die Verarbeitungslogik zwischen dem Latch LA und dem Latch LB im Betrieb langsamer als die Verarbeitungslogik in der nachfolgenden Stufe. Folglich kann das Taktsignal, das dem nicht-verzögerten Latch LB zur Verfügung gestellt wird, in der Phase verschoben sein, so daß sich die ansteigende Flanke des Taktsignals verzögert (unter der Annahme von einer ansteigenden Flanken-Latchaufnahme) und dadurch die für die langsame Verarbeitungslogik verfügbare Zeit erweitern. Dies reduziert die für die Verarbeitungslogik innerhalb der nachfolgenden Verarbeitungsstufe verfügbare Zeit unter der Annahme, daß diese auf demselben Basistaktsignal wie die anderen Stufenelemente ohne das Latch LB arbeiten.

Die Taktbalance zwischen Verarbeitungsstufen kann dynamisch durchgeführt werden während der ablaufenden Operation des Schaltkreises unter Verwendung einer Rückkopplung von den Fehlern, die unter Verwendung der verzögerten Latches im Betrieb erfaßt wurden. Alternativ kann die Ausbalancierung als eine Ein-Aus-Operation während einer Herstellungsteststufe oder einem „Golden Boot" des integrierten Schaltkreises durchgeführt werden. Die verzögerten Latches, die in 18 gezeigt sind, werden verwendet für die Zwecke der Taktausbalancierung zwischen Verarbeitungsstufen und können danach für die Steuerung der Betriebsparameter und der Fehlerkorrektur wie oben erörtert, z. B. in Bezug auf 1, verwendet werden. Auf diese Art und Weise wird das Bereitstellen der verzögerten Latches weiterverwendet, um ebenso die relativen Taktungen zu steuern.

19 stellt einen einfachen Ansatz für die Pipeline-Fehlerkorrektur basierend auf dem globalen Taktgatter dar. In dem Fall, daß irgendeine Stufe einen Fehler erfaßt, wird die gesamte Pipeline blockiert für einen Zyklus durch das Ausblenden der nächsten globalen Taktflanke. Die zusätzliche Taktperiode erlaubt es jeder Stufe, ihr Ergebnis unter Verwendung des verzögerten Latches als Eingabe neu zu berechnen. Folglich werden alle vorher weitergeleiteten fehlerhaften Werte mit dem korrekten Wert von dem verzögerten Latch ersetzt. Da alle Stufen ihr Ergebnis mit dem verzögerten Latch-Eingang erneut bewerten und irgendeine Anzahl von Fehlern in einem einzelnen Zyklus toleriert werden und der vorwärts gerichtete Fortschritt wird sichergestellt. Wenn alle Stufen in jedem Zyklus einen Fehler erzeugen, wird die Pipeline weiter ablaufen, jedoch mit der Hälfte der normalen Geschwindigkeit.

Es ist wichtig, daß fehlerhafte Pipeline-Resultate nicht in den Architekturzustand geschrieben werden, bevor sie von dem Vergleicher validiert worden sind. Da die Validierung von verzögerten Werten zwei zusätzliche Zyklen benötigt (d.h. einen für die Fehlererfassung und einen für die Panikerfassung), muß es zwei nicht spekulative Stufen zwischen dem letzten verzögerten Latch und der Rückschreibstufe (WB) geben. In unserem Design sind Speicherzugriffe auf den Daten-Cache nicht spekulativ, obgleich nur eine zusätzliche Stufe, die mit ST bezeichnet wird, für die Stabilisierung erforderlich ist vor dem Rückschreiben (WB). Die ST-Stufe fügt ein zusätzliches Niveau des Register-Bypasses ein. Da Speicherbefehle nicht spekulativ ausgeführt werden müssen, werden sie in der WB-Stufe der Pipeline ausgeführt.

19 zeigt ein Pipeline-Taktdiagramm einer Pipeline-Wiedergewinnung für einen Befehl, der in der EX-Stufe der Pipeline fehlgeschlagen ist. Die erste fehlgeschlagene Stufenberechnung tritt im vierten Zyklus auf, jedoch nur nachdem die MEM-Stufe ein inkorrektes Ergebnis unter Verwendung des fehlerhaften Wertes, der von der EX-Stufe weitergeleitet wurde, berechnet hat. Nachdem der Fehler erfaßt wurde, tritt eine globale Taktblockierung im sechsten Zyklus auf, was es der MEM-Stufe erlaubt, das korrekte EX-Ergebnis in dem Razor Shadow-Latch zu bewerten. In dem siebten Zyklus wird die normale Pipeline-Operation wieder aufgenommen.

Bei aggressiv getakteten Anordnungen kann es nicht möglich sein, eine globale Taktaussetzung zu implementieren, ohne signifikant die Prozessorzykluszeit zu verschlechtern. Folglich wurde ein vollständig mit Pipeline versehener Fehler-Wiederherstellungsmechanismus basierend auf Gegenfluß-Pipeline-Techniken implementiert. Der Ansatz, der in 20 gezeigt ist, stellt vernachlässigbare Taktbeschränkungen an das Basisleitung-Pipelinedesign auf Kosten der erweiterten Pipeline-Wiederherstellung über wenige Zyklen auf. Wenn ein nicht-verzögerter Wertfehler erfaßt wird, müssen zwei spezifische Aktionen durchgeführt werden. Zuerst muß die fehlerhafte Stufenberechnung, die dem ausgefallenen nicht-verzögerten Latch folgt, genullt werden. Diese Aktion wird verwirklich unter Verwendung des Bubble-Signals, das der nächsten und den nachfolgenden Stufen anzeigt, daß der Pipeline-Slot leer ist. Als zweites wird der Flush-Drain (Spülzug) getriggert durch Betätigen der Stufen-ID der ausgefallenen Stufe. In dem folgenden Zyklus wird der korrekte Wert von den verzögerten Latch-Daten zurück in die Pipeline injiziert, was es der fehlerhaften Instruktion erlaubt, mit ihren korrekten Eingaben fortzusetzen. Zusätzlich gibt es eine Gegenfluß-Pipeline, wodurch der Flush-Drain beginnt, die ID der ausgefallenen Stufe in der entgegengesetzten Befehlsrichtung auszubreiten. An jeder Stufe, auf die der aktive Flush-Drain tritt, werden die entsprechende Pipeline-Stufe und die unmittelbar vorangehende mit einer Bubble bzw. Blase ersetzt. (Zwei Stufen müssen genullt werden, um der doppelten relativen Geschwindigkeit der Haupt-Pipeline Rechnung zu tragen). Wenn die Flush-ID den Start der Pipeline erreicht, startet die Flush-Steuerlogik die Pipeline bei dem Befehl, der auf den fehlerhaften Befehl folgt, erneut. In dem Fall, daß mehrere Stufenfehler im selben Zyklus unterliegen, werden alle die Wiederherstellung initiieren, jedoch nur der nicht-verzögerte Fehler, der der Rückschreibung (WB) am nächsten ist, wird vollständig durchgeführt. Frühere Wiederherstellungen werden von späteren überschrieben. Man bemerke, daß die Gegenfluß-Pipeline nicht dieselbe Länge haben muß, wie die Vorwärts-Pipeline, so daß beispielsweise der Flush-Drain der Gegenfluß-Pipeline zwei Pipeline-Stufen tief sein könnte, während die Vorwärts-Pipeline eine Tiefe von 12 Stufen haben kann.

20 zeigt ein Pipeline-Taktdiagramm einer Pipeline-Wiederherstellung für einen Befehl, der in der EX-Stufe versagt hat. Wie in dem vorherigen Beispiel tritt die erste fehlgeschlagene Stufenberechnung im vierten Zyklus auf, wenn der zweite Befehl ein inkorrektes Ergebnis in der EX-Stufe der Pipeline berechnet. Dieser Fehler wird im fünften Zyklus erfaßt, was veranlaßt, daß eine Bubble aus der MEM-Stufe ausgebreitet wird und der Flush-Drain initiiert wird. Der Befehl in den EX-ID- und IF-Stufen wird sechsten, siebten bzw. achten Zyklus überspült. Schließlich wird die Pipeline nach dem fehlerhaften Befehl im neunten Zyklus erneut gestartet, worauf die normale Pipeline-Operation wieder aufgenommen wird.

Man rufe sich aus der Beschreibung von 2 oben in Erinnerung, daß in dem Fall, daß die Schaltkreise 102 eine Metastabilität im Fehlersignal erfassen, dann ein Paniksignal ausgeübt wird. In diesem Fall sollte der gegenwärtige Befehl (statt dem nächsten Befehl) erneut ausgeführt werden. Wenn solch ein Panik-Signal ausgeübt wird, werden alle Pipeline-Zustände gespült und die Pipeline wird unmittelbar nachdem der letzte Befehl zurückgeschrieben wurde, erneut gestartet. Paniksituationen verkomplizieren die Garantie des Vorwärtsschreitens, da die Verzögerung in der Erfassung der Situation dazu führen kann, daß das korrekte Ergebnis in dem verzögerten Latch überschrieben wird. Folglich, nachdem eine Panik erfahren wurde, wird die Versorgungsspannung auf ein als sicher bekanntes Betriebsniveau zurückgestellt und die Pipeline wird erneut gestartet. Sobald neu eingestellt, sollte der fehlerhafte Befehl ohne Fehler ausgeführt werden, solange eine Rückkehr verhindert wird, bis dieser Befehl vollständig ausgeführt ist.

Eine Schlüsselanforderung der Pipeline-Wiederherstellungssteuerung ist die, daß sie selbst unter den schlechtesten Betriebsbedingungen (z. B. niedrige Spannung, hohe Temperatur und hohe Prozeßvariation) nicht ausfällt. Diese Anforderung wird erfüllt durch einen konservativen Design-Ansatz, der die Taktung der Fehlerwiederherstellungsschaltkreise bei der unterkritischen Spannung des schlechtesten Falls validiert.

21 zeigt schematisch die Wiederverwendung eines verzögerten Latchs 2100 als einen seriellen Abtastketten-Latch. Dies wird erzielt durch das Bereitstellen eines Multiplexers 2102, der durch die Scan-Ermöglichungssignale gesteuert wird, die es erlauben, daß ein serieller Scan-Datenwert in das Verzögerungs-Latch eingeschrieben wird oder seriell aus dem verzögerten Latch ausgelesen wird, so wie dies erforderlich ist. Weiterhin wird der normale Mechanismus, der es erlaubt, daß der verzögerte Latch-Wert den nicht-verzögerten Latch-Wert ersetzt, ausgewertet, um es zu erlauben, daß ein serieller Abtastkettenwert in den Betriebspfad eingefügt wird.


Anspruch[de]
Speicher zum Speichern von Daten, welcher aufweist:

einen ersten Datenlesemechanismus, der in der Weise betreibbar ist, daß er einen Datenwert aus dem Speicher liest, um ein schnelles Leseergebnis zu erzeugen, welches für die weitere Verarbeitung von dem Speicher ausgegeben wird,

einen langsamen Datenlesemechanismus, der in der Weise betreibbar ist, daß er den Datenwert aus dem Speicher liest, um ein langsames Leseergebnis zu erzeugen, welches verfügbar ist, nachdem das schnelle Leseergebnis für die weitere Verarbeitung ausgegeben worden ist, wobei der langsame Datenlesemechanismus beim Lesen des Datenwertes weniger fehleranfällig ist als der schnelle Datenlesemechanismus,

einen Vergleicher, der so betreibbar ist, daß er das schnelle Leseergebnis und das langsame Leseergebnis vergleicht, um festzustellen, ob das schnelle Leseergebnis sich von dem langsamen Leseergebnis unterscheidet, und

eine Fehlerreparaturlogik, die in der Weise betreibbar ist, daß sie dann, wenn der Vergleicher erfaßt hat, daß das schnelle Leseergebnis sich von dem langsamen Leseergebnis unterscheidet, die weitere Verarbeitung unter Verwendung des schnellen Leseergebnisses stoppt, um anstelle des schnellen Leseergebnisses das langsame Leseergebnis auszugeben und die weitere Verarbeitung auf der Basis des langsamen Leseergebnisses erneut zu beginnen.
Speicher nach Anspruch 1, welcher ein Array aus Speicherzellen aufweist, wobei ein Datenwert, der in einer Speicherzelle innerhalb des Arrays von Speicherzellen gespeichert ist, über eine oder mehrere Bitleitungen gelesen wird. Speicher nach Anspruch 2, wobei der schnelle Datenlesemechanismus in der Weise betreibbar ist, daß er jeweils eine oder mehrere Bitleitungen abtastet, wobei ein erstes Verzögerungsintervall daran anschließt, daß die Speicherzelle mit der einen oder mehreren Bitleitungen verbunden wird, und daß der langsame Datenlesemechanismus in der Weise betreibbar ist, daß er jeweils die eine oder die mehreren Bitleitungen abtastet, wobei ein zweites Verzögerungsintervall daran anschließt, daß die Speicherzelle mit der einen oder den mehreren Bitleitungen verbunden ist, wobei das zweite Verzögerungsintervall größer ist als das erste Verzögerungsintervall. Speicher nach den Ansprüchen 2 und 3, wobei die Speicherzelle über ein Paar von Bitleitungen gelesen wird. Speicher nach Anspruch 4, wobei eine oder mehrere differentielle Abfrageverstärker in der Weise betreibbar sind, daß sie Signalwerte aus dem Paar von Bitleitungen lesen. Speicher nach einem der vorstehenden Ansprüche, wobei der schnelle Lesemechanismus und der langsame Lesemechanismus zumindest einige Schaltkreiselemente gemeinsam verwenden. Speicher nach einem der vorstehenden Ansprüche, wobei die Fehlerreparaturlogik in der Weise betreibbar ist, daß sie die weitere Verarbeitung unterdrückt, indem sie ein Unterdrückungssignal an Schaltkreise ausgibt, an welche das schnelle Leseergebnis für die weitere Verarbeitung weitergeleitet worden ist. Speicher nach einem der vorstehenden Ansprüche, wobei einer oder mehrere Leistungssteuerparameter des Speichers so gesteuert werden, daß sie bei dem schnellen Leseergebnis eine Fehlerrate aufrechterhalten, die nicht null ist. Speicher nach Anspruch 8, wobei der eine oder die mehreren Leistungssteuerparameter einen oder mehrere der folgenden umfassen:

die Betriebsspannung,

die Betriebsfrequenz,

die Vorspannung des Hauptteils, und

die Temperatur.
Verfahren zum Lesen gespeicherter Daten aus einem Speicher, wobei das Verfahren die Schritte aufweist:

Lesen eines Datenwertes mit einem schnellen Datenlesemechanismus aus dem Speicher, um ein schnelles Leseergebnis zu erzeugen, welches für die weitere Verarbeitung von dem Speicher ausgegeben wird,

Lesen des Datenwertes mit einem langsamen Datenlesemechanismus aus dem Speicher, um ein langsames Leseergebnis zu erzeugen, welches verfügbar ist, nachdem das schnelle Leseergebnis für die weitere Verarbeitung ausgegeben worden ist, wobei der langsame Datenlesemechanismus beim Lesen des Datenwertes weniger fehleranfällig ist als der schnelle Datenlesemechanismus,

Vergleichen des schnellen Leseergebnisses und des langsamen Leseergebnisses, um zu erfassen, ob sich das schnelle Leseergebnis von dem langsamen Leseergebnis unterscheidet, und

wenn das schnelle Leseergebnis sich von dem langsamen Leseergebnis unterscheidet, Unterdrücken der weiteren Verarbeitung unter Verwendung des schnellen Leseergebnisses, Ausgeben des langsamen Leseergebnisses anstelle des schnellen Leseergebnisses und erneutes Starten der weiteren Verarbeitung auf der Grundlage des langsamen Leseergebnisses.
Verfahren nach Anspruch 10, wobei der Speicher ein Array aus Speicherzellen aufweist, wobei ein Datenwert, der in einer Speicherzelle in dem Array aus Speicherzellen gespeichert wird, über eine oder mehrere Bitleitungen gelesen wird. Verfahren nach Anspruch 11, wobei der schnelle Datenlesemechanismus in der Weise betreibbar ist, daß er jeweils die eine oder die mehreren Bitleitungen abtastet, wobei ein erstes Verzögerungsintervall darauf folgt, daß die Speicherzelle mit der einen oder den mehreren Bitleitungen verbunden wurde, und wobei der langsame Datenlesemechanismus in der Weise betreibbar ist, daß er jeweils die eine oder die mehreren Bitleitungen abtastet, wobei ein zweites Verzögerungsintervall darauf folgt, daß die Speicherzelle mit der einen oder den mehreren Bitleitungen verbunden wurde, wobei das zweite Verzögerungsintervall größer ist als das erste Verzögerungsintervall. Verfahren nach den Ansprüchen 11 und 12, wobei die Speicherzelle über ein Paar von Bitleitungen gelesen wird. Verfahren nach Anspruch 13, wobei einer oder mehrere differentielle Abfrageverstärker in der Weise betreibbar sind, daß sie Signalwerte aus dem Paar von Bitleitungen lesen. Verfahren nach einem der Ansprüche 10 bis 14, wobei der schnelle Lesemechanismus und der langsame Lesemechanismus zumindest einige Schaltkreiselemente gemeinsam verwenden. Verfahren nach einem der Ansprüche 10 bis 15, wobei die Fehlerreparaturlogik in der Weise betreibbar ist, daß sie die weitere Verarbeitung unterdrückt, indem sie ein Unterdrückungssignal an Schaltkreise ausgibt, an welche das schnelle Leseergebnis für die weitere Verarbeitung weitergeleitet worden ist. Verfahren nach einem der Ansprüche 10 bis 16, wobei einer oder mehrere Leistungssteuerparameter des Speichers so gesteuert werden, daß sie für das schnelle Leseergebnis eine nicht verschwindende Fehlerrate aufrechterhalten. Verfahren nach Anspruch 17, wobei der eine oder die mehreren Leistungssteuerparameter eines oder mehrere der folgenden aufweisen:

die Betriebsspannung,

die Betriebsfrequenz,

die Vorspannung des Hauptteils, und

die Temperatur.






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

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

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