Changeset 56 for trunk/IPs/systemC


Ignore:
Timestamp:
Sep 24, 2007, 5:10:46 PM (17 years ago)
Author:
rosiere
Message:

Factorisation du contrôle de file d'attente dans une classe "Queue_Control"

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural
Files:
13 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile.deps

    r55 r56  
    88# DIR_MORPHEO must be defined
    99
    10 Reservation_station                     = yes
     10Reservation_station             = yes
    1111
    1212ifndef Behavioural
    1313include                         $(DIR_MORPHEO)/Behavioural/Makefile.deps
    1414endif
     15ifndef Queue_Control
     16include                         $(DIR_MORPHEO)/Behavioural/Generic/Queue_Control/Makefile.deps
     17endif
    1518
    1619#-----[ Library ]------------------------------------------
    17 Reservation_station_LIBRARY             =       -lReservation_station   \
     20Reservation_station_LIBRARY     =       -lReservation_station   \
     21                                        $(Queue_Control_LIBRARY)\
    1822                                        $(Behavioural_LIBRARY) 
    1923
    20 Reservation_station_DIR_LIBRARY         =       -L$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/lib     \
     24Reservation_station_DIR_LIBRARY =       -L$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/lib     \
     25                                        $(Queue_Control_DIR_LIBRARY)\
    2126                                        $(Behavioural_DIR_LIBRARY)
    2227
     
    2530Reservation_station_library             :
    2631                                @\
     32                                $(MAKE) Queue_Control_library; \
    2733                                $(MAKE) Behavioural_library; \
    2834                                $(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station --makefile=Makefile;
     
    3036Reservation_station_library_clean       :
    3137                                @\
     38                                $(MAKE) Queue_Control_library_clean; \
    3239                                $(MAKE) Behavioural_library_clean; \
    3340                                $(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station --makefile=Makefile clean;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h

    r55 r56  
    1414
    1515#include <iostream>
    16 #include <vector>
    1716#include "Common/include/ToString.h"
    1817#include "Common/include/Debug.h"
    1918
     19#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
    2020#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h"
    2121#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Types.h"
     
    2929
    3030using namespace std;
     31using namespace morpheo::behavioural::generic::queue_control;
    3132
    3233namespace morpheo {
     
    202203
    203204    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    204   protected : vector<uint32_t>              *  _queue_control;
    205   protected : uint32_t                         _queue_nb_elt;
     205  protected : morpheo::behavioural::generic::queue_control::Queue_Control * _queue_control;
    206206  protected : Treservation_station_entry_t  *  _queue;
    207207
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp

    r55 r56  
    234234    _component->generate_file();
    235235#endif
    236     _queue_control = new vector<uint32_t>;
     236    _queue_control = new morpheo::behavioural::generic::queue_control::Queue_Control::Queue_Control(_param->_size_queue);
    237237    _queue         = new Treservation_station_entry_t [_param->_size_queue];
    238238
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp

    r55 r56  
    2929   
    3030    // accept a new instructions when reservation_station is not full
    31     internal_RESERVATION_STATION_IN_ACK = _queue_nb_elt < _param->_size_queue;
     31    internal_RESERVATION_STATION_IN_ACK = not _queue_control->full();
    3232   
    3333    PORT_WRITE(out_RESERVATION_STATION_IN_ACK, internal_RESERVATION_STATION_IN_ACK);
     
    3737    for (uint32_t i=0; i<_param->_size_queue; i++)
    3838      {
    39         bool     val   = i <_queue_nb_elt;
     39        bool     val   = i <_queue_control->nb_elt();
    4040        uint32_t index = (*_queue_control)[i];
    4141       
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp

    r55 r56  
    4747    if (PORT_READ(in_NRESET) == 0)
    4848      {
    49         // clear all element in control.
    50         _queue_nb_elt = 0;
    51 
    5249        _queue_control->clear();
    53         for (uint32_t i=0; i<_param->_size_queue; i++)
    54           _queue_control->push_back(i);
    5550      }
    5651    else
     
    6358
    6459            // Write in reservation station
    65             uint32_t index = (*_queue_control)[_queue_nb_elt];
    66             _queue_nb_elt ++;
     60            uint32_t index = _queue_control->push();
    6761
    6862            log_printf(TRACE,Reservation_station,FUNCTION," * index         : %d",index);
     
    9690
    9791        // scan in reverse order, because when we pop the queue there are an auto reorder
    98         for (int32_t i=(static_cast<int32_t>(_queue_nb_elt))-1;i>=0; i--)
     92        for (int32_t i=(static_cast<int32_t>(_queue_control->nb_elt()))-1;i>=0; i--)
    9993          {
    10094            uint32_t index = (*_queue_control)[i];
     
    10599                log_printf(TRACE,Reservation_station,FUNCTION,"POP  [%d]",i);
    106100
    107                 _queue_control->erase (_queue_control->begin()+i);
    108                 _queue_control->push_back(index);
    109                 _queue_nb_elt --;
     101                _queue_control->pop(i);
    110102
    111103                log_printf(TRACE,Reservation_station,FUNCTION," * index         : %d",index);
     
    118110       
    119111        // scan all entry
    120         for (uint32_t i=0; i<_queue_nb_elt; i++)
     112        for (uint32_t i=0; i<_queue_control->nb_elt(); i++)
    121113          {
    122114            uint32_t index = (*_queue_control)[i];
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags

    r55 r56  
    1515#-----[ Flags ]--------------------------------------------
    1616MORPHEO_FLAGS                   =       -DSYSTEMC               \
    17                                         -DVHDL                  \
    18                                         -DVHDL_TESTBENCH        \
    19                                         -DSTATISTICS            \
    2017                                        -DDEBUG=DEBUG_TRACE
     18
     19#                                       -DVHDL                  \
     20#                                       -DVHDL_TESTBENCH        \
     21#                                       -DSTATISTICS            \
    2122#                                       -DVHDL_TESTBENCH_ASSERT \
    2223#                                       -DCONFIGURATION         \
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h

    r55 r56  
    66#define     DEBUG_Counter                                         false
    77#define     DEBUG_Group                                           false
     8#define     DEBUG_Queue_Control                                   false
    89#define     DEBUG_Shifter                                         false
    910#define     DEBUG_RegisterFile                                    false
     
    1718#define     DEBUG_Multi_Execute_loop                              false
    1819#define       DEBUG_Execute_loop                                  false
     20#define         DEBUG_Multi_Execute_unit                          false
     21#define           DEBUG_Execute_unit                              false
     22#define             DEBUG_Load_store_unit                         true
    1923#define         DEBUG_Multi_Read_unit                             false
    2024#define           DEBUG_Read_unit                                 false
    2125#define             DEBUG_Read_queue                              false
    22 #define             DEBUG_Reservation_station                     true
     26#define             DEBUG_Reservation_station                     false
    2327#define     DEBUG_Multi_Front_end                                 false
    2428#define       DEBUG_Front_end                                     false
Note: See TracChangeset for help on using the changeset viewer.