基于隨機(jī)映射的相變內(nèi)存磨損均衡方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種基于隨機(jī)映射的相變內(nèi)存磨損均衡方法及系統(tǒng)。
【背景技術(shù)】
[0002]由于相變內(nèi)存存在寫次數(shù)有限的缺點(diǎn),因此,提升相變內(nèi)存的壽命就成為其能否實(shí)際應(yīng)用的關(guān)鍵技術(shù)。磨損均衡技術(shù)是提升相變內(nèi)存壽命的主要方法之一。
[0003]現(xiàn)有的磨損均衡技術(shù)主要問題是,或者是跟蹤每個(gè)內(nèi)存單元的寫次數(shù),造成大量的存儲(chǔ)空間和性能開銷,或者是內(nèi)存調(diào)整方式存在信息泄露,無法抵御惡意磨損程序的攻擊。
【發(fā)明內(nèi)容】
[0004]針對(duì)現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供一種基于隨機(jī)映射的相變內(nèi)存磨損均衡方法及系統(tǒng),可改進(jìn)相變內(nèi)存磨損均衡效果,達(dá)到提升相變內(nèi)存壽命的目的,同時(shí)對(duì)性能的影響降到最低。
[0005]本發(fā)明提供以下技術(shù)方案:
[0006]第一方面,本發(fā)明提供了一種基于隨機(jī)映射的相變內(nèi)存磨損均衡方法,包括:
[0007]生成一個(gè)內(nèi)存地址隨機(jī)映射表作為當(dāng)前內(nèi)存地址隨機(jī)映射表;所述當(dāng)前內(nèi)存隨機(jī)映射表中有s/M個(gè)表項(xiàng);s為相變內(nèi)存的大小,M為一個(gè)相變內(nèi)存行的大小;
[0008]所述當(dāng)前內(nèi)存地址隨機(jī)映射表用于將邏輯內(nèi)存地址轉(zhuǎn)變?yōu)槲锢韮?nèi)存地址,所述當(dāng)前內(nèi)存地址隨機(jī)映射表的索引值表示邏輯內(nèi)存的行號(hào),所述當(dāng)前內(nèi)存地址隨機(jī)映射表的表項(xiàng)包括物理內(nèi)存的行號(hào)和調(diào)整標(biāo)志位兩個(gè)表項(xiàng);
[0009]當(dāng)發(fā)生內(nèi)存寫操作時(shí),判斷預(yù)先設(shè)置的寫次數(shù)計(jì)數(shù)器是否達(dá)到預(yù)設(shè)的寫次數(shù)閾值,若所述寫次數(shù)計(jì)數(shù)器未達(dá)到預(yù)設(shè)的寫次數(shù)閾值,則判斷所述當(dāng)前內(nèi)存地址隨機(jī)映射表中相應(yīng)表項(xiàng)的調(diào)整標(biāo)志位是否已被設(shè)置;若被設(shè)置,則使用當(dāng)前內(nèi)存地址隨機(jī)映射表的邏輯內(nèi)存地址和物理內(nèi)存地址的映射關(guān)系進(jìn)行地址轉(zhuǎn)換,并將寫次數(shù)計(jì)數(shù)器加I;否則,進(jìn)行內(nèi)存調(diào)整過程,并修改當(dāng)前內(nèi)存地址隨機(jī)映射表中相應(yīng)表項(xiàng)的物理地址值和調(diào)整標(biāo)記位,且將寫次數(shù)計(jì)數(shù)器加I。
[0010]進(jìn)一步地,所述基于隨機(jī)映射的相變內(nèi)存磨損均衡方法還包括:
[0011]當(dāng)發(fā)生內(nèi)存寫操作時(shí),判斷所述寫次數(shù)計(jì)數(shù)器是否達(dá)到預(yù)設(shè)的寫次數(shù)閾值,若所述寫次數(shù)計(jì)數(shù)器達(dá)到預(yù)設(shè)的寫次數(shù)閾值,則進(jìn)行更新操作:
[0012]將當(dāng)前內(nèi)存地址隨機(jī)映射表拷貝到預(yù)先設(shè)置的隨機(jī)映射表中,形成上次內(nèi)存地址隨機(jī)映射表;
[0013]生成所述上次內(nèi)存地址隨機(jī)映射表的反向內(nèi)存地址隨機(jī)映射表;
[0014]生成新的內(nèi)存地址隨機(jī)映射表作為當(dāng)前內(nèi)存地址隨機(jī)映射表;
[0015]將所述寫次數(shù)計(jì)數(shù)器清零;
[0016]其中,所述上次內(nèi)存地址隨機(jī)映射表的反向地址映射表為上次內(nèi)存地址隨機(jī)映射表的索引值和物理內(nèi)存行號(hào)表項(xiàng)互換后形成的映射表。
[0017]進(jìn)一步地,所述進(jìn)行內(nèi)存調(diào)整過程包括:
[0018]根據(jù)邏輯地址查詢當(dāng)前內(nèi)存地址隨機(jī)映射表和上次內(nèi)存地址隨機(jī)映射表,得到映射的當(dāng)前物理地址和上次物理地址;交換當(dāng)前物理地址和上次物理地址中的內(nèi)容,并修改當(dāng)前內(nèi)存地址隨機(jī)映射表中兩個(gè)相應(yīng)表項(xiàng)的物理地址值,設(shè)置它們的調(diào)整標(biāo)志位;
[0019]在上次內(nèi)存地址隨機(jī)映射表的反向地址映射表中查詢上次物理地址對(duì)應(yīng)的邏輯地址,如果該邏輯地址與交換后上次物理地址對(duì)應(yīng)的邏輯地址一致,則完成本次調(diào)整過程;否則,以調(diào)整后邏輯地址與物理地址不一致的內(nèi)存行為開端,循環(huán)對(duì)物理內(nèi)存進(jìn)行調(diào)整,并修改當(dāng)前內(nèi)存地址隨即映射表的調(diào)整標(biāo)志位,直到物理地址中的數(shù)據(jù)與邏輯地址對(duì)應(yīng)的數(shù)據(jù)一致為止。
[0020]進(jìn)一步地,所述基于隨機(jī)映射的相變內(nèi)存磨損均衡方法還包括:
[0021]當(dāng)發(fā)生內(nèi)存讀操作時(shí),判斷所述當(dāng)前內(nèi)存地址隨機(jī)映射表中相應(yīng)表項(xiàng)的調(diào)整標(biāo)志位是否被設(shè)置;若被設(shè)置,則使用當(dāng)前內(nèi)存地址隨機(jī)映射表相應(yīng)表項(xiàng)的邏輯內(nèi)存地址和物理內(nèi)存地址的映射關(guān)系進(jìn)行地址轉(zhuǎn)換;否則,使用上次內(nèi)存地址隨機(jī)映射表相應(yīng)表項(xiàng)的邏輯內(nèi)存地址和物理內(nèi)存地址的映射關(guān)系進(jìn)行地址轉(zhuǎn)換。
[0022]進(jìn)一步地,所述基于隨機(jī)映射的相變內(nèi)存磨損均衡方法還包括:
[0023]將η個(gè)相變內(nèi)存行劃分為一個(gè)區(qū)域,整個(gè)相變內(nèi)存劃分為s/(n*M)個(gè)區(qū)域,若將所述區(qū)域作為內(nèi)存地址隨機(jī)映射的基本單元,則所述當(dāng)前內(nèi)存隨機(jī)映射表中有s/(n*M)個(gè)表項(xiàng)。
[0024]其中,所述寫次數(shù)閾值的大小為所述劃分的區(qū)域個(gè)數(shù)的20倍以上。
[0025]第二方面,本發(fā)明提供了一種基于隨機(jī)映射的相變內(nèi)存架構(gòu)系統(tǒng),包括內(nèi)存地址隨機(jī)映射控制器和內(nèi)存映射表存儲(chǔ)器;
[0026]所述內(nèi)存地址隨機(jī)映射控制器,用于生成一個(gè)內(nèi)存地址隨機(jī)映射表作為當(dāng)前內(nèi)存地址隨機(jī)映射表;所述當(dāng)前內(nèi)存隨機(jī)映射表中有s/M個(gè)表項(xiàng);s為相變內(nèi)存的大小,M為一個(gè)相變內(nèi)存行的大??;所述當(dāng)前內(nèi)存地址隨機(jī)映射表用于將邏輯內(nèi)存地址轉(zhuǎn)變?yōu)槲锢韮?nèi)存地址,所述當(dāng)前內(nèi)存地址隨機(jī)映射表的索引值表示邏輯內(nèi)存的行號(hào),所述當(dāng)前內(nèi)存地址隨機(jī)映射表的表項(xiàng)包括物理內(nèi)存的行號(hào)和調(diào)整標(biāo)志位兩個(gè)表項(xiàng);
[0027]所述內(nèi)存地址隨機(jī)映射控制器,還用于在發(fā)生內(nèi)存寫操作時(shí),判斷預(yù)先設(shè)置的寫次數(shù)計(jì)數(shù)器是否達(dá)到預(yù)設(shè)的寫次數(shù)閾值,在所述寫次數(shù)計(jì)數(shù)器未達(dá)到預(yù)設(shè)的寫次數(shù)閾值時(shí),判斷所述當(dāng)前內(nèi)存地址隨機(jī)映射表中相應(yīng)表項(xiàng)的調(diào)整標(biāo)志位是否被設(shè)置;在所述當(dāng)前內(nèi)存地址隨機(jī)映射表中相應(yīng)表項(xiàng)的調(diào)整標(biāo)志位被設(shè)置時(shí),使用當(dāng)前內(nèi)存地址隨機(jī)映射表的邏輯內(nèi)存地址和物理內(nèi)存地址的映射關(guān)系進(jìn)行地址轉(zhuǎn)換,并將寫次數(shù)計(jì)數(shù)器加I ;在所述當(dāng)前內(nèi)存地址隨機(jī)映射表中相應(yīng)表項(xiàng)的調(diào)整標(biāo)志位未被設(shè)置時(shí),進(jìn)行內(nèi)存調(diào)整過程,并修改當(dāng)前內(nèi)存地址隨機(jī)映射表中相應(yīng)表項(xiàng)的物理地址值和調(diào)整標(biāo)記位,且將寫次數(shù)計(jì)數(shù)器加I;
[0028]所述內(nèi)存映射表存儲(chǔ)器,用于存儲(chǔ)當(dāng)前內(nèi)存地址隨機(jī)映射表。
[0029]進(jìn)一步地,所述內(nèi)存地址隨機(jī)映射控制器還用于在當(dāng)發(fā)生內(nèi)存寫操作時(shí),判斷所述寫次數(shù)計(jì)數(shù)器是否達(dá)到預(yù)設(shè)的寫次數(shù)閾值,在所述寫次數(shù)計(jì)數(shù)器達(dá)到預(yù)設(shè)的寫次數(shù)閾值時(shí),進(jìn)行更新操作:
[0030]將當(dāng)前內(nèi)存地址隨機(jī)映射表拷貝到預(yù)先設(shè)置的隨機(jī)映射表中,形成上次內(nèi)存地址隨機(jī)映射表;
[0031]生成所述上次內(nèi)存地址隨機(jī)映射表的反向內(nèi)存地址隨機(jī)映射表;
[0032]生成新的內(nèi)存地址隨機(jī)映射表作為當(dāng)前內(nèi)存地址隨機(jī)映射表;
[0033]將所述寫次數(shù)計(jì)數(shù)器清零;
[0034]其中,所述上次內(nèi)存地址隨機(jī)映射表的反向地址映射表為上次內(nèi)存地址隨機(jī)映射表的索引值和物理內(nèi)存行號(hào)表項(xiàng)互換后形成的映射表;
[0035]所述內(nèi)存映射表存儲(chǔ)器,還用于存儲(chǔ)所述上次內(nèi)存地址隨機(jī)映射表和所述上次內(nèi)存地址隨機(jī)映射表的反向內(nèi)存地址隨機(jī)映射表。
[0036]進(jìn)一步地,所述內(nèi)存地址隨機(jī)映射控制器還用于當(dāng)發(fā)生內(nèi)存讀操作時(shí),判斷所述當(dāng)前內(nèi)存地址隨機(jī)映射表中相應(yīng)表項(xiàng)的調(diào)整標(biāo)志位是否被設(shè)置;在所述當(dāng)前內(nèi)存地址隨機(jī)映射表中相應(yīng)表項(xiàng)的調(diào)整標(biāo)志位被設(shè)置時(shí),使用當(dāng)前內(nèi)存地址隨機(jī)映射表相應(yīng)表項(xiàng)的邏輯內(nèi)存地址和物理內(nèi)存地址的映射關(guān)系進(jìn)行地址轉(zhuǎn)換;在所述當(dāng)前內(nèi)存地址隨機(jī)映射表中相應(yīng)表項(xiàng)的調(diào)整標(biāo)志位未被設(shè)置時(shí),使用上次內(nèi)存地址隨機(jī)映射表相應(yīng)表項(xiàng)的邏輯內(nèi)存地址和物理內(nèi)存地址的映射關(guān)系進(jìn)行地址轉(zhuǎn)換。
[0037]其中,所述進(jìn)行內(nèi)存調(diào)整過程包括:
[0038]根據(jù)邏輯地址查詢當(dāng)前內(nèi)存地址隨機(jī)映射表和上次內(nèi)存地址隨機(jī)映射表,得到映射的當(dāng)前物理地址和上次物理地址;交換當(dāng)前物理地址和上次物理地址中的內(nèi)容,并修改當(dāng)前內(nèi)存地址隨機(jī)映射表中兩個(gè)相應(yīng)表項(xiàng)的物理地址值,設(shè)置它們的調(diào)整標(biāo)志位;
[0039]在上次內(nèi)存地址隨機(jī)映射表的反向地址映射表中查詢上次物理地址對(duì)應(yīng)的邏輯地址,在該邏輯地址與交換后上次物理地址對(duì)應(yīng)的邏輯地址一致時(shí),結(jié)束本次調(diào)整過程;在該邏輯地址與交換后上次物理地址對(duì)應(yīng)的邏輯地址不一致時(shí),以調(diào)整后邏輯地址與物理地址不一致的內(nèi)存行為開端,循環(huán)對(duì)物理內(nèi)存進(jìn)行調(diào)整,并修改當(dāng)前內(nèi)存地址隨即映射表的調(diào)整標(biāo)志位,直到物理地址中的數(shù)據(jù)與邏輯地址對(duì)應(yīng)的數(shù)據(jù)一致為止。
[0040]其中,所述內(nèi)存映射表存儲(chǔ)器為SDRAM存儲(chǔ)器。
[0041]由上述技術(shù)方案可知,本發(fā)明所述的基于隨機(jī)映射的相變內(nèi)存磨損均衡方法及系統(tǒng),至少具有以下有益效果:將寫操作頻繁的內(nèi)存塊均勻分布到整個(gè)相變內(nèi)存空間,達(dá)到磨損均衡的目的,從而提高相變內(nèi)存的壽命,同時(shí),采用整個(gè)內(nèi)存空間地址隨機(jī)映射機(jī)制,消除了磨損均衡技術(shù)的信息泄露,從而可抵御惡意磨損程序的攻擊。
【附圖說明】
[0042]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0043]圖1是本發(fā)明實(shí)施例一提供的基于隨機(jī)映射的相