首先分析事件驅動的步驟:
when的值,是在呼叫schedule時,可以將下一次的時間通過呼叫clockedge(cycles(n))獲取的。
總體說來,就是不同的器件在process中:
1)完成自身的功能;
2)將下一次何時觸發,插入queue中
要注意的是,插入queue中的是每個物件的event指標,不需要複製,也不是完整的物件,只是指標。
如果a器件在100 cycle時,執行process,完成自身功能後,將event->when設定為107,插入queue中;表示下一次在107時刻觸發;然後,b器件在100 cycle時,執行process,完成自身功能後,將event->when設定為120,插入queue中;表示下一次在120時刻觸發;然後c器件在103 cycle時,執行process,完成自身功能後,將event->when設定為109,插入queue中;表示下一次在109時刻觸發;
那麼在gem5中,執行的過程將是
a排程,更新系統時間為100,執行完畢後,插入事件a 107;
b排程,更新系統時間(或不更新),執行完畢後,插入事件b 120;
查詢queue,發現下一次是c觸發,將系統時間更新為103,執行完畢後,插入事件c109;
查詢queue,發現下一次是a觸發,將系統時間更新為107,執行完畢後,插入下一次a事件;
查詢queue,發現下一次是c觸發,將系統時間更新為109,執行完畢後,插入下一次c事件;
查詢queue,發現下一次是b觸發,將系統時間更新為120,執行完畢後,插入下一次b事件;
這就是基於事件驅動的原理。
gem5 一)配置Gem5執行環境
系統環境 ubuntu 18.04 1.安裝相關的依賴庫 通過命令sudo apt install 安裝下列的依賴庫 git,build essential,scons,python dev,swig,libprotobuf dev,python protobuf,protobuf compiler...
如何除錯gem5
printf 是很好的工具,同時gem5在自己 裡面就有很多已經做好的輸出資訊,可以通過flag制定來選擇。輸出flags fetch,decode,ethernet,exec,tlb,dma,bus,cache,loader,o3cpuall,要想知道所有的flags,執行的時候加上 debug ...
小白的Gem5安裝
查閱了很多部落格教程,我的安裝過程主要分為三步 安裝依賴軟體 編譯執行 為簡化,直接可以參考我瀏覽的部落格 傳送門 需要安裝g python scons 用於編譯 swig,zlib m4 protobuf 等依賴軟體。在安裝時出現了部分包無法識別的問題,我更新了中科大源並且 第二天 重新嘗試,沒有...