-
Ausführungsbeispiele betreffen allgemein Chips und ein Verfahren zum Ansteuern von Speicherbänken innerhalb eines Microprozessors (MPU) oder Microcontrollers (MCU).
-
Bei manchen Speichertypen einer MPU oder MCU , wie z.B. embedded Flash-Speichern, oder auch sogenannte embedded"emerging memories" wie z.B. Phase Change RAM (PCRAM)-Speicher oder Resistive RAM (RRAM)-Speicher, sind zum Ändern des Speicherinhalts und Testoperationen Steuersequenzen, d.h. Sequenzen von Operationen erforderlich. Unter embedded oder eingebettet wird verstanden, dass diese mit weiteren Recheneinheit in einem Chip implementiert sind, im Gegensatz zu „Stand-alone Speicher“, bei denen die Aufgabe des Chips nur ist, Speicherplatz bereit zu stellen.
-
Aufgrund der aufwändigen Steuersequenzen sind für Speicher solcher Speichertypen typischerweise Speichercontroller vorgesehen, die Speicherzugriffe und Testoperationen kapseln, sodass der zugreifenden Einheit (z.B. einer CPU) und entsprechend dem Benutzer (z.B. Programmierer) eine einfache Schnittstelle zur Verfügung steht.
-
Nun können mehrere Einheiten vorhanden sein, die auf den Speicher zugreifen, z.B. Prozessorkerne oder Anwendungen (Programme), und der Speicher kann in mehrere unabhängige Speicherbänke aufgeteilt sein, sodass es grundsätzlich möglich wäre, dass zwei Einheiten gleichzeitig auf zwei der Speicherbänke zugreifen (d.h. z.B. einen Schreibzugriff durchführen). Allerdings müssen die Zugriffe wie oben erläutert über einen Speichercontroller erfolgen.
-
Es sind Herangehensweisen wünschenswert, die es ermöglichen, in so einem Szenario effizient Speicherzugriffe durchzuführen. Beispielsweise sollten zwei unterschiedliche Programme in der Lage sein, unabhängig voneinander gleichzeitig Speicherzugriffe auf ihre zugeordneten Speicherbänke durchzuführen. Dabei sollten keine Abhängigkeiten entstehen (sogenannte „Freedom from Interference“). Dies ist eine wichtige Anforderung aus der funktionalen Sicherheit („Safety“) und auch aus der allgemeinen Sicherheit gegen äußere Attacken, z.B. Denial-of-Service („Security“).
-
Gemäß einer Ausführungsform wird ein Verfahren zum dynamischen Ansteuern von einer Mehrzahl von Speicherbänken durch eine Mehrzahl von Speichercontrollern in einem Chip vorgestellt, wobei jeder Speicherbank unabhängig von den anderen Speicherbänken les- und schreibbar ist und jede Speicherbank jeweils von mehrern Speichercontrollern ansteuerbar ist. Das Verfahren enthält den Schritt des Empfangens einer Information über den Betriebszustands des Chips. Zudem enthält es den Schritt des dynamischen Erzeugens von Zuordnungen von Speichercontrollern zu Speicherbänken in Abhängigkeit des Betriebszustands des Chips und den Schritt des Ansteuerns der Speicherbänke durch die Speichercontroller entsprechend der Zuordnungen.
-
Gemäß einer weiteren Ausführungsform wird ein entsprechender Chip bereitgestellt.
-
Die Figuren geben nicht die tatsächlichen Größenverhältnisse wieder, sondern sollen dazu dienen, die Prinzipien der verschiedenen Ausführungsbeispiele zu illustrieren. Im Folgenden werden verschiedene Ausführungsbeispiele mit Bezug auf die folgenden Figuren beschrieben.
- 1 zeigt einen Chip gemäß einem Ausführungsbeispiel.
- 2 zeigt eine Architektur, bei der der Zugriff auf Speicherbänke durch ein Speicherzugriffssystem über einen einzigen Speichercontroller erfolgt, der den Zugriff auf alle Speicherbänke steuert.
- 3 zeigt eine Architektur, bei der mehrere Speichercontroller vorgesehen sind, um auf Speicherbänke zuzugreifen.
- 4 zeigt einen Chip gemäß einer Ausführungsform.
- 5 veranschaulicht die Verschiebung einer Speicherbank von einer Untergruppe, die einem Speichercontroller zugeordnet ist, in eine Untergruppe, die einem anderen Speichercontroller zugeordnet ist.
- 6 veranschaulicht die Verschiebung aller Speicherbänke von einer Untergruppe, die einem Speichercontroller zugeordnet ist, in eine Untergruppe, die einem anderen Speichercontroller zugeordnet ist.
- 7 zeigt einen Chip gemäß einer Ausführungsform.
- 8 zeigt ein Ablaufdiagramm, das ein Verfahren zum Durchführen von Speicherzugriffen auf einen Speicher mit mehreren Speicherbänken darstellt.
- 9 zeigt einen Chip gemäß einer Ausführungsform in einem Startzustand nach Reset.
- 10 zeigt einen Chip nach Reset und Ablauf der System Start Routine.
- 11 zeigt einen Chip nach Reset, Ablauf der System Start Routine und Konfiguration durch das Betriebssystem.
- 12 zeigt einen möglichen Zustand eines Chips nach Reset, Ablauf der System Start Routine, Konfiguration durch das Betriebssystem für Software Update und erneuter Konfiguration durch das Betriebssystem.
- 13 zeigt einen Chip in einem Startzustand nach Reset gemäß einer Ausführungsform.
- 14 zeigt einen anderen möglichen Zustand eines Chips nach Reset und Ablauf der System Start Routine.
- 15 zeigt einen möglichen Zustand eines Chips nach Reset, Ablauf der System Start Routine und Konfiguration durch das Betriebssystem, um eine Software over the Air update Operation vorzubereiten;.
- 16 zeigt einen möglichen Zustand eines Chips nach Reset, Ablauf der System Start Routine, Konfiguration durch das Betriebssystem für Software Update und erneuter Konfiguration durch das Betriebssystem.
- 17 zeigt in einer Übersicht wie Speicherbänke und Speicherkontroller in verschiedenen Betriebszuständen einander zugeordnet werden.
- 18 zeigt in einer anderen Ausführungsform, wie Speicherbänke und Speicherkontroller in verschiedenen Betriebszuständen einander zugeordnet werden.
- 19 zeigt das Ablaufdiagramm eines Verfahren zum Zuordnen von Speicherbänken und Speichercontrollern.
-
Die folgende detaillierte Beschreibung bezieht sich auf die beiliegenden Figuren, die Details und Ausführungsbeispiele zeigen. Diese Ausführungsbeispiele sind so detailliert beschrieben, dass der Fachmann die Erfindung ausführen kann. Andere Ausführungsformen sind auch möglich und die Ausführungsbeispiele können in struktureller, logischer und elektrischer Hinsicht geändert werden, ohne vom Gegenstand der Erfindung abzuweichen. Die verschiedenen Ausführungsbeispiele schließen sich nicht notwendig gegenseitig aus, sondern es können verschiedene Ausführungsformen miteinander kombiniert werden, so dass neue Ausführungsformen entstehen.
-
1 zeigt einen Chip 100 gemäß einem Ausführungsbeispiel.
-
Der elektronische Chip 100 kann ein Mikrocontroller (MCU) oder ein Mikroprozessor (MPU) in einem Fahrzeug, z.B. in einer ECU (Electronic Control Unit) in einem Auto, sein. Sie kann auch ein Sicherheits-Controller, ein Chipkarten-IC (Integrated Circuit) einer Chipkarte wie eine Smartcard mit einem beliebigen Formfaktor, z.B. für einen Pass oder für eine SIM (Subscriber Identity Module), oder ein Security Controller sein.
-
Die elektronische Datenverarbeitungsvorrichtung 100 weist einen (Applikations-)Prozessor 101 und ein Datenspeichersystem 102 auf, die mittels eines (Computer-)Busses 103 miteinander verbunden sind. Der Prozessor 101 kann ein oder mehrere Prozessorkerne 106 aufweisen.
-
DasDatenspeichersystem 102 weist einen Speicher 105 und einen oder mehrere Speichercontroller 104 (auch englisch als Speichercontroller bezeichnet) auf.
-
Je nach Ausgestaltung und Funktion kann der elektronische Chip weitere Komponenten aufweisen wie Eingabe-Ausgabe-Komponenten, inklusive Kommunikationskomponenten, z.B. zur Funkkommunikation, und verschiedene Schnittstellen.
-
Der Prozessor 101 kann verschiedene Software (Programme) ausführen, beispielsweise ein Betriebssystem und eine Applikation (Anwendung), die in einer durch das Betriebssystem gegebenen Umgebung läuft. Eine Anwendung ist beispielsweise eine Software-Anwendung für eine virtuelle Maschine, die der Prozessor (oder einer seiner Kerne 106) ausführt. Die ein oder mehreren Speichercontroller 104 ermöglichen dem Prozessor 101 (oder auch anderen Komponenten) Zugriffe auf den Speicher 105 zum Lesen von gespeicherten Daten und Schreiben (was Programmieren und Löschen beinhaltet) von Daten in den Speicher 105 oder auch zum Durchführen von Testoperationen.
-
Der Speicher 105 ist gemäß verschiedenen Ausführungsformen ein Speicher, bei dem für Speicherzugriffe und Testoperationen Steuersequenzen, d.h. Sequenzen von Operationen erforderlich sind, insbesondere ein nicht-flüchtiger Speicher (NVM), beispielsweise ein EEPROM (Electrically Erasable Programmable Read-Only Memory), wie z.B. ein Flash-Speicher, insbesondere ein eFlash (embedded Flash)-Speicher, ein PCM (Phase Change Memory) oder ein rRAM (resistive random access memory).
-
Der oder die Speichercontroller 104 kapseln deshalb Speicherzugriffe, sodass der zugreifenden Einheit (z.B. dem Prozessor 101, einem Prozessorkern 106 oder einem Prozess oder Anwendung auf dem Prozessor 101 oder einem Prozessorkern 106) und entsprechend dem Benutzer (z.B. Programmierer) eine einfache Speicherzugriffsschnittstelle zur Verfügung steht.
-
Jeder Speichercontroller 104 weist dazu einen Digitalteil 107 und einen Analogteil 108 auf. Der Digitalteil 107 enthält beispielsweise eine Steuereinheit und kontrolliert damit den Ablauf des Speicherzugriffes. Dabei werden mithilfe vieler Signaländerungen innerhalb einer Sequenz Einstellungen im Analogteil 108 und im Speicher 105 verändert, um einen erfolgreichen Speicherzugriff zu erzielen (z.B. ein Schreiben einer Speicherbank). Der Analogteil 108 erzeugt die Spannungen und Ströme zur Durchführung des jeweiligen Zugriffs. Er enthält dazu beispielsweise Ladungspumpen und Regler). Zusätzlich können auch die Speicherbänke 109 selbst (kleinere) lokale Regler/Pumpen aufweisen.
-
Außerdem ist der Speicher 105 gemäß einer Ausführungsform in mehrere Speicherbänke (z.B. Speicherbänke) 109 unterteilt, die unabhängig voneinander les- und schreibbar sind.
-
Sind nun mehrere zugreifende Einheiten vorhanden, z.B. mehrere Anwendungen, die auf den Kernen 106 laufen, so stellt sich in einem solchen Kontext die Frage, wie der Zugriff der mehreren zugreifenden Einheiten (z.B. Software-Aktoren) auf die Speicherbänke 105 geregelt wird.
-
Insbesondere bei Speichercontrollern für nicht flüchtige Speicher (NVM) wie z.B. embedded Flash, RRAM oder PCRAM kann dies bedeutsam sein. Bei den Speichercontrollern für flüchtige Speicher wie z.B. DRAM oder SRAM unterscheiden sich die Lese- und Schreib-Zugriffe nicht wesentlich in Bezug auf Signale und zeitliche Abläufe.
-
Bei den Speichercontrollern für flüchtige Speicher (NVM) geht normalerweise der Lesezugriff sehr schnell (~ Nanosekunden), der Schreibzugriff ist aber in der Regel relativ dazu sehr langsam (Größenordnung Mikrosekunden, Millsekunden bis hin zu Sekunden, z.B. bei häufig geschriebenen Flash Speichern). Dies liegt daran, dass Sequenzen mit vielen verschiedenen Schritten gesteuert werden müssen, bei denen unterschiedliche Spannungen und Ströme geschaltet werden.
-
Während bei DRAM/SRAM Controllern relativ schnell von Lese- auf Schreib-Modus und zurück geschaltet werden kann, ist dies bei NVM Controllern nicht möglich. DRAM/SRAM Controller ermöglichen daher den schnellen mitunter auch gemischten Zugriff „Lesen/Schreiben“ auf verschiedene Speicherbänke, wohingegen bei NVM ein aktiver Speichercontroller beim Schreiben den Lesezugriff auf die Speicherbank durchaus für Millisekunden blockieren kann. Aufgrund der verschiedenen komplizierten Abfolgen von Spannungswerten und Strömen kann ein NVM Speichercontroller zu einem Zeitpunkt auch nur eine Sequenz bearbeiten; soll also zeitlich parallel und unabhängig dazu ein Schreibzugriff mit anderen Daten zu einer anderen Speicherbank stattfinden, ist ein weiterer unabhängige Speichercontroller notwendig, weil die Schreibzugriffe sehr lange dauern.
-
2 zeigt eine Architektur, bei der der Zugriff auf Speicherbänke 209 durch ein Speicherzugriffssystem 201 (das beispielweise den Prozessor 101 enthält) über einen Speichercontroller 204 erfolgt, der den Zugriff auf alle Speicherbänke 209 steuert.
-
Damit ist die Verbindung bzw. Zuordnung vom Speichercontroller 204 zu den Speicherbänken 209 fest.
-
Bei dieser Herangehensweise ist es aufgrund des gemeinsam benutzten Speichercontrollers 204 nicht möglich, dass zwei unterschiedliche Software Aktoren gleichzeitig auf zwei Speicherbänke MBk und MBj unabhängig voneinander unterschiedliche Daten schreiben. Stattdessen werden beispielsweise Zeitscheiben und ein Scheduling mit Warteschlangen verwendet, um es zugreifenden Einheiten zu ermöglichen, auf unterschiedliche Speicherbänke 209 zu schreiben. Falls der Speichercontroller 204 ausfällt, kann auf keine der Speicherbänke 209 mehr geschrieben werden.
-
3 zeigt eine Architektur, bei der mehrere Speichercontroller 304 (Anzahl M) vorgesehen sind, um auf Speicherbänke 309 (Anzahl N) zuzugreifen, wobei jeder Speichercontroller 304 ein „lokaler“ Speichercontroller ist, d.h. für eine Untergruppe 310 der Speicherbänke 309 zuständig ist.
-
Dabei ist die Verbindung bzw. Zuordnung von jedem Speichercontroller 304 zu der jeweiligen Untergruppe fest, d.h. ein Speichercontroller MCi steuert (nur) den Zugriff durch ein Speicherzugriffssystem 301 auf Speicherbänke MBi1 bis MBin.
-
Bei dieser Herangehensweise ist es aufgrund des gemeinsam benutzten Speichercontrollers 304 nicht möglich, auf zwei Speicherbänke MBij und MBik derselben Untergruppe 310 gleichzeitig zu schreiben,
-
Falls ein Speichercontroller 304 ausfällt, kann auf keine der Speicherbänke 309 der jeweiligen Untergruppe 310 mehr geschrieben werden.
-
Beispielsweise enthält das Speicherzugriffssystem 301 vier virtuelle Maschinen (oder Programme) 311 und drei Speichercontroller 304, die den Zugriff auf neun Speicherbänke 309 steuern, die in drei Untergruppen 310 eingeteilt sind. Auf die drei Untergruppen 310 kann dann gleichzeitig und unabhängig voneinander geschrieben werden. Es ist aber beispielsweise nicht möglich, auf zwei Speicherbänke 309, die Teil derselben Untergruppe 310 sind, zu schreiben (z.B. MB23 und MB24). Es können deshalb nicht alle Anwendungsfälle für unabhängiges Schreiben abgedeckt werden. Für jede Speicherbank 309 einen eigenen Speichercontroller 304 vorzusehen ist jedoch typischerweise nicht wünschenswert, weil es zu erheblichem Flächenaufwand und Kosten führen würde. Zudem schafft dieser Ansatz auch keine Fehlertoleranz im Falle des eines Ausfalls eines Speichercontrollers.
-
Gemäß verschiedenen Ausführungsformen ist es deshalb vorgesehen, dass die Zuordnung von Speichercontrollern 304 zu Speicherbänken 309 bzw. die Gruppierung von den Speicherbänken 309 zu den Untergruppen 310 von dem Speicherzugriffssystem 301 dynamisch während der Laufzeit festlegbar, d.h. insbesondere änderbar, ist.
-
4 zeigt einen Chip 400 gemäß einer Ausführungsform.
-
Es sind mehrere Speichercontroller 404 (Anzahl M) vorgesehen sind, um es einem Speicherzugriffssystem 401 (das z.B. den Prozessor 101 enthält) zu ermöglichen, auf Speicherbänke 409 (Anzahl N) zuzugreifen.
-
Der Chip 400 ermöglicht eine dynamische Zuordnung von den Speicherbänken 409 zu den Speichercontrollern 404. Diese Zuordnung wird von dem Speicherzugriffssystem 401 gesteuert, d.h. festgelegt. Dies kann dynamisch während der Laufzeit des Chip 400, d.h. während das Speicherzugriffssystem 401 Programme ausführt, erfolgen.
-
Jede Speicherbank 409 kann einem der Speichercontroller 404 zugeordnet werden. Damit ergeben sich (M+1)N mögliche Zuordnungen, aus denen das Speicherzugriffssystem 401 sukzessive Zuordnungen auswählt und festlegt. Darin sind auch alle Kombinationen enthalten, bei denen Speicherbänke existieren, die zeitweise keinem Speichercontoller zugeordnet sind (deshalb M+1). Ein möglicher Anwendungsfall wäre die Deaktivierung des Schreibzugriffs auf eine Teilmenge der Speicherbänke in einer Phase des Product Life Cycles.
-
Hat das Speichersteuersystem 401 eine Zuordnung festgelegt, so informiert sie eine Zuweisungseinheit 412 über die Zuordnung (z.B. über ein entsprechendes Auswahlsignal 430). Die Zuweisungseinheit 412 leitet die Signale, die von den Speichercontrollern 404 ausgegeben werden, an die richtigen Speicherbänke weiter, d.h. verknüpft jeden Speichercontroller 404 mit den Speicherbänken 409, die ihm aktuell zugeordnet sind. Dabei sorgt die Zuweisungseinheit 412 dafür, dass die analogen Signale aus den Analogteilen 108 auf die richtigen Bänke 109 geschaltet werden und dabei alle Anforderungen an die Zuverlässigkeit eingehalten werden (z.B. über ein System von Schaltern, das eventuell hohe Ströme und Spannungen sicher ein- und abschaltet und diejenigen Bänke 109, die nicht angesteuert werden, in einem sicheren Betriebszustand hält).
-
Wählt das Speicherzugriffssystem 401 dafür eine geeignete Zuordnung aus und setzt diese um, so ist für jede Kombination von zwei Speicherbänken 409 ein gleichzeitiger Zugriff möglich (d.h. wenn die Zuordnung vorsieht, dass jeder Speicherbank jeweils ein Speichercontroller zugeordnet ist). Ein komplizierter Mechanismus basierend auf Zeitscheiben ist nicht erforderlich. Fällt einer der Speichercontroller 409 aus, so kann das Speicherzugriffssystem 401 dies kompensieren, indem sie ihn keiner Speicherbank mehr zuordnet. Dadurch nimmt die Leistung desChips 400 zwar ab, aber der Zugriff auf den gesamten Speicher bleibt möglich (sog. graceful degradation).
-
Das Speicherzugriffssystem 401 kann bei der Auswahl der Zuordnung auch die Auslastung der Speichercontroller 404 berücksichtigen. Dies ermöglicht eine effiziente Verwendung der Speichercontroller 404, insbesondere, wenn ein großer Teil des Speichers die meiste Zeit im Lesemodus ist (in den die Speichercontroller gemäß verschiedenen Ausführungsformen nicht involviert sind).
-
Zu Beginn des Betriebs des Chips 400 kann eine Startzuordnung konfiguriert sein. Für das Beispiel mit drei Speichercontrollern und neun Speicherbänken ist das beispielsweise eine Zuordnung wie sie für die Architektur von 3 dargestellt ist. Wegen der drei Speichercontroller sind in diesem Fall drei Untergruppen von Speicherbänken möglich. Ausgehend von einer solchen Startzuordnung kann das Speicherzugriffssystem 401 eine neue Zuordnung festlegen.
-
5 veranschaulicht die Verschiebung einer Speicherbank (Speicherbank Nr. 7) von der Untergruppe 410, die dem zweiten Speichercontroller MC2 zugeordnet ist, in die Untergruppe 410, die dem ersten Speichercontroller MC1 zugeordnet ist.
-
Das Speicherzugriffssystem 501 ändert die Zuordnung beispielsweise aufgrund eines Anwendungsfalls, der auftritt. Beispielsweise will ein Software-Treiber auf einer CPU in die Speicherbank 7 schreiben, während ein anderer Software-Treiber auf einer zweiten CPU gleichzeitig in die Speicherbank 5 schreiben möchte. Dies wird durch die geänderte Zuordnung ermöglicht. Dabei wird die Zuweisungseinheit 412 über das Ansteuersignal 430 angewiesen, den Speichercontroller MC1 mit der Speicherbank 7 zu verbinden und gleichzeitig oder kurz davor die Verbindung zwischen dem Speichercontroller MC2 und der Speicherbank 7 zu lösen.
-
6 veranschaulicht die Verschiebung aller Speicherbänke (Speicherbänke Nr. 8 und Nr. 9) von der Untergruppe, die dem dritten Speichercontroller MC3 zugeordnet ist, in die Untergruppe, die dem zweiten Speichercontroller MC2 zugeordnet ist.
-
Das Speicherzugriffssystem 601 ändert die Zuordnung beispielsweise, weil der dritte Speichercontroller MC3 während der Laufzeit ausfällt. Der Chip kann damit weiter die Speicherbänke Nr. 8 und Nr. 9 verwenden. Die Speicherbänke sind damit auch ausfalltolerant, lediglich die Leistungsfähigkeit des Chips in Hinblick auf Speicherzugriffe nimmt dadurch ab (weil nicht mehr drei Zugriffe gleichzeitig möglich sind).
-
Wie oben erwähnt leitet die Zuweisungseinheit 412 die von den Speichercontrollern 404 erzeugten digitalen und analogen Signale entsprechend der aktuellen Zuordnung an die Speicherbänke 409 weiter, d.h. stellt entsprechende Verbindungen zwischen den Speichercontrollern 404 und den Speicherbänken 409 her. Sie ändert diese Zuordnung in Reaktion auf ein entsprechendes Ereignis beispielsweise den Befehl, dass die Zuordnung aufgrund eines auftretenden Anwendungsfalls geändert werden soll oder die Detektion, dass ein Speichercontroller ausgefallen ist.
-
Sie kann dazu ein Zuweisungssignal von dem Speicherzugriffssystem 401 erhalten, entsprechend dem sie die Verbindungen herstellt. Die Zuweisungseinheit 412 kann aber auch als Teil des Speicherzugriffssystems 401 angesehen werden bzw. ausgestaltet sein.
-
Beim Ändern der Zuordnung schaltet die Zuweisungseinheit 412 die Verbindungen entsprechend um. Beispielsweise selektiert sie pro Bank, von welchem Speichercontroller 404 die digitalen Steuersignale verwendet werden. Kleine Eingabe/Ausgabe-Registerschnittstellen können verwendet werden, um den Verdrahtungsoverhead gering zu halten, weil jeder Speichercontroller separate digitale Steuersignale hat. Damit können dann lokal an den Speicherbänken 409 viele verschiedene Register zur Ansteuerung der Schalter und lokalen Regler adressiert werden. Für analoge Signale erfolgt beispielsweise eine lokale Auswahl von M unterschiedlichen Versorgungsspannungen, die von den M Speichercontroller-Analogteilen (d.h. Ladepumpen und Reglern) geliefert werden.
-
Die Zuweisungseinheit kann mittels Multiplexern und Schaltern für digitale und analoge Leitungen gebildet werden, z.B. unter Verwendung einer hierarchischen Architektur von Multiplexern und Schaltern.
-
Im Folgenden werden Beispiele für Zuordnung (dargestellt durch eine Pfeil →) und deren Änderung für ein Beispiel mit zwei Speichercontrollern (1 und 2) und vier Speicherbänken (1 bis 4) gegeben.
- • Zuordnung a: Speichercontroller 1 → Speicherbänke 1, 2, 3;
Speichercontroller 2 → Speicherbank 4;
- • Zuordnung b: Speichercontroller 1 → Speicherbank 1;
Speichercontroller 2 → Speicherbänke 2, 3, 4;
- • Speichercontroller 1 fällt aus, Speichercontroller 2 übernimmt Speicherbänke von Speichercontroller 1
- • Speichercontroller 1 und Speichercontroller 2 → Speicherbank 1, um den Schreibdurchsatz zu erhöhen (die analogen Regler und Ladepumpen arbeiten dann beispielsweise auf zwei Teilen der Speicherbank 1)
- • Aktualisierungen einer internen Firmware während des Betriebs:
- Speichercontroller 1 übernimmt alle Speicherbänke, die von aktuell auf demChip laufenden Programmen verwendet werden;
- Speichercontroller 2 kann seine Firmware aktualisieren, während der Chip weiterarbeiten kann
- • System skalierbar, d.h. die Gesamtanzahl von Speicherkontrollern ist skalierbar, z.B.
- ◯ Low-End-Systeme: ein Speicherkontroller
- ◯ Mittelgroße System : zwei Speicherkontroller
- ◯ High-End-Systeme: drei Speicherkontroller
-
Jede Speicherbank kann für jeweilige Daten (z.B. Programmcode, normale Anwendungsdaten, Log-Daten, sichere Daten wie Schlüssel etc.) und von ein oder mehrere jeweiligen Programmen (z.B. Treibern) beschrieben werden.
-
Zusammenfassend wird gemäß verschiedenen Ausführungsformen ein Chip bereitgestellt, wie sie in 7 dargestellt ist.
-
7 zeigt einen Chip 700 gemäß einer Ausführungsform.
-
Der Chip 700 weist einen Speicher 701 mit mehreren Speicherbänken 702 auf, wobei jede Speicherbank unabhängig von den anderen Speicherbänken les- und schreibbar ist.
-
Der Chip 700 weist ferner mehrere Speichercontroller 703 auf, wobei jeder Speichercontroller 703 einen Analogteil 704 aufweist, der eingerichtet ist, Versorgungsspannungen für Zugriffe auf die Speicherbänke zu erzeugen.
-
Außerdem weist der Chip 700 ein Speicherzugriffssystem 705 auf, das eingerichtet ist, ein Steuersignal 706 zu empfangen und die Speichercontroller 703 abhängig von dem Steuersignal 706 den Speicherbänken 702 zuzuordnen, sodass jeder Speichercontroller 703, wenn er einer Speicherbank 702 zugeordnet ist, Speicherzugriffe, die sich auf die Speicherbank 702 beziehen, durchführt.
-
Gemäß verschiedenen Ausführungsformen ist in anderen Worten die Zuordnung von Speichercontrollern zu Speicherbänken flexibel, wobei mit „Speichercontroller“ eine Einheit auf tiefer Ebene, die insbesondere die analogen Schaltungsbauteile zum Erzeugen von Versorgungsspannungen aufweist, gemeint ist. In anderen Worten umfassen die Speichercontroller Hardware-Schaltungen zum Zugriff auf die Speicherebene und geben Signale aus, die direkt für den Speicher vorgesehen sind. Die Speichercontroller können allerdings auch Software-Elemente (wie eine Firmware) aufweisen.
-
Das Steuersignal kann durch eine Benutzerkonfiguration ausgelöst und/oder festgelegt sein. Es kann die Zuordnung angeben oder das Speicherzugriffssystem kann als Reaktion auf den Empfang des Steuersignals die Zuordnung ermitteln. Das Speicherzugriffssystem kann die Zuordnung in Reaktion auf internes Ereignis, das durch das Steuersignal ausgelöst wird, ermitteln und umsetzen (d.h. die Speichercontroller den Speicherbänken entsprechend zuordnen). Das Steuersignal kann wiederum ein (für das Speicherzugriffssystem) externes Ereignis anzeigen. Ein Programm (Software), das auf dem Speicherzugriffssystem ausgeführt wird, kann die Zuordnung ermitteln und/oder in Reaktion auf das Steuersignal umsetzen. Das Steuersignal kann beispielsweise vom Speicher oder von einem der Speichercontroller kommen, z.B. von einem Fehlererkennungsmechanismus (des Speichers) oder als Speichercontroller-Feedback.
-
Die Speicherbänke können als Speicher-Adressbereiche verstanden werden.
-
Es sollte beachtet werden, dass es nicht erforderlich ist, dass Analogteil und Digitalteil eines Speichercontrollers zusammen auf einem Chip eine Einheit bilden müssen. Die Speichercontroller können vielmehr auch so implementiert werden, dass alle Analogteile in einem Block zusammengefasst werden und dann separate Kontrollsignale von den verschiedenen Digitalteilen bekommen. Es gibt also physikalisch unterschiedliche analog/digitale Einheiten gibt und dass jeweils ein Digital- und ein Analogteil zusammen arbeiten. Die tatsächliche Implementierung kann aber auf ein oder mehreren Chips „verstreut“ sein.
-
Ein Analogteil kann auch Stromquellen oder Stromsenken haben, Referenzsignale (Spannung, z.B. Bandgap, Strom) erzeugen und auch spezielle Signalgeneratoren wie z.B. Taktsignalgeneratoren aufweisen.
-
Das Speicherzugriffssystem kann eingerichtet sein, nacheinander mehrere Steuersignale zu empfangen und für jedes der Steuersignale in Reaktion auf den Empfang des Steuersignals die Speichercontroller abhängig von dem Steuersignal den Speicherbänken zuzuordnen, sodass jeder Speichercontroller, wenn er einer Speicherbank zugeordnet ist, einen Speicherzugriff, der sich auf die Speicherbank bezieht, durchzuführen. Beispielsweise kann eine durch eine äußere Sequenz vorgegebene automatische Umschaltung erfolgen, z.B. eine automatische Änderung der Zuordnung nach dem Boot des Chips. Ein Benutzer könnte auch unterschiedliche Zuordnungen als Konfiguration angeben, die dann von dem Speicherzugriffssystem nacheinander oder beim Auftreten bestimmter externer Ereignisse umgesetzt werden.
-
Gemäß verschiedenen Ausführungsformen wird ein Verfahren durchgeführt, wie es in 8 dargestellt ist.
-
8 zeigt ein Ablaufdiagramm 800, das ein Verfahren zum Durchführen von Speicherzugriffen auf einen Speicher mit mehreren Speicherbänken darstellt, wobei jede Speicherbank unabhängig von den anderen Speicherbänken les- und schreibbar ist.
-
In 801 wird ein Steuersignal empfangen. In 802 werden mehreren Speichercontroller, wobei jeder Speichercontroller einen Analogteil aufweist, der eingerichtet ist, Versorgungsspannungen für Zugriffe auf die Speicherbänke zu erzeugen, abhängig von dem Steuersignal den Speicherbänken zugeordnet, sodass jeder Speichercontroller, wenn er einer Speicherbank zugeordnet ist, Speicherzugriffe, die sich auf die Speicherbank beziehen, durchführt.
-
Die 9 bis 11 zeigen, wie eine Datenverarbeitungseinheit unterschiedliche Betriebszustände annehmen kann, die sich insbesondere bezüglich der Zuordnungen von Speichercontrollern zu Speicherbänken unterscheiden. Betriebszustände können zum Beispiel während eines Bootvorganges, unmitelbar nach einem Bootvorgang, während eines Resets, unmittelbar nach einem Reset, nach der Systemstartroutine, Testbetrieb, Software-Update oder Ähnliches sein. Dabei können die Betriebszustände sich hinsichtlich der Anforderung an die Anzahl der zu schreibenden Speicherbänke unterscheiden. die Betriebszustände sich hinsichtlich der Anforderung an die Aufteilung der zu schreibenden Speicherbänke unterscheiden. In anderen Ausführungen unterscheiden sich die Betriebszustände sich hinsichtlich der Art und Anzahl der aktiven Software Applikationen. Im Folgenden werden einige Beispiele gezeigt werden.
-
9 zeigt einen Chip 900 gemäß einer Ausführungsform in einem Startzustand nach Reset. Der Chip enthält ein Speicherzugriffssystem 901. Es empfängt ein Zustandssignal 440, das den Betriebzustand anzeigt, wie sie im vorherigen Abstatz beschrieben sind. Das Zustandssignal 440 kann von einer Vielzahl von Komponenten erzeugt worden sein, beispielsweise von der Power-Up-Schaltung, den Prozessorkernen oder beispielsweise einer Fehlererkennungsschlaltung. Mit einem Reset wird die Datenverarbeitung in einen vorbestimmten Startzustand gebracht, denn während des Resets werden viele der Register desChips 900 jeweils in einen vorbestimmten Zustand gebracht. Auf das Speicherzugriffssystem 901 greifen drei verschiedene Software Applikationen 950, 951 und 952 zu, die auf unterschiedlichen CPUs / Virtual Machines des Systems laufen können. Die Software Applikationen Software-A 950 und Software-B 950 können separate, von den anderen unabhängige Schreiboperation, auf die Speicherbänke 1 und 2 anfordern.
-
Die Zuordnung, auch Allokation genannt, der Speicherbänke zu den Speichercontrollern MC1 und MC2 ermöglicht, dass der Speichercontroller MC1 die Schreiboperation auf Memory Bank 1 und der Speichercontroller MC2 die Schreiboperation auf Bank 2 unabhängig voneinander durchführen können. Nach der Berechnung der Zuweisungen weist das Speicherzugriffssystem 901 die Zuweisungseinheit 412 an, entsprechend der Zuweisungen die Speicherbank 1 mit dem Speichercontroller MC1 zu verbinden und parallel dazu den Speichercontroller MC2 mit den Speicherbänken 2, 4, 5 und 6 und den Speichercontroller MC3 mit der Speicherbank 3 zu verbinden. Durch das anschließende parallele Bearbeiten der Speicherzugriffsoperationen wird Zeit gespart. Zudem kann es die Sicherheit erhöhen, weil die unterschiedlichen Applikationen 950 und 951 unterschiedliche Speichercontroller verwenden.
-
10 zeigt den Chip in dem Zustand nach Reset und nach anschließendem Ablauf einer Systemstartroutine. Bei der Systemstartroutine werden beispielsweise bestimme Teile des Chips geprüft und andere in einen Zustand versetzt, der das unmittelbare Starten bestimmter Software Applikationen erlaubt.
-
Dabei wird aus dem Zustand der 9 heraus die Zuweisungseinheit 412 durch das Steuersignal 430 des Systems umgeschaltet. Hiermit wird der Normalzustand des Systems erreicht, bei dem jeweils 2 Bänke einem Speichercontroller zugeordnet sind, in diesem Fall steuert MC1 die Speicherbänke 1 und 2, MC2 die Speicherbänke 3 und 4 und MC3 die Speicherbänke 5 und 6. Damit kann zum Beispiel eine Speicherbank für Lesezugriffe verwendet werden und die andere Speicherbank für Schreibzugriffe.
-
11 zeigt einen Chip 900 nach Reset, Ablauf der System Start Routine und zusätzlicher Konfiguration durch das Betriebssystem, um eine Software over the Air update Operation vorzubereiten. Vom Zustand von 11 zu dem Zustand der 10 gelangt man durch die Umschaltung durch das Steuersignal des Systems. Damit wird eine Software over the Air update Operation vorzubereitet. Unter Software over the air update wird im automotiven Bereich verstanden, dass neue Daten oder Code per Mobilfunk an Autos geschickt werden. Über die telematic unit eines Autos werden die Daten und/oder Code empfangen und überprüft, bevor sie an einzelne Steuergeräte beziehungsweise deren Microcontroller verteilt werden, die dann ihrerseits ihre internen (embedded) memories wie z.B. embedded Flash mit dem neuen Code beziehungsweise Daten programmieren. Eine solche Operation benötigt viele Schreibzyklen, da ein Teil der Speicherbänk in relativ kurzer Zeit umgeschrieben werden soll. Der Zustand von 11 entsteht aus dem Zustand der 10 nach einer Umschaltung durch das Steuersignal 430. Daraufhin verbindet die Zuweisungseinheit 412 den Speichercontroller MC1 mit den Bänken 1 und 2, der Speichercontroller MC2 mit den Speicherbänken 3, 4 und 5 und den Speichercontroller MC3 mit der Speicherbank 6. Dieser Zustand ermöglicht gleichzeitige voneinander unabhängige Schreibzugriffe auf die Bänke 2, 5 und 6 durch die Speichercontroller MC1, MC2 und MC3.
-
12 zeigt eine Datenverarbeitungsvorrichtung nach Reset, Ablauf der System Start Routine, Konfiguration durch das Betriebssystem für Software Update und erneuter Konfiguration durch das Betriebssystem, um den normalen Zustand nach Ablauf der System Start Routine wieder zu erreichen. Der Zustand beschrieben in 12 entspricht dem Zustand von 10.
-
17 zeigt eine Tabelle, die 4 verschiedene Zustände einer Datenverarbeitungsvorrichtung darstellt. Der linke Teil der Tabelle zeigt den Bezug zu den Figuren der Anmeldung und zeigt in der nächsten Spalte für jeden der 4 Zustände an, welche Bänke gleichzeitig geschrieben werden müssen. Der rechte Teil der Tabelle zeigt eine mögliche Verschaltung der Bänke auf die Speichercontroller, um die geforderten Schreiboperationen zu ermöglichen.
-
Der erste Zustand („Reset“, 9) ist die Allokation der Memory Bänke nach einem System Reset oder Power - on des gesamten Systems. Nach dem Reset werden in einem Beispiel einer Ausführungsform zwei verschiedene Startup Routinen aktiv, die das System für den Betrieb vorbereiten und die Schreiboperationen unabhängig voneinander in Bänke durchführen (hier in diesem Beispiel in Bänke 1 und 2). Dabei sind im Normalfall die geschriebenen Daten und eventuell auch die Zugriffsrechte unterschiedlich (z.B. Startup Routine des Hauptsystems und Startup Routine des Security Coprocessors). Die Schreiboperationen können je nach verwendetem Speicher lange Durchführungszeiten erreichen (Microsekunden .. Millisekunden, eventuell sogar Sekunden).
-
Um die geforderten Schreiboperationen schnell ausführen zu können, sind je nach Zustand 2 bis 3 Speichercontroller erforderlich, damit die Operationen zeitlich paralllel durchgeführt werden können; dies ist insbesondere während der Startupphase des Gesamtsystems notwendig, weil die Applikation nicht starten kann, bis die Startup Routinen durchgelaufen sind.
-
Nach dem Ablauf der Startup Routinen startet die Applikation. Dafür ist eine neue Konfiguration der Bänke notwendig, weil für die Applikation andere Bänke als während der Startup Phase gleichzeitig geschrieben werden, z.B. ein data logging der Applikation und des Security Coprocessors. Dieser Zustand „After Boot Code“ ist in der Tabelle und in 10 beschrieben.
-
Während der Laufzeit des Systems kann ein Sonderfall eintreten: es ist eine Aktualisierung bestimmter Code/Daten des Systems notwendig, ein sogenannter „Software Update over the Air“. Dieser Zustand erfordert wiederum eine andere Zuteilung der Bänke zu den Speichercontrollern, siehe Zustand „Software over the Air update“ und 11.
-
Nach der Aktualisierung des Systems muss die Zuteilung der Bänke zu den Speichercontrollern wieder zur Standardkonfiguration („After Boot Code“, Figure 10) geändert werden.
-
Die 9-12 zeigen eine mögliche Zuteilung der Bänke zu den Speichercontrollern, die die geforderten Schreiboperationen je nach Zustand ermöglichen. Die in den Figuren gezeigten Zuteilungen sind aber nicht die einzig möglichen Zuteilungen; andere Zuteilungen, die die gleichen Anforderungen erfüllen, sind ebenfalls möglich und als Beispiele in der Figure 18 (Tabelle) und in den 13 - 16 beschrieben.
-
Die in den 9-12 gezeigten Zustände zeigen eine möglichst geringe Anzahl von Umschaltungen; dies kann von Vorteil sein, wenn die Umschaltung der Bänke aufgrund der hohen Spannungen eine gewisse Zeit braucht.
-
Bei den in den 13-16 und 18 gezeigten Zuständen müssen jeweils mehre Bänke umgeschaltet werden, dies kann von Vorteil sein, wenn möglichst nur eine Bank unter der Kontrolle eines Speichercontrollers sein soll, z.B. aus Safety und/oder Security Gründen.
-
Die Ausführungsform ermöglicht eine beliebige Zuteilung von Bänken zu Speichercontrollern; diese Zuteilungen können beliebig während der Laufzeit des Systems geändert werden. Dabei ist es auch möglich, schon verwendete Zustände wieder einzustellen. Die dynamische Konfiguration ist möglich, aber nicht notwendigerweise zwingend. Es kann auch Systeme geben, die einen Zustand beibehalten. Die Zustände des Systems können für verschiedene Applikationsanwendungen und unterschiedlich sein.
-
19 zeigt in einem Ablaufdiagram eine Ausführungsform des Verfahrens. In einem ersten Schritt 1901 wird eine Information über den Betriebszustands des Chips empfangen.Im nächsten Schritt 1902 erfolgt ein dynamisches Erzeugen von Zuordnungen von Speichercontrollern zu Speicherbänken in Abhängigkeit des Betriebszustands des Chips. Im Schritt 1903 werden die Speicherbänke durch die Speichercontroller entsprechend der Zuordnungen angesteuert. Nach dem Schritt 1903 fängt das Verfahren bevorzugterweise wieder mit Schritt 1901 an.
-
Bezugszeichenliste
-
- 100
- Datenverarbeitungsvorrichtung
- 101
- Prozessor
- 102
- Datenspeichersystem
- 103
- Bus
- 104
- Speichercontroller
- 105
- Speicher
- 106
- Prozessorkerne
- 107
- Digitalteil
- 108
- Analogteil
- 109
- Speicherbänke
- 201
- Speicherzugriffssystem
- 204
- Speichercontroller
- 209
- Speicherbänke
- 301
- Speicherzugriffssystem
- 304
- Speichercontroller
- 309
- Speicherbänke
- 310
- Speicherbank-Untergruppe
- 311
- Virtuelle Maschinen/ Programme
- 401
- Speicherzugriffssystem
- 404
- Speichercontroller
- 409
- Speicherbänke
- 412
- Zuweisungseinheit
- 430
- Steuersignal
- 440
- Zustandssignal
- 501
- Speicherzugriffssystem
- 601
- Speicherzugriffssystem
- 700
- Datenverarbeitungsvorrichtung
- 701
- Speicher
- 702
- Speicherbänke
- 703
- Speichercontroller
- 704
- Analogteil
- 705
- Speicherzugriffssystem
- 706
- Steuersignal
- 800
- Ablaufdiagramm
- 801, 802
- Ablaufschritte
- 901
- Speicherzugriffssystem
- 950
- Software-Application
- 1901, 1902, 1903
- Ablaufschritte