-
HINTERGRUND DER ERFINDUNG
-
Die vorliegende Erfindung bezieht sich auf die Zuordnung von Speicherplätzen und insbesondere auf ein Verfahren gemäß dem Oberbegriff des Anspruchs 1 zum Ordnen von Speicherzugriff durch einen Anweisungs-Cache-Speicher einer Zentraleinheit in einer globalen Speichereinrichtung, wie es der Art nach im Wesentlichen aus der
US 5 889 999 A bekannt ist.
-
Eine zentrale Verarbeitungseinheit (CPU) nutzt Cache-Speicher, die in einem Direktzugriffsspeicher (RAM) gespeicherte Daten zur Verwendung durch die Zentraleinheit laden. Cache-Speicher bieten eine schnelle Lösung zum lokalen Lesen und Schreiben von Daten im Gegensatz zum Lesen und Schreiben von Daten auf RAM. Ein Cache-Speicher hält in seiner Speichereinheit Daten, die am häufigsten verwendet werden.
-
Die CPU beinhaltet Anweisungen zu den Adressen, die bei der Ausführung von Codes verwendet werden, um Daten zu speichern. Das Speicherlayout der jeweiligen Adressenplätze beeinflusst die Speicherbandbreite der cacheaktivierten Architektur für ein elektronisches Steuermodul (ECU). Wenn das Speicherlayout zum Beispiel falsch konzipiert ist (z. B. ineffizient), kann sich der Datenabruf verlangsamen, insbesondere für die Speicherplätze, die wiederholt in RAM-Speichern verwendet werden, denn die Speicherzuweisung ist für eine jeweils ausgeführten Anweisungsstrom vorbestimmt. Wenn die CPU auf verschiedene RAM-Speicherplätze zugreifen soll, werden CPU-Operationen verlangsamt. Das heißt, wenn die Speicherzuordnung nicht effizient organisiert ist, dann werden CPU-Verarbeitungszeiten ebenso ineffizient. Das Speicherlayout beeinflusst die Speicherbandbreite der cacheaktivierten Architektur für die CPU. Wenn sich ein RAM-Speicherlayout beim Zugriff durch ausführbare Anweisungen als ineffizient erweist, können sich Engstellen beim Datenabruf ergeben, wenn die Tasks ständig auf verschiedene RAM-Speicherplätze zugreifen müssen.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Ein Vorteil einer Ausführungsform ist die Optimierung des Speicherlayouts beim Zugriff auf einen Direktzugriffsspeicher (RAM). Die zentralen Datenverarbeitungseinheiten (CPU) nutzen in Cache-Speichern gespeicherte Daten in einem Direktzugriffsspeicher für Schreib-/Lesedaten, die am häufigsten von der CPU verwendet werden. RAM-Speicher wird von der Hardware als Speicherblock zur Zwischenspeicherung von in der CPU verarbeiteten Daten implementiert. Die im Cache- und RAM-Speicher gespeicherten Daten können für eine vorhergehende Operation oder eine neue Operation genutzte Daten sein. Wenn die zu verarbeitenden Daten nicht im Cache-Speicher sind, lädt das System einen anderen Datenblock in den RAM-Speicher, um einen Cache-Speicherblock zu ersetzen. Die hierin beschriebene Technik identifiziert Signalgrößenpaare, die in unmittelbarer Nähe zueinander ausgeführte RAM-Speicherplätze nutzen (d. h. im Wesentlichen nebeneinander angeordnete ausführbare Anweisungen) und ordnet benachbarte Speicherorte den in unmittelbarer Nähe zueinander angeordneten Signalgrößen zu. In dieser Weise reduziert in Kenntnis der Tatsache, dass auf zwei Speicherplätze im Wesentlichen häufig und im Wesentlichen sequentiell zugegriffen wird, die Zuordnung der Signalgrößen zu nahe beieinander liegenden Speicherplätzen die Verarbeitungszeit der CPU, die versucht, Cache-Speicherblöcke zu ersetzen. Als Ergebnis ordnet die hier beschriebene Technik den entsprechenden Signalgrößen effektiv Speicherlayouts zu, sodass den gewöhnlich häufig abgerufenen Signalgrößenpaaren RAM-Speicherplätze zugeordnet werden, die beim Zugriff auf den RAM-Speicher nahe beieinander liegen. Dies verbessert den Wirkungsgrad der CPU und reduziert Engstellen.
-
Erfindungsgemäß wird ein Verfahren zum Ordnen von Speicherzugriff durch einen Anweisungs-Cache-Speicher einer Zentraleinheit in einer globalen Speichereinrichtung vorgeschlagen, das sich durch die Merkmale des Anspruchs 1 auszeichnet.
-
Figurenliste
-
- 1 ist ein Hardware-Blockschaltbild zur Optimierung von Task-Partitionierung.
- 2 ist eine beispielhafte gewichtete Korrelationsmatrix.
- 3 ist ein Ablaufdiagramm eines Verfahrens zur Optimierung von Speicherlayout.
-
DETAILLIERTE BESCHREIBUNG
-
1 ist ein Hardware-Blockschaltbild zur Optimierung von Speicherlayout. Die entsprechenden Algorithmen zur Ausführung von Anwendungscodes werden auf einer elektronischen Steuereinheit (ECU) 10 ausgeführt. Die ausgeführten Algorithmen sind die Programme, die in der Fertigung ausgeführt würden (z. B. Motorsteuerung, Rechnern, Spiele, Werkseinrichtungen oder andere elektronische Steuerungen, die eine elektronische Steuereinheit verwenden). Daten werden geschrieben und gelesen zu/von verschiedenen Adressen innerhalb einer globalen Speichereinrichtung 12 (z. B. RAM-Direktzugriffsspeicher).
-
Eine Map-Link-Datei 14 ist eine Textdatei, die angibt, wo Daten und Codes in den ausführbaren Dateien innerhalb der globalen Speichereinrichtung 12 abgelegt sind. Die Map-Link-Datei 14 beinhaltet Kurvendateien, in denen ein Ereignisprotokoll mit der Beschreibung der innerhalb der globalen Speichereinrichtung 12 erfolgten Transaktionen sowie Codes und Daten gespeichert sind. Daraus kann eine Map-Link-Datei 14 zur Identifizierung aller Signale und der zugehörigen Speicheradressen resultieren, auf die während der Ausführung der durch die ECU 10 ausführbaren Anweisungen zugegriffen wurde.
-
Ein Mining-Prozessor 16 wird zum Data-Mining 18 aus der globalen Speichereinrichtung 12 verwendet, wobei die zugeordneten Speicherplätze 20 neu geordnet werden, unter Bestimmung einer Minimalenergiefunktion in Verbindung mit einer Permutation 22 zur Identifizierung eines optimalen Speicherlayouts, dem zum Lesen und Schreiben von Daten Signalgrößen zugeordnet werden können.
-
Ein Anweisungsausführungsstrom beinhaltet Codes (d. h. ausführbare Codes), die von der ECU 10 ausgeführt werden. Der Code beinhaltet einen Adressenplatz innerhalb der globalen Speichereinrichtung 12, auf die zum Schreiben oder Abrufen von Daten aus den jeweiligen Adressenplätzen zugegriffen wird. Ein beispielhafter Anweisungsstrom zum Laden von Anweisungen kann folgendes Format aufweisen:
-
Ein beispielhafter Anweisungsstrom zum Schreiben von Anweisungen an eine Adresse in der globalen Speichereinrichtung 12 kann folgendes Format aufweisen:
wo s
a und s
b Signalgrößen der ausführbaren Anweisungen darstellen, die die Speicherplätze identifizieren, auf die in der globalen Speichereinrichtung 12 zum Schreiben oder Lesen von Daten zugegriffen wird. Für alle Signalgrößen {s
i|i = 1,...,N} wird eine Korrelationsmatrix W zur Feststellung einer Korrelation zwischen alle Variablen aufgestellt. Jede Signalgröße ist auf einer vertikalen Seite der Korrelationsmatrix W und einer horizontalen Seite der Korrelationsmatrix W zum Quervergleich aufgelistet. Ein Korrelationsfaktor w wird für jedes entsprechende Variablenpaar bestimmt. Beispielsweise befindet sich für die Signalgrößen s
a und s
b, ein Korrelationsfaktor w
ab am Querschnitt der beiden Signalgrößen in der Korrelationsmatrix W. Die Signalgrößenpaare, die im Wesentlichen benachbarte Anweisungen im i-Cache-Speicher sind, erzeugen einen höheren Korrelationswert w als Signalgrößenpaare, die nicht dicht nahe beieinander liegen. Ein entsprechendes Signalgrößenpaar, auf das sich benachbarte Anweisungen in einem Anweisungsausführungsstrom beziehen, gibt an, dass diesen im auszuführenden Code jeweils zeitlich nahe beieinander ausgeführten Signalgrößen ein höherer Korrelationswert in der Korrelationsmatrix erteilt wird. Daher wird einem entsprechenden Signalgrößenpaar, das in benachbarten Anweisungen ausgeführt wird, ein höherer Korrelationsfaktor erteiltw, als einem entsprechenden Signalgrö-ßenpaar, dessen Anweisungen weiter voneinander entfernt sind.
-
2 stellt eine beispielhafte Korrelationsmatrix W dar. Die Signalgrößen sind in der Korrelationsmatrix W sowohl horizontal (z.B. in Reihen) als auch vertikal (z. B. in Spalten) gekennzeichnet. Wie gezeigt, wird für alle Signalgrößen {si|i = 1, ...,N} ein Korrelationswert für jedes entsprechende Signalgrößenpaar erteilt. Diese im Anweisungsausführungsplan näher beieinander ausgeführten Signalgrößen erhalten einen höheren Korrelationswert. Zusätzlich dazu steigt der Korrelationswert für die Signalgrößenpaare, auf die sich häufiger bezogen wird.
-
Der Korrelationswert kann als eine Funktion der Nähe eines Signalgrößenpaars innerhalb des Anweisungsausführungsstroms normalisiert werden. Nachfolgend wird eine Beispielfunktion zur Normalisierung von Korrelationswerten angegeben:
-
Wie in der vorstehenden Funktion gezeigt, werden Korrelationswerte normalisiert, wenn ihre Differenz kleiner ist als 1K; jedoch versteht es sich, dass die Größe des Vergleichswerts von 1K beispielhaft ist und andere Werte verwendet werden können, die von verschiedenen Faktoren, wie der Größe des Anweisungs-Cache-Speichers abhängen.
-
Nach der Erzeugung der Korrelationsmatrix W wird die Korrelationsmatrix W zur Identifizierung einer Permutation neu geordnet, die zur Unterstützung der Identifikation eines effizienten Speicherlayouts in eine Sortier-Minimalenergiefunktion eingegeben werden kann. Zum Nachsortieren der Korrelationsmatrix W muss die Position des entsprechenden Signals in der Korrelationsmatrix W permutiert werden. Zunächst sind die Signalgrößen der Korrelationsmatrix W neu zu positionieren, sodass alle Diagnonaleneinträge der Korrelationsmatrix W den Wert Null aufweisen. Anschließend sind die höchsten Korrelationswerte unter allen Korrelationswerten der Korrelationsmatrix W am nächsten zu der durch die Nullwerteinträge in die Korrelationsmatrix W dargestellten diagonalen Linie zu setzen. Die Signalgrößen der Korrelationsmatrix sind zur Neuordnung der Korrelationswerte ebenfalls neu zu positionieren. Als Ergebnis sind die höchsten Korrelationswerte näher an der Null-Diagonale angeordnet und die niedrigen Korrelationswerte sind in abnehmende Maße von der Null-Diagonale entfernt angeordnet.
-
Nach der Neupositionierung der Korrelationswerte und der zugehörigen Signalgröße ist die permutierte Korrelationsmatrix W in die Minimalenergiefunktion, wie unten beschrieben, einzugeben.
-
Mit Bezug auf die Korrelationsmatrix W wird die gewünschte Ordnung der Speicherplätze durch die Ermittlung einer Permutation (π
1,..., π
N} von Eckpunkten hergestellt, sodass benachbarte Eckpunkte am stärksten korreliert werden. Die ausgewählte Permutation zeigt an, dass die häufig von dem gleichen Task-Satz abgerufenen Daten im lokalen Cache-Speicher abgelegt werden können. Mathematisch kann die gewünschte Neuordnungspermutation als folgende Minimalenergiefunktion ausgedrückt werden:
-
Dies entspricht der Ermittlung der inversen Permutation π
-1 sodass die folgende Energiefunktion minimiert wird:
-
Die Lösung des obigen Problems wird durch Berechnen des Eigenvektors (q
2) mit dem zweitkleinsten Eigenwert für folgende Eigengleichung angenähert:
wobei die Laplace-MatrixL = D - W ist und die Gradmatrix D eine Diagonale ist, definiert als
-
Der so ermittelte q2 wird dann in aufsteigender Ordnung sortiert. Der Index der Eckpunkte nach einer Sortierung ist die gesuchte Permutation (π1,..., πN}. Die Reihenfolge der Speicherstellen kann dann aus dieser Permutation durch Umordnen der Speicherplätze nach dem Permutationsergebnis abgeleitet werden.
-
3 stellt ein Flussdiagramm der Technik zur Optimierung des Speicherlayouts der globalen Speichereinrichtung bei Zugriff durch die ECU. In Schritt 30 werden Anwendungscodes für ein Softwareprogramm durch die Task-Programme einer jeweiligen ECU ausgeführt. Lese- und Schreiboperationen werden in der globalen Speichereinrichtung durchgeführt (z. B. nicht auf dem Mining-Prozessor befindlicher Speicher).
-
In Schritt 31 wird eine Signalliste durch einen Mining-Prozessor aus einer Link-Map-Datei in einem globalen Speicher extrahiert. Die Signalliste identifiziert Speicherplatzkurven, die von den durch die ausführbaren Anweisungen ausgeführten Tasks betroffen sind.
-
In Schritt 32 werden die Speicherzugriffskurven vom Mining-Prozessor gesammelt.
-
In Schritt 33 wird eine Korrelationsmatrix W mit Korrelationswerten für Signalgrößenpaare ausgebildet, die den Grad der Häufigkeit darstellen, mit der durch den gleichen Task-Satz in einem lokalen Anweisungs-Cache-Speicher auf entsprechende Speicherplätze zugegriffen wird. Jedes entsprechende Signalgrößenpaar wird einem Korrelationswert zugeordnet. Der Korrelationswert kann anschließend normalisiert werden, je nachdem, ob die Adressen der jeweiligen Signalgrö-ßen innerhalb einer vorbestimmten Größenordnung liegen. Der Korrelationswert kann auch auf der Häufigkeit beruhen, mit der die jeweiligen Signalgrößenpaare im ausführbaren Anweisungsstrom ausgeführt werden.
-
In Schritt 34 wird die Korrelationsmatrix neu geordnet, sodass höhere Korrelationswerte unter der Vielzahl von Korrelationswerten in der Korrelationsmatrix W näher an der Null-Diagonale der Matrix angeordnet werden. Übrige Korrelationswerte mit abnehmendem Wert werden in der Korrelationsmatrix in abnehmender Reihenfolge ausgehend von der Null-Diagonale entfernt angeordnet.
-
In Schritt 35 wird die permutierte Korrelationsmatrix zum Berechnen des Eigenvektors (q2) mit dem zweitkleinsten Eigenwert für jeden Korrelationswert in die Minimalenergiefunktion eingefügt. Jeder berechnete Eigenwert wird dann in aufsteigender Reihenfolge geordnet, um eine gewünschte Permutation für den Speicherlayout in der globalen Speichereinrichtung zu identifizieren.
-
In Schritt 36 wird die ausführbare binäre Datei modifiziert, um das Speicherlayout, wie in Schritt 35 bestimmt, zuzuordnen.
-
Die hierin beschriebenen Techniken identifizieren Signalgrößenpaare, die in unmittelbarer Nähe zueinander ausgeführte RAM-Speicherplätze nutzen (d. h. im Wesentlichen benachbarte ausführbare Anweisungen). Benachbarte Speicherplätze werden den Signalgrößen zugeordnet, von denen festgestellt wird, dass sie sich in den ausführbaren Anweisungen in enger Nähe zueinander befinden. Auf diese Weise werden entsprechende, häufig und im Wesentlichen sequentiell ausgeführte Signalgrößen im Wesentlichen Speicherplätzen in der globalen Speichereinrichtung zugeordnet, wodurch die Verarbeitungszeiten der CPU beim Suchen und Ermitteln der entsprechenden Speicherplätze reduziert werden. Als Ergebnis ordnet die hierin beschriebene Technik effektiv Speicherlayouts zu entsprechenden Signalgrößen von ausführbaren Anweisungen zu, die dicht aneinander liegen, um die Verarbeitungszeiten zu reduzieren. Dies verbessert den Wirkungsgrad der CPU und reduziert Engstellen.