本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種內(nèi)存檢測方法及裝置。
背景技術(shù):
隨著內(nèi)存技術(shù)朝著大容量方向的發(fā)展,一個內(nèi)存通??梢园ǘ鄠€rank,每一個rank通??梢园ǘ鄠€內(nèi)存顆粒。
目前,利用業(yè)界通用的內(nèi)存測試工具(比如,memtest86+以及RST Pro等)對待測內(nèi)存進(jìn)行測試時(shí),僅需要將待測內(nèi)存與處理器相連,則可在處理器上運(yùn)行內(nèi)存測試工具,以檢測處理器的每一個數(shù)據(jù)位是否失效,進(jìn)而將失效的數(shù)據(jù)位對應(yīng)的每一個內(nèi)存顆粒均確定為故障內(nèi)存顆粒。
由于同一個數(shù)據(jù)位可對應(yīng)待測內(nèi)存中的多個內(nèi)存顆粒,而任意一個內(nèi)存顆粒出現(xiàn)故障時(shí),均會導(dǎo)致其對應(yīng)的數(shù)據(jù)位失效,因此,上述技術(shù)方案確定的多個故障內(nèi)存顆粒中可能存在未發(fā)生故障的內(nèi)存顆粒,不能準(zhǔn)確檢測出內(nèi)存的故障內(nèi)存顆粒。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種內(nèi)存檢測方法及裝置,可更為準(zhǔn)確的檢測出內(nèi)存的故障內(nèi)存顆粒。
第一方面,本發(fā)明提供了一種內(nèi)存檢測方法,包括:
S0:確定待測內(nèi)存中對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量,以及確定每一個所述待測內(nèi)存顆粒的位置參數(shù);并根據(jù)所述待測內(nèi)存顆粒的數(shù)量確定至少一個檢測參數(shù);
S1:根據(jù)每一個檢測參數(shù)的大小,選擇一個未被選擇過的一個檢測參數(shù);
S2:根據(jù)選擇的檢測參數(shù),修改所述待測內(nèi)存的有效訪問區(qū)域;
S3:根據(jù)修改后的所述有效訪問區(qū)域,訪問所述待測內(nèi)存,并形成訪問結(jié)果;
S4:判斷所述訪問結(jié)果是否為預(yù)設(shè)訪問結(jié)果,如果是,則執(zhí)行步驟S1;否則,執(zhí)行步驟S5;
S5:根據(jù)選擇的檢測參數(shù),以及每一個所述待測內(nèi)存顆粒的位置參數(shù),確定故障內(nèi)存顆粒。
優(yōu)選地,
所述根據(jù)每一個檢測參數(shù)的大小,選擇一個未被選擇過的檢測參數(shù),包括:根據(jù)每一個檢測參數(shù)的大小,按照由小到大的順序,選擇一個未被選擇過的檢測參數(shù);
則,
所述判斷所述訪問結(jié)果是否為預(yù)設(shè)訪問結(jié)果,包括:判斷所述訪問結(jié)果是否為訪問成功;
所述根據(jù)選擇的檢測參數(shù),以及每一個所述待測內(nèi)存顆粒的位置參數(shù),確定故障內(nèi)存顆粒,包括:
按照由小到大的順序,利用至少一個檢測參數(shù)生成第一數(shù)據(jù)隊(duì)列,以及,利用各個所述待測內(nèi)存顆粒的位置參數(shù)生成第二數(shù)據(jù)隊(duì)列;
確定選擇的檢測參數(shù)在所述第一數(shù)據(jù)隊(duì)列中的第一順序位a;
將所述第二數(shù)據(jù)隊(duì)列中,位于第a個順序位的位置參數(shù)確定為第一參考位置參數(shù);
將所述第一參考位置參數(shù)對應(yīng)的待測內(nèi)存顆粒確定為故障內(nèi)存顆粒。
優(yōu)選地,
所述根據(jù)每一個檢測參數(shù)的大小,選擇一個未被選擇過的檢測參數(shù),包括:根據(jù)每一個檢測參數(shù)的大小,按照由大到小的順序,選擇一個未被選擇過的檢測參數(shù);
則,所述判斷所述訪問結(jié)果是否為預(yù)設(shè)訪問結(jié)果,包括:判斷所述訪問結(jié)果是否為訪問失敗;
所述根據(jù)選擇的檢測參數(shù),以及每一個待測內(nèi)存顆粒的位置參數(shù),確定故障內(nèi)存顆粒,包括:
按照由大到小的順序,利用至少一個檢測參數(shù)生成第三數(shù)據(jù)隊(duì)列,以及,利用各個待測內(nèi)存顆粒的位置參數(shù)生成第四數(shù)據(jù)隊(duì)列;
確定選擇的檢測參數(shù)在所述第三數(shù)據(jù)隊(duì)列中的第二順序位b;
將所述第四順序隊(duì)列中,位于第b-1個順序位的位置參數(shù)確定為第二參考位置參數(shù);
將所述第二參考位置參數(shù)對應(yīng)的待測內(nèi)存顆粒確定為故障內(nèi)存顆粒。
優(yōu)選地,
所述確定待測內(nèi)存中對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量,以及確定每一個所述待測內(nèi)存顆粒的位置參數(shù),包括:
確定待測內(nèi)存對應(yīng)的一個失效數(shù)據(jù)位,以及確定待測內(nèi)存中內(nèi)存顆粒的數(shù)量以及顆粒位寬;
根據(jù)所述內(nèi)存顆粒的數(shù)量、所述顆粒位寬及所述失效數(shù)據(jù)位,確定所述待測內(nèi)存顆粒的數(shù)量,以及每一個所述待測內(nèi)存顆粒分別對應(yīng)的位置參數(shù)。
優(yōu)選地,
所述根據(jù)選擇的檢測參數(shù),修改所述待測內(nèi)存的有效訪問區(qū)域,包括:將所述待測內(nèi)存的有效rank參數(shù)修改為選擇的檢測參數(shù);
所述根據(jù)修改后的所述有效訪問區(qū)域,訪問所述待測內(nèi)存,包括:根據(jù)修改后的有效rank參數(shù),依次訪問所述待測內(nèi)存的前n+1個rank,其中,n為選擇的檢測參數(shù)。
第二方面,本發(fā)明實(shí)施例提供了一種內(nèi)存檢測裝置,包括:
第一確定模塊,用于確定待測內(nèi)存中對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量,以及確定每一個所述待測內(nèi)存顆粒的位置參數(shù);并根據(jù)所述待測內(nèi)存顆粒的數(shù)量確定至少一個檢測參數(shù);
選擇模塊,用于根據(jù)每一個檢測參數(shù)的大小,選擇一個未被選擇過的一個檢測參數(shù);
處理模塊,用于根據(jù)選擇的檢測參數(shù),修改所述待測內(nèi)存的有效訪問區(qū)域;
檢測模塊,用于根據(jù)修改后的所述有效訪問區(qū)域,訪問所述待測內(nèi)存,并形成訪問結(jié)果;
判斷模塊,用于判斷所述訪問結(jié)果是否為預(yù)設(shè)訪問結(jié)果,如果是,則觸發(fā)所述選擇模塊;否則,觸發(fā)所述第二確定模塊;
第二確定模塊,用于根據(jù)選擇的檢測參數(shù),以及每一個所述待測內(nèi)存顆粒的位置參數(shù),確定故障內(nèi)存顆粒。
優(yōu)選地,
所述選擇模塊,用于根據(jù)每一個檢測參數(shù)的大小,按照由小到大的順序,選擇一個未被選擇過的檢測參數(shù);
所述判斷模塊,用于判斷所述訪問結(jié)果是否為訪問成功;
所述第二確定模塊,包括:第一構(gòu)建單元、第一確定單元、第二確定單元和第三確定單元;其中,
所述第一構(gòu)建單元,用于按照由小到大的順序,利用至少一個檢測參數(shù)生成第一數(shù)據(jù)隊(duì)列,以及,利用各個所述待測內(nèi)存顆粒的位置參數(shù)生成第二數(shù)據(jù)隊(duì)列;
所述第一確定單元,用于確定選擇的檢測參數(shù)在所述第一數(shù)據(jù)隊(duì)列中的第一順序位a;
所述第二確定單元,用于將所述第二數(shù)據(jù)隊(duì)列中,位于第a個順序位的位置參數(shù)確定為第一參考位置參數(shù);
所述第三確定單元,用于將所述第一參考位置參數(shù)對應(yīng)的待測內(nèi)存顆粒確定為故障內(nèi)存顆粒。
優(yōu)選地,
所述選擇模塊,用于根據(jù)每一個檢測參數(shù)的大小,按照由大到小的順序,選擇一個未被選擇過的檢測參數(shù);
所述判斷模塊,用于判斷所述訪問結(jié)果是否為訪問失?。?/p>
所述第二確定模塊,包括:第二構(gòu)建單元、第四確定單元、第五確定單元和第六確定單元;其中,
所述第二構(gòu)建單元,用于按照由大到小的順序,利用至少一個檢測參數(shù)生成第三數(shù)據(jù)隊(duì)列,以及,利用各個待測內(nèi)存顆粒的位置參數(shù)生成第四數(shù)據(jù)隊(duì)列;
所述第四確定單元,用于確定選擇的檢測參數(shù)在所述第三數(shù)據(jù)隊(duì)列中的第二順序位b;
所述第五確定單元,用于將所述第四順序隊(duì)列中,位于第b-1個順序位的位置參數(shù)確定為第二參考位置參數(shù);
所述第六確定單元,用于將所述第二參考位置參數(shù)對應(yīng)的待測內(nèi)存顆粒確定為故障內(nèi)存顆粒。
優(yōu)選地,
所述第一確定模塊,包括:第七確定單元和第八確定單元;其中,
所述第七確定單元,用于確定待測內(nèi)存對應(yīng)的一個失效數(shù)據(jù)位,以及確定待測內(nèi)存中內(nèi)存顆粒的數(shù)量以及顆粒位寬;
所述第八確定單元,用于根據(jù)所述內(nèi)存顆粒的數(shù)量、所述顆粒位寬及所述失效數(shù)據(jù)位,確定所述待測內(nèi)存顆粒的數(shù)量,以及每一個所述待測內(nèi)存顆粒分別對應(yīng)的位置參數(shù)。
優(yōu)選地,
所述處理模塊,用于將所述待測內(nèi)存的有效rank參數(shù)修改為選擇的檢測參數(shù);
所述檢測模塊,用于根據(jù)修改后的有效rank參數(shù),依次訪問所述待測內(nèi)存的前n+1個rank,其中,n為選擇的檢測參數(shù)。
本發(fā)明實(shí)施例提供了一種內(nèi)存檢測方法及裝置,在該方法中,由于對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量即為待測內(nèi)存的rank數(shù)量,同時(shí),需要根據(jù)設(shè)置待測內(nèi)存的有效訪問區(qū)域才能訪問待測內(nèi)存,且訪問待測內(nèi)存的多個rank時(shí)具備設(shè)定的順序;因此,可根據(jù)確定的對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量來確定至少一個檢測參數(shù)(比如,待測內(nèi)存顆粒的數(shù)量為2時(shí),即待測內(nèi)存的rank數(shù)量為2時(shí),則可確定出檢測參數(shù)為0和1;在待測內(nèi)存顆粒的數(shù)量為4時(shí),可確定出檢測參數(shù)為0、1、2、3),然后根據(jù)確定的各個檢測參數(shù)的大小,選擇一個未被選擇過的檢測參數(shù),并根據(jù)選擇的檢測參數(shù)修改待測內(nèi)存的有效訪問區(qū)域,即實(shí)現(xiàn)對待測內(nèi)存的有效訪問區(qū)域進(jìn)行限定(比如,限定可訪問的rank數(shù)量,或可訪問的內(nèi)存顆粒數(shù)量),進(jìn)而根據(jù)修改后的有效訪問區(qū)域訪問待測內(nèi)存,并形成訪問結(jié)果;之后,即可根據(jù)形成的訪問結(jié)果,確定是否執(zhí)行根據(jù)選擇的檢測參數(shù)和每一個待測內(nèi)存顆粒分別對應(yīng)的位置參數(shù)確定故障內(nèi)存,直到確定出故障內(nèi)存顆粒為止。綜上可見,本發(fā)明提供的技術(shù)方案中,通過對內(nèi)存的有效訪問區(qū)域進(jìn)行限定,然后根據(jù)限定的有效訪問區(qū)域訪問內(nèi)存,并根據(jù)訪問結(jié)果及對應(yīng)的檢測參數(shù)、各個待測內(nèi)存顆粒的位置參數(shù)確定內(nèi)存的故障內(nèi)存顆粒,可更為準(zhǔn)確的檢測出內(nèi)存的故障內(nèi)存顆粒。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明一實(shí)施例提供的一種內(nèi)存檢測方法的流程圖;
圖2是本發(fā)明一實(shí)施例提供的另一種內(nèi)存檢測方法的流程圖;
圖3是本發(fā)明一實(shí)施例提供的又一種內(nèi)存檢測方法的流程圖;
圖4是本發(fā)明一實(shí)施例提供的一種內(nèi)存檢測裝置的結(jié)構(gòu)示意圖;
圖5是本發(fā)明一實(shí)施例提供的另一種內(nèi)存檢測裝置的結(jié)構(gòu)示意圖;
圖6是本發(fā)明一實(shí)施例提供的又一種內(nèi)存檢測裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例,基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,本發(fā)明實(shí)施例提供了一種內(nèi)存檢測方法,包括:
S0:確定待測內(nèi)存中對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量,以及確定每一個所述待測內(nèi)存顆粒的位置參數(shù);并根據(jù)所述待測內(nèi)存顆粒的數(shù)量確定至少一個檢測參數(shù);
S1:根據(jù)每一個檢測參數(shù)的大小,選擇一個未被選擇過的一個檢測參數(shù);
S2:根據(jù)選擇的檢測參數(shù),修改所述待測內(nèi)存的有效訪問區(qū)域;
S3:根據(jù)修改后的所述有效訪問區(qū)域,訪問所述待測內(nèi)存,并形成訪問結(jié)果;
S4:判斷所述訪問結(jié)果是否為預(yù)設(shè)訪問結(jié)果,如果是,則執(zhí)行步驟S1;否則,執(zhí)行步驟S5;
S5:根據(jù)選擇的檢測參數(shù),以及每一個所述待測內(nèi)存顆粒的位置參數(shù),確定故障內(nèi)存顆粒。
本發(fā)明上述實(shí)施例中,由于對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量即為待測內(nèi)存的rank數(shù)量,同時(shí),需要根據(jù)設(shè)置待測內(nèi)存的有效訪問區(qū)域才能訪問待測內(nèi)存,且訪問待測內(nèi)存的多個rank時(shí)具備設(shè)定的順序;因此,可根據(jù)確定的對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量來確定至少一個檢測參數(shù)(比如,待測內(nèi)存顆粒的數(shù)量為2時(shí),即待測內(nèi)存的rank數(shù)量為2時(shí),則可確定出檢測參數(shù)為0和1;在待測內(nèi)存顆粒的數(shù)量為4時(shí),可確定出檢測參數(shù)為0、1、2、3),然后根據(jù)確定的各個檢測參數(shù)的大小,選擇一個未被選擇過的檢測參數(shù),并根據(jù)選擇的檢測參數(shù)修改待測內(nèi)存的有效訪問區(qū)域,即實(shí)現(xiàn)對待測內(nèi)存的有效訪問區(qū)域進(jìn)行限定(比如,限定可訪問的rank數(shù)量,或可訪問的內(nèi)存顆粒數(shù)量),進(jìn)而根據(jù)修改后的有效訪問區(qū)域訪問待測內(nèi)存,并形成訪問結(jié)果;之后,即可根據(jù)形成的訪問結(jié)果,確定是否執(zhí)行根據(jù)選擇的檢測參數(shù)和每一個待測內(nèi)存顆粒分別對應(yīng)的位置參數(shù)確定故障內(nèi)存,直到確定出故障內(nèi)存顆粒為止。綜上可見,本發(fā)明提供的技術(shù)方案中,通過對內(nèi)存的有效訪問區(qū)域進(jìn)行限定,然后根據(jù)限定的有效訪問區(qū)域訪問內(nèi)存,并根據(jù)訪問結(jié)果及對應(yīng)的檢測參數(shù)、各個待測內(nèi)存顆粒的位置參數(shù)確定內(nèi)存的故障內(nèi)存顆粒,可更為準(zhǔn)確的檢測出內(nèi)存的故障內(nèi)存顆粒。
應(yīng)當(dāng)理解的是,訪問待測內(nèi)存,可以是想待測內(nèi)存寫入業(yè)務(wù)數(shù)據(jù)和讀取待測內(nèi)存內(nèi)存儲的業(yè)務(wù)數(shù)據(jù)。
由于訪問待測內(nèi)存的多個rank時(shí)具備設(shè)定的順序,因此,根據(jù)檢測參數(shù)的大小,從確定的各個檢測參數(shù)中選擇一個檢測參數(shù)來作為修改待測內(nèi)存的配置信息的依據(jù)時(shí),具體可以包括如下兩種選擇方式:
選擇方式1:根據(jù)每一個檢測參數(shù)的大小,按照由小到大的順序,選擇一個未被選擇過的檢測參數(shù)。
則,所述判斷所述訪問結(jié)果是否為預(yù)設(shè)訪問結(jié)果,包括:判斷所述訪問結(jié)果是否為訪問成功;
所述根據(jù)選擇的檢測參數(shù),以及每一個所述待測內(nèi)存顆粒的位置參數(shù),確定故障內(nèi)存顆粒,包括:
按照由小到大的順序,利用至少一個檢測參數(shù)生成第一數(shù)據(jù)隊(duì)列,以及,利用各個所述待測內(nèi)存顆粒的位置參數(shù)生成第二數(shù)據(jù)隊(duì)列;
確定選擇的檢測參數(shù)在所述第一數(shù)據(jù)隊(duì)列中的第一順序位a;
將所述第二數(shù)據(jù)隊(duì)列中,位于第a個順序位的位置參數(shù)確定為第一參考位置參數(shù);
將所述第一參考位置參數(shù)對應(yīng)的待測內(nèi)存顆粒確定為故障內(nèi)存顆粒。
舉例來說,具體以確定出檢測參數(shù)包括:0、1、2、3為例,按照由小到大的順序選擇確定的各個檢測參數(shù)時(shí),首先選擇檢測參數(shù)0,即可根據(jù)選擇的檢測參數(shù)對待測內(nèi)存的有效訪問區(qū)域進(jìn)行修改,實(shí)現(xiàn)限定待測內(nèi)存的有效訪問區(qū)域?yàn)閞ank0;當(dāng)然,也可直接限定待測內(nèi)存的有效訪問區(qū)域?yàn)槠涞谝粋€rank對應(yīng)的各個內(nèi)存顆粒,比如,當(dāng)待測內(nèi)存的顆粒位寬為8it,則可修改待測內(nèi)存的有效訪問區(qū)域以限定待測內(nèi)存的有效內(nèi)存顆粒為其第1至第9個內(nèi)存顆粒,其中,第九個內(nèi)存顆粒為其前8個內(nèi)存顆粒的錯誤內(nèi)存校驗(yàn)位。相應(yīng)的,在根據(jù)修改后的配置信息訪問待測內(nèi)存的rank0時(shí),如果訪問結(jié)果為訪問成功,則說明rank0的各個內(nèi)存顆粒中沒有故障內(nèi)存顆粒,再次執(zhí)行按照由小到大的順序選擇檢測參數(shù)1以繼續(xù)進(jìn)行檢測;反之,如果訪問結(jié)果為訪問失敗,則說明rank0中存在故障內(nèi)存顆粒,這里以確定的各個待測內(nèi)存顆粒對應(yīng)的位置參數(shù)是:2、11、20和29為例,即各個待測內(nèi)存顆粒在待測內(nèi)存中的排列順序位分別為:2、11、20和29;則可確定出位置參數(shù)為2的待測內(nèi)存顆粒時(shí)故障內(nèi)存顆粒。相應(yīng)的,當(dāng)選擇的檢測參數(shù)為1,且訪問結(jié)果為訪問失敗時(shí),則可確定位置參數(shù)11對應(yīng)的待測內(nèi)存顆粒為故障內(nèi)存顆粒。
選擇方式2:根據(jù)每一個檢測參數(shù)的大小,按照由大到小的順序,選擇一個未被選擇過的檢測參數(shù)。
則,所述判斷所述訪問結(jié)果是否為預(yù)設(shè)訪問結(jié)果,包括:判斷所述訪問結(jié)果是否為訪問失??;
所述根據(jù)選擇的檢測參數(shù),以及每一個待測內(nèi)存顆粒的位置參數(shù),確定故障內(nèi)存顆粒,包括:
按照由大到小的順序,利用至少一個檢測參數(shù)生成第三數(shù)據(jù)隊(duì)列,以及,利用各個待測內(nèi)存顆粒的位置參數(shù)生成第四數(shù)據(jù)隊(duì)列;
確定選擇的檢測參數(shù)在所述第三數(shù)據(jù)隊(duì)列中的第二順序位b;
將所述第四順序隊(duì)列中,位于第b-1個順序位的位置參數(shù)確定為第二參考位置參數(shù);
將所述第二參考位置參數(shù)對應(yīng)的待測內(nèi)存顆粒確定為故障內(nèi)存顆粒。
舉例來說,具體以確定出檢測參數(shù)包括:0、1、2、3為例,按照由大到小的順序選擇確定的各個檢測參數(shù)時(shí),首先選擇出檢測參數(shù)3,則可根據(jù)檢測參數(shù)3對待測內(nèi)存的有效訪問區(qū)域進(jìn)行修改,實(shí)現(xiàn)限定待測內(nèi)存的有效訪問區(qū)域?yàn)閞ank0、rank1、rank2和rank3;當(dāng)然,也可直接限定待測內(nèi)存的有效訪問區(qū)域?yàn)榇郎y內(nèi)存的前4個rank對應(yīng)的各個內(nèi)存顆粒。相應(yīng)的,在根據(jù)修改后的配置信息訪問待測內(nèi)存的rank0、rank1、rank2和rank3時(shí),如果訪問結(jié)果為訪問失敗,則按照由大到小的順序再次選擇檢測參數(shù)2修改有效訪問區(qū)域,進(jìn)而根據(jù)修改后的有效訪問區(qū)域訪問待測內(nèi)存的rank0、rank1、rank2,此時(shí),如果訪問成功,則說明rank3中存在故障內(nèi)存顆粒;這里以各個待測內(nèi)存顆粒對應(yīng)的位置參數(shù)是:2、11、20和29為例,即各個待測內(nèi)存顆粒在待測內(nèi)存中的排列順序位分別為:2、11、20和29,則可確定出位置參數(shù)為29的待測內(nèi)存顆粒是故障內(nèi)存顆粒。相應(yīng)的,當(dāng)選擇的檢測參數(shù)為2時(shí),對應(yīng)的訪問結(jié)果為訪問失敗,且選擇檢測參數(shù)為1時(shí),對應(yīng)的訪問結(jié)果為訪問成功,則可確定位置參數(shù)20對應(yīng)的待測內(nèi)存顆粒為故障內(nèi)存顆粒。
本發(fā)明一個實(shí)施例中,所述確定待測內(nèi)存中對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量,以及確定每一個所述待測內(nèi)存顆粒的位置參數(shù),包括:
確定待測內(nèi)存對應(yīng)的一個失效數(shù)據(jù)位,以及確定待測內(nèi)存中內(nèi)存顆粒的數(shù)量以及顆粒位寬;
根據(jù)所述內(nèi)存顆粒的數(shù)量、所述顆粒位寬及所述失效數(shù)據(jù)位,確定所述待測內(nèi)存顆粒的數(shù)量,以及每一個所述待測內(nèi)存顆粒分別對應(yīng)的位置參數(shù)。
本發(fā)明上述實(shí)施例中,具體可通過從待測內(nèi)存的SPD(serial presence detect,模組存在的串行檢測)芯片中讀取待測內(nèi)存的配置信息,以根據(jù)讀取的配置信息確定待測內(nèi)存的內(nèi)存顆粒數(shù)量和顆粒位寬,這里以顆粒數(shù)量是36,顆粒位寬是8為例;同時(shí),以通過memtest86+或RST Pro內(nèi)存測試工具確定的待測內(nèi)存對應(yīng)的一個失效數(shù)據(jù)位是43為例,則可確定出待測內(nèi)存顆粒的數(shù)量為4,且每一個待測內(nèi)存顆粒分別對應(yīng)的位置參數(shù)是6、15、24、34。
具體地,本發(fā)明一個實(shí)施例,所述根據(jù)選擇的檢測參數(shù),修改所述待測內(nèi)存的有效訪問區(qū)域,包括:將所述待測內(nèi)存的有效rank參數(shù)修改為選擇的檢測參數(shù);
所述根據(jù)修改后的所述有效訪問區(qū)域,訪問所述待測內(nèi)存,包括:根據(jù)修改后的有效rank參數(shù),依次訪問所述待測內(nèi)存的前n+1個rank,其中,n為選擇的檢測參數(shù)。
舉例來說,內(nèi)存的配置信息通常存儲在其對應(yīng)的SPD芯片中,配置信息包括顆粒位寬、有效rank參數(shù)內(nèi)存顆粒的數(shù)量等,SPD芯片通常為一個8針的可讀寫存儲芯片,其第12位數(shù)據(jù)用于標(biāo)識內(nèi)存的有效rank參數(shù)和顆粒位寬,其中第12位數(shù)據(jù)轉(zhuǎn)換為包括8個數(shù)據(jù)位的二進(jìn)制數(shù)據(jù)時(shí),低三位用于標(biāo)識顆粒位寬,第四位至第六位用于標(biāo)識有效內(nèi)存參數(shù),高兩位通常為0,比如,這里以選擇的檢測是2,修改前的有效rank參數(shù)是011為例,則可將檢測參數(shù)2轉(zhuǎn)換為包括三個數(shù)據(jù)位的二進(jìn)制數(shù)據(jù)010,利用010替換有效rank參數(shù)011,則可實(shí)現(xiàn)限定內(nèi)存的有效訪問區(qū)域?yàn)閮?nèi)存的前3個rank,即rank0、rank1和rank2。這里,具體體現(xiàn)在SPD中第12位數(shù)據(jù)下的修改情況則為將第12位數(shù)據(jù)下的十進(jìn)制數(shù)據(jù)25修改為十進(jìn)制數(shù)據(jù)16。
為了進(jìn)一步說明本發(fā)明實(shí)施例的技術(shù)方案及優(yōu)點(diǎn),下面具體以針對包括36個內(nèi)存顆粒、顆粒位寬為8的一個待測內(nèi)存進(jìn)行檢測為例,且以按照由小到大的順序選擇檢測參數(shù),如圖2所示,具體可以包括如下各個步驟:
步驟201,通過memtest86+檢測待測內(nèi)存,以確定出待測內(nèi)存對應(yīng)的失效數(shù)據(jù)位。
這里,除memtest86+外,還可以使用其他工具檢測待測內(nèi)存對應(yīng)的失效數(shù)據(jù)位,比如RST Pro。
步驟202,從待測內(nèi)存的SPD芯片中讀取配置信息,根據(jù)讀取的配置信息確定待測內(nèi)存的顆粒位寬及內(nèi)存顆粒的數(shù)量。
這里,可通過對讀取的配置信息進(jìn)行解析,以獲取SPD芯片下的第12位數(shù)據(jù),舉例來說,當(dāng)獲取其第12位數(shù)據(jù)是25時(shí),將其轉(zhuǎn)換為包括8個數(shù)據(jù)位的二進(jìn)制數(shù)據(jù)則為00011001,低位開始計(jì)數(shù),前三位為001,表征內(nèi)存顆粒的位寬為8bit,第四位至第6位為011,表征待測內(nèi)存包括4個rank,相應(yīng)的,即可確定出對應(yīng)同一個數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量為4;由于處理器數(shù)據(jù)總線的位寬為64位,可確定出8個內(nèi)存顆粒則可形成一個rank,同時(shí),待測內(nèi)存中每間隔8個內(nèi)存顆粒,需要設(shè)置一個對應(yīng)內(nèi)存錯誤校驗(yàn)位的內(nèi)存顆粒,因此,可確定出內(nèi)存顆粒的數(shù)量為36。
步驟203,根據(jù)內(nèi)存顆粒的數(shù)量、顆粒位寬及失效數(shù)據(jù)位,確定待測內(nèi)存顆粒的數(shù)量,以及每一個所述待測內(nèi)存顆粒分別對應(yīng)的位置參數(shù)。
本發(fā)明實(shí)施例中,以步驟1中確定出實(shí)效數(shù)據(jù)位是43為例,則可計(jì)算出每一個待測內(nèi)存顆粒分別對應(yīng)的位置參數(shù)是:6、15、24、33,即待測內(nèi)存的中第6個、第15個、第24個和第34個均為待測內(nèi)存。同時(shí),可確定出檢測參數(shù)分別為:0、1、2、3。
步驟204,根據(jù)每一個檢測參數(shù)的大小,按照由小到大的順序,選擇一個未被選擇過的一個檢測參數(shù)。
本發(fā)明實(shí)施例中,僅以按照由小到大的順序選擇檢測參數(shù)為例;在實(shí)際業(yè)務(wù)場景中,也可以按照由大到小的順序選擇檢測參數(shù),參見如圖3所示的實(shí)施例。
步驟205,將待測內(nèi)存的有效rank參數(shù)修改為選擇的檢測參數(shù)。
具體地,當(dāng)選擇的檢測參數(shù)為0時(shí),可將待測內(nèi)存對應(yīng)的SPD芯片中第12位數(shù)據(jù)修改為1;當(dāng)選擇的檢測參數(shù)為1時(shí),可將待測內(nèi)存對應(yīng)的SPD芯片中第12位數(shù)據(jù)修改為9;當(dāng)選擇的檢測參數(shù)為2時(shí),可將待測內(nèi)存對應(yīng)的SPD芯片中第12位數(shù)據(jù)修改為17;當(dāng)選擇的檢測參數(shù)為3時(shí),可將待測內(nèi)存對應(yīng)的SPD芯片中第12位數(shù)據(jù)修改為25;如此,即可實(shí)現(xiàn)對待測內(nèi)存的有效訪問區(qū)域進(jìn)行限定。
步驟206,根據(jù)修改后的有效rank參數(shù),依次訪問所述待測內(nèi)存的前n+1個rank,并形成訪問結(jié)果。
其中,n為選擇的檢測參數(shù)。
本發(fā)明實(shí)施例中,當(dāng)待測內(nèi)存對應(yīng)的SPD芯片中第12位數(shù)據(jù)為1時(shí),有效rank參數(shù)為000,表征可以訪問待測內(nèi)存的rank0,即第1至9個內(nèi)存顆粒;當(dāng)待測內(nèi)存對應(yīng)的SPD芯片中第12位數(shù)據(jù)為9時(shí),有效rank參數(shù)為001,表征可以訪問待測內(nèi)存的rank0和rank1,即第1至18個內(nèi)存顆粒;當(dāng)待測內(nèi)存對應(yīng)的SPD芯片中第12位數(shù)據(jù)為17時(shí),有效rank參數(shù)為010,表征可以訪問待測內(nèi)存的rank0、rank1和rank2,即第1至第27個內(nèi)存顆粒;當(dāng)待測內(nèi)存對應(yīng)的SPD芯片中第12位數(shù)據(jù)為25時(shí),有效rank參數(shù)為011,表征可以訪問待測內(nèi)存的rank0、rank1、rank2和rank3,即第1至36個內(nèi)存顆粒。
其中,n為選擇的檢測參數(shù)。
步驟207,判斷訪問結(jié)果是否為訪問成功,如果是,則執(zhí)行步驟204;否則,執(zhí)行步驟208。
步驟208,按照由小到大的順序,利用至少一個檢測參數(shù)生成第一數(shù)據(jù)隊(duì)列,以及,利用各個所述待測內(nèi)存顆粒的位置參數(shù)生成第二數(shù)據(jù)隊(duì)列。
舉例來說,第一數(shù)據(jù)隊(duì)列為:[0、1、2、3];第二數(shù)據(jù)隊(duì)列則為:[6、15、24、33]。
步驟209,確定選擇的檢測參數(shù)在第一數(shù)據(jù)隊(duì)列中的第一順序位a。
步驟210,將第二數(shù)據(jù)隊(duì)列中,位于第a個順序位的位置參數(shù)確定為第一參考位置參數(shù)。
步驟211,將第一參考位置參數(shù)對應(yīng)的待測內(nèi)存顆粒確定為故障內(nèi)存顆粒。
步驟208至步驟211中,舉例來說,當(dāng)選擇的檢測參數(shù)為0時(shí),則可確定位置參數(shù)6對應(yīng)的待測內(nèi)存顆粒為故障內(nèi)存顆粒;當(dāng)選擇的檢測參數(shù)為1時(shí),則可確定位置參數(shù)15對應(yīng)的待測內(nèi)存顆粒為故障內(nèi)存顆粒;當(dāng)選擇的檢測參數(shù)為2時(shí),則可確定位置參數(shù)24對應(yīng)的待測內(nèi)存顆粒為故障內(nèi)存顆粒;當(dāng)選擇的檢測參數(shù)為3時(shí),則可確定位置參數(shù)33對應(yīng)的待測內(nèi)存顆粒為故障內(nèi)存顆粒。
下面具體以針對包括36個內(nèi)存顆粒、顆粒位寬為8的一個待測內(nèi)存進(jìn)行檢測為例,且以按照由大到小的順序選擇檢測參數(shù),如圖3所示,具體可以包括如下各個步驟:
步驟301,通過memtest86+檢測待測內(nèi)存,以確定出待測內(nèi)存對應(yīng)的失效數(shù)據(jù)位。
步驟302,從待測內(nèi)存的SPD芯片中讀取配置信息,根據(jù)讀取的配置信息確定待測內(nèi)存的顆粒位寬及內(nèi)存顆粒的數(shù)量。
步驟303,根據(jù)內(nèi)存顆粒的數(shù)量、顆粒位寬及失效數(shù)據(jù)位,確定待測內(nèi)存顆粒的數(shù)量,以及每一個所述待測內(nèi)存顆粒分別對應(yīng)的位置參數(shù)。
步驟301至步驟303的實(shí)現(xiàn)方法,與上述實(shí)施例中步驟201至步驟202的實(shí)現(xiàn)方法相同。
步驟304,根據(jù)每一個檢測參數(shù)的大小,按照由大到小的順序,選擇一個未被選擇過的一個檢測參數(shù)。
步驟305,將待測內(nèi)存的有效rank參數(shù)修改為選擇的檢測參數(shù)。
步驟306,根據(jù)修改后的有效rank參數(shù),依次訪問所述待測內(nèi)存的前n+1個rank,并形成訪問結(jié)果。
本發(fā)明實(shí)施例中,步驟305至步驟306的實(shí)現(xiàn)方法,與上述實(shí)施例中步驟205至步驟206的實(shí)現(xiàn)方法相同。
步驟307,判斷訪問結(jié)果是否為訪問失敗,如果是,則執(zhí)行步驟304;否則,執(zhí)行步驟308。
步驟308,按照由大到小的順序,利用至少一個檢測參數(shù)生成第三數(shù)據(jù)隊(duì)列,以及,利用各個所述待測內(nèi)存顆粒的位置參數(shù)生成第四數(shù)據(jù)隊(duì)列。
舉例來說,第三數(shù)據(jù)隊(duì)列為:[3、2、1、0];第四數(shù)據(jù)隊(duì)列則為:[33、24、15、6]。
步驟309,確定選擇的檢測參數(shù)在第三數(shù)據(jù)隊(duì)列中的第二順序位b。
步驟310,將第四數(shù)據(jù)隊(duì)列中,位于第a-1個順序位的位置參數(shù)確定為第二參考位置參數(shù)。
步驟311,將第二參考位置參數(shù)對應(yīng)的待測內(nèi)存顆粒確定為故障內(nèi)存顆粒。
步驟308至步驟311中,當(dāng)選擇的檢測參數(shù)為0時(shí),則可確定位置參數(shù)15對應(yīng)的待測內(nèi)存顆粒為故障內(nèi)存顆粒;當(dāng)選擇的檢測參數(shù)為1時(shí),則可確定位置參數(shù)24對應(yīng)的待測內(nèi)存顆粒為故障內(nèi)存顆粒;當(dāng)選擇的檢測參數(shù)為2時(shí),則可確定位置參數(shù)33對應(yīng)的待測內(nèi)存顆粒為故障內(nèi)存顆粒。
應(yīng)當(dāng)理解的是,當(dāng)選擇的檢測參數(shù)為0時(shí),對應(yīng)的訪問結(jié)果依然為訪問失敗,那么,則可確定位置參數(shù)6對應(yīng)的待測內(nèi)存顆粒為故障內(nèi)存顆粒。
如圖4所示,本發(fā)明實(shí)施例提供了一種內(nèi)存檢測裝置,包括:
第一確定模塊401,用于確定待測內(nèi)存中對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量,以及確定每一個所述待測內(nèi)存顆粒的位置參數(shù);并根據(jù)所述待測內(nèi)存顆粒的數(shù)量確定至少一個檢測參數(shù);
選擇模塊402,用于根據(jù)每一個檢測參數(shù)的大小,從至少一個檢測參數(shù)中選擇一個未被選擇過的一個檢測參數(shù);
處理模塊403,用于根據(jù)選擇的檢測參數(shù),修改所述待測內(nèi)存的有效訪問區(qū)域;
檢測模塊404,用于根據(jù)修改后的所述有效訪問區(qū)域,訪問所述待測內(nèi)存,并形成訪問結(jié)果;
判斷模塊405,用于判斷所述訪問結(jié)果是否為預(yù)設(shè)訪問結(jié)果,如果是,則觸發(fā)所述選擇模塊;否則,觸發(fā)所述第二確定模塊;
第二確定模塊406,用于根據(jù)選擇的檢測參數(shù),以及每一個所述待測內(nèi)存顆粒的位置參數(shù),確定故障內(nèi)存顆粒。
如圖5所示,本發(fā)明一個實(shí)施例中,所述選擇模塊402,用于根據(jù)每一個檢測參數(shù)的大小,按照由小到大的順序,從至少一個檢測參數(shù)中選擇一個未被選擇過的一個檢測參數(shù);
所述判斷模塊405,用于判斷所述訪問結(jié)果是否為訪問成功;
所述第二確定模塊406,包括:第一構(gòu)建單元4061、第一確定單元4062、第二確定單元4063和第三確定單元4064;其中,
所述第一構(gòu)建單元4061,用于按照由小到大的順序,利用至少一個檢測參數(shù)生成第一數(shù)據(jù)隊(duì)列,以及,利用各個所述待測內(nèi)存顆粒的位置參數(shù)生成第二數(shù)據(jù)隊(duì)列;
所述第一確定單元4062,用于確定選擇的檢測參數(shù)在所述第一數(shù)據(jù)隊(duì)列中的第一順序位a;
所述第二確定單元4063,用于將所述第二數(shù)據(jù)隊(duì)列中,位于第a個順序位的位置參數(shù)確定為第一參考位置參數(shù);
所述第三確定單元4064,用于將所述第一參考位置參數(shù)對應(yīng)的待測內(nèi)存顆粒確定為故障內(nèi)存顆粒。
如圖6所示,本發(fā)明一個實(shí)施例中,所述選擇模塊402,用于根據(jù)每一個檢測參數(shù)的大小,按照由大到小的順序,從至少一個檢測參數(shù)中選擇一個未被選擇過的一個檢測參數(shù);
所述判斷模塊405,用于判斷所述訪問結(jié)果是否為訪問失??;
所述第二確定模塊406,包括:第二構(gòu)建單元4065、第四確定單元4066、第五確定單元4067和第六確定單元4068;其中,
所述第二構(gòu)建單元4065,用于按照由大到小的順序,利用至少一個檢測參數(shù)生成第三數(shù)據(jù)隊(duì)列,以及,利用各個待測內(nèi)存顆粒的位置參數(shù)生成第四數(shù)據(jù)隊(duì)列;
所述第四確定單元4066,用于確定選擇的檢測參數(shù)在所述第三數(shù)據(jù)隊(duì)列中的第二順序位b;
所述第五確定單元4067,用于將所述第四順序隊(duì)列中,位于第b-1個順序位下的位置參數(shù)確定為第二參考位置參數(shù);
所述第六確定單元4068,用于將所述第二參考位置參數(shù)對應(yīng)的待測內(nèi)存顆粒確定為故障內(nèi)存顆粒。
本發(fā)明一個實(shí)施例中,所述第一確定模塊401,包括:第七確定單元(附圖中未示出)和第八確定單元(附圖中未示出);其中,
所述第七確定單元,用于確定待測內(nèi)存對應(yīng)的一個失效數(shù)據(jù)位,以及確定待測內(nèi)存中內(nèi)存顆粒的數(shù)量以及顆粒位寬;
所述第八確定單元,用于根據(jù)所述內(nèi)存顆粒的數(shù)量、所述顆粒位寬及所述失效數(shù)據(jù)位,確定待測內(nèi)存顆粒的數(shù)量,以及每一個所述待測內(nèi)存顆粒分別對應(yīng)的位置參數(shù)。
本發(fā)明一個實(shí)施例中,所述處理模塊403,用于將所述待測內(nèi)存的有效rank參數(shù)修改為所述檢測參數(shù);
所述檢測模塊404,用于根據(jù)所述檢測參數(shù),依次訪問所述待測內(nèi)存的前n+1個rank,其中,n為所述檢測參數(shù)
上述裝置內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實(shí)施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實(shí)施例中的敘述,此處不再贅述。
綜上所述,本發(fā)明各個實(shí)施例至少具有如下有益效果:
1、本發(fā)明一實(shí)施例中,由于對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量即為待測內(nèi)存的rank數(shù)量,同時(shí),需要根據(jù)設(shè)置待測內(nèi)存的有效訪問區(qū)域才能訪問待測內(nèi)存,且訪問待測內(nèi)存的多個rank時(shí)具備設(shè)定的順序;因此,可根據(jù)確定的對應(yīng)同一個失效數(shù)據(jù)位的待測內(nèi)存顆粒的數(shù)量來確定至少一個檢測參數(shù)(比如,待測內(nèi)存顆粒的數(shù)量為2時(shí),即待測內(nèi)存的rank數(shù)量為2時(shí),則可確定出檢測參數(shù)為0和1;在待測內(nèi)存顆粒的數(shù)量為4時(shí),可確定出檢測參數(shù)為0、1、2、3),然后根據(jù)確定的各個檢測參數(shù)的大小,選擇一個未被選擇過的檢測參數(shù),并根據(jù)選擇的檢測參數(shù)修改待測內(nèi)存的有效訪問區(qū)域,即實(shí)現(xiàn)對待測內(nèi)存的有效訪問區(qū)域進(jìn)行限定(比如,限定可訪問的rank數(shù)量,或可訪問的內(nèi)存顆粒數(shù)量),進(jìn)而根據(jù)修改后的有效訪問區(qū)域訪問待測內(nèi)存,并形成訪問結(jié)果;之后,即可根據(jù)形成的訪問結(jié)果,確定是否執(zhí)行根據(jù)選擇的檢測參數(shù)和每一個待測內(nèi)存顆粒分別對應(yīng)的位置參數(shù)確定故障內(nèi)存,直到確定出故障內(nèi)存顆粒為止。綜上可見,本發(fā)明提供的技術(shù)方案中,通過對內(nèi)存的有效訪問區(qū)域進(jìn)行限定,然后根據(jù)限定的有效訪問區(qū)域訪問內(nèi)存,并根據(jù)訪問結(jié)果及對應(yīng)的檢測參數(shù)、各個待測內(nèi)存顆粒的位置參數(shù)確定內(nèi)存的故障內(nèi)存顆粒,可更為準(zhǔn)確的檢測出內(nèi)存的故障內(nèi)存顆粒。
2、本發(fā)明一實(shí)施例中,可以依賴于現(xiàn)有的memtest86+以及RST Pro等檢測工具來對待測內(nèi)存進(jìn)行檢測,以提供本發(fā)明實(shí)施例所需要的待測內(nèi)存中對應(yīng)同一個失效數(shù)據(jù)位的多個待測內(nèi)存顆粒的位置參數(shù),可提高測試效率。
需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個······”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同因素。
最后需要說明的是:以上所述僅為本發(fā)明的較佳實(shí)施例,僅用于說明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。