Changeset 111 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_issue.cpp
- Timestamp:
- Feb 27, 2009, 7:37:40 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_issue.cpp
r88 r111 42 42 log_printf(TRACE,Core_Glue,FUNCTION," * execute_loop [%d]",i); 43 43 44 std::list<generic::priority::select_t> * select = _priority[i]->select();45 for (std::list<generic::priority::select_t>::iterator it =select->begin();46 it !=select->end();47 ++it )44 std::list<generic::priority::select_t> * select_ooo_engine = _priority_ooo_engine[i]->select(); 45 for (std::list<generic::priority::select_t>::iterator it_ooo_engine=select_ooo_engine->begin(); 46 it_ooo_engine!=select_ooo_engine->end(); 47 ++it_ooo_engine) 48 48 { 49 const uint32_t ooo_engine_id = it ->grp;49 const uint32_t ooo_engine_id = it_ooo_engine->grp; 50 50 const uint32_t num_ooo_engine = _param->_translate_execute_loop_num_ooo_engine [i][ooo_engine_id]; 51 const uint32_t num_inst_issue = it ->elt;51 const uint32_t num_inst_issue = it_ooo_engine->elt; 52 52 53 53 log_printf(TRACE,Core_Glue,FUNCTION," * num_ooo_engine [%d] (id : %d)",num_ooo_engine, ooo_engine_id); … … 56 56 57 57 // have request ? 58 if (PORT_READ(in_ISSUE_OOO_ENGINE_VAL [num_ooo_engine][num_inst_issue])) 58 Tcontrol_t ooo_engine_val = PORT_READ(in_ISSUE_OOO_ENGINE_VAL [num_ooo_engine][num_inst_issue]); 59 60 // if (ooo_engine_val) 59 61 { 60 62 // // If ooo_engine can issue instruction on multiple execute_loop 61 63 // if (not ISSUE_OOO_ENGINE_ACK [num_ooo_engine][num_inst_issue]) 62 for (uint32_t j=0; j<_param->_nb_read_unit[i]; ++j) 64 65 std::list<generic::priority::select_t> * select_read_unit = _priority_read_unit[i]->select(); 66 for (std::list<generic::priority::select_t>::iterator it_read_unit=select_read_unit->begin(); 67 it_read_unit!=select_read_unit->end(); 68 ++it_read_unit) 69 { 70 uint32_t num_read_unit = it_read_unit->grp; 71 63 72 // Test if have an link and read unit is enable 64 { 65 log_printf(TRACE,Core_Glue,FUNCTION," * read_unit : %d",j); 66 log_printf(TRACE,Core_Glue,FUNCTION," * READ_UNIT_ENABLE : %d",READ_UNIT_ENABLE [i][j]); 67 log_printf(TRACE,Core_Glue,FUNCTION," * table_dispatch : %d",_param->_table_dispatch [num_ooo_engine][num_inst_issue][i][j]); 73 log_printf(TRACE,Core_Glue,FUNCTION," * read_unit : %d",num_read_unit); 74 log_printf(TRACE,Core_Glue,FUNCTION," * READ_UNIT_ENABLE : %d",READ_UNIT_ENABLE [i][num_read_unit]); 75 log_printf(TRACE,Core_Glue,FUNCTION," * table_dispatch : %d",_param->_table_dispatch [num_ooo_engine][num_inst_issue][i][num_read_unit]); 68 76 69 if (READ_UNIT_ENABLE [i][j] and 70 _param->_table_dispatch [num_ooo_engine][num_inst_issue][i][j]) 77 Tcontrol_t read_unit_enable = READ_UNIT_ENABLE [i][num_read_unit]; 78 if (read_unit_enable and 79 _param->_table_dispatch [num_ooo_engine][num_inst_issue][i][num_read_unit]) 71 80 { 72 81 // Transaction 73 ISSUE_EXECUTE_LOOP_VAL [i][ j] = 1;74 ISSUE_OOO_ENGINE_ACK [num_ooo_engine][num_inst_issue] = 1;75 READ_UNIT_ENABLE [i][ j] = false; // now, this read_unit is busy82 ISSUE_EXECUTE_LOOP_VAL [i][num_read_unit] = ooo_engine_val; 83 ISSUE_OOO_ENGINE_ACK [num_ooo_engine][num_inst_issue] = read_unit_enable; // = 1 84 READ_UNIT_ENABLE [i][num_read_unit] = false; // now, this read_unit is busy 76 85 77 86 if (_param->_have_port_context_id) 78 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_CONTEXT_ID [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_CONTEXT_ID [num_ooo_engine][num_inst_issue]));87 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_CONTEXT_ID [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_CONTEXT_ID [num_ooo_engine][num_inst_issue])); 79 88 if (_param->_have_port_front_end_id) 80 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_FRONT_END_ID [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_FRONT_END_ID [num_ooo_engine][num_inst_issue]));89 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_FRONT_END_ID [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_FRONT_END_ID [num_ooo_engine][num_inst_issue])); 81 90 if (_param->_have_port_ooo_engine_id) 82 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID [i][ j],ooo_engine_id);91 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID [i][num_read_unit],ooo_engine_id); 83 92 if (_param->_have_port_rob_ptr) 84 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_PACKET_ID [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_PACKET_ID [num_ooo_engine][num_inst_issue]));85 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OPERATION [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_OPERATION [num_ooo_engine][num_inst_issue]));86 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_TYPE [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_TYPE [num_ooo_engine][num_inst_issue]));87 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue]));93 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_PACKET_ID [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_PACKET_ID [num_ooo_engine][num_inst_issue])); 94 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OPERATION [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_OPERATION [num_ooo_engine][num_inst_issue])); 95 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_TYPE [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_TYPE [num_ooo_engine][num_inst_issue])); 96 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue])); 88 97 if (_param->_have_port_load_queue_ptr) 89 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue]));90 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT [num_ooo_engine][num_inst_issue]));91 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_IMMEDIAT [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_IMMEDIAT [num_ooo_engine][num_inst_issue]));92 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RA [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RA [num_ooo_engine][num_inst_issue]));93 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RA [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RA [num_ooo_engine][num_inst_issue]));94 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RB [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RB [num_ooo_engine][num_inst_issue]));95 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RB [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RB [num_ooo_engine][num_inst_issue]));96 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RC [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RC [num_ooo_engine][num_inst_issue]));97 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RC [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RC [num_ooo_engine][num_inst_issue]));98 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RD [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RD [num_ooo_engine][num_inst_issue]));99 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RD [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RD [num_ooo_engine][num_inst_issue]));100 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RE [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RE [num_ooo_engine][num_inst_issue]));101 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE [i][ j],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RE [num_ooo_engine][num_inst_issue]));98 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue])); 99 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT [num_ooo_engine][num_inst_issue])); 100 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_IMMEDIAT [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_IMMEDIAT [num_ooo_engine][num_inst_issue])); 101 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RA [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RA [num_ooo_engine][num_inst_issue])); 102 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RA [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RA [num_ooo_engine][num_inst_issue])); 103 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RB [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RB [num_ooo_engine][num_inst_issue])); 104 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RB [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RB [num_ooo_engine][num_inst_issue])); 105 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RC [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RC [num_ooo_engine][num_inst_issue])); 106 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RC [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RC [num_ooo_engine][num_inst_issue])); 107 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RD [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RD [num_ooo_engine][num_inst_issue])); 108 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RD [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RD [num_ooo_engine][num_inst_issue])); 109 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RE [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RE [num_ooo_engine][num_inst_issue])); 110 PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE [i][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RE [num_ooo_engine][num_inst_issue])); 102 111 } 103 112 }
Note: See TracChangeset
for help on using the changeset viewer.