Comprensione dello slot di ritardo del ramo e del prefetch della previsione del ramo nella pipeline delle istruzioni

Fammi definire:

  • Branch delay slot: In genere gli assemblatori riordinano le istruzioni per spostare alcune istruzioni immediatamente dopo listruzione di branch, in modo tale che listruzione spostata venga sempre eseguita, indipendentemente dal fatto che branch viene preso o meno, senza lasciare il sistema in uno stato incoerente.

  • Prefetch previsione branch: prevedere quale sarà il risultato della condizione di branching e quindi precaricare le istruzioni dalla posizione risultante, in modo che vengano eseguite immediatamente dopo listruzione branch.

Ora , consideriamo la seguente sequenza di esecuzione (di seguito, F: istruzione Fetch, D: istruzione Decode, X: eXecute, M: accesso alla memoria, W: riscrittura):

BRANCH F D X M W INSTR1 F D X M W INSTR2 F D X M W INSTR3 F D X M W 

Di solito la condizione del ramo viene valutata ed eseguita nella fase X. A questo punto, INSTR1 e INSTR2 sono già avviati e queste sono le istruzioni che possono essere influenzate dalla nostra scelta di utilizzare o meno il branch delay prefetch di predizione di slot o branch o entrambi. Non ho trovato alcun testo per discuterne chiaramente. Quindi ho provato a indovinarlo come di seguito:

  • Quando li usiamo entrambi, la sequenza di istruzioni sarebbe:

    BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch 
  • Quando usiamo solo la previsione dei rami, la sequenza di istruzioni sarebbe:

    BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2 
  • Quando usiamo solo slot di ritardo del ramo, la sequenza di istruzioni sarebbe:

    BRANCH: branch-instruction INSTR1: branch-delay-slot-1 INSTR2: branch-delay-slot-2 

Ho ragione con questo? È così che accade effettivamente per casi diversi? O ci sono qualche dettaglio in più?

Commenti

  • Non ' l " Quando usiamo solo la sequenza branch ": come può avere brach-delay-slot? Inoltre, mostrare la parte dellassemblatore che sembra avere nellintestazione sarebbe più chiaro.
  • (1) " Io non ' t Grok " Quando usiamo solo branch " sequenza: come può avere brach-delay-slot? " – corretta la frase, lho lasciata accidentalmente incompleta. Spero abbia senso adesso. (2) Non ho capito: " Inoltre, sarebbe più chiaro mostrare il pezzo di assemblatore che sembra avere nellintestazione. " vuoi dire, dovrei specificare lassembler con cui sto lavorando? Se sì: sto leggendo il capitolo sul pipelining dal libro " Computer Organization and Design " di Patterson. Quindi affrontare la pura teoria e risolvere i problemi degli esercizi.

Rispondi

Sì, potrebbe essere quello che succederebbe, anche se non ricordo alcuna architettura che combini la previsione e gli slot di ritardo: se hai la previsione, può essere eseguita (ricerca in una piccola memoria) in parallelo con la fase di esecuzione, quindi non sarebbero necessari slot di ritardo.

Commenti

  • grazie per confermare, perché tali scenari sono trattati nellesercizio sui problemi del libro Computer Architecture di Patterson. Fornisce soluzioni dirette senza fornire alcuna spiegazione. Né il capitolo i contenuti ne parlano.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *