Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
DEVICE AND METHOD FOR STORING DATA AND/OR COMMANDS IN A COMPUTER SYSTEM HAVING AT LEAST TWO EXECUTION UNITS AND AT LEAST ONE FIRST MEMORY OR MEMORY AREA FOR DATA AND/OR COMMANDS
Document Type and Number:
WIPO Patent Application WO/2007/017367
Kind Code:
A1
Abstract:
The invention relates to a device and method for storing data and/or commands in a computer system having at least two execution units and at least one first memory or memory area for data and/or commands. Switching means are provided and at least two operating modes are switched between. Comparison means are provided, and a first operating mode corresponds to a comparison mode, and a second operating mode corresponds to a performance mode. The invention is characterized in that a second memory or memory area is contained in the device. The device is provided in the form of a cache memory system and is equipped with at least two separate ports. One port is directly connected to a first execution unit, and a third device is contained between the second port and the at least one second execution unit. The third device is configured in such a manner that an access of the second execution unit to the second memory or memory area ensues via this third device.

Inventors:
WEIBERLE REINHARD (DE)
MUELLER BERND (DE)
BOEHL EBERHARD (DE)
COLLANI YORCK (DE)
GMEHLICH RAINER (DE)
Application Number:
PCT/EP2006/064588
Publication Date:
February 15, 2007
Filing Date:
July 24, 2006
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
BOSCH GMBH ROBERT (DE)
WEIBERLE REINHARD (DE)
MUELLER BERND (DE)
BOEHL EBERHARD (DE)
COLLANI YORCK (DE)
GMEHLICH RAINER (DE)
International Classes:
G06F11/16; G06F12/08; G06F12/084
Domestic Patent References:
WO2003010638A12003-02-06
Foreign References:
EP0439952A21991-08-07
US5751932A1998-05-12
US20020073357A12002-06-13
US6615366B12003-09-02
US4823256A1989-04-18
US20040123201A12004-06-24
Attorney, Agent or Firm:
ROBERT BOSCH GMBH (Stuttgart, DE)
Download PDF:
Claims:

Patentansprüche

1. Vorrichtung zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Ausfiihrungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich fiir Daten und/oder Befehle, wobei Umschaltmittel vorgesehen sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet wird, wobei Vergleichsmittel vorgesehen sind und ein erster Betriebsmodus einem Vergleichsmodus und ein zweiter Betriebsmodus einem Performanzmodus entspricht, dadurch gekennzeichnet, dass in der Vorrichtung ein zweiter Speicher oder Speicherbereich enthalten isl, wobei die Vorrichtung als Cachespeichersystem ausgebildet ist und mit wenigstens zwei ge- trennten Ports ausgestattet ist, wobei ein Port direkt mit einer ersten Ausführungseinheit verbunden ist und zwischen dem zweiten Port und der wenigstens zweiten Ausführungseinheit eine dritte Einrichtung enthalten ist, die derart ausgestaltet ist, dass ein Zugriff der zweiten Ausführungseinheit auf den zweiten Speicher oder Speicherbereich über die dritte Einrichtung erfolgt.

2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass in den Umschaltmitteln und/oder den Vergleichsmitteln wenigstens ein Speichermittel vorhanden ist und die Umschaltung durch wenigstens ein Bit in den Speichermitteln erfolgt.

3. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass die Umschaltung durch wenigstens ein zum Rechnersystem externes oder internes Signal erfolgt.

4. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass im Performanzmodus die dritte Einrichtung der direkt angeschlossenen Ausführungseinheit einen Lese- und Schreibzugriff zu der zweiten Speichereinrichtung über den angeschlossen Port gewährleistet.

5. Vorrichtung nach Anspruch 1 dadurch gekennzeichnet, dass in dem Cachespeichersystem mindestens ein Zähler vorhanden ist, der bei jedem Abspeichern vergleichsrelevan-

ter Daten von der ersten Ausfiihrungseinheit über den ersten Port dieses Speichers der Zähler inkrementiert oder dekrementiert wird.

6. Vorrichtung nach Anspruch 5 dadurch gekennzeichnet, dass der Zähler bei dem Um- schalten in den Vergleichsmodus auf dem entsprechenden angeschlossenen Port den

Zählerwert ausgibt und dieser in der dritten Einheit gespeichert wird.

7. Vorrichtung nach Anspruch 5, dadurch gekennzeichnet, dass ein zweiter Zähler in der dritten Einrichtung vorgesehen ist und der Zählerwert des Zählers zum Setzen des zwei- ten Zählers der dritten Einheit benutzt wird.

8. Verfahren zur Speicherung von Daten und/oder Befehlen in einem Rechner System mit wenigstens zwei Ausführungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle, wobei Umschaltmittel vorgesehen sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet wird, wobei Vergleichsmittel vorgesehen sind und ein erster Betriebsmodus einem Vergleichsmodus und ein zweiter Betriebsmodus einem Performanzmodus entspricht, dadurch gekennzeichnet, dass ein zweiter Speicher oder Speicherbereich vorgesehen ist, welcher in einem Cachespeichersystem enthalten ist und mit wenigstens zwei getrennten Ports ausgestattet ist, wobei die erste Ausführungseinheit direkt auf den zweiten Speicher oder Speicherbereich über einen ersten Port zugreift und die zweite Ausführungseinheit über eine dritte Einrichtung auf den zweiten Speicher oder Speicherbereich zugreift.

9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass die dritte Einrichtung Spei- chermittel enthält, in denen Daten und/oder Signale von der angeschlossenen Ausführungseinheit gespeichert werden können und, wobei die dritte Einheit unabhängig von dem Zustand dieser besagten Ausführungseinheit Daten mit dem zweiten Speicher oder Speicherbereich austauschen kann.

10. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass die dritte Einrichtung Daten und/oder Adressen und/oder Steuersignale von der zweiten Verarbeitungseinrichtung erhält und daraufhin auf die entsprechenden Daten in des zweiten Speichers oder Speicherbereiches lesend oder schreibend zugreift.

11. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass das Cachespeichersystem über das Vorhandensein der Daten entscheidet und im Falle des NichtVorhandenseins ein Signal an die dritte Einrichtung sendet.

12. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass die Daten und/oder Befehle in der dritten Einheit auf ihre Gültigkeit geprüft werden und im Falle der Gültigkeit weitergeleitet werden.

13. Verfahren nach Anspruch 12, dadurch gekennzeichnet, dass die Gültigkeit anhand von mit den Daten und/oder Befehlen abgespeicherten Zusatzinformationen geprüft wird.

14. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass mit dem Umschalten in den Vergleichsmodus Synchronisationssignale an die betreffenden Ausführungseinheiten ausgesendet werden.

15. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass im Falle eines Vergleichs und einer Abweichung der zu vergleichenden Daten ein Fehler signalisiert wird.

16. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass im Falle eines Votings und einer Abweichung mindestens eines Datums aus der zu votenden Daten der Status und/oder ein Fehler signalisiert wird.

17. Verfahren nach Anspruch 8 dadurch gekennzeichnet, dass in dem Cachespeichersystem ein Zähler vorgesehen ist und der Zähler bei dem Umschalten in den Vergleichsmodus auf dem entsprechenden angeschlossenen Port den Zählerwert ausgibt und dieser in der dritten Einheit gespeichert wird.

18. Verfahren nach Anspruch 17, dadurch gekennzeichnet, dass ein zweiter Zähler in der dritten Einrichtung vorgesehen ist und der Zählerwert des Zählers zum Setzen des zwei- ten Zählers der dritten Einheit benutzt wird.

19. Verfahren nach Anspruch 17, dadurch gekennzeichnet, dass die im Cachespeichersystem vorhandenen Zähler einem Port zugeordnet ist und beim Einschalten des Vergleichsmodus in der dem jeweiligen Port angeschlossenen Verarbeitungseinrichtung auf

einen festen Wert gesetzt wird.

Description:

Vorrichtung und Verfahren zur Speicherung von Daten und/oder Befehlen in einem

Rechnersystem mit wenigstens zwei Ausführungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle

Die vorliegende Erfindung bezieht sich auf Mikroprozessorsysteme mit schnellem Zwi- schenspeicher (Cache) und beschreibt in diesem Kontext einen dual port Cache und insbesondere seine Anwendung für eine Anwendung in einem Datenverarbeitungssystem mit mindestens zwei Ausführungseinheiten, die wahlweise voneinander unabhängig arbeiten oder die gleichen Aufgaben bearbeiten.

Stand der Technik

Bei einer Multiprozessorarchitektur, in der mehrere Ausführungseinheiten (Cores, Prozessoren) in variabler Weise, d.h. in verschiedenen Betriebsmodi miteinander zusammenarbeiten (wie z.B. in der DE 103 32 700 Al beschrieben), soll die Umschaltung zwischen den mindestens zwei verschiedenen Modi durch Befehle erfolgen können und bei der Bearbeitung gleicher Aufgaben soll es möglich sein, die erzeugten Daten miteinander zu vergleichen.

Prozessoren werden mit Caches ausgerüstet, um den Zugriff zu Instruktionen und Daten zu beschleunigen. Das ist bei der ständig wachsenden Datenmenge einerseits und der zunehmenden Komplexität der Datenverarbeitung mit immer schneller arbeitenden Prozessoren andererseits notwendig. Durch einen Cache wird der langsame Zugriff auf einen großen (Haupt-) Speicher teilweise vermieden und der Prozessor muss dann nicht auf die Bereitstellung der Daten warten. Es sind sowohl Caches ausschließlich für Befehle als auch ausschließlich für Daten bekannt,

aber auch "Unified Caches", bei denen sowohl Daten als auch Instruktionen in demselben Cache abgelegt werden. Bekannt sind auch Systeme mit mehreren Levels (Hierarchiestufen) von Caches. Solche mehrstufigen Caches werden eingesetzt, um mit abgestuften Speichergrößen und verschiedenartigen Adressierungsstrategien der Caches auf den verschiedenen Levels eine optimale Anpassung der Geschwindigkeiten zwischen Prozessor und dem (Haupt-) Speicher vorzunehmen. Bei einem Multiprozessorsystem ist es üblich, jeden Prozessor mit einem Cache o- der bei Multi-Level Caches mit entsprechend mehreren Caches auszurüsten. Es sind aber auch Systeme bekannt, in denen mehrere Caches existieren, die von verschiedenen Prozessoren adressierbar sind, wie zum Beispiel im US Patent 4345309 beschrieben.

In so einem System, ohne die hier beschriebene Erfindung, ist die Einheit zum Vergleich erzeugten Daten (der Vergleicher) in einer möglichen Ausführung nach den Caches angeordnet. Das führt dazu, dass die Daten erst beim Rückschreiben vom Cache in den Hauptspeicher verglichen werden können, was zu verzögerter Bewertung der Gültigkeit von Daten führen kann Ordnet man andererseits den Vergleicher zwischen den Ausführungseinheiten und dem Cache an, so wird der Datentransfer zwischen Ausführungseinheit und Cache durch die höhere elektrische Belastung der Signale verlangsamt.

Aufgabe der Erfindung ist sicherzustellen, dass ein Vergleich der Daten zeitnah mit der Abspei- cherung in den Cache und unabhängig vom Zeitpunkt des Rückschreibens in den Hauptspeicher stattfinden kann. Dabei soll der Datentransfer zwischen mindestens einer Ausführungseinheit und dem Cache nicht durch höhere elektrische Busbelastung beeinträchtigt werden.

Vorteile der Erfindung

Eine Realisierung eines Dual Port Cache-Speichers ist wegen des erhöhten Hardwareaufwandes in bekannten Prozessorsystemen mit einer oder mehreren Ausführungseinheiten (Single- oder Mehrfachcores) nicht nahe liegend. Bei einer Multiprozessorarchitektur, in der mehrere Ausführungseinheiten (Cores, Prozessoren) in variabler Weise, d.h. in verschiedenen Betriebsmodi mi- einander zusammenarbeiten (wie z.B. in der DE 10332 700 Al beschrieben), kann eine dual port Cache Architektur vorteilhaft eingesetzt werden. Der wesentliche Vorteil gegenüber Multi- prozessorsystemen mit mehreren Caches besteht darin, dass bei einer Umschaltung zwischen

den Betriebsmodi des Multiprozessorsystems der Inhalt des Caches nicht gelöscht oder fiir ungültig erklärt werden muss, weil die Daten nur einmal abgelegt werden und deshalb auch nach einer Umschaltung konsistent bleiben.

Von Vorteile wäre deshalb eine Ausführung, bei der zumindest fiir eine Ausfiihrungseinheit durch eine direkte Verbindung mit dem Cache der Datentransfer in diesem Hochgeschwindg- keitsbereich mit hoher Datenrate ungehindert erfolgt und trotzdem ein unverzögerter Vergleich direkt nach dem Ablegen der Daten im Cache erfolgen kann. Dazu dient der zweite Port dieses Caches, an dem die Daten zu einem Vergleich zurückgelesen werden.

Ein Dual Port Cache in einem Multiprozessorsystem mit mehreren Betriebsmodi hat den Verteil, dass die Daten/Befehle nicht mehrfach in den Cache geholt und ggf. gepflegt werden müssen. Weiterhin muss nur ein Speicherplatz pro Datum/Befehl hardwaremäßig bereitgestellt wσ- den, auch wenn dieses Datum bzw. dieser Befehl von mehreren Ausführungseinheiten benutzt wird. Darüber hinaus müssen die Daten bei verschiedenen Betriebsmodi des Multiprozessorsystems nicht dahingehend unterschieden werden, in welchem Modus sie bearbeitet oder geholt wurden. Ein besonderer Vorteil ist, dass der Cache bei Wechsel des Betriebsmodus nicht gelöscht werden muss. Bei einem Dual Port Cache können zwei Prozessoren gleichzeitig zu den gleichen Daten/Befehlen lesend zugreifen. Ein besonderer Vorteil ist weiterhin, dass anstelle des „write through" Modus auch ein „write back" Modus für den Cache eingesetzt werden kann.

Durch diese Methode muss nicht ständig der (Haupt-) Speicher aktualisiert werden, sondern erst beim überschreiben der Daten im Cache. Es gibt dabei keine Konsistenzprobleme, weil der Cache fiir beide Prozessoren die Daten aus der gleichen Quelle liefert und auch der Vergleichszeitpunkt der Daten ist davon nicht betroffen, weil der Vergleich unabhängig von dem Rück- schreiben in den Hauptspeicher erfolgt.

Eine asymmetrische Dual Port Cache Struktur, wie hier erfindungsgemäß vorgeschlagen, hat insbesondere den Vorteil, dass das Schreiben der Daten in den Cache zumindest für eine Ausfiihrungseinheit nicht behindert wird, aber andererseits mit dem Vergleich nicht gewartet wer- den muss, bis die Daten aus dem Cache in den Haut-Speicher geschrieben werden. Dadurch ist es möglich, dass die Daten erst dann Blockweise in den Hauptspeicher zurückgeschrieben werden, wenn der Block im Cache durch einen anderen Block ersetzt wird („write back" modus).

- A -

Das verringert die Datenrate auf dem Bus zwischen Cache und Hauptspeicher im Vergleich zu dem „write through" Modus, bei dem fiir jede Aktualisierung eines Datums im Cache auch gleich das

entsprechende Datum im Hauptspeicher geändert wird. Die Aktualisierung erfolgt hier zwar nicht Blockweise, sondern nur das geänderte Datum wird parallel in den Hauptspeicher übertragen. Trotzdem ist die Busbelastung zum Hauptspeicher (im Sinne des Datentransfers) höher, weil mit jedem Schreibbefehl auch dieser Bus belegt wird.

Bei einem „write back" Modus arbeiten die Ausführungseinheiten nur mit dem Cache zusammen, solange die Daten dort verfügbar sind. Beim Schreiben einer Ausführungseinheit in dem Cache wird dazu das Dirty-Bit gesetzt, das anzeigt, dass die Daten des Blocks nicht mehr mit dem Hauptspeicher übereinstimmen. Sofern die beteiligten Ausführungseinheiten mit dem gemeinsamen Cache arbeiten, braucht das Datum im Hauptspeicher aber nicht aktualisiert werden, solange der betreffende Block im Cache bleibt. Es können dazu mehrere Datenworte auch mehrfach geändert werden, ohne die Datenkonsistenz der Ausführungseinheiten zu beeinträchtigen.

Vorteilhaft ist eine Vorrichtung zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Ausführungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle, wobei Umschaltmittel vorgesehen sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet wird, wobei Vergleichsmittel vorgesehen sind und ein erster Betriebsmodus einem Vergleichsmodus und ein zweiter Betriebsmodus einem Performanzmodus entspricht, dadurch gekennzeichnet, dass in der Vorrichtung ein zweiter Speicher oder Speicherbereich enthalten ist, wobei die Vorrichtung als Cachespeichersystem ausgebildet ist und mit wenigstens zwei getrennten Ports ausgestattet ist, wobei ein Port direkt mit einer ersten Ausführungseinheit verbunden ist und zwischen dem zweiten Port und der wenigstens zweiten Ausführungseinheit eine dritte Einrichtung enthalten ist, die derart ausgestaltet ist, dass ein Zugriff der zweiten Ausführungseinheit auf den zweiten Speicher oder Speicherbereich über die dritte Einrichtung erfolgt.

Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass in den Um- schaltmitteln und/oder den Vergleichsmitteln wenigstens ein Speichermittel vorhanden ist und die Umschaltung durch wenigstens ein Bit in den Speichermitteln erfolgt.

Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass die Umschaltung durch wenigstens ein zum Rechnersystem externes oder internes Signal erfolgt.

Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass im Perfor- manzmodus die dritte Einrichtung der direkt angeschlossenen Ausführungseinheit einen Lese- und Schreibzugriff zu der zweiten Speichereinrichtung über den angeschlossen Port gewährleistet.

Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass in dem Cachespeichersystem mindestens ein Zähler vorhanden ist, der bei jedem Abspeichern vergleichsreb- vanter Daten von der ersten Ausführungseinheit über den ersten Port dieses Speichers der Zäh- ler inkrementiert oder dekrementiert wird.

Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass der Zähler bei dem Umschalten in den Vergleichsmodus auf dem entsprechenden angeschlossenen Port den Zählerwert ausgibt und dieser in der dritten Einheit gespeichert wird.

Vorteilhaft ist weiterhin eine solche Vorrichtung, dadurch gekennzeichnet, dass ein zweiter Zähler in der dritten Einrichtung vorgesehen ist und der Zählerwert des Zählers zum Setzen des zweiten Zählers der dritten Einheit benutzt wird.

Vorteilhaft ist ein Verfahren zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Ausführungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle beschrieben, wobei Umschaltmittel vorgesehen sind und zwischen wenigstens zwei Betriebsmodi umgeschaltet wird, wobei Vergleichsmittel vorgesehen sind und ein erster Betriebsmodus einem Vergleichsmodus und ein zweiter Be- triebsmodus einem Performanzmodus entspricht, dadurch gekennzeichnet, dass ein zweiter

Speicher oder Speicherbereich vorgesehen ist, welcher in einem Cachespeichersystem enthalten

ist und mit wenigstens zwei getrennten Ports ausgestattet ist, wobei die erste Ausführungsein- heit direkt auf den zweiten Speicher oder Speicherbereich über einen ersten Port zugreift und die zweite Ausfiihrungseinheit über eine dritte Einrichtung auf den zweiten Speicher oder Speicherbereich zugreift.

Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die dritte Einrichtung Speichermittel enthält, in denen Daten und/oder Signale von der angeschlossenen Ausführungseinheit gespeichert werden können und, wobei die dritte Einheit unabhängig von dem Zustand dieser besagten Ausführungseinheit Daten mit dem zweiten Speicher oder Speicherbereich aus- tauschen kann

Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die dritte Einrichtung Daten und/oder Adressen und/oder Steuersignale von der zweiten Verarbeitungseinrichtung erhält und daraufhin auf die entsprechenden Daten in des zweiten Speichers oder Speicherberei- ches lesend oder schreibend zugreift.

Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass das Cachespeichersystem über das Vorhandensein der Daten entscheidet und im Falle des NichtVorhandenseins ein Signal an die dritte Einrichtung sendet.

Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die Daten und/oder Befehle in der dritten Einheit auf ihre Gültigkeit geprüft werden und im Falle der Gültigkeit weitergeleitet werden.

Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die Gültigkeit anhand von mit den Daten und/oder Befehlen abgespeicherten Zusatzinformationen geprüft wird.

Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass mit dem Umschalten in den Vergleichsmodus Synchronisationssignale an die betreffenden Ausführungseinheiten aus- gesendet werden.

Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass im Falle eines Vergleichs und einer Abweichung der zu vergleichenden Daten ein Fehler signalisiert wird.

Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass im Falle eines Votings und einer Abweichung mindestens eines Datums aus der zu votenden Daten der Status und/oder ein Fehler signalisiert wird.

Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass in dem Cachespeichersystem ein Zähler vorgesehen ist und der Zähler bei dem Umschalten in den Vergleichsmodus auf dem entsprechenden angeschlossenen Port den Zählerwert ausgibt und dieser in der dritten

Einheit gespeichert wird.

Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass ein zweiter Zähler in der dritten Einrichtung vorgesehen ist und der Zählerwert des Zählers zum Setzen des zweiten Zählers der dritten Einheit benutzt wird.

Vorteilhaft ist ein Verfahren beschrieben, dadurch gekennzeichnet, dass die im Cachespeichersystem vorhandenen Zähler einem Port zugeordnet ist und beim Einschalten des Vergleichsmodus in der dem jeweiligen Port angeschlossenen Verarbeitungseinrichtung auf einen festen Wert gesetzt wird.

Weitere Vorteile und vorteilhafte Ausgestaltungen ergeben sich aus den Merkmalen der Ansprüche sowie der Beschreibung.

Figuren und Tabellen

Figur 1 zeigt einen Dual Port Cache für Daten und/oder Befehle.

Figur 2 zeigt einen Dual Port Cache mit Details.

Figur 3 zeigt eine Transformationstabelle von 214 bzw. 224.

Figur 4 zeigt eine Aufteilung des dpRAM in zwei Teilbereiche, die unabhängig voneinander betrieben werden können und mit je zwei separaten select-Signalen von jedem Port im Zugriff gesteuert werden.

Tabelle 1 beschreibt die Erzeugung von 4 select-Signalen aus 2 Adressbits mittels De- codierung

Figur 5 zeigt eine Realisierung eines dual port RAM-Bereiches durch einen single port RAM mittels Portumschaltung.

Figur 6 zeigt eine Einteilung eines Multiple port RAM mit p Ports in mehrere Teil-

Adressbereiche l...q, die parallel bearbeitet werden können.

Figur 7 zeigt eine Realisierung eines multi port RAM-Bereiches durch einen single port RAM mittels Portumschaltung.

Figur 8 zeigt eine Aufteilung der RAM-Bereiche für die Ports in Abhängigkeit von einem Systemzustand oder einer Konfiguration.

Tabelle 2 beschreibt die Erzeugung von je zwei select-Signalen an jedem Port aus einem

Adressbit unter Berücksichtigung von einem Systemzustands- oder Konfigurationssignal.

Tabelle 3 beschreibt die Erzeugung von je zwei select-Signalen an jedem Port aus einem

Adressbit unter Berücksichtigung von einem Systemzustands- oder Konfigurationssignal in einer anderen Ausfuhrungsform.

Figur 9 zeigt eine Aufteilung eines multi port RAMs in Bereiche in Abhängigkeit von einem Systemzustand oder einer Konfiguration durch Generierung der entsprechende Select-Signale.

Figur 10 zeigt eine Aufteilung eines multi port RAMs in Bereiche mit mehrfachassoziativem Zugriff.

Figur Bl zeigt das Grundprinzip der asymmetrischen DCSL Architektur mit dual port

Cache.

Figur B2 zeigt das Grundprinzip einer Umschalt- und Vergleichseinheit für zwei Ausführungseinheiten.

Figur B3 zeigt eine Leseanforderungseinheit B 106 im inaktiven Zustand

Figur B4 zeigt einen alternativen Zugriff einer Ausführungseinheit zum Speicher ohne

Cache durch eine Umschalt- und Vergleichseinheit falls ein Vergleichsbit nicht gesetzt ist.

Figur B5 zeigt eine Leseanforderung an einen Cache durch eine Einheit falls ein Vergleichsbit gesetzt und Daten von einer Ausführungseinheit BI lO ausgegeben werden.

Tabelle 4 beschreibt den Aufbau eines Caches. Tabelle 5 erläutert eine mögliche Gestaltung eines Control-Bits.

Figur B7 zeigt einen Dual Port Cache durch Single Port RAM und einer Zugriffssteuerung.

Figur B8 zeigt die Grundstruktur einer asymmetrischen Datenverarbeitungseinheit mit der Umschaltmöglichkeit zwischen mehreren Modi und einem multi-Port Ca- che.

Beschreibung der Ausführungsbeispiele

Als Ausführungseinheit kann im Folgenden sowohl ein Prozessor, ein Core, eine CPU, als auch eine FPU (Floating Point Unit), ein DSP (Digitaler Signalprozessor), ein Coprozessor oder eine

ALU (Arithmetic logical Unit) bezeichnet werden.

Der Dual Port Cache 200 gemäß Figur 1 besteht zu einem wesentlichen Teil aus einem Dual Port RAM (dpRAM, 230). Dieser dpRAM 230 ist vorzugsweise mit zwei voneinander unäb- hängigen Adressdecodern, zwei Daten Schreib-/Lese - Stufen und im Unterschied zu einer einfachen Speicherzellen-Matrix auch mit duplizierten Wort- und Bitleitungen versehen, so dass zumindest der Lesevorgang für beliebige Speicherzellen des dpRAMs von beiden Ports gleichzeitig erfolgen kann. (Sinngemäß gilt aber die Anordnung auch, wenn nicht alle Zugriffselemente dupliziert sind und der dpRAM deshalb nur bedingt gleichzeitig über beide Ports zugreif bar ist.) Unter einem dual Port RAM wird deshalb jeder RAM verstanden, der über zwei Ports 231 und 232 verfügt, die unabhängig voneinander benutzt werden können, ohne in Betracht zu ziehen, wie viel Zeit zur Abarbeitung einer Anforderung zum Lesen oder Schreiben von diesem Port benötigt wird, d.h. wie lange es dauert, bis der angeforderte Lese- oder Schreibvorgang auch ggf. in Wechselwirkung mit Anforderungen von dem anderen Port abgeschlossen ist. Die beiden Ports des dpRAM sind über die Signale 201 bzw. 202 mit den Einrichtungen 210 bzw.

220 verbunden, die eine Prüfung der ankommenden Adressen, Daten und Steuersignale 211 bzw. 221 von unabhängigen Ausführungseinheiten 215 und 225 vornehmen und optional die

Adressen transformieren. Die Daten werden beim Lesen je nach Port über 201 durch 210 auf 211 oder über 202 durch 220 auf 221 ausgegeben bzw. in jeweils umgekehrter Richtung von den Ausführungseinheiten in den Cache-Speicher geschrieben. Beide Ports des dpRAM sind über die Signale 201 und 202 mit einer Buszugriffssteuerung 240 verbunden, die mit Signalen 241 verbunden ist, die die Verbindung zu einem hier nicht dargestellten (Haupt-)Speicher oder zu einem Cache der nächsten Stufe herstellen.

In Figur 2 sind die Einheiten 210, 220 und 250 detaillierter beschrieben. Beim Zugriff auf den Dual Port Cache werden die in den Signalen 211 und 221 enthaltenen Adressen 212 und 222 der Ausführungseinheiten 215 und 225 in einem Adresscomparator 251 der Einrichtung 250 miteinander verglichen und zusammen mit den in 211 und 221 ebenfalls übermittelten Steuersignalen auf Verträglichkeit geprüft. Im Falle eines Konfliktes wird mittels der Steuersignale, die in den Signalen 213 oder 223 enthalten sind, der Zugriff auf den dual Port RAM 230 verhindert. Sd- che Konflikte können sein, dass beide Ausführungseinheiten auf die gleiche Adresse schreiben wollen oder dass eine Ausführungseinheit schreibt während die andere von der gleichen Adresse lesen will.

Der Cache kann teilweise oder vollständig assoziativ ausgeführt sein, d.h. die Daten können an mehreren oder gar beliebigen Stellen des Caches abgelegt sein. Um den Zugriff auf den dpRAM zu ermöglichen, muss dazu erst die Adresse ermittelt werden, über die auf die gewünschten Daten/Befehle zugegriffen werden kann. Je nach Adressierungsmodus wird eine oder werden mdi- rere Blockadressen ausgewählt, an denen das Datum im Cache gesucht wird. Alle diese Blöcke werden gelesen und die mit den Daten im Cache abgespeicherte Kennung wird mit der Index- Adresse (Teil der Original- Adresse) verglichen. Bei übereinstimmung und nach der zusätzϊ- chen überprüfung der Gültigkeit mit Hilfe der ebenfalls im Cache zu jedem Block abgespeicherten Controlbits (z.B. Valid-Bits, Dirty-Bits und Prozess-ID) wird ein Cache Hit Signal erzeugt, das die Gültigkeit anzeigt.

Zur Adresstransformation wird vorzugsweise eine Tabelle eingesetzt, die in einer in Figur 2 dar- gestellten Speichereinheit 214 bzw. 224 (Register oder RAM, auch als TAG-RAM bezeichnet) angeordnet ist und sich in den Einheiten 210 bzw. 220 befindet. Die Tabelle ist eine Adress- transformationseinheit, die sowohl die virtuelle Adresse in eine physikalische Adresse umwan-

delt als auch im Falle eines direct-mapped Cache die genaue (eindeutige) Cache-Zugriffsadresse liefert; bei einer mehrfach assoziativen Cacheorganisation werden mehrere Blöcke angesprochen und bei einem vollständig assoziativen Cache müssen alle Blöcke des Caches gelesen und verglichen werden. Eine solche Adresstransformationseinheit ist z.B. im US Patent 4669043 beschrieben.

Zum Beispiel wird in der o. g. Tabelle zu jeder Adresse bzw. Adressgruppe eines Blocks die Zugriffsadresse des dpRAMs hinterlegt. In der in Figur 3 dargestellten Adressierungsart werden dazu entsprechend der Blockgröße des Caches die signifikanten Adressbits (Index- Adresse) für die Tabelle als Adresse benutzt und der Inhalt ist die Zugriffsadresse des dpRAMs (Figur 3).

Als Block bezeichnet man dabei die Anzahl der Bytes, die im Falle eines Cache Miss (Fehlen der erforderlichen Daten im Cache) gemeinsam aus dem Speicher in den Cache geholt werden, wenn auf eine Adresse aus diesem Bereich lesend zugegriffen wird. Dieser Bbcktransfer kann je nach Hardwarerealisierung in mehreren Teilen zeitlich nacheinander passieren, oder auch pa- rallel durchgeführt werden.

Für den byte- oder Wortweisen Zugriff zum Cache werden die für den Block signifikanten Adressbits mit der Tabelle transformiert und die restlichen (niederwertigen) Adressbits unverändert übernommen.

Für den Schreibvorgang wird beispielsweise einem der beiden Ports eine höhere Priorität eingerichtet, d.h. es wird verhindert, dass gleichzeitig von beiden Ports geschrieben wird. Erst wenn der bevorzugte Port die Schreiboperation ausgeführt hat, darf der andere Port schreiben; ggf. hat auch nur ein Prozessor Schreibrechte für entsprechend zugeordnete Speicherbereiche. Ebenso kann man bei einer beliebigen Schreiboperation auf eine Speicherzelle verhindern, dass die gleiche Speicherzelle vom jeweils anderen Port gelesen wird, oder die Leseoperation kann verä- gert werden, indem der Prozessor mit Lesewunsch solange angehalten wird, bis die Schreiboperation abgeschlossen ist. Dazu ist ein in Figur 2 dargestellter Adresscomparator aller Adressbits (251) mit einem entsprechenden Arbiter 252 vorgesehen, der auch die Steuersignale der Prozes- soren auswertet und die Ausgangssignale 213 und 223 bildet, die diese Abläufe steuern. Die

Ausgangssignale 213 und 223 können in einer vorteilhaften Ausführung jeweils drei Signalzustände einnehmen: select, wait, equal. Für einen reinen Instruktionscache ist ein Schrebzugriff

nicht notwendig; in diesem Fall reicht ein Signalzustand "equal" fiir die Ausgangssignale 213 und 223 aus.

Im Falle eines Cache Miss muss das Datum bzw. der Befehl über das Bussystem aus einem Pio- gramm- oder Datenspeicher geholt werden. Die ankommenden Daten werden zur Ausführungs- einheit weitergeleitet und werden parallel zusammen mit der Kennung und den Controlbits in den Cache geschrieben. Auch hier verhindert der Adresscomparator das nochmalige Holen des Datums vom Speicher, wenn kein Hit vorliegt aber ein Signal equal (Bestandteil oder Zustand von 213 und 223) vom Adresscomparator angezeigt wird. Das Signal equal wird im Falle des beidseitigen Lesens nur von den signifikanten Adressbits gebildet, weil immer der gesamte

Block aus dem Speicher geholt wird. Erst wenn der Block im Cache gespeichert ist, kann die wartende Ausführungseinheit auf den Cache zugreifen.

In einer weiteren vorteilhaften Ausführung werden zwei getrennte Dual Port Caches für Daten und für Befehle vorgesehen, wobei im letzteren üblicherweise keine Schreibvorgänge vorzusehen sind. Der Adress-Comparator prüft in diesem Fall immer nur auf Gleichheit der signifikanten Adressbits und stellt das entsprechende Steuersignal "equal" in den Signalen 213 bzw. 223 bereit.

In einem weiteren Ausführungsbeispiel wird der gleichzeitige Lese-Zugriff von beiden Ports nur dann uneingeschränkt funktioniert, wenn die angeforderten Daten in verschiedenen Adressbereichen vorliegen, die den gleichzeitigen Zugriff ermöglichen. Dadurch können bei der Hardware-Realisierung Aufwendungen gespart werden, weil nicht alle Zugriffs-Mechanismen im Speicher dupliziert werden müssen. Beispielsweise kann der Cache in mehreren Teilspeicherbe- reichen realisiert werden, die unabhängig voneinander betrieben werden können. Jeder Teilspeicher ermöglicht über select-Signale nur die Abarbeitung eines Ports. In Figur 4 ist ein solcher Speicher 230 gezeigt, der zwei Teilspeicherbereiche 235 und 236 beinhaltet. In dem hier gezeigten Ausführungsbeispiel werden aus einem Adressbit A die zwei Select-Signale E 0 und Ei derart gebildet, dass für den Fall A =O E 0 =I und gilt und für den Fall A=I E 0 =O und gilt. In den Signalen 233 und 234 sind dann die beiden select-Signale und die niederwertigen Adressbits A 1-I ... A 0 enthalten.

Für ein weiteres Ausfiihrungsbeispiel mit vier Teilspeichern können die 4 select-Signale aus zwei Adressbits generiert werden, da jeder Teilspeicher eindeutig einen bestimmten Adressbereich bedient. So können beispielsweise mit den 2 Adressbits A + i und A 1 vier Teilspeicherbereiche angesprochen werden, indem die vier select-Signale E 0 bis E 3 entsprechend der binären Wertigkeit gemäß Tabelle 1 generiert werden.

Für die in Figur 4 gezeigten Teilspeicher 235 und 236 ist in Figur 5 ein Ausfiihrungsbeispiel dargestellt. Der dort mit 260 bezeichnete Teilspeicher ist in dieser besonderen Ausführung als Single Port RAM 280 ausgeführt, dessen Adressen, Daten und Steuersignale je nach Anforde- rung umgeschaltet werden. Die Umschaltung wird durch eine Steuerschaltung 270 mit Hufe eines Multiplexers 275 vorgenommen, abhängig von den select-Signalen und anderer Steuersignale 2901 bzw. 2902 (z.B. read, write) von den entsprechenden Ports. Diese Signale sind ai- sammen mit den Daten und Adressen in den Signalen 233 bzw. 234 enthalten und werden über 5281 bzw. 5282 an den Multiplexer 275 geführt, der je nach Entscheidung der Steuerschaltung 270 entsprechend dem Ausgangssignal 2701 entweder 5281 oder 5282 mit den Signalen 2801 verbindet. In diesem Beispiel wird ohne Einschränkung der Allgemeinheit von einer direkten Adressierung des Caches ausgegangen (direct-mapped). Falls eine mehrfach-assoziative Cacheorganisation vorliegt, muss entweder in den Einheiten 275 noch der Vergleich auf Gültigkeit stattfinden und das Cach-hit Signal zum Port weitergeleitet werden oder alle Daten werden über den Port 5331 und das Signal 233 zu 231 bzw. über den Port 5332 und das Signal 234 zu 232 weitergeleitet, wo die Gültigkeit geprüft wird.

Die Steuerschaltung kann dabei die Weiterschaltung der Signale 5281 bzw. 5282 auf 2801 und damit zum Single Port RAM 280 vornehmen und auch die Daten und anderen Signale von 280 in die entgegengesetzte Richtung weiterleiten . Dies geschieht in Abhängigkeit eines gültigen select-Signals und der Signale 233 und 234 und/oder der Reihenfolge, in welcher die Ports über diese Signale eine Lese- oder Schreib-Operation mit dem Speicher 280 veranlassen. Werden in den Signalen 233 und 234 gleichzeitig die Lese- oder Schreibsignale aktiv, so wird ein zuvor definierter Port zuerst bedient. Dieser Vorzugsport bleibt auch dann mit 2801 verbunden, wenn kein Lese- oder Schreibsignal aktiv ist. Der Vorzugsport kann alternativ auch dynamisch vom

Prozessorsystem festgelegt werden, vorzugsweise abhängig von Zustandsinformationen des Prozessorsystems.

Diese Anordnung mit einem Single Port RAM ist kostengünstiger als ein Dual Port RAM mit paralleler Zugriffsmöglichkeit, verzögert aber die Abarbeitung mindestens einer Ausführungs- einheit, wenn gleichzeitig zu einem Teilspeicher (auch lesend) zugegriffen wird. Je nach An- wendung ist es nun möglich, verschiedene Aufteilungen der RAM-Teilbereiche so vorzunehmen, dass zusammen mit der Gestaltung der Befehlsabläufe und der Datenzugriffe von den ui- terschiedlichen Ausführungseinheiten möglichst wenig gleichzeitige Zugriffe zu gleichen Teil- RAM-Bereichen auftreten. Diese Anordnung ist auch erweiterbar auf Zugriffe von mehr als zwei Prozessoren: Es ist in gleicher Weise auch ein Multi-Port RAM realisierbar, wenn die Um- Schaltung der Adressen, Daten und Steuersignale über mehrere Multiplexer stufenweise nacheinander vorgesehen wird (Figuren 6 und 7).

Ein solches Multi Port RAM 290 ist in Figur 6 dargestellt. Dort werden die Port- Eingangssignale 261, 262,...267 in den Decodiereinrichtungen 331, 332, ..337 zu den Signalen 291, 292 ...297 decodiert. Diese Decodierung erzeugt die select-Signale für die Zugriffe zu den einzelnen RAMs in 281, 282 und 288. In Figur 7 ist ein Ausführungsbeispiel für einen Teilspeicher 28x (281 ... 288) näher gezeigt. Dort werden in einer ersten Stufe der Steuereinrichtungen 370 die select-Signale und Steuersignale 3901, 3902, ... 3908 aus den Steuersignalen 291, 292 ... 298 verarbeitet zu den Ausgangssignalen 3701,.. 3707. Diese Ausgangssignale steuern je ei- nen Multiplexer 375 an, der je nach Signalwert die Verbindungen der Busse 381 oder 382, bis

387 oder 388 mit den Signalen 481 ...488 herstellt. In weiteren Stufen sind ähnliche Steuereinrichtungen 370 und Multiplexer 375 entsprechend geschaltet bis in einer letzten Stufe die Signale 5901 und 5902 für die Steuereinrichtung benutzt werden. Das Ausgangssignal 5701 verbindet dann entweder 581 oder 582 mit 681, das mit dem Single Port RAM verbunden ist.

Im Gegensatz zu den Multiplexern 275 von Figur 5 verbinden die Multiplexer 375 von Figur 7 neben den Adress-, Daten- und Steuersignalen auch die select-Signale der nächsten Stufen, die in 381, 382 ... 388 enthalten sind. Weiterhin können in 375 Vergleichseinrichtungen enthalten sein, die bei einer mehrfach-assoziativen Adressierungsart die Gültigkeit der aus den Teilberei- chen gelesenen Daten ermitteln.

In einer weiteren vorteilhaften Ausführung kann die Zuschaltung von RAM-Bereichen zu verschiedenen Ausfuhrungseinheiten von einem oder mehreren Systemzuständen oder Konfigurationen abhängig gemacht werden. In Figur 8 ist dazu ein Beispiel für einen konfigurierbaren Dual Port Cache gezeigt. Dazu wird das System- oder Konfigurationssignal 1000 bei der Deco- dierung der Eingangssignale für jeden der zwei Ports benutzt. Tabelle 2 zeigt eine Möglichkeit der Veränderung der Decodierung in Abhängigkeit von diesem Signal 1000, das hier mitM bezeichnet ist. Ist M=O, so liegt zum Beispiel ein Vergleichsmodus vor, in dem beide Ports Zugriff auf den gesamten Cache haben. Wird aber M=I (z.B. Performanz-Modus), so hat jeder Port nur noch den Zugriff auf die Hälfte des Cache, aber jeder Port kann uneingeschränkt (ohne Einfluss der Aktivitäten am anderen Port) auf diesen Bereich zugreifen. In diesem Modus wird das Adressbit A 1 nicht zur Adressierung des Caches (im direct-mapped mode) verwendet, sondern Daten, die sich in der Adressierung nur in diesem Bit unterscheiden, werden an der gleichen Stelle im Cache abgelegt. Erst beim Lesen des Cache-Inhalts kann anhand der Kennung dann herausgefunden werden, ob es sich um das gesuchte Datum handelt und entsprechend das Cach-hit Signal generiert werden. Je nachdem, wo der entsprechende Vergleicher angeordnet ist, sind die

Daten einschließlich Kennung und Controlbits über die Signale 291, 292,...297 an die Ports 331, 332, ...337 und weiter and die Signale 261, 262,...267 auszugeben. Ebenso ist es möglich im Performanz-Modus (M=I) nur dem Port 1 den Zugriff auf den gesamten Cache zu erlauben. Diese weitere Ausführungsform ist in Tabelle 3 dargestellt. Der Anwender kann auch durch mehrere Konfigurationssignale beliebige andere Aufteilungen des Caches vornehmen. Das erlaubt bei einem größeren Cache-Bereich einmal eine höhere Hit-Rate und verringert damit die Notwendigkeit des Holens der Daten aus dem Hauptspeicher. Andererseits behindern sich die verschiedenen Ausführungseinheiten nicht, wenn über die verschiedenen Ports möglichst nur auf voneinander unabhängige Cache-Bereiche zugegriffen wird. Da diese Bedingungen von den zur Anwendung vorgesehenen Programmen abhängig sind ist es vorteilhaft, wenn je nach Anwendung die Möglichkeit einer anderen Konfiguration besteht. Andererseits kann direkt bei einem Wechsel des Systemzustandes (Vergleichs-Modus / Performanz-Modus) automatisch der Cache durch das Modussignal 1000 umgeschaltet werden.

Diese Möglichkeit der Umschaltung der Ports in Abhängigkeit von einem Modus- oder Konfigurationssignal wird in Figur 9 auf einen Multi-Port Cache 290 erweitert. Dabei sind 331, 332, ... 337 die Ports, die mit Hilfe dieses Modus- oder Konfigurationssignals die Zuschaltung verschiedener Teil-RAM-Bereiche 281,282,... 288 steuern. Diese Steuerung wird mittels entspre-

chend in den Ports generierter select-Signale gewährleistet, die in den Signalen 291, 292,...297 enthalten sind.

Eine weitere Ausführung ist in Figur 10 gezeigt, wenn ein mehrfach-assoziativer Cache vorliegt, bei dem aus jedem Teilspeicher 281, 282,...288 die Daten zusammen mit der Kennung und den

Controlbits zurückgelesen werden. In den Vergleichseinrichtungen 2811, 2812,...2817, 2821, 2822,...2827, ...2881,2882,..2887 wird dann die Gültigkeit geprüft und in Abhängigkeit davon das Datum auf den Signalen 2910, 2920...2970 zusammen mit den Gültigkeitssignalen weitergeleitet. Eine Umschaltung mit Modus- oder Konfigurationssignalen ist dabei optional genauso möglich, wie schon in Figur 9 gezeigt und erläutert. In den Ports 3310, 3320,.. 3370 werden die

Gültigkeitssignale und ggf. die Modus- und Konfigurationssignale 1000 ausgewertet und das entsprechende gültige Datum mit dem Cache Hit Signal bzw. das Cache Miss Signal an die Sg- nale 2610, 2620,...2670 weitergeleitet.

Im Figur Bl ist eine Struktur dargestellt, die den Dual Port Cache für eine asymmetrische Systemstruktur mit zwei Ausführungseinheiten benutzt. Dabei sind Bl 10 und Bl I l die zwei Ausführungseinheiten mit ihren Daten/Adress- und Steuersignalen B 120 bzw. B 121. BlOO ist eine Umschalt- und Vergleichseinheit (UVE).

Diese Umschalt- und Vergleichseinheit ist im Bild B2 in ihrer Grundfunktion für die Anwendung in Verbindung mit zwei Ausführungseinheiten BIO und BI l gezeigt. Verschiedene Ausgangssignale, wie Daten, Steuer- und Adresssignale B20 bzw. B21 der Ausführungseinheiten BIO und BI l sind mit der Umschalteinheit verbunden.

Darüber hinaus gibt es mindestens ein Synchronisationssignal, in Ausgestaltung der erfindungsgemäßen Anordnung beide Ausgangssignale B40 und B41, die mit jeweils einer der Vergleidis- einheiten verbunden sind.

Die Umschalteinheit enthält mindestens ein Steuerregister B 15, das mindestens ein Speichσ- element für ein binäres Zeichen (Bit) B 16 besitzt, das den Modus der Vergleichseinheit un- schaltet. Dieses Bit B 16 kann die zwei Werte 0 und 1 annehmen und kann sowohl durch die Signale B20 oder B21 der Ausführungseinheiten oder durch interne Prozesse der Umschaltein- heit gesetzt oder rückgesetzt werden.

Auf die Umschalteinheit und damit auf das Steuerregister B15 und damit auch das Umschalbit B 16 kann verzichtet werden, wenn ein permanenter Vergleichsmodus eingestellt sein soll. Die Umschalt- und Vergleichseinheit wird dabei zur permanenten Vergleichseinheit und das Signal BlOl ist ständig Eins. Die in den Figuren B3 und B4 dargestellten Zustände entfallen damit. Alle nachfolgenden Betrachtungen gelten damit so, als wenn das Bit B 16 gesetzt wäre und damit das Signal BlOl =I.

Ist dieses Bit B 16 auf den Wert 1 gesetzt, so arbeitet die Umschalteinheit im Vergleichsmodus. In diesem Modus werden alle ankommenden Datensignale aus B20 mit den Datensignalen aus

B21 verglichen, sofern bestimmte vorgebbare Vergleichs-Bedingungen der Steuer- und/oder Adresssignale aus den Signalen B20 und B21 erfüllt sind, die die Gültigkeit der Daten und den vorgesehenen Vergleich für diese Daten signalisieren .

Sind diese Vergleichsbedingungen an beiden Signalen B20 und B21 gleichzeitig erfüllt, so werden die Daten aus diesen Signalen unmittelbar verglichen und bei Ungleichheit wird ein Fehlersignal B17 gesetzt. Ist nur die Vergleichsbedingung aus entweder den Signalen B20 bzw. B21 erfüllt, so wird das entsprechende Synchronisationssignal B40 bzw. B41 gesetzt. Dieses Signal bewirkt in der entsprechenden Ausführungseinheit BIO bzw. BI l ein Anhalten der Verarbei- tung. Und damit eine Verhinderung der Weiterschaltung der entsprechenden Signale, die bisher nicht miteinander verglichen werden konnten. Das Signal B40 bzw. B41 bleibt solange gesetzt, bis die entsprechende Vergleichs-Bedingung der jeweils anderen Ausführungseinheit B21 bzw. B20 erfüllt ist. In diesem Fall wird der Vergleich ausgeführt und das entsprechende Synchrori- sationssignal zurückgesetzt.

Um den Vergleich bei der beschriebenen ungleichzeitigen Bereitstellung der zu vergleichenden Daten durch die beiden Ausführungseinheiten sicherzustellen ist es entweder notwendig, dass die Daten und Vergleichs-Bedingungen der entsprechenden Ausführungseinheit solange auf den entsprechenden Werten gehalten werden, bis das entsprechende Synchronisationssignal B40 bzw. B41 zurückgesetzt wurde, oder die zuerst bereitgestellten Daten müssen in der Umschalteinheit bis zum Vergleich gespeichert werden.

Je nachdem, welche Ausfiihrungseinheit zuerst Daten bereitstellt, muss diese mit der Weiterabarbeitung ihres Programms oder ihrer Prozesse solange warten, bis die andere Ausfuhrungseinheit die entsprechenden Vergleichsdaten bereitstellt.

In einer speziellen Ausführung der Umschalteinheit nach Figur B2 kann auf eines der Signale

B40 bzw. B41 verzichtet werden, wenn immer gewährleistet ist, dass die zugehörige Ausfuhrungseinheit nicht eher Vergleichsdaten bereitstellt, als die andere Ausfuhrungseinheit. Ist das Bit B 16 nicht gesetzt, so sind die Synchronisationssignale B40 und B41 sowie das Fehlersignal B 17 immer auf den Wert 0 gesetzt. Es findet auch kein Vergleich statt und beide Aus- führungseinheiten arbeiten voneinander unabhängig im Performanzmodus.

In einem Performanzmodus verarbeiten beide Ausfuhrungseinheiten aus Figur Bl unabhängig Programme, Programmteile oder Programmsegmente Die Ausfuhrungseinheit Bl I l greift über B 121 zum Cache B 105 zu und der Cache steht über B 161 mit dem Hauptspeicher oder anderen Speichereinrichtungen in Verbindung. Die Ausführungseinheit BIlO greift vorzugsweise über die Einrichtung 106 (durch das Steuersignal BlOl in diesem Modus inaktiv geschaltet) ebenfalls zum dual Port Cache zu und benutzt dafür den zweiten Port dieses Caches (siehe Figur B3). Die Umschalt- und Vergleichseinheit (UVE) B100 ist inaktiv, d.h. es werden keine Daten verglichen (B 16 nicht gesetzt). In einer weiteren Ausführung kann zu dem Zugriff der Ausführungseinheit BIlO über den Cache hier in einer weiteren Ausführungsform aber auch der Zugriff über B 160 direkt zum Hauptspeicher oder anderen Speichereinrichtungen vorgesehen werden (siehe Figur B4). Diese weitere Ausführungsform hat jedoch den Nachteil, dass dann die Daten im Cache nicht mehr konsistent sind. Der entsprechende Block muss dann im Cache durch Rücksetzen des Valid-Bits ungültig gemacht werden, entweder durch die Bearbeitungseinheit BI lO selbst, oder eigenständig durch den Cache, der durch Beobachten des Busses B161 erkennt, ob in einen

Block geschrieben wird, der im Cache vorhanden ist. Dieser Vorgang wird auch als bus- snooping bezeichnet. Die weitere Ausführung von Figur B3 ist demgegenüber wegen des geringeren Aufwandes vorzuziehen.

Der Vergleichsmodus der Struktur von Figur Bl ist in Figur B5 im Detail dargestellt. Wird durch Setzen von B 16 in der UVE B100 dieser Modus aktiviert, so beginnen beide Ausführungseinheiten mit der Abarbeitung des gleichen Programms, das ggf. diversitär auf den beiden Ausführungseinheiten abläuft, d.h. unterschiedliche Algorithmen und/oder Befehle zur Erzeugung der zu vergleichenden Daten benutzt. Die Ausführungseinheit BIlO gibt Daten, die mit-

einander verglichen werden sollen, mit einer entsprechenden Kennung an die Umschalt- und Vergleichseinheit (UVE) BlOO aus.

Diese Aktion bewirkt in der Leseanforderungseinheit B 106 das Abspeichern der Steuersignale (z.B. write) und ggf. zusätzliche Kennungen (Status- oder Prozessinformation, Bearbeitungszyklus) in das Speicherelement B 1061 und die zugehörige Adresse in ein Speicherelement B1062. Die Einheit B106 löst dadurch einen Lesevorgang mittels der aus B1061 in der Steuereinheit B 1064 generierten Steuersignale (z.B. read) und Kennungen in B 1021 und den von B 1062 ausgegebenen Adresssignalen B 1022 an dem Port 2 des Dual Port Cache B 105 aus. Bei einem Lesevorgang im Cache zu Zwecke des Vergleichs wird immer vorausgesetzt, dass die an dem Cache direkt angeschlossene Ausführungseinheit bereits die Daten in den Cache geschrieben hat. Das wird dadurch gewährleistet, dass die Ausführungseinheiten mit dem Schalten in den Vergleichsmodus entsprechend zeitlich zueinander mit der Verarbeitung des Programms starten (siehe auch nachfolgende Kapitel über die Synchronisation). Für den Fall, dass im Ver- gleichsmodus die zu vergleichenden Daten noch nicht im Cache verfügbar sind (Cache Miss), so darf der Cache diese Daten jedoch nicht im Hauptspeicher anfordern, sondern muss den Lesevorgang solange wiederholen, bis die Daten von der unmittelbar mit dem Cache verbundenen Ausführungseinheit geschrieben wurden und somit im Cache vorliegen. Eine zeitliche überwachung oder ein Zähler der misslungenen Versuche garantiert die Erzeugung eines Fehlersignals, falls die Daten nicht in einem toleriertem Zeitbereich oder mit einer bestimmten Anzahl von

Versuchen erledigt wurde.

Der daraufhin empfangene Datenwert wird über B 1023 in B 1063 geschrieben. Die Gültigkeit der Daten wird in den empfangenen Steuersignalen B 1024 angezeigt (Auswertung des Cache Hit Signals und des Valid-Bits, und im Falle der Gültigkeit werden die Daten, Adressen und geeignete Steuersignale über B1003, B1002 und BlOOl zum Vergleich in B100 bereitgestellt. Dabei wird in der Leseanforderungseinheit B 106 die mit den Daten aus dem Cache zurück gelieferte Kennung (Control-Bits) mit der aktuellen Kennung verglichen. Bei Nichtübereinstimmung der Kennungen wird ein erneuter Lesevorgang an der gleichen Adresse im Cache ausgelöst. Die Daten werden erst bei einer gültigen Kennung zusammen mit den Adressen, die ggf. auch als eine zusätzliche Kennung benutzt werden können, mittels geeigneter Steuersignale B 1001 für den Vergleich freigegeben. Bis zur Freigabe des Vergleichswertes (oder ggf. sogar bis zum Ab- schluss des Vergleichs, falls die Signale B 120 in B100 nicht zwischengespeichert werden) wird die Ausführungseinheit BI lO über das Steuersignal B140 (z.B. Wait, Interrupt) angehalten. Da-

durch wird gewährleistet, dass die Vergleichsdaten von B110 an B120 noch anliegen. Werden die Signale B 120 in einem in BlOO enthaltenen FIFO gespeichert, braucht die Ausfuhrungseinheit Bl 10 nicht angehalten werden, solange der FIFO nicht vollständig gefüllt ist. Als FIFO (first in, first out) bezeichnet man dabei eine Speichereinheit, die mehrere Datenworte speichern kann und die die zuerst eingespeicherten Daten auch zuerst wieder ausgibt.

Eine Synchronisation der beiden Ausfuhrungseinheiten kann dadurch erfolgen, dass die Ausfuhrungseinheit Bl 11 die Vergleichsdaten zusammen mit einer Kennung (Adresse und zusätzliche Control-Bits - zum Beispiel Valid-bit, Dirty-Bit, Prozess-ID) im Cache abspeichert und vor dem Vergleich die Gültigkeit entsprechend geprüft wird. Dazu werden die gespeicherten Adressdaten und das Valid-Bit zur Generierung des Cache-Hit Signals benutzt. Das Dirty-Bit zeigt nur an, ob die Daten des betreffenden Blocks im Cache verändert wurden und noch nicht in den Hauptspeicher zurückgeschrieben wurden. Unter der Prozess-ID wird dabei eine Kennzeichnung der Programmabarbeitung verstanden, die mit jedem neuen Schreiben gültiger Daten von Bl 11 in den Cache verändert wird. Dadurch ist gewährleistet, dass die Aktualität der Daten geprüft werden kann, wenn die Prozess-ID z.B. mit dem Start des Vergleichsmodus auf einen bekannten Wert gesetzt und dann in einer bekannten Weise verändert, zum Beispiel inkrementiert wird.

Tabelle 4 zeigt den internen Aufbau eines Caches. Jede Zeile entspricht dabei einem Datenblock.

Der Adress-Tag ist der Teil der Adresse, die für den Zugriff für einen Block relevant ist und mit dem Adress-Index beim aktuellen Zugriff verglichen wird. Bei übereinstimmung und gültigem Valid-Bit (Teil der Control-Bits) wird ein Cache-Hit Signal erzeugt. Der Datenblock kann einige Bytes bis mehrere KBytes Daten enthalten. Die Controlbits sind als ein Beispiel in Tabelle 5 gezeigt.

Um z.B. das Inkrementieren der Prozess-ID zu gewährleisten, wird in dem Cache B 105 ein Zäh- ler B1059 vorgesehen (Figur 6), der mit Beginn des Vergleichsmodus (BlOl=I) über die Signale B 1021 und B 1022 auf einen definierten Wert gesetzt wird. Dieser Wert kann zum Beispiel der hexadezimale Wert 0x0000 sein, wenn der erste Vergleichszyklus beginnt. Dieser Zähler kann dann kontinuierlich mit jedem Schreiben vergleichsrelevanter Daten von Bl I l inkremen-

tiert werden. Vergleichsrelevant heißt, dass man anhand der Adresse und/oder anderer Steuersignale vorgeben kann, ob die Daten für einen Vergleich vorgesehen sind.

Speichert man mit jedem Datum im Cache den Zählerwert als Prozess-ID mit ab, so ist der Da- tenstand eindeutig gekennzeichnet. Anhand eines gleichartigen Zählers B 1069 in der Einheit

B 106 lässt sich dann durch einen einfachen Vergleich entscheiden, ob die entsprechenden Daten schon im Cache vorliegen. Der Zähler B 1069 ist dazu mit dem Aktivwerden von BlOl vorzugsweise auf den gleichen Startwert wie der Zähler B 1059 zu setzen und mit jedem Schreb- signal relevanter Daten von Bl 10 zu inkrementieren. Haben dann die Prozess-ID Bits im gele- senen Block den gleichen oder einen höheren Wert als der Zählerstand von B 1069, so sind die

Daten gültig. Höher kann der Zahlenwert deshalb sein, weil in einen Block auch mehrfach auf unterschiedliche Daten geschrieben werden kann. Der Zähler braucht mit Beginn eines neuen Zyklus nicht rückgesetzt werden. Es muss nur verhindert werden, dass in einem neuen Zyklus nicht Daten überschrieben werde, die noch nicht verglichen wurden.

Eine weitere Ausführung zu dem Zähler ist auch die Abspeicherung der niederwertigen Adressbits (die für die Blockadressierung nicht relevanten Adressbits 0,..., k-1 gemäß Figur 3) als einen Teil der Prozess-ID, während andere Prozess-ID Bits den Zyklus kennzeichnen. Ist die Wortbreite größer als ein Byte, entfallen die entsprechenden niederwertigsten Bits davon Hier- durch ist es möglich zu erkennen, welches Wort im Block zuletzt geschrieben wurde. Dazu werden im Programmablauf beispielsweise entweder die Daten immer mit fortlaufender Adresse geschrieben, oder man kann mit Hilfe einer Transformationstabelle bei linear fortlaufender Programmabarbeitung eine eindeutige Zuordnung des zuletzt geschriebenen Wertes von BlI l zum aktuellen Vergleichswert von BI lO vornehmen.

Eine weitere Möglichkeit besteht darin, den Zählerstand nicht mit dem Datenblock als Prozess- ID im Cache abzuspeichern, sondern den aktuellen Zählerzustand bei jedem Lesezugriff von B 106 über die Steuersignale B 1064 an B 106 zu übermitteln. Als Prozess-ID wird dann nur der laufende Zyklus in entsprechend weniger Speicherbits abgespeichert. Die Speichergωße wird dadurch jedoch nicht wesentlich verringert, weil ein Datenblock im Cache heutzutage üblicherweise schon bis zu 64 KByte enthalten kann. Da sind zum Beispiel 16 zusätzliche Prozess-ID Bits weniger als 0,0031 %.

Eine weitere Ausfiihrungsform der Synchronisation ohne Benutzung der Zähler B 1059 und B1069 besteht in der Aussendung eines Steuersignals B141 (z.B. Interrupt) an die Ausfuhrungseinheit Bl 11 zur Anforderung des Vergleichsmodus. Die Ausfuhrungseinheit Bl I l beginnt dann nach einer bekannten maximalen Zeitspanne T mit der Abarbeitung des Programmteils im Vergleichsmodus. Die Ausfuhrungseinheit BI lO wird entsprechend initialisiert und auf den

Vergleichsmodus vorbereitet, aber gleichzeitig um die maximale Zeitspanne T verzögert gestartet. Dadurch ist gewährleistet, dass die Vergleichdaten im Dual Port Cache B 106 immer vorher bereitstehen, bevor die Ausfuhrungseinheit Bl 10 die entsprechenden Daten ausgibt. Dabei ist in dem Wert T ggf. auch zu berücksichtigen, dass die Daten diversitär berechnet werden, d.h. die Zeitdauer, die durch die Diversität in der Ausführungseinheit BlI l länger gebraucht wird als in

BIlO, ist zu T noch zu addieren.

Unabhängig davon, wie die Aktualität der Vergleichsdaten abgesichert wird, ist die Ausführungseinheit Bl 11 am überschreiben der noch nicht verglichenen Daten zu hindern, falls die Daten z.B. zyklisch aktualisiert werden. Dazu kann das Rücksetzen des Bits B16 z.B. auch ein

Rücksetzen des Steuersignals B141 an die Ausführungseinheit Bl I l bewirken. Solange B141 gesetzt ist, kann bei einer zyklischen Aktualisierung der Daten die Ausführungseinheit B 111 am überschreiben der Daten vom letzten Zyklus gehindert werden. Die Ausführungseinheit Bl I l durchläuft dann entweder eine Warteschleife oder führt Operationen aus, die ohne Vergleich von Daten auskommen. Mit dem Rücksetzen von B 141 wird signalisiert, dass von der Einheit

B 106 keine weiteren Daten zum Vergleich angefordert werden und die bisherigen Vergleichsoperationen abgeschlossen sind. Solange dann B 141 nicht erneut gesetzt wird, arbeitet die Ausführungseinheit Bl 11 im Performanz-Modus. Ein überschreiben der Daten im Cache wird damit wieder möglich, aber erst nach der erneuten Aktivierung von B 141 wird wieder der Ver- gleichsmodus eingeleitet.

In einer weiteren Ausführung wird das Signal B 141 immer nur kurzzeitiger aktiv, um den Vergleichsmodus mittels eines Interrupts vorzubereiten. Ein überschreiben der Daten wird dann verhindert, bis B 141 wieder kurz gesetzt wird und durch den dadurch ausgelösten Interrupt an die betreffende Programmstelle gesprungen wird, die erneut die Vergleichsdaten bereitstellt.

Auf alle Synchronitätsmaßnahmen kann nach einem Start des Vergleichs verzichtet werden, wenn durch geeignete Maßnahmen gewährleistet werden kann, dass die Zeitdauer zwischen der Bereitstellung von Vergleichsdaten durch die Ausführungseinheit BlI l immer größer ist als die

zum Vergleich der Daten mit denen von BI lO benötigte Zeit, die Daten von Bl I l immer mindestens gleichzeitig oder eher als die von BI lO bereitstehen und durch Zwischenspeicherung der Daten von Bl 10 in B100 in einem einfachen Speicher oder FIFO die Ausfiihrungseinheit BIlO nicht durch das Signal B140 zu Synchronisationszwecken angehalten werden muss. Von den hier vorgeschlagenen Methoden sind fiir jede Anwendung nur die jeweils notwendigen

Maßnahmen zu treffen.

In einer weiteren vorteilhaften Ausführungsform ist der Dual Port Cache nicht notwendig mit einem Dual Port RAM realisiert, sondern es wird ein single port RAM B 1056 benutzt (siehe Fi- gur B7) Mittels einer Zugriffsteuerung B 1057 werden nacheinander je nach Anforderung die beiden Ports bedient, von denen aber immer nur einer Zugriff zum RAM über die Signale B 1058 hat. Dadurch kann das Rücklesen durch B 106 bei Zugriffskonflikten ggf. um einen oder mehrere Takte zusätzlich verzögert werden, aber da die Daten ohnehin nicht synchron von beiden Ausführungseinheiten geliefert werden, ist das in verschiedenen Anwendungen kein Nadi- teil. Wesentlich ist nur, dass die Ausführungseinheit Bl I l mit höherer Priorisierung ausgestattet ist und dadurch nicht im Zugriff behindert wird. Weiterhin ist wichtig, dass in der Gesamtbilanz genügende Zugriffsmöglichkeiten für den zweiten Port zur Verfügung stehen, auch wenn die erwähnten Verzögerungen auftreten können. Der Vorteil liegt bei dieser Ausführung in der deutlichen Hardwareeinsparung für den zweiten Port. Sofern in Figur B7 das Signal B 1058 d- rekt mit dem Signal B 121 verbunden ist und sowohl B 1057 als auch B 102 eiifallen liegt ein

Single Port Cache vor, wie er gemäß dem Stand der Technik üblich ist. Die Erweiterung durch die Ablaufsteuerung B 1057 und dem damit möglichen Anschluss von B 102 ist ein deutlich geringerer Zusatzaufwand, als einen Dual Port RAM mit echter Parallelität einzusetzen.

Die Einheit B 106 ist nicht notwendigerweise eine separate Einheit, sondern kann in der UVE

BlOO integriert sein, oder mit dem Cache oder einer Ausführungseinheit zusammen auf einem Chip integriert sein.

Wenn ein Cache mit mehr als zwei Ports gemäß Figur 6 zur Verfügung stehl, d.h. ein Multi-Port Cache B205 können entsprechend Figur B8 auch mehr als zwei Prozessoren die Daten in einem

Vergleichsmodus vergleichen oder voten, d.h. durch Mehrheitsentscheid den gültigen Wert bestimmen. Für jede zusätzlichen Ausführungseinheit Bl 12, ... ist dann auch eine zusätzliche Leseanforderungseinheit B 107, ...gemäß Figur B8 vorzusehen und die UVE B200 muss eine entsprechende Anzahl von Eingängen dafür besitzen. Im Vergleichs- oder Voting-modus

schreibt die direkt am Cache angeschlossene Ausfiihrungseinheit das Datum zum Vergleich o- der Voting direkt in den Cache. Diejenige der übrigen Ausfuhrungseinheiten Bl 10, Bl 12,..., die zuerst ein Datum zum Vergleich/Voting bereitstellt, fordert dann über die angeschlossene Leseanforderungseinheit B 106, B 107,... über den angeschlossenen Port des Cache B205 die entsprechenden Daten an. Diesen Zustand übermittelt diese Ausführungseinheit den anderen

Ausführungseinheiten und der UVE mittels der Signale B8105. Nach dem Bereitstellen der Daten durch den Cache über B 102, B 104, ... werden diese über B8105 der UVE B200 zum Vergleich bereitgestellt. Der Vergleich/das Voting findet statt, wenn alle beteiligten Ausführungseinheiten die entsprechenden Daten zur Verfügung gestellt haben. Gegebenenfalls müssen die anderen Ausführungseinheiten bis zu diesem Zeitpunkt über die Steuersignale B 140, B 142,... angehalten werden. Eine Zeitüberwachung gewährleistet dabei, dass innerhalb eines tolerierten Zeitfensters der Vergleich stattfindet, oder ein Fehler signalisiert wird.

Anstelle eines RAM-Speicher kann die erfindungsgemäße Anordnung auch mit anderen Spei- chertechnologien wie MRAM, FERAM o. ä. dargestellt werden.