Înțelegerea slotului de întârziere a ramurilor și a preluării predicțiilor de ramură în instrucțiuni pipelining

Permiteți-mi să definesc:

  • Slot de întârziere a ramurii: În mod obișnuit, asamblatoarele reordonează instrucțiunile pentru a muta unele instrucțiuni imediat după instrucțiunea de ramificare, astfel încât instrucțiunea mutată să fie întotdeauna executată, indiferent dacă ramură este luată sau nu, fără a lăsa sistemul într-o stare inconsistentă.

  • Prelucrare predicție ramură: prezicând care va fi rezultatul condiției de ramificare și apoi preluând instrucțiunile din locația rezultată, astfel încât acestea să fie executate imediat după instrucțiunile de ramificare.

Acum , să luăm în considerare mai jos secvența de execuție (mai jos, F: instruction Fetch, D: instruction Decode, X: eXecute, M: Acces la memorie, W: Scrie înapoi):

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

De obicei, starea ramificării este evaluată și executată în etapa X. În această etapă, INSTR1 și INSTR2 sunt deja începute și acestea sunt instrucțiunile care pot fi afectate de alegerea dacă se utilizează întârzierea sucursalei sloturi sau ramuri de predicție predicție sau ambele. Nu am găsit niciun text pentru a discuta clar acest lucru. Așadar, am încercat să ghicesc după cum urmează:

  • Când le folosim pe amândouă, atunci secvența de instrucțiuni ar fi:

    BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch 
  • Când folosim doar predicția ramurilor, secvența de instrucțiuni ar fi:

    BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2 
  • Când folosim numai sloturi de întârziere a ramurilor, atunci secvența de instrucțiuni ar fi:

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

Sunt corect cu asta? Cum se întâmplă acest lucru pentru diferite cazuri? Sau mai sunt câteva detalii?

Comentarii

  • Nu ' nu scot " Când folosim doar secvența " de ramură: cum poate avea sloturi brach-delay? De asemenea, ar fi clarificator afișarea piesei de asamblare pe care pareți să o aveți.
  • (1) " Nu ' t grok " Când folosim doar secvența de ramură ": cum poate avea sloturi de întârziere brach? " – am reparat propoziția, am lăsat-o accidental incompletă. Sper că are sens acum. (2) Nu am obținut acest lucru: " De asemenea, afișarea piesei de asamblare pe care pareți să o aveți în antet ar fi clarificatoare. " vrei să spui, ar trebui să specific asamblorul cu care lucrez? Dacă da: citesc un capitol de canalizare din cartea " Organizare și proiectare computer " de Patterson. Deci, tratarea teoriei pure și rezolvarea problemelor de exercițiu.

Răspuns

Da, asta ar putea fi ceea ce s-ar întâmpla, deși nu-mi amintesc nicio arhitectură care să combine predicție și sloturi de întârziere: dacă aveți predicție, acesta poate rula (căutare într-o memorie mică) în paralel cu pasul de execuție, deci nu ar fi necesare sloturi de întârziere.

Comentarii

  • mulțumesc pentru confirmare, deoarece astfel de scenarii sunt acoperite în problemele de exercițiu ale cărții Arhitectura computerelor de Patterson. Oferă soluții directe fără a oferi nicio explicație. Nici capitolul conținutul discută acest lucru.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *