Scoreboarding

С Википедије, слободне енциклопедије

Scoreboarding је централизовани метод који се користи у рачунару CDC 6600 за динамичко планирање проточне обраде тако да се инструкције могу извршавати ван реда када нема конфилкта и када је хардвер доступан.[1] У scoreboard-у зависност података сваке инструкције се записује. Инструкције се пуштају тек када scoreboard одреди да нема конфликта између претходне и тренутне инструкције. Ако је инструкција стопирана због тога што није безбедно наставити, scoreboard надгледа проток извршавања инструкције док све зависности не буду сређене, пре спровођења стопирања.

Фазе[уреди | уреди извор]

Инструкције се декодирају редом и иду кроз следеће четири фазе:

  1. Издавање: Систем проверава који регистри ће бити читани и на које ће бити писано овом инструкцијом. Ова информација се памти јер ће бити потребна у следећим фазама. Како би избегли излазне зависности, инструкција се зауставља док се не заврше инструкције које желе да пишу у исти регистар. Инструкција се такође зауставља ако су захтеване инструкционе јединице заузете.
  2. Операнди читања: Након што су инструкције издате и правилно распоређене хардверским модулима, инструкција чека док сви операнди не постану доступни. Ова процедура решава зависности при читању јер регистри на које друга инструкција жели да пише се не сматрају доступним док по њима није писано.
  3. Извршавање: Када су учитани сви операнди, функционална јединица почиње његово извршење. Након резултат је спреман, scoreboard је обавештен.
  4. Писање резултата : У овој фази резултат треба да буде написан на оређени регистар. Међутим, ова операција је одложена док ранија инструкција (која намерава да прочита овај регистар) не заврши читање операнада. На овај начин, тзв. зависности података се могу решити.

Структура података[уреди | уреди извор]

За контролу извршења упутства, scoreboard одржава три статусне табеле:

  • Статус инструкције: показује у којој је инструкција фази.
  • Статус функционалне јединице:
    • Заузето: показује да ли се јединица користи.
    • Оп: Операција која се користи у јединици.
    • Фи: Регистар дестинације.
    • Фј, Фк: Source-register бројеви.
    • Qj,Qk: Функционалне јединице које ће производити изворне регистре Фј, Фк.
    • Рј, Рк: Заставе које показују када су Фј, Фк спремни.
  • 'Статус регистра: Показује која функцијска јединица ће писати резултат у исти.

Алгоритми[уреди | уреди извор]

Детаљан алгоритам за scoreboard је ниже:

 function issue(op, dst, src1, src2)
    wait until (!Busy[FU] AND !Result[dst]); // FU can be any functional unit that can execute operation op
    Busy[FU] ← Yes;
    Op[FU] ← op;
    Fi[FU] ← dst;
    Fj[FU] ← src1;
    Fk[FU] ← src2;
    Qj[FU] ← Result[src1];
    Qk[FU] ← Result[src2];
    Rj[FU] ← not Qj;
    Rk[FU] ← not Qk;
    Result[dst] ← FU;
 function read_operands(FU)
    wait until (Rj[FU] AND Rk[FU]);
    Rj[FU] ← No;
    Rk[FU] ← No;
 function execute(FU)
    // Execute whatever FU must do
 function write_back(FU)
    wait until (f {(Fj[f]≠Fi[FU] OR Rj[f]=No) AND (Fk[f]≠Fi[FU] OR Rk[f]=No)})
    foreach f do
        if Qj[f]=FU then Rj[f] ← Yes;
        if Qk[f]=FU then Rk[f] ← Yes;
    Result[Fi[FU]] ← 0;
    Busy[FU] ← No;

Напомене[уреди | уреди извор]

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

Референце[уреди | уреди извор]

  1. ^ Thornton, James E. (1965). „Parallel operation in the control data 6600”. Proceedings of the October 27–29, 1964, fall joint computer conference, part II: very high speed computer systems. AFIPS '64. San Francisco, California: ACM. стр. 33—40. doi:10.1145/1464039.1464045. 

Референце[уреди | уреди извор]

  • Glenford Myers, "Register scoreboarding on a microprocessor chip", United States Patent 4891753

Спољашње везе[уреди | уреди извор]