Cache模擬器(CacheSim)



最近寫了一個Cache的模擬器,由於平時空餘時間比較分散,前前後後用了一週多的時間,基本實現的Cache的模擬功能(通過讀取trace文件得到相應的命中率),能夠實現直接映射、全相聯、組相聯三種映射方式,其中全相聯和組相聯能夠實現隨機、LRU兩種替換策略。目前三種映射方式均採用回寫法,但已經定義了其它寫策略的接口,可以很容易擴充。程序具有比較強的魯棒性,能夠接受一定範圍的錯誤輸入,並能夠比較智能的提示用戶輸入。

我儘量縮減了不必要的代碼,控制在1000行以內。但日後加上部分功能後,可能會遠超這個數目,希望大家幫我優化一下代碼,以提高程序的空間效率。時間效率也不是很高,至少現在來說,讀取30萬行的內存地址數據,如果採取全相聯的話,需要耗費的時間還是很長的。我會盡量優化。

程序使用C/C++混合編程,但不是採用面向對象的方法,雖然在編寫過程中想改成以類的方式實現,但是整體框架已經完成的差不多了,所以就沒有改。程序中使用了一些C++11標準中的類,比如bitset<T>,所以必須在支持C++11的編譯器上進行編譯,但現在主流的編譯器比如gccVS均已支持,所以不用太擔心。

我已經上傳了代碼和可執行程序的最新版本,下載地址是:

http://download.csdn.net/detail/jiangxinnju/7404137

程序能夠在Windows平臺下直接運行,如果你想在Linux平臺運行,請重新編譯,並調整base.h中相應的編譯選項,其它文件不用修改,因爲我已經使用了條件編譯適應不同的編譯環境。如果你只是想查看最後的數據結果,不關心每條數據的具體命中情況請不要在編譯的時候註釋掉

#define NDEBUG // For NDEBUG pattern

否則,程序需要很長的運行時間。另外如果你希望看到本程序的歷史版本,或者希望在我的程序中添加新的功能,可以直接fork我的github,地址爲:

https://github.com/jiangxincode/CacheSim

關於本程序的版權聲明,可以參考README.txt文件,在遵守相關條目的基礎上,你可以任意拷貝、修改我的程序。

如果你對於程序中的內容有所疑問,比如無法在你的機器上正常編譯或運行,可以直接聯繫我,我的Email地址爲:

[email protected]

歡迎各位朋友提出修改意見。


發佈了31 篇原創文章 · 獲贊 23 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章