本申請涉及安全控制器技術(shù)領(lǐng)域,具體而言,涉及一種存儲器診斷方法及裝置。
背景技術(shù):
在安全控制器中,要求對隨機存取存儲器(ram)進行診斷,以到達相應(yīng)的安全等級。其中marchc算法常常被用來對ram進行診斷,并具有診斷覆蓋率高和易于實現(xiàn)的特點。但是marchc算法只有在對整個ram一次性的診斷時才能具備診斷覆蓋率高的特點。安全控制器中的ram往往比較大,如果在控制器運行過程中一次性對整個ram進行診斷,就需要比較長的時間,而安全控制器要在特定的響應(yīng)時間內(nèi)執(zhí)行安全控制功能,則無法在一個運行周期內(nèi)對整個ram一次性的進行診斷。為了解決該技術(shù)問題,如圖1所示,現(xiàn)在普遍采用分塊技術(shù)(將ram分為block_0、block_1……block_n-1等n個區(qū)塊),在每個運行周期內(nèi)對其中的一個區(qū)塊進行診斷,經(jīng)過多個運行周期完成對整個ram的診斷。
但是,在對ram分塊并按照區(qū)塊診斷后,由于無法檢測出相鄰的區(qū)塊彼此之間的耦合影響,因此診斷覆蓋率不高。
技術(shù)實現(xiàn)要素:
本申請實施例提供了一種存儲器診斷方法及裝置,以至少解決現(xiàn)有的存儲器診斷方案所存在的診斷覆蓋率不高的問題。
根據(jù)本發(fā)明的一個方面,提供一種存儲器診斷方法,包括:將所述存儲器的空間劃分為多個區(qū)塊;針對所述多個區(qū)塊,選取至少一個邊界區(qū),所述邊界區(qū)中的每一個分別跨越所述多個區(qū)塊中的兩個相鄰區(qū)塊;以及針對所述區(qū)塊和所述邊界區(qū)分別執(zhí)行診斷操作。
根據(jù)本發(fā)明的另一個方面,提供一種存儲器診斷裝置,包括:區(qū)塊劃分模塊,用于將存儲器的空間劃分為多個區(qū)塊;邊界區(qū)選取模塊,用于針對所述多個區(qū)塊,選取至少一個邊界區(qū),所述邊界區(qū)中的每一個分別跨越所述多個區(qū)塊中的兩個相鄰區(qū)塊;以及診斷模塊,用于針對所述區(qū)塊和所述邊界區(qū)分別執(zhí)行診斷操作。
在本申請實施例中,解決了相關(guān)技術(shù)中現(xiàn)有的存儲器診斷方案所存在的診斷覆蓋率不高的問題。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當限定。在附圖中:
圖1是現(xiàn)有技術(shù)中對ram分塊后的示意圖;
圖2是根據(jù)本申請實施例1的存儲器診斷方法的流程圖;
圖3是根據(jù)本申請實施例2的存儲器診斷裝置的示意圖;
圖4是根據(jù)本申請實施例3的存儲器的分塊示意圖;以及
圖5是根據(jù)本申請實施例3的存儲器診斷方法的流程圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請方案,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分的實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當屬于本申請保護的范圍。
需要說明的是,本申請的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的本申請的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或模塊或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或模塊或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或模塊或單元。
實施例1
附圖2示出了根據(jù)本申請實施例1的存儲器診斷方法的流程圖。如圖2所示,該方法包括:
s202:將所述存儲器的空間劃分為多個區(qū)塊;
s204:針對所述多個區(qū)塊,選取至少一個邊界區(qū),所述邊界區(qū)中的每一個分別跨越所述多個區(qū)塊中的兩個相鄰區(qū)塊;以及
s206:針對所述區(qū)塊和所述邊界區(qū)分別執(zhí)行診斷操作。
根據(jù)本申請實施例1的技術(shù)方案,通過針對所述多個區(qū)塊,選取分別跨越所述多個區(qū)塊中的兩個相鄰區(qū)塊的至少一個邊界區(qū),并針對該邊界區(qū)執(zhí)行診斷操作,使得能夠檢測出相鄰區(qū)塊之間的耦合影響,從而能夠克服現(xiàn)有技術(shù)中存在的診斷覆蓋率不高的技術(shù)問題。當然,在本申請實施例1的技術(shù)方案中,對于選取邊界區(qū)的形式不加限制。既可以是針對所有的相鄰區(qū)塊的邊界選取邊界區(qū),也可以只針對部分邊界選取邊界區(qū)。并且對所述區(qū)塊和所述邊界區(qū)執(zhí)行診斷操作的方式也不作限定,既可以將各個區(qū)塊和邊界區(qū)整體地按照存儲器的地址依次執(zhí)行診斷操作,也可以將各個區(qū)塊和邊界區(qū)各自依次執(zhí)行診斷操作,還可以隨機確定執(zhí)行診斷操作的順序。此外,也可以一次性對所有區(qū)塊和分界區(qū)執(zhí)行診斷操作,或者是通過多個周期分別對所述區(qū)塊和分界區(qū)執(zhí)行診斷操作。
可選地,所述選取至少一個邊界區(qū)包括針對所述多個區(qū)塊中所有的彼此相鄰的兩個區(qū)塊,選取對應(yīng)的所述邊界區(qū)。從而,所述診斷方法可以覆蓋存儲器的所有空間,實現(xiàn)全面的診斷。當然該技術(shù)特征并不是本申請的必要技術(shù)特征,本申請也可以只針對部分邊界選取邊界區(qū)。
可選地,通過多個周期對所述存儲器執(zhí)行診斷操作,并且其中在每一個周期中分別對一個所述區(qū)塊或一個所述邊界區(qū)執(zhí)行診斷操作。從而,所述診斷方法可以通過多個周期完成對存儲器的診斷操作,進而適用于大容量的存儲器的診斷。當然本申請的技術(shù)方案不限于此,也可以一次性的對所有區(qū)塊和分界區(qū)執(zhí)行診斷操作。
可選地,針對所述區(qū)塊和所述邊界區(qū)分別執(zhí)行診斷操作包括:在所述多個周期中的第一周期,針對所述多個區(qū)塊中的第一區(qū)塊執(zhí)行診斷操作;在所述多個周期中的第二周期,針對所述至少一個邊界區(qū)中的第一邊界區(qū)執(zhí)行診斷操作,其中所述第一邊界區(qū)跨越所述第一區(qū)塊和與所述第一區(qū)塊相鄰的第二區(qū)塊;以及在所述多個周期中的第三周期,針對所述第二區(qū)塊執(zhí)行診斷操作。從而,可以將各個區(qū)塊和邊界區(qū)整體地按照順序依次執(zhí)行診斷操作,提高了診斷的效率。但是本申請的方法不限于此,也可以將各個區(qū)塊和邊界區(qū)各自依次執(zhí)行診斷操作,還可以隨機確定執(zhí)行診斷操作的順序。
可選地,還包括:在每一個周期中執(zhí)行所述診斷操作之后,如果沒有診斷出存儲器故障則繼續(xù)執(zhí)行其他任務(wù),否則對所述存儲器設(shè)置故障標志。由于安全控制器中的存儲器往往比較大,如果在控制器運行過程中對整個存儲器進行診斷,就需要比較長的時間。從而,本申請的方法可以比避免由于存儲器診斷而導(dǎo)致其他任務(wù)的執(zhí)行被延誤,從而提高了運行的效率。
實施例2
圖3示出了根據(jù)本申請實施例3的存儲器診斷裝置300的示意圖。如圖3所示,所述存儲器診斷裝置300包括:
區(qū)塊劃分模塊301,用于將存儲器的空間劃分為多個區(qū)塊;
邊界區(qū)選取模塊302,用于針對所述多個區(qū)塊,選取至少一個邊界區(qū),所述邊界區(qū)中的每一個分別跨越所述多個區(qū)塊中的兩個相鄰區(qū)塊;以及
診斷模塊303,用于針對所述區(qū)塊和所述邊界區(qū)分別執(zhí)行診斷操作。
可選地,所述邊界區(qū)選取模塊被進一步配置為針對所述多個區(qū)塊中所有的彼此相鄰的兩個區(qū)塊,選取對應(yīng)的所述邊界區(qū)。
可選地,所述診斷模塊進一步配置為通過多個周期對所述存儲器執(zhí)行診斷操作,并且其中在每一個周期中分別對一個所述區(qū)塊或一個所述邊界區(qū)執(zhí)行診斷操作。
可選地,所述診斷模塊進一步配置為:在所述多個周期中的第一周期,針對所述多個區(qū)塊中的第一區(qū)塊執(zhí)行診斷操作;在所述多個周期中的第二周期,針對所述至少一個邊界區(qū)中的第一邊界區(qū)執(zhí)行診斷操作,其中所述第一邊界區(qū)跨越所述第一區(qū)塊和與所述第一區(qū)塊相鄰的第二區(qū)塊;在所述多個周期中的第三周期,針對所述第二區(qū)塊執(zhí)行診斷操作。
可選地,還包括診斷處理模塊,用于所述診斷模塊在每一個周期中執(zhí)行所述診斷操作之后,如果沒有診斷出存儲器故障則繼續(xù)執(zhí)行其他任務(wù),否則對所述存儲器設(shè)置故障標志。
實施例3
下面在實施例3中,將結(jié)合圖4至圖5,詳細說明本申請的技術(shù)方案。
圖4示出了根據(jù)實施例3的方法對存儲器400(例如,ram)進行分塊的示意圖。如圖4所示,本實施例的方法首先將存儲器400的空間劃分為n個區(qū)塊block_0至block_n-1(如實線所示)。從而使得本實例的方法可以分別針對每個區(qū)塊block_0至block_n-1執(zhí)行診斷操作,從而實現(xiàn)對存儲器400的診斷。
但是正如在背景技術(shù)中所述的,如果無法檢測出相鄰的區(qū)塊彼此之間的耦合影響,那么就會導(dǎo)致診斷覆蓋率不高的缺陷。
因此,為了解決該技術(shù)問題,本實施例在上述分塊操作的基礎(chǔ)上。針對相鄰的區(qū)塊的邊界分別選取跨越相鄰的兩個區(qū)塊的n-1個分界區(qū)n_block_0至n_block_n-2(如虛線所示)。為了便于說明,圖4中示出了針對各個區(qū)塊的所有相鄰區(qū)塊的邊界選取了n-1個邊界區(qū)。但是也可以根據(jù)實際的需要針對部分的相鄰區(qū)塊選取邊界區(qū)。
進一步參見圖4,所述存儲器400的空間地址范圍為從addr_0至addr_2n,從而不同區(qū)塊和分界區(qū)分別位于不同的地址范圍內(nèi)。例如區(qū)塊block_0地址范圍為addr_0至addr_2,區(qū)塊block_1的地址范圍為addr_2至addr_5,而分界區(qū)n_block_0的地址范圍為addr_1至addr_3。由此可見,分界區(qū)n_block_0是跨越相鄰的區(qū)塊block_0與block_1而選取的。同樣,分界區(qū)n_bolock_1(地址范圍為addr_4至addr_6)是跨越相鄰的區(qū)域block_1與block_2而選取的;分界區(qū)n_block_n-3是跨越相鄰的區(qū)塊block_n-3和block_n-2而選取的;分界區(qū)n_block_n-2是跨越相鄰的區(qū)塊block_n-2和block_n-1而選取的。
從而,區(qū)塊block_0至block_n-1和分界區(qū)n_block_0至n_block_n-2共同構(gòu)成了彼此交叉的分區(qū)結(jié)構(gòu)。
圖5示出了基于圖4所示的分區(qū)結(jié)構(gòu)對存儲器400進行診斷的方法的流程圖。
如圖5所示,在第一個運行周期中(步驟s502),使用marchc算法對區(qū)塊block_0(地址addr_0至addr_2)進行診斷。并確定是否發(fā)現(xiàn)存儲器故障(步驟s504),如果沒有發(fā)現(xiàn)存儲器故障(否),則繼續(xù)執(zhí)行其他任務(wù)。否則,如果發(fā)現(xiàn)存儲器故障(是),則前進到步驟s518,設(shè)置存儲器故障標志,采取相應(yīng)措施,然后結(jié)束診斷進程。
在第二個運行周期中(步驟s506),使用marchc算法對分界區(qū)n_block_0(地址addr_1至addr_3)進行診斷。并確定是否發(fā)現(xiàn)存儲器故障(步驟s508),如果沒有發(fā)現(xiàn)存儲器故障(否),則繼續(xù)執(zhí)行其他任務(wù)。否則,如果發(fā)現(xiàn)存儲器故障(是),則前進到步驟s518,設(shè)置存儲器故障標志,采取相應(yīng)措施,然后結(jié)束診斷進程。
在第三個運行周期中(步驟s510),使用marchc算法對區(qū)塊block_1(地址addr_2至addr_5)進行診斷。并確定是否發(fā)現(xiàn)存儲器故障(步驟s512),如果沒有發(fā)現(xiàn)存儲器故障(否),則繼續(xù)執(zhí)行其他任務(wù)。否則,如果發(fā)現(xiàn)存儲器故障(是),則前進到步驟s518,設(shè)置存儲器故障標志,采取相應(yīng)措施,然后結(jié)束診斷進程。
依次類推,按照地址順序?qū)Ω鱾€分界區(qū)或區(qū)塊進行診斷并根據(jù)診斷結(jié)果執(zhí)行相應(yīng)的操作。
直到第2n+1個運行周期中(步驟s514),使用marchc算法對區(qū)塊block_n-1(地址addr_2n-2至addr_2n)進行診斷。并確定是否發(fā)現(xiàn)存儲器故障(步驟s516),如果沒有發(fā)現(xiàn)存儲器故障(否),則繼續(xù)執(zhí)行其他任務(wù)然后結(jié)束進程。否則,如果發(fā)現(xiàn)存儲器故障(是),則前進到步驟s518,設(shè)置存儲器故障標志,采取相應(yīng)措施,然后結(jié)束診斷進程。
由此可見,通過本實施例的診斷方法流程,實現(xiàn)了對存儲器的分塊交叉診斷的診斷方法,從而提高了診斷的覆蓋率,改善了存儲器診斷的效果。
上述本申請實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
在本申請的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元或模塊的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或模塊或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,模塊或單元的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元或模塊可以是或者也可以不是物理上分開的,作為單元或模塊顯示的部件可以是或者也可以不是物理單元或模塊,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元或模塊上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元或模塊來實現(xiàn)本實施例方案的目的。
另外,在本申請各個實施例中的各功能單元或模塊可以集成在一個處理單元或模塊中,也可以是各個單元或模塊單獨物理存在,也可以兩個或兩個以上單元或模塊集成在一個單元或模塊中。上述集成的單元或模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元或模塊的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中。基于這樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可為個人計算機、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本申請的優(yōu)選實施方式,應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本申請的保護范圍。