[go: up one dir, main page]

DE102005037234A1 - 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 - Google Patents

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 Download PDF

Info

Publication number
DE102005037234A1
DE102005037234A1 DE102005037234A DE102005037234A DE102005037234A1 DE 102005037234 A1 DE102005037234 A1 DE 102005037234A1 DE 102005037234 A DE102005037234 A DE 102005037234A DE 102005037234 A DE102005037234 A DE 102005037234A DE 102005037234 A1 DE102005037234 A1 DE 102005037234A1
Authority
DE
Germany
Prior art keywords
data
memory
cache
port
comparison
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102005037234A
Other languages
English (en)
Inventor
Reinhard Weiberle
Bernd Mueller
Eberhard Boehl
Yorck Collani
Rainer Gmehlich
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102005037234A priority Critical patent/DE102005037234A1/de
Priority to PCT/EP2006/064588 priority patent/WO2007017367A1/de
Priority to CNA2006800294352A priority patent/CN101243404A/zh
Priority to KR1020087002749A priority patent/KR20080033338A/ko
Priority to EP06777936A priority patent/EP1915684A1/de
Priority to JP2008525516A priority patent/JP2009505178A/ja
Publication of DE102005037234A1 publication Critical patent/DE102005037234A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1683Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/845Systems in which the redundancy can be transformed in increased performance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

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, 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 ausgestattet ist, dass ein Zugriff der zweiten Ausführungseinheit auf den zweiten Speicher oder Speicherbereich über die dritte Einrichtung erfolgt.

Description

  • Die vorliegende Erfindung bezieht sich auf Mikroprozessorsysteme mit schnellem Zwischenspeicher (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.
  • 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 A1 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 oder 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 Abspeicherung 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 miteinander zusammenarbeiten (wie z.B. in der DE 103 32 700 A1 beschrieben), kann eine dual port Cache Architektur vorteilhaft eingesetzt werden. Der wesentliche Vorteil gegenüber Multiprozessorsystemen mit mehreren Caches besteht darin, dass bei einer Umschaltung zwischen den Betriebsmodi des Multiprozessorsystems der Inhalt des Caches nicht gelöscht oder für 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 für eine Ausführungseinheit durch eine direkte Verbindung mit dem Cache der Datentransfer in diesem Hochgeschwindigkeitsbereich 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 Voreil, 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 werden, 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 für 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ückschreiben 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 Ausführungseinheit nicht behindert wird, aber andererseits mit dem Vergleich nicht gewartet werden 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). Das verringert die Datenrate auf dem Bus zwischen Cache und Hauptspeicher im Vergleich zu dem „write through" Modus, bei dem für 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 eienr 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 Umschaltmitteln 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 Performanzmodus 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 vergleichsrelevanter Daten von der ersten Ausführungseinheit über den ersten Port dieses Speichers der Zähler 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 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.
  • 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 austauschen 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 Speicherbereiches 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 ausgesendet 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 mindesntens 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
  • 1 zeigt einen Dual Port Cache für Daten und/oder Befehle.
  • 2 zeigt einen Dual Port Cache mit Details.
  • 3 zeigt eine Transformationstabelle von 214 bzw. 224.
  • 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 Decodierung
  • 5 zeigt eine Realisierung eines dual port RAM-Bereiches durch einen single port RAM mittels Portumschaltung.
  • 6 zeigt eine Einteilung eines Multiple port RAM mit p Ports in mehrere Teil-Adressbereiche l...q, die parallel bearbeitet werden können.
  • 7 zeigt eine Realisierung eines multi port RAM-Bereiches durch einen single port RAM mittels Portumschaltung.
  • 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 Ausführungsform.
  • 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.
  • 10 zeigt eine Aufteilung eines multi port RAMs in Bereiche mit mehrfach-assoziativem Zugriff.
  • B1 zeigt das Grundprinzip der asymmetrischen DCSL Architektur mit dual port Cache.
  • B2 zeigt das Grundprinzip einer Umschalt- und Vergleichseinheit für zwei Ausführungseinheiten.
  • B3 zeigt eine Leseanforderungseinheit B106 im inaktiven Zustand.
  • B4 zeigt einen alternativen Zugriff einer Ausführungseinheit zum Speicher ohne Cache durch eine Umschalt- und Vergleichseinheit falls ein Vergleichsbit nicht gesetzt ist.
  • B5 zeigt eine Leseanforderung an einen Cache durch eine Einheit falls ein Vergleichsbit gesetzt und Daten von einer Ausführungseinheit B110 ausgegeben werden.
  • Tabelle 4 beschreibt den Aufbau eines Caches.
  • Tabelle 5 erläutert eine mögliche Gestaltung eines Control-Bits.
  • B7 zeigt einen Dual Port Cache durch Single Port RAM und einer Zugriffssteuerung.
  • B8 zeigt die Grundstruktur einer asymmetrischen Datenverarbeitungseinheit mit der Umschaltmöglichkeit zwischen mehreren Modi und einem multi-Port Cache.
  • 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äß 1 besteht zu einem wesentlichen Teil aus einem Dual Port RAM (dpRAM, 230). Dieser dpRAM 230 ist vorzugsweise mit zwei voneinander unabhä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 zugreifbar 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 verbinden, 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 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. Solche 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 mehrere 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ätzlichen Ü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 2 dargestellten 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 Adresstransformationseinheit, die sowohl die virtuelle Adresse in eine physikalische Adresse umwandelt 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 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 (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 Blocktransfer kann je nach Hardwarerealisierung in mehreren Teilen zeitlich nacheinander passieren, oder auch parallel 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 verzögert werden, indem der Prozessor mit Lesewunsch solange angehalten wird, bis die Schreiboperation abgeschlossen ist. Dazu ist ein in 2 dargestellter Adresscomparator aller Adressbits (251) mit einem entsprechenden Arbiter 252 vorgesehen, der auch die Steuersignale der Prozessoren 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 Schreibzugriff nicht notwendig; in diesem Fall reicht ein Signalzustand "equal" für die Ausgangssignale 213 und 223 aus.
  • Im Falle eines Cache Miss muss das Datum bzw. der Befehl über das Bussystem aus einem Programm- oder Datenspeicher geholt werden. Die ankommenden Daten werden zur Ausführungseinheit 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 Teilspeicherbereichen realisiert werden, die unabhängig voneinander betrieben werden können. Jeder Teilspeicher ermöglicht über select-Signale nur die Abarbeitung eines Ports. In 4 ist ein solcher Speicher 230 gezeigt, der zwei Teilspeicherbereiche 235 und 236 beinhaltet. In dem hier gezeigten Ausführungsbeispiel werden aus einem Adressbit Ai die zwei Select-Signale E0 und E1 derart gebildet, dass für den Fall Ai = 0 E0 = 1 und E1 = 0 gilt und für den Fall Ai = 1 E0 = 0 und E1 = 1 gilt. In den Signalen 233 und 234 sind dann die beiden select-Signale und die niederwertigen Adressbits Ai–1...A0 enthalten.
  • Für ein weiteres Ausführungsbeispiel 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 Ai+1 und Ai vier Teilspeicherbereiche angesprochen werden, indem die vier select-Signale E0 bis E3 entsprechend der binären Wertigkeit gemäß Tabelle 1 generiert werden.
  • Für die in 4 gezeigten Teilspeicher 235 und 236 ist in 5 ein Ausführungsbeispiel 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 Anforderung umgeschaltet werden. Die Umschaltung wird durch eine Steuerschaltung 270 mit Hilfe 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 zusammen 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 mehrfachassoziative 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ührungseinheit, wenn gleichzeitig zu einem Teilspeicher (auch lesend) zugegriffen wird. Je nach Anwendung 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 unterschiedlichen 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 Umschaltung der Adressen, Daten und Steuersignale über mehrere Multiplexer stufenweise nacheinander vorgesehen wird (6 und 7).
  • Ein solches Multi Port RAM 290 ist in 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 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 einen 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 5 verbinden die Multiplexer 375 von 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 Teilbereichen gelesenen Daten ermitteln.
  • In einer weiteren vorteilhaften Ausführung kann die Zuschaltung von RAM-Bereichen zu verschiedenen Ausführungseinheiten von einem oder mehreren Systemzuständen oder Konfigurationen abhängig gemacht werden. In 8 ist dazu ein Beispiel für einen konfigurierbaren Dual Port Cache gezeigt. Dazu wird das System- oder Konfigurationssignal 1000 bei der Decodierung 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 mit M bezeichnet ist. Ist M = 0, so liegt zum Beispiel ein Vergleichsmodus vor, in dem beide Ports Zugriff auf den gesamten Cache haben. Wird aber M = 1 (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 Ai 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 = 1) 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 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 entsprechend in den Ports generierter select-Signale gewährleistet, die in den Signalen 291, 292, ... 297 enthalten sind.
  • Eine weitere Ausführung ist in 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 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 Signale 2610, 2620, ... 2670 weitergeleitet.
  • Im B1 ist eine Strtuktur dargestellt, die den Dual Port Cache für eine asymmetrische Systemstruktur mit zwei Ausführungseinheiten benutzt. Dabei sind B110 und B111 die zwei Ausführungseinheiten mit ihren Daten/Adress- und Steuersignalen B120 bzw. B121. B100 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 B10 und B11 gezeigt. Verschiedene Ausgangssignale, wie Daten, Steuer- und Adresssignale B20 bzw. B21 der Ausführungseinheiten B10 und B11 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 Vergleichseinheiten verbunden sind.
  • Die Umschalteinheit enthält mindestens ein Steuerregister B15, das mindestens ein Speicherelement für ein binäres Zeichen (Bit) B16 besitzt, das den Modus der Vergleichseinheit umschaltet. Dieses Bit B16 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 Umschalteinheit gesetzt oder rückgesetzt werden.
  • Auf die Umschalteinheit und damit auf das Steuerregister B15 und damit auch das Umschaltbit B16 kann verzichtet werden, wenn ein permanenter Vergleichsmodus eingestellt sein soll. Die Umschalt- und Vergleichseinheit wird dabei zur permanenten Vergleichseinheit und das Signal B101 ist ständig Eins. Die in den B3 und B4 dargestellten Zustände entfallen damit. Alle nachfolgenden Betrachtungen gelten damit so, als wenn das Bit B16 gesetzt wäre und damit das Signal B101 = 1.
  • Ist dieses Bit B16 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 B10 bzw. B11 ein Anhalten der Verarbeitung. 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 Synchronisationssignal 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 Ausführungseinheit zuerst Daten bereitstellt, muss diese mit der Weiterabarbeitung ihres Programms oder ihrer Prozesse solange warten, bis die andere Ausführungseinheit die entsprechenden Vergleichsdaten bereitstellt.
  • In einer speziellen Ausführung der Umschalteinheit nach B2 kann auf eines der Signale B40 bzw. B41 verzichtet werden, wenn immer gewährleistet ist, dass die zugehörige Ausführungseinheit nicht eher Vergleichsdaten bereitstellt, als die andere Ausführungseinheit. Ist das Bit B16 nicht gesetzt, so sind die Synchronisationssignale B40 und B41 sowie das Fehlersignal B17 immer auf den Wert 0 gesetzt. Es findet auch kein Vergleich statt und beide Ausführungseinheiten arbeiten voneinander unabhängig im Performanzmodus.
  • In einem Performanzmodus verarbeiten beide Ausführungseinheiten aus B1 unabhängig Programme, Programmteile oder Programmsegmente. Die Ausführungseinheit B111 greift über B121 zum Cache B105 zu und der Cache steht über B161 mit dem Hauptspeicher oder anderen Speichereinrichtungen in Verbindung. Die Ausführungseinheit B110 greift vorzugsweise über die Einrichtung 106 (durch das Steuersignal B101 in diesem Modus inaktiv geschaltet) ebenfalls zum dual Port Cache zu und benutzt dafür den zweiten Port dieses Caches (siehe B3). Die Umschalt- und Vergleichseinheit (UVE) B100 ist inaktiv, d.h. es werden keine Daten verglichen (B16 nicht gesetzt). In einer weiteren Ausführung kann zu dem Zugriff der Ausführungseinheit B110 über den Cache hier in einer weiteren Ausführungsform aber auch der Zugriff über B160 direkt zum Hauptspeicher oder anderen Speichereinrichtungen vorgesehen werden (siehe 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 B110 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 bussnooping bezeichnet. Die weitere Ausführung von B3 ist demgegenüber wegen des geringeren Aufwandes vorzuziehen.
  • Der Vergleichsmodus der Struktur von B1 ist in B5 im Detail dargestellt. Wird durch Setzen von B16 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 B110 gibt Daten, die miteinander verglichen werden sollen, mit einer entsprechenden Kennung an die Umschalt- und Vergleichseinheit (UVE) B100 aus.
  • Diese Aktion bewirkt in der Leseanforderungseinheit B106 das Abspeichern der Steuersignale (z.B. write) und ggf. zusätzliche Kennungen (Status- oder Prozessinformation, Bearbeitungszyklus) in das Speicherelement B1061 und die zugehörige Adresse in ein Speicherelement B1062. Die Einheit B106 löst dadurch einen Lesevorgang mittels der aus B1061 in der Steuereinheit B1064 generierten Steuersignale (z.B. read) und Kennungen in B1021 und den von B1062 ausgegebenen Adresssignalen B1022 an dem Port 2 des Dual Port Cache B105 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 Vergleichsmodus 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 B1023 in B1063 geschrieben. Die Gültigkeit der Daten wird in den empfangenen Steuersignalen B1024 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 B1001 zum Vergleich in B100 bereitgestellt. Dabei wird in der Leseanforderungseinheit B106 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 B1001 für den Vergleich freigegeben. Bis zur Freigabe des Vergleichswertes (oder ggf. sogar bis zum Abschluss des Vergleichs, falls die Signale B120 in B100 nicht zwischengespeichert werden) wird die Ausführungseinheit B110 über das Steuersignal B140 (z.B. Wait, Interrupt) angehalten. Dadurch wird gewährleistet, dass die Vergleichsdaten von B110 an B120 noch anliegen. Werden die Signale B120 in einem in B100 enthaltenen FIFO gespeichert, braucht die Ausführungseinheit B110 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 Ausführungseinheiten kann dadurch erfolgen, dass die Ausführungseinheit B111 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 B111 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 incrementiert 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 erzeut. Der Datenblock kann einige Bytes bis mehrere KBytes Daten enthalten. Die Controlbits sind als ein Beispiel in Tabelle 5 gezeigt.
  • Um z.B. das Incrementieren der Prozess-ID zu gewährleisten, wird in dem Cache B105 ein Zähler B1059 vorgesehen (6), der mit Beginn des Vergleichsmodus (B101 = 1) über die Signale B1021 und B1022 auf einen definierten Wert gesetzt wird. Dieser Wert kann zum Beispiel der hexadezimale Wert 0 × 0000 sein, wenn der erste Vergleichszyklus beginnt. Dieser Zähler kann dann kontinuierlich mit jedem Schreiben vergleichsrelevanter Daten von B111 incrementiert 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 Datenstand eindeutig gekennzeichnet. Anhand eines gleichartigen Zählers B1069 in der Einheit B106 lässt sich dann durch einen einfachen Vergleich entscheiden, ob die entsprechenden Daten schon im Cache vorliegen. Der Zähler B1069 ist dazu mit dem Aktivwerden von B101 vorzugsweise auf den gleichen Startwert wie der Zähler B1059 zu setzen und mit jedem Schreibsignal relevanter Daten von B110 zu incrementieren. Haben dann die Prozess-ID Bits im gelesenen Block den gleichen oder einen höheren Wert als der Zählerstand von B1069, 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 muß 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äß 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.
  • Hierdurch 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 B111 zum aktuellen Vergleichswert von B110 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 B106 über die Steuersignale B1064 an B106 zu übermitteln. Als Prozess-ID wird dann nur der laufende Zyklus in entsprechend weniger Speicherbits abgespeichert. Die Speichergröß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 Ausführungsform der Synchronisation ohne Benutzung der Zähler B1059 und B1069 besteht in der Aussendung eines Steuersignals B141 (z.B. Interrupt) an die Ausführungseinheit B111 zur Anforderung des Vergleichsmodus. Die Ausführungseinheit B111 beginnt dann nach einer bekannten maximalen Zeitspanne T mit der Abarbeitung des Programmteils im Vergleichsmodus. Die Ausführungseinheit B110 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 B106 immer vorher bereitstehen, bevor die Ausführungseinheit B110 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 B111 länger gebraucht wird als in B110, ist zu T noch zu addieren.
  • Unabhängig davon, wie die Aktualität der Vergleichsdaten abgesichert wird, ist die Ausführungseinheit B111 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 B111 bewirken. Solange B141 gesetzt ist, kann bei einer zyklischen Aktualisierung der Daten die Ausführungseinheit B111 am Überschreiben der Daten vom letzten Zyklus gehindert werden. Die Ausführungseinheit B111 durchläuft dann entweder eine Warteschleife oder führt Operationen aus, die ohne Vergleich von Daten auskommen. Mit dem Rücksetzen von B141 wird signalisiert, dass von der Einheit B106 keine weiteren Daten zum Vergleich angefordert werden und die bisherigen Vergleichsoperationen abgeschlossen sind. Solange dann B141 nicht erneut gesetzt wird, arbeitet die Ausführungseinheit B111 im Performanz-Modus. Ein Überschreiben der Daten im Cache wird damit wieder möglich, aber erst nach der erneuten Aktivierung von B141 wird wieder der Vergleichsmodus eingeleitet.
  • In einer weiteren Ausführung wird das Signal B141 immer nur kurzzeitiger aktiv, um den Vergleichsmodus mittels eines Interrupts vorzubereiten. Ein Überschreiben der Daten wird dann verhindert, bis B141 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 B111 immer größer ist als die zum Vergleich der Daten mit denen von B110 benötigte Zeit, die Daten von B111 immer mindestens gleichzeitig oder eher als die von B110 bereitstehen und durch Zwischenspeicherung der Daten von B110 in B100 in einem einfachen Speicher oder FIFO die Ausführungseinheit B110 nicht durch das Signal B140 zu Synchronisationszwecken angehalten werden muss.
  • Von den hier vorgeschlagenen Methoden sind für 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 B1056 benutzt (siehe B7) Mittels einer Zugriffsteuerung B1057 werden nacheinander je nach Anforderung die beiden Ports bedient, von denen aber immer nur einer Zugriff zum RAM über die Signale B1058 hat. Dadurch kann das Rücklesen durch B106 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 Nachteil. Wesentlich ist nur, dass die Ausführungseinheit B111 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 B7 das Signal B1058 direkt mit dem Signal B121 verbunden ist und sowohl B1057 als auch B102 entfallen liegt ein Single Port Cache vor, wie er gemäß dem Stand der Technik üblich ist. Die Erweiterung durch die Ablaufsteuerung B1057 und dem damit möglichen Anschluss von B102 ist ein deutlich geringerer Zusatzaufwand, als einen Dual Port RAM mit echter Parallelität einzusetzen.
  • Die Einheit B106 ist nicht notwendigerweise eine separate Einheit, sondern kann in der UVE B100 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äß 6 zur Verfügung steht, d.h. ein Multi-Port Cache B205 können entsprechend 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 Ausfuhrungseinheit B112, ... ist dann auch eine zusätzliche Leseanforderungseinheit B107, ... gemäß 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 Ausführungseinheit das Datum zum Vergleich oder Voting direkt in den Cache. Diejenige der übrigen Ausführungseinheiten B110, B112, ..., die zuerst ein Datum zum Vergleich/Voting bereitstellt, fordert dann über die angeschlossene Leseanforderungseinheit B106, B107, ... ü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 B102, B104, ... 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 B140, B142, ... 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 Speichertechnologien wie MRAM, FERAM o.ä. dargestellt werden.
  • Figure 00230001
    Tabelle 1
  • Figure 00240001
    Tabelle 2
  • Figure 00250001
    Tabelle 3
  • Figure 00260001
    Tabelle 4
  • Figure 00270001
    Tabelle 5

Claims (19)

  1. 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 Aufü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. Vorrichtug 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 vergleichsrelevanter Daten von der ersten Ausführungseinheit ü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 Umschalten 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 zweiten Zählers der dritten Einheit benutzt wird.
  8. 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, 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 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 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 zweiten 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.
DE102005037234A 2005-08-08 2005-08-08 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 Withdrawn DE102005037234A1 (de)

Priority Applications (6)

Application Number Priority Date Filing Date Title
DE102005037234A DE102005037234A1 (de) 2005-08-08 2005-08-08 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
PCT/EP2006/064588 WO2007017367A1 (de) 2005-08-08 2006-07-24 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
CNA2006800294352A CN101243404A (zh) 2005-08-08 2006-07-24 用于在具有至少两个处理单元和用于数据和/或指令的至少一个第一存储器或存储器区域的计算机系统中存储数据和/或指令的设备和方法
KR1020087002749A KR20080033338A (ko) 2005-08-08 2006-07-24 데이터 및/또는 명령을 위한 적어도 2개의 실행 유닛들과적어도 하나의 제1 메모리 또는 메모리 영역을 갖는 컴퓨터시스템에 데이터 및/또는 명령을 저장하기 위한 장치 및방법
EP06777936A EP1915684A1 (de) 2005-08-08 2006-07-24 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
JP2008525516A JP2009505178A (ja) 2005-08-08 2006-07-24 少なくとも2つの命令実行部と少なくともデータ及び/または命令のための第1記憶装置または記憶領域とを備えたコンピュータシステムにおいて、データ及び/または命令を格納する装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102005037234A DE102005037234A1 (de) 2005-08-08 2005-08-08 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

Publications (1)

Publication Number Publication Date
DE102005037234A1 true DE102005037234A1 (de) 2007-02-15

Family

ID=36926336

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005037234A Withdrawn DE102005037234A1 (de) 2005-08-08 2005-08-08 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

Country Status (6)

Country Link
EP (1) EP1915684A1 (de)
JP (1) JP2009505178A (de)
KR (1) KR20080033338A (de)
CN (1) CN101243404A (de)
DE (1) DE102005037234A1 (de)
WO (1) WO2007017367A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073565B (zh) * 2010-12-31 2014-02-19 华为技术有限公司 触发操作方法、多核分组调试方法、装置及系统
KR101432274B1 (ko) 2013-12-12 2014-08-21 (주)이건산전 백업모듈을 포함하는 철도 차량용 제어기
CN112416609A (zh) * 2021-01-22 2021-02-26 南京芯驰半导体科技有限公司 双核模式的模式配置方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4823256A (en) * 1984-06-22 1989-04-18 American Telephone And Telegraph Company, At&T Bell Laboratories Reconfigurable dual processor system
EP0439952A3 (en) * 1990-01-31 1992-09-09 Sgs-Thomson Microelectronics, Inc. Dual-port cache tag memory
JPH05128080A (ja) * 1991-10-14 1993-05-25 Mitsubishi Electric Corp 情報処理装置
US5751932A (en) * 1992-12-17 1998-05-12 Tandem Computers Incorporated Fail-fast, fail-functional, fault-tolerant multiprocessor system
CA2178440A1 (en) * 1995-06-07 1996-12-08 Robert W. Horst Fail-fast, fail-functional, fault-tolerant multiprocessor system
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US6772368B2 (en) * 2000-12-11 2004-08-03 International Business Machines Corporation Multiprocessor with pair-wise high reliability mode, and method therefore
DE10136335B4 (de) * 2001-07-26 2007-03-22 Infineon Technologies Ag Prozessor mit mehreren Rechenwerken
US7055060B2 (en) * 2002-12-19 2006-05-30 Intel Corporation On-die mechanism for high-reliability processor

Also Published As

Publication number Publication date
CN101243404A (zh) 2008-08-13
EP1915684A1 (de) 2008-04-30
JP2009505178A (ja) 2009-02-05
KR20080033338A (ko) 2008-04-16
WO2007017367A1 (de) 2007-02-15

Similar Documents

Publication Publication Date Title
EP1057117B1 (de) VERFAHREN ZUM HIERARCHISCHEN CACHEN VON KONFIGURATIONSDATEN VON DATENFLUSSPROZESSOREN UND BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALER PROGRAMMIERBARER ZELLSTRUKTUR (FPGAs, DPGAs, o.dgl.)
DE10353268B3 (de) Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
EP1329816B1 (de) Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
DE3689488T2 (de) Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher.
DE2547488C2 (de) Mikroprogrammierte Datenverarbeitungsanlage
DE60025788T2 (de) Flexibles Mehrzweck-Ein/Ausgabesystem
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE2350215A1 (de) Rechnersystem sowie bei diesem verwendbares mehrebenen-speichersystem
DE3502147C2 (de)
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
DE3873388T2 (de) Cache-speicher.
DE102005037219A1 (de) Vorrichtung und Verfahren zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Verarbeitungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle
DE69330768T2 (de) Verfahren und Vorrichtung zum Betrieb eines Multiprozessor-Rechnersystems mit Cachespeichern
DE102004009610A1 (de) Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten
DE19950255A1 (de) Mikroprozessor
DE102005037234A1 (de) 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
DE102007055138B4 (de) System zum Zugreifen auf einen Einzelport-Mehrwege-Cache
DE102014012155A1 (de) Verbesserte verwendung von speicherressourcen
DE3200042C2 (de)
DE10026017B4 (de) Vorabruf-Puffer mit Gültigkeitswerten zur Bereitstellung von abgeglichenen Befehlen
DE69808700T2 (de) Cachespeichervorrichtung
DE102005037215A1 (de) Verfahren zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Verarbeitungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle
DE10025952B4 (de) Datenverarbeitungseinheit mit einer Superscaler-Struktur sowie Verfahren zum Zuführen einer Mehrzahl von Befehlen
DE19643688C2 (de) Verfahren zur Steuerung einer Cachespeichereinheit mit konfliktfreiem Parallelzugriff auf virtuelle, 2-dimensionale Adreßräume

Legal Events

Date Code Title Description
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110301