source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_deallocation.cpp @ 109

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

1) Configuration : instance configuration file : regroup similar instance
2) Configuration : timing default = 0
3) Debug/Commit_unit : Add watch dog timer
4) Issue_queue : Test parameters : add test if type is optionnal
5) Cor_glue : Fix insert index
6) Free_list : remove bank_by_pop (else deadlock)
7) Update Free List : add register to source event

  • Property svn:keywords set to Id
File size: 8.9 KB
RevLine 
[78]1/*
2 * $Id: Update_Prediction_Table_deallocation.cpp 109 2009-02-16 20:28:31Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h"
[88]9#include "Behavioural/include/Allocation.h"
[78]10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_front_end {
15namespace front_end {
16namespace prediction_unit {
17namespace update_prediction_table {
18
19
20#undef  FUNCTION
21#define FUNCTION "Update_Prediction_Table::deallocation"
22  void Update_Prediction_Table::deallocation (void)
23  {
24    log_printf(FUNC,Update_Prediction_Table,FUNCTION,"Begin");
25
26    if (_usage & USE_SYSTEMC)
27      {
28        delete    in_CLOCK ;
29        delete    in_NRESET;
[81]30
31        // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32        delete []  in_PREDICT_VAL                 ;
33        delete [] out_PREDICT_ACK                 ;
34        if (_param->_have_port_context_id)
35        delete []  in_PREDICT_CONTEXT_ID          ;
36        delete []  in_PREDICT_BTB_ADDRESS_SRC     ;
37        delete []  in_PREDICT_BTB_ADDRESS_DEST    ;
38        delete []  in_PREDICT_BTB_CONDITION       ;
39        delete []  in_PREDICT_BTB_LAST_TAKE       ;
40        delete []  in_PREDICT_BTB_IS_ACCURATE     ;
41        if (_param->_have_port_history)
42        delete []  in_PREDICT_DIR_HISTORY         ;
43        delete []  in_PREDICT_RAS_ADDRESS         ;
44        delete []  in_PREDICT_RAS_INDEX           ;
[88]45        if (_param->_have_port_depth)
46        delete [] out_PREDICT_UPDATE_PREDICTION_ID;
[81]47       
48        // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49        delete []  in_DECOD_VAL                   ;
50        delete [] out_DECOD_ACK                   ;
51        if (_param->_have_port_context_id)
52        delete []  in_DECOD_CONTEXT_ID            ;
53        delete []  in_DECOD_BTB_ADDRESS_SRC       ;
54        delete []  in_DECOD_BTB_ADDRESS_DEST      ;
55        delete []  in_DECOD_BTB_CONDITION         ;
56        delete []  in_DECOD_BTB_LAST_TAKE         ;
57        delete []  in_DECOD_RAS_ADDRESS           ;
58        delete []  in_DECOD_RAS_INDEX             ;
[82]59        delete []  in_DECOD_MISS_IFETCH           ;
60        delete []  in_DECOD_MISS_DECOD            ;
[88]61        if (_param->_have_port_depth)
[81]62        delete []  in_DECOD_UPDATE_PREDICTION_ID  ;
63//      if (_param->_have_port_depth)
64//      delete [] out_DECOD_DEPTH                 ;
[88]65        delete []  in_DECOD_IS_ACCURATE           ;
[81]66       
67        // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68        delete []  in_BRANCH_COMPLETE_VAL            ;
69        delete [] out_BRANCH_COMPLETE_ACK            ;
70        if (_param->_have_port_context_id)
71        delete []  in_BRANCH_COMPLETE_CONTEXT_ID     ;
[88]72        if (_param->_have_port_depth)
[81]73        delete []  in_BRANCH_COMPLETE_DEPTH          ;
74        delete []  in_BRANCH_COMPLETE_ADDRESS        ;
[98]75        delete []  in_BRANCH_COMPLETE_NO_SEQUENCE    ;
[81]76        delete [] out_BRANCH_COMPLETE_MISS_PREDICTION;
77        delete [] out_BRANCH_COMPLETE_TAKE           ;
78        delete [] out_BRANCH_COMPLETE_ADDRESS_SRC    ;
79        delete [] out_BRANCH_COMPLETE_ADDRESS_DEST   ;
[82]80
81        // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[95]82        DELETE1_SIGNAL(out_BRANCH_EVENT_VAL              ,_param->_nb_context,1);
83        DELETE1_SIGNAL( in_BRANCH_EVENT_ACK              ,_param->_nb_context,1);
84//      DELETE1_SIGNAL(out_BRANCH_EVENT_CONTEXT_ID       ,_param->_nb_context,_param->_size_context_id);
[98]85        DELETE1_SIGNAL(out_BRANCH_EVENT_DEPTH            ,_param->_nb_context,_param->_size_depth);
[95]86//      DELETE1_SIGNAL(out_BRANCH_EVENT_MISS_PREDICTION  ,_param->_nb_context,1);
87        DELETE1_SIGNAL(out_BRANCH_EVENT_ADDRESS_SRC      ,_param->_nb_context,_param->_size_instruction_address);
88        DELETE1_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST_VAL ,_param->_nb_context,1);
89        DELETE1_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST     ,_param->_nb_context,_param->_size_instruction_address);
90
[81]91        // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
92        delete [] out_UPDATE_VAL                  ;
93        delete []  in_UPDATE_ACK                  ;
94        if (_param->_have_port_context_id)
95        delete [] out_UPDATE_CONTEXT_ID           ;
96        delete [] out_UPDATE_MISS_PREDICTION      ;
97        delete [] out_UPDATE_DIRECTION_GOOD       ;
98        delete [] out_UPDATE_BTB_VAL              ;
99        delete [] out_UPDATE_BTB_ADDRESS_SRC      ;
100        delete [] out_UPDATE_BTB_ADDRESS_DEST     ;
101        delete [] out_UPDATE_BTB_CONDITION        ;
102        delete [] out_UPDATE_DIR_VAL              ;
103        if (_param->_have_port_history)
104        delete [] out_UPDATE_DIR_HISTORY          ;
105        delete [] out_UPDATE_RAS_VAL              ;
[94]106        delete [] out_UPDATE_RAS_FLUSH            ;
[82]107        delete [] out_UPDATE_RAS_PUSH             ;
[81]108        delete [] out_UPDATE_RAS_ADDRESS          ;
109        delete [] out_UPDATE_RAS_INDEX            ;
110        delete [] out_UPDATE_RAS_PREDICTION_IFETCH;
111
[94]112        // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[97]113        DELETE1_SIGNAL( in_EVENT_VAL    ,_param->_nb_context,1);
114        DELETE1_SIGNAL(out_EVENT_ACK    ,_param->_nb_context,1);
[94]115        DELETE1_SIGNAL( in_EVENT_TYPE   ,_param->_nb_context,_param->_size_event_type );
116        DELETE1_SIGNAL( in_EVENT_DEPTH  ,_param->_nb_context,_param->_size_depth      );
117
[81]118        // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[101]119        DELETE1_SIGNAL(out_DEPTH_VAL          ,_param->_nb_context,1);
[95]120        DELETE1_SIGNAL(out_DEPTH_CURRENT      ,_param->_nb_context,_param->_size_depth);
121        DELETE1_SIGNAL(out_DEPTH_MIN          ,_param->_nb_context,_param->_size_depth);
[101]122        DELETE1_SIGNAL(out_DEPTH_MAX          ,_param->_nb_context,_param->_size_depth);
123        DELETE1_SIGNAL(out_DEPTH_FULL         ,_param->_nb_context,1);
[95]124
[88]125        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
126        DELETE1(internal_PREDICT_ACK                     ,_param->_nb_inst_predict);
127        DELETE1(internal_PREDICT_UPDATE_PREDICTION_ID    ,_param->_nb_inst_predict);
128        DELETE1(internal_DECOD_ACK                       ,_param->_nb_inst_decod);
129        DELETE1(internal_DECOD_UPT_PTR_WRITE             ,_param->_nb_inst_decod);
130        DELETE1(internal_BRANCH_COMPLETE_ACK             ,_param->_nb_inst_branch_complete);
131        DELETE1(internal_BRANCH_COMPLETE_MISS_PREDICTION ,_param->_nb_inst_branch_complete);
132        DELETE1(internal_BRANCH_COMPLETE_TAKE            ,_param->_nb_inst_branch_complete);
133        DELETE1(internal_BRANCH_COMPLETE_ADDRESS_DEST    ,_param->_nb_inst_branch_complete);
134        DELETE1(internal_BRANCH_EVENT_VAL                ,_param->_nb_context);
135        DELETE1(internal_BRANCH_EVENT_DEPTH              ,_param->_nb_context);
136        DELETE1(internal_UPDATE_VAL                      ,_param->_nb_inst_update);
137        DELETE1(internal_UPDATE_VAL_WITHOUT_ACK          ,_param->_nb_inst_update);
138        DELETE1(internal_UPDATE_CONTEXT_ID               ,_param->_nb_inst_update);
139        DELETE1(internal_UPDATE_FROM_UFPT                ,_param->_nb_inst_update);
140        DELETE1(internal_UPDATE_DEPTH                    ,_param->_nb_inst_update);
141        DELETE1(internal_UPDATE_RAS                      ,_param->_nb_inst_update);
[97]142        DELETE1(internal_EVENT_ACK                       ,_param->_nb_context);
[88]143       
144        // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
145        DELETE1(reg_IS_ACCURATE                  ,_param->_nb_context);
146       
147        DELETE2(reg_UPDATE_FETCH_PREDICTION_TABLE,_param->_nb_context,_param->_size_ufpt_queue[it1]);
148        DELETE1(reg_UFPT_BOTTOM                  ,_param->_nb_context);
149        DELETE1(reg_UFPT_TOP                     ,_param->_nb_context);
150        DELETE1(reg_UFPT_UPDATE                  ,_param->_nb_context);
151        DELETE1(reg_UFPT_NB_NEED_UPDATE          ,_param->_nb_context);
[106]152        DELETE1(reg_UFPT_NB_UPDATE               ,_param->_nb_context);
[88]153       
154        DELETE2(reg_UPDATE_PREDICTION_TABLE      ,_param->_nb_context,_param->_size_upt_queue[it1]);
155        DELETE1(reg_UPT_BOTTOM                   ,_param->_nb_context);
156        DELETE1(reg_UPT_TOP                      ,_param->_nb_context);
[95]157        DELETE1(reg_UPT_TOP_EVENT                ,_param->_nb_context);
[88]158        DELETE1(reg_UPT_UPDATE                   ,_param->_nb_context);
[101]159        DELETE1(reg_UPT_EMPTY                    ,_param->_nb_context);
[88]160       
[105]161        DELETE1(reg_EVENT_VAL                    ,_param->_nb_context);
162        DELETE1(reg_EVENT_UPT_PTR                ,_param->_nb_context);
163
[88]164        DELETE1(reg_EVENT_STATE                  ,_param->_nb_context);
[109]165        DELETE1(reg_EVENT_SOURCE                 ,_param->_nb_context);
[98]166        DELETE1(reg_EVENT_DEPTH                  ,_param->_nb_context);
[88]167        DELETE1(reg_EVENT_ADDRESS_SRC            ,_param->_nb_context);
[94]168        DELETE1(reg_EVENT_ADDRESS_DEST_VAL       ,_param->_nb_context);
[88]169        DELETE1(reg_EVENT_ADDRESS_DEST           ,_param->_nb_context);
170       }
[81]171
[78]172    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
173
174    delete _component;
175
176    log_printf(FUNC,Update_Prediction_Table,FUNCTION,"End");
177  };
178
179}; // end namespace update_prediction_table
180}; // end namespace prediction_unit
181}; // end namespace front_end
182}; // end namespace multi_front_end
183}; // end namespace core
184
185}; // end namespace behavioural
186}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.