亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Gem5 模擬器的緩存存儲體系實驗方法

        2020-10-09 08:30:24沈凡凡何炎祥
        實驗技術與管理 2020年1期
        關鍵詞:實驗方法

        沈凡凡,徐 超,張 軍,何炎祥

        (1. 南京審計大學 信息工程學院,江蘇 南京 211815;2. 東華理工大學 軟件學院,江西 南昌 330013;3. 武漢大學 計算機學院,湖北 武漢 430072)

        在計算機體系結構課程實驗教學中,緩存體系結構設計采用計算機硬件實驗平臺、實驗箱、開發(fā)板,通過簡單的模擬實驗完成。然而,因為在硬件平臺無法修改已有硬件體系結構,所以要從深層次理解緩存存儲體系結構及其實現(xiàn)原理,僅利用硬件平臺進行實驗是遠遠不夠的,需要借助模擬仿真器進行實驗。

        Gem5 是一款優(yōu)秀的計算機系統(tǒng)結構模擬器。為了方便學生快速掌握該模擬器的使用方法,本文在分析Gem5 模擬器緩存存儲體系結構和原理的基礎上,提出多組利用Gem5 模擬器構建緩存存儲體系結構的實驗方法[1-2]。

        1 Gem5 模擬器簡介

        Gem5 模擬器是一款高度可配置、集成多種指令集和多種CPU 模型的體系結構模擬器[3],它是集M5模擬器[4]和 GEMS 模擬器[5]中最優(yōu)秀的部分而形成的。M5 模擬器是美國密西根大學開發(fā)的模擬架構,主要用于多種指令集和多種CPU 模型的模擬;GEMS模擬器由美國威斯康星大學開發(fā)的,能夠靈活、詳細地模擬存儲器的層次結構,包括緩存一致性協(xié)議和片上網(wǎng)絡等。

        Gem5 目前支持多種指令集架構,并能在Alpha、ARM、SPARC 和X86 上進行全系統(tǒng)模擬。Gem5 可以加載操作系統(tǒng),具備模擬亂序執(zhí)行、分支預測、多核多線程、存儲體系結構和片上網(wǎng)絡等多種微體系結構[6-8],支持 classic 和 Ruby 存儲模型,支持 Atomic Simple、Timing Simple、InOrder 和 O3 CPU 模型,可以在全系統(tǒng)模式(full system,F(xiàn)S)和系統(tǒng)調用模式(syscall emulation,SE)下執(zhí)行,如圖1 所示。

        圖1 CPU 模型和存儲模型

        Gem5 的源代碼遵循BSD 開源協(xié)議,用戶可以修改和重新發(fā)布代碼。Gem5 擁有友好的使用文檔和社區(qū)支持,非常有利于高校學生學習和使用[9]。

        2 Gem5 模擬緩存存儲系統(tǒng)原理分析

        2.1 Gem5 模擬器和源代碼結構

        圖2 為Gem5 模擬器源代碼結構。build_opts 定義了 ARM、X86 和 RISCV 等體系結構的默認設置。configs 包含一系類模擬器配置腳本文件,主要用Python 編寫,是修改模擬器配置文件參數(shù)的關鍵部分,會經常用到。ext 依賴于Gem5 但不是Gem5 的一部分,一般很少用到。src 是Gem5 源代碼的關鍵部分,包含計算機體系結構各部分的詳細代碼,其中$GEM5_DIR/src/mem/cache 是本文緩存存儲體系實驗所必須掌握的部分,也是需要重點關注的部分。system 描述模擬系統(tǒng)的固件和引導信息。tests 包含回歸測試程序。util 包含常用腳本和一些輔助程序[7,10]。

        圖2 Gem5 模擬器源代碼結構

        Gem5 編譯安裝成功后,會生成 build 和 m5out文件夾。模擬器運行的測試結果和配置信息將記錄在m5out 文件夾中。

        2.2 Gem5 初始化函數(shù)調用序列

        要使用Gem5 模擬器,首先必須理解Gem5 的工作原理和執(zhí)行流程,其次是根據(jù)需要修改對應的模塊。Gem5 初始化函數(shù)調用過程[11]如圖 3 所示。當在模擬器中運行 hello 程序($GEM5_DIR/build/ARM/gem5.opt configs/example/se.py -c tests/test-progs/hello/bin/arm/linux/hello)時,Gem5 模擬器執(zhí)行的入口函數(shù)在$GEM5_DIR/src/sim/main.cc 文件中;然后依次調用m5Main 函數(shù)進行初始化,調用PyRun_String 函數(shù)傳入SE 模式和二進制文件;在SE 模式下運行二進制文件,其中涉及 System 函數(shù)和 Simulation.run 函數(shù):System 函數(shù)初始化硬件配置信息,Simulation.run 啟動模擬過程。最后初始化C++構造函數(shù)。

        圖3 Gem5 初始化函數(shù)調用過程

        若要深入學習和修改某個模塊時,如CPU 或存儲模塊,需要閱讀該模塊代碼,理解其執(zhí)行和訪問流程,根據(jù)需要修改相關代碼完成模擬實驗。

        2.3 緩存存儲體系源碼分析

        為探討緩存存儲系統(tǒng)的實驗方法,需要重點關注Gem5 模擬器中的$GEM5_DIR/src/mem/cache 文件夾中的文件,包括 tags、replacement_policies、prefetch等描述信息。tags 中描述了組相連的信息;replacement_policies 中描述了緩存替換策略,包括LRU、FIFO 和BIP 等算法;prefetch 描述了緩存數(shù)據(jù)預期的方法。

        在緩存模塊中,首先分析cache_blk.hh 文件,理解緩存的組織結構;然后分析base.cc 文件,理解緩存的訪問控制流程;最后分析lru_rp.cc 文件,理解緩存的替換策略的實現(xiàn)方式。在實驗過程中,可以根據(jù)需要修改緩存體系結構以及緩存訪問控制方法。

        3 基于 Gem5 模擬器的緩存存儲體系實驗方案

        3.1 CPU 參數(shù)配置

        在Gem5 中,通過參數(shù)命令可以指定CPU 的配置,例如配置 2 核 1 GHz、4 核 2 GHz 的 CPU,涉及-n 和--cpu-clock 選項。

        (1)配置 2 核 CPU:$GEM5_DIR/build/ARM/gem5.opt$GEM5_DIR/configs/example/se.py -n 2 --cpu-clock=1 GHz

        (2)配置 4 核 CPU:$GEM5_DIR/build/ARM/gem5.opt$GEM5_DIR/configs/example/se.py -n 4 --cpu-clock=2 GHz

        3.2 緩存配置

        在Gem5 中,有2 種方法可以配置緩存:一是在配置文件中直接修改對應的參數(shù)值$GEM5_DIR/configs/common/Caches.py,這種方法比較直觀;二是通過參數(shù)命令指定,比如配置二級緩存的容量和組相聯(lián)度,可通過--l2_size 和--l2_assoc 選項指定,具體如下:

        (1)128 KB、8 路組相連。

        $GEM5_DIR/build/ARM/gem5.opt$GEM5_DIR/co nfigs/example/se.py--caches --l1d_size=32kB --l1d_assoc=2 --l1i_size=32kB --l1i_assoc=2--l2cache --l2_size=128kB --l2_assoc=8

        (2)256 KB、16 路組相連。

        $GEM5_DIR/build/ARM/gem5.opt$GEM5_DIR/co nfigs/example/se.py--caches --l1d_size=32kB --l1d_assoc=2 --l1i_size=32kB --l1i_assoc=2 --l2cache --l2_size=256kB --l2_assoc=16

        3.3 基準測試程序配置

        在Gem5 中,可以配置不同的基準測試程序,用于評價實驗的效果。例如采用PARSEC 測試集[12]中的streamcluster,可以采用如下腳本命令實現(xiàn),關鍵選項為--script:

        $GEM5_DIR/build/ARM/gem5.opt

        $GEM5_DIR/configs/example/fs.py

        --kernel=$BINARY_DIR/vmlinux.vexpress_gem5_v1_64--script= $GEM5_DIR/streamcluster_16c_simsmall_ckpts.rcS

        3.4 緩存源代碼修改示例

        以獲取緩存讀操作的訪問信息為例,可通過如下步驟實現(xiàn)。

        步驟一: 在文件$GEM5_DIR/src/mem/cache/SConscript 中添加 DebugFlag('myflag');

        步驟二: 在文件$GEM5_DIR/src/mem/cache/base.cc 中添加 #include debug/myflag.hh,然后在access 函數(shù)中添加一下語句:

        步驟三:在 Gem5 運行命令中添加調試選項—debug-flag=myflag,即可獲取緩存讀操作的訪問信息。

        4 實驗性能測試

        Gem5 模擬器的緩存存儲體系實驗性能測試參數(shù)配置如下:

        (1)處理器。配置為 2 核 CPU,ARM 架構,主頻800 MHz,每個CPU 包含,1 個一級私有緩存和1個共享二級緩存。

        (2)一級私有緩存。容量32 KB,4 路組相連,訪問時間為1 個周期,LRU 緩存替換算法。

        (3)二級共享緩存。容量為512 KB,8 路組相連,訪問時間為8 個周期,LRU 緩存替換算法。

        (4)主存。主存大小為256 MB,訪問時間為65個周期。

        使用PARSEC 測試集[12]對實驗性能進行了測試。使用simsmall 作為輸入集。

        在Gem5 目錄下執(zhí)行如下腳本命令:

        在$GEM5_DIR/m5out/stats.txt 文件中記錄著測試程序運行的時間,其結果如表1 所示。

        表1 測試程序執(zhí)行時間

        從以上測試結果可以看出:每個測試程序所需的執(zhí)行時間不同,x264 執(zhí)行的時間最長,需要4.45 s;blackscholes 執(zhí)行的時間最短,只需要0.37 s。每當修改緩存存儲體系結構時,系統(tǒng)的性能也將隨之改變。因此在實驗的過程中要合理地配置參數(shù)和修改緩存存儲體系結構。

        5 結語

        本文提出的基于Gem5 模擬器的緩存存儲體系實驗方法,為計算機存儲系統(tǒng)的學習提供了一種低成本、高效率的實驗操作方案。學生可以在學校的實驗室中安裝 Gem5,也可以離開實驗室在自己的臺式機或筆記本上安裝 Gem5,從而降低了學習門檻,提高了學生實踐的靈活性,為計算機存儲體系結構的理論和實驗教學提供了新途徑。

        猜你喜歡
        實驗方法
        記一次有趣的實驗
        微型實驗里看“燃燒”
        做個怪怪長實驗
        學習方法
        可能是方法不對
        NO與NO2相互轉化實驗的改進
        實踐十號上的19項實驗
        太空探索(2016年5期)2016-07-12 15:17:55
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        国产精品国产传播国产三级| 国产一级一厂片内射视频播放| 亚洲伊人久久大香线蕉影院| 精品国产91久久综合| 91久久精品国产性色tv| 成人av一区二区亚洲精| 国产饥渴的富婆一凶二区| 后入内射国产一区二区| 国产99久久久国产精品免费看| av无码免费永久在线观看| 亚洲天堂第一区| 人妻中文字幕不卡精品| 国产91在线精品观看| 永久免费视频网站在线| 无码小电影在线观看网站免费 | 色噜噜狠狠一区二区三区果冻| 人妻人人澡人人添人人爽人人玩 | 欧美私人情侣网站| 国产999精品久久久久久| 久久久久久久妓女精品免费影院 | 人人妻人人澡av天堂香蕉| 国产精品国产三级国产专区5o| 亚洲成av在线免费不卡| 日韩av在线不卡一区二区| 男女性杂交内射女bbwxz| 欧美gv在线观看| 欧美视频九九一区二区 | 久久精品这里只有精品| 日本高清在线一区二区| 黄射视频在线观看免费| 亚洲欧美日韩中文字幕一区二区三区 | 国产视频最新| 色婷婷亚洲一区二区三区在线| 亚洲精品国产第一区二区| 免费看黑人男阳茎进女阳道视频| 精品2021露脸国产偷人在视频| 中国产无码一区二区三区| 青青草视频视频在线观看| www夜插内射视频网站| 久久久国产打桩机| 亚洲精品毛片一区二区三区|