source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Parameters.cpp @ 111

Last change on this file since 111 was 111, checked in by rosiere, 15 years ago

1) Decod_queue : multi implementation (one_fifo, multi_fifo)
2) Issue_queue : multi implementation (in_order, out_of_order)
3) Direction : Add Meta predictor
4) Context_State : re add Branch_complete, More priority to Load miss (is not speculative)
5) Return_Address_Stack : update reg_PREDICT pointer on decod miss prediction
6) UPT : Fix bug in multi event
7) Prediction_glue : in read_stack case, insert in UPT pc_next
8) Rename select : when rob have an event (need flush), read_r{a,b,c} and write_r{d,e} is set at 0

  • Property svn:keywords set to Id
File size: 4.8 KB
Line 
1/*
2 * $Id: Parameters.cpp 111 2009-02-27 18:37:40Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Parameters.h"
9#include "Common/include/Max.h"
10
11namespace morpheo {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace issue_queue {
17
18
19#undef  FUNCTION
20#define FUNCTION "Issue_queue::Parameters"
21  Parameters::Parameters (uint32_t              nb_context              ,
22                          uint32_t              nb_front_end            ,
23                          uint32_t              nb_rename_unit          ,
24                          uint32_t              size_queue              ,
25                          Tissue_queue_scheme_t queue_scheme            ,
26                          uint32_t              nb_bank                 ,
27                          uint32_t              size_packet             ,
28                          uint32_t              size_general_data       ,
29                          uint32_t              size_special_data       ,
30                          uint32_t              size_general_register   ,
31                          uint32_t              size_special_register   ,
32                          uint32_t              size_store_queue_ptr    ,
33                          uint32_t              size_load_queue_ptr     ,
34                          uint32_t              nb_inst_issue           ,
35                          uint32_t            * nb_inst_rename          ,
36                          uint32_t              nb_inst_reexecute       ,
37                          uint32_t              nb_rename_unit_select   ,
38                          Tpriority_t           priority                ,
39                          Tload_balancing_t     load_balancing          ,
40                          bool               ** table_routing           ,
41                          bool               ** table_issue_type        ,
42                          bool                  is_toplevel             )
43  {
44    log_begin(Issue_queue,FUNCTION);
45
46    _nb_context               = nb_context           ;
47    _nb_front_end             = nb_front_end         ;
48    _nb_rename_unit           = nb_rename_unit       ;
49    _size_queue               = size_queue           ;
50    _queue_scheme             = queue_scheme         ;
51    _nb_bank                  = nb_bank              ;   
52    _nb_inst_issue            = nb_inst_issue        ;
53    _nb_inst_rename           = nb_inst_rename       ;
54    _nb_inst_reexecute        = nb_inst_reexecute    ;
55    _nb_rename_unit_select    = nb_rename_unit_select;
56    _priority                 = priority             ;
57    _load_balancing           = load_balancing       ;
58    _table_routing            = table_routing        ;
59    _table_issue_type         = table_issue_type     ;
60    _size_reexecute_queue     = nb_inst_reexecute    ;
61
62    log_printf(TRACE,Issue_queue,FUNCTION,"  * table_routing [nb_rename_unit][nb_inst_issue]");
63    for (uint32_t i=0; i<_nb_rename_unit; ++i)
64      for (uint32_t j=0; j<_nb_inst_issue; ++j)
65        if (_table_routing [i][j])
66          log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
67       
68    log_printf(TRACE,Issue_queue,FUNCTION,"  * table_issue_type [nb_inst_issue][nb_type]");
69    for (uint32_t i=0; i<_nb_inst_issue; ++i)
70      for (uint32_t j=0; j<_nb_type; ++j)
71        if (_table_issue_type [i][j])
72          log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
73   
74    _max_nb_inst_rename       = max<uint32_t>(_nb_inst_rename,_nb_rename_unit);
75
76    _size_bank                = _size_queue / _nb_bank;
77   
78    test();
79
80    if (is_toplevel)
81      {
82        _size_context_id          = log2(nb_context  );
83        _size_front_end_id        = log2(nb_front_end);
84        _size_rob_ptr             = size_packet          ;
85        _size_general_data        = size_general_data    ;
86        _size_special_data        = size_special_data    ;
87        _size_general_register    = size_general_register;
88        _size_special_register    = size_special_register;
89        _size_store_queue_ptr     = size_store_queue_ptr ;
90        _size_load_queue_ptr      = size_load_queue_ptr  ;
91       
92        _have_port_context_id     = (_size_context_id     > 0);
93        _have_port_front_end_id   = (_size_front_end_id   > 0);
94        _have_port_rob_ptr        = (_size_rob_ptr        > 0);
95        _have_port_load_queue_ptr = (_size_load_queue_ptr > 0);
96       
97        copy();
98      }
99
100    log_end(Issue_queue,FUNCTION);
101  };
102 
103// #undef  FUNCTION
104// #define FUNCTION "Issue_queue::Parameters (copy)"
105//   Parameters::Parameters (Parameters & param)
106//   {
107//     log_begin(Issue_queue,FUNCTION);
108//     test();
109//     log_end(Issue_queue,FUNCTION);
110//   };
111
112#undef  FUNCTION
113#define FUNCTION "Issue_queue::~Parameters"
114  Parameters::~Parameters (void) 
115  {
116    log_begin(Issue_queue,FUNCTION);
117    log_end(Issue_queue,FUNCTION);
118  };
119
120#undef  FUNCTION
121#define FUNCTION "Issue_queue::copy"
122  void Parameters::copy (void) 
123  {
124    log_begin(Issue_queue,FUNCTION);
125    log_end(Issue_queue,FUNCTION);
126  };
127
128}; // end namespace issue_queue
129}; // end namespace ooo_engine
130}; // end namespace multi_ooo_engine
131}; // end namespace core
132
133}; // end namespace behavioural
134}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.