參考:
https://www.mail-archive.com/[email protected]/msg08744.html (解決問題一)
http://thread.gmane.org/gmane.comp.emulators.m5.users/17022/focus=17029 (解決問題二)
問題來源:
gem5中初次使用ruby memory system時出現的問題。
解決方法:
問題一:
當執行如下指令時:
./build/ALPHA_MOESI_CMP_directory/gem5.opt ./configs/example/ruby_fs.py -n 4
--script=./dist-parsec/genrcS/blackscholes_4c_simmedium_ckpts.rcS
出現錯誤:
panic: Runtime Error at MOESI_CMP_directory-L1cache.sm:243, Ruby Time:
6092631646, Invalid RubyRequestType.
解決方法:
初次建立checkpoint時,需要使用MOESI_hammer生成checkpoint之後才能,才能在其它協定下運作。(gem5裡面預設的規定吧)
(原文: Ruby checkpointing is protocol independent.
You must take the checkpoint using MOESI_hammer,
then you can restore it with any other protocol.
)
問題如下:
panic: Possible Deadlock detected. Aborting!
version: 18 request.paddr: 0x[0x330000, line 0x330000]
m_writeRequestTable: 1 current time: 2618875986000 issue_time: 2618625986000
difference: 250000000
<at> cycle 2618875986000
[wakeup:build/ALPHA/mem/ruby/system/Sequencer.cc, line 122]
Memory Usage: 1739068 KBytes
Program aborted at cycle 2618875986000
build/ALPHA/gem5.opt configs/example/ruby_fs.py --cpu-clock=3GHz --kernel=/dist/m5/system/binaries/vmlinux_2.6.27-gcc_4.3.4 -n 4 -r 1 --script=benchmark/blackscholes_16c_simsmall_ckpts.rcS --cpu-type=timing --l1d_size=32kB --l1i_size=32kB --l2_size=4MB --num-l2caches=8 --topology=Crossbar -I 2000000000 --garnet-network=flexible --restore-with-cpu=timing
總結:
在使用gem5的ruby存儲系統跑parsec測試集時,應遵循如下步驟:
1. 使用MOESI_hammer協定編譯gem5.opt
2. 運作gem5.opt ruby_fs.py程式,直到生成checkpoint即可終止其運作
3. 從checkpoint開始運作測試集,即問題二的指令行,直至運作結束