A method and apparatus for purging data from a middle cache level without
purging the corresponding data from a lower cache level (i.e., a cache
level closer to the processor using the data), and replacing the purged
first data with other data of a different memory address than the purged
first data, while leaving the data of the first cache line in the lower
cache level. In some embodiments, in order to allow such mid-level
purging, the first cache line must be in the "shared state" that allows
reading of the data, but does not permit modifications to the data (i.e.,
modifications that would have to be written back to memory). If it is
desired to modify the data, a directory facility will issue a purge to all
caches of the shared-state data for that cache line, and then the
processor that wants to modify the data will request an exclusive-state
copy to be fetched to its lower-level cache and to all intervening levels
of cache. Later, when the data in the lower cache level is modified, the
modified data can be moved back to the original memory from the caches. In
some embodiments, a purge of all shared-state copies of the first
cache-line data from any and all caches having copies thereof is performed
as a prerequisite to doing this exclusive-state fetch.
Eine Methode und ein Apparat für das Bereinigen von von Daten von einem mittleren Pufferspeicherniveau, ohne die entsprechenden Daten von einem untereren Pufferspeicherniveau (d.h., ein Pufferspeicherniveau näeher an dem Prozessor mit den Daten), und die Bereinigungsersten Daten mit anderen Daten einer anderen Speicheradresse als die Bereinigungsersten Daten zu ersetzen zu bereinigen, beim Lassen der Daten des ersten Pufferspeichers zeichnen im untereren Pufferspeicherniveau. In einigen Verkörperungen zwecks solches Mittelstufenbereinigen zu erlauben, muß die erste Pufferspeicherlinie im "geteilten Zustand" sein, der Messwert der Daten erlaubt, aber ermöglicht nicht Änderungen an den Daten (d.h., Änderungen, die zurück zu Gedächtnis würden geschrieben werden müssen). Wenn es gewünscht wird, um die Daten zu ändern, gibt ein Verzeichnis-Service eine Bereinigung zu allen Pufferspeichern der Teilenzustand Daten für diese Pufferspeicherlinie heraus, und dann bittet der Prozessor, der die Daten ändern möchte, um eine Exklusivzustand Kopie, zu seinem auf der unteren Ebenepufferspeicher und zu allen intervenierenden Niveaus des Pufferspeichers geholt zu werden. Später wenn die Daten im untereren Pufferspeicherniveau geändert werden, können die geänderten Daten zurück zu dem ursprünglichen Gedächtnis von den Pufferspeichern verschoben werden. In einigen Verkörperungen wird eine Bereinigung aller Teilenzustand Kopien der ersten Pufferspeicher-Linie Daten von irgendwelchen und alle Pufferspeicher, die Kopien davon haben, durchgeführt, während eine Vorbedingung zum Tun dieses Exklusivzustandes holen.