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 + -
显示快捷键?