Frage

In unserem Embedded-System (mit einem PowerPC-Prozessor), wollen wir den Prozessor-Cache deaktivieren. Welche Schritte müssen wir nehmen?

ein bisschen Um zu klären, muss die Anwendung in Frage als konstant eine hohe Ausführungsgeschwindigkeit, wie wir es machen können. Variability in den gleichen Codepfad Ausführung ist nicht akzeptabel. Dies ist der Grund, den Cache zu deaktivieren.

War es hilfreich?

Lösung

ich irgendwie spät auf die Frage bin, und es ist auch schon eine Weile her, seit ich die alle Low-Level auf NPK Prozessor init Code tat, aber ich glaube, der Cache & MMU ist ziemlich eng gekoppelt erinnern (musste man aktiviert sein, um die andere zu ermöglichen) und I denkt in den MMU-Seitentabellen, die Sie zwischenspeicherbar Attribut definieren können.

Also meinen Punkt ist: wenn es eine bestimmte Untergruppe von Code, der in deterministischer Zeit ausgeführt werden muss, vielleicht haben Sie diesen Code eingeben (über eine Linker-Befehlsdatei) in einem Bereich des Speichers, der als Nicht-Cache gespeichert wird in der Seite definiert ist, Tabellen? Auf diese Weise alle der Code, der aus dem Cache profitieren kann / soll der Fall ist, und die (hoffentlich) Teilmenge von Code, der sollte nicht, nicht.

Ich würde damit umgehen auf diese Weise trotzdem, so dass später, wenn Sie Caching für einen Teil des Systems aktivieren möchten, müssen Sie nur ein paar Bits in den MMU-Seitentabellen drehen, statt (Wieder-) das Schreiben der init-Code einzurichten alle Seitentabellen und Caching.

Andere Tipps

Von dem E600-Referenzhandbuch:
Die HID0 Sonderregister enthält mehrere Bits, die ungültig machen, deaktivieren und die Befehls- und Datencaches sperren.

Sie sollten verwenden HID0 [DCE] = 0, um die Daten-Cache zu deaktivieren.
Sie sollten verwenden HID0 [ICE] = 0, um den Befehls-Cache zu deaktivieren.

Beachten Sie beim Einschalten, dass beiden Caches deaktiviert sind. Sie müssen diesen Code in der Montage schreiben.

Vielleicht möchten Sie nicht deaktivieren Cache global, dass Sie nur wollen es für einen bestimmten Adressbereich deaktivieren?

Bei einigen Prozessoren können Sie konfigurieren TLB (Translation Lookaside Buffer) Einträge für Adressbereiche, so dass jeder Bereich Caching aktiviert oder deaktiviert sein können. So können Sie das Caching für Speicher deaktivieren Mapped I / O und für den Hauptblock RAM-Caching noch verlassen.

Die einzigen PowerPC ich dies getan habe, war ein PowerPC 440EP (von IBM, dann AMCC), so dass ich weiß nicht, ob alle PowerPCs auf die gleiche Weise arbeiten.

Welche Art von PPC Kern ist es? Die Cache-Steuerung ist sehr unterschiedlich zwischen den verschiedenen Kernen von verschiedenen Anbietern ... auch im allgemeinen den Cache zu deaktivieren eine wirklich schlechte Sache betrachtet ist an der Maschine zu tun. Leistung wird so kriechend langsam, dass Sie tun würden, als auch mit einem alten 8-Bit-Prozessor (Übertreibung ein bisschen). Einige ARM-Varianten haben TCMs, eng gekoppelten Erinnerungen, dass die Arbeit anstelle von Caches, aber ich bin nicht bekannt, dass PPC-Variante mit dieser Anlage.

Vielleicht eine bessere Lösung ist, die Level-1-Caches aktiv, und verwenden Sie die L2-Cache auf dem Chip als statisch RAM statt abgebildet? Das ist an modernen PowerQUICC-Geräte zumindest.

den Cache ausschalten wird dir nicht gut überhaupt. Ihre Ausführungsgeschwindigkeit wird durch eine Größenordnung fallen. Sie würden nie ein System wie dieses Schiff, so seine Leistung unter diesen Bedingungen nicht von Interesse ist.

eine stetige Ausführungsgeschwindigkeit zu erreichen, sollten Sie eines dieser Ansätze:

1) einige oder alle Cache sperren. Alle aktuellen PowerPC-Chips von Freescale, IBM und AMCC bieten diese Funktion.

2) Wenn es ein Freescale-Chip mit L2-Cache ist, Mapping-Teil dieser Cache als On-Chip-Speicher in Betracht ziehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top