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/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit
Files:
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/src/test.cpp

    r77 r78  
    5252  public : Tpacket_t          _packet_id      ;
    5353//public : Toperation_t       _operation      ;
    54 //public : Ttype_t            _type           ;
     54  public : Ttype_t            _type           ;
    5555  public : Tcontrol_t         _write_rd       ;
    5656  public : Tgeneral_address_t _num_reg_rd     ;
     
    6868                  Tpacket_t          packet_id      ,
    6969//                Toperation_t       operation      ,
    70 //                Ttype_t            type           ,
     70                  Ttype_t            type           ,
    7171                  Tcontrol_t         write_rd       ,
    7272                  Tgeneral_address_t num_reg_rd     ,
     
    8484    _packet_id      = packet_id    ;
    8585//  _operation      = operation    ;
    86 //  _type           = type         ;
     86    _type           = type         ;
    8787    _write_rd       = write_rd     ;
    8888    _num_reg_rd     = num_reg_rd   ;
     
    128128  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_PACKET_ID    ," in_EXECUTE_UNIT_OUT_PACKET_ID    ",Tpacket_t         ,_param->_nb_execute_unit);
    129129//ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_OPERATION    ," in_EXECUTE_UNIT_OUT_OPERATION    ",Toperation_t      ,_param->_nb_execute_unit);
    130 //ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_TYPE         ," in_EXECUTE_UNIT_OUT_TYPE         ",Ttype_t           ,_param->_nb_execute_unit);
     130  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_TYPE         ," in_EXECUTE_UNIT_OUT_TYPE         ",Ttype_t           ,_param->_nb_execute_unit);
    131131  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_WRITE_RD     ," in_EXECUTE_UNIT_OUT_WRITE_RD     ",Tcontrol_t        ,_param->_nb_execute_unit);
    132132  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_NUM_REG_RD   ," in_EXECUTE_UNIT_OUT_NUM_REG_RD   ",Tgeneral_address_t,_param->_nb_execute_unit);
     
    145145  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_PACKET_ID       ,"out_WRITE_UNIT_IN_PACKET_ID       ",Tpacket_t         ,_param->_nb_write_unit  );
    146146//ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_OPERATION       ,"out_WRITE_UNIT_IN_OPERATION       ",Toperation_t      ,_param->_nb_write_unit  );
    147 //ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_TYPE            ,"out_WRITE_UNIT_IN_TYPE            ",Ttype_t           ,_param->_nb_write_unit  );
     147  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_TYPE            ,"out_WRITE_UNIT_IN_TYPE            ",Ttype_t           ,_param->_nb_write_unit  );
    148148  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_WRITE_RD        ,"out_WRITE_UNIT_IN_WRITE_RD        ",Tcontrol_t        ,_param->_nb_write_unit  );
    149149  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_NUM_REG_RD      ,"out_WRITE_UNIT_IN_NUM_REG_RD      ",Tgeneral_address_t,_param->_nb_write_unit  );
     
    176176  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_PACKET_ID    ,_param->_nb_execute_unit);
    177177//INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_OPERATION    ,_param->_nb_execute_unit);
    178 //INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_TYPE         ,_param->_nb_execute_unit);
     178  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_TYPE         ,_param->_nb_execute_unit);
    179179  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_WRITE_RD     ,_param->_nb_execute_unit);
    180180  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_NUM_REG_RD   ,_param->_nb_execute_unit);
     
    198198  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_PACKET_ID       ,_param->_nb_write_unit  );
    199199//INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_OPERATION       ,_param->_nb_write_unit  );
    200 //INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_TYPE            ,_param->_nb_write_unit  );
     200  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_TYPE            ,_param->_nb_write_unit  );
    201201  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_WRITE_RD        ,_param->_nb_write_unit  );
    202202  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_NUM_REG_RD      ,_param->_nb_write_unit  );
     
    282282                                          nb_request_in,
    283283                                          //range<Toperation_t      > (rand(), _param->_size_operation       ),
    284                                           //range<Ttype_t           > (rand(), _param->_size_type            ),
     284                                          range<Ttype_t           > (rand(), _param->_size_type            ),
    285285                                          range<Tcontrol_t        > (rand(), 2                             ),
    286286                                          range<Tgeneral_address_t> (rand(), _param->_size_general_register),
     
    314314                  in_EXECUTE_UNIT_OUT_PACKET_ID            [i] ->write(request[i].front()._packet_id            );
    315315//                in_EXECUTE_UNIT_OUT_OPERATION            [i] ->write(request[i].front()._operation            );
    316 //                in_EXECUTE_UNIT_OUT_TYPE                 [i] ->write(request[i].front()._type                 );
     316                  in_EXECUTE_UNIT_OUT_TYPE                 [i] ->write(request[i].front()._type                 );
    317317                  in_EXECUTE_UNIT_OUT_WRITE_RD             [i] ->write(request[i].front()._write_rd             );
    318318                  in_EXECUTE_UNIT_OUT_NUM_REG_RD           [i] ->write(request[i].front()._num_reg_rd           );
     
    368368                TEST(Tcontext_t        ,out_WRITE_UNIT_IN_OOO_ENGINE_ID        [i]->read(), request[execute_unit].front()._ooo_engine_id        );
    369369//              TEST(Toperation_t      ,out_WRITE_UNIT_IN_OPERATION            [i]->read(), request[execute_unit].front()._operation            );
    370 //              TEST(Ttype_t           ,out_WRITE_UNIT_IN_TYPE                 [i]->read(), request[execute_unit].front()._type                 );
     370                TEST(Ttype_t           ,out_WRITE_UNIT_IN_TYPE                 [i]->read(), request[execute_unit].front()._type                 );
    371371                TEST(Tcontrol_t        ,out_WRITE_UNIT_IN_WRITE_RD             [i]->read(), request[execute_unit].front()._write_rd             );
    372372                TEST(Tgeneral_address_t,out_WRITE_UNIT_IN_NUM_REG_RD           [i]->read(), request[execute_unit].front()._num_reg_rd           );
     
    405405  delete []  in_EXECUTE_UNIT_OUT_PACKET_ID    ;
    406406//delete []  in_EXECUTE_UNIT_OUT_OPERATION    ;
    407 //delete []  in_EXECUTE_UNIT_OUT_TYPE         ;
     407  delete []  in_EXECUTE_UNIT_OUT_TYPE         ;
    408408  delete []  in_EXECUTE_UNIT_OUT_WRITE_RD     ;
    409409  delete []  in_EXECUTE_UNIT_OUT_NUM_REG_RD   ;
     
    423423  delete [] out_WRITE_UNIT_IN_PACKET_ID       ;
    424424//delete [] out_WRITE_UNIT_IN_OPERATION       ;
    425 //delete [] out_WRITE_UNIT_IN_TYPE            ;
     425  delete [] out_WRITE_UNIT_IN_TYPE            ;
    426426  delete [] out_WRITE_UNIT_IN_WRITE_RD        ;
    427427  delete [] out_WRITE_UNIT_IN_NUM_REG_RD      ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h

    r77 r78  
    1717#include "Common/include/ToString.h"
    1818#include "Common/include/Debug.h"
     19#include "Behavioural/include/Identification.h"
    1920
    20 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Types.h"
     21#include "Behavioural/include/Types.h"
    2122#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h"
    2223#ifdef STATISTICS
     
    7172  public    : SC_IN (Tpacket_t         )   **  in_EXECUTE_UNIT_OUT_PACKET_ID      ;
    7273//public    : SC_IN (Toperation_t      )   **  in_EXECUTE_UNIT_OUT_OPERATION      ;
    73 //public    : SC_IN (Ttype_t           )   **  in_EXECUTE_UNIT_OUT_TYPE           ;
     74  public    : SC_IN (Ttype_t           )   **  in_EXECUTE_UNIT_OUT_TYPE           ;
    7475  public    : SC_IN (Tcontrol_t        )   **  in_EXECUTE_UNIT_OUT_WRITE_RD       ;
    7576  public    : SC_IN (Tgeneral_address_t)   **  in_EXECUTE_UNIT_OUT_NUM_REG_RD     ;
     
    9091  public    : SC_OUT(Tpacket_t         )   ** out_WRITE_UNIT_IN_PACKET_ID      ;
    9192//public    : SC_OUT(Toperation_t      )   ** out_WRITE_UNIT_IN_OPERATION      ;
    92 //public    : SC_OUT(Ttype_t           )   ** out_WRITE_UNIT_IN_TYPE           ;
     93  public    : SC_OUT(Ttype_t           )   ** out_WRITE_UNIT_IN_TYPE           ;
    9394  public    : SC_OUT(Tcontrol_t        )   ** out_WRITE_UNIT_IN_WRITE_RD       ;
    9495  public    : SC_OUT(Tgeneral_address_t)   ** out_WRITE_UNIT_IN_NUM_REG_RD     ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h

    r77 r78  
    1010
    1111#include "Behavioural/include/Parameters.h"
     12#include "Behavioural/include/Types.h"
    1213#include "Common/include/Debug.h"
    13 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Types.h"
     14#include "Behavioural/include/Identification.h"
    1415
    1516namespace morpheo {
     
    7071  public : ~Parameters ();
    7172
    72   public :        std::string  msg_error  (void);
     73  public :        Parameters_test msg_error  (void);
    7374
    7475  public :        std::string   print      (uint32_t depth);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_allocation.cpp

    r77 r78  
    6060       ALLOC1_INTERFACE("execute_unit_out", IN, EAST, "Output of execution_unit", _param->_nb_execute_unit);
    6161
    62        ALLOC1_VAL_IN    ( in_EXECUTE_UNIT_OUT_VAL);
    63        ALLOC1_ACK_OUT   (out_EXECUTE_UNIT_OUT_ACK);
     62       ALLOC1_VALACK_IN ( in_EXECUTE_UNIT_OUT_VAL,VAL);
     63       ALLOC1_VALACK_OUT(out_EXECUTE_UNIT_OUT_ACK,ACK);
    6464       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id      );
    6565       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id    );
     
    6767       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_packet_id       );
    6868     //ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation       );
    69      //ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type            );
     69       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type            );
    7070       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                             );
    7171       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register);
     
    8282       ALLOC1_INTERFACE("write_unit_in", OUT, WEST, "Input of write_unit", _param->_nb_write_unit);
    8383
    84        ALLOC1_VAL_OUT(out_WRITE_UNIT_IN_VAL);
    85        ALLOC1_ACK_IN ( in_WRITE_UNIT_IN_ACK);
     84       ALLOC1_VALACK_OUT(out_WRITE_UNIT_IN_VAL,VAL);
     85       ALLOC1_VALACK_IN ( in_WRITE_UNIT_IN_ACK,ACK);
    8686       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id      );
    8787       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id    );
     
    8989       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_packet_id       );
    9090     //ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation       );
    91      //ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type            );
     91       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type            );
    9292       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                             );
    9393       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_deallocation.cpp

    r77 r78  
    3939        delete []  in_EXECUTE_UNIT_OUT_PACKET_ID    ;
    4040      //delete []  in_EXECUTE_UNIT_OUT_OPERATION    ;
    41       //delete []  in_EXECUTE_UNIT_OUT_TYPE         ;
     41        delete []  in_EXECUTE_UNIT_OUT_TYPE         ;
    4242        delete []  in_EXECUTE_UNIT_OUT_WRITE_RD     ;
    4343        delete []  in_EXECUTE_UNIT_OUT_NUM_REG_RD   ;
     
    6161        delete [] out_WRITE_UNIT_IN_PACKET_ID    ;
    6262      //delete [] out_WRITE_UNIT_IN_OPERATION    ;
    63       //delete [] out_WRITE_UNIT_IN_TYPE         ;
     63        delete [] out_WRITE_UNIT_IN_TYPE         ;
    6464        delete [] out_WRITE_UNIT_IN_WRITE_RD     ;
    6565        delete [] out_WRITE_UNIT_IN_NUM_REG_RD   ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_genMealy.cpp

    r77 r78  
    7575                    PORT_WRITE(out_WRITE_UNIT_IN_PACKET_ID             [dest], PORT_READ(in_EXECUTE_UNIT_OUT_PACKET_ID             [i]));
    7676                  //PORT_WRITE(out_WRITE_UNIT_IN_OPERATION             [dest], PORT_READ(in_EXECUTE_UNIT_OUT_OPERATION             [i]));
    77                   //PORT_WRITE(out_WRITE_UNIT_IN_TYPE                  [dest], PORT_READ(in_EXECUTE_UNIT_OUT_TYPE                  [i]));
     77                    PORT_WRITE(out_WRITE_UNIT_IN_TYPE                  [dest], PORT_READ(in_EXECUTE_UNIT_OUT_TYPE                  [i]));
    7878                    PORT_WRITE(out_WRITE_UNIT_IN_WRITE_RD              [dest], PORT_READ(in_EXECUTE_UNIT_OUT_WRITE_RD              [i]));
    7979                    PORT_WRITE(out_WRITE_UNIT_IN_NUM_REG_RD            [dest], PORT_READ(in_EXECUTE_UNIT_OUT_NUM_REG_RD            [i]));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters_msg_error.cpp

    r77 r78  
    2121#undef  FUNCTION
    2222#define FUNCTION "Execution_unit_to_Write_unit::msg_error"
    23   std::string Parameters::msg_error(void)
     23  Parameters_test Parameters::msg_error(void)
    2424  {
    2525    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
    2626
    27     std::string msg = "";
     27    Parameters_test test("Execution_unit_to_Write_unit");
    2828
    2929    for (uint32_t i=0; i<_nb_execute_unit; i++)
     
    3535
    3636        if (j == _nb_write_unit)
    37           msg += "  - The execute_unit ["+toString(i)+"] is link with none write_unit.\n";
     37          test.error("The execute_unit ["+toString(i)+"] is link with none write_unit.");
    3838      }   
    3939
     
    4646
    4747        if (j == _nb_thread)
    48           msg += "  - The write_unit ["+toString(i)+"] have none source's thread.\n";
     48          test.error("The write_unit ["+toString(i)+"] have none source's thread.");
    4949      }   
    5050
    51     return msg;
     51    if ( (_priority != PRIORITY_STATIC     ) and
     52         (_priority != PRIORITY_ROUND_ROBIN))
     53      test.error("Unsupported priority scheme. It must be Static or Round Robin.");
    5254
    5355    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
     56
     57    return test;
    5458  };
    5559
Note: See TracChangeset for help on using the changeset viewer.