Ignore:
Timestamp:
Mar 27, 2008, 11:04:49 AM (16 years ago)
Author:
rosiere
Message:

Add :

  • Execute_loop (must be test systemC)
  • Prediction
    • Direction : predifined scheme
    • Branch Target Buffer
  • iFetch_unit
    • ifetch_queue
    • pc management
  • Decod_unit
    • coming soon : support for custom operation
  • Rename_unit
    • RAT
    • Free_list
    • Dependence RAW check
    • Load store unit pointer
  • New Environnement (hierarchy_memory will remove in a next version)


Modif :

  • Manage Custom Operation
  • All component in execute_loop to use the new statistics management

Not Finish :

  • Return Address Stack
  • Environnement
Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp

    r71 r78  
    77 */
    88
    9 #define NB_ITERATION 1
     9#define NB_ITERATION 16
    1010
    1111#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h"
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h

    r75 r78  
    3737  public : ~Parameters () ;
    3838
    39   public :        std::string  msg_error  (void);
     39  public :        Parameters_test msg_error  (void);
    4040  public :        std::string   print      (uint32_t depth);
    4141  public : friend std::ostream& operator<< (std::ostream& output_stream,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h

    r75 r78  
    5252  private   : counter_t                      * _stat_nb_read;
    5353  private   : counter_t                      * _stat_nb_write;
    54   private   : counter_t                      * _stat_average_read ;
    55   private   : counter_t                      * _stat_average_write;
    56   private   : counter_t                      * _stat_percent_use_read ;
    57   private   : counter_t                      * _stat_percent_use_write;
    5854#endif
    5955
     
    8884
    8985    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    90   private   : SC_REGISTER (Tdata_t)        ** reg_DATA         ;
     86  private   : Tdata_t * reg_DATA;
    9187
    9288    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp

    r75 r78  
    1717namespace registerfile_monolithic    {
    1818
    19   std::string Parameters::msg_error(void)
     19  Parameters_test Parameters::msg_error(void)
    2020  {
    21     std::string msg = "";
     21    Parameters_test test("RegisterFile_Monolithic");
    2222
    2323    if ((8*sizeof(Tdata_t)) < _size_word)
    24       {
    25         msg += "  - type \"Tdata_t\" is too little to the size defined by size_word\n";
    26         msg += "    * size_word                       : " + toString(_size_word) + "\n";
    27         msg += "    * Tdata_t                   (bits): " + toString(8*(sizeof(Tdata_t))) + "\n";
    28       }
     24      test.error("Type \"Tdata_t\" is too little to the size defined by size_word");
    2925
    3026    if ((8*sizeof(Taddress_t)) < log2(_nb_word))
    31       {
    32         msg += "  - type \"Taddress_t\" is too little to the size defined by nb_word\n";
    33         msg += "    * nb_word                         : " + toString(_nb_word)    + "\n";
    34         msg += "      > size                   (bits) : " + toString(log2(_nb_word)) + "\n";
    35         msg += "    * Taddress_t               (bits) : " + toString(8*(sizeof(Taddress_t))) + "\n";
    36       }
     27      test.error("type \"Taddress_t\" is too little to the size defined by nb_word");
    3728
    3829    if ((_nb_port_read + _nb_port_read_write) < 1)
    39       {
    40         msg += "  - you need a read port\n";
    41         msg += "    * nb_port_read                    : " + toString(_nb_port_read)       + "\n";
    42         msg += "    * nb_port_read_write              : " + toString(_nb_port_read_write) + "\n";
    43       }
     30      test.error("you need a read port");
    4431
    4532    if ((_nb_port_write + _nb_port_read_write) < 1)
    46       {
    47         msg += "  - you need a write port\n";
    48         msg += "    * nb_port_write                   : " + toString(_nb_port_write)      + "\n";
    49         msg += "    * nb_port_read_write              : " + toString(_nb_port_read_write) + "\n";
    50       }
    51 //     if (_nb_word < 2)
    52 //       {
    53 //         msg += "  - nb_word must be >= 2\n";
    54 //         msg += "    * nb_word                         : " + toString(_nb_word)    + "\n";
    55 //       }
     33      test.error("you need a write port");
    5634
    57     return msg;
     35    return test;
    5836  };
    5937
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp

    r75 r78  
    120120
    121121    // ----- Register
    122     reg_DATA = new SC_REGISTER (Tdata_t) * [_param->_nb_word];
     122    reg_DATA = new Tdata_t [_param->_nb_word];
    123123   
    124     for (uint32_t i=0; i<_param->_nb_word; i++)
    125       {
    126         std::string rename = "reg_DATA["  + toString(i) + "]";
    127         reg_DATA [i]  = new SC_REGISTER (Tdata_t) (rename.c_str());
    128       }
    129 
    130124#ifdef POSITION
    131125    _component->generate_file();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp

    r71 r78  
    2929            else
    3030              address = 0;
    31             Tdata_t    data    = REGISTER_READ(reg_DATA[address]);
     31            Tdata_t    data    = reg_DATA[address];
    3232
    3333            log_printf(TRACE,RegisterFile,"genMealy_read","[%d] -> %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
    3434
    35 #ifdef STATISTICS
    36             (*_stat_nb_read) ++;
    37 #endif   
    3835            // Write in registerFile
    3936            PORT_WRITE(out_READ_DATA[i],data);
     
    6158              address = 0;
    6259           
    63             data = REGISTER_READ(reg_DATA[address]);
     60            data = reg_DATA[address];
    6461
    6562            log_printf(TRACE,RegisterFile,"genMealy_read","[%d] -> %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_statistics_declaration.cpp

    r75 r78  
    2323    _stat_nb_read           = _stat->create_variable("nb_read" );
    2424    _stat_nb_write          = _stat->create_variable("nb_write");
    25    
    26     _stat_average_read      = _stat->create_counter("average_read" , "", "Average read by cycle");
    27     _stat_average_write     = _stat->create_counter("average_write", "", "Average write by cycle");
    2825
    29     _stat_percent_use_read  = _stat->create_counter("percent_use_read" , "%", "Read port usage");
    30     _stat_percent_use_write = _stat->create_counter("percent_use_write", "%", "Write port usage");
     26    _stat->create_expr_average_by_cycle("average_read" , "nb_read" , "", "Average read by cycle" );
     27    _stat->create_expr_average_by_cycle("average_write", "nb_write", "", "Average write by cycle");
    3128
    32     _stat->create_expr("average_read" , "/ nb_read  cycle", false);
    33     _stat->create_expr("average_write", "/ nb_write cycle", false);
    34 
    35     _stat->create_expr("percent_use_read" , "/ * average_read  100 " + toString(_param->_nb_port_read +_param->_nb_port_read_write), false);
    36     _stat->create_expr("percent_use_write", "/ * average_write 100 " + toString(_param->_nb_port_write+_param->_nb_port_read_write), false);
     29    _stat->create_expr_percent         ("percent_use_read" , "average_read" , toString(_param->_nb_port_read +_param->_nb_port_read_write), "Percent read by cycle" );
     30    _stat->create_expr_percent         ("percent_use_write", "average_write", toString(_param->_nb_port_write+_param->_nb_port_read_write), "Percent write by cycle");
    3731
    3832  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp

    r75 r78  
    3838
    3939            // Write in registerFile
    40             REGISTER_WRITE(reg_DATA[address],data);
     40            reg_DATA[address] = data;
    4141          }
    4242      }
     
    6262               
    6363                // Write in registerFile
    64                 REGISTER_WRITE(reg_DATA[address],data);
     64                reg_DATA[address] = data;
    6565              }
    6666#ifdef STATISTICS
Note: See TracChangeset for help on using the changeset viewer.