A line predictor is configured to speculatively fetch instructions
following a branch instruction. The line predictor stores a plurality of
lines that each contain instruction line information. Each line stored by
the line predictor includes a fetch address, information regarding one or
more instructions, and one or more next fetch addresses. In response to
receiving a fetch address, the line predictor is configured to provide
instruction line information corresponding to the one or more instructions
located at the fetch address to an alignment unit. The line predictor is
also configured to provide a next fetch address associated with the fetch
address to an instruction cache for speculative fetching and to a branch
prediction unit for a branch prediction. The next fetch address is further
fed back into the line predictor to generate the instruction line
information associated with it and a subsequent next fetch address. A next
fetch address may be the sequential address following the last instruction
associated with the instruction line information of the fetch address. If
an instruction within the instruction line information of the fetch
address is a branch instruction, however, the next fetch address may be
the target address of the branch instruction. The branch prediction unit
is configured to generate a branch prediction in response to receiving a
next fetch address if a branch instruction is detected in the instruction
line information of the next fetch address. The branch prediction is then
compared to a subsequent next fetch address. If the branch prediction
differs from a subsequent next fetch address, operations that were
initiated using the subsequent next fetch address are canceled, the
subsequent next fetch address is updated in the line predictor, and the
updated subsequent next fetch address is refetched.
Una linea preannunciatore è configurata per prendere speculativo le istruzioni dopo un'istruzione di ramo. La linea preannunciatore memorizza una pluralità di linee che ciascuno contiene la linea di istruzione le informazioni. Ogni linea immagazzinata dalla linea preannunciatore include un indirizzo di prend, le informazioni per quanto riguarda una o più istruzioni ed uno o più seguenti prendono gli indirizzi. In risposta a ricevere un indirizzo di prend, la linea preannunciatore è configurata per fornire la linea di istruzione le informazioni che corrispondono alle una o più istruzioni situate all'indirizzo di prend ad un'unità di allineamento. La linea preannunciatore inoltre è configurata per fornire un seguente prende l'indirizzo connesso con l'indirizzo di prend ad un nascondiglio di istruzione per prendere speculativo e ad un'unità di previsione del ramo per una previsione del ramo. Il seguenti prendono l'indirizzo più ulteriormente sono retroagiti nella linea preannunciatore per generare la linea di istruzione le informazioni connesse con esso e un seguente successivo prende l'indirizzo. Un seguente prende l'indirizzo può essere l'indirizzo sequenziale dopo l'ultima istruzione connessa con la linea di istruzione le informazioni dell'indirizzo di prend. Se un'istruzione all'interno della linea di istruzione le informazioni dell'indirizzo di prend è un'istruzione di ramo, tuttavia, il seguente prenda l'indirizzo può essere l'indirizzo dell'obiettivo dell'istruzione di ramo. L'unità di previsione del ramo è configurata per generare una previsione del ramo in risposta a ricevere un seguente prende l'indirizzo se un'istruzione di ramo è rilevata nella linea di istruzione le informazioni del seguente prende l'indirizzo. La previsione del ramo allora è confrontata ad un seguente successivo prende l'indirizzo. Se la previsione del ramo differisce da da un seguente successivo prenda l'indirizzo, funzionamenti che sono stati iniziati usando il seguente successivo prendono l'indirizzo sono annullati, il seguenti successivi prendono l'indirizzo sono aggiornati nella linea preannunciatore ed il seguenti successivi aggiornati prendono l'indirizzo sono refetched.