A method of maintaining coherency in a cache hierarchy of a processing unit
of a computer system, wherein the upper level (L1) cache includes a split
instruction/data cache. In one implementation, the L1 data cache is
store-through, and each processing unit has a lower level (L2) cache. When
the lower level cache receives a cache operation requiring invalidation of
a program instruction in the L1 instruction cache (i.e., a store operation
or a snooped kill), the L2 cache sends an invalidation transaction (e.g.,
icbi) to the instruction cache. The L2 cache is fully inclusive of both
instructions and data. In another implementation, the L1 data cache is
write-back, and a store address queue in the processor core is used to
continually propagate pipelined address sequences to the lower levels of
the memory hierarchy, i.e., to an L2 cache or, if there is no L2 cache,
then to the system bus. If there is no L2 cache, then the cache operations
may be snooped directly against the L1 instruction cache.
Un metodo di effettuare coerenza in una gerarchia del nascondiglio di un'unità di elaborazione di un sistema di elaborazione, in cui il nascondiglio superiore (L1) include un nascondiglio spaccato di instruction/data. In un'esecuzione, il nascondiglio di dati L1 è immagazzin-attraverso ed ogni unità di elaborazione ha un nascondiglio a livello più basso (L2). Quando il nascondiglio a livello più basso riceve un funzionamento del nascondiglio che richiede il invalidation di un'istruzione di programma nel nascondiglio di istruzione L1 (cioè, un funzionamento del deposito o una a snooped l'uccisione), il nascondiglio L2 trasmette una transazione di invalidation (per esempio, icbi) al nascondiglio di istruzione. Il nascondiglio L2 è completamente compreso sia delle istruzioni che dei dati. In un'altra esecuzione, il nascondiglio di dati L1 è write-back e una coda di indirizzo del deposito nel nucleo del processor è usata continuamente alle sequenze di indirizzo canalizzate propag ai più bassi livelli della gerarchia di memoria, cioè, ad un nascondiglio L2 o, se non ci è nascondiglio L2, allora al bus del sistema. Se non ci è nascondiglio L2, quindi i funzionamenti del nascondiglio possono essere snooped direttamente contro il nascondiglio di istruzione L1.