A processor includes a store queue configured to detect a hit on a store
queue entry for a load being executed by the processor, and to forward
data from the store queue entry to provide a result for the load. The
store queue data is provided to the data cache, along with an indication
of how much data is being provided (e.g. byte enables). The data cache may
then fill in any additional data accessed by the load from cache data, and
provide a load result. Additionally, the store queue is configured to
detect if more than one store queue entry is hit (i.e. that more than one
store within the store queue updates at least one byte accessed by the
load), referred to as a multimatch. If a multimatch is detected, the store
queue retries the load. Subsequently, the load may be reexecuted and may
not multimatch (as entries are deleted upon completion of the
corresponding stores). The load may complete when it does not multimatch.
In one embodiment, the store queue independently detects hits on the upper
and lower portions of each store queue entry (e.g. doubleword portions)
and forwards from the upper and lower portions independently. Thus, a load
may hit one store queue entry for the lower portion of the data accessed
by the load and a different store queue entry for the upper portion of the
data accessed by the load without multimatch detection.
Un processor include una coda del deposito configurata per rilevare un colpo su un'entrata della coda del deposito per un carico che è eseguito dal processor e spedire i dati dal deposito faccia la coda l'entrata per fornire un risultato per il carico. I dati della coda del deposito sono forniti al nascondiglio di dati, con un'indicazione di quanti dati stanno fornendi (per esempio il byte permette). Il nascondiglio di dati può allora riempire tutti i dati supplementari raggiunto dal carico dai dati del nascondiglio e fornisce un risultato del carico. Ulteriormente, la coda del deposito è configurata per rilevare se più di un'entrata della coda del deposito è colpita (cioè che più di un deposito all'interno della coda del deposito aggiorna almeno un byte raggiunta dal carico), riferito a come multimatch. Se un multimatch è rilevato, la coda del deposito processa nuovamente il carico. Successivamente, il carico può essere eseguito ancora e non può multimatch (mentre le entrate sono cancellate a completamento dei depositi corrispondenti). Il carico può completare quando non multimatch. In un incorporamento, la coda del deposito rileva indipendentemente i colpi sulle parti superiori e più basse di ogni entrata della coda del deposito (per esempio parti di doppia parola) e spedisce dalle parti superiori e più basse indipendentemente. Quindi, un carico può colpire un'entrata della coda del deposito per la parte più bassa dei dati raggiunta dal carico e un'entrata differente della coda del deposito per la parte superiore dei dati raggiunta dal carico senza rilevazione del multimatch.