source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_deallocation.cpp @ 105

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

1) Bug fix : Load Miss Speculation (in Commit_unit, Update Prediction Table and Context State)
2) Change address, in rob write address_next.
3) Move Meta_Predictor in save directory

  • Property svn:keywords set to Id
File size: 16.0 KB
Line 
1/*
2 * $Id: OOO_Engine_deallocation.cpp 105 2009-02-05 11:18:31Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/OOO_Engine.h"
9#include "Behavioural/include/Allocation.h"
10
11namespace morpheo {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16
17
18#undef  FUNCTION
19#define FUNCTION "OOO_Engine::deallocation"
20  void OOO_Engine::deallocation (void)
21  {
22    log_begin(OOO_Engine,FUNCTION);
23
24    if (usage_is_set(_usage,USE_SYSTEMC))
25      {
26        delete    in_CLOCK ;
27        delete    in_NRESET;
28
29        DELETE2_SIGNAL( in_RENAME_VAL                       ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
30        DELETE2_SIGNAL(out_RENAME_ACK                       ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
31        DELETE2_SIGNAL( in_RENAME_FRONT_END_ID              ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_front_end_id           );
32        DELETE2_SIGNAL( in_RENAME_CONTEXT_ID                ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_context_id             );
33        DELETE2_SIGNAL( in_RENAME_DEPTH                     ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_depth                  );
34        DELETE2_SIGNAL( in_RENAME_TYPE                      ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_type                   );
35        DELETE2_SIGNAL( in_RENAME_OPERATION                 ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_operation              );
36        DELETE2_SIGNAL( in_RENAME_NO_EXECUTE                ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
37        DELETE2_SIGNAL( in_RENAME_IS_DELAY_SLOT             ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
38        DELETE2_SIGNAL( in_RENAME_ADDRESS_NEXT              ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_instruction_address    );
39        DELETE2_SIGNAL( in_RENAME_HAS_IMMEDIAT              ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
40        DELETE2_SIGNAL( in_RENAME_IMMEDIAT                  ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_general_data           );
41        DELETE2_SIGNAL( in_RENAME_READ_RA                   ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
42        DELETE2_SIGNAL( in_RENAME_NUM_REG_RA                ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_general_register_logic );
43        DELETE2_SIGNAL( in_RENAME_READ_RB                   ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
44        DELETE2_SIGNAL( in_RENAME_NUM_REG_RB                ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_general_register_logic );
45        DELETE2_SIGNAL( in_RENAME_READ_RC                   ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
46        DELETE2_SIGNAL( in_RENAME_NUM_REG_RC                ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_special_register_logic );
47        DELETE2_SIGNAL( in_RENAME_WRITE_RD                  ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
48        DELETE2_SIGNAL( in_RENAME_NUM_REG_RD                ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_general_register_logic );
49        DELETE2_SIGNAL( in_RENAME_WRITE_RE                  ,_param->_nb_front_end,_param->_nb_inst_decod[it1],1                                    );
50        DELETE2_SIGNAL( in_RENAME_NUM_REG_RE                ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_special_register_logic );
51        DELETE2_SIGNAL( in_RENAME_EXCEPTION_USE             ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_exception_use          );
52        DELETE2_SIGNAL( in_RENAME_EXCEPTION                 ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_exception              );
53       
54        DELETE1_SIGNAL(out_ISSUE_VAL                        ,_param->_nb_inst_issue,1                                    );
55        DELETE1_SIGNAL( in_ISSUE_ACK                        ,_param->_nb_inst_issue,1                                    );
56        DELETE1_SIGNAL(out_ISSUE_FRONT_END_ID               ,_param->_nb_inst_issue,_param->_size_front_end_id           );
57        DELETE1_SIGNAL(out_ISSUE_CONTEXT_ID                 ,_param->_nb_inst_issue,_param->_size_context_id             );
58        DELETE1_SIGNAL(out_ISSUE_PACKET_ID                  ,_param->_nb_inst_issue,_param->_size_rob_ptr                );
59        DELETE1_SIGNAL(out_ISSUE_TYPE                       ,_param->_nb_inst_issue,_param->_size_type                   );
60        DELETE1_SIGNAL(out_ISSUE_OPERATION                  ,_param->_nb_inst_issue,_param->_size_operation              );
61        DELETE1_SIGNAL(out_ISSUE_STORE_QUEUE_PTR_WRITE      ,_param->_nb_inst_issue,_param->_size_store_queue_ptr        );
62        DELETE1_SIGNAL(out_ISSUE_LOAD_QUEUE_PTR_WRITE       ,_param->_nb_inst_issue,_param->_size_load_queue_ptr         );
63        DELETE1_SIGNAL(out_ISSUE_HAS_IMMEDIAT               ,_param->_nb_inst_issue,1                                    );
64        DELETE1_SIGNAL(out_ISSUE_IMMEDIAT                   ,_param->_nb_inst_issue,_param->_size_general_data           );
65        DELETE1_SIGNAL(out_ISSUE_READ_RA                    ,_param->_nb_inst_issue,1                                    );
66        DELETE1_SIGNAL(out_ISSUE_NUM_REG_RA                 ,_param->_nb_inst_issue,_param->_size_general_register       );
67        DELETE1_SIGNAL(out_ISSUE_READ_RB                    ,_param->_nb_inst_issue,1                                    );
68        DELETE1_SIGNAL(out_ISSUE_NUM_REG_RB                 ,_param->_nb_inst_issue,_param->_size_general_register       );
69        DELETE1_SIGNAL(out_ISSUE_READ_RC                    ,_param->_nb_inst_issue,1                                    );
70        DELETE1_SIGNAL(out_ISSUE_NUM_REG_RC                 ,_param->_nb_inst_issue,_param->_size_special_register       );
71        DELETE1_SIGNAL(out_ISSUE_WRITE_RD                   ,_param->_nb_inst_issue,1                                    );
72        DELETE1_SIGNAL(out_ISSUE_NUM_REG_RD                 ,_param->_nb_inst_issue,_param->_size_general_register       );
73        DELETE1_SIGNAL(out_ISSUE_WRITE_RE                   ,_param->_nb_inst_issue,1                                    );
74        DELETE1_SIGNAL(out_ISSUE_NUM_REG_RE                 ,_param->_nb_inst_issue,_param->_size_special_register       );
75       
76        DELETE2_SIGNAL( in_EXECUTE_LOOP_VAL                 ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],1                                    );
77        DELETE2_SIGNAL(out_EXECUTE_LOOP_ACK                 ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],1                                    );
78        DELETE2_SIGNAL( in_EXECUTE_LOOP_FRONT_END_ID        ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],_param->_size_front_end_id           );
79        DELETE2_SIGNAL( in_EXECUTE_LOOP_CONTEXT_ID          ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],_param->_size_context_id             );
80        DELETE2_SIGNAL( in_EXECUTE_LOOP_PACKET_ID           ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],_param->_size_rob_ptr                );
81//      DELETE2_SIGNAL( in_EXECUTE_LOOP_TYPE                ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],_param->_size_type                   );
82//      DELETE2_SIGNAL( in_EXECUTE_LOOP_OPERATION           ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],_param->_size_operation              );
83        DELETE2_SIGNAL( in_EXECUTE_LOOP_FLAGS               ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],_param->_size_special_data           );
84        DELETE2_SIGNAL( in_EXECUTE_LOOP_EXCEPTION           ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],_param->_size_exception              );
85        DELETE2_SIGNAL( in_EXECUTE_LOOP_NO_SEQUENCE         ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],1                                    );
86        DELETE2_SIGNAL( in_EXECUTE_LOOP_ADDRESS             ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],_param->_size_instruction_address    );
87        DELETE2_SIGNAL( in_EXECUTE_LOOP_DATA                ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1],_param->_size_general_data           );
88       
89        DELETE1_SIGNAL(out_INSERT_VAL                       ,_param->_sum_inst_insert,1                                    );
90        DELETE1_SIGNAL( in_INSERT_ACK                       ,_param->_sum_inst_insert,1                                    );
91        DELETE1_SIGNAL(out_INSERT_RD_USE                    ,_param->_sum_inst_insert,1                                    );
92        DELETE1_SIGNAL(out_INSERT_RD_NUM_REG                ,_param->_sum_inst_insert,_param->_size_general_register       );
93        DELETE1_SIGNAL(out_INSERT_RE_USE                    ,_param->_sum_inst_insert,1                                    );
94        DELETE1_SIGNAL(out_INSERT_RE_NUM_REG                ,_param->_sum_inst_insert,_param->_size_special_register       );
95       
96//         DELETE1_SIGNAL(out_RETIRE_VAL                       ,_param->_sum_inst_retire,1                                    );
97//         DELETE1_SIGNAL( in_RETIRE_ACK                       ,_param->_sum_inst_retire,1                                    );
98//         DELETE1_SIGNAL(out_RETIRE_RD_OLD_USE                ,_param->_sum_inst_retire,1                                    );
99//         DELETE1_SIGNAL(out_RETIRE_RD_OLD_NUM_REG            ,_param->_sum_inst_retire,_param->_size_general_register       );
100//         DELETE1_SIGNAL(out_RETIRE_RD_NEW_USE                ,_param->_sum_inst_retire,1                                    );
101//         DELETE1_SIGNAL(out_RETIRE_RD_NEW_NUM_REG            ,_param->_sum_inst_retire,_param->_size_general_register       );
102//         DELETE1_SIGNAL(out_RETIRE_RE_OLD_USE                ,_param->_sum_inst_retire,1                                    );
103//         DELETE1_SIGNAL(out_RETIRE_RE_OLD_NUM_REG            ,_param->_sum_inst_retire,_param->_size_special_register       );
104//         DELETE1_SIGNAL(out_RETIRE_RE_NEW_USE                ,_param->_sum_inst_retire,1                                    );
105//         DELETE1_SIGNAL(out_RETIRE_RE_NEW_NUM_REG            ,_param->_sum_inst_retire,_param->_size_special_register       );
106       
107        DELETE1_SIGNAL(out_BRANCH_COMPLETE_VAL              ,_param->_nb_inst_branch_complete,1                         );
108        DELETE1_SIGNAL( in_BRANCH_COMPLETE_ACK              ,_param->_nb_inst_branch_complete,1                         );
109        DELETE1_SIGNAL(out_BRANCH_COMPLETE_FRONT_END_ID     ,_param->_nb_inst_branch_complete,_param->_size_front_end_id);
110        DELETE1_SIGNAL(out_BRANCH_COMPLETE_CONTEXT_ID       ,_param->_nb_inst_branch_complete,_param->_size_context_id  );
111        DELETE1_SIGNAL(out_BRANCH_COMPLETE_DEPTH            ,_param->_nb_inst_branch_complete,_param->_size_depth       );
112        DELETE1_SIGNAL(out_BRANCH_COMPLETE_ADDRESS          ,_param->_nb_inst_branch_complete,_param->_size_instruction_address);
113        DELETE1_SIGNAL(out_BRANCH_COMPLETE_NO_SEQUENCE      ,_param->_nb_inst_branch_complete,1                         );
114        DELETE1_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION  ,_param->_nb_inst_branch_complete,1                         );
115       
116        DELETE_SIGNAL (out_COMMIT_EVENT_VAL                 , 1);
117        DELETE_SIGNAL ( in_COMMIT_EVENT_ACK                 , 1);
118        DELETE_SIGNAL (out_COMMIT_EVENT_FRONT_END_ID        ,_param->_size_front_end_id           );
119        DELETE_SIGNAL (out_COMMIT_EVENT_CONTEXT_ID          ,_param->_size_context_id             );
120        DELETE_SIGNAL (out_COMMIT_EVENT_DEPTH               ,_param->_size_depth                  );
121        DELETE_SIGNAL (out_COMMIT_EVENT_TYPE                ,_param->_size_event_type             );
122        DELETE_SIGNAL (out_COMMIT_EVENT_IS_DELAY_SLOT       ,1                                    );
123        DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS             ,_param->_size_general_data           );
124        DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EPCR_VAL    ,1                                    );
125        DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EPCR        ,_param->_size_general_data           );
126        DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,1                                    );
127        DELETE_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR        ,_param->_size_general_data           );
128       
129        DELETE2_SIGNAL( in_EVENT_VAL                        ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
130        DELETE2_SIGNAL(out_EVENT_ACK                        ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
131        DELETE2_SIGNAL( in_EVENT_ADDRESS                    ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_instruction_address);
132        DELETE2_SIGNAL( in_EVENT_ADDRESS_NEXT               ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_instruction_address); 
133        DELETE2_SIGNAL( in_EVENT_ADDRESS_NEXT_VAL           ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
134        DELETE2_SIGNAL( in_EVENT_IS_DS_TAKE                 ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
135        DELETE2_SIGNAL( in_SPR_EVENT_VAL                    ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
136        DELETE2_SIGNAL(out_SPR_EVENT_ACK                    ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
137        DELETE2_SIGNAL( in_SPR_EVENT_EPCR                   ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_spr                    );
138        DELETE2_SIGNAL( in_SPR_EVENT_EEAR_WEN               ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
139        DELETE2_SIGNAL( in_SPR_EVENT_EEAR                   ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_spr                    );
140        DELETE2_SIGNAL( in_SPR_EVENT_SR_DSX                 ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
141        DELETE2_SIGNAL( in_SPR_EVENT_SR_TO_ESR              ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
142        DELETE2_SIGNAL(out_NB_INST_COMMIT_ALL               ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_nb_inst_commit         );
143        DELETE2_SIGNAL(out_NB_INST_COMMIT_MEM               ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_nb_inst_commit         );
144        DELETE2_SIGNAL( in_DEPTH_MIN                        ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_depth                  );
145        DELETE2_SIGNAL( in_DEPTH_MAX                        ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_depth                  );
146        DELETE2_SIGNAL( in_DEPTH_FULL                       ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
147        DELETE2_SIGNAL(out_SPR_SR_IEE                       ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
148        DELETE2_SIGNAL(out_SPR_SR_EPH                       ,_param->_nb_front_end,_param->_nb_context[it1],1                                    );
149      }
150
151    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
152    delete [] _component_rename_unit           ;
153    delete    _component_commit_unit           ;
154    delete    _component_issue_queue           ;
155    delete    _component_reexecute_unit        ;   
156    delete    _component_special_register_unit ;
157    delete    _component_glue                  ;
158
159    delete    _component;
160
161    log_end(OOO_Engine,FUNCTION);
162  };
163
164}; // end namespace ooo_engine
165}; // end namespace multi_ooo_engine
166}; // end namespace core
167
168}; // end namespace behavioural
169}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.