Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MEMORY FOR THE CENTRAL UNIT OF A COMPUTER, CORRESPONDING COMPUTER, AND METHOD FOR SYNCHRONISING A MEMORY WITH THE MAIN MEMORY OF A COMPUTER
Document Type and Number:
WIPO Patent Application WO/2003/048943
Kind Code:
A2
Abstract:
The invention relates to a memory, especially a cache memory, and a method for synchronising said cache memory with the main memory of a computer. According to the inventive method, each memory entry has an address range, a data area which is associated with the address range, and an identification area which is associated with the address range. Said identification area has a first memory field containing a value which indicates whether data is stored in the data area of the memory or with which cryptographic key. The information contained in the first memory field can be used as a starting point for synchronisation, on the basis of an accepted association between the data to be synchronised and the cryptographic keys.

Inventors:
GAMMEL BERNDT M (DE)
KUENEMUND THOMAS (DE)
SEDLAK HOLGER (DE)
Application Number:
PCT/DE2002/004066
Publication Date:
June 12, 2003
Filing Date:
October 31, 2002
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
INFINEON TECHNOLOGIES AG (DE)
GAMMEL BERNDT M (DE)
KUENEMUND THOMAS (DE)
SEDLAK HOLGER (DE)
International Classes:
G06F12/0804; G06F12/14; G06F21/60; G06F21/62; H04L9/10; (IPC1-7): G06F12/14; G06F1/00; G06F12/08
Domestic Patent References:
WO1999028887A21999-06-10
WO2002056184A12002-07-18
Foreign References:
US4573119A1986-02-25
EP0347040A11989-12-20
EP0720098A11996-07-03
US5081675A1992-01-14
US4319079A1982-03-09
US6092172A2000-07-18
DE19957810A12000-09-07
EP0583140A11994-02-16
Attorney, Agent or Firm:
Epping, Hermann Fischer Patentanwaltsgesellschaft Mbh (München, DE)
Download PDF:
Claims:
Patentansprüche
1. Speicher (13) für die Zentraleinheit einer Rechenanlage, welche Zentraleinheit zumindest einen Prozessor aufweist, mit zumindest einem Speichereintrag (20), der folgende Merkmale umfaßt : einen Adressbereich (21), einen dem Adressbereich (21) zugeordneten Datenbereich (23), einen dem Adressbereich (21) zugeordneten Kennungsbe reich (22), der zumindest ein erstes Speicherfeld (25) umfaßt, das einen Wert beinhaltet, der angibt, ob oder mit welchem kryptographischen Schlüssel Daten in dem Da tenbereich (23) des Speichers (13) gespeichert sind.
2. Speicher nach Anspruch 1, bei dem der Wert des ersten Speicherfeldes (25) den kryptographischen Schlüssel enthält.
3. Speicher nach Anspruch 1, bei dem der Wert des ersten Speicherfeldes (25) einen Verweis auf den kryptographischen Schlüssel enthält.
4. Speicher nach einem der vorhergehenden Ansprüche, bei dem der Datenbereich (23) eines Speichereintrags (20) mehrere Worte (30a... 30d) umfaßt.
5. Speicher nach Anspruch 4, bei dem jedem Wort (30a 30d) des Datenbereiches (23) ein erstes Speicherfeld (25a... 25d) zugeordnet ist.
6. Speicher nach einem der vorhergehenden Ansprüche, bei dem der Adressbereich (21) eines Speichereintrags (20) aufgeteilt ist in einen mehrere Bits umfassenden ersten Adressbereich (40), der die physikalische Adresse eines Speichereintrags (20) beinhaltet, und in einen mehrere Bits umfaßenden zweiten Adressbereich, der die höchstwertigen Bits einer logischen Adresse einer Programmeinheit beinhaltet.
7. Speicher nach einem der vorhergehenden Ansprüche, bei dem in dem Kennungsbereich (22) ein zweites Speicherfeld (26) vorgesehen ist, das Marker beinhaltet, der angibt, ob in dem Datenbereich (23) ein gültiger oder ungültiger Wert gespei chert ist.
8. Speicher nach einem der vorhergehenden Ansprüche, bei dem in dem Kennungsbereich (22) ein drittes Speicherfeld (27) vorgesehen ist, das einen Marker beinhaltet, der angibt, ob von dem Prozessor (12) ein Wert in dem Datenbereich des Spei chers (13) geändert wurde.
9. Speicher nach einem der vorhergehenden Ansprüche, bei dem der Speicher ein NWegeSatzassoziativer CacheSpeicher ist.
10. Rechenanlage mit einem Prozessor (12), einem Speicher (13) nach einem der Ansprüche 1 bis 9, der mit dem Prozessor (12) gekoppelt ist, einem Verbindungsmittel (16), das mit dem Speicher (13) und/oder dem Prozessor (12) gekoppelt ist, und einem mit dem Verbindungsmittel (16) gekoppelten Hauptspei cher (14).
11. Verfahren zum Synchronisieren eines CacheSpeichers mit einem Hauptspeicher in einer Rechenanlage nach Anspruch 8, mit den Schritten : a) Bereitstellen eines SynchronisationsWertes durch den Pro zessor, der angibt, welcher Speichereintrag (20) bzw. welche Speichereinträge (20) des Datenbereiches (23) des Cache Speichers (13) mit dem Hauptspeicher (14) synchronisiert werden soll oder sollen, b) Vergleich des bereitgestellten SynchronisationsWertes mit dem Inhalt des zumindest einen ersten Speicherfeldes (25) eines jeden Speichereintrags (20) durch den CacheSpeicher (13), c) bei einer Übereinstimmung zwischen dem bereitgestellten SynchronisationsWert und dem Inhalt des zumindest einen ersten Speicherfeldes (25) Überprüfung des Markers des dritten Speicherfeldes (27) auf einen ersten Zustand, wel cher anzeigt, daß eine Änderung des Datenbereichs (23) des Speichereintrags (20) seit dem letzten Synchronisieren er folgt ist, d) bei gegebenen ersten Zustand des Markers des dritten Spei cherfeldes (27) Übertragung des Inhalts des Datenbereiches des Speichereintrags (20) in den Hauptspeicher (14).
12. Verfahren nach Anspruch 11, bei dem bei einem gegebenen zweiten Zustand des Markers des dritten Speicherfeldes (27), der anzeigt, daß keine Änderung des Da tenbereiches (23) des Speichereintrags (20) seit dem letzten Synchronisieren erfolgt ist, Setzen des Markers des zweiten Speicherfeldes (26) auf einen ersten Zustand, der anzeigt, daß der Speichereintrag (20) einen ungültigen Wert aufweist.
13. Verfahren nach Anspruch 11 oder 12, bei dem als Schritt e) der Marker des dritten Speicherfeldes (27) in einen zweiten Zustand gebracht wird, der anzeigt, daß keine Änderung des Datenbereiches (23) des Speichereintrags (20) seit dem letzten Synchronisieren erfolgt ist.
14. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Schritte a) bis d) bzw. a) bis e) solange wiederholt werden bis keine Übereinstimmung zwischen dem bereitgestell ten SynchronisationsWert und dem Inhalt des ersten Speicher feldes (25) eines Speichereintrags vorliegt.
15. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Schritt des Übertragens des Inhalts des Datenberei ches des Speichereintrags (20) in den Hauptspeicher (14) fol gende Schritte umfaßt : aa) Ermittlung der Adresse des Speichereintrags (20) des CacheSpeichers (13), bb) Übergeben der Adresse aus dem Adressbereich (21) des Speichereintrags (20) an den Prozessor (12), cc) Adressieren des Speichereintrags (20) durch den Prozessor (12), dd) Auslesen des Inhalts des Datenbereiches (23) des Spei chereintrags, und ee) Speichern des Inhalts des Datenbereiches (23) des Spei chereintrags (20) im Hauptspeicher.
16. Verfahren nach Anspruch 15, bei dem zwischen Schritt bb) und cc) ein Setzen eines weiteren Markers in einem Register erfolgt, welches außerhalb des CacheSpeichers (13) angeordnet ist und durch den Prozessor (12) auslesbar ist, wobei der Marker anzeigt, daß ein Zurück schreibeVorgang vorgenommen wird.
17. Verfahren nach Anspruch 16, bei dem nach Schritt ee) ein Rücksetzen des Markers in dem Register erfolgt, nachdem ein weiterer Vergleichsvorgang zwischen dem bereitgestellten SynchronisationsWert mit dem Inhalt des zu mindest einen ersten Speicherfeldes (25) eines jeden Spei chereintrags (20) durch den CacheSpeicher (13) erfolgt ist.
Description:
Beschreibung Speicher für die Zentraleinheit einer Rechenanlage, Rechenan- lage und Verfahren zum Synchronisieren eines Speichers mit dem Hauptspeicher einer Rechenanlage Die Erfindung betrifft einen Speicher für die Zentraleinheit einer Rechenanlage gemäß dem Oberbegriff des Patentanspruches 1 sowie eine Rechenanlage. Die Erfindung betrifft weiterhin ein Verfahren zum Synchronisieren eines Speichers, insbeson- dere eines n-Wege-assoziativen Cache-Speichers, mit einem Hauptspeicher der Rechenanlage.

Bekannte Speicher dieser Art sind in fast allen modernen Re- chenanlagen als sehr schnelle Pufferspeicher zwischen dem Prozessor und dem Hauptspeicher vorgesehen und werden als Prozessor-Cache-Speicher oder oft auch kurz als CPU-Cache be- zeichnet. Ein CPU-Cache ist deutlich schneller, aus Kosten- gründen aber auch deutlich kleiner als der Hauptspeicher. Im Vergleich zu einer Zentraleinheit ohne CPU-Cache ist die Aus- führungsgeschwindigkeit einer Zentraleinheit mit CPU-Cache- natürlich bei gleich großen Hauptspeichern-deutlich größer.

Es wird zwischen First-Level-Cache-Speichern und Second- Level-Cache-Speichern unterschieden. Der First-Level-Cache- Speicher befindet sich direkt im Prozessor, so daß dieser mit Prozessortakt ohne Wartezyklen auf ihn zugreifen kann. Der Second-Level-Cache-Speicher befindet sich hingegen zum Bei- spiel auf einer Hauptplatine und arbeitet daher im Platinen- takt, der niedriger als der Prozessortakt ist.

Mikroprozessoren benötigen zum Abarbeiten von durch sie aus- zuführenden Programmen darüber hinaus einen Stapelspeicher, auch"Stack"genannt. Immer wenn der Prozessor bei der Abar- beitung eines Programmes nicht nur sequentiell aufeinander- folgende Programmanweisungen abzuarbeiten hat, sondern, wie z. B. bei einem Unterprogramm-Aufruf, einen Programmsprung

auszuführen hat, dient der Stapelspeicher zur Aufnahme einer Rücksprungadresse. Zu dieser springt er nach Beendigung des Unterprogramms zurück, um an der selben Stelle, von wo er den Unterprogrammsprung aus unternommen hat, die Abarbeitung des Programmes fortzusetzen. Ein Stapelspeicher ist dabei übli- cherweise als flüchtiger Speicher ausgeführt.

Sowohl der CPU-Cache als auch der Stapelspeicher müssen mit dem Hauptspeicher einer Rechenanlage synchronisiert werden.

Es existiert eine Vielzahl von Standardverfahren auf welche Weise solche CPU-Caches realisiert und die Synchronisation mit dem Hauptspeicher durchgeführt werden kann. Diese Stan- dardverfahren sind unter den Namen"Write-through"oder "Write-back"-Strategie bekannt und können beispielsweise dem Lehrbuch"Computer Architecture, A quantitative approach"von J. L. Hennessey, D. A. Paterson, Second Edition, Morgan Kauf- mann Publications, San Francisco, 1996 entnommen werden.

So müssen beispielsweise bei der Abarbeitung von Programmen Speicherbereiche, genauer Speichereinträge in einem Cache- Speicher oder in einem Stapelspeicher freigegeben oder ge- löscht werden, um andere Daten aus dem Hauptspeicher dort einlagern zu können. An Hand des nachfolgenden kurzen Bei- spiels kann dies verdeutlicht werden. In einer sogenannten "Multitasking"-Umgebung findet ein Taskwechsel, also ein Auf- ruf eines anderen Programmes statt. Eine neu auszuführende Task B befindet sich üblicherweise im gleichen logischen Speicherbereich wie eine unterbrochene oder beendete Task A.

Damit die Task B nicht fälschlicherweise oder unberechtigter- weise auf die noch in dem CPU-Cache eingelagerten Daten der Task A zugreifen kann, müssen die Speicherbereiche oder Spei- chereinträge der Task A in dem CPU-Cache und in dem Sta- pelspeicher ungültig gemacht (invalidiert) oder gelöscht wer- den. Hierzu ist es bekannt, bei einem Speichereintrag, der einen Adreßbereich, einen dem Adreßbereich zugeordneten Da- tenbereich und einen dem Adreßbereich zugeordneten Kennungs- bereich umfaßt, ein Speicherfeld vorzusehen, das einen Marker

(auch"flag"genannt) enthält. Ein Invalidieren oder Ungül- tigmachen dieses Speichereintrags erfolgt dann dadurch, daß der Marker des Speicherfeldes in einen ersten Zustand ge- bracht wird, der signalisiert, daß die in dem Datenbereich gespeicherten Daten keine Gültigkeit besitzen.

Weiterhin ist es bekannt, in dem Kennungsbereich eines Spei- chereintrags ein weiteres Speicherfeld vorzusehen, das mit- tels eines Markers anzeigt, ob der Datenbereich modifiziert wurde und der Inhalt des Datenbereiches noch nicht in den Hauptspeicher zurückgeschrieben wurde. Dieses Zurückschreiben vor dem Invalidieren des Speichereintrags wird als Synchroni- sation bezeichnet.

Die Aufgaben des Invalidierens und des Zurückschreibens wer- den typischerweise von dem Betriebssystem des Prozessors durchgeführt. Dem Prozessor stehen hierfür spezielle Steuer- register oder Instruktionen zur Verfügung, mit denen dieser einzelne Zeilen in einem CPU-Cache invalidieren oder zurück- schreiben kann. Bekannt ist ebenfalls mittels Steuerregister, Steuerwerken oder Instruktionen alle Speichereinträge eines CPU-Caches zu invalidieren bzw. zurückzuschreiben. Das oben beschriebene erstere Vorgehen hat den Nachteil, daß das Be- triebssystem einen hohen Verwaltungsaufwand und Zeit benö- tigt, um größere Speicherbereiche des CPU-Caches-jedoch nicht alle Speichereinträge des CPU-Caches-zu invalidieren oder zurück zuschreiben. Das vollständige Invalidieren oder Zurückschreiben eines CPU-Caches weist den Nachteil auf, daß möglicherweise auch unnötigerweise Daten anderer Tasks eben- falls synchronisiert werden, wodurch die Performance leidet.

Zur Aufrechterhaltung der Cache-Coherence eines CPU-Caches mit einem Hauptspeicher schlägt die EP 0 439 325 B1 vor, ei- nen Adreßmonitor vorzusehen.

Es ist daher Aufgabe der Erfindung, eine Möglichkeit anzuge- ben, mit der auf einfache Weise eine Synchronisation zwischen

einem Speicher, insbesondere einem Cache-Speicher, und einem Hauptspeicher herstellbar ist.

Diese Aufgabe wird durch einen Speicher für die Zentralein- heit einer Rechenanlage gemäß dem Patentanspruch 1, einer Re- chenanlage gemäß dem Patentanspruch 10 sowie dem Verfahren zum Synchronisieren eines Speichers, insbesondere eines n- Wege assoziativen Cache-Speichers, mit einem Hauptspeicher in einer Rechenanlage gemäß dem Patentanspruch 11 gelöst.

Jeder Speichereintrag des Speichers weist demnach drei Spei- cherbereiche auf : Der Datenbereich enthält die eigentlichen Daten, also Programmbefehle oder zu verarbeitende Daten, die von einer Logik des Prozessors aus dem Hauptspeicher bereits kopiert worden sind oder noch in diesen kopiert werden müs- sen ; der Adreßbereich enthält die zugehörige Adresse ; der Kennungsbereich enthält von der Cache-Logik erzeugte Informa- tionen, die für die Verwaltung des Nachladens neuer Daten aus dem Hauptspeicher und das Ersetzen zu überschreibender Spei- chereinträge bei vollem Speicher benötigt werden und z. B.

Informationen darüber umfaßt, ob der entsprechende Spei- chereintrag gültig ist, wann er zuletzt und wie häufig be- nutzt worden ist. Insbesondere ist in dem Kennungsbereich ein erstes Speicherfeld vorgesehen, das einen Wert beinhaltet, der angibt, ob oder mit welchem kryptographischen Schlüssel Daten in dem Datenbereich des Speichers gespeichert sind.

Das erste Speicherfeld des Kennungsbereiches erfüllt zwei Zwecke.

Zunächst kann diesem entnommen werden, ob oder mit welchem kryptographischem Schlüssel Daten in den Datenbereich des Speichers gespeichert sind. Hieraus ergibt sich, daß eine di- rekte Zuordnung zwischen dem ersten Speicherfeld und dem Da- tenbereich vorhanden ist. Speziell bei sicherheitsrelevanten Anwendungen wie dies beispielsweise bei Geldkarten der Fall ist, kann es sinnvoll sein, die in dem Datenbereich einzu-

schreibenden Daten verschlüsselt abzulegen. Sobald die ver- schlüsselten Daten aus diesem Datenbereich ausgelesen werden sollen, wird eine Information benötigt, mit welchem Schlüssel die Daten entschlüsselt werden können. Diese Information kann dem ersten Speicherfeld des Kennungsbereiches entnommen wer- den. Dabei kann der Wert des ersten Speicherfeldes den kryp- tographischen Schlüssel selbst enthalten oder aber einen Ver- weis auf einen kryptographischen Schlüssel enthalten. Bei der nachfolgenden Beschreibung wird davon ausgegangen, daß ver- schiedene Programmeinheiten, die eingangs genannten Tasks, jeweils mit einem unterschiedlichen Schlüssel ver-bzw. ent- schlüsselt werden. Dies kann zur Folge haben, daß in jedem ersten Speicherfeld unterschiedliche Schlüssel oder unter- schiedliche Werte, die auf einen kryptographischen Schlüssel verweisen, enthalten sind.

Die in dem ersten Speicherfeld vorhandenen Werte können nun in vorteilhafter Weise für die Synchronisation des Cache- Speichers mit einem Hauptspeicher einer Rechenanlage verwen- det werden. Bei einem Wechsel zwischen zwei Programmeinheiten wird es regelmäßig so sein, daß die der beendeten Program- meinheit zugeordneten Daten in dem Cache-Speicher invalidiert oder zurückgeschrieben werden sollen. Dadurch, daß alle Spei- chereinträge, die Daten der selben Programmeinheit beinhal- ten, in dem ersten Speicherfeld des Kennungsbereiches einen identischen Wert aufweisen, können diese auf einfache Weise identifiziert und weiter verarbeitet werden. Der Prozessor, der dem Programmablauf und somit den Wechsel zwischen zwei Programmeinheiten steuert, braucht lediglich nach dem der zu beendenden Programmeinheit zugeordneten Wert in dem ersten Speicherfeld suchen und die jeweils zugeordneten Datenberei- che invalidieren, löschen oder zurückschreiben.

Im einfachsten Fall ist das erste Speicherfeld des Kennungs- bereiches ein Bit breit, so daß ein Verweis auf zwei unter- schiedliche kryptographische Schlüssel möglich ist.

In einer bevorzugten Ausgestaltung umfaßt der Datenbereich eines Speichereintrags mehrere Worte. Ein Wort kann dabei ei- ne an sich beliebige Bit-Breite aufweisen. Es ist natürlich zweckmäßig, wenn alle Worte eines Speichereintrags die glei- che Bit-Breite aufweisen.

Vorzugsweise ist bei einer derartigen Ausgestaltung jedem Wort des Datenbreiches ein erstes Speicherfeld zugeordnet.

Somit ist es möglich, jedem Wort eines Datenbereiches einen unterschiedlichen kryptographischen Schlüssel zuzuweisen. Ei- ne denkbare Alternative bestünde auch darin, unabhängig von der Anzahl der Worte des Datenbereiches eines Speicherein- trags auch weniger zugeordnete erste Speicherfelder vorzuse- hen. In diesem Fall wäre dann mehreren Worten eines Datenbe- reiches der gleiche kryptographische Schlüssel zugewiesen.

In einer weiteren vorteilhaften Ausgestaltung des Speichers ist vorgesehen, den Adreßbereich eines Speichereintrags auf- zuteilen in einen mehrere Bits umfassenden ersten Adreßbe- reich, der die physikalische Adresse des Speichereintrags be- inhaltet und in eine mehrere Bits umfassenden zweiten Adreß- bereich, der die höchstwertigen Bits einer logischen Adresse einer Programmeinheit beinhaltet. Der zweite Adreßbereich könnte statt dessen auch einen Verweis auf die logische Adresse einer Programmeinheit beinhalten. Dieses Vorgehen weist folgende Vorteile auf : Bei einem Wechsel zwischen zwei Programmeinheiten kann der Prozessor in dem zweiten Adreßbe- reich nach den zugeordneten logischen Adressen der zu been- denden Programmeinheit suchen. Dies ermöglicht, daß sogar die zu einer Programmeinheit gehörenden Daten in den Datenberei- chen unterschiedlicher Speichereinträge mit unterschiedlichen kryptographischen Schlüsseln verschlüsselt sein können. Ob- wohl hierdurch eine sehr hohe Komplexität bei der Verschlüs- selung und auch eine hohe Zuverlässigkeit und Sicherheit ge- genüber einem unbefugten Zugriff erzielt wird, gestaltet sich das Synchronisieren mit dem Hauptspeicher der Rechenanlage

genauso effizient, als wenn nach gleichen Werten in den er- sten Speicherfeldern des Kennungsbereichs gesucht wird.

Vorzugsweise ist in dem Kennungsbereich ein zweites Speicher- feld vorgesehen, das einen Marker beinhaltet, der angibt, ob in dem Datenbereich ein gültiger oder ein ungültiger Wert ge- speichert ist. Das zweite Speicherfeld ist aus dem Stand der Technik als sogenanntes"Valid Flag"bekannt. Besitzt der Marker des zweiten Speicherfeldes einen Zustand, der einem ungültigen Wert entspricht, so darf der Datenbereich des be- treffenden Speichereintrags ohne weiteres gelöscht oder ver- ändert werden. Repräsentiert der Zustand des Markers des zweiten Speicherfeldes hingegen einen gültigen Wert, so ist eine Synchronisation mit dem Hauptspeicher notwendig, bevor eine Datenänderung oder eine Löschung erfolgen darf.

Es ist weiterhin vorteilhaft, wenn der Speicher in dem Ken- nungsbereich ein drittes Speicherfeld beinhaltet, das einen Marker beinhaltet, der angibt, ob von dem Prozessor ein Wert in dem Datenbereich des Speichers geändert wurde. Das dritte Speicherfeld ist auch unter dem Namen"Dirty Flag"bekannt.

Der Marker in dem dritten Speicherfeld nimmt einen ersten Zu- stand an, sobald ein Wert in dem Datenbereich der betreffen- den Speichereintrags geändert wurde. Der Marker signalisiert z. B. bei einem Wechsel zwischen zwei Programmeinheiten, daß der betreffende Inhalt des Datenbereiches mit dem Hauptspei- cher synchronisiert werden muß.

Vorzugsweise ist der Speicher als sogenannter n-Wege-Satz as- soziativer Cache-Speicher ausgebildet. Diese Speicher weisen den Vorteil auf, daß der Prozessor auf gezielte Weise auf ei- nen Speichereintrag des Cache-Speichers zugreifen kann, auch wenn dieser eine große Anzahl an Speichereinträgen umfaßt. n- Wege-Satz-assoziative-Cache-Speicher sind aus dem Stand der Technik seit langem bekannt, so daß an dieser Stelle auf eine eingehende Erläuterung der Funktion und der damit verbundenen Vorteile verzichtet wird.

Die erfindungsgemäße Rechenanlage umfaßt den oben beschriebe- nen Speicher, der mit einem Prozessor gekoppelt ist. Darüber hinaus ist ein Verbindungsmittel vorgesehen, das mit dem Speicher und/oder dem Prozessor gekoppelt ist. Weiterhin ist das Verbindungsmittel mit dem Hauptspeicher gekoppelt, der beispielsweise als externer Speicher außerhalb eines die Zen- traleinheit und den Cache-Speicher umfassenden Prozessorchip ausgebildet sein kann.

Das Verfahren zum Synchronisieren eines Cache-Speichers mit einem Hauptspeicher in einer erfindungsgemäßen Rechenanlage umfaßt die folgenden Schritte : a) Bereitstellen eines Synchronisations-Wertes durch den Prozessor, der angibt, welcher Speichereintrag bzw. wel- che Speichereinträge des Datenbereiches des Cache- Speichers mit dem Hauptspeicher synchronisiert werden soll oder sollen b) Vergleich des bereit gestellten Synchronisations-Wertes mit dem Inhalt des zumindest einen ersten Speicherfeldes eines jeden Speichereintrags durch den Cache-Speicher, c) bei einer Übereinstimmung zwischen dem bereit gestellten Synchronisations-Wert und dem Inhalt des zumindest einen ersten Speicherfeldes Überprüfung des Markers des drit- ten Speicherfeldes auf einen ersten Zustand, welcher an- zeigt, daß eine Änderung des Datenbereichs des Spei- chereintrags seit dem letzten Synchronisieren erfolgt ist, und d) bei gegebenen ersten Zustand des Markers des dritten Speicherfeldes Übertragung des Inhalts des Datenberei- ches des Speichereintrags in den Hauptspeicher.

Als Suchkriterium für eine Synchronisation dient folglich der Inhalt eines ersten Speicherfeldes. Dabei erfolgt eine Syn- chronisation mit dem Hauptspeicher nur bei denjenigen Spei- chereinträgen, bei dem der Marker des dritten Speicherfeldes eine Änderung des Datenbereichs seit dem letzten Synchroni- sieren anzeigt.

Vorzugsweise wird bei einem Zustand des Markers des dritten Speicherfeldes, der anzeigt, daß keine Änderung des Datenbe- reiches des Speichereintrags seit dem letzten Synchronisieren erfolgt ist, der Marker des zweiten Speicherfeldes auf einen ersten Zustand gesetzt, der anzeigt, daß der Speichereintrag einen ungültigen Wert aufweist. Durch diesen Verfahrens- schritt lassen sich auf einfache Weise all diejenigen Spei- chereinträge, die prinzipiell zurückzuschreiben wären, jedoch keinerlei Änderung seit dem letzten Synchronisieren erfahren haben, invalidieren. Alternativ wäre natürlich auch denkbar, statt dem Marker des zweiten Speicherfeldes in einen entspre- chenden Zustand zu verbringen, der die Invalidierung anzeigt, den Inhalt der betreffenden Datenbereiche zu löschen. Dies kann insbesondere bei hochsicherheitsrelevanten Anwendungen vorteilhaft sein.

In einem weiteren vorteilhaften Verfahrensschritt wird der Marker des dritten Speicherfeldes in einen zweiten Zustand gebracht, der anzeigt, daß keine Änderung des Datenspeichers des Speichereintrags seit dem letzten Synchronisieren erfolgt ist. Mit anderen Worten bedeutet dies, daß nach einem erfolg- ten Synchronisationsvorgang zwischen einem Speichereintrag und dem Hauptspeicher der Marker des dritten Speicherfeldes "gelöscht"wird, so daß bei einem weiteren Suchvorgang kein erneutes Synchronisieren mit dem Hauptspeicher erfolgt.

Das Synchronisieren eines Speichereintrags mit dem Hauptspei- cher ist ein iterativer Vorgang, so daß die Schritte a) bis d) bzw. a) bis e) so lange wiederholt werden, bis keine Über- einstimmung zwischen den bereitgestellten Synchronisations-

Wert und dem Inhalt des ersten Speicherfeldes eines Spei- chereintrags mehr vorliegt.

Das Übertragen des Inhalts des Datenbereiches eines Spei- chereintrags in den Hauptspeicher umfaßt folgende Schritte : aa) Ermittlung der Adresse des Speichereintrags des Cache- Speichers, bb) Übergeben der Adresse aus dem Adreßbereich des Spei- chereintrags an den Prozessor, cc) Adressieren des Speichereintrags durch den Prozessor, dd) Auslesen des Inhalts des Datenbereiches des Speicherein- trags, und ee) Speichern des Inhaltes des Datenbereiches des Spei- chereintrags im Hauptspeicher.

Eine mögliche Vorgehensweise zur Synchronisierung eines Spei- chereintrags mit dem Hauptspeicher besteht somit darin, bei übereinstimmenden Wert des ersten Speicherfeldes und des Syn- chronisations-Wertes die zu dem Speichereintrag gehörige Adresse aus dem Adreßbereich an den Prozessor zu übergeben und anschließend einen an sich bekannten Suchvorgang inner- halb des Cache-Speichers, wie er auch aus dem Stand der Tech- nik geläufig ist, anzuwenden.

Vorzugsweise kann zwischen den Schritten bb) und cc) ein wei- terer Marker in einem Register gesetzt werden, wobei das Re- gister außerhalb des Cache-Speichers in der Zentraleinheit angeordnet ist und durch den Prozessor auslesbar ist. Der Marker dient als Indikator, daß ein Zurückschreibe-Vorgang vorgenommen wurde. Bei gesetztem Marker in besagtem Register wird ein erneuter Suchdurchlauf nach einem gesetzten Marker in dem dritten Speicherfeld durchgeführt. Sobald der Suchvor-

gang angestoßen wurde, erfolgt nach Schritt ee) ein Rückset- zen des Markers in dem Register. Sind alle Speichereinträge des Cache-Speichers innerhalb eines Suchvorganges überprüft worden und ist kein Marker in dem Register gesetzt, so bedeu- tet dies, daß alle fraglichen Speichereinträge mit dem Haupt- speicher synchronisiert wurden.

Der erfindungsgemäße Speicher ist insbesondere für den Ein- satz in Anwendungen mit hohen Sicherheitsanforderungen ge- dacht. Insbesondere kann die gesamte Rechenanlage in einem einzigen Chip untergebracht sein und beispielsweise Einsatz in einer Chipkarte finden. Eine derartige Chipkarte kann als Geldkarte, Ausweiskarte, Telephonkarte, SIM-Karte oder der- gleichen verwendet werden. Besonders vorteilhaft ist der Ein- satz dann, wenn verschiedene Organisationen z. B. unter- schiedliche Dienstleistungsanbieter, verschiedene Programme in der Rechenanlage ablegen, welche untereinander in keiner Beziehung zu einander stehen. Jeder Programmeinheit-wobei unterstellt wird, daß jede Organisation eine Programmeinheit in die Rechenanlage einspeichert-kann dann ein kryptogra- phischer Schlüssel zugewiesen werden.

Das erfindungsgemäße Verfahren zum Synchronisieren eines Cache-Speichers mit einem Hauptspeicher läßt sich schnell und energieeffizient durchführen, so daß es insbesondere für An- wendungen ohne eigene Energieversorgungen interessant ist.

Dies trifft beispielsweise auf kontaktlos betriebene Chipkar- ten zu.

Im folgenden wird die Erfindung an Hand von Ausführungsbei- spielen mittels der beigefügten Zeichnungen näher erläutert.

Es zeigen : Figur 1 schematisch die Struktur der erfindungsgemäßen Re- chenanlage,

Figur 2 den Aufbau eines Speichereintrags in einer ersten Ausführungsform, Figur 3 den Aufbau eines Speichereintrags in einer zweiten Ausführungsform, und Figur 4 einen aus einer Vielzahl an Speichereinträgen be- stehenden Speicher, der als n-wege-Satz- assoziativer Speicher ausgebildet ist.

In der Figur 1 ist schematisch die Struktur einer Rechenanla- ge 10 in einer beispielhaften Ausführungsform dargestellt.

Die Rechenanlage 10 umfaßt einen Prozessor 12, einen Haupt- speicher 14 und einen Speicher (Cache-Speicher) 13, die je- weils über ein Verbindungsmittel 16, zum Beispiel einer Bus- leitung, miteinander in Verbindung stehen. Die Rechenanlage 10 kann weitere Komponenten enthalten, beispielsweise ein Ein-/Ausgabemittel, das mit allen genannten Komponenten ver- bunden ist. Das Ein-/Ausgabemittel steuert die Übertragung von Daten zwischen der Zentraleinheit 11 und (nicht darge- stellten) Peripheriegeräten, wie z. B. Tastatur, Bildschirm, Drucker, Magnetplattenspeicher, Diskettenlaufwerk, CD-ROM- Laufwerk, Modem, Schreib/Lesegerät usw.. Der Prozessor 12 und der Speicher 13 bilden zusammen die Zentraleinheit 11. Vor- zugsweise ist die Zentraleinheit 11 und der Hauptspeicher 14 sowie evtl. weitere vorhandene Komponenten auf einem einzigen Chip integriert. Dies ist schematisch durch die gestrichelte Linie, die mit dem Bezugszeichen 15 versehen ist, angedeutet.

Obwohl die Zentraleinheit 11 gemäß der Figur 1 nur einen Pro- zessor 12 aufweist, der auf den Speicher 13 zugreift kann auch wenigstens ein (nicht dargestellter) weiterer Prozessor vorgesehen sein, der wie der dargestellte Prozessor 12 auf den Speicher 13 und evtl. auf den Speicher 14 zugreift.

In der Figur 2 ist der Aufbau eines erfindungsgemäßen Spei- chereintrags in einer ersten Ausführungsform dargestellt. Der Speichereintrag weist in bekannter Weise einen Adreßbereich 21, einen Datenbereich 23 und einen Kennungsbereich 22 auf.

Der Datenbereich 23 enthält die eigentlichen Daten, während der Adreßbereich 21 die Speicheradresse des entsprechenden Speichereintrags 20 enthält. Der Kennungsbereich 22 enthält Informationen über die Gültigkeit des Speichereintrags (zwei- tes Speicherfeld 26), und die Angabe, ob seit dem letzten Synchronisieren Daten in dem Datenbereich 23 verändert wurden (drittes Speicherfeld 27). Das dritte Speicherfeld ist aus dem Stand der Technik auch unter dem Namen"Dirty Flag"be- kannt. Das zweite Speicherfeld wird üblicherweise als"Valid Flag"bezeichnet.

Darüber hinaus ist in dem Kennungsbereich 22 ein erstes Spei- cherfeld 25 vorgesehen. Das Speicherfeld 25 ist beispielhaft in vier Speicherfelder 25a bis 25d unterteilt. Jedem der Speicherfelder 25a bis 25d ist ein Teil-Datenbereich 30a bis 30d des Datenbereiches 23 zugeordnet. Jeder der Teil- Datenbereiche 30a bis 30d ist als Wort ausgebildet, wobei je- des Wort beispielsweise 32 Bit breit sein kann. Jedes der er- sten Speicherfelder 25a bis 25d beinhaltet eine Information, mit welchem kryptographischem Schlüssel die Daten in den Be- reichen 30a bis 30d verschlüsselt sind. Konkret bedeutet dies, daß der in dem ersten Speicherfeld 25a zugeordnete kryptographische Schlüssel Daten in dem Datenbereich 30a ver- bzw. entschlüsselt. In entsprechender Weise können die in dem Datenbereich 30d befindlichen Daten mit dem dem ersten Spei- cherfeld 25d zugeordneten kryptographischen Schlüssel bear- beitet werden. Beispielhaft ist jedes Feld 1 Bit breit, so daß ein Verweis auf insgesamt zwei kryptographische Schlüssel möglich ist. Die kryptographischen Schlüssel können in einem separaten Register, das nicht näher dargestellt ist, abge- speichert sein. Der Prozessor, der den Wert des ersten Spei- cherfeldes 25 aus einem Speichereintrag 20 ausliest, kann dann in dem betreffenden Register den zugeordneten kryptogra-

phischen Schlüssel ermitteln und die in verschlüsselter Form abgelegten Daten in dem den jeweiligen ersten Speicherfeld zugeordneten Teil-Datenbereichen 30a bis 30d entschlüsseln.

Denkbar ist auch, anstatt in den ersten Speicherfeldern 25a bis 25d einen Verweis auf einen kryptographischen Schlüssel zu hinterlegen, den kryptographischen Schlüssel direkt in die ersten Speicherfelder einzuspeichern. Dies ist insbesondere bei sehr vielen, aber sehr kurzen kryptographischen Schlüs- seln eine sinnvolle Alternative. Natürlich müßte jedes der Speicherfelder 25a bis 25d dann mehrere Bit breit sein.

In Figur 3 ist ein weiteres Ausführungsbeispiel eines erfin- dungsgemäßen Speichereintrags 20 dargestellt. Diese unter- scheidet sich von dem Speichereintrag aus Figur 2 dadurch, daß der Adreßbereich 21 in einen ersten und einen zweiten Adreßbereich 40,41 unterteilt sind. Jeder der Adreßbereiche 40,41 ist mehrere Bits breit. Der erste Adreßbereich 40, der beispielsweise 16 Bit breit ist, beinhaltet die physikalische Adresse eines Speichereintrags. Der zweite Adreßbereich 41, der beispielsweise 12 Bit breit ist, beinhaltet die höchst- wertigen Bits einer logischen Adresse einer Programmeinheit.

Dabei wird davon ausgegangen, daß jede Programmeinheit in ei- nem vorgegebenen logischen Adressraum eingeschrieben ist. Die logischen Adressen dieses Speicherblocks sind alle identisch.

Dies bedeutet, daß an Hand der höchstwertigen Bits der logi- schen Adressen eine Programmeinheit identifiziert werden kann. Sollen alle zu einer Programmeinheit zugeordneten Spei- chereinträge des erfindungsgemäßen Cache-Speichers mit dem Hauptspeicher synchronisiert werden, so kann eine Suche nach allen identischen Werten in dem zweiten Adreßbereich des Cache-Speichers erfolgen. Dies hat den Vorteil, daß auch in- nerhalb einer Programmeinheit unterschiedliche kryptographi- sche Schlüssel verwendet werden können.

Im ersten Ausführungsbeispiel der Figur 2 werden die in den ersten Speicherfeldern 25 eingetragenen Werte als Suchkrite-

rium für eine Synchronisation verwendet. Wie aus der nachfol- genden Beschreibung der Figur 4, in der ein Speicher mit n Speichereinträgen dargestellt ist, ersichtlich werden wird, wird dabei nicht nur eines der Teil-Speicherfelder 25a bis 25d als Vergleichskriterium herangezogen, sondern die gesamte in dem ersten Speicherfeld 25 abgespeicherte Bitfolge.

Der in Figur 4 dargestellte Speicher 13 ist als vier-Wege- Satz-assoziativer-Cache-Speicher ausgebildet. Der Speicher 13 weist insgesamt 4 Sätze auf, die auf der rechten Seite von 0 bis 3 durchnummeriert sind. Jeder der vier Sätze weist eine identische Anzahl an Speichereinträgen auf. Der Aufbau und die Funktionsweise eines n-Wege-Satz-Assoziativen-Cache- Speichers ist aus dem Stand der Technik bekannt und bedarf deshalb an dieser Stelle keiner näheren Erläuterung. An Hand der Figur 4 läßt sich jedoch die Vorgehensweise bei der Syn- chronisation des Cache-Speichers 13 mit dem Hauptspeicher 14 anschaulich erläutern.

In den Sätzen 1 bis 3 sind jeweils zwei Speichereinträge bei- spielhaft herausgestellt, wobei der Kennungsbereich 22 je- weils mit Daten versehen wurde. Dabei bezeichnet i den Index des Speichereintrags. i ist ein Wert aus (0, 1,... n x m-1), wobei n die Anzahl der Sätze und m die Anzahl der Spei- chereinträge pro Satz ist.

Wie in der Beschreibung zu Figur 2 bereits dargestellt wurde, ist jedes der Teil-Speicherfelder 25a bis 25d einem der Teil- Datenbereiche 30a bis 30d zugeordnet. Da jedes der Teil- Speicherfelder 25a bis 25d jeweils nur ein Bit breit ist, verweist ein Wert"1"auf einen ersten kryptographischen Schlüssel und ein Wert"0"auf einen zweiten kryptographi- schen Schlüssel, mit dem die Daten in jeweils zugeordneten Teil-Datenbereichen 30a bis 30d verschlüsselt sind. Da davon ausgegangen wird, daß ein kryptographischer Schlüssel einer bestimmten Programmeinheit zugewiesen ist, bedeutet dies, daß überall dort, wo in dem ersten Speicherfeld 25 ein Verweis

auf diesen kryptographischen Schlüssel enthalten ist, im zu- gehörigen Teil-Datenbreich ein möglicherweise zu synchroni- sierendes Datum enthalten ist. Zur Synchronisation werden folglich nicht die Informationen verwendet, die sich in dem Adreßbereich 21 befinden, sondern es werden die in dem ersten Speicherfeld 25 enthaltenen Verweise auf kryptographische Schlüssel untersucht.

Beispielsweise sollen all diejenigen Speichereinträge syn- chronisiert werden, denen in den Speicherfeldern 25a bis 25d eine"0"zugeordnet ist. Der Prozessor wird zu diesem Zweck an eine Cache-Logik einen Synchronisationswert übermitteln, der alle Werte außer"1-1-1-1"umfaßt. Bei einem Vergleich dieses Synchronisationswertes mit dem aus vier Bit bestehen- den Wert des ersten Speicherfeldes 25 werden folglich die Speichereinträge 37,43, 73,91, 107 und 123 als Treffer ge- meldet. Die Cache-Logik überprüft nach Auffinden dieser Spei- chereinträge, in welchen davon das dritte Speicherfeld 27 ei- nen zweiten Zustand (hier :"0") aufweist. Dies ist in den Speichereinträgen 91 und 123 der Fall. Der zweite Zustand des dritten Speicherfeldes 27 zeigt an, daß seit dem letzten Syn- chronisieren keine Änderung in einem der Teil-Datenbereiche 30a bis 30d erfolgt ist. Somit können in den Speichereinträ- gen 91 und 123 die Marker in den zweiten Speicherfeldern 25 invalidiert werden. Dies bedeutet, daß in dem zweiten Spei- cherfeld 26 in den genannten Speichereinträgen 91 und 123 die Marker in einen ersten Zustand (hier : 0) verbracht werden.

Bei den übrigen Speichereinträgen 37,43, 73 und 107 ist vor dem Invalidieren eine Synchronisation mit dem Hauptspeicher notwendig. Synchronisation bedeutet hierbei, daß die in den entsprechenden Teil-Datenbereichen 30a bis 30d stehenden Da- ten in den Hauptspeicher übertragen werden. Zum Synchronisie- ren merkt sich die Cache-Logik die Adresse des ersten aufge- fundenen Speichereintrags, wobei der Suchlauf beispielsweise mit dem Speichereintrag 0 in Richtung höher nummerierter Speichereinträge erfolgt. Der erste, einen Treffer ergebende

Speichereintrag trägt die Nummer 37. Die Cache-Logik meldet die Adresse des entsprechenden Satzes nach außen, im vorlie- genden Beispiel Satz 1. Gleichzeitig kann in einem speziellen Register (ein sogenanntes Writeback-Register) ein weiterer Marker gesetzt werden, der anzeigt, daß ein Zurückschreibe- Vorgang vorgenommen wird. Anschließend kann durch Adressieren dieses Satzes durch die Cache-Logik der Adressbereich (21) des Speichereintrags ausgelesen werden. Durch einen assozia- tiven Suchvorgang mit dem so eben gelesenen Adreßbereich wird der übliche Rückschreibe-Vorgang durchgeführt-das heißt der Inhalt des Adressbereiches des Speichereintrags wird im Hauptspeicher abgelegt-und die Marker des zweiten und drit- ten Speicherfeldes 26,27 werden zurückgesetzt. Durch den im Writeback-Register gesetzten weiteren Marker weiß die Cache- Logik, daß ein weiterer Suchvorgang angestoßen werden muß.

Nachdem dies geschehen ist, wird der weitere Marker in dem Writeback-Register zurückgesetzt. Wird ein weiterer Spei- chereintrag aufgefunden, bei dem der Synchronisations-Wert mit dem 4-Bit-Code des ersten Speicherfeldes 25 überein- stimmt, so findet der eben beschriebene Vorgang von vorne statt. Hat die Cache-Logik alle Speichereinträge von 0 bis n x m-1 durchlaufen, ohne daß in dem Writeback-Register ein Marker gesetzt wurde, so bedeutet dies, daß alle fraglichen Speichereinträge synchronisiert wurden.

Bezugszeichenliste 10 Rechenanlage 11 Zentraleinheit 12 Prozessor 13 Speicher (Cache-Speicher) 14 Hauptspeicher 15 Chip 16 Verbindungsmittel 20 Speichereintrag (Cache-Zeile) 21 Adressbereich 22 Kennungsbereich 23 Datenbereich 25a, 25b, 25c, 25d Erstes Speicherfeld 26 Zweites Speicherfeld 27 Drittes Speicherfeld 30a, 30b, 30c, 30d Wort 40 Erster Adressbereich (Adressbereich) 41 Zweiter Adressbereich (Zuordnungsspei- cherbereich)