gem5-bench-cache 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/usr/bin/env bash
  2. set -eu
  3. root_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
  4. generate_checkpoints=true
  5. while getopts "C" OPT; do
  6. case "$OPT" in
  7. C)
  8. generate_checkpoints=false
  9. ;;
  10. ?)
  11. exit 2;
  12. ;;
  13. esac
  14. done
  15. shift "$(($OPTIND - 1))"
  16. common_opts="--emulator gem5 $@"
  17. # Vars
  18. cmd="./run ${common_opts}"
  19. cache_small='--caches --l2cache --l1d_size=1024 --l1i_size=1024 --l2_size=1024 --l3_size=1024 '
  20. cache_large='--caches --l2cache --l1d_size=1024kB --l1i_size=1024kB --l2_size=1024kB --l3_size=1024kB'
  21. results_file="$(${root_dir}/getvar ${common_opts} run_dir)/bench-cache.txt"
  22. bench() (
  23. "${root_dir}/bench-cmd" "$1"
  24. {
  25. printf 'cycles '
  26. ./gem5-stat ${common_opts}
  27. printf 'instructions '
  28. ./gem5-stat ${common_opts} sim_insts
  29. # RESTORE_INVESTIGATION
  30. #cycles_switch="$(./gem5-stat ${common_opts} system.switch_cpus.numCycles)"
  31. #if [ -n "$cycles_switch" ]; then
  32. # printf "cycles_switch ${cycles_switch}\n"
  33. #fi
  34. printf "\n"
  35. } >> "$results_file"
  36. )
  37. bench-all() (
  38. bench "${cmd} --gem5-readfile \"$1\" --gem5-restore 1 -- ${cache_small} --cpu-type=HPI --restore-with-cpu=HPI"
  39. bench "${cmd} --gem5-readfile \"$1\" --gem5-restore 1 -- ${cache_large} --cpu-type=HPI --restore-with-cpu=HPI"
  40. # RESTORE_INVESTIGATION
  41. # These were mostly to investigate what happens on restore:
  42. # https://stackoverflow.com/questions/49011096/how-to-switch-cpu-models-in-gem5-after-restoring-a-checkpoint-and-then-observe-t
  43. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 1"
  44. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 1 -- ${cache_small}"
  45. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 1 -- ${cache_large}"
  46. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 2 -- ${cache_small}"
  47. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 3 -- ${cache_large}"
  48. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 4 -- ${cache_small} --cpu-type=HPI"
  49. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 5 -- ${cache_large} --cpu-type=HPI"
  50. ## Restore from At-- omicSimpleCPU to HPI.
  51. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 2 -- ${cache_small} --cpu-type=HPI --restore-with-cpu=HPI"
  52. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 3 -- ${cache_large} --cpu-type=HPI --restore-with-cpu=HPI"
  53. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 2 -- ${cache_small} --restore-with-cpu=HPI"
  54. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 3 -- ${cache_large} --restore-with-cpu=HPI"
  55. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 2 -- ${cache_small} --cpu-type=HPI"
  56. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 3 -- ${cache_large} --cpu-type=HPI"
  57. ## Restore HPI with different cache sizes and see if it is used.
  58. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 4 -- ${cache_large} --cpu-type=HPI"
  59. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 5 -- ${cache_small} --cpu-type=HPI"
  60. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 2 -- ${cache_large} --cpu-type=HPI"
  61. #bench "${cmd} --gem5-readfile '$1' --gem5-restore 3 -- ${cache_small} --cpu-type=HPI"
  62. )
  63. if "$generate_checkpoints"; then
  64. # Create the checkpoints after the kernel boot.
  65. cpt_cmd="--eval './gem5.sh'"
  66. # RESTORE_INVESTIGATION
  67. ## 5
  68. #./eeval "$cmd $cpt_cmd -- $cache_large --cpu-type=HPI"
  69. ## 4
  70. #./eeval "$cmd $cpt_cmd -- $cache_small --cpu-type=HPI"
  71. ## 3
  72. #./eeval "$cmd $cpt_cmd -- $cache_large"
  73. ## 2
  74. #./eeval "$cmd $cpt_cmd -- $cache_small"
  75. # 1
  76. ./eeval "$cmd $cpt_cmd"
  77. fi
  78. # Restore and run benchmarks.
  79. rm -f "$results_file"
  80. for n in 1000 10000 100000; do
  81. bench-all "dhrystone ${n}"
  82. done