DE60029270T2 - Dynamische Rekonfiguration des Cache-Speichers eines Mikrokontrollers - Google Patents

Dynamische Rekonfiguration des Cache-Speichers eines Mikrokontrollers Download PDF

Info

Publication number
DE60029270T2
DE60029270T2 DE60029270T DE60029270T DE60029270T2 DE 60029270 T2 DE60029270 T2 DE 60029270T2 DE 60029270 T DE60029270 T DE 60029270T DE 60029270 T DE60029270 T DE 60029270T DE 60029270 T2 DE60029270 T2 DE 60029270T2
Authority
DE
Germany
Prior art keywords
memory
cache
cache memory
address
configuration data
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 - Lifetime
Application number
DE60029270T
Other languages
English (en)
Other versions
DE60029270D1 (de
Inventor
Manuel O. San Jose Gautho
Muhammad San Diego Afsar
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies North America Corp
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 Infineon Technologies North America Corp filed Critical Infineon Technologies North America Corp
Application granted granted Critical
Publication of DE60029270D1 publication Critical patent/DE60029270D1/de
Publication of DE60029270T2 publication Critical patent/DE60029270T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory

Landscapes

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

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft Datenverarbeitungssysteme und insbesondere das dynamische Umkonfigurieren des Cache-Speichers von Mikrosteuerungen und dergleichen.
  • ALLGEMEINER STAND DER TECHNIK.
  • 1 zeigt ein herkömmliches Computersystem 100. Das Computersystem 100 enthält eine Zentralverarbeitungseinheit 102 oder CPU, die gemäß einem in einem assoziierten Programmspeicher 104 gespeicherten vorbestimmten Programm oder Anweisungssatz operiert. Die Anweisungsverarbeitung umfaßt in der Regel ein Abrufen und Decodieren der Anweisung, das Ausführen der Anweisung und das Speichern des Ausführungsergebnisses in dem durch die Anweisung identifizierten Ziel. Genauer gesagt wird während einer sogenannten Abrufphase eine Anweisung durch die CPU 102 mittels eines Anweisungsdatenbusses 106 aus dem Speicher 104 abgerufen. Die CPU 102 führt die abgerufene Anweisung dann aus.
  • 2 zeigt eine Organisation des in 1 gezeigten Speichers 104. Der Speicher 104 enthält einen Cache-Speicher 202 und einen implementierten Speicher 204. Der Cache-Speicher 202 ist in der Regel in einen Scratchpad-RAM (SPR) 206 und einen Anweisungs-Cache-Teil 208 aufgeteilt. Bei herkömmlichen Programmspeicherarchitekturen handelt es sich bei SPR 206 und dem Anweisungs-Cache-Teil 208 im allgemeinen insofern um eine Architektur des festen Typs, als die relativen Größen von SPR 206 und des Anweisungs-Cache 208 ungeachtet der durch die CPU 102 ausgeführten Anwendung konstant bleiben.
  • Anweisungen haben in der Regel sehr verschiedene Anfor derungen und für bestimmte überwiegt der Vorteil eines großen Anweisungs-Cache 208 die Notwendigkeit einer durch den SPR 206 bereitgestellten deterministischen Ausführungszeit. Leider teilen herkömmliche Speichersubsysteme dem Anweisungs-Cache 208 und dem SPR 206 ungeachtet der konkreten Anforderungen der durch die CPU 102 verarbeiteten Anwendung feste Teile des verfügbaren Speichers zu.
  • Dies führt in der Regel zu einer suboptimalen Leistung, da in bestimmten Fällen die Menge an Scratchpad-Speicher nicht ausreicht, um die Routinen zu versorgen, die in einer Anwendung enthalten sind, für die der Scratchpad-Speicher erforderlich ist.
  • In der Vergangenheit wurden mehrere Ansätze zur Lösung des oben erwähnten Problems durchgeführt. Zum Beispiel ist aus GB 2284911 eine flexible lock-down-Cache-Speicheranordnung bekannt, bei der eine beliebige erforderliche Anzahl von Speicherstellen in einem Cache-Speicher zur Verwendung als statischer Direktzugriffspeicher für kritische Programmelemente, wie zum Beispiel Interrupt-Routinen, die den schnellstmöglichen Zugriff erfordern, als „locked-down" markiert werden können.
  • Gemäß dieser Schrift ermöglicht das beschriebene System genau das Zuteilen der Aufteilung von Cache/SRAM gemäß den derzeitigen Systemanforderungen.
  • Ferner sind aus US 3,742,458 ein Verfahren und eine Vorrichtung zum flexiblen Schutz vor Überschreibung und Zerstörung des Inhalts gewählter Teile einer aus mehreren Speichereinheiten gebildeten Computerspeichereinrichtung bekannt.
  • Im Hinblick auf das Obige sollte erkennbar sein, daß die Möglichkeit einer dynamischen Konfigurierung des Speichers, der zum Speichern von durch eine Mikrosteuerung benutzten Anweisungen und Daten verwendet wird, wünschenswert ist.
  • KURZFASSUNG DER ERFINDUNG
  • Gemäß einem Aspekt der Erfindung wird ein Verfahren zum Ausführen eines Computerprogramms mit Konfigurationsdaten unter Verwendung einer CPU mit einem Hauptspeicher und einem assoziierten Cache-Speicher offengelegt. Bei einer Ausführungsform der Erfindung werden das Computerprogramm und die Konfigurationsdaten in den Hauptspeicher geladen. Unter Verwendung der Konfigurationsdaten wird ein Teil des Cache-Speichers als einer von mehreren Cache-Speicher-Typen konfiguriert, wobei jeder der mehreren Cache-Speicher-Typen mit einem entsprechenden Index assoziiert ist. Das Computerprogramm wird dann durch Abrufen von Anweisungen aus dem konfigurierten Cache-Speicher und dem Hauptspeicher ausgeführt.
  • Bei einer bevorzugten Ausführungsform ist der konfigurierte Teil des Cache-Speichers ein Speicher des Scratch-RAM-Typs.
  • In einem anderen Aspekt der Erfindung wird ein Verfahren zum dynamischen Konfigurieren eines Cache-Speichers offengelegt. Der Cache-Speicher enthält mehrere Cache-Linien, die aus mehreren zusammenhängenden Byte gebildet werden. Bei einer Ausführungsform ist ein erstes der zusammenhängenden Byte an einer Cache-Leitungs-Speicheradresse verankert, während die übrigen Bit der Cache-Leitungs-Speicheradresse ein Cache-Leitungs-Tag bilden, das als Referenz auf die gesamte Cache-Leitung verwendet wird. Außerdem enthält der Cache-Speicher einen programmierbaren Cache-Speicheradressen-Decoder, der so angeordnet ist, daß er einen Index bildet, der zur Auswahl einer bestimmten Zeile in dem Cache-Speicher verwendet wird. Der Index basiert auf einer gewählten Anzahl von Bit aus der Cache-Leitungs-Speicheradresse. Das Verfahren wird implementiert, indem mit einem bestimmten Cache-Speichertyp assoziierte Konfigurationsdaten dem programmierbaren Cache-Speicheradressendecoder zugeführt werden und der Cache-Speicheradressendecoder auf der Basis der Konfigurationsdaten programmiert wird, um einen Bereich von Indizes als den bestimmten Cache-Speichertyp zu erkennen.
  • In einem weiteren Aspekt der Erfindung wird ein Computersystem offengelegt. Das Computersystem enthält einen Hauptspeicher zum Speichern mehrerer Computerprogrammanweisungen mit assoziierten Konfigurationsdaten. Eine Zentralverarbeitungseinheit (CPU) zum Ausführen der Computerprogrammanweisungen und einen Cache-Speicher zum Speichern gewählter der Computerprogrammanweisungen zum Zugriff durch die CPU. Außerdem enthält das Computersystem Konfigurationsschaltkreise zum Konfigurieren eines Teils des Cache-Speichers als einen von mehreren Cache-Speichertypen gemäß den Konfigurationsdaten.
  • In einem weiteren Aspekt der Erfindung wird ein Computerprogrammprodukt offengelegt. Das Computerprogrammprodukt umfaßt ein computerlesbares Medium und in dem computerlesbaren Medium eingebettete Computerprogrammanweisungen. Außerdem umfaßt das Computerprogrammprodukt Konfigurationsdaten, die mit den Computerprogrammanweisungen assoziiert sind, die in das computerlesbare Medium eingebettet sind. Die Konfigurationsdaten werden zum Konfigurieren eines Teils eines Cache-Speichers als einer von mehreren Cache-Speichertypen zur Erleichterung der Ausführung der Computerprogrammanweisungen durch einen Computer verwendet.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • In den Figuren der beigefügten Zeichnungen, in denen gleiche Bezugszahlen auf ähnliche Elemente verweisen, wird die vorliegende Erfindung anhand von Beispielen, und nicht als Einschränkung, veranschaulicht. Es zeigen:
  • 1 ein herkömmliches Datenverarbeitungssystem;
  • 2 die Organisation des in 1 gezeigten Programmspeichers;
  • 3 ein Datenverarbeitungssystem gemäß einer Ausführungsform der Erfindung;
  • 4 eine CPU-Busschnittstelle gemäß einer Ausführungsform der Erfindung; und
  • 5 ein Flußdiagramm eines Prozesses zum dynamischen Umkonfigurieren eines Cache-Speichers gemäß einer Ausführungsform der Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • In der folgenden ausführlichen Beschreibung der vorliegenden Erfindung werden zahlreiche spezifische Ausführungsformen dargelegt, um ein umfassendes Verständnis der Erfindung bereitzustellen. Für Fachleute ist jedoch erkennbar, daß die vorliegende Erfindung ohne diese spezifischen Einzelheiten oder durch Verwendung alternativer Elemente oder Prozesse ausgeübt werden kann. In anderen Fällen wurden wohlbekannte Prozesse, Prozeduren, Komponenten und Schaltungen nicht im Detail beschrieben, um die Aspekte der vorliegenden Erfindung so nicht unnötig zu verdecken.
  • Unter anfänglicher Bezugnahme auf 3 ist eine Darstellung eines Datenverarbeitungssystems 300 gemäß einer Ausführungsform der Erfindung gezeigt. Das Datenverarbeitungssystem 300 enthält einen Anweisungsspeicher 302, der mittels eines Anweisungsbusses 306 mit einer Verarbeitungseinheit 304 verbunden ist. Bei der beschriebenen Ausführungsform ist der Anweisungsbus 306 so angeordnet, daß er Programmdaten aus dem Anweisungsspeicher 302 und entsprechende von der Verarbeitungseinheit 304 bereitgestellte Anweisungsadressen führt. Es sollte beachtet werden, daß für die folgende Besprechung die Verarbeitungseinheit 304 eine eigene Zentralverarbeitungseinheit oder CPU ist, die in den meisten Datenverarbeitungssystemen anzutreffen ist. Es werden jedoch auch andere Arten von Verarbeitungseinheiten mit der Fähigkeit zur Ausführung ausführbarer Anweisungen in Betracht gezogen. Zu solchen Verarbeitungseinheiten anderer Art gehören umkonfigurierbare Einrichtungen, wie zum Beispiel programmierbare Logikbausteine oder PLDs, am Einsatzort programmierbare Logikbausteine oder FPLD, die zum Beispiel in umkonfigurierbaren Computersystemen anzutreffen sind.
  • Bei der beschriebenen Ausführungsform ist der Anweisungsspeicher 302 so angeordnet, daß er ausführbare Programmanweisungen speichert, die mit einer Anwendung oder einem Computerprogramm assoziiert sind, die abgerufen und nachfolgend durch die CPU 304 ausgeführt werden. Außerdem enthält der Anweisungsspeicher 302 einen konfigurierbaren Cache-Speicher 308. Der konfigurierbare Cache-Speicher 308 ist so angeordnet, daß er von der CPU 304 bereitgestellte Konfigurationsdaten verwendet, um bestimmte seiner konstituierenden Speicherstellen, die zum Speichern gewählter der ausführbaren Anweisungen, die das von der CPU 304 ausgeführte Programm bilden, verwendet werden. Bei einer Implementierung ist ein Speicher des Typs Scratchpad-RAM (SPR) erwünscht, wenn die Anweisungen gespeichert werden, die eine deterministische Abruf zeit erfordern. Anders ausgedrückt muß während der gesamten Ausführung des Programms die vergangene Zeit zwischen dem Signalisieren durch die CPU 304, daß eine Anweisung aus dem Speicher 308 abgerufen werden soll, und dem Zeitpunkt, wenn sie der CPU 304 zur Verfügung steht, konstant sein. Da diese Konstantheit der Speicherzugriffszeit in einem Cache-Speicher herkömmlicher Architektur mit dynamischer Zuteilung von Cache-Linien nicht garantiert werden kann, ist die statische Zuteilung eines Bereichs von Speicheradressen in dem Speicher 308 als Speicher des Typs SPR ein sehr wünschenswertes Attribut der Erfindung. Noch mehr gilt dies für die Fähigkeit des dynamischen Umkonfigurierens des Speichers 308 auf der Basis der Anforderungen des konkreten durch die CPU 304 ausgeführten Programms.
  • Bei einer Ausführungsform der Erfindung verbindet ein Systembus 310 die CPU 304 mit einer in dem Speicher 308 enthaltenen Systembusschnittstelle 312. Die Systembusschnittstelle 312 ist außerdem mit einem Cache-Speicherarray 314 verbunden, das auch in dem konfigurierbaren Cache-Speicher 308 enthalten ist. Bei einer Ausführungsform verwendet die Systembusschnittstelle 312 die Konfigurationsdaten zum Konfigurieren des Cache-Speicherarrays 314 zu entsprechenden Cache-Speichertypen. Der Anweisungsspeicher 302 und der konfigurierbare Cache-Speicher 308 werden mittels einer Programmspeicher-/CPU-Schnittstelle 316 mit dem Anweisungsbus 306 verbunden.
  • Bei der beschriebenen Ausführungsform ist die CPU 304 auch über den Systembus 310 mit einem Datenspeicher 320 verbunden. Der Systembus 310 ist seinerseits mit einer in dem Datenspeicher 320 enthaltenen Systembusschnittstelle 322 verbunden. Bei der beschriebenen Ausfüh rungsform ist ein Datenbus 324, der die CPU 304 mit einer in dem Datenspeicher 320 enthaltenen Datenspeicher-/CPU-Schnittstelle 326 verbindet, so ausgelegt, daß er Daten aus der CPU 304 führt.
  • Bei einer Ausführungsform der Erfindung speichert das konfigurierbare Cache-Speicherarray 314 Anweisungen aus dem Anweisungsspeicher 302 in sogenannten Cache-Linien. Eine Cache-Linie wird aus mehreren zusammenhängenden Byte gebildet, die in der Regel so ausgerichtet sind, daß das erste der zusammenhängenden Byte an einer Adresse verankert ist, von der eine bestimmte Anzahl von Bit niedriger Ordnung auf null gesetzt ist. Diese bestimmte Anzahl von Bit niedriger Ordnung reicht aus, um jedes Byte in der Cache-Linie eindeutig zu identifizieren. Die übrigen Bit der Adresse bilden ein Tag, das als Referenz auf die gesamte Cache-Linie verwendet wird.
  • Cache-Speicher sind typischerweise als eine assoziative Struktur (auch als „mengenassoziativ" bezeichnet) organisiert. Bei einer assoziativen Struktur wird auf die Cache-Linien als ein zweidimensionales Array mit Zeilen und Spalten zugegriffen. Wenn ein Cache-Speicher nach an einer Adresse verankerten Byte durchsucht wird, dient eine Anzahl von Bit aus der Adresse als Index in den Cache. Der Index wählt eine bestimmte Zeile in dem zweidimensionalen Array und deshalb wird die Anzahl der für den Index erforderlichen Adressenbit durch die Anzahl der in dem Cache konfigurierten Zeilen bestimmt. Die Handlung des Auswählens einer Zeile über einen Index wird kurz als Indizierung bezeichnet. Die Adressen, die mit Byte assoziiert sind, die in mehreren Cache-Linien einer Zeile gespeichert sind, werden untersucht, um zu bestimmen, ob etwaige der in der Zeile gespeicherten Adressen mit der angeforderten Adresse übereinstimmen. Wenn eine Übereinstimmung gefunden wird, wird der Zugriff kurz als Treffer bezeichnet und der Cache liefert die assoziierten Byte. Wenn jedoch eine Verfehlung erkannt wird, werden die Byte aus dem Anweisungsspeicher 302 in den Cache-Speicher 308 transferiert. Es sollte beachtet werden, daß die Byte auch aus einem Systembus kommen könnten, wenn ein cachebarer Speicher an den Bus angekoppelt ist (siehe 3).
  • Während des Betriebs werden Computerprogrammanweisungen und assoziierte Konfigurationsdaten in dem Anweisungsspeicher 302 gespeichert. Vor der Ausführung der Computerprogrammanweisungen werden die Konfigurationsdaten durch die CPU 304 abgerufen und mittels des CPU-Busses 310 in die CPU-Busschnittstelle 312 überführt. Die CPU-Busschnittstelle 312 konfiguriert mit den Konfigurationsdaten das Cache-Speicherarray 314 zu entsprechenden Cache-Speichertypen. Bei einer Ausführungsform der Erfindung umfaßt das Konfigurieren das Zuteilen bestimmter des Cache-Speicheradressenraums, der zum Beispiel durch einen Bereich von Cache-Speicheradressen repräsentiert wird, zu bestimmten Cache-Speichertypen. Beispielsweise würde ein Bereich von Cache-Speicheradressen von {0100} bis {0400} eine Region des SPR-Cache-Speichertyps repräsentieren, worin die Computerprogrammanweisungen, die eine deterministische Abrufzeit erfordern, gespeichert werden würden. Auf diese Weise ist mit jedem Cache-Speichertyp ein entsprechender Index assoziiert, mit dem die Zeilen gewählt werden, die sich in der entsprechenden Cache-Speichertypregion befinden.
  • Nachfolgende Adressenanforderungen zum Beispiel von der CPU 304 in Form einer CPU-Speicheranforderung werden decodiert und mit dem zugeteilten Bereich von Speicheradressen verglichen, der das konfigurierte Cache-Speicherarray 314 abgrenzt. Wenn sich zeigt, daß sich die CPU-Speicheranforderung zum Beispiel in diesem Be reich befindet, wird die entsprechende Speicherschnittstelle in dem Cache-Speichertyp der anfordernden Einrichtung zugänglich gemacht.
  • Durch Verwendung des konfigurierbaren Cache-Speicherarrays 314 in Verbindung mit den Konfigurationsdaten können Anweisungen, die zum Beispiel eine deterministische Abruf- und Ausführungszeit erfordern, zum Beispiel in einem dynamisch zugeteilten Speicherteil des SPR-Typs des Cache-Speicherarrays 314 gespeichert werden. Wenn beispielsweise das Cache-Speicherarray 314 eine Gesamtspeicherkapazität von 2K (2048) Byte aufweist, die in entsprechenden Spalten und Zeilen angeordnet sind, können 1K Byte als Speicher des SPR-Typs wie durch die CPU 304 auf der Basis der verarbeiteten Anwendung bestimmt aufgeteilt werden. In diesem Fall wird jede Anweisung, die in der SPR-Region (wie durch die zugeteilten Speicheradressen, die mit der SPR-Speicherregion assoziiert sind, bestimmt) des Cache-Speicherarrays 314 eine deterministische Abrufzeit aufweisen. Wenn dagegen das Cache-Speicherarray 314 ohne eine SPR-Speicherregion konfiguriert ist, werden die gesamten 2K Byte als ein herkömmlicher Cache-Speicher behandelt. Umgekehrt kann das Cache-Speicherarray 314 die Konfigurationsdaten benutzen, verwendet können werden, um das gesamte Cache-Speicherarray 314 (2K Byte) oder einen beliebigen Teil davon als SPR-Speicher aufzuteilen.
  • Nunmehr mit Bezug auf 4 ist eine CPU-Busschnittstelle 400 gemäß einer Ausführungsform der Erfindung gezeigt. Es sollte beachtet werden, daß die CPU-Busschnittstelle 400 eine Ausführungsform der in 3 gezeigten CPU-Busschnittstelle 312 ist. Bei einer Ausführungsform der Erfindung koppelt die CPU-Busschnittstelle 400 den CPU-Bus 310 an das Cache-Speicherarray 314. Während der anfänglichen Konfigura tion des Cache-Speicherarrays 314 führt der CPU-Bus 310 einem Konfigurationsdatenregister 402 Konfigurationsdaten zu. Die Konfigurationsdaten werden dann einem programmierbaren Cache-Adressendecoder 404 zur Verfügung gestellt. Der programmierbare Cache-Adressendecoder 404 ist seinerseits so angeordnet, daß er auf der Basis einer durch die CPU 304 erzeugten CPU-Adresse und der Konfigurationsdaten ein Cache-Speicheradressenzugriffsignal bereitstellt. Bei einer Ausführungsform der Erfindung enthält die CPU-Busschnittstelle 400 einen CPU-Adressensegmentdecoder 406, der mit dem CPU-Bus 310 und dem programmierbaren Cache-Adressendecoder 404 verbunden ist. Außerdem ist der CPU-Adressensegmentdecoder 402 mit einem Cache-Speicherbereichskomparator 408 verbunden. Bei der beschriebenen Ausführungsform dient der Cache-Speicherbereichskomparator 408 zum Bestimmen, ob eine durch die CPU-Schnittstelle 400 empfangene Speicheradressenanforderung sich in der entsprechenden Region des Speicherraums des Cache-Speicherarrays 314 befindet, der einem bestimmten Cache-Speichertyp zugeteilt ist. Falls die empfangenen Speicheradressenanforderungen in dem entsprechenden Cache-Speicherplatz liegen, führt der Speicherbereichskomparator 408 ein Gültige-Speicher-Decodierung-Signal mittels der Eingangsleitung 410 an den programmierbaren Cache-Speicherdecoder 404. Falls die empfangene Speicheradressenanforderung jedoch nicht in dem Bereich von Cache-Speicheradressen liegt, der dem bestimmten Cache-Speichertyp zugeteilt ist, wird bei einer Ausführungsform eine Fehlernachricht erzeugt.
  • Es sollte beachtet werden, daß bei einer Ausführungsform der programmierbare Cache-Speicheradressendecoder 404 einen mit dem CPU-Bus 310 verbundenen Selektor 412 enthält, der so angeordnet ist, daß er die Speicheradressenanforderung empfängt und einen dem bestimmten Cache-Speichertyp entsprechenden geeigneten Index erzeugt. Bei der beschriebenen Ausführungsform verwendet der Selektor 412 zur Erzeugung des Index Konfigurationsdaten, die in dem Konfigurationsdatenregister 402 gespeichert sind, und das Gültiger-Speicherbereich-Signal. Wenn beispielsweise ein gewählter Bereich von Cache-Speicheradressen des Cache-Speicherarrays 314 dem Cache-Speicherarray 314 des bestimmten Cache-Speichertyps zugeteilt wurden, stellt der Selektor 314 den geeigneten Index für diese darin gespeicherten Anweisungen bereit.
  • Während einer Abrufoperation übermittelt der CPU-Bus 310 eine durch die CPU 304 erzeugte Speicheranforderung zu der CPU-Busschnittstelle 400. Die CPU-Busschnittstelle 400 bestimmt mit den Konfigurationsdaten, die mit der von der empfangenen CPU-Speicheranforderung angeforderten Speicherstelle assoziiert sind, ob die der empfangenen CPU-Speicheranforderung entsprechende Speicherstelle sich in dem Bereich von Speicheradressen befindet, der für bestimmten Cache-Speichertyp zugeteilt ist. Wenn es sich zeigt, daß sie sich in dem richtigen Bereich von Speicheradressen befindet, erzeugt der programmierbare Cache-Speicheradressendecoder 404 ein geeignetes Cache-Speicheradressenanforderungssignal.
  • Unter Verwendung des obigen Beispiels des 4-GB-Speichers ist die entsprechende CPU-Speicheranforderung ein 32-Bit-Datenwort. In diesem Beispiel würde man mit den vier höchstwertigen Bit (MSB) anzeigen, ob sich die assoziierte CPU-Speicheranforderung in dem geeigneten einen von sechzehn Speichersegmenten befindet, die dem SPR-Segment entsprechen. Wenn die Speicherbereichskomparatoreinheit 408 bestimmt, daß sich die CPU-Speicheranforderung nicht in dem Bereich von einem SPR-Speicher zugeteilten Speicheradressen befindet, dann wird zum Beispiel ein entsprechendes Fehlersignal er zeugt. In diesem Fall kann die CPU-Busschnittstelle 400 die Steuerung für weitere Anweisungen an die CPU-304 zurückgeben oder die Ausführung kann zum Beispiel voranschreiten, indem die erforderliche Anweisung aus dem entsprechenden Speichersegment abgerufen wird, das durch das CPU-Speicheranforderungssegment angegeben wird.
  • Wenn der Speicherbereichskomparator 408 bestimmt, daß sich die empfangene CPU-Speicheranforderung in dem entsprechenden, für den SPR-Speicher zugeteilten Speicherplatz befindet, wird ein Gültige-Speicheradressen-Decodierung-Signal erzeugt.
  • Man nehme nur für dieses Beispiel an, daß der Cache-Speicher 308 ein bidirektionaler mengenassoziativer Cache-Speicher mit 1K Byte Speicher in einer Anordnung als 32 Cache-Linien von 256 Bit pro Cache-Linie ist, wobei jede Cache-Linie 4 Datenwörter von jeweils 64 Bit enthält. Bei dieser Anordnung wird die Hälfte des Cache-Speichers (d.h. 16 Cache-Linien) für Speicher des SPR-Typs zugeteilt. In diesem Fall enthält das zum Zugriff auf eine bestimmte Speicherstelle in dem Cache-Speicherarray 314 verwendete Cache-Speicheradressensignal mindestens einen 4-Bit-Index, mit dem auf eine bestimmte Cache-Linie gezeigt wird. Das Cache-Speicheradressensignal enthält außerdem ein Zugriffssbit, mit dem der Teil des Cache-Speichers 308 (d.h. entweder des Speichers des SPR-Typs oder des herkömmlichen Cache-Speichers) identifiziert wird, in dem die indizierte Cache-Linie verankert ist.
  • Beispielsweise wäre für den in 32-Cache-Linien aufgeteilten 1K-Cache-Speicher die entsprechende Cache-Speicheradresse ein 5-Bit-Datenwort mit den {MSB}ten als Zugangsbit und den {MSB-1 ... MSB-4}-ten Bit als Cache-Linien-Index. In diesem Fall würde der programmierbare Cache-Speicherdecoder 404 durch die Konfigurationsdaten so konfiguriert, daß er ein MSB = 1 zum Beispiel erkennt als anzeigend, daß die mit den übrigen {MSB-1 ... MSB-4} Bit assoziierte Cache-Linie in der herkömmlichen Cache-Speicherregion des Cache-Speichers 308 verankert ist. Alternativ würde ein MSB = 0 anzeigen, daß die Cache-Linie in der Speicherregion des SPR-Typs des Cache-Speichers 314 verankert wäre.
  • Anders ausgedrückt ist mit einem bidirektionalen mengenassoziativen Cache-System von 1K Byte, wobei jede Cache-Linie aus 256 Bit besteht, das Cache-System als 256 (Bit/Linie) × 32 (Linien) für insgesamt 1K Byte angeordnet. Diese 32 Linien werden gleichmäßig in zwei Mengen (jeweils 16 Linien) aufgeteilt. Um eine Cache-Linie zu adressieren, sind 4 Bit erforderlich, um eine bestimmte Linie in einer Menge zu adressieren, und ein zusätzliches Bit, um zwischen Mengen zu wählen.
  • 5 ist ein möglicher Prozeß 500 zur Ausführung eines Programms unter Verwendung eines dynamisch umkonfigurierbaren Cache-Speichers gemäß einer Ausführungsform der Erfindung. Der Prozeß 500 wird mit Bezug auf 3 und 4 besprochen. Die Computerprogrammanweisungen und assoziierten Konfigurationsdaten, die zum Konfigurieren des Cache-Speichers verwendet werden, werden in einem Programmspeicher (502) gespeichert. Die Konfigurationsdaten werden dann dem konfigurierbaren Cache-Speicher (504) zugeführt. Der konfigurierbare Cache-Speicher designiert dann gewählte Bereiche von Speicherstellen als bestimmte Cache-Speichertypen auf der Basis der Konfigurationsdaten (506). Als nächstes wird eine der Speicherstelle, an der die abzurufende Anweisung gespeichert ist, entsprechende Speicheranforderung als Fortsetzung der Programmausführung (508) erzeugt. Als nächstes wird bestimmt, ob sich die Speicheranforderung in dem Speicherplatz befindet, der durch die Konfigura tionsdaten als sich in dem bestimmten Cache-Speichertyp (510) befindend zugeteilt wird. Wenn bestimmt wird, daß sich die empfangene CPU-Speicheranforderung nicht in dem bestimmten Speicherplatz befindet, wird ein Fehlersignal erzeugt (512). Andernfalls wird auf der Basis der empfangenen CPU-Speicheranforderung und der Konfigurationsdaten die entsprechende Cache-Speicheradresse erzeugt (514) und zu einem programmierbaren Adressendecoder geleitet. Der programmierbare Adressendecoder greift dann auf die entsprechende Speicherstelle in dem konfigurierbaren Cache-Speicher (516) zu, in der die abzurufende Anweisung gespeichert ist.
  • Obwohl nur einige wenige Ausführungsformen der vorliegenden Erfindung im Detail beschrieben wurden, versteht sich, daß die vorliegende Erfindung in vielen anderen spezifischen Formen realisiert werden kann, ohne von dem beanspruchten Schutzumfang der Erfindung abzuweichen. Insbesondere können, obwohl die Erfindung hauptsächlich im Kontext von Computersystemen mit Prozessor- und Speichersubsystemen beschrieben würde, die Vorteile, darunter verbesserte CPU-Leistung aufgrund der Möglichkeit der dynamischen Umkonfigurierung des Anweisungs-Cache, auf ein beliebiges System angewandt werden, bei dem dynamisch konfigurierbarer Speicher wünschenswert ist. Zu solchen Systemen gehören umkonfigurierbare Datenverarbeitungssysteme, die keine CPU aufweisen, aber konfigurierbare Logikbausteine (wie zum Beispiel PLDs), die als On-the-fly-Steuerungen wirken.
  • Zusätzlich können die Eigenschaften der Erfindung gemäß den Bedürfnissen eines bestimmten Systems variiert werden. Deshalb sollen die vorliegenden Beispiele lediglich als veranschaulichend und nicht als einschränkend betrachtet werden und die Erfindung soll nicht auf die hier angegebenen Details beschränkt werden, sondern kann innerhalb des Schutzumfangs der angefügten Ansprü che modifiziert werden.

Claims (7)

  1. Verfahren zum Ausführen eines Computerprogramms unter Verwendung einer CPU (304) mit einem Hauptspeicher und einem diesem zugeordneten Cache-Speicher, wobei mit dem Computerprogramm Konfigurationsdaten assoziiert sind, mit den folgenden Schritten: Laden des Computerprogramms in den Hauptspeicher (302); Konfigurieren eines Teils des Cache-Speichers (314) als einen von mehreren Cache-Speichertypen gemäß den mit dem Computerprogramm assoziierten Konfigurationsdaten; und Abrufen von Anweisungen aus dem Cache-Speicher (314) und dem Hauptspeicher zur Ausführung des Computerprogramms, dadurch gekennzeichnet, daß jeder der mehreren Cache-Speichertypen mit einem entsprechenden Index assoziiert ist.
  2. Verfahren nach Anspruch 1, wobei das Konfigurieren die folgenden Schritte umfaßt: Programmieren eines programmierbaren Cache-Speicheradressendecoders (404), der mit dem Cache-Speicher (314) verbunden ist, auf der Basis der Konfigurationsdaten, um einen Bereich von Speicheradressen in dem Cache-Speicher (314) als einen bestimmten Cache-Speichertyp zu erkennen, und Speichern der Konfigurationsdaten in einem Konfigurationsregister (402), das mit dem programmierbaren Cache-Speicheradressendecoder (404) verbunden ist.
  3. Verfahren nach Anspruch 2, wobei das Abrufen die folgenden Schritte umfaßt: Decodieren eines Segments einer empfangenen Speicheradressenanforderung durch einen Adressensegmentdecoder (406), wobei die Speicheradressenanforderung die Speicheradresse in dem Cache-Speicher (314) identifiziert, die mit der abzurufenden Anweisung assoziiert ist; und Speichern von mit der empfangenen Speicheradressenanforderung assoziierten Konfigurationsdaten in einem Konfigurationsregister (402), das mit dem programmierbaren Cache-Speicheradressendecoder (404) verbunden ist; und Bestimmen, ob sich die empfangene Speicheradressenanforderung in dem Bereich von Speicherstellen befindet, der als der bestimmte Cache-Speichertyp erkannt wird, durch einen Speicherbereichskomparator (408), der mit dem Konfigurationsregister (402) und dem Segmentdecoder (406) verbunden ist.
  4. Verfahren nach Anspruch 3, wobei das Bestimmen auf den Konfigurationsdaten und dem decodierten Speicheradressenanforderungssegment basiert.
  5. Verfahren nach Anspruch 4, wobei das Bestimmen ferner die folgenden Schritte umfaßt: Erzeugen eines Gültige-Decodierung-Signals durch den Speicherbereichskomparator (408), wenn bestimmt wird, daß sich die empfangene Adresse in dem Bereich von Speicheradressen befindet, der als der bestimmte Cache-Speichertyp erkannt wird, wobei der programmierbare Decoder (404) das Gültige-Decodierung-Signal beim Decodieren der empfangenen Speicheradressenanforderung benutzt.
  6. Verfahren nach Anspruch 5, wobei das Abrufen die folgenden Schritte umfaßt: Decodieren der empfangenen Speicheradressenanforderung durch den programmierbaren Cache-Speicheradressendecoder (404) unter Verwendung des Gültige-Decodierung-Signals und der Konfigurationsdaten, um eine entsprechende Cache-Speicheradressenanforderung zu bilden; und Zugreifen auf die der decodierten empfangenen Speicheradressenanforderung entsprechenden Stelle in dem Cache-Speicher (314), an der die abzurufende Anweisung gespeichert ist.
  7. Verfahren nach Anspruch 6, wobei der bestimmte Cache-Speichertyp ein Scratchpad-RAM ist.
DE60029270T 1999-04-16 2000-03-31 Dynamische Rekonfiguration des Cache-Speichers eines Mikrokontrollers Expired - Lifetime DE60029270T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US29327899A 1999-04-16 1999-04-16
US293278 1999-04-16

Publications (2)

Publication Number Publication Date
DE60029270D1 DE60029270D1 (de) 2006-08-24
DE60029270T2 true DE60029270T2 (de) 2007-07-05

Family

ID=23128439

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60029270T Expired - Lifetime DE60029270T2 (de) 1999-04-16 2000-03-31 Dynamische Rekonfiguration des Cache-Speichers eines Mikrokontrollers

Country Status (2)

Country Link
EP (1) EP1045307B1 (de)
DE (1) DE60029270T2 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7174429B2 (en) * 2001-12-28 2007-02-06 Intel Corporation Method for extending the local memory address space of a processor
JP2006011705A (ja) * 2004-06-24 2006-01-12 Fujitsu Ltd プロセッサおよび半導体装置
JP4451733B2 (ja) 2004-06-30 2010-04-14 富士通マイクロエレクトロニクス株式会社 半導体装置
DE102009046518A1 (de) * 2009-11-09 2011-05-12 Robert Bosch Gmbh Speicheranordnung
CN102073596B (zh) * 2011-01-14 2012-07-25 东南大学 针对指令的可重构片上统一存储器管理方法
CN103246542B (zh) * 2012-02-01 2017-11-14 中兴通讯股份有限公司 智能缓存及智能终端
WO2014126555A1 (en) * 2013-02-13 2014-08-21 Violin Memory, Inc. Mapping engine for a storage device
US10866900B2 (en) 2017-10-17 2020-12-15 Samsung Electronics Co., Ltd. ISA extension for high-bandwidth memory

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4930578B1 (de) * 1970-09-30 1974-08-14
JPS58102381A (ja) * 1981-12-15 1983-06-17 Nec Corp バツフアメモリ
GB2284911A (en) * 1993-12-16 1995-06-21 Plessey Semiconductors Ltd Flexible lock-down cache.

Also Published As

Publication number Publication date
EP1045307A3 (de) 2000-11-08
EP1045307B1 (de) 2006-07-12
EP1045307A2 (de) 2000-10-18
DE60029270D1 (de) 2006-08-24

Similar Documents

Publication Publication Date Title
DE2459006C2 (de) Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage
DE69225622T2 (de) Adressenübersetzungspufferspeicher mit per Eingabe veränderlicher Seitengrösse
DE69322683T2 (de) Verfahren und Vorrichtung zur Durchführung eines pseudo-LRU Cachespeicherersetzungsschemas mit einer Verriegelungsfunktion
DE3688192T2 (de) Seitenorganisierter cachespeicher mit virtueller adressierung.
DE4410060B4 (de) Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
DE69317729T2 (de) Cache-Etikettenspeicher
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE2226382A1 (de) Datenverarbeitungsanlage
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE69229667T2 (de) Simulierte cachespeicher-assoziativität
DE3102150A1 (de) "schaltungsanordnung mit einem cachespeicher fuer eine zentraleinheit einer datenverarbeitungsanlage
DE102007006190A1 (de) Techniken zur Verwendung von Speicher-Attributen
DE68928187T2 (de) Inhaltadressierte Speicherzellenanordnung
DE69131917T2 (de) Cache-Speicher mit rekonfigurierbarer Blocklänge und Verfahren dafür
DE68929080T2 (de) Anordnung zum Speichern von Informationen für einen Datenanbieterprozessor
DE68928333T2 (de) Pufferspeicher, der zur Speicherung von Befehls- und Datenblöcken auf verschiedene Blockgrössen geeignet ist
DE112014000311T5 (de) Absichern der Inhalte einer Speichereinheit
DE2758829A1 (de) Multiprozessor-datenverarbeitungssystem
DE112017007323T5 (de) Cache-speicher und verfahren zur steuerung desselben
DE60029270T2 (de) Dynamische Rekonfiguration des Cache-Speichers eines Mikrokontrollers
DE69027919T2 (de) Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher
DE69130626T2 (de) Verfahren zur Verwaltung einer Cache-Speicheranordnung
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache
DE69623691T2 (de) Ein Gerät und Verfahren, das ein für Cache-Kollisionen weniger anfälliges Cache-Indizierungsverfahren vorsieht

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1045307

Country of ref document: EP

Representative=s name: WESTPHAL, MUSSGNUG & PARTNER, DE

R081 Change of applicant/patentee

Ref document number: 1045307

Country of ref document: EP

Owner name: INFINEON TECHNOLOGIES AG, DE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES NORTH AMERICA CORP., SAN JOSE, US

Effective date: 20121128

R082 Change of representative

Ref document number: 1045307

Country of ref document: EP

Representative=s name: WESTPHAL, MUSSGNUG & PARTNER, DE

Effective date: 20121128