專利名稱:一種內(nèi)存訪問信息實時捕獲裝置及訪存信息捕獲方法
技術(shù)領(lǐng)域:
本發(fā)明涉及高性能計算領(lǐng)域,尤其涉及一種內(nèi)存訪問信息實時捕獲裝置及訪存信息捕獲方法。
背景技術(shù):
訪存信息的跟蹤獲取(profiling)傳統(tǒng)上用于程序的編譯優(yōu)化,用以提高程序性能。同時,在高性能計算機的研究和實現(xiàn)中,遠程分布式存儲是一種重要的方式,特別是利用光互連,可以將本地內(nèi)存拉到遠端,實現(xiàn)內(nèi)存和處理器的松耦合。為了隱藏遠程內(nèi)存延遲,預(yù)取是一種重要而有效的方式,但是高效的預(yù)取策略需要對訪存模式的了解作為基礎(chǔ)。
現(xiàn)有的訪存信息捕獲與跟蹤(profiling)方法可以分為軟件方法、硬件方法和軟硬結(jié)合的方法。
大多數(shù)profiling方法為軟件方法,通過在代碼中需要的地方插入特定的指令或者模塊來獲取信息,具有很大靈活性。但是得到的是處理器所看到的信息,而不是針對的物理內(nèi)存訪存信息,即物理內(nèi)存端所看到的真實模式。如果想獲取它們,必須要有硬件支持,因此純軟件方法不能完成本發(fā)明的目標。而且軟件方法開銷大、實時性差、對系統(tǒng)性能影響很大,還需要對應(yīng)用進行重新編譯。
硬件支持的profiling技術(shù)可以在一定程度上克服開銷問題的影響。Pentium等現(xiàn)代處理器內(nèi)部有用于性能統(tǒng)計的寄存器,可以通過軟件工具讀取。但是這些寄存器只提供累計的統(tǒng)計結(jié)果,例如高速緩存不命中次數(shù)等,不能提供詳細的過程記錄和分布,而且要通過特殊指令或者中斷來獲取信息,對系統(tǒng)性能影響很大。邏輯分析儀等方法可以采集到實時信息,但是易用性很差,代價很高。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種能夠在不修改原有系統(tǒng)硬件、對系統(tǒng)性能影響很小的情況下,實時、高速、低開銷的內(nèi)存訪問信息實時捕獲裝置,該裝置采用并聯(lián)的DDR內(nèi)存接口作為捕獲接口,以高速FIFO和高速IO進行數(shù)據(jù)存儲、傳送,由操作系統(tǒng)補丁和工具軟件作為支持;以及提供一種利用該裝置進行內(nèi)存訪問信息實時捕獲的方法;同時,對系統(tǒng)性能的影響和對軟硬件的修改很小,易用性很高。
為了解決上述技術(shù)問題,本發(fā)明提供一種內(nèi)存訪問信息實時捕獲裝置,包括內(nèi)存信號捕獲邏輯單元10、數(shù)據(jù)緩沖區(qū)單元20、高速數(shù)據(jù)接口單元30、嵌入式處理器單元40及配置緩沖區(qū)單元50,這些邏輯單元利用高速IO、大容量RAM和嵌入式處理器,實現(xiàn)高速內(nèi)存接口和數(shù)據(jù)發(fā)送接口,并對數(shù)據(jù)進行預(yù)處理,所述內(nèi)存訪問信息實時捕獲裝置接收內(nèi)存控制器信號;其中,內(nèi)存信號捕獲邏輯單元10實現(xiàn)了JEDEC DDR RAM規(guī)范的子集,對DDR內(nèi)存的命令進行解析,對地址和數(shù)據(jù)進行識別和捕獲;數(shù)據(jù)緩沖區(qū)單元20包括高速FIFO緩沖區(qū)和相關(guān)控制邏輯,內(nèi)存信號捕獲邏輯單元10將捕獲的信息寫入該FIFO;FIFO提供空、滿、計數(shù)器等,供流量控制使用;高速數(shù)據(jù)接口單元30用于將數(shù)據(jù)送往主機,或者接收主機傳來的控制和配置命令傳給配置緩沖區(qū)單元50;配置緩沖區(qū)單元50通過內(nèi)存信號捕獲邏輯單元10接收捕獲規(guī)則,用以對信息進行過濾,并將過濾后的信息傳給內(nèi)存信號捕獲邏輯單元10。
在上述方案中,內(nèi)存控制器所控制的若干DDR內(nèi)存插槽之間,除了片選信號線以外,其他信號線以總線形式共享,通過監(jiān)聽內(nèi)存總線來獲取處理器的訪存信息。
在上述方案中,內(nèi)存訪問信息實時捕獲裝置使用USB2.0接口或多通道的Xilinx專用高速IO通道實現(xiàn)捕獲數(shù)據(jù)的傳送。
在上述方案中,動態(tài)配置配置緩沖區(qū)單元50。
在上述方案中,內(nèi)存信號捕獲邏輯單元10由配置緩沖區(qū)單元50中的規(guī)則控制。
本發(fā)明還提供一種訪存信息捕獲方法,包括以下步驟a)內(nèi)存訪問信息實時捕獲裝置接收處理器通過主板的DDR插槽發(fā)來的訪存信號;b)內(nèi)存信號捕獲邏輯單元10捕獲到訪存信息;c)配置緩沖區(qū)單元50通過內(nèi)存信號捕獲邏輯單元10接收的捕獲規(guī)則,過濾訪存信息,并將過濾后的信息傳給內(nèi)存信號捕獲邏輯單元10;d)內(nèi)存信號捕獲邏輯單元10將過濾過的訪存信息存入數(shù)據(jù)緩沖區(qū)單元20;e)嵌入式處理器單元40對數(shù)據(jù)緩沖區(qū)單元20中的數(shù)據(jù)進行處理;f)處理過的數(shù)據(jù)由數(shù)據(jù)緩沖區(qū)單元20送入高速數(shù)據(jù)接口單元30;g)嵌入式處理器單元40控制高速數(shù)據(jù)接口單元30,將處理過的數(shù)據(jù)送出。
由上可知,本發(fā)明采用了并聯(lián)的DDR接口作為捕獲接口,用高速FIFO和高速IO進行數(shù)據(jù)存儲、傳送,由操作系統(tǒng)補丁和工具軟件作為支持;本發(fā)明所提供的裝置能夠在不修改原有系統(tǒng)硬件、對系統(tǒng)性能影響很小的情況下,實現(xiàn)實時、高速的訪存信息捕獲,能夠獲取包括時間和空間分布的全頻譜的訪存記錄。
圖1是本發(fā)明內(nèi)存訪問信息實時捕獲裝置的工作模式。
圖2是本發(fā)明的內(nèi)存訪問信息實時捕獲裝置的結(jié)構(gòu)圖。
圖3是本發(fā)明訪存信息捕獲方法的流程圖。
具體實施例方式
下面參照附圖詳細說明本發(fā)明的技術(shù)方案。
如圖1所示,內(nèi)存訪問信息實時捕獲裝置和普通DDR內(nèi)存并聯(lián)插在DDR內(nèi)存插槽上。加粗信號線為共享的總線,帶箭頭線為分離的片選信號線;內(nèi)存控制器所控制的若干DDR內(nèi)存插槽之間,除了片選信號以外,其他信號線以總線形式共享的,通過監(jiān)聽內(nèi)存總線來獲取處理器的訪存信息。捕獲裝置可以接收到處理器和普通內(nèi)存條間的通信,但由于處理器無法訪問它,它的片選信號線不會被選通。
如圖2所示,內(nèi)存訪問信息實時捕獲裝置包括內(nèi)存信號捕獲邏輯單元10、數(shù)據(jù)緩沖區(qū)單元20、高速數(shù)據(jù)接口單元30、嵌入式處理器單元40及配置緩沖區(qū)單元50。所述的這些單元由Xilinx公司的VirtexII Pro FPGA實現(xiàn)。該型號FPGA帶有高速IO、大容量RAM和嵌入式處理器,可以實現(xiàn)高速DDR內(nèi)存接口、高速數(shù)據(jù)收發(fā)接口和數(shù)據(jù)預(yù)處理功能,還可以根據(jù)不同需要對功能邏輯進行重構(gòu),從而增加系統(tǒng)功能,降低系統(tǒng)成本。
其中,內(nèi)存信號捕獲邏輯單元10實現(xiàn)了JEDEC DDRRAM規(guī)范的子集,能夠?qū)DR內(nèi)存的命令進行解析,對地址和數(shù)據(jù)進行識別和捕獲。
數(shù)據(jù)緩沖區(qū)單元20包括一個高速FIFO緩沖區(qū),內(nèi)存信號捕獲邏輯單元10將捕獲的信息寫入FIFO。FIFO提供空、滿、計數(shù)器等,供流量控制使用。
高速數(shù)據(jù)接口單元30用于將數(shù)據(jù)送往主機,或者接收主機傳來的控制和配置命令傳給配置緩沖區(qū)單元50。
配置緩沖區(qū)單元50通過內(nèi)存信號捕獲邏輯單元10接收捕獲規(guī)則,用以對信息進行過濾,并將過濾后的信息傳給內(nèi)存信號捕獲邏輯單元10。
如圖3所示,一種訪存信息捕獲方法包括以下步驟步驟10,內(nèi)存訪問信息實時捕獲裝置接收處理器通過主板的DDR插槽發(fā)來的訪存信號;步驟20,內(nèi)存信號捕獲邏輯單元10捕獲到訪存信息;步驟30,配置緩沖區(qū)單元50通過內(nèi)存信號捕獲邏輯單元10接收的捕獲規(guī)則,過濾訪存信息,并將過濾后的信息傳給內(nèi)存信號捕獲邏輯單元10;步驟40,內(nèi)存信號捕獲邏輯單元10將過濾過的訪存信息存入數(shù)據(jù)緩沖區(qū)單元20;步驟50,嵌入式處理器單元40對數(shù)據(jù)緩沖區(qū)單元20中的數(shù)據(jù)進行處理;步驟60,處理過的數(shù)據(jù)由數(shù)據(jù)緩沖區(qū)單元20送入高速數(shù)據(jù)接口單元30;步驟70,嵌入式處理器單元40控制高速數(shù)據(jù)接口單元30,將處理過的數(shù)據(jù)送出。
本發(fā)明還可以包括支持該卡的操作系統(tǒng)補丁和軟件工具。
操作系統(tǒng)補丁通過用戶的設(shè)置,對指定的應(yīng)用程序的物理內(nèi)存使用情況進行監(jiān)測,獲取其物理地址空間,并對訪存信息實時捕獲裝置的配置緩沖區(qū)進行設(shè)置,使之針對這些特定的物理地址范圍進行捕獲。操作系統(tǒng)補丁還可通過操作系統(tǒng)的內(nèi)存映射系統(tǒng)調(diào)用(mmap)將捕獲裝置所占用的物理內(nèi)存空間映射到用戶空間,從而可以訪問配置緩沖區(qū)單元。軟件工具是用戶和操作系統(tǒng)補丁的接口,用戶用它來指定需要捕獲的應(yīng)用、設(shè)置捕獲規(guī)則。
訪存信息實時捕獲裝置的關(guān)鍵點是由DDR(Double Data Rate)內(nèi)存接口實現(xiàn)。利用DDR接口有兩方面優(yōu)勢首先,內(nèi)存控制器所控制的若干DDR內(nèi)存插槽之間,除了片選信號以外,其他信號線以總線形式共享的,因此,可以通過監(jiān)聽內(nèi)存總線來獲取處理器的訪存信息,不會對系統(tǒng)性能產(chǎn)生影響,同時不用修改原有系統(tǒng)硬件;其次,直接利用DDR接口,有足夠帶寬和處理能力來捕獲和傳送收集到的數(shù)據(jù),即實時性能夠得到滿足。通過工具和模擬器對SPEC2000有關(guān)測試程序進行了統(tǒng)計,得到了訪存地址信息的數(shù)量級。在二級高速緩存不命中、高速緩存塊較大的情況下,DDR200以上有足夠能力來記錄和傳送這些信息。
本發(fā)明的訪存信息實時捕獲裝置插在主機板空閑的DDR內(nèi)存插槽上。該卡實現(xiàn)了JEDEC DDR RAM規(guī)范,能夠通過內(nèi)存總線上出現(xiàn)的內(nèi)存控制器信號,識別命令、地址和數(shù)據(jù)。
防止捕獲卡對內(nèi)存總線產(chǎn)生干擾是一個關(guān)鍵問題。在DDR接口規(guī)范中,除了DQ,DQS等信號是雙向外,其余信號都是由內(nèi)存控制器端向插槽端傳送。實際上在做捕獲時,得到單向的信號就可以,因此在實現(xiàn)時,不向控制器方傳送這些信號,所以不會對其他內(nèi)存模塊和內(nèi)存控制權(quán)產(chǎn)生干擾。
訪存信息的數(shù)量級很大,為了保證實時性,需要分別做一些處理。地址信息的捕獲是本發(fā)明最重要的目標,在高速緩存不命中、啟動訪存操作的情況下,只需要記錄高速緩存塊的首地址,這樣就可以大大減小需要采集和傳送的數(shù)據(jù)量。
為了進行實時高速數(shù)據(jù)傳送,邏輯內(nèi)部提供高速數(shù)據(jù)FIFO作為緩沖區(qū)。另一端通過高速數(shù)據(jù)接口將數(shù)據(jù)送到主機。高速數(shù)據(jù)接口要有與數(shù)據(jù)實時獲取相匹配的高速帶寬。對于地址捕獲,USB2.0的帶寬即可滿足要求,如果是數(shù)據(jù)捕獲,需要更高帶寬。本發(fā)明使用USB2.0接口或Xilinx專用高速IO通道實現(xiàn)捕獲數(shù)據(jù)的傳送,其它類型高速數(shù)據(jù)訪問接口也可適用。
本發(fā)明中,訪存信息實時捕獲裝置可以捕獲全部的訪存信息。但是,可能用戶只對某些特定的應(yīng)用的訪存信息感興趣。本發(fā)明提供操作系統(tǒng)補丁,可以獲取不同應(yīng)用的物理地址空間,并對捕獲卡的地址窗口進行設(shè)置。利用軟件工具,用戶可以對要捕獲的目標進行設(shè)置。軟件工具還包括接收程序,用于接收捕獲卡來的數(shù)據(jù)。
以上所述僅為本發(fā)明技術(shù)構(gòu)思下的一些基本說明,而依據(jù)本發(fā)明的技術(shù)方案所做的任何等效變換,均應(yīng)屬于本發(fā)明的保護范圍,例如針對SDRAM的系統(tǒng),不利用內(nèi)存插槽而是利用主板總線或內(nèi)存控制器輸出等的方法等均是保護對象。
最后應(yīng)說明的是以上實施例儀用以說明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實施例對本發(fā)明進行了詳細說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解依然可以對本發(fā)明進行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當中。
權(quán)利要求
1.一種內(nèi)存訪問信息實時捕獲,包括內(nèi)存信號捕獲邏輯單元10、數(shù)據(jù)緩沖區(qū)單元20、高速數(shù)據(jù)接口單元30、嵌入式處理器單元40及配置緩沖區(qū)單元50;這些邏輯單元利用高速IO、大容量RAM和嵌入式處理器,實現(xiàn)高速內(nèi)存接口和數(shù)據(jù)收發(fā)接口,并對數(shù)據(jù)進行預(yù)處理,所述內(nèi)存訪問信息實時捕獲裝置接收內(nèi)存控制器信號;其中,內(nèi)存信號捕獲邏輯單元10實現(xiàn)了JEDEC DDR RAM規(guī)范的子集,對DDR內(nèi)存的命令進行解析,對地址和數(shù)據(jù)進行識別和捕獲;數(shù)據(jù)緩沖區(qū)單元20包括高速FIFO緩沖區(qū)和相關(guān)控制邏輯,內(nèi)存信號捕獲邏輯單元10將捕獲的信息寫入該FIFO;FIFO提供空、滿、計數(shù)器,供流量控制使用;高速數(shù)據(jù)接口單元30用于將數(shù)據(jù)送往主機,或者接收主機傳來的控制和配置命令傳給配置緩沖區(qū)單元50;配置緩沖區(qū)單元50通過內(nèi)存信號捕獲邏輯單元10接收捕獲規(guī)則,用以對信息進行過濾,并將過濾后的信息傳給內(nèi)存信號捕獲邏輯單元10。
2.如權(quán)利要求1所述的一種內(nèi)存訪問信息實時捕獲裝置,其特征在于,內(nèi)存訪問信息實時捕獲裝置通過內(nèi)存總線上出現(xiàn)的內(nèi)存控制器信號,識別命令、地址和數(shù)據(jù)。
3.如權(quán)利要求1所述的一種內(nèi)存訪問信息實時捕獲裝置,其特征在于,內(nèi)存訪問信息實時捕獲裝置使用USB2.0接口或Xilinx專用高速IO通道實現(xiàn)捕獲數(shù)據(jù)的傳送。
4.如權(quán)利要求1所述的一種內(nèi)存訪問信息實時捕獲裝置,其特征在于,高速數(shù)據(jù)接口單元30將數(shù)據(jù)緩沖區(qū)單元20中的數(shù)據(jù)打包,通過USB接口或高速串行通道發(fā)送到主機進行存儲和分析,數(shù)據(jù)緩沖區(qū)單元20、高速數(shù)據(jù)接口單元30和上層驅(qū)動程序共同配合,進行流量控制。
5.如權(quán)利要求1所述的一種內(nèi)存訪問信息實時捕獲裝置,其特征在于,動態(tài)配置配置緩沖區(qū)單元50。
6.如權(quán)利要求1所述的一種內(nèi)存訪問信息實時捕獲裝置,其特征在于,內(nèi)存信號捕獲邏輯單元10由配置緩沖區(qū)單元50中的規(guī)則控制。
7.一種應(yīng)用權(quán)利要求1所述的內(nèi)存訪問信息實時捕獲裝置進行訪存信息捕獲的方法,包括以下步驟a)內(nèi)存訪問信息實時捕獲裝置接收處理器通過主板的DDR插槽發(fā)來的訪存信號;b)內(nèi)存信號捕獲邏輯單元10捕獲到訪存信息;c)配置緩沖區(qū)單元50通過內(nèi)存信號捕獲邏輯單元10接收的捕獲規(guī)則,過濾訪存信息,并將過濾后的信息傳給內(nèi)存信號捕獲邏輯單元10;d)內(nèi)存信號捕獲邏輯單元10將過濾過的訪存信息存入數(shù)據(jù)緩沖區(qū)單元20;e)嵌入式處理器單元40對數(shù)據(jù)緩沖區(qū)單元20中的數(shù)據(jù)進行處理;f)處理過的數(shù)據(jù)由數(shù)據(jù)緩沖區(qū)單元20送入高速數(shù)據(jù)接口單元30;g)嵌入式處理器單元40控制高速數(shù)據(jù)接口單元30,將處理過的數(shù)據(jù)送出。
全文摘要
本發(fā)明公開了一種內(nèi)存訪問信息實時捕獲裝置及訪存信息捕獲方法,該裝置包括內(nèi)存信號捕獲邏輯單元、數(shù)據(jù)緩沖區(qū)單元、高速數(shù)據(jù)接口單元、嵌入式處理器單元及配置緩沖區(qū)單元,這些邏輯單元利用高速IO、大容量RAM和嵌入式處理器,實現(xiàn)高速內(nèi)存接口和數(shù)據(jù)發(fā)送接口,并對數(shù)據(jù)進行預(yù)處理,所述內(nèi)存訪問信息實時捕獲裝置接收內(nèi)存控制器信號。由于采用了并聯(lián)的DDR內(nèi)存接口作為捕獲接口,以高速FIFO和高速IO進行數(shù)據(jù)存儲、傳送,由操作系統(tǒng)補丁和工具軟件作為支持實現(xiàn)的。本發(fā)明所提供的裝置能夠在不修改原有系統(tǒng)硬件、對系統(tǒng)性能影響很小的情況下,實現(xiàn)實時、高速的訪存信息捕獲。
文檔編號G06F11/34GK1828550SQ20051000861
公開日2006年9月6日 申請日期2005年2月28日 優(yōu)先權(quán)日2005年2月28日
發(fā)明者李磊, 陳明宇, 曹政, 樊建平 申請人:中國科學院計算技術(shù)研究所