source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Execute_loop_deallocation.cpp @ 78

Last change on this file since 78 was 78, checked in by rosiere, 16 years ago

Add :

  • Execute_loop (must be test systemC)
  • Prediction
    • Direction : predifined scheme
    • Branch Target Buffer
  • iFetch_unit
    • ifetch_queue
    • pc management
  • Decod_unit
    • coming soon : support for custom operation
  • Rename_unit
    • RAT
    • Free_list
    • Dependence RAW check
    • Load store unit pointer
  • New Environnement (hierarchy_memory will remove in a next version)


Modif :

  • Manage Custom Operation
  • All component in execute_loop to use the new statistics management

Not Finish :

  • Return Address Stack
  • Environnement
File size: 5.4 KB
Line 
1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Execute_loop.h"
9
10namespace morpheo                    {
11namespace behavioural {
12namespace core {
13namespace multi_execute_loop {
14namespace execute_loop {
15
16
17#undef  FUNCTION
18#define FUNCTION "Execute_loop::deallocation"
19  void Execute_loop::deallocation (void)
20  {
21    log_printf(FUNC,Execute_loop,FUNCTION,"Begin");
22
23    if (_usage & USE_SYSTEMC)
24      {
25        delete     in_CLOCK ;
26        delete     in_NRESET;
27
28        // ~~~~~[ Interface "execute_loop_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29        delete []  in_EXECUTE_LOOP_IN_VAL                  ;
30        delete [] out_EXECUTE_LOOP_IN_ACK                  ;
31        if (_param->_have_port_context_id)
32        delete []  in_EXECUTE_LOOP_IN_CONTEXT_ID           ;
33        if (_param->_have_port_front_end_id)
34        delete []  in_EXECUTE_LOOP_IN_FRONT_END_ID         ;
35        if (_param->_have_port_ooo_engine_id)
36        delete []  in_EXECUTE_LOOP_IN_OOO_ENGINE_ID        ;
37        if (_param->_have_port_packet_id)
38        delete []  in_EXECUTE_LOOP_IN_PACKET_ID            ;
39        delete []  in_EXECUTE_LOOP_IN_OPERATION            ;
40        delete []  in_EXECUTE_LOOP_IN_TYPE                 ;
41        delete []  in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_WRITE;
42        if (_param->_have_port_load_queue_ptr)
43        delete []  in_EXECUTE_LOOP_IN_LOAD_QUEUE_PTR_WRITE ;
44        delete []  in_EXECUTE_LOOP_IN_HAS_IMMEDIAT         ;
45        delete []  in_EXECUTE_LOOP_IN_IMMEDIAT             ;
46        delete []  in_EXECUTE_LOOP_IN_READ_RA              ;
47        delete []  in_EXECUTE_LOOP_IN_NUM_REG_RA           ;
48        delete []  in_EXECUTE_LOOP_IN_READ_RB              ;
49        delete []  in_EXECUTE_LOOP_IN_NUM_REG_RB           ;
50        delete []  in_EXECUTE_LOOP_IN_READ_RC              ;
51        delete []  in_EXECUTE_LOOP_IN_NUM_REG_RC           ;
52        delete []  in_EXECUTE_LOOP_IN_WRITE_RD             ;
53        delete []  in_EXECUTE_LOOP_IN_NUM_REG_RD           ;
54        delete []  in_EXECUTE_LOOP_IN_WRITE_RE             ;
55        delete []  in_EXECUTE_LOOP_IN_NUM_REG_RE           ;
56
57        // ~~~~~[ Interface "execute_loop_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58        delete [] out_EXECUTE_LOOP_OUT_VAL                 ;
59        delete []  in_EXECUTE_LOOP_OUT_ACK                 ;
60        if (_param->_have_port_context_id)
61        delete [] out_EXECUTE_LOOP_OUT_CONTEXT_ID          ;
62        if (_param->_have_port_front_end_id)
63        delete [] out_EXECUTE_LOOP_OUT_FRONT_END_ID        ;
64        if (_param->_have_port_ooo_engine_id)
65        delete [] out_EXECUTE_LOOP_OUT_OOO_ENGINE_ID       ;
66        if (_param->_have_port_packet_id)
67        delete [] out_EXECUTE_LOOP_OUT_PACKET_ID           ;
68      //delete [] out_EXECUTE_LOOP_OUT_OPERATION           ;
69      //delete [] out_EXECUTE_LOOP_OUT_TYPE                ;
70        delete [] out_EXECUTE_LOOP_OUT_FLAGS               ;
71        delete [] out_EXECUTE_LOOP_OUT_EXCEPTION           ;
72        delete [] out_EXECUTE_LOOP_OUT_NO_SEQUENCE         ;
73        delete [] out_EXECUTE_LOOP_OUT_ADDRESS             ;
74
75        // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
76        delete [] out_DCACHE_REQ_VAL                       ;
77        delete []  in_DCACHE_REQ_ACK                       ;
78        if (_param->_have_port_dcache_context_id)
79        delete [] out_DCACHE_REQ_CONTEXT_ID                ;
80        delete [] out_DCACHE_REQ_PACKET_ID                 ;
81        delete [] out_DCACHE_REQ_ADDRESS                   ;
82        delete [] out_DCACHE_REQ_TYPE                      ;
83        delete [] out_DCACHE_REQ_WDATA                     ;
84
85        // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
86        delete []  in_DCACHE_RSP_VAL                       ;
87        delete [] out_DCACHE_RSP_ACK                       ;
88        if (_param->_have_port_dcache_context_id)
89        delete []  in_DCACHE_RSP_CONTEXT_ID                ;
90        delete []  in_DCACHE_RSP_PACKET_ID                 ;
91        delete []  in_DCACHE_RSP_RDATA                     ;
92        delete []  in_DCACHE_RSP_ERROR                     ;
93   
94        // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
95        delete []  in_INSERT_ROB_VAL                       ;
96        delete [] out_INSERT_ROB_ACK                       ;
97        delete []  in_INSERT_ROB_RD_USE                    ;
98        delete []  in_INSERT_ROB_RD_NUM_REG                ;
99        delete []  in_INSERT_ROB_RE_USE                    ;
100        delete []  in_INSERT_ROB_RE_NUM_REG                ;
101
102        // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
103        delete []  in_RETIRE_ROB_VAL                       ;
104        delete [] out_RETIRE_ROB_ACK                       ;
105        delete []  in_RETIRE_ROB_RD_OLD_USE                ; 
106        delete []  in_RETIRE_ROB_RD_OLD_NUM_REG            ;
107        delete []  in_RETIRE_ROB_RD_NEW_USE                ;
108        delete []  in_RETIRE_ROB_RD_NEW_NUM_REG            ;
109        delete []  in_RETIRE_ROB_RE_OLD_USE                ; 
110        delete []  in_RETIRE_ROB_RE_OLD_NUM_REG            ;
111        delete []  in_RETIRE_ROB_RE_NEW_USE                ;
112        delete []  in_RETIRE_ROB_RE_NEW_NUM_REG            ;
113      }
114   
115    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
116    delete    _component;
117    delete [] _component_read_unit                   ;
118    delete [] _component_functionnal_unit            ;
119    delete [] _component_load_store_unit             ;
120    delete [] _component_write_unit                  ;
121    delete [] _component_read_unit_to_execution_unit ;
122    delete [] _component_execution_unit_to_write_unit;
123    delete [] _component_register_unit               ;
124   
125    log_printf(FUNC,Execute_loop,FUNCTION,"End");
126  };
127
128}; // end namespace execute_loop
129}; // end namespace multi_execute_loop
130}; // end namespace core
131
132}; // end namespace behavioural
133}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.