- Timestamp:
- Jun 24, 2014, 5:30:03 PM (11 years ago)
- Location:
- branches/MESI/modules
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/MESI/modules/vci_cc_vcache_wrapper/caba/source/include/vci_cc_vcache_wrapper.h
r700 r719 774 774 uint32_t m_cpt_data_tlb_inval; // number of data tlb invalidate 775 775 776 uint32_t m_cpt_data_miss_clean; 777 uint32_t m_cpt_data_miss_clean_pte; 778 uint32_t m_cpt_data_miss_clean_ptd; 779 uint32_t m_cpt_miss_tlb; 780 uint32_t m_cpt_dcache_miss_pte; 781 776 782 // FSM activity counters 777 783 uint32_t m_cpt_fsm_icache [64]; -
branches/MESI/modules/vci_cc_vcache_wrapper/caba/source/src/vci_cc_vcache_wrapper.cpp
r700 r719 597 597 //////////////////////// 598 598 { 599 float run_cycles = (float)(m_cpt_total_cycles - m_cpt_frz_cycles);599 //float run_cycles = (float)(m_cpt_total_cycles - m_cpt_frz_cycles); 600 600 std::cout << name() << std::endl 601 << "- CPI = " << std::dec <<(float)m_cpt_total_cycles/run_cycles << std::endl 602 << "- READ RATE = " << (float)m_cpt_data_read/run_cycles << std::endl 603 << "- WRITE RATE = " << (float)m_cpt_data_write/run_cycles << std::endl 604 << "- IMISS_RATE = " << (float)m_cpt_ins_miss/m_cpt_ins_read << std::endl 605 << "- DMISS RATE = " << (float)m_cpt_data_miss/(m_cpt_data_read-m_cpt_unc_read) << std::endl 606 << "- INS MISS COST = " << (float)m_cost_ins_miss_frz/m_cpt_ins_miss << std::endl 607 << "- DATA MISS COST = " << (float)m_cost_data_miss_frz/m_cpt_data_miss << std::endl 608 << "- WRITE COST = " << (float)m_cost_write_frz/m_cpt_data_write << std::endl 609 << "- UNC COST = " << (float)m_cost_unc_read_frz/m_cpt_unc_read << std::endl 610 << "- UNCACHED READ RATE = " << (float)m_cpt_unc_read/m_cpt_data_read << std::endl 611 << "- CACHED WRITE RATE = " << (float)m_cpt_write_cached/m_cpt_data_write << std::endl 612 << "- INS TLB MISS RATE = " << (float)m_cpt_ins_tlb_miss/m_cpt_ins_tlb_read << std::endl 613 << "- DATA TLB MISS RATE = " << (float)m_cpt_data_tlb_miss/m_cpt_data_tlb_read << std::endl 614 << "- ITLB MISS COST = " << (float)m_cost_ins_tlb_miss_frz/m_cpt_ins_tlb_miss << std::endl 615 << "- DTLB MISS COST = " << (float)m_cost_data_tlb_miss_frz/m_cpt_data_tlb_miss << std::endl 616 << "- ITLB UPDATE ACC COST = " << (float)m_cost_ins_tlb_update_acc_frz/m_cpt_ins_tlb_update_acc << std::endl 617 << "- DTLB UPDATE ACC COST = " << (float)m_cost_data_tlb_update_acc_frz/m_cpt_data_tlb_update_acc << std::endl 618 << "- DTLB UPDATE DIRTY COST = " << (float)m_cost_data_tlb_update_dirty_frz/m_cpt_data_tlb_update_dirty << std::endl 619 << "- ITLB HIT IN DCACHE RATE = " << (float)m_cpt_ins_tlb_hit_dcache/m_cpt_ins_tlb_miss << std::endl 620 << "- DTLB HIT IN DCACHE RATE = " << (float)m_cpt_data_tlb_hit_dcache/m_cpt_data_tlb_miss << std::endl 621 //<< "- DCACHE FROZEN BY ITLB = " << (float)m_cost_ins_tlb_occup_cache_frz/m_cpt_dcache_frz_cycles << std::endl 622 << "- DCACHE FOR TLB % = " << (float)m_cpt_tlb_occup_dcache/(m_dcache_ways*m_dcache_sets) << std::endl 623 << "- NB CC BROADCAST = " << m_cpt_cc_broadcast << std::endl 624 << "- NB CC UPDATE DATA = " << m_cpt_cc_update_dcache << std::endl 625 << "- NB CC INVAL DATA = " << m_cpt_cc_inval_dcache << std::endl 626 << "- NB CC INVAL INS = " << m_cpt_cc_inval_icache << std::endl 627 << "- CC BROADCAST COST = " << (float)m_cost_broadcast_frz/m_cpt_cc_broadcast << std::endl 628 << "- CC UPDATE DATA COST = " << (float)m_cost_updt_data_frz/m_cpt_cc_update_dcache << std::endl 629 << "- CC INVAL DATA COST = " << (float)m_cost_inval_data_frz/m_cpt_cc_inval_dcache << std::endl 630 << "- CC INVAL INS COST = " << (float)m_cost_inval_ins_frz/m_cpt_cc_inval_icache << std::endl 631 << "- NB CC CLEANUP DATA = " << m_cpt_cc_cleanup_data << std::endl 632 << "- NB CC CLEANUP INS = " << m_cpt_cc_cleanup_ins << std::endl 633 << "- IMISS TRANSACTION = " << (float)m_cost_imiss_transaction/m_cpt_imiss_transaction << std::endl 634 << "- DMISS TRANSACTION = " << (float)m_cost_dmiss_transaction/m_cpt_dmiss_transaction << std::endl 635 << "- UNC TRANSACTION = " << (float)m_cost_unc_transaction/m_cpt_unc_transaction << std::endl 636 << "- WRITE TRANSACTION = " << (float)m_cost_write_transaction/m_cpt_write_transaction << std::endl 637 << "- NB WRITE TRANSACTION = " << m_cpt_write_transaction << std::endl 638 << "- NB WRITE WORDS VCI = " << m_length_write_transaction << std::endl 639 << "- NB WRITE PROC = " << m_cpt_data_write << std::endl 640 << "- NB WRITE BACK = " << m_cpt_data_write_back << std::endl 641 << "- NB WRITE BACK COHERENCE = " << m_cpt_data_cleanup << std::endl 642 << "- NB DATA SC = " << m_cpt_data_sc << std::endl 643 << "- WRITE LENGTH = " << (float)m_length_write_transaction/m_cpt_write_transaction << std::endl 644 << "- ITLB MISS TRANSACTION = " << (float)m_cost_itlbmiss_transaction/m_cpt_itlbmiss_transaction << std::endl 645 << "- DTLB MISS TRANSACTION = " << (float)m_cost_dtlbmiss_transaction/m_cpt_dtlbmiss_transaction << std::endl 646 647 << "- DMISS TRANSACTION = " << m_cpt_dmiss_transaction << std::endl 648 << "- DUNC TRANSACTION = " << m_cpt_dunc_transaction << std::endl 649 << "- LL TRANSACTION = " << m_cpt_ll_transaction << std::endl 650 << "- WRITE DATA MISS = " << m_cpt_data_write_miss << std::endl 651 << "- WRITE DATA ON ZOMBI = " << m_cpt_data_write_on_zombi << std::endl 652 << "- WRITE DATA ON ZOMBI NCC = " << m_cpt_data_write_on_zombi_ncc << std::endl 653 << "- CLEANUP DATA NOT DIRTY = " << m_cpt_cleanup_data_not_dirty << std::endl 654 << "- CLEANUP DATA DIRTY WORD = " << m_cpt_cleanup_data_dirty_word << std::endl; 601 // << "- CPI = " << std::dec <<(float)m_cpt_total_cycles/run_cycles << std::endl 602 << "- NB_MISS_CLEAN = " << std::dec <<m_cpt_data_miss_clean << std::endl 603 << "- NB_MISS_CLEAN_PTE = " << std::dec <<m_cpt_data_miss_clean_pte << std::endl 604 << "- NB_MISS_CLEAN_PTD = " << std::dec <<m_cpt_data_miss_clean_ptd << std::endl 605 << "- NB_MISS_TLB = " << std::dec <<m_cpt_miss_tlb << std::endl 606 << "- NB_MISS_PTE = " << std::dec <<m_cpt_dcache_miss_pte << std::endl; 607 608 // << "- READ RATE = " << (float)m_cpt_data_read/run_cycles << std::endl 609 // << "- WRITE RATE = " << (float)m_cpt_data_write/run_cycles << std::endl 610 // << "- IMISS_RATE = " << (float)m_cpt_ins_miss/m_cpt_ins_read << std::endl 611 // << "- DMISS RATE = " << (float)m_cpt_data_miss/(m_cpt_data_read-m_cpt_unc_read) << std::endl 612 // << "- INS MISS COST = " << (float)m_cost_ins_miss_frz/m_cpt_ins_miss << std::endl 613 // << "- DATA MISS COST = " << (float)m_cost_data_miss_frz/m_cpt_data_miss << std::endl 614 // << "- WRITE COST = " << (float)m_cost_write_frz/m_cpt_data_write << std::endl 615 // << "- UNC COST = " << (float)m_cost_unc_read_frz/m_cpt_unc_read << std::endl 616 // << "- UNCACHED READ RATE = " << (float)m_cpt_unc_read/m_cpt_data_read << std::endl 617 // << "- CACHED WRITE RATE = " << (float)m_cpt_write_cached/m_cpt_data_write << std::endl 618 // << "- INS TLB MISS RATE = " << (float)m_cpt_ins_tlb_miss/m_cpt_ins_tlb_read << std::endl 619 // << "- DATA TLB MISS RATE = " << (float)m_cpt_data_tlb_miss/m_cpt_data_tlb_read << std::endl 620 // << "- ITLB MISS COST = " << (float)m_cost_ins_tlb_miss_frz/m_cpt_ins_tlb_miss << std::endl 621 // << "- DTLB MISS COST = " << (float)m_cost_data_tlb_miss_frz/m_cpt_data_tlb_miss << std::endl 622 // << "- ITLB UPDATE ACC COST = " << (float)m_cost_ins_tlb_update_acc_frz/m_cpt_ins_tlb_update_acc << std::endl 623 // << "- DTLB UPDATE ACC COST = " << (float)m_cost_data_tlb_update_acc_frz/m_cpt_data_tlb_update_acc << std::endl 624 // << "- DTLB UPDATE DIRTY COST = " << (float)m_cost_data_tlb_update_dirty_frz/m_cpt_data_tlb_update_dirty << std::endl 625 // << "- ITLB HIT IN DCACHE RATE = " << (float)m_cpt_ins_tlb_hit_dcache/m_cpt_ins_tlb_miss << std::endl 626 // << "- DTLB HIT IN DCACHE RATE = " << (float)m_cpt_data_tlb_hit_dcache/m_cpt_data_tlb_miss << std::endl 627 // //<< "- DCACHE FROZEN BY ITLB = " << (float)m_cost_ins_tlb_occup_cache_frz/m_cpt_dcache_frz_cycles << std::endl 628 // << "- DCACHE FOR TLB % = " << (float)m_cpt_tlb_occup_dcache/(m_dcache_ways*m_dcache_sets) << std::endl 629 // << "- NB CC BROADCAST = " << m_cpt_cc_broadcast << std::endl 630 // << "- NB CC UPDATE DATA = " << m_cpt_cc_update_dcache << std::endl 631 // << "- NB CC INVAL DATA = " << m_cpt_cc_inval_dcache << std::endl 632 // << "- NB CC INVAL INS = " << m_cpt_cc_inval_icache << std::endl 633 // << "- CC BROADCAST COST = " << (float)m_cost_broadcast_frz/m_cpt_cc_broadcast << std::endl 634 // << "- CC UPDATE DATA COST = " << (float)m_cost_updt_data_frz/m_cpt_cc_update_dcache << std::endl 635 // << "- CC INVAL DATA COST = " << (float)m_cost_inval_data_frz/m_cpt_cc_inval_dcache << std::endl 636 // << "- CC INVAL INS COST = " << (float)m_cost_inval_ins_frz/m_cpt_cc_inval_icache << std::endl 637 // << "- NB CC CLEANUP DATA = " << m_cpt_cc_cleanup_data << std::endl 638 // << "- NB CC CLEANUP INS = " << m_cpt_cc_cleanup_ins << std::endl 639 // << "- IMISS TRANSACTION = " << (float)m_cost_imiss_transaction/m_cpt_imiss_transaction << std::endl 640 // << "- DMISS TRANSACTION = " << (float)m_cost_dmiss_transaction/m_cpt_dmiss_transaction << std::endl 641 // << "- UNC TRANSACTION = " << (float)m_cost_unc_transaction/m_cpt_unc_transaction << std::endl 642 // << "- WRITE TRANSACTION = " << (float)m_cost_write_transaction/m_cpt_write_transaction << std::endl 643 // << "- NB WRITE TRANSACTION = " << m_cpt_write_transaction << std::endl 644 // << "- NB WRITE WORDS VCI = " << m_length_write_transaction << std::endl 645 // << "- NB WRITE PROC = " << m_cpt_data_write << std::endl 646 // << "- NB WRITE BACK = " << m_cpt_data_write_back << std::endl 647 // << "- NB WRITE BACK COHERENCE = " << m_cpt_data_cleanup << std::endl 648 // << "- NB DATA SC = " << m_cpt_data_sc << std::endl 649 // << "- WRITE LENGTH = " << (float)m_length_write_transaction/m_cpt_write_transaction << std::endl 650 // << "- ITLB MISS TRANSACTION = " << (float)m_cost_itlbmiss_transaction/m_cpt_itlbmiss_transaction << std::endl 651 // << "- DTLB MISS TRANSACTION = " << (float)m_cost_dtlbmiss_transaction/m_cpt_dtlbmiss_transaction << std::endl 652 653 // << "- DMISS TRANSACTION = " << m_cpt_dmiss_transaction << std::endl 654 // << "- DUNC TRANSACTION = " << m_cpt_dunc_transaction << std::endl 655 // << "- LL TRANSACTION = " << m_cpt_ll_transaction << std::endl 656 // << "- WRITE DATA MISS = " << m_cpt_data_write_miss << std::endl 657 // << "- WRITE DATA ON ZOMBI = " << m_cpt_data_write_on_zombi << std::endl 658 // << "- WRITE DATA ON ZOMBI NCC = " << m_cpt_data_write_on_zombi_ncc << std::endl 659 // << "- CLEANUP DATA NOT DIRTY = " << m_cpt_cleanup_data_not_dirty << std::endl 660 // << "- CLEANUP DATA DIRTY WORD = " << m_cpt_cleanup_data_dirty_word << std::endl; 655 661 } 656 662 … … 755 761 m_cpt_data_write_on_zombi = 0; 756 762 m_cpt_data_write_on_zombi_ncc = 0; 763 764 m_cpt_data_miss_clean = 0; 765 m_cpt_data_miss_clean_pte = 0; 766 m_cpt_data_miss_clean_ptd = 0; 767 m_cpt_miss_tlb = 0; 757 768 758 769 } … … 1300 1311 m_irsp.instruction = cache_inst; 1301 1312 r_icache_fsm = ICACHE_IDLE; 1302 #if DEBUG_ICACHE 1313 #if DEBUG_ICACHE 1303 1314 if ( m_debug_activated ) 1304 1315 std::cout << " <PROC " << name() << " ICACHE_IDLE> READ HIT in icache" … … 2280 2291 if (m_dreq.addr == 0x0 && m_dreq.wdata == 0xDEADDEAD) { 2281 2292 std::cout << "*** Ecriture à l'adresse 0 pour fin de simulation ***" << std::endl; 2293 print_stats(); 2282 2294 raise(SIGINT); 2283 2295 } … … 3057 3069 paddr_t pte_paddr; 3058 3070 3071 3072 m_cpt_miss_tlb ++; 3059 3073 // evaluate bypass in order to skip first level page table access 3060 3074 if ( r_dcache_tlb_ins.read() ) // itlb miss … … 3247 3261 r_dcache_miss_type = PTE1_MISS; 3248 3262 r_dcache_fsm = DCACHE_MISS_SELECT; 3263 3264 m_cpt_dcache_miss_pte ++; 3249 3265 3250 3266 #if DEBUG_DCACHE … … 3531 3547 r_dcache_miss_type = PTE2_MISS; 3532 3548 3549 m_cpt_dcache_miss_pte ++; 3533 3550 #if DEBUG_DCACHE 3534 3551 if ( m_debug_activated ) … … 4511 4528 size_t set = r_dcache_miss_set.read(); 4512 4529 4530 m_cpt_data_miss_clean ++; 4513 4531 #ifdef INSTRUMENTATION 4514 4532 m_cpt_dcache_dir_read++; … … 4535 4553 //MODIFIED 4536 4554 //r_dcache_in_tlb[way*m_dcache_sets+set] = false; 4555 m_cpt_data_miss_clean_pte ++; 4537 4556 r_dcache_content_state[way*m_dcache_sets+set] = LINE_EMPTY; 4538 4557 if( not r_dcache_cleanup_victim_req.read() ) … … 4553 4572 else if ( r_dcache_content_state[way*m_dcache_sets+set] == LINE_CACHE_CONTAINS_PTD ) 4554 4573 { 4574 m_cpt_data_miss_clean_ptd ++; 4555 4575 r_itlb.reset(); 4556 4576 r_dtlb.reset(); -
branches/MESI/modules/vci_mem_cache/caba/source/include/vci_mem_cache.h
r700 r719 491 491 uint32_t m_cpt_trt_rb; // Read blocked by a hit in trt 492 492 uint32_t m_cpt_trt_full; // Transaction blocked due to a full trt 493 uint32_t m_cpt_put; 494 uint32_t m_cpt_get; 493 495 494 496 uint32_t m_cpt_read_fsm_dir_lock; // wait DIR LOCK -
branches/MESI/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp
r700 r719 1 /* -*- c++ -*-1 /* -*- c++ -*- 2 2 * 3 3 * File : vci_mem_cache.cpp … … 898 898 m_cpt_trt_rb = 0 ; 899 899 m_cpt_trt_full = 0 ; 900 900 m_cpt_put = 0 ; 901 m_cpt_get = 0 ; 901 902 m_cpt_read_fsm_dir_lock = 0 ; 902 903 m_cpt_read_fsm_n_dir_lock = 0 ; … … 996 997 << "[004] READ COST (FLITS * DIST) = " << m_cpt_read_miss_cost << std::endl 997 998 << std::endl 998 << "[005] LOCAL GETM MISS = " << m_cpt_getm_miss_local << std::endl999 << "[006] REMOTE GETM MISS = " << m_cpt_getm_miss_remote << std::endl1000 << "[007] LOCAL GETM HIT = " << m_cpt_getm_hit_local << std::endl1001 << "[008] REMOTE GETM HIT = " << m_cpt_getm_hit_remote << std::endl1002 << "[009] GETM COST (FLITS * DIST) = " << m_cpt_getm_cost << std::endl999 << "[005] LOCAL WRITE = " << m_cpt_write_local << std::endl 1000 << "[006] REMOTE WRITE = " << m_cpt_write_remote << std::endl 1001 << "[007] WRITE FLITS LOCAL = " << m_cpt_write_flits_local << std::endl 1002 << "[008] WRITE FLITS REMOTE = " << m_cpt_write_flits_remote << std::endl 1003 << "[009] WRITE COST (FLITS * DIST) = " << m_cpt_write_cost << std::endl 1003 1004 << std::endl 1004 << "[010] LOCAL WRITE = " << m_cpt_write_local << std::endl 1005 << "[011] REMOTE WRITE = " << m_cpt_write_remote << std::endl 1006 << "[012] WRITE FLITS LOCAL = " << m_cpt_write_flits_local << std::endl 1007 << "[013] WRITE FLITS REMOTE = " << m_cpt_write_flits_remote << std::endl 1008 << "[014] WRITE COST (FLITS * DIST) = " << m_cpt_write_cost << std::endl 1005 << "[010] LOCAL LL = " << m_cpt_ll_local << std::endl 1006 << "[011] REMOTE LL = " << m_cpt_ll_remote << std::endl 1007 << "[012] LL COST (FLITS * DIST) = " << m_cpt_ll_cost << std::endl 1009 1008 << std::endl 1010 << "[01 5] LOCAL LL = " << m_cpt_ll_local << std::endl1011 << "[01 6] REMOTE LL = " << m_cpt_ll_remote << std::endl1012 << "[01 7] LL COST (FLITS * DIST) = " << m_cpt_ll_cost << std::endl1009 << "[013] LOCAL SC = " << m_cpt_sc_local << std::endl 1010 << "[014] REMOTE SC = " << m_cpt_sc_remote << std::endl 1011 << "[015] SC COST (FLITS * DIST) = " << m_cpt_sc_cost << std::endl 1013 1012 << std::endl 1014 << "[01 8] LOCAL SC = " << m_cpt_sc_local << std::endl1015 << "[01 9] REMOTE SC = " << m_cpt_sc_remote << std::endl1016 << "[0 20] SC COST (FLITS * DIST) = " << m_cpt_sc_cost << std::endl1013 << "[016] LOCAL CAS = " << m_cpt_cas_local << std::endl 1014 << "[017] REMOTE CAS = " << m_cpt_cas_remote << std::endl 1015 << "[018] CAS COST (FLITS * DIST) = " << m_cpt_cas_cost << std::endl 1017 1016 << std::endl 1018 << "[021] LOCAL CAS = " << m_cpt_cas_local << std::endl 1019 << "[022] REMOTE CAS = " << m_cpt_cas_remote << std::endl 1020 << "[023] CAS COST (FLITS * DIST) = " << m_cpt_cas_cost << std::endl 1017 << "[019] REQUESTS TRIG. UPDATE = " << m_cpt_update << std::endl 1018 << "[020] LOCAL UPDATE = " << m_cpt_update_local << std::endl 1019 << "[021] REMOTE UPDATE = " << m_cpt_update_remote << std::endl 1020 << "[022] UPDT COST (FLITS * DIST) = " << m_cpt_update_cost << std::endl 1021 1021 << std::endl 1022 << "[02 4] REQUESTS TRIG. UPDATE = " << m_cpt_update<< std::endl1023 << "[02 5] LOCAL UPDATE = " << m_cpt_update_local << std::endl1024 << "[02 6] REMOTE UPDATE = " << m_cpt_update_remote << std::endl1025 << "[02 7] UPDT COST (FLITS * DIST) = " << m_cpt_update_cost << std::endl1022 << "[023] REQUESTS TRIG. M_INV = " << m_cpt_minval << std::endl 1023 << "[024] LOCAL M_INV = " << m_cpt_minval_local << std::endl 1024 << "[025] REMOTE M_INV = " << m_cpt_minval_remote << std::endl 1025 << "[026] M_INV COST (FLITS * DIST) = " << m_cpt_minval_cost << std::endl 1026 1026 << std::endl 1027 << "[028] REQUESTS TRIG. M_INV = " << m_cpt_minval << std::endl 1028 << "[029] LOCAL M_INV = " << m_cpt_minval_local << std::endl 1029 << "[030] REMOTE M_INV = " << m_cpt_minval_remote << std::endl 1030 << "[031] M_INV COST (FLITS * DIST) = " << m_cpt_minval_cost << std::endl 1027 << "[027] BROADCAT INVAL = " << m_cpt_binval << std::endl 1031 1028 << std::endl 1032 << "[032] BROADCAT INVAL = " << m_cpt_binval << std::endl 1029 << "[028] LOCAL CLEANUP = " << m_cpt_cleanup_local << std::endl 1030 << "[029] REMOTE CLEANUP = " << m_cpt_cleanup_remote << std::endl 1031 << "[030] CLNUP COST (FLITS * DIST) = " << m_cpt_cleanup_cost << std::endl 1033 1032 << std::endl 1034 << "[033] LOCAL CLEANUP = " << m_cpt_cleanup_local << std::endl1035 << "[034] REMOTE CLEANUP = " << m_cpt_cleanup_remote << std::endl1036 << "[035] CLEANUP DATA = " << m_cpt_cleanup_with_data << std::endl1037 << "[036] CLNUP COST (FLITS * DIST) = " << m_cpt_cleanup_cost << std::endl1038 1033 << std::endl 1039 << "[037] MULTI_ACK_MISS = " << m_cpt_multi_ack_miss << std::endl 1040 << "[038] MULTI_ACK_HIT = " << m_cpt_multi_ack_hit << std::endl 1041 << "[039] MULTI_ACK_DATA = " << m_cpt_multi_ack_hit_with_data << std::endl 1034 << "[031] READ MISS = " << m_cpt_read_miss << std::endl 1035 << "[032] WRITE MISS = " << m_cpt_write_miss << std::endl 1036 << "[033] WRITE DIRTY = " << m_cpt_write_dirty << std::endl 1037 << "[034] RD BLOCKED BY HIT IN TRT = " << m_cpt_trt_rb << std::endl 1038 << "[035] TRANS BLOCKED BY FULL TRT = " << m_cpt_trt_full << std::endl 1039 << "[036] PUT (UNIMPLEMENTED) = " << m_cpt_put << std::endl 1040 << "[037] GET (UNIMPLEMENTED) = " << m_cpt_get << std::endl 1041 << "[038] WRITE BROADCAST = " << m_cpt_write_broadcast << std::endl 1042 1042 << std::endl 1043 << "[040] READ MISS = " << m_cpt_read_miss << std::endl 1044 << "[041] GETM MISS = " << m_cpt_getm_miss << std::endl 1045 << "[042] WRITE MISS = " << m_cpt_write_miss << std::endl 1046 << "[043] CAS MISS = " << m_cpt_cas_miss << std::endl 1047 << "[044] WRITE DIRTY = " << m_cpt_write_dirty << std::endl 1048 << "[045] RD BLOCKED BY HIT IN TRT = " << m_cpt_trt_rb << std::endl 1049 << "[046] TRANS BLOCKED BY FULL TRT = " << m_cpt_trt_full << std::endl 1050 << "[047] WRITE BROADCAST = " << m_cpt_write_broadcast << std::endl 1051 << "[048] WRITE MINVAL = " << m_cpt_write_minval << std::endl 1052 << "[049] CAS BROADCAST = " << m_cpt_cas_broadcast << std::endl 1053 << "[050] CAS MINVAL = " << m_cpt_cas_minval << std::endl 1054 << "[051] GETM BROADCAST = " << m_cpt_getm_broadcast << std::endl 1055 << "[052] GETM MINVAL = " << m_cpt_getm_minval << std::endl 1043 1044 << "[050] LOCAL GETM MISS = " << m_cpt_getm_miss_local << std::endl 1045 << "[051] REMOTE GETM MISS = " << m_cpt_getm_miss_remote << std::endl 1046 << "[052] LOCAL GETM HIT = " << m_cpt_getm_hit_local << std::endl 1047 << "[053] REMOTE GETM HIT = " << m_cpt_getm_hit_remote << std::endl 1048 << "[054] GETM COST (FLITS * DIST) = " << m_cpt_getm_cost << std::endl 1056 1049 << std::endl 1057 << "[053] READ LOCKED WAIT = " << m_cpt_read_locked_rb << std::endl 1058 << "[054] CAS LOCKED WAIT = " << m_cpt_cas_locked_rb << std::endl 1059 << "[055] WRITE LOCKED WAIT = " << m_cpt_write_locked_rb << std::endl 1060 << "[056] EVICTED SLOT = " << m_cpt_slot_inval << std::endl 1061 1050 << "[055] CLEANUP WITH DATA = " << m_cpt_cleanup_with_data << std::endl 1051 << std::endl 1052 << "[056] MULTI_ACK_MISS = " << m_cpt_multi_ack_miss << std::endl 1053 << "[057] MULTI_ACK_HIT = " << m_cpt_multi_ack_hit << std::endl 1054 << "[058] MULTI_ACK_DATA = " << m_cpt_multi_ack_hit_with_data << std::endl 1055 << std::endl 1056 << "[059] GETM MISS = " << m_cpt_getm_miss << std::endl 1057 << "[060] WRITE MINVAL = " << m_cpt_write_minval << std::endl 1058 << "[061] GETM BROADCAST = " << m_cpt_getm_broadcast << std::endl 1059 << "[062] GETM MINVAL = " << m_cpt_getm_minval << std::endl 1060 << std::endl 1061 << "[063] READ LOCKED WAIT = " << m_cpt_read_locked_rb << std::endl 1062 << "[064] CAS LOCKED WAIT = " << m_cpt_cas_locked_rb << std::endl 1063 << "[065] WRITE LOCKED WAIT = " << m_cpt_write_locked_rb << std::endl 1064 << "[066] EVICTED SLOT = " << m_cpt_slot_inval << std::endl 1062 1065 << std::endl; 1063 1066 } … … 1073 1076 << "[103] REMOTE READ RATE = " << (double) m_cpt_read_miss_remote / m_cpt_cycles << std::endl 1074 1077 << "[104] READ MISS RATE = " << (double) m_cpt_read_miss / (m_cpt_read_miss_local + m_cpt_read_miss_remote) << std::endl 1075 << "[10 0] GETM MISS TOTAL = " << m_cpt_getm_miss_local + m_cpt_getm_miss_remote << std::endl1076 << "[10 1] GETM MISS RATE = " << (double) (m_cpt_getm_miss_local + m_cpt_getm_miss_remote) / m_cpt_cycles << std::endl1077 << "[10 2] LOCAL GETM MISS RATE = " << (double) m_cpt_getm_miss_local / m_cpt_cycles << std::endl1078 << "[10 3] REMOTE GETM MISS RATE = " << (double) m_cpt_getm_miss_remote / m_cpt_cycles << std::endl1079 << "[10 0] GETM HIT TOTAL = " << m_cpt_getm_hit_local + m_cpt_getm_hit_remote << std::endl1080 << "[1 01] GETM HIT RATE = " << (double) (m_cpt_getm_hit_local + m_cpt_getm_hit_remote) / m_cpt_cycles << std::endl1081 << "[1 02] LOCAL GETM HIT RATE = " << (double) m_cpt_getm_hit_local / m_cpt_cycles << std::endl1082 << "[1 03] REMOTE GETM HIT RATE = " << (double) m_cpt_getm_hit_remote / m_cpt_cycles << std::endl1083 1084 << "[1 00] GETM TOTAL = " << m_cpt_getm_hit_local + m_cpt_getm_hit_remote + m_cpt_getm_miss_remote + m_cpt_getm_miss_local << std::endl1085 1086 << "[1 04] GETM MISS RATE = " << (double) m_cpt_read_miss / (m_cpt_getm_hit_local + m_cpt_getm_hit_remote + m_cpt_getm_miss_remote + m_cpt_getm_miss_local) << std::endl1078 << "[105] GETM MISS TOTAL = " << m_cpt_getm_miss_local + m_cpt_getm_miss_remote << std::endl 1079 << "[106] GETM MISS RATE = " << (double) (m_cpt_getm_miss_local + m_cpt_getm_miss_remote) / m_cpt_cycles << std::endl 1080 << "[107] LOCAL GETM MISS RATE = " << (double) m_cpt_getm_miss_local / m_cpt_cycles << std::endl 1081 << "[108] REMOTE GETM MISS RATE = " << (double) m_cpt_getm_miss_remote / m_cpt_cycles << std::endl 1082 << "[109] GETM HIT TOTAL = " << m_cpt_getm_hit_local + m_cpt_getm_hit_remote << std::endl 1083 << "[110] GETM HIT RATE = " << (double) (m_cpt_getm_hit_local + m_cpt_getm_hit_remote) / m_cpt_cycles << std::endl 1084 << "[111] LOCAL GETM HIT RATE = " << (double) m_cpt_getm_hit_local / m_cpt_cycles << std::endl 1085 << "[112] REMOTE GETM HIT RATE = " << (double) m_cpt_getm_hit_remote / m_cpt_cycles << std::endl 1086 1087 << "[113] GETM TOTAL = " << m_cpt_getm_hit_local + m_cpt_getm_hit_remote + m_cpt_getm_miss_remote + m_cpt_getm_miss_local << std::endl 1088 1089 << "[114] GETM MISS RATE = " << (double) m_cpt_read_miss / (m_cpt_getm_hit_local + m_cpt_getm_hit_remote + m_cpt_getm_miss_remote + m_cpt_getm_miss_local) << std::endl 1087 1090 1088 1091 << std::endl 1089 << "[1 05] WRITE TOTAL = " << m_cpt_write_local + m_cpt_write_remote << std::endl1090 << "[1 06] WRITE RATE = " << (double) (m_cpt_write_local + m_cpt_write_remote) / m_cpt_cycles << std::endl1091 << "[1 07] LOCAL WRITE RATE = " << (double) m_cpt_write_local / m_cpt_cycles << std::endl1092 << "[1 08] REMOTE WRITE RATE = " << (double) m_cpt_write_remote / m_cpt_cycles << std::endl1093 << "[1 09] WRITE MISS RATE = " << (double) m_cpt_write_miss / (m_cpt_write_local + m_cpt_write_remote) << std::endl1094 << "[1 10] WRITE BURST TOTAL = " << m_cpt_write_flits_local + m_cpt_write_flits_remote << std::endl1095 << "[1 11] WRITE BURST AVERAGE = " << (double) (m_cpt_write_flits_local + m_cpt_write_flits_remote) / (m_cpt_write_local + m_cpt_write_remote) << std::endl1096 << "[1 12] LOCAL WRITE BURST AV. = " << (double) m_cpt_write_flits_local / (m_cpt_write_local + m_cpt_write_remote) << std::endl1097 << "[1 13] REMOTE WRITE BURST AV = " << (double) m_cpt_write_flits_remote / (m_cpt_write_local + m_cpt_write_remote) << std::endl1092 << "[115] WRITE TOTAL = " << m_cpt_write_local + m_cpt_write_remote << std::endl 1093 << "[116] WRITE RATE = " << (double) (m_cpt_write_local + m_cpt_write_remote) / m_cpt_cycles << std::endl 1094 << "[117] LOCAL WRITE RATE = " << (double) m_cpt_write_local / m_cpt_cycles << std::endl 1095 << "[118] REMOTE WRITE RATE = " << (double) m_cpt_write_remote / m_cpt_cycles << std::endl 1096 << "[119] WRITE MISS RATE = " << (double) m_cpt_write_miss / (m_cpt_write_local + m_cpt_write_remote) << std::endl 1097 << "[120] WRITE BURST TOTAL = " << m_cpt_write_flits_local + m_cpt_write_flits_remote << std::endl 1098 << "[121] WRITE BURST AVERAGE = " << (double) (m_cpt_write_flits_local + m_cpt_write_flits_remote) / (m_cpt_write_local + m_cpt_write_remote) << std::endl 1099 << "[122] LOCAL WRITE BURST AV. = " << (double) m_cpt_write_flits_local / (m_cpt_write_local + m_cpt_write_remote) << std::endl 1100 << "[123] REMOTE WRITE BURST AV = " << (double) m_cpt_write_flits_remote / (m_cpt_write_local + m_cpt_write_remote) << std::endl 1098 1101 << std::endl 1099 << "[1 14] UPDATE RATE = " << (double) m_cpt_update / m_cpt_cycles << std::endl1100 << "[1 15] AV. UPDATE PER UP REQ = " << (double) (m_cpt_update_local + m_cpt_update_remote) / m_cpt_update << std::endl1101 << "[1 16] AV. LOC UPDT PER UP REQ = " << (double) m_cpt_update_local / m_cpt_update << std::endl1102 << "[1 17] AV. REMOTE UPDT PER UP REQ = " << (double) m_cpt_update_remote / m_cpt_update << std::endl1102 << "[124] UPDATE RATE = " << (double) m_cpt_update / m_cpt_cycles << std::endl 1103 << "[125] AV. UPDATE PER UP REQ = " << (double) (m_cpt_update_local + m_cpt_update_remote) / m_cpt_update << std::endl 1104 << "[126] AV. LOC UPDT PER UP REQ = " << (double) m_cpt_update_local / m_cpt_update << std::endl 1105 << "[127] AV. REMOTE UPDT PER UP REQ = " << (double) m_cpt_update_remote / m_cpt_update << std::endl 1103 1106 << std::endl 1104 << "[1 18] INVAL MULTICAST RATE = " << (double) m_cpt_minval / m_cpt_cycles << std::endl1105 << "[1 19] AVE. INVAL PER M_INV = " << (double) (m_cpt_minval_local + m_cpt_minval_remote) / m_cpt_minval << std::endl1106 << "[1 20] AV. LOC INV PER M_INV = " << (double) m_cpt_minval_local / m_cpt_minval << std::endl1107 << "[1 21] AV. REM INV PER M_INV = " << (double) m_cpt_minval_remote / m_cpt_minval << std::endl1107 << "[128] INVAL MULTICAST RATE = " << (double) m_cpt_minval / m_cpt_cycles << std::endl 1108 << "[129] AVE. INVAL PER M_INV = " << (double) (m_cpt_minval_local + m_cpt_minval_remote) / m_cpt_minval << std::endl 1109 << "[130] AV. LOC INV PER M_INV = " << (double) m_cpt_minval_local / m_cpt_minval << std::endl 1110 << "[131] AV. REM INV PER M_INV = " << (double) m_cpt_minval_remote / m_cpt_minval << std::endl 1108 1111 << std::endl 1109 << "[1 22] INVAL BROADCAST RATE = " << (double) m_cpt_binval / m_cpt_cycles << std::endl1110 << "[1 23] WRITE DIRTY RATE = " << (double) m_cpt_write_dirty / m_cpt_cycles << std::endl1112 << "[132] INVAL BROADCAST RATE = " << (double) m_cpt_binval / m_cpt_cycles << std::endl 1113 << "[133] WRITE DIRTY RATE = " << (double) m_cpt_write_dirty / m_cpt_cycles << std::endl 1111 1114 << std::endl 1112 << "[1 24] CLEANUP RATE = " << (double) (m_cpt_cleanup_local + m_cpt_cleanup_remote) / m_cpt_cycles << std::endl1113 << "[1 25] LOCAL CLEANUP RATE = " << (double) m_cpt_cleanup_local / m_cpt_cycles << std::endl1114 << "[1 26] REMOTE CLEANUP RATE = " << (double) m_cpt_cleanup_remote / m_cpt_cycles << std::endl1115 << "[1 27] LL RATE = " << (double) (m_cpt_ll_local + m_cpt_ll_remote) / m_cpt_cycles << std::endl1116 << "[1 28] LOCAL LL RATE = " << (double) m_cpt_ll_local / m_cpt_cycles << std::endl1117 << "[1 29] REMOTE LL RATE = " << (double) m_cpt_ll_remote / m_cpt_cycles << std::endl1118 << "[1 30] SC RATE = " << (double) (m_cpt_sc_local + m_cpt_sc_remote) / m_cpt_cycles << std::endl1119 << "[1 31] LOCAL SC RATE = " << (double) m_cpt_sc_local / m_cpt_cycles << std::endl1120 << "[1 32] REMOTE SC RATE = " << (double) m_cpt_sc_remote / m_cpt_cycles << std::endl1121 << "[1 33] CAS RATE = " << (double) (m_cpt_cas_local + m_cpt_cas_remote) / m_cpt_cycles << std::endl1122 << "[1 34] LOCAL CAS RATE = " << (double) m_cpt_cas_local / m_cpt_cycles << std::endl1123 << "[1 35] REMOTE CAS RATE = " << (double) m_cpt_cas_remote / m_cpt_cycles << std::endl1115 << "[134] CLEANUP RATE = " << (double) (m_cpt_cleanup_local + m_cpt_cleanup_remote) / m_cpt_cycles << std::endl 1116 << "[135] LOCAL CLEANUP RATE = " << (double) m_cpt_cleanup_local / m_cpt_cycles << std::endl 1117 << "[136] REMOTE CLEANUP RATE = " << (double) m_cpt_cleanup_remote / m_cpt_cycles << std::endl 1118 << "[137] LL RATE = " << (double) (m_cpt_ll_local + m_cpt_ll_remote) / m_cpt_cycles << std::endl 1119 << "[138] LOCAL LL RATE = " << (double) m_cpt_ll_local / m_cpt_cycles << std::endl 1120 << "[139] REMOTE LL RATE = " << (double) m_cpt_ll_remote / m_cpt_cycles << std::endl 1121 << "[140] SC RATE = " << (double) (m_cpt_sc_local + m_cpt_sc_remote) / m_cpt_cycles << std::endl 1122 << "[141] LOCAL SC RATE = " << (double) m_cpt_sc_local / m_cpt_cycles << std::endl 1123 << "[142] REMOTE SC RATE = " << (double) m_cpt_sc_remote / m_cpt_cycles << std::endl 1124 << "[143] CAS RATE = " << (double) (m_cpt_cas_local + m_cpt_cas_remote) / m_cpt_cycles << std::endl 1125 << "[144] LOCAL CAS RATE = " << (double) m_cpt_cas_local / m_cpt_cycles << std::endl 1126 << "[145] REMOTE CAS RATE = " << (double) m_cpt_cas_remote / m_cpt_cycles << std::endl 1124 1127 << "[124] MULTI ACK RATE = " << (double) (m_cpt_multi_ack_hit + m_cpt_multi_ack_miss) / m_cpt_cycles << std::endl 1125 << std::endl1126 1128 << std::endl; 1127 1129 } … … 1161 1163 delete [] m_debug_data; 1162 1164 1163 print_stats();1165 //print_stats(); 1164 1166 } 1165 1167 … … 1385 1387 m_cpt_trt_rb = 0 ; 1386 1388 m_cpt_trt_full = 0 ; 1389 m_cpt_put = 0 ; 1390 m_cpt_get = 0 ; 1387 1391 1388 1392 m_cpt_read_fsm_dir_lock = 0 ; … … 4804 4808 bool ivt_full = m_ivt.is_full(); 4805 4809 4806 4807 4810 //r_write_ivt_index = index; 4808 4811 … … 4852 4855 for(size_t word=0 ; word<m_words ; word++) 4853 4856 { 4854 r_write_to_cleanup_be[word] = r_write_be[word]; 4855 r_write_to_cleanup_data[word] = r_write_data[word]; 4856 4857 4857 4858 if(r_write_state.read() == ENTRY_SHARED) 4858 4859 { 4859 4860 m_cache_data.write(way, set, word, r_write_data[word].read(), r_write_be[word].read()); 4861 } 4862 else 4863 { 4864 r_write_to_cleanup_be[word] = r_write_be[word]; 4865 r_write_to_cleanup_data[word] = r_write_data[word]; 4860 4866 } 4861 4867 } … … 6328 6334 << " CLEANUP_DIR_LOCK> Test directory status: " 6329 6335 << std::hex 6330 << " line= " << cleanup_address6336 << " addr = " << cleanup_address 6331 6337 << " / hit = " << entry.state 6332 6338 << " / way = " << way … … 6538 6544 } 6539 6545 } 6540 6541 size_t set = m_y[(addr_t)(cleanup_address)]; 6542 m_cache_data.read_line(way, set, r_cleanup_data); 6546 else //read the cache data for a request getM (the special case) 6547 { 6548 m_cache_data.read_line(way, set, r_cleanup_data); 6549 } 6543 6550 } 6544 6551 else … … 7495 7502 addr_t nline = m_nline[(addr_t)(m_cmd_cas_addr_fifo.read())]; 7496 7503 7497 wok = m_ivt.set(false, 7498 r_cas_is_cnt.read(), 7499 true, 7500 false, 7504 wok = m_ivt.set(false, // it's an invalid transaction 7505 r_cas_is_cnt.read(), // it's not a broadcast 7506 true, // response required 7507 false, // no acknowledge required 7501 7508 srcid, 7502 7509 trdid, … … 7530 7537 // So, the line is still valid in dir. 7531 7538 m_cache_data.write(way, set, word, r_cas_wdata.read()); 7539 7532 7540 if(r_cas_cpt.read() == 4) 7533 7541 m_cache_data.write(way, set, word+1, m_cmd_cas_wdata_fifo.read()); … … 8263 8271 } 8264 8272 // </Activity Counters> 8273 m_cpt_minval++; 8274 // </Activity Counters> 8265 8275 r_cc_send_fsm = CC_SEND_CONFIG_INVAL_NLINE; 8266 8276 break; 8267 8277 } 8268 8278 if(r_config_to_cc_send_multi_req.read()) r_config_to_cc_send_multi_req = false; 8269 // <Activity Counters>8270 m_cpt_minval++;8271 // </Activity Counters>8272 8279 r_cc_send_fsm = CC_SEND_CONFIG_IDLE; 8273 8280 break; … … 8330 8337 } 8331 8338 // </Activity Counters> 8339 m_cpt_minval++; 8340 // </Activity Counters> 8332 8341 r_cc_send_fsm = CC_SEND_XRAM_RSP_INVAL_NLINE; 8333 8342 break; 8334 8343 } 8335 8344 if(r_xram_rsp_to_cc_send_multi_req.read()) r_xram_rsp_to_cc_send_multi_req = false; 8336 // <Activity Counters> 8337 m_cpt_minval++; 8338 // </Activity Counters> 8345 8339 8346 r_cc_send_fsm = CC_SEND_XRAM_RSP_IDLE; 8340 8347 break; … … 8424 8431 } 8425 8432 // </Activity Counters> 8433 if(r_read_to_cc_send_type.read()) 8434 m_cpt_minval++; 8435 // </Activity Counters> 8426 8436 r_cc_send_fsm = CC_SEND_READ_MULTI_NLINE; 8427 8437 break; … … 8432 8442 r_read_to_cc_send_multi_req = false; 8433 8443 } 8434 // <Activity Counters> 8435 if(r_read_to_cc_send_type.read()) 8436 m_cpt_minval++; 8437 // </Activity Counters> 8444 8438 8445 r_cc_send_fsm = CC_SEND_READ_IDLE; 8439 8446 break; … … 8503 8510 } 8504 8511 // </Activity Counters> 8512 m_cpt_minval++; 8513 // </Activity Counters> 8505 8514 r_cc_send_fsm = CC_SEND_WRITE_INVAL_NLINE; 8506 8515 break; … … 8511 8520 r_write_to_cc_send_multi_req = false; 8512 8521 } 8513 // <Activity Counters> 8514 m_cpt_minval++; 8515 // </Activity Counters> 8522 8516 8523 r_cc_send_fsm = CC_SEND_WRITE_IDLE; 8517 8524 break; … … 8547 8554 // </Activity Counters> 8548 8555 8549 // <Activity Counters> 8550 m_cpt_minval++; 8551 // </Activity Counters> r_cas_to_cc_send_brdcast_req = false; 8556 r_cas_to_cc_send_brdcast_req = false; 8552 8557 r_cc_send_fsm = CC_SEND_CAS_IDLE; 8553 8558 … … 8576 8581 m_cpt_minval_cost += req_distance(m_cas_to_cc_send_srcid_fifo.read()); 8577 8582 } 8583 // <Activity Counters> 8584 m_cpt_minval++; 8578 8585 // </Activity Counters> 8579 8586 r_cc_send_fsm = CC_SEND_CAS_INVAL_NLINE; … … 8586 8593 r_cas_to_cc_send_multi_req = false; 8587 8594 } 8588 // <Activity Counters> 8589 m_cpt_minval++; 8590 // </Activity Counters> 8595 8591 8596 r_cc_send_fsm = CC_SEND_CAS_IDLE; 8592 8597 break;
Note: See TracChangeset
for help on using the changeset viewer.