dram.cc
来自「M5,一个功能强大的多处理器系统模拟器.很多针对处理器架构,性能的研究都使用它作」· CC 代码 · 共 1,471 行 · 第 1/5 页
CC
1,471 行
else/*in between case*/ { lat = DR_T_RP+DR_T_RCD+DR_T_CAC+DR_T_PACKET-corrected_overlap; in_between_case++; partial_overlapping++; } } else/*worst case*/ { lat = DR_T_RP+DR_T_RCD+DR_T_CAC+DR_T_PACKET; in_between_case++; } } else/*current_row == DR_NUM_ROWS:precharged or inactive*/ { if(precharge == 0)/*no adjacent bank is active*/ { if (corrected_overlap > 0 )/*overlapping*/ { if(corrected_overlap >= (DR_T_RCD+DR_T_CAC+DR_T_PACKET))/*best case*/ { lat = DR_BEST_T_READ_READ_OBANK; best_case++; full_overlapping++; } else/*in between case*/ { lat = DR_T_RCD+DR_T_CAC+DR_T_PACKET-corrected_overlap; in_between_case++; partial_overlapping++; } } else/*worst case*/ { lat = DR_T_RCD+DR_T_CAC+DR_T_PACKET; in_between_case++; } } else/*one ore two adjacent banks are active*/ { if (precharge == 1) { if (corrected_overlap > 0 )/*overlapping*/ { if(corrected_overlap >= (DR_T_RP+DR_T_RCD+DR_T_CAC+DR_T_PACKET))/*best case*/ { lat = DR_BEST_T_READ_READ_OBANK; best_case++; full_overlapping++; } else/*in between case*/ { lat = (DR_T_RP+DR_T_RCD+DR_T_CAC+DR_T_PACKET)-corrected_overlap; in_between_case++; partial_overlapping++; } } else/*worst case*/ { lat = (DR_T_RP+DR_T_RCD+DR_T_CAC+DR_T_PACKET); in_between_case++; } } else /*precharge ==2: two rows must be precharged*/ { if (adjacent == 1)/*these banks are adjacent*/ { if (corrected_overlap > 0 )/*overlapping*/ { if(corrected_overlap >= DR_T_PP+2*DR_T_PACKET-DR_T_RDP+DR_T_CAC)/*best case*/ { lat = DR_T_RDP+DR_T_RP+DR_T_RCD-DR_T_PACKET; in_between_case++; full_overlapping++; } else/*in between case*/ { lat = DR_T_READ_READ_OBANK-corrected_overlap; in_between_case++; partial_overlapping++; } } else/*worst case*/ { lat = DR_T_READ_READ_OBANK; worst_case++; } } else/*adjacent == 0: two not adjacent banks need to be precharged*/ { if (corrected_overlap > 0 )/*overlapping*/ { if(corrected_overlap >= DR_T_READ_READ_OBANK)/*best case*/ { lat = DR_BEST_T_READ_READ_OBANK; best_case++; full_overlapping++; } else/*in between case*/ { lat = DR_T_READ_READ_OBANK-corrected_overlap; in_between_case++; partial_overlapping++; } } else/*worst case*/ { lat = DR_T_READ_READ_OBANK; worst_case++; } } } } } other_bank_read_access_miss[0]++; obr_after_read_miss++; } } else/*write*/ { if (current_row == active_row[current_bank])/*row is still active*/ { if (corrected_overlap > 0 )/*overlapping*/ { if(corrected_overlap >= (DR_T_CWD+DR_T_PACKET))/*best case*/ { lat = DR_BEST_T_WRITE_WRITE_OBANK; best_case++; full_overlapping++; } else/*in between case*/ { lat = DR_T_CWD+DR_T_PACKET-corrected_overlap; in_between_case++; partial_overlapping++; } } else/*worst case*/ { lat = DR_T_CWD+DR_T_PACKET; in_between_case++; } other_bank_write_access_hit++; obw_after_write_hit++; } else/*row is not active or bank is precharged/not active*/ { if (active_row[current_bank] != DR_NUM_ROWS)/*row is not active,but bank is active*/ { if (corrected_overlap > 0 )/*overlapping*/ { if(corrected_overlap >= (DR_T_RP+DR_T_RCD+DR_T_CWD+DR_T_PACKET))/*best case*/ { lat = DR_BEST_T_WRITE_WRITE_OBANK; best_case++; full_overlapping++; } else/*in between case*/ { lat = DR_T_RP+DR_T_RCD+DR_T_CWD+DR_T_PACKET-corrected_overlap; in_between_case++; partial_overlapping++; } } else/*worst case*/ { lat = DR_T_RP+DR_T_RCD+DR_T_CWD+DR_T_PACKET; in_between_case++; } } else/*current_row == DR_NUM_ROWS:precharged or inactive*/ { if(precharge == 0)/*no adjacent bank is active*/ { if (corrected_overlap > 0 )/*overlapping*/ { if(corrected_overlap >= (DR_T_RCD+DR_T_CWD+DR_T_PACKET))/*best case*/ { lat = DR_BEST_T_WRITE_WRITE_OBANK; best_case++; full_overlapping++; } else/*in between case*/ { lat = DR_T_RCD+DR_T_CWD+DR_T_PACKET-corrected_overlap; in_between_case++; partial_overlapping++; } } else/*worst case*/ { lat = DR_T_RCD+DR_T_CWD+DR_T_PACKET; in_between_case++; } } else/*one ore two adjacent banks are active*/ { if (precharge == 1)/*last_bank is no adjacent*/ { if (corrected_overlap > 0 )/*overlapping*/ { if(corrected_overlap >= (DR_T_RP+DR_T_RCD+DR_T_CWD+DR_T_PACKET))/*best case*/ { lat = DR_BEST_T_WRITE_WRITE_OBANK; best_case++; full_overlapping++; } else/*in between case*/ { lat = (DR_T_RP+DR_T_RCD+DR_T_CWD+DR_T_PACKET)-corrected_overlap; in_between_case++; partial_overlapping++; } } else/*worst case*/ { lat = (DR_T_RP+DR_T_RCD+DR_T_CWD+DR_T_PACKET); in_between_case++; } } else /*precharge ==2: two rows have to be precharged*/ { if (adjacent == 1)/*these banks are adjacent*/ { if (corrected_overlap > 0 )/*overlapping*/ { if(corrected_overlap >= DR_T_OWR+DR_T_PP)/*best case*/ { lat = DR_T_WRITE_WRITE_OBANK-DR_T_OWR-DR_T_PP; in_between_case++; full_overlapping++; } else/*in between case*/ { lat = DR_T_WRITE_WRITE_OBANK-corrected_overlap; in_between_case++; partial_overlapping++; } } else/*worst case*/ { lat = DR_T_WRITE_WRITE_OBANK; worst_case++; } } else/*adjacent == 0: two not adjacent banks need to be precharged*/ { if (corrected_overlap > 0 )/*overlapping*/ { if(corrected_overlap >= DR_T_WRITE_WRITE_OBANK)/*best case*/ { lat = DR_BEST_T_WRITE_WRITE_OBANK; best_case++; full_overlapping++; } else/*in between case*/ { lat = DR_T_WRITE_WRITE_OBANK-corrected_overlap; in_between_case++; partial_overlapping++; } } else/*worst case*/ { lat = DR_T_WRITE_WRITE_OBANK; worst_case++; } } } } } other_bank_write_access_miss[0]++; obw_after_write_miss++; } } } } else /*lastCmdIsRead != cmdIsRead*/ { if (current_bank == last_bank)/*same bank*/ { if (current_row == last_row)/*same row*/ { if (cmdIsRead) { if (corrected_overlap > 0)/*overlapping*/ { /*best case*/ if (corrected_overlap >= DR_T_OWR) { lat=DR_BEST_T_READ_WRI
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?