Ignore:
Timestamp:
Feb 12, 2009, 12:55:06 PM (15 years ago)
Author:
rosiere
Message:

1) decod_queue : add reg_LAST_SLOT.
2) Commit : insert on event -> to pop decod_queue. Head test : add information (speculative or not)
3) Context State / UPT : Branch miss and Load miss in same cycle.
4) Free List : Bank is on LSB not MSB.
5) Platforms : move data

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp

    r106 r108  
    2828    if (PORT_READ(in_NRESET) == 0)
    2929      {
    30         internal_BANK_PRIORITY = 0;
     30        reg_BANK_PRIORITY = 0;
    3131        for (uint32_t i=0; i<_param->_nb_bank; i++)
    3232          {
     
    5959            {
    6060              log_printf(TRACE,Free_List_unit,FUNCTION,"  * PUSH_GPR[%d]",i);
     61              log_printf(TRACE,Free_List_unit,FUNCTION,"    * bank    : %d",internal_PUSH_GPR_BANK[i]);
     62              log_printf(TRACE,Free_List_unit,FUNCTION,"    * num_reg : %d",PORT_READ(in_PUSH_GPR_NUM_REG [i]));
    6163
    62               _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(//_param->_mask_gpr &
    63                                                               PORT_READ(in_PUSH_GPR_NUM_REG [i]));
     64              _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(PORT_READ(in_PUSH_GPR_NUM_REG [i]));
    6465            }
    6566        // ==================================================
     
    7071            {
    7172              log_printf(TRACE,Free_List_unit,FUNCTION,"  * PUSH_SPR[%d]",i);
     73              log_printf(TRACE,Free_List_unit,FUNCTION,"    * bank    : %d",internal_PUSH_SPR_BANK[i]);
     74              log_printf(TRACE,Free_List_unit,FUNCTION,"    * num_reg : %d",PORT_READ(in_PUSH_SPR_NUM_REG [i]));
    7275
    73               _spr_list [internal_PUSH_SPR_BANK[i]].push_back(//_param->_mask_spr &
    74                                                               PORT_READ(in_PUSH_SPR_NUM_REG [i]));
     76              _spr_list [internal_PUSH_SPR_BANK[i]].push_back(PORT_READ(in_PUSH_SPR_NUM_REG [i]));
    7577            }
    7678
    77         if (_param->_priority == PRIORITY_ROUND_ROBIN)
    78           internal_BANK_PRIORITY = (internal_BANK_PRIORITY+1)%_param->_nb_bank_by_pop;
     79        if (_param->_priority == PRIORITY_ROUND_ROBIN)
     80          reg_BANK_PRIORITY = (reg_BANK_PRIORITY+1)%_param->_nb_bank_by_pop;
    7981
    8082#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Free_List_unit == true)
     
    8385     
    8486          log_printf(TRACE,Free_List_unit,FUNCTION,"  * Dump Free List");
    85          
    8687          for (uint32_t i=0; i<_param->_nb_bank; ++i)
    8788            {
     89              log_printf(TRACE,Free_List_unit,FUNCTION,"    * GPR [%d] - NB_ELT : %d",i,_gpr_list[i].size());
     90
    8891              uint32_t j=0;
    89               for (std::list<Tgeneral_address_t>::iterator it=_gpr_list->begin();
    90                    it!=_gpr_list->end();
     92              for (std::list<Tgeneral_address_t>::iterator it=_gpr_list[i].begin();
     93                   it!=_gpr_list[i].end();
    9194                   )
    9295                {
     
    9598                  for (uint32_t x=0; x<limit; x++)
    9699                    {
    97                       if (it==_gpr_list->end())
     100                      if (it==_gpr_list[i].end())
    98101                        break;
    99102                      else
     
    108111          for (uint32_t i=0; i<_param->_nb_bank; ++i)
    109112            {
     113              log_printf(TRACE,Free_List_unit,FUNCTION,"    * SPR [%d] - NB_ELT : %d",i,_spr_list[i].size());
     114
    110115              uint32_t j=0;
    111               for (std::list<Tspecial_address_t>::iterator it=_spr_list->begin();
    112                    it!=_spr_list->end();
     116              for (std::list<Tspecial_address_t>::iterator it=_spr_list[i].begin();
     117                   it!=_spr_list[i].end();
    113118                   )
    114119                {
     
    117122                  for (uint32_t x=0; x<limit; x++)
    118123                    {
    119                       if (it==_spr_list->end())
     124                      if (it==_spr_list[i].end())
    120125                        break;
    121126                      else
     
    132137#ifdef DEBUG_TEST
    133138        if (1)
     139          for (uint32_t i=0; i<_param->_nb_bank; ++i)
    134140          {
    135             for (std::list<Tgeneral_address_t>::iterator it1=_gpr_list->begin();
    136                  it1!=_gpr_list->end();
     141            for (std::list<Tgeneral_address_t>::iterator it1=_gpr_list[i].begin();
     142                 it1!=_gpr_list[i].end();
    137143                 ++it1
    138144                 )
     
    141147
    142148                it2 ++;
    143                 while (it2 != _gpr_list->end())
     149                while (it2 != _gpr_list[i].end())
    144150                  {
    145151                    if (*it1 == *it2)
     
    149155              }
    150156
    151             for (std::list<Tspecial_address_t>::iterator it1=_spr_list->begin();
    152                  it1!=_spr_list->end();
     157            for (std::list<Tspecial_address_t>::iterator it1=_spr_list[i].begin();
     158                 it1!=_spr_list[i].end();
    153159                 ++it1
    154160                 )
     
    157163
    158164                it2 ++;
    159                 while (it2 != _spr_list->end())
     165                while (it2 != _spr_list[i].end())
    160166                  {
    161167                    if (*it1 == *it2)
Note: See TracChangeset for help on using the changeset viewer.