Speicherabgebildete, zwischengespeicherte Ansicht des externen QSPI-Flash. Der Cache ist mit 32 KB mit 4-Wege-Assoziativität angegeben.
Bedeutet das, dass mein externer QSPI-Flash nur 32 KB groß ist oder auf 32 KB Speicher abgebildet wurde?
Bedeutet die Cache-Ansicht, dass bei wiederholtem Lesen die Daten im Prozessor zwischengespeichert werden und nicht tatsächlich auf den Speicher zugegriffen wird?
Die Verwirrung kommt wahrscheinlich von der Formulierung: "speicherabgebildete, zwischengespeicherte Ansicht" Die Tatsache, dass es sich um eine speicherabgebildete Ansicht handelt, hat nichts damit zu tun, dass es zwischengespeichert ist. Die Größe des Speichermappings ist unabhängig von der Größe des Caches.
Also, ich werde es für Sie aufschlüsseln:
Speicherabgebildet
Bedeutet, dass Sie direkt auf den Inhalt des externen Speichers zugreifen können, indem Sie den Adressraum des Hauptspeichers (an einer bestimmten Adresse) lesen/schreiben. Impliziert normalerweise auch, dass Sie, wenn der externe Speicher ausführbaren Code enthält, diesen Code einfach durch Verzweigen ausführen können: Sie müssen den Code vor dem Verzweigen nicht in den internen Speicher kopieren. Dies wird durch die MCU erreicht, die intern jeden Zugriff auf diesen Teil des Speichers in die erforderlichen QSPI-Befehle übersetzt, um den externen Flash im laufenden Betrieb zu lesen. An dieser Stelle bedeutet dies nicht, dass es einen Cache gibt.
Zwischengespeichert
Bedeutet, dass aus diesem Teil des Speichers gelesene Daten in einem kleineren Zwischenspeicherbereich (nicht direkt zugänglich) platziert werden, den die MCU zuerst nachschlagen wird, wenn erneut auf den externen Speicher zugegriffen werden muss. Wenn auf dieselben Daten zweimal zugegriffen wird, muss auf diese Weise nicht erneut auf den externen Speicher zugegriffen werden. Die Daten aus dem Cache werden abgerufen, was viel schneller ist.
Dies ist in der Tat sehr nützlich für speicherabgebildetes QSPI. Die QSPI-Schnittstelle ist viel langsamer als die CPU: Jeder Lese-/Schreibvorgang muss in Befehle übersetzt werden, die seriell auf einigen Signalleitungen gesendet werden, was viel Overhead hinzufügt. Um diesen Overhead zu reduzieren, versuchen Sie normalerweise, mehrere Bytes für jeden QSPI-Zugriff zu lesen und sie in einem Cache zu speichern, damit Sie es bereit haben, wenn der nächste Lesevorgang das benachbarte Byte adressiert (was wahrscheinlich ist).
32kB
Hier ist dies die Größe des Caches, nicht die Größe der Speicherkarte. Die Größe der Memory-Map ist normalerweise groß genug für die gesamte Größe des externen Speichers (siehe detaillierte Spezifikationen).
4-Wege-Assoziativität
So ist der Cache intern organisiert. Der Cache ist viel kleiner als der externe Speicher. Der naive Weg, einen Cache zu implementieren, wäre, alle Bytes, auf die kürzlich zugegriffen wurde, zusammen mit ihren entsprechenden Adressen zu speichern und bei nachfolgenden Zugriffen den gesamten Cache zu überprüfen, ob die Adresse eines vorhandenen Bytes der Adresse entspricht, auf die zugegriffen wurde. Das ist extrem ineffizient. Für jedes Byte müssten Sie die Adresse speichern, was die erforderliche Größe für den Cache mit fünf multipliziert (unter der Annahme von 32-Bit-Adressen: Sie benötigen für jedes Byte den Datenbytewert plus vier Bytes für die entsprechende Adresse) und Bei jedem Zugriff müssen Sie die Adresse mit 32768 möglichen Werten vergleichen, um zu prüfen, ob sie sich bereits im Cache befindet oder nicht.
Also, hier ist, wie es gemacht wird:
Das ist die Cache-Assoziativität: Die Anzahl der Cache-Zeilen pro Satz. Dies gibt einen Hinweis auf die Wahrscheinlichkeit, dass Sie Daten im Cache abrufen können, wenn sie zuvor gelesen wurden. Je größer die Assoziativität, desto besser, aber es macht den Cache komplexer und teurer in der Herstellung. Und irgendwann sind die Vorteile es nicht einmal mehr wert. 4 ist nicht schlecht (weshalb sie stolz damit werben).
Der Satz ist ziemlich eindeutig:
Der Cache ist mit 32 KB mit 4-Wege-Assoziativität angegeben.
So,
Bedeutet das, dass mein externer QSPI-Flash nur 32 KB groß ist oder auf 32 KB Speicher abgebildet wurde?
Weder. Der Cache ist 32 kB groß (nicht Kb, das ist Kelvinbit! Achten Sie auf Ihre Großschreibung!).
Bedeutet die Cache-Ansicht, dass bei wiederholtem Lesen die Daten im Prozessor zwischengespeichert werden und nicht tatsächlich auf den Speicher zugegriffen wird?
Nun, siehe Wikipedia über Caches. Ja, ein wiederholtes Lesen innerhalb der gecachten Regionen ruft die Informationen aus dem Cache ab. Das macht ein Cache.
Nein, dieser Cache ist nicht unbedingt Teil des Prozessors, sondern der Flash-Controller-Peripherie.
Markus Müller
Benutzer105652
ManyYack
Timmy Brolin