source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/include/Parameters.h @ 136

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

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

  • Property svn:keywords set to Id
File size: 13.7 KB
Line 
1#ifndef morpheo_behavioural_configuration_Parameters_h
2#define morpheo_behavioural_configuration_Parameters_h
3
4/*
5 * $Id: Parameters.h 136 2009-10-20 18:52:15Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#include "Behavioural/Core/include/Parameters.h"
12
13namespace morpheo {
14namespace behavioural {
15namespace configuration {
16
17  class Parameters
18  {
19    // -----[ parameters ]------------------------------------------------
20    // Common
21  public : uint32_t                _size_general_data                             ;
22  public : uint32_t                _size_special_data                             ;
23  public : morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (void);
24
25    // Thread
26  public : uint32_t                _nb_thread                                     ;
27  public : uint32_t              * _size_ifetch_queue                             ;//[nb_thread]
28  public : morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t
29                                 * _ifetch_queue_scheme                           ;//[nb_thread]
30  public : uint32_t              * _nb_inst_fetch                                 ;//[nb_thread]
31  public : bool                 ** _implement_group                               ;//[nb_thread][NB_GROUP]
32  public : uint32_t              * _ras_size_queue                                ;//[nb_thread]
33  public : uint32_t              * _upt_size_queue                                ;//[nb_thread]
34  public : uint32_t              * _ufpt_size_queue                               ;//[nb_thread]
35 
36    // Decod bloc
37  public : uint32_t                _nb_decod_bloc                                 ;
38  public : uint32_t              * _size_decod_queue                              ;//[nb_decod_bloc]
39  public : morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::Tdecod_queue_scheme_t
40                                 * _decod_queue_scheme                            ;//[nb_decod_bloc]
41  public : uint32_t              * _nb_inst_decod                                 ;//[nb_decod_bloc]
42  public : uint32_t              * _nb_context_select                             ;//[nb_decod_bloc]
43  public : Tpriority_t           * _context_select_priority                       ;//[nb_decod_bloc]
44  public : Tload_balancing_t     * _context_select_load_balancing                 ;//[nb_decod_bloc]
45 
46    // Rename bloc
47  public : uint32_t                _nb_rename_bloc                                ;
48  public : uint32_t              * _nb_inst_insert                                ;//[nb_rename_bloc]
49  public : uint32_t              * _nb_inst_retire                                ;//[nb_rename_bloc]
50  public : Tpriority_t           * _rename_select_priority                        ;//[nb_rename_bloc]
51  public : Tload_balancing_t     * _rename_select_load_balancing                  ;//[nb_rename_bloc]
52  public : uint32_t              * _rename_select_nb_front_end_select             ;//[nb_rename_bloc]
53  public : uint32_t              * _nb_general_register                           ;//[nb_rename_bloc]
54  public : uint32_t              * _nb_special_register                           ;//[nb_rename_bloc]
55  public : uint32_t              * _nb_reg_free                                   ;//[nb_rename_bloc]
56  public : uint32_t              * _nb_rename_unit_bank                           ;//[nb_rename_bloc]
57//   public : uint32_t              * _size_read_counter                             ;//[nb_rename_bloc]
58 
59    // Read bloc
60  public : uint32_t                _nb_read_bloc                                  ;//
61  public : uint32_t              * _size_read_queue                               ;//[nb_read_bloc]
62  public : uint32_t              * _size_reservation_station                      ;//[nb_read_bloc]
63  public : uint32_t              * _nb_inst_retire_reservation_station            ;//[nb_read_bloc]
64 
65    // Write bloc
66  public : uint32_t                _nb_write_bloc                                 ;//
67  public : uint32_t              * _size_write_queue                              ;//[nb_write_bloc]
68  public : uint32_t              * _size_execute_queue                            ;//[nb_write_bloc]
69  public : uint32_t              * _nb_bypass_write                               ;//[nb_write_bloc]
70  public : core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t
71                                 * _write_queue_scheme                            ;//[nb_write_bloc]
72
73    // Load_store_unit
74  public : uint32_t                _nb_load_store_unit                            ;
75  public : uint32_t              * _size_store_queue                              ;//[nb_load_store_unit]
76  public : uint32_t              * _size_load_queue                               ;//[nb_load_store_unit]
77  public : uint32_t              * _size_speculative_access_queue                 ;//[nb_load_store_unit]
78  public : uint32_t              * _nb_port_check                                 ;//[nb_load_store_unit]
79  public : core::multi_execute_loop::execute_loop::Tspeculative_load_t 
80                                 * _speculative_load                              ;//[nb_load_store_unit]
81  public : uint32_t              * _nb_bypass_memory                              ;//[nb_load_store_unit]
82  public : uint32_t              * _nb_cache_port                                 ;//[nb_load_store_unit]
83  public : uint32_t              * _nb_inst_memory                                ;//[nb_load_store_unit]
84 
85    // Functionnal_unit
86  public : uint32_t                _nb_functionnal_unit                           ;
87  public : uint32_t              * _nb_inst_functionnal_unit                      ;//[nb_functionnal_unit]
88  public : core::multi_execute_loop::execute_loop::execute_timing_t
89                                *** _timing                                       ;//[nb_functionnal_unit][nb_type][nb_operation]
90 
91    // Icache_port
92  public : uint32_t                _nb_icache_port                                ;
93  public : Tpriority_t             _icache_port_priority                          ;
94  public : Tload_balancing_t       _icache_port_load_balancing                    ;
95 
96    // Dcache_port
97  public : uint32_t                _nb_dcache_port                                ;
98  public : Tpriority_t             _dcache_port_priority                          ;
99  public : Tload_balancing_t       _dcache_port_load_balancing                    ;
100 
101    // Front_end
102  public : uint32_t                _nb_front_end                                  ;
103  public : uint32_t              * _nb_context                                    ;//[nb_front_end]
104  public : uint32_t              * _nb_decod_unit                                 ;//[nb_front_end]
105  public : uint32_t              * _nb_inst_branch_predict                        ;//[nb_front_end]
106  public : uint32_t              * _nb_inst_branch_decod                          ;//[nb_front_end]
107  public : uint32_t              * _nb_inst_branch_update                         ;//[nb_front_end]
108  public : uint32_t              * _btb_size_queue                                ;//[nb_front_end]
109  public : uint32_t              * _btb_associativity                             ;//[nb_front_end]
110  public : uint32_t              * _btb_size_counter                              ;//[nb_front_end]
111  public : Tvictim_t             * _btb_victim_scheme                             ;//[nb_front_end]
112  public : Tpredictor_t          * _dir_predictor_scheme                          ;//[nb_front_end]
113  public : bool                 ** _dir_have_bht                                  ;//[nb_front_end][3]
114  public : uint32_t             ** _dir_bht_size_shifter                          ;//[nb_front_end][3]
115  public : uint32_t             ** _dir_bht_nb_shifter                            ;//[nb_front_end][3]
116  public : bool                 ** _dir_have_pht                                  ;//[nb_front_end][3]
117  public : uint32_t             ** _dir_pht_size_counter                          ;//[nb_front_end][3]
118  public : uint32_t             ** _dir_pht_nb_counter                            ;//[nb_front_end][3]
119  public : uint32_t             ** _dir_pht_size_address_share                    ;//[nb_front_end][3]
120 
121    // OOO_Engine
122  public : uint32_t                _nb_ooo_engine                                 ;
123  public : uint32_t              * _nb_rename_unit                                ;//[nb_ooo_engine]
124  public : uint32_t              * _nb_inst_issue                                 ;//[nb_ooo_engine]
125  public : uint32_t              * _nb_inst_reexecute                             ;//[nb_ooo_engine]
126  public : uint32_t              * _nb_inst_commit                                ;//[nb_ooo_engine]
127  public : uint32_t              * _nb_inst_branch_complete                       ;//[nb_ooo_engine]
128  public : uint32_t              * _nb_rename_unit_select                         ;//[nb_ooo_engine]
129  public : uint32_t              * _nb_execute_loop_select                        ;//[nb_ooo_engine]
130  public : uint32_t              * _size_re_order_buffer                          ;//[nb_ooo_engine]
131  public : uint32_t              * _nb_re_order_buffer_bank                       ;//[nb_ooo_engine]
132  public : Tpriority_t           * _commit_priority                               ;//[nb_ooo_engine]
133  public : Tload_balancing_t     * _commit_load_balancing                         ;//[nb_ooo_engine]
134  public : uint32_t              * _size_issue_queue                              ;//[nb_ooo_engine]
135  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t
136                                 * _issue_queue_scheme                            ;//[nb_ooo_engine]
137  public : uint32_t              * _nb_issue_queue_bank                           ;//[nb_ooo_engine]
138  public : Tpriority_t           * _issue_priority                                ;//[nb_ooo_engine]
139  public : Tload_balancing_t     * _issue_load_balancing                          ;//[nb_ooo_engine]
140  public : uint32_t              * _size_reexecute_queue                          ;//[nb_ooo_engine]
141  public : Tpriority_t           * _reexecute_priority                            ;//[nb_ooo_engine]
142  public : Tload_balancing_t     * _reexecute_load_balancing                      ;//[nb_ooo_engine]
143 
144    // Execute_loop
145  public : uint32_t                _nb_execute_loop                               ;
146  public : uint32_t              * _nb_read_unit                                  ;//[nb_execute_loop]
147  public : uint32_t              * _nb_execute_unit                               ;//[nb_execute_loop]
148  public : uint32_t              * _nb_write_unit                                 ;//[nb_execute_loop]
149  public : uint32_t              * _nb_gpr_bank                                   ;//[nb_execute_loop]
150  public : uint32_t              * _nb_gpr_port_read_by_bank                      ;//[nb_execute_loop]
151  public : uint32_t              * _nb_gpr_port_write_by_bank                     ;//[nb_execute_loop]
152  public : uint32_t              * _nb_spr_bank                                   ;//[nb_execute_loop]
153  public : uint32_t              * _nb_spr_port_read_by_bank                      ;//[nb_execute_loop]
154  public : uint32_t              * _nb_spr_port_write_by_bank                     ;//[nb_execute_loop]
155  public : Tpriority_t           * _execution_unit_to_write_unit_priority         ;//[nb_execute_loop]
156  public : Tpriority_t           * _read_unit_to_execution_unit_priority          ;//[nb_execute_loop]
157 
158    // Link
159  public : pair_dual             * _link_context_with_thread                      ;//[nb_thread]
160  public : pair_dual             * _link_decod_unit_with_decod_bloc               ;//[nb_decod_bloc]
161  public : pair_dual             * _link_rename_unit_with_rename_bloc             ;//[nb_rename_bloc]
162  public : pair_dual             * _link_read_unit_with_read_bloc                 ;//[nb_read_bloc]
163  public : pair_dual             * _link_write_unit_with_write_bloc               ;//[nb_write_bloc]
164  public : pair_dual             * _link_execute_unit_with_functionnal_unit       ;//[nb_functionnal_unit]
165  public : pair_dual             * _link_execute_unit_with_load_store_unit        ;//[nb_load_store_unit]
166  public : uint32_t              * _link_decod_bloc_with_thread                   ;//[nb_thread]
167  public : uint32_t              * _link_rename_bloc_with_front_end               ;//[nb_front_end]
168  public : bool                *** _table_dispatch                                ;//[nb_ooo_engine][nb_inst_issue][nb_read_bloc]
169  public : bool                 ** _link_read_bloc_and_load_store_unit            ;//[nb_read_bloc][nb_load_store_unit]
170  public : bool                 ** _link_read_bloc_and_functionnal_unit           ;//[nb_read_bloc][nb_functionnal_unit]
171  public : bool                 ** _link_write_bloc_and_load_store_unit           ;//[nb_write_bloc][nb_load_store_unit]
172  public : bool                 ** _link_write_bloc_and_functionnal_unit          ;//[nb_write_bloc][nb_functionnal_unit]
173  public : uint32_t              * _link_load_store_unit_with_thread              ;//[nb_thread]
174  public : bool                 ** _link_thread_and_functionnal_unit              ;//[nb_thread][nb_functionnal_unit]
175  public : uint32_t              * _link_icache_port_with_thread                  ;//[nb_thread]
176  public : uint32_t             ** _link_dcache_port_with_load_store_unit         ;//[nb_load_store_unit][nb_cache_port]
177
178  public : Tpriority_t             _dispatch_priority                             ;
179  public : Tload_balancing_t       _dispatch_load_balancing                       ;
180  };
181
182}; // end namespace configuration
183}; // end namespace behavioural
184}; // end namespace morpheo             
185
186#endif
Note: See TracBrowser for help on using the repository browser.