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

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

1) Platforms : add new organization for test
2) Load_Store_Unit : add array to count nb_check in store_queue
3) Issue_queue and Core_Glue : rewrite the issue network
4) Special_Register_Unit : add reset value to register CID
5) Softwares : add multicontext test
6) Softwares : add SPECINT
7) Softwares : add MiBench?
7) Read_queue : inhib access for r0
8) Change Core_Glue (network) - dont yet support priority and load balancing scheme

  • Property svn:keywords set to Id
File size: 4.9 KB
Line 
1/*
2 * $Id: Parameters.cpp 117 2009-05-16 14:42:39Z 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    _nb_inst_issue            = _nb_inst_reexecute+_nb_bank;
63
64//     log_printf(TRACE,Issue_queue,FUNCTION,"  * table_routing [nb_rename_unit][nb_inst_issue]");
65//     for (uint32_t i=0; i<_nb_rename_unit; ++i)
66//       for (uint32_t j=0; j<_nb_inst_issue; ++j)
67//         if (_table_routing [i][j])
68//           log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
69       
70//     log_printf(TRACE,Issue_queue,FUNCTION,"  * table_issue_type [nb_inst_issue][nb_type]");
71//     for (uint32_t i=0; i<_nb_inst_issue; ++i)
72//       for (uint32_t j=0; j<_nb_type; ++j)
73//         if (_table_issue_type [i][j])
74//           log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
75   
76    _max_nb_inst_rename       = max<uint32_t>(_nb_inst_rename,_nb_rename_unit);
77
78    _size_bank                = _size_queue / _nb_bank;
79   
80    test();
81
82    if (is_toplevel)
83      {
84        _size_context_id          = log2(nb_context  );
85        _size_front_end_id        = log2(nb_front_end);
86        _size_rob_ptr             = size_packet          ;
87        _size_general_data        = size_general_data    ;
88        _size_special_data        = size_special_data    ;
89        _size_general_register    = size_general_register;
90        _size_special_register    = size_special_register;
91        _size_store_queue_ptr     = size_store_queue_ptr ;
92        _size_load_queue_ptr      = size_load_queue_ptr  ;
93       
94        _have_port_context_id     = (_size_context_id     > 0);
95        _have_port_front_end_id   = (_size_front_end_id   > 0);
96        _have_port_rob_ptr        = (_size_rob_ptr        > 0);
97        _have_port_load_queue_ptr = (_size_load_queue_ptr > 0);
98       
99        copy();
100      }
101
102    log_end(Issue_queue,FUNCTION);
103  };
104 
105// #undef  FUNCTION
106// #define FUNCTION "Issue_queue::Parameters (copy)"
107//   Parameters::Parameters (Parameters & param)
108//   {
109//     log_begin(Issue_queue,FUNCTION);
110//     test();
111//     log_end(Issue_queue,FUNCTION);
112//   };
113
114#undef  FUNCTION
115#define FUNCTION "Issue_queue::~Parameters"
116  Parameters::~Parameters (void) 
117  {
118    log_begin(Issue_queue,FUNCTION);
119    log_end(Issue_queue,FUNCTION);
120  };
121
122#undef  FUNCTION
123#define FUNCTION "Issue_queue::copy"
124  void Parameters::copy (void) 
125  {
126    log_begin(Issue_queue,FUNCTION);
127    log_end(Issue_queue,FUNCTION);
128  };
129
130}; // end namespace issue_queue
131}; // end namespace ooo_engine
132}; // end namespace multi_ooo_engine
133}; // end namespace core
134
135}; // end namespace behavioural
136}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.