DE69224084T2 - Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür - Google Patents
Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafürInfo
- Publication number
- DE69224084T2 DE69224084T2 DE69224084T DE69224084T DE69224084T2 DE 69224084 T2 DE69224084 T2 DE 69224084T2 DE 69224084 T DE69224084 T DE 69224084T DE 69224084 T DE69224084 T DE 69224084T DE 69224084 T2 DE69224084 T2 DE 69224084T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- cache
- buffer
- storing
- references
- 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.)
- Expired - Fee Related
Links
- 239000000872 buffer Substances 0.000 title claims description 81
- 238000000034 method Methods 0.000 title claims description 17
- 230000015654 memory Effects 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 26
- 230000027455 binding Effects 0.000 claims description 9
- 238000009739 binding Methods 0.000 claims description 9
- 230000002123 temporal effect Effects 0.000 claims description 9
- 238000003860 storage Methods 0.000 claims description 6
- 230000006399 behavior Effects 0.000 description 19
- 238000013461 design Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000013479 data entry Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die Erfindung bezieht sich auf elektronische Rechneranordnungen. Insbesondere bezieht sich die Erfindung auf eine Rechnerarchitektur, die einen effizienten Austausch von Daten zwischen einem relativ schnellen Prozessor und einem relativ langsamen Speicher erlaubt.
- Rasche Fortschritte in der Technologie der integrierten Schaltungen und auf dem Gebiet der Rechnerarchitektur haben zu einer wachsenden "Speicher-Referenz- Verzögerungslücke" zwischen relativ schnellen Verarbeitungseinheiten und relativ langsamen Speichern geführt. Hochleistungs-Prozessor-Chips mit einem maximalen Durchsatz von über 100 MIPS sind im Handel erhältliche Produkte. Multiprozessor-Systeme, die diese Prozessor-Chips als Verarbeitungseinheiten nutzen, können ebenfalls implementiert werden. Das Speichersystem aber, das zur Unterstützung dieser Hochleistungssysteme benötigt wird, damit diese mit Spitzengeschwindigkeit laufen können, ist entweder zu komplex oder zu aufwendig in der Herstellung. Der resultierende Leistungsengpaß von vielen derzeitigen Hochleistungs-Rechneranordnungen ist daher nicht die Geschwindigkeit ihrer Verarbeitungseinheiten, sondern die Effizienz des Speichersystems.
- Um das Problem der immer größer werdenden Speicher-Referenz-Verzögerungslücke zwischen den schnellen Verarbeitungseinheiten und dem langsamen Speicher zu überwinden, lehrt der Stand der Technik die Verwendung von Cachespeicher. Cachespeicher ist ein kleiner schneller Pufferspeicher zwischen der zentralen Verarbeitungseinheit und dem Hauptspeicher einer Rechneranordnung. Sein hauptsächlicher Zweck besteht darin, schnelle Daten/Befehls-Zugriffe zu erhalten, ohne den gesamten Primärspeicher mit Hochgeschwindigkeitstechnologie bauen zu müssen und die hiermit verbundenen Kosten aufzuwenden. Dies wird erreicht, indem Daten/Befehle, auf die voraussichtlich in naher Zukunft verwiesen wird, im Cachespeicher gehalten werden. Bei derzeitigen Cache-Entwürfen erhalten die Befehlscaches immer eine höhere Priorität für die Implementierung und Optimierung als Datencaches. Wenn nur eine begrenzte Chipfläche zur Verfügung steht, wird sie benutzt, um Befehlseache zu implementieren. Sehr oft wird der Datencache erst auf dem Prozessor-Chip angeordnet, wenn der Befehlscache implementiert wurde und noch genügend Platz übriggeblieben ist. Dies ist auf das derzeitige Verständnis des Befehlsreferenzverhaltens und des Datenreferenzverhaltens zurückzuführen sowie auf die Genauigkeit der aktuellen Cache-Modelle für Befehle und für Daten.
- Da Befehlsreferenzen eine in hohem Maße sequentielle Referenzeigen schaft besitzen, lehrt der Stand der Technik ein als "Cache Prefetching" (Cache-Vorabrufen) bezeichnetes Verfahren, bei dem Referenzen in den Cachespeicher gebracht werden, bevor sie wirklich benötigt werden. Wenn das Vorabrufen korrekt ist, können sich Speicher-Referenz-Verzögerungszeiten (teilweise oder vollständig) mit der Programmausführung überlappen. Für nicht-sequentielle Befehlsreferenzen aufgrund von Verzweigungs- oder Sprunganweisungen lehrt der Stand der Technik ein als "branch target prediction" (Sprungzielvorhersage) bekanntes Verfahren, um vorherzusagen, welchen Weg die Programmausführung einschlagen wird. Zusammen mit dem Cache- Vorabruf-Verfahren kann die Anzahl der Cache-Fehlschläge reduziert werden, wenn die Vorhersage korrekt ist. Außerdem kann "Sprungziel-Puffer oder -Cache" auch benutzt werden, um das Cache-Volltrefferverhältnis zu verbessern, indem Sprungziele in einen Puffer/Cache gebracht werden und Nicht-Sprung-Referenzen in einen anderen Puffer/- Cache. Demzufolge kann die Anzahl der Cache-Fehlschläge, die für die Verarbeitungseinheit sichtbar sind, reduziert werden, und man erhält eine gute Befehlscache-Leistung. Der hier benutzte Ausdruck "Cache-Volltrefferverhältnis" ist definiert als die Wahrscheinlichkeit, daß ein durch eine Prozessoreinheit angeforderter Dateneintrag im Cachespeicher gefunden wird, und die "Cache-Fehlschlag-Strafzeit" ist definiert als die Zeit, die die Prozessoreinheit warten muß, bis der angeforderte Dateneintrag eintrifft, wenn ein Cache-Fehlschlag auftritt.
- Seit der Einführung von Cache in den sechziger Jahren wurden Cache Partitionierung und Mehrfachpuffer-Cache-Verfahren oft angewendet, um das Cache- Volltrefferverhältnis zu verbessern und den Datenverkehr auf dem Bus zu reduzieren. Einige der am häufigsten angewendeten Cache-Partitionierungsverfahren nach dem Stand der Technik sind:
- DATENCACHE VERSUS BEFEHLSCACHE - die Cache-Speicherkapazität wird in zwei sich gegenseitig ausschließende Partitionen unterteilt, eine zur Speicherung von Befehlen und eine zur Speicherung von Daten.
- CACHE-PARTITION FÜR ECHTZEITSYSTEME - die Cache-Speicherkapazität wird in mehrere Partitionen unterteilt, von denen jedesmal, wenn eine Ausgabe ausgeführt wird, nur eine zugewiesen und durch die Aufgabe genutzt wird.
- HINZUFÜGEN VON SPRUNGZIEL-CACHE - ein separater Puffer/- Cache, der nur zum Speichern von Sprungziel-Befehlen dient, wird zum vorhandenen Cache hinzugefügt.
- HINZUFÜGEN VON VORABRUF-PUFFER - ein separater Puffer, der nur zum Speichern von sequentiell vorabgerufenen Befehlen dient, wird zum vorhandenen Cache hinzugefügt.
- HINZUFÜGEN VON OPFER-CACHE ODER FEHLSCHLAG-CACHE - ein separater Puffer/Cache, der zur vorübergehenden Speicherung von Daten dient, die gerade vom Cache ersetzt wurden, wird zwischen dem vorhandenen Cache und dem Hauptspeicher eingefügt.
- Nach dem Stand der Technik wird das Datenreferenzverhalten im allgemeinen als "zufällig" betrachtet und es gibt kein genaues Modell für Dateneache-Entwürfe nach dem Stand der Technik. Daher können diejenigen Cache-Verfahren, die die Leistung des Befehlscache verbessern können, ineffizient werden, wenn sie auf Datencache angewendet werden. Alle diese Verfahren verlieren bei Datencache-Entwürfen ihre Effizienz. Das erste Verfahren (Datencache versus Befehlscache) versucht, das Übergreifen der Befehlsreferenzen auf Datenreferenzen in Cachespeichern zu verhindern, während das zweite Verfahren (Cache-Partitionierung für Echtzeitsysteme) versucht, das Übergreifen von Befehls- und Datenreferenzen von einer Aufgabe auf die Befehls- und Datenreferenzen einer anderen Aufgabe zu verhindern. Das Problem des unvorhersagbaren Datenreferenzverhaltens bleibt jedoch bestehen. Das dritte Verfahren (Hinzufügen eines Sprungziel-Cache) kann in Datencaches nicht angewendet werden, weil es keine Sprungziele in Datenreferenzen gibt. Das vierte Verfahren (Hinzufügen von Vorabruf-Puffer) ist nicht sehr nützlich für die Verbesserung der Datencache-Leistung, weil das Referenzverhalten der Daten mehr oder weniger zufällig ist und nicht sequentiell. Das sequentielle Vorabrufen in Datenreferenzen verschlechtert oft die Datencache-Leistung statt sie zu verbessern. Das letzte Verfahren (Hinzufügen von Opfer- Cache oder Fehlschlag-Cache) kann die Datencache-Leistung leicht verbessern, indem mehr Assoziativität zum Cache hinzugefügt wird. Hierdurch wird jedoch das Problem des unvorhersagbaren Datenreferenzverhaltens nicht gelöst.
- Eine weitere Beschreibung der Organisation und Konstruktion von Cache- Speicherpuffern und -systemen ist in "High-Speed Memory Systems", Pohm und Agrawal, Reston Publishing Company (1983), und in "Cache Memories", von A.J. Smith, Computing Surveys, Band 14, Nummer 3, September 1982, S.473 - 530 zu finden.
- Cache-Vorabruf-Verfahren sind für Datencaches relativ weniger effizient als für Befehlscaches. Manchmal setzen sie die Rechnerleistung sogar herab. Dies ist vor allem auf Problem der Cache-Verunreinigung und des Bus-Konkurrenzbetriebs zurückzuführen. Der Ausdruck "Cache-Verunreinigung" bezieht sich hier auf die Situation, in der Daten oder Befehle in den Cache geholt werden, aber auf die in der Zeit, während der sie sich im Cache befinden, nicht verwiesen wird. "Bus-Konkurrenzbetrieb" ist eine Situation, bei der es mehr Anforderungen gibt, die versuchen, den Datenbus zu benutzen, als der Bus gleichzeitig bedienen kann. Im Vergleich zu dem Verhalten der Befehlsreferenzen, die normalerweise von sequentieller Beschaffenheit sind, ist das Gesamtverhalten der Datenreferenzen mehr oder weniger zufällig. Da nach dem Stand der Technik das Referenzverhalten der Daten viel weniger vorhersagbar war als das Referenzverhalten von Befehlen, tritt die Cache-Verunreinigung bei Datencache- Vorabruf viel schwerwiegender auf als bei Befehlscache-Vorabruf. Es wird nicht nur Cache-Speicherkapazität vergeudet, um vorabgerufene Daten, auf die nicht verwiesen wird, zu speichern, sondern auch Daten im Cache, auf die in Kürze verwiesen wird, könnten durch die Daten ersetzt werden, auf die nicht verwiesen wird. Auch das Abrufen von Daten, auf die nicht verwiesen wird, trägt zum Busverkehr bei. In Systemen, bei denen die Bus-Bandbreite eine begrenzte Ressource darstellt, kann es zu einem Bus- Konkurrenzbetrieb kommen und die Rechnerleistung wird weiter verschlechtert. Wenn der Bus mit dem Vorabrufen von Daten beschäftigt ist, auf die nicht verwiesen wird, können andere Anforderungen zur Nutzung des Busses (z.B. Abrufen von Befehlen) verzögert werden. Die ist sehr häufig bei Hochleistungs-Prozessor-Chips der Fall, wo die Verarbeitungsgeschwindigkeit sehr hoch sein kann, aber die Bus-Bandbreite durch physikalische Zwänge begrenzt ist, zum Beispiel durch die Gesamtzahl der Stifte an einem Chip. Das Verfahren der Sprungvorhersage und die Verwendung von Sprungziel- Puffer/Cache ist nicht auf Datencache anwendbar. Bei Datencache-Entwürfen nach dem Stand der Technik werden die Datenreferenzen nicht entsprechend ihrem sequentiellen Referenzverhalten in verschiedene Typen untergeteilt. Die Unterscheidung zwischen Sprung-Referenzen und sequentiellen Referenzen bei Befehisreferenzen tritt bei Datenreferenzen nicht auf. Die Leistung der derzeitigen Datencache-Entwürfe ist daher wesentlich geringer als die Leistung von Befehlscache-Entwürfen.
- In der Patentschrift EP-A-0 250 702 wird ein System beschrieben, in dem die Befehle, die Daten in einem Cache anfordern, einen Cache-Steuerungs-Spezifizierer enthalten, der den Cache über den Typ der Daten informiert, auf die durch die genannten Befehle verwiesen wird. Der Cache kann daher dasjenige Ersatz-Schema wählen, das am besten für den identifizierten Datentyp geeignet ist.
- Die Erfindung hat zur Aufgabe, die Effizienz von Datencache zu verbessern.
- Eine Ausführungsform der Erfindung erfüllt die Aufgabe, weil sie eine Rechneranordnung schafft, die folgendes enthält:
- eine Verarbeitungseinheit;
- einen Hauptspeicher zum Speichern der durch die Verarbeitungseinheit benutzten Daten;
- einen Datencache, der mit der Hauptspeichereinheit und der Verarbeitungseinheit verbunden ist, um Daten zu speichern und/oder vom Hauptspeicher vorabzurufen, auf die durch die Befehle der Verarbeitungseinheit verwiesen wird;
- wobei der Datencache folgendes umfaßt:
- Mittel, die Datenanforderungen von der Verarbeitungseinheit analysieren und die Datenreferenzen in den genannten Anforderungen auf der Grundlage von vorhergesagten statistischen Assoziationen der Gebundenheiten der genannten Datenreferenzen in eine Vielzahl von unterschiedlichen Gruppen einteilen; mindestens zwei Datenpuffer; und
- Mittel, die jede Datenreferenz einem der genannten Puffer zuordnen, um die Cache-Leistung auf der Basis von vorhergesagten statistischen Assoziationen zu optimieren. Dank der Mittel, die die Anforderungen analysieren, werden Datenobjekte, die von Befehlen mit unterschiedlicher Referenz-Gebundenheit stammen (zum Beispiel Befehle, die auf Stapeldaten verweisen oder auf globale Variable, oder Array-Elemente oder direkt adressierte Daten), entsprechend der Referenz-Gebundenheit, zum Beispiel zeitliche Gebundenheit oder räumliche Gebundenheit, in verschiedene Datenpuffer gebracht. Diese Referenz-Gebundenheit wird dynamisch, also wie die Datenobjekte angefordert werden, durch die Mittel vorhergesagt, welche die Datenanforderung analysieren; ein einzelnes Objekt kann also, wenn von verschiedenen Teilen des Programms darauf zugegriffen wird, in verschiedene Puffer gebracht werden, je nachdem, wie seine Verwendung vorhergesagt wurde. Das Halten der Daten in den Datenpuffern, ihr Umfang und Vorabrufstrategien können für jeden Datenpuffer separat optimiert werden, und das unvorhersagbare Verhalten der einen Art von Referenz braucht zum Beispiel nicht andere Datenpuffer zu verunreinigen oder dazu zu führen, daß nützliche Datenobjekte daraus entfernt werden.
- In einer Ausführungsform der Erfindung umfassen die genannten Gruppen auf der Basis von statistischen Assoziationen eine S-Referenz-Datengruppe, für die eine starke zeitliche Gebundenheit der Referenzeigenschaften vorhergesagt wird, und auch eine P-Referenz-Datengruppe, für die eine relativ schwache zeitliche Gebundenheit der Referenzeigenschaften vorhergesagt wird und eine relativ starke räumliche Gebundenheit der Referenzeigenschaften, wobei es unter den Datenpuffern einen S-Puffer zum Speichern von S-Referenzdaten und einen P-Puffer zum Speichern und Vorabrufen von P- Referenzdaten gibt.
- Die Datenreferenzen werden entsprechend des Adressiermodus und der bei der Adressenberechnung benutzten Register in zwei Typen mit den Bezeichnungen S_Referenzen und P_Referenzen aufgeteilt. Datenreferenzen vom Hauptspeicher werden in einem Cache gespeichert, der zwei Puffer umfaßt, einen S_Puffer und einen P_ Puffer, von denen jeder für die Behandlung eines Datenreferenztyps optimiert ist und benutzt wird. Der S_Puffer ist für S_Referenzen optimiert und der P_Puffer für P_ Referenzen. Jeder dieser beiden Referenztypen hat seine eigenen Eigenschaften, die er nicht mit dem anderen Referenztyp teilt. Die Optimierung wird erreicht, indem im Fall von P_Referenzen für das Vorabrufen von Daten gesorgt wird, die an diejenigen Daten angrenzen sind, auf die verwiesen wird, jedoch nicht im Fall von S_Referenzen. Es können auch andere Typen von Haltestrategien, wie sie für Befehlscache beschrieben werden, für den S_Puffer oder den P_Puffer verwendet werden. Auf diese Weise erhält man mit dem Mehrfachpuffer-Datencache eine wesentliche Verbesserung der Cache- Leistung.
- Bei derzeitigen Cache-Entwürfen wird das Programm-Referenzverhalten oft mit der Gebundenheit der Referenz beschrieben. Es gibt zwei Arten von Gebundenheitsreferenzen, "zeitliche Gebundenheit" (Zeitgebundenheit) und "räumliche Gebundenheit" (Ortsgebundenheit). Während eines kurzen Zeitraums sind durch ein Referenzprogramm getätigte Speicherreferenzen nicht gleichförmig über den Adreßraum verteilt. Stattdessen treten Referenzen oft in kleinen Clustern - dem arbeitenden Referenzsatz -auf. Der erste Gebundenheitstyp, die zeitliche Gebundenheit, bezieht sich auf die Tatsache, daß zur Zeit benutzte Informationen wahrscheinlich in naher Zukunft erneut benutzt werden. Dies ist das Grundprinzip für die meisten Cachespeicher nach dem Stand der Technik: Die meisten Programm versuchen, Daten oder Codes während der Programmausführung mehrmals zu benutzen. Diese Art von Referenzverhalten ist in Programmschleifen zu finden, in denen sowohl Daten- als auch Befehlsreferenzen voraussichtlich wiederholt für jede Schleife oder in Subroutinen benutzt werden, die während der Programmausführung mehrmals aufgerufen werden.
- Der Adreßraum ist normalerweise in eine Anzahl von einzelnen, aneinander angrenzenden Segmenten dieses Raums gruppiert, und es wird nur auf wenige Segmente gleichzeitig wiederholt verwiesen. Der zweite Gebundenheitstyp, die räumliche Gebundenheit, legt nahe, daß die Orte der Referenzen eines Programs in naher Zukunft wahrscheinlich in der Nähe der aktuellen Orte der Referenz liegen werden. Diese Art von Referenzverhalten ist in wissenschaftlichen Programmen üblich, wo Befehle meist in sequentieller Reihenfolge ausgeführt werden und es gebräuchlich ist, auf Sequenzen von Array-Elementen zuzugreifen, die typischerweise im Speicher aneinander angrenzen.
- Mit diesen Gebundenheiten von Zeit und Raum versucht die vorliegende Erfindung, Informationen, die der Prozessor zur Zeit bearbeitet (Zeitgebundenheit), zusammen mit Informationen in der Nähe des aktuellen Orts der Referenzen (Ortsgebundenheit), im Cache und leicht verfügbar zu halten. Es wird jedoch allgemein erkannt, daß dieses Entwurfsprinzip gut für Befehlscaches funktioniert, aber nicht für Datencaches. Dies ist auf das sehr unterschiedliche Referenzverhalten bei Befehlen und Daten zurückzuführen. Während das Befehlsreferenzverahlten eine in hohem Maße sequentielle Referenzeigenschaft besitzt und gut vorhersagbar ist, lehrt der Stand der Technik, daß das Datenreferenzverhalten zufällig ist und viel weniger vorhersagbar als Befehlsreferenzen. Da die meisten aktuellen Cache-Modelle in Management-Strukturen vor allem für Befehlscache entworfen wurden, ist es nicht erstaunlich, daß diese Strukturen und Steuerungsmechanismen viel weniger effizient sind, wenn sie auf Dateneaches angewendet werden. Sorgfältige Untersuchungen zeigen jedoch, daß das Datenreferenzverhalten in Wirklichkeit nicht so zufällig ist, wie es den Anschein hat. Es handelt sich hier vielmehr um eine Kombination von S_Referenzen und P_Referenzen, und jeder dieser beiden Referenztypen ist in hohem Maße vorhersagbar. Der erste Typ von Datenreferenzen, die P_Referenz, ist hauptsächlich auf Zugriffe von Daten-Array-Elementen mit Hilfe von Zeigern zurückzuführen. Sie hat stark sequentielle Referenzeigenschaften, die der sequentiellen Referenzeigenschaft von Befehlen ähnlich sind. Die nächste Referenz dieses Typs von Daten ist daher in hohem Maße vorhersagbar. Das bedeutet, sie verfügt über eine starke vorwärtsgerichtete (oder vielleicht rückwärtsgerichtete) räumliche Referenz-Gebundenheit. Der aktive Bereich der P_Referenzen ist jedoch normalerweise sehr kurz, üblicherweise wenige Befehle lang, und seine Referenzfrequenz ist sehr gering. Das bedeutet, daß die zeitliche Gebundenheit von P_Referenzen sehr schwach ist.
- Der zweite Typ von Datenreferenzen, die S_Referenz, ist hauptsächlich auf Zugriffe von Stapelvariablen und globalen Skalar-Variablen zurückzuführen. Auf diesen Referenztyp wird üblicherweise während seines aktiven Bereichs sehr oft verwiesen. Bei diesem Referenztyp liegt also eine stark zeitliche Gebundenheit der Referenzeigenschaft vor. Die räumliche Gebundenheit der S_Referenzen ist jedoch sehr schwach, weil das Zugriffsmuster nahezu zufällig ist.
- Durch Prüfung des Adressiermodus und der bei der Adressenberechnung während der Befehlsdecodierung benutzten Register können Datenreferenzen in Laufzeit mit hoher Genauigkeit als S_Referenzen oder P_Referenzen angenommen werden. Dies liegt daran, daß nur Referenzen mit indirektem Adressiermodus P_Referenzen sein können und einige Register oft für spezielle Zwecke vorgesehen sind. Referenzen zum Beispiel, die einen direkten Adressiermodus nutzen, sind wahrscheinlich S_Referenzen; indirekte Referenzen, die das Stapelzeigerregister nutzen, sind wahrscheinlich lokale Stapelvariablen.
- Durch Aufteilen der Datenreferenzen in S_Referenzen und P_Referenzen kann die Gebundenheit von jedem dieser beiden Datenreferenztypen genauer beschrieben werden. Auf der Grundlage dieses Datenreferenzmodells enthält eine erfindungsgemäße Rechneranordnung einen Datencache mit einem S_Puffer, der für das Vorabrufen und Speichern von S_Referenzdaten optimiert ist, und mit einem P_Puffer, der für das Vorabrufen und Speichern von P_Referenzdaten optimiert ist. Der Datencache umfaßt eine Steuereinheit, die den Adressiermodus und die bei der Adressenberechnung während der Befehlsdecodierung benutzten Register analysiert, um zu ermitteln, ob die Referenzdaten eine S_Referenz oder eine P_Referenz sein sollen.
- Die Erfindung wird im folgenden unter Bezugnahme auf eine Figur beschrieben, die eine erfindungsgemäße Rechneranordnung mit einem Datencache zeigt.
- Die Figur zeigt einen erfindungsgemäßen Mehrfachpuffer-Datencache. Der Cache steuert das Abrufen der Daten, auf die durch eine Verarbeitungseinheit 10 von einem Hauptspeicher 20 verwiesen wird. Wie nach dem Stand der Technik üblich, umfaßt die Verarbeitungseinheit eine Decodereinheit 30, die die Befehle decodiert, um unter anderem den Typ der darin enthaltenen Datenreferenzen und die für die indirekte Datenadressierung benutzten Register zu bestimmen.
- Ein Mehrfachpuffer-Datencache 100 ist zwischen den Hauptspeicher 20 und die Verarbeitungseinheit 10 geschaltet. Er besteht aus einem S_Puffer 40, einem P_Puffer 50 und einer Steuereinheit 60. Die Steuereinheit 60 regelt den Datenfluß, so daß der P_Puffer und der S_Puffer jeweils eigene einzigartige Merkmale und Steuerschemata haben, um einen Datenreferenztyp zu optimieren: der S_Puffer dient zur Behandlung der S_Referenzen und der P_Puffer zur Behandlung der P_Referenzen. Die Puffer sind ansonsten nach dem Stand der Technik konstruiert und verbunden.
- Wenn eine Datenreferenz in einem Befehl gefunden wird, werden der Adressiermodus und die für die Adressenberechnung benutzten Register durch die Decodereinheit 30 bestimmt und an die Steuereinheit 60 geschickt, die bestimmt, ob es sich um eine S_Referenz oder eine P_Referenz handelt. Dies geschieht in Übereinstimmung mit vorgegebenen Regeln, die in die Logik der Steuereinheit eingebaut sind. Eine Referenz zum Beispiel, die mit dem indirekten Adressiermodus arbeitet und das Stapelzeigerregister bei ihrer Adressenberechnung nutzt, wird als S_Referenz betrachtet. Wenn eine Datenreferenz erfolgt, werden beide Puffer geprüft, um festzustellen, ob es einen Cache-Fehlschlag oder einen Cache-Volltreffer gibt.
- Der S_Puffer wird hauptsächlich benutzt, um S_Referenzen zu speichern. Da eine S_Referenz keine starke sequentielle Referenzpriorität besitzt, wird kein sequentielles Vorabrufen genutzt, weil die schwerwiegende Cache-Verunreinigung, die der Daten-Vorabruf mit sich bringt, zu einer Verschlechterung der Leistung führen könnte statt zu einer Verbesserung. Dies trifft vor allem zu, wenn der S_Puffer klein ist. Wenn ein S_Puffer-Cache-Volltreffer für eine S_Referenz vorliegt, gibt es keine Änderung im Inhalt des Cache. Wenn ein S_Puffer-Cache-Volltreffer für eine P_Referenz vorliegt, gibt es keine Änderung im Inhalt des Cache. Wenn ein Cache-Fehlschlag für eine S_ Referenz vorliegt, wird der Cache-Block, der diesem Fehlschlag entspricht, vom Hauptspeicher in den S_Puffer geholt.
- Der P_Puffer dient hauptsächlich zum Speichern von P_Referenzen. Da P_Referenzen in hohem Maße über eine sequentielle Referenzeigenschaft verfügen, wird im P_Puffer das sequentielle Vorabrufen genutzt. Wenn ein P_Puffer-Cache-Volltreffer für eine P_Referenz vorliegt, gibt es keine Änderung im Inhalt des Cache. Wenn ein P_Puffer-Volltreffer für eine S_Referenz vorliegt, wird der Cache-Block, der dieser Referenz entspricht, vom P_Puffer in den S_Puffer übertragen. Nach der Blockübertragung wird der Cache-Block im P_Puffer, der die aktuelle S_Referenz enthält, als leer gekennzeichnet. Wenn ein Cache-Fehlschlag für eine P_Referenz vorliegt, wird der Cache-Block, der diesem Fehlschlag entspricht, vom Hauptspeicher in den P_Puffer geholt. Alle vorabgerufenen Daten werden in den P_Puffer gebracht. Es kann ein Vorabrufschema wie "immer vorabrufen" verwendet werden.
- Obwohl die Erfindung in bezug auf einen Zwei-Puffer-Cache beschrieben wurde, ist ihr Umfang nicht darauf begrenzt. Es können zusätzliche Cache-Puffer neben dem P_Puffer und dem S_Puffer vorgesehen werden, die über spezielle Datenabruf- und Speichereigenschaften verfügen, welche für andere identifizierbare Datenreferenztypen mit einzigartigen Eigenschaften optimiert sind.
Claims (11)
1. Rechneranordnung, die folgendes enthält:
eine Verarbeitungseinheit;
einen Hauptspeicher zum Speichern der durch die Verarbeitungseinheit
benutzten Daten;
einen Datencache, der mit der Hauptspeichereinheit und der
Verarbeitungseinheit verbunden ist, um Daten zu speichern und/oder vom Hauptspeicher vorabzurufen,
auf die durch die Befehle der Verarbeitungseinheit verwiesen wird;
wobei der Datencache folgendes umfaßt:
Mittel, die Datenanforderungen von der Verarbeitungseinheit analysieren und
die Datenreferenzen in den genannten Anforderungen auf der Grundlage von
vorhergesagten statistischen Assoziationen der Gebundenheiten der genannten Datenreferenzen in
eine Vielzahl von unterschiedlichen Gruppen einteilen;
mindestens zwei Datenpuffer; und
Mittel, die jede Datenreferenz einem der genannten Puffer zuordnen, um die
Cache-Leistung auf der Basis von vorhergesagten statistischen Assoziationen zu
optimieren.
2. Rechneranordnung nach Anspruch 1, wobei die genannten Gruppen auf
der Basis von statistischen Assoziationen eine S-Referenz-Datengruppe enthalten, für die
eine starke zeitliche Gebundenheit der Referenzeigenschaften vorhergesagt wird, und
auch eine P-Referenz-Datengruppe, für die eine relativ schwache zeitliche Gebundenheit
der Referenzeigenschaften vorhergesagt wird und eine relativ starke räumliche
Gebundenheit der Referenzeigenschaften, wobei es unter den Datenpuffern einen S-Puffer zum
Speichern von S-Referenzdaten und einen P-Puffer zum Speichern und Vorabrufen von
P-Referenzdaten gibt.
3. Anordnung nach Anspruch 2, wobei die Mittel, die die
Datenanforderungen analysieren, Mittel umfassen, welche Datenanforderungen für Stapeldaten
identifizieren und diese identifizierten Daten über den S_Puffer speichern.
4. Anordnung nach Anspruch 2 oder 3, wobei die Mittel, die die
Datenanforderungen analysieren, Mittel umfassen, welche Datenanforderungen für globale
Variablendaten identifizieren und diese identifizierten Daten über den S_Puffer speichern.
5. Anordnung nach Anspruch 2, 3 oder 4, wobei die Mittel, die die
Datenanforderungen analysieren, Mittel umfassen, welche Datenanforderungen für Array-
Element-Daten identifizieren und die genannten identifizierten Daten über den P_Puffer
vorabrufen und/oder speichern.
6. Anordnung nach Anspruch 2, 3, 4 oder 5, wobei die Mittel, die die
Datenanforderungen analysieren, Mittel umfassen, welche Datenanforderungen
identifizieren, die den direkten Adressiermodus nutzen, und die genannten identifizierten Daten
über den S_Puffer speichern.
7. Anordnung nach Anspruch 2, 3, 4, 5 oder 6, wobei die
Verarbeitungseinheit ein Stapelzeigerregister enthält und die Mittel, die die Datenanforderungen
identifizieren, Mittel umfassen, welche Datenanforderungen identifizieren, die einen indirekten
Adressiermodus auf der Basis des Stapelregisters benutzen, und die genannten
identifizierten Daten über den S_Puffer speichern.
8. Anordnung nach einem der Ansprüche 1 bis 7, wobei die Mittel, die die
Datenanforderungen analysieren, Mittel umfassen, die eine Prozessoranweisung, welche
die Daten anfordert, decodieren.
9. Anordnung nach einem der Ansprüche 2 bis 8, die weiterhin
Cache-Steuermittel umfaßt, die bestimmen, ob sich die angeforderten Daten im Cache befinden,
und bei einem Cache-Fehlschlag oder bei S_Referenzdaten einen Cache-Block mit den
Daten, die dem Fehlschlag entsprechen, aus dem Hauptspeicher in den S_Puffer holen.
10. Anordnung nach einem der Ansprüche 2 bis 9, die weiterhin
Cache-Steuermittel umfaßt, die bestimmen, ob sich die angeforderten Daten im P_Puffer befinden,
und bei einem P Puffer-Cache-Volltreffer für S_Referenzdaten zuerst den Cache-Block
mit den Daten, die dem Volltreffer entsprechen, vom P_Puffer in den S_Puffer
übertragen und dann den Cache-Block im P_Puffer als frei kennzeichnen.
11. Verfahren zur Cache-Speicherung von Daten in einer Rechneranordnung,
die eine Verarbeitungseinheit zur Ausführung von Befehlen und einen Speicher zum
Speichern von Daten enthält, wobei das Verfahren folgende Schritte umfaßt:
Analysieren der Befehle von der Verarbeitungseinheit und Einteilen der in den
genannten Befehlen enthaltenden Datenreferenzen auf der Grundlage von vorhergesagten
stastistischen Assoziationen der Gebundenheiten der genannten Datenreferenzen in eine
Vielzahl von unterschiedlichen Gruppen;
Zuordnen jeder Datenreferenz zu einem aus der Vielzahl der Puffer auf der
Basis der vorhergesagten statistischen Assoziationen; und
Speichern und/oder Vorabrufen von Daten aus dem Speicher über die
zugeordneten Puffer mit Hilfe von verschiedenen Speicher- und/oder Vorabruf-Algorithmen für
jeden Puffer, wobei die genannten Algorithmen so gewählt werden, daß die Daten-
Cachespeicherung für Daten optimiert wird, die die statistischen Assoziationen der
Gebundenheit der dem zugehörigen Puffer zugeordneten Datengruppe besitzen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US64123691A | 1991-01-15 | 1991-01-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69224084D1 DE69224084D1 (de) | 1998-02-26 |
DE69224084T2 true DE69224084T2 (de) | 1998-07-23 |
Family
ID=24571535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69224084T Expired - Fee Related DE69224084T2 (de) | 1991-01-15 | 1992-01-06 | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür |
Country Status (4)
Country | Link |
---|---|
US (1) | US5822757A (de) |
EP (1) | EP0496439B1 (de) |
JP (1) | JP3425158B2 (de) |
DE (1) | DE69224084T2 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19943938B4 (de) * | 1998-10-26 | 2014-05-22 | Infineon Technologies Ag | Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06180669A (ja) * | 1992-12-14 | 1994-06-28 | Nec Niigata Ltd | キャッシュシステム |
US5848432A (en) | 1993-08-05 | 1998-12-08 | Hitachi, Ltd. | Data processor with variable types of cache memories |
JPH0895857A (ja) * | 1994-09-29 | 1996-04-12 | Shikoku Nippon Denki Software Kk | 入出力キャッシュ |
US5732242A (en) | 1995-03-24 | 1998-03-24 | Silicon Graphics, Inc. | Consistently specifying way destinations through prefetching hints |
DE19713178A1 (de) * | 1997-03-27 | 1998-10-01 | Siemens Ag | Schaltungsanordnung mit einem Prozessor und einem Datenspeicher |
US7103794B2 (en) * | 1998-06-08 | 2006-09-05 | Cacheflow, Inc. | Network object cache engine |
US6122708A (en) * | 1997-08-15 | 2000-09-19 | Hewlett-Packard Company | Data cache for use with streaming data |
US6393526B1 (en) | 1997-10-28 | 2002-05-21 | Cache Plan, Inc. | Shared cache parsing and pre-fetch |
US6151662A (en) * | 1997-12-02 | 2000-11-21 | Advanced Micro Devices, Inc. | Data transaction typing for improved caching and prefetching characteristics |
US6202129B1 (en) * | 1998-03-31 | 2001-03-13 | Intel Corporation | Shared cache structure for temporal and non-temporal information using indicative bits |
WO2000031642A1 (de) * | 1998-11-25 | 2000-06-02 | Fujitsu Siemens Computers Gmbh | Cache-speichereinrichtung |
US6378042B1 (en) * | 1999-08-11 | 2002-04-23 | Fast-Chip, Inc. | Caching associative memory |
WO2001038970A2 (en) * | 1999-11-22 | 2001-05-31 | Ericsson Inc | Buffer memories, methods and systems for buffering having seperate buffer memories for each of a plurality of tasks |
JP2001273137A (ja) * | 2000-03-28 | 2001-10-05 | Toshiba Corp | マイクロプロセッサ |
US6578111B1 (en) * | 2000-09-29 | 2003-06-10 | Sun Microsystems, Inc. | Cache memory system and method for managing streaming-data |
US6668307B1 (en) * | 2000-09-29 | 2003-12-23 | Sun Microsystems, Inc. | System and method for a software controlled cache |
US6598124B1 (en) * | 2000-09-29 | 2003-07-22 | Sun Microsystems, Inc. | System and method for identifying streaming-data |
JP4116413B2 (ja) * | 2002-12-11 | 2008-07-09 | 株式会社日立製作所 | プリフェッチアプライアンスサーバ |
US7284014B2 (en) | 2003-04-07 | 2007-10-16 | Hitachi, Ltd. | Pre-fetch computer system |
JPWO2006109421A1 (ja) * | 2005-04-08 | 2008-10-16 | 松下電器産業株式会社 | キャッシュメモリ |
GB2425030A (en) * | 2005-04-09 | 2006-10-11 | Tenomichi Ltd | Managed network render targets for routing graphical information |
JP2008257508A (ja) * | 2007-04-05 | 2008-10-23 | Nec Electronics Corp | キャッシュ制御方法およびキャッシュ装置並びにマイクロコンピュータ |
US8312219B2 (en) * | 2009-03-02 | 2012-11-13 | International Business Machines Corporation | Hybrid caching techniques and garbage collection using hybrid caching techniques |
CN102141905B (zh) * | 2010-01-29 | 2015-02-25 | 上海芯豪微电子有限公司 | 一种处理器体系结构 |
US10114750B2 (en) | 2012-01-23 | 2018-10-30 | Qualcomm Incorporated | Preventing the displacement of high temporal locality of reference data fill buffers |
US10552329B2 (en) * | 2014-12-23 | 2020-02-04 | Prophetstor Data Services, Inc. | SSD caching system for hybrid storage |
US9772824B2 (en) | 2015-03-25 | 2017-09-26 | International Business Machines Corporation | Program structure-based blocking |
KR20160148952A (ko) * | 2015-06-17 | 2016-12-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4437149A (en) * | 1980-11-17 | 1984-03-13 | International Business Machines Corporation | Cache memory architecture with decoding |
JPS5891570A (ja) * | 1981-11-27 | 1983-05-31 | Nec Corp | 情報処理システム |
US4594659A (en) * | 1982-10-13 | 1986-06-10 | Honeywell Information Systems Inc. | Method and apparatus for prefetching instructions for a central execution pipeline unit |
US4719568A (en) * | 1982-12-30 | 1988-01-12 | International Business Machines Corporation | Hierarchical memory system including separate cache memories for storing data and instructions |
US4701844A (en) * | 1984-03-30 | 1987-10-20 | Motorola Computer Systems, Inc. | Dual cache for independent prefetch and execution units |
CA1279731C (en) * | 1986-06-27 | 1991-01-29 | Ruby Bei-Loh Lee | Cache memory with variable fetch and replacement schemes |
US4928239A (en) * | 1986-06-27 | 1990-05-22 | Hewlett-Packard Company | Cache memory with variable fetch and replacement schemes |
US4853846A (en) * | 1986-07-29 | 1989-08-01 | Intel Corporation | Bus expander with logic for virtualizing single cache control into dual channels with separate directories and prefetch for different processors |
US4980823A (en) * | 1987-06-22 | 1990-12-25 | International Business Machines Corporation | Sequential prefetching with deconfirmation |
US4926323A (en) * | 1988-03-03 | 1990-05-15 | Advanced Micro Devices, Inc. | Streamlined instruction processor |
-
1992
- 1992-01-06 EP EP92200014A patent/EP0496439B1/de not_active Expired - Lifetime
- 1992-01-06 DE DE69224084T patent/DE69224084T2/de not_active Expired - Fee Related
- 1992-01-13 JP JP00383592A patent/JP3425158B2/ja not_active Expired - Fee Related
-
1995
- 1995-12-29 US US08/581,670 patent/US5822757A/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19943938B4 (de) * | 1998-10-26 | 2014-05-22 | Infineon Technologies Ag | Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus |
Also Published As
Publication number | Publication date |
---|---|
EP0496439B1 (de) | 1998-01-21 |
JP3425158B2 (ja) | 2003-07-07 |
EP0496439A2 (de) | 1992-07-29 |
EP0496439A3 (en) | 1993-07-21 |
DE69224084D1 (de) | 1998-02-26 |
JPH04303248A (ja) | 1992-10-27 |
US5822757A (en) | 1998-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69224084T2 (de) | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür | |
DE69132186T2 (de) | Cache-Speicherverwaltungsanordnung | |
DE69816044T2 (de) | Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken | |
DE69616465T2 (de) | Cachespeicher mit Datenvorausladung | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE69606648T2 (de) | Verfahren und vorrichtung zur ablauffolgen von multiprozessoren mit starker affinität | |
DE69715328T2 (de) | System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen | |
DE4227345C2 (de) | Verfahren zur Ablaufsteuerung von Prozessen in einem Mehrprozessor-Computersystem | |
DE69130086T2 (de) | Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien | |
DE69025302T2 (de) | Hochleistungsrasterpuffer- und -cachespeicheranordnung | |
DE19983793B4 (de) | System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher | |
DE19526007C2 (de) | Horizontal partitionierter Befehls-Cache-Speicher | |
DE68911398T2 (de) | Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem. | |
DE69518676T2 (de) | Cache-Speicheranordnung für einen Speicher | |
DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
DE69129872T2 (de) | Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher | |
DE69128741T2 (de) | Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür | |
DE69323790T2 (de) | Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem | |
DE19807872A1 (de) | Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl. | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE69131917T2 (de) | Cache-Speicher mit rekonfigurierbarer Blocklänge und Verfahren dafür | |
DE10393803T5 (de) | Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff | |
DE69322244T2 (de) | Verfahren und System zur Erhöhung der Systemspeichergleichzeitigkeit eines Multiprozessor-Rechnersystems | |
DE69027919T2 (de) | Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher | |
WO2007017373A1 (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 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: KONINKLIJKE PHILIPS ELECTRONICS N.V., EINDHOVEN, N |
|
8328 | Change in the person/name/address of the agent |
Representative=s name: VOLMER, G., DIPL.-ING., PAT.-ANW., 52066 AACHEN |
|
8339 | Ceased/non-payment of the annual fee |