Changeset 104 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp
- Timestamp:
- Jan 21, 2009, 10:53:13 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp
r101 r104 41 41 for (uint32_t j=0; j<_param->_nb_context [i]; j++) 42 42 { 43 reg_NB_INST_COMMIT_ALL [i][j] = 0; 44 reg_NB_INST_COMMIT_MEM [i][j] = 0; 45 46 reg_EVENT_STATE [i][j] = EVENT_STATE_NO_EVENT; 43 reg_NB_INST_COMMIT_ALL [i][j] = 0; 44 reg_NB_INST_COMMIT_MEM [i][j] = 0; 45 46 reg_EVENT_STATE [i][j] = EVENT_STATE_NO_EVENT; 47 reg_EVENT_FLUSH [i][j] = false; 48 49 // reg_PC_PREVIOUS [i][j] = (0x100-4)>>2; 50 reg_PC_CURRENT [i][j] = (0x100 )>>2; 51 reg_PC_CURRENT_IS_DS [i][j] = 0; 52 reg_PC_CURRENT_IS_DS_TAKE [i][j] = 0; 53 // reg_PC_NEXT [i][j] = (0x100+4)>>2; 47 54 } 48 55 … … 62 69 switch (reg_EVENT_STATE [i][j]) 63 70 { 64 case EVENT_STATE_EVENT : reg_EVENT_STATE [i][j] = EVENT_STATE_WAITEND ; break; 65 case EVENT_STATE_END : reg_EVENT_STATE [i][j] = EVENT_STATE_NO_EVENT; break; 71 case EVENT_STATE_EVENT : 72 { 73 if (internal_RETIRE_EVENT_VAL [i][j] and in_RETIRE_EVENT_ACK [i][j]) 74 reg_EVENT_STATE [i][j] = EVENT_STATE_WAITEND ; 75 break; 76 } 77 case EVENT_STATE_WAITEND : 78 { 79 if (reg_NB_INST_COMMIT_ALL [i][j] == 0) 80 { 81 reg_EVENT_STATE [i][j] = EVENT_STATE_END; 82 reg_EVENT_FLUSH [i][j] = false; 83 } 84 break; 85 } 86 case EVENT_STATE_END : 87 { 88 reg_EVENT_STATE [i][j] = EVENT_STATE_NO_EVENT; 89 break; 90 } 66 91 // case EVENT_STATE_NO_EVENT : 67 // case EVENT_STATE_WAITEND :68 92 default : break; 69 93 } … … 324 348 { 325 349 reg_EVENT_STATE [front_end_id][context_id] = EVENT_STATE_EVENT; 326 327 // !!!!!!!!!!! Compute address 350 reg_EVENT_FLUSH [front_end_id][context_id] = true; 351 352 // TODO Compute address !!!!!!!!!!! 328 353 } 329 354 … … 332 357 if (type == TYPE_MEMORY) 333 358 reg_NB_INST_COMMIT_MEM [front_end_id][context_id] --; 334 335 if (reg_NB_INST_COMMIT_ALL [front_end_id][context_id] == 0)336 reg_EVENT_STATE [front_end_id][context_id] = EVENT_STATE_END;337 359 338 360 reg_NUM_BANK_HEAD = (reg_NUM_BANK_HEAD+1)%_param->_nb_bank; … … 416 438 417 439 Tdepth_t depth_min = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MIN[front_end_id][context_id]):0; 418 Tdepth_t depth_max = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MAX[front_end_id][context_id]):0;419 Tcontrol_t depth_full = PORT_READ(in_DEPTH_FULL [front_end_id][context_id]);440 // Tdepth_t depth_max = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MAX[front_end_id][context_id]):0; 441 // Tcontrol_t depth_full = PORT_READ(in_DEPTH_FULL [front_end_id][context_id]); 420 442 421 443 // is a valid instruction ? … … 433 455 // ....... max ...X... min ....... KO 434 456 435 Tcontrol_t is_valid = ((depth == depth_min) or 436 depth_full or 437 ((depth_min <= depth_max)? 438 ((depth >= depth_min) and (depth <=depth_max)): 439 ((depth >= depth_min) or (depth <=depth_max)))); 457 // Tcontrol_t is_valid = ((depth == depth_min) or 458 // depth_full or 459 // ((depth_min <= depth_max)? 460 // ((depth >= depth_min) and (depth <=depth_max)): 461 // ((depth >= depth_min) or (depth <=depth_max)))); 462 463 bool flush = reg_EVENT_FLUSH [front_end_id][context_id]; 464 Tcontrol_t is_valid = ((depth == depth_min) and not flush); 440 465 441 466 log_printf(TRACE,Commit_unit,FUNCTION," * HEAD [%d]",i); … … 443 468 log_printf(TRACE,Commit_unit,FUNCTION," * depth : %d",depth ); 444 469 log_printf(TRACE,Commit_unit,FUNCTION," * depth_min : %d",depth_min); 445 log_printf(TRACE,Commit_unit,FUNCTION," * depth_max : %d",depth_max); 470 // log_printf(TRACE,Commit_unit,FUNCTION," * depth_max : %d",depth_max); 471 log_printf(TRACE,Commit_unit,FUNCTION," * flush : %d",flush); 446 472 447 473 //------------------------------------------------------ … … 522 548 for (uint32_t i=0; i<_param->_nb_front_end; i++) 523 549 for (uint32_t j=0; j<_param->_nb_context [i]; j++) 524 log_printf(TRACE,Commit_unit,FUNCTION," * num_inst[%d][%d] all : %d, mem : %d",i,j,reg_NB_INST_COMMIT_ALL[i][j],reg_NB_INST_COMMIT_MEM[i][j]); 550 { 551 log_printf(TRACE,Commit_unit,FUNCTION," * [%d][%d] num_inst_all : %d, num_inst_mem : %d",i,j,reg_NB_INST_COMMIT_ALL[i][j],reg_NB_INST_COMMIT_MEM[i][j]); 552 log_printf(TRACE,Commit_unit,FUNCTION," * [%d][%d] state : %s",i,j,toString(reg_EVENT_STATE [i][j]).c_str()); 553 } 525 554 526 555 for (uint32_t i=0; i<_param->_nb_bank; i++) 527 556 { 528 log_printf(TRACE,Commit_unit,FUNCTION," * Bank [%d] size : %d, ptr : %d",i,(int)_rob[i].size(), reg_BANK_PTR [i]);557 log_printf(TRACE,Commit_unit,FUNCTION," * Bank [%d] size : %d, ptr : %d",i,(int)_rob[i].size(), reg_BANK_PTR [i]); 529 558 530 559 #ifdef STATISTICS
Note: See TracChangeset
for help on using the changeset viewer.