Бафер за промену редоследа

Бафер за промену редоследа (енгл. re-order buffer (ROB)) се користи у Томасуло алгоритму за ванредно извршавање инструкција. Он дозвољава инструкцијама да буду привржене у реду.

Обично постоје три фазе инструкција: издавање, извршавање и писање резултата. У Томасуло алгоритму, постоји додатна фаза "привржење". У овој фази, резултати инструкција ће бити сачувани у регистру или меморији. У фази писања резултата, резултати се ставе у бафер за промену редоследа. Цео садржај овог бафера се онда може користити при извршавању других инструкција које зависе од ове.

Постоје додатна поља у сваком уносу у бафер:

  • Тип инструкције (скок, постављање у меморију, постављање у регистар)
  • Дестинација (адреса меморије или регистарски број)
  • Резултат (вредност која иде у дестинацију или индикација (не)успешног скока)
  • Валидност (да ли резултат већ постоји)

Додатне предности овог бафера су омогућавање прецизних изузетака и једноставне rollback контроле циљних адресних предвиђања (гранање или скок). РОБ ради тако што чува инструкције редом којим их је увезао. РОБ-у такође може да се приступи са стране јер свака резервациона станица има додатни параметар који показује на инструкцију у РОБ-у. Када предвиђање скока није тачно, или се деси непоправиви изузетак у инструкцијском току, РОБ се празни тако да не садржи инструкције и резервационе станице су постављене на почетак.

Литература

уреди