專利名稱:基于相變存儲器的分頁、ecc校驗及多位預取方法及其結構的制作方法
技術領域:
本發明涉及基于相變存儲器的分頁、ECC校驗及多位預取方法及其結構。
背景技術:
相變存儲器(Phase-change memory,簡稱PCM)是一種新型的非易失性存儲器,其基本成分是以硫系化合物為基礎的相變材料。利用硫系化合物相變材料存儲信息,主要根據硫系化合物在無序(非晶態)與有序(晶態)兩態時差距明顯的電阻值來實現數據存儲的O和I態,其中非晶態的電阻值比晶態的電阻值高出3-4個數量級。硫系化合物能在電流脈沖下出現快速相變,在兩個物理狀態(晶態和非晶態)之間快速轉換,由其構成的相變存儲器也因此表現出了可編程的電氣特性,能夠有效的存儲數據。相變存儲器具有非易失性,支持隨機讀寫。與現有的常用半導體存儲器相比,相變存儲器具有優秀的性能:與SDRAM、SRAM相比,相變存儲器具有非易失性;與閃存相比,其有更高的讀寫速度、更低的功耗和更長的使用壽命。另外,隨著制造工藝的發展,相變存儲器的性能將更加優秀,而SRAM、DRAM和閃存等存儲器的制造工藝已經趨近極限,發展逐漸放緩。在當前的研究和應用中,大容量的存儲設備通常以Nand Flash或者磁盤等為存儲介質,如硬盤和記憶卡等,相變存儲器多被用來替換Nor Flash作為ROM存儲,這主要是應用了相變存儲器的隨機讀寫能力和非易失性,例如三星公司已經在部分手機設計中應用了相變存儲器來替換Nor Flash作為ROM。但相變存儲器具有更高的讀寫速度、更長的使用壽命和更低的工作功耗等優點,這使其能夠更好的取代Nand Flash和磁盤等存儲介質,應用于大容量存儲設備中,并表現更優異的性能。目前基于相變存儲器的各項研究在大容量存儲方面所得突破甚少,相變存儲器應用于大容量存儲設備面臨諸多問題。大容量存儲設備的存儲介質,需要有合適的分頁結構以便于計算機系統對其管理和使用,尤其需要適應于文件系統的最小存儲管理單位——簇,但相變存儲器在存儲原理決定了其硬件結構中并不包含分頁結構,僅僅以容量比較大的塊(Block)的形式劃分。而在目前的各種研究和應用中,作為ROM等存儲設備的相變存儲器并沒有分頁方法,因此使相變存儲器難以應用于大容量存儲設備。應用于大容量存儲設備的存儲介質必須通過分頁管理,比如有IOOG容量的硬盤,(PU和操作系統都不能實現直接管理100G的存儲地址,因為它不能對這100G字節的空閑情況都做標記,因為那樣又需要另外的100G存儲空間來存儲這些信息;它只對存儲設備的頁進行管理,只記錄每一頁是否被使用了。如果100G容量的存儲設備中的頁面積為1K,那只需要100M的容量就可以記錄每一個頁是否被使用了。這是目前的操作系統和文件系統對大容量存儲設備管理的標準方法。傳統的大容量存儲設備都是用NandFlash或者磁性盤片構成的,比如固態硬盤和機械硬盤。這兩種存儲介質都是有更小的存儲單元。比如NandFlash:—塊NandFlash芯片包含了很多個塊,而每個塊又由很多個頁組成,這些頁的大小有512B、1KB、2KB、4KB。這種結構是NandFlash的組成原理所決定的。NandFlash的特性就是以塊為最小單位擦除(NandFlash —旦存入數據就不可再次存入或更改,需要采用擦除操作將已經存儲的數據清空,然后才能再次寫入數據),以頁為最小單位讀寫,即每次讀或者寫操作都只能讀出一頁的數據,或者寫入頁的數據,一頁內的數據可以連續的讀寫,不同頁內的數據不能連續讀寫。這是NandFlash的結構特性,是其內部的存儲陣列本身帶有的特性。磁性盤片同樣具有這種小容量的存儲單元,即扇區,通常容量為512B,這也是其本身的特性。這種小容量的存儲單元,能夠滿足操作系統的需求,構成文件系統簇。而相變存儲器的只是由多個塊構成的,每個塊的容量通常為100K以上,不能滿足操作系統的需求,因此要在每一塊內劃分多個頁。目前的NORFlash同樣不含有頁的概念,不過在構成大容量存儲設備時,NandFlash能夠替代NorFlashJfW NorFlash并不用來做大容量存儲。NandFlash的速度、擦寫壽命、功耗等都遠不如相變存儲器,所以要提升大容量存儲設備的性能,使用相變存儲器替換NandFlash是有效的方法。而目前并沒有可以替代PCM來做大容量存儲設備的具有分頁方法的存儲器。相變存儲器作為半導體存儲器,其工作時會不可避免的出現一些錯誤,從而導致計算機系統中致命的問題。這些錯誤分為兩種,一種是硬件損壞導致的硬件錯誤,這種錯誤只能通過硬件修復來處理;第二種是軟件錯誤,可能因為在數據傳輸或存儲過程中受到電磁干擾或者電壓不穩等因素影響所導致,這類錯誤相對于硬件錯誤而言更容易出現,對存儲設備的穩定性傷害極大,但可以通過對存儲設備的合適管理來大大降低其出現概率。因此,大容量的固態存儲設備都需要一定的錯誤發現和糾正方法,比如奇偶校驗、ECC (ErrorCorrecting Code)校驗和CRC校驗等。其中ECC校驗是閃存固態硬盤等大容量存儲設備最常用的錯誤發現和糾正技術,其采用奇偶校驗的原理,對由多個字節構成的8位列寬矩陣做奇偶校驗并生成一定位數的校驗碼,以實現發現矩陣中兩位錯誤和更改一位錯誤的能力。在大容量存儲中,通常采用對存儲介質某一頁的數據做ECC校驗的方法來確保存儲設備的準確性。在目前的研究中,相變存儲器并未應用于大容量的存儲中,也沒有分頁方法,因此也并沒有適合于相變存儲器的ECC校驗方法,因此相變存儲器的準確性得不到保證。相變存儲器的讀寫速度雖然已經高于閃存,但仍然不能滿足計算機系統對大容量存儲設備的速度需求。在DDR SDRAM系列存儲器中,通過多位預取(prefetch)技術可以成倍提高DDR的讀寫速度,在讀操作時,先從多片相對低速的DRAM中一次取出多個DRAM位寬的數據,然后以更高的速度將這多個位寬的數據以串行的方式通過一個位寬的數據通道依次傳出,寫操作時,則將串行輸入的一個位寬數據流拆分為多個位寬的數據分別存入多片低速DRAM,從而成倍的提高DDR的傳輸速度。這種預取技術根據預取位寬個數不同可以分為2-nprefetch(2位預取)、4_nprefetch (4位預取)、8_nprefetch (8位預取)等,分別應用于DDR1、DDR2、DDR3等。當前的相變存儲器研究和應用中,并不采用多位預取方法,如R0M,因此其速度遠不能滿足高速大容量存儲設備的需求。
發明內容
本發明的目的是為克服上述現有技術的不足,提供了基于相變存儲器的分頁、ECC校驗及多位預取方法及其結構。本發明基于相變存儲器設計了其專用的分頁方法,使其更易于在計算機系統中進行管理,可應用于大容量存儲設備中;并設計了與分頁方法相匹配的ECC校驗方法,以提高相變存儲器的準確性和安全性;同時還將多位預取技術應用于分頁后的相變存儲器,使其能夠提供更高的讀寫速率。為實現上述目的,本發明采用下述技術方案:基于相變存儲器的分頁、ECC校驗及多位預取方法,具體步驟如下:I)分頁步驟,用于實現確定每一頁的面積,進而將相變存儲器中的每一塊劃分為若干個相同大小的連續的頁,并按照包含的地址順序對其編號,作為數據區;同時,在相變存儲器中設定一固定區域作為頁表區,順序存儲每一頁的屬性信息、ECC校驗碼和頁號,每個頁表項固定的指向唯一的一個確定的頁,只有某一頁被更改時,該頁表項才會更改,從而使得頁表區的損耗均衡與數據區一致,便于管理;通過分頁方法,操作系統在管理和使用由相變存儲器構成的大容量存儲設備時,不必像現有的相變存儲器那樣直接面對巨大而繁瑣的地址空間,而是通過管理少量的頁,間接管理相變存儲器所有的存儲單元;2)ECC校驗步驟,用于實現ECC校驗,以頁表區儲存每一頁的ECC校驗碼和使用情況的屬性信息;3)多位預取步驟,用于通過并行η片m bit位寬的相變存儲器,將η片相變存儲器的η個m bit位寬數據總線每次傳輸的數據依次排列,合并為一個m bit位寬的高速串行數據流,并通過上層接口的m bit位寬數據總線依次傳輸,從而實現了相變存儲器數據傳輸速率的提高,同時,預取的位數還約束了相變存儲器的頁面積。所述步驟I)的具體方法是:設相變存儲器的數據位寬為d,頁面積為N Byte,多位預取方法中的預取位數為n,根據ECC校驗的最佳數據矩陣構成將ECC校驗的基本單位確定為a字節的數據,文件系統的對外存的最小存儲管理單位——簇的大小為b Kbyte,根據公式:dXN=b ;N=a* (d + n) e,e為大于等于零的整數;N取符合所述公式的最小值,推算出N的值。操作系統對大容量的存儲設備進行管理和應用時,都是將存儲設備的存儲空間劃分成小容量的最小存儲管理單位。為了便于操作系統通過簇等基本存儲單位對相變存儲器構成的存儲設備進行管理,需要對相變存儲器進行分頁(page),使操作系統的最小存儲管理單位能夠由一個或多個頁組成,這樣可以避免簇等最小存儲管理單位直接面對存儲設備巨大的尋址空間,同時為操作系統對存儲設備的分區提供了硬件基礎。在操作系統中,文件系統等存儲設備管理模塊的最小存儲管理單位大小通常有4KB和8KB等。而ECC校驗方法是對某一連續數據塊進行校驗,這個數據塊的大小將影響到ECC校驗的準確性和存儲器的存儲效率:數據塊太大將降低ECC校驗的準確性,而數據塊太小則需要更多的額外存儲空間來存儲ECC校驗值。因此,合理的ECC校驗數據塊大小為256B或者512B。為了方便對相變存儲器進行ECC校驗,需要將其每頁的大小與ECC校驗數據塊大小匹配;考慮到現有的相變存儲器多為16位數據總線,而ECC校驗的數據塊行位寬為8位,所以相變存儲器的頁容量需要設計為ECC校驗數據塊的兩倍。同時,預取技術主要通過將多片相變存儲器芯片陣列的數據總線并行讀寫來實現,在本發明中通過并行8片16位數據總線的相變存儲器來實現8位預取。為了使相變存儲器的頁面積(page size)能夠適應操作系統的文件系統塊,需要使這8片相變存儲器的頁面積之和小于或等于文件系統塊的大小。已知ECC校驗的最佳數據矩陣構成為256行X8列和512行X8列,即每256字節或512字節的數據作為ECC校驗的基本單位進行一次校驗,而文件系統的對外存的最小存儲管理單位——簇的大小為4Kbyte或8Kbyte,將相變存儲器的頁容量設定為ECC校驗數據塊的兩倍,8片相變存儲器的頁面積之和小于或等于文件系統塊的大小,設分頁方法中每頁的大小為N,N的單位為Byte,約束條件如下:8父#41(或者81(;N=256*2e,e為大于等于零的整數;N取符合所述公式的最小值,從而推算出N的值為512Byte,即相變存儲器的頁面積 page size 為 512Byte。為了管理每一個頁,需要設計一個頁表以確定每個頁的具體地址等信息。同時,相變存儲器具有有限的寫壽命,因此需要設計合適的損耗均衡機制,使每一頁都被以相同的頻率使用,避免部分頁被過于頻繁的使用而過早損壞,從而盡可能的提高相變存儲器的整體使用壽命,因此需要設計一個虛擬頁表,用來存儲每一頁的虛擬頁號,即上層操作系統等授予的頁號。物理頁號(即每一頁的實際頁號)和虛擬頁號之間需要滿足如下映射關系:任意虛擬頁號都能找到唯一與之相對應的物理頁號,即操作系統等通過其已知的某個虛擬頁號,可以訪問唯一一個物理頁。當某一物理頁的數據被改變時,采用區域外更新技術,將這一頁在頁表中標記為廢頁,將其新內容存到另一個新頁中,并將其虛擬頁號更改為原先廢頁的虛擬頁號。在本發明的分頁方法中,相變存儲器中設定一小部分固定空間用來存儲每頁的頁號和屬性信息等,構成一個頁表區。頁表區為每一個頁都保存了一個頁表項,包含若干字節,用來保存每一頁的ECC校驗信息、屬性信息和虛擬頁號;各個頁表項在頁表區中按其所指向的物理頁的地址依次順序排列,因此根據頁表項的地址即可確定其所指向頁的物理地址和物理頁號,頁表項的順序號即為物理頁號。上層操作系統在訪問相變存儲器時會給出一個虛擬頁號,根據這個虛擬頁號,在頁表區中能夠找到其所對應的頁表項,從而確定操作系統所需要的物理頁。同時,每個頁表項只在其所指向的物理頁發生改變時才會回改變,頁表區的更改頻率與數據區的一致,只需控制數據區的損耗均衡就能保證頁表區的損耗均衡,從而解決了以往大容量存儲中頁表區損耗均衡不能統一管理的問題。所述步驟2)的具體方法是:21)將相變存儲器的每個頁分成兩個ECC校驗數據塊分別進行ECC校驗,每個字的高低字節分別作為兩個ECC校驗數據塊的一行,形成兩個8X256的校驗矩陣,并各生成一個22位的校驗碼,在22位校驗碼中,有6位列校驗碼和16位行校驗碼;將ECC校驗矩陣分別生成合適的校驗碼,并在校驗碼中附加標識碼,用來記錄該ECC校驗矩陣的行在相變存儲器數據總線中的位置;當相變存儲器的數據位寬大于8位時(通常為8的倍數),每頁被分成多個ECC校驗矩陣,這多個校驗矩陣復用同一個ECC校驗模塊。添加ECC校驗后,相變存儲器的準確性比現在沒有ECC校驗保護的相變存儲器提高了很多;22)這22位校驗碼存儲時占用三個連續字節,其中三個字節的最高位恒置1,次高位標示該校驗碼的行來源:1標示該校驗碼的行取該頁每個字的高字節,O則標示取自低字節。為了便于管理這些校驗碼,設定校驗碼存儲于的頁表中;23 )每個頁所分成的兩個ECC校驗數據塊由同一個ECC校驗模塊進行校驗,并采用流水線方式依次輪流通過ECC校驗模塊。所述步驟23)中,當16位外部數據通過ECC校驗模塊時,每個字的高字節和低字節依次先后進入ECC校驗模塊,然后在進入相變存儲器時合并為一個字同時進入。所述步驟3)中,多位預取方法是:8片16位相變存儲器并行連接成一個16位存儲陣列,8片相變存儲器的數據總線并發傳輸數據,即構成了 128位的數據總線,同時將這128位數據總線分8次傳給存儲陣列的16位數據總線。上述基于相變存儲器的分頁、ECC檢驗及多位預取方法所采用的硬件結構,包括:分頁模塊,用于實現確定每一頁的面積,進而將相變存儲器中的每一塊劃分為若干個相同大小的連續的頁,并按照包含的地址順序對其編號;同時,在相變存儲器中動態設定一區域作為頁表區,順序存儲每一頁的屬性信息和頁號;ECC校驗模塊,用于實現ECC校驗,以頁表區儲存每一頁的ECC校驗碼和使用情況的屬性信息;多位預取模塊,用于通過并行η片m bit位寬的相變存儲器,將η片相變存儲器的η個m bit位寬數據總線每次傳輸的數據依次排列,合并為一個m bit位寬的高速串行數據流,并通過上層接口的m bit位寬數據總線依次傳輸。本發明的有益效果是,本發明提供了基于相變存儲器的分頁方法,填補了目前對這方面研究的空白,使相變存儲器能夠取代NandFlash應用于高速的大容量存儲設備,解決了相變存儲器沒有合適的頁單位這一問題,同時還提供了相應的ECC校驗方法,有效的提高了相變存儲器的準確性,并應用了多位預取技術來提高相變存儲器的讀寫速度。現有的相變存儲器應用中不采用分頁方法,沒有有效的多位預取方法,數據傳輸速率遠不如本發明。本發明的分頁方法是針對大容量存儲的,是使用相變存儲器替代NandFlash來做大容量存儲,而且,相變存儲器的速度更快、功耗更低、壽命更長,本發明有效解決了相變存儲器在應用于大容量存儲設備時的問題。
圖1是預取方法的流程圖;圖2是相變存儲器的分頁結構圖;圖3是相變存儲器的ECC校驗結構圖;圖4是相變存儲器的多位預取結構圖;圖5是相變存儲器的分頁方法整體結構圖;圖6是頁表區結構示意圖。
具體實施例方式下面結合附圖和實施例對本發明進行進一步的闡述,應該說明的是,下述說明僅是為了解釋本發明,并不對其內容進行限定。基于相變存儲器的分頁、ECC校驗及多位預取方法,具體步驟如下:
I)分頁步驟,用于實現確定每一頁的面積,進而將相變存儲器中的每一塊劃分為若干個相同大小的連續的頁,并按照包含的地址順序對其編號,作為數據區;同時,在相變存儲器中設定一固定區域作為頁表區,順序存儲每一頁的屬性信息、ECC校驗碼和頁號,每個頁表項固定的指向唯一的一個確定的頁,只有某一頁被更改時,該頁表項才會更改,從而使得頁表區的損耗均衡與數據區一致,便于管理;通過分頁方法,操作系統在管理和使用由相變存儲器構成的大容量存儲設備時,不必像現有的相變存儲器那樣直接面對巨大而繁瑣的地址空間,而是通過管理少量的頁,間接管理相變存儲器所有的存儲單元;2)ECC校驗步驟,用于實現ECC校驗,以頁表區儲存每一頁的ECC校驗碼和使用情況的屬性信息;3)多位預取步驟,用于通過并行η片m bit位寬的相變存儲器,將η片相變存儲器的η個m bit位寬數據總線每次傳輸的數據依次排列,合并為一個m bit位寬的高速串行數據流,并通過上層接口的m bit位寬數據總線依次傳輸,從而實現了相變存儲器數據傳輸速率的提高,同時,預取的位數還約束了相變存儲器的頁面積。其結構圖如圖4所示。所述步驟I)的具體方法是:已知ECC校驗的最佳數據矩陣構成為256行X8列和512行X8列,即每256字節或512字節的數據作為ECC校驗的基本單位進行一次校驗,而文件系統的對外存的最小存儲管理單位——簇的大小為4Kbyte或8Kbyte,將相變存儲器的頁容量設定為ECC校驗數據塊的兩倍,8片相變存儲器的頁面積之和小于或等于文件系統塊的大小,設分頁方法中每頁的大小為N,N的單位為Byte,約束條件如下:8父#41(或者81(;N=256*2e,e為大于等于零的整數;N取符合所述公式的最小值,從而推算出N的值為512Byte,即相變存儲器的頁面積 page size 為 512Byte。操作系統對大容量的存儲設備進行管理和應用時,都是將存儲設備的存儲空間劃分成小容量的最小存儲管理單位。為了便于操作系統通過簇等基本存儲單位對相變存儲器構成的存儲設備進行管理,需要對相變存儲器進行分頁(page),使操作系統的最小存儲管理單位能夠由一個或多個頁組成,這樣可以避免簇等最小存儲管理單位直接面對存儲設備巨大的尋址空間,同時為操作系統對存儲設備的分區提供了硬件基礎。在操作系統中,文件系統等存儲設備管理模塊的最小存儲管理單位大小通常有4KB和8KB等。而ECC校驗方法是對某一連續數據塊進行校驗,這個數據塊的大小將影響到ECC校驗的準確性和存儲器的存儲效率:數據塊太大將降低ECC校驗的準確性,而數據塊太小則需要更多的額外存儲空間來存儲ECC校驗值。因此,合理的ECC校驗數據塊大小為256B或者512B。為了方便對相變存儲器進行ECC校驗,需要將其每頁的大小與ECC校驗數據塊大小匹配;考慮到現有的相變存儲器多為16位數據總線,而ECC校驗的數據塊行位寬為8位,所以相變存儲器的頁容量需要設計為ECC校驗數據塊的兩倍。同時,預取技術主要通過將多片相變存儲器芯片陣列的數據總線并行讀寫來實現,在本發明中通過并行8片16位數據總線的相變存儲器來實現8位預取。為了使相變存儲器的頁面積(page size)能夠適應操作系統的文件系統塊,需要使這8片相變存儲器的頁面積之和小于或等于文件系統塊的大小。分頁結構圖如圖2所示。為了管理每一個頁,需要設計一個頁表以確定每個頁的具體地址等信息。同時,相變存儲器具有有限的寫壽命,因此需要設計合適的損耗均衡機制,使每一頁都被以相同的頻率使用,避免部分頁被過于頻繁的使用而過早損壞,從而盡可能的提高相變存儲器的整體使用壽命,因此需要設計一個虛擬頁表,用來存儲每一頁的虛擬頁號,即上層操作系統等授予的頁號。物理頁號(即每一頁的實際頁號)和虛擬頁號之間需要滿足如下映射關系:任意虛擬頁號都能找到唯一與之相對應的物理頁號,即操作系統等通過其已知的某個虛擬頁號,可以訪問唯一一個物理頁。當某一物理頁的數據被改變時,采用區域外更新技術,將這一頁在頁表中標記為廢頁,將其新內容存到另一個新頁中,并將其虛擬頁號更改為原先廢頁的虛擬頁號。在本發明的分頁方法中,相變存儲器中設定一小部分固定空間用來存儲每頁的頁號和屬性信息等,構成一個頁表區。頁表區為每一個頁都保存了一個頁表項,包含若干字節,用來保存每一頁的ECC校驗信息、屬性信息和虛擬頁號;各個頁表項在頁表區中按其所指向的物理頁的地址依次順序排列,因此根據頁表項的地址即可確定其所指向頁的物理地址和物理頁號,頁表項的順序號即為物理頁號。上層操作系統在訪問相變存儲器時會給出一個虛擬頁號,根據這個虛擬頁號,在頁表區中能夠找到其所對應的頁表項,從而確定操作系統所需要的物理頁。同時,每個頁表項只在其所指向的物理頁發生改變時才會回改變,頁表區的更改頻率與數據區的一致,只需控制數據區的損耗均衡就能保證頁表區的損耗均衡,從而解決了以往大容量存儲中頁表區損耗均衡不能統一管理的問題。頁表區結構見圖6。步驟2)中,所述ECC校驗方法的具體方法是: 21)將相變存儲器的每個頁分成兩個ECC校驗數據塊分別進行ECC校驗,參見圖3,每個字的高低字節分別作為兩個ECC校驗數據塊的一行,形成兩個8 X 256的校驗矩陣,并各生成一個22位的校驗碼,在22位校驗碼中,有6位列校驗碼和16位行校驗碼;將ECC校驗矩陣分別生成合適的校驗碼,并在校驗碼中附加標識碼,用來記錄該ECC校驗矩陣的行在相變存儲器數據總線中的位置;當相變存儲器的數據位寬大于8位時(通常為8的倍數),每頁被分成多個ECC校驗矩陣,這多個校驗矩陣復用同一個ECC校驗模塊。添加ECC校驗后,相變存儲器的準確性比現在沒有ECC校驗保護的相變存儲器提高了很多;22)這22位校驗碼存儲時占用三個連續字節,其中三個字節的最高位恒置1,次高位標示該校驗碼的行來源:1標示該校驗碼的行取該頁每個字的高字節,O則標示取自低字節。為了便于管理這些校驗碼,設定校驗碼存儲于的頁表中;23 )每個頁所分成的兩個ECC校驗數據塊由同一個ECC校驗模塊進行校驗,并采用流水線方式依次輪流通過ECC校驗模塊。所述步驟23)中,當16位外部數據通過ECC校驗模塊時,每個字的高字節和低字節依次先后進入ECC校驗模塊,然后在進入相變存儲器時合并為一個字同時進入。所述步驟3)是:8片16位相變存儲器并行連接成一個16位存儲陣列,8片相變存儲器的數據總線并發傳輸數據,即構成了 128位的數據總線,同時將這128位數據總線分8次傳給存儲陣列的16位數據總線。本發明對相變存儲器每個芯片的每一頁生成兩段ECC校驗碼,每段校驗碼能糾正半頁中的一位錯誤,發現兩位錯誤,因此每頁總體而言能夠通過ECC校驗糾正大部分的兩位錯誤,發現大部分的四位錯誤,與當前通用的不加ECC校驗的相變存儲器相比,顯著的提高了安全性和準確性。本發明中還設計了適用于相變存儲器的8位預取技術(8-nprefetch),使以此技術設計的大容量存儲設備能夠實現單片相變存儲器8倍的速度。綜合上述技術,通過FPGA設計相變存儲器的控制器,實現了相變存儲器的分頁方法、ECC方法和多位預取技術。整體結構圖見圖5。上述基于相變存儲器的分頁、ECC檢驗及多位預取方法所采用的硬件結構,包括:分頁模塊,用于實現確定每一頁的面積,進而將相變存儲器中的每一塊劃分為若干個相同大小的連續的頁,并按照包含的地址順序對其編號;同時,在相變存儲器中動態設定一區域作為頁表區,順序存儲每一頁的屬性信息和頁號;ECC校驗模塊,用于實現ECC校驗,以頁表區儲存每一頁的ECC校驗碼和使用情況的屬性信息;多位預取模塊,用于通過并行η片m bit位寬的相變存儲器,將η片相變存儲器的η個m bit位寬數據總線每次傳輸的數據依次排列,合并為一個m bit位寬的高速串行數據流,并通過上層接口的m bit位寬數據總線依次傳輸。上述雖然結合附圖對本發明的具體實施方式
進行了描述,但并非對本發明保護范圍的限制,在本發明的技術方案的基礎上,本領域技術人員不需要付出創造性勞動即可做出的各種修改或變形仍在本發明的保護范圍以內。
權利要求
1.基于相變存儲器的分頁、ECC校驗及多位預取方法,其特征在于,具體步驟如下: 1)分頁步驟,用于實現確定每一頁的面積,進而將相變存儲器中的每一塊劃分為若干個相同大小的連續的頁,并按照包含的地址順序對其編號,作為數據區;同時,在相變存儲器中設定一固定區域作為頁表區,順序存儲每一頁的屬性信息、ECC校驗碼和頁號,每個頁表項固定的指向一個確定的頁,只有某一頁被更改時,該頁表項才會更改,從而使得頁表區的損耗均衡與數據區一致; 2)ECC校驗步驟,用于實現ECC校驗,以頁表區儲存每一頁的ECC校驗碼和使用情況的屬性信息; 3)多位預取步驟,用于通過并行η片mbit位寬的相變存儲器,將η片相變存儲器的η個m bit位寬數據總線每次傳輸的數據依次排列,合并為一個m bit位寬的高速串行數據流,并通過上層接口的m bit位寬數據總線依次傳輸。
2.根據權利要求1所述的基于相變存儲器的分頁、ECC校驗及多位預取方法,其特征在于,所述步驟I)的具體方法是:設相變存儲器的數據位寬為d,頁面積為N Byte,多位預取方法中的預取位數為n ,根據ECC校驗的最佳數據矩陣構成將ECC校驗的基本單位確定為a字節的數據,文件系統的對外存的最小存儲管理單位——簇的大小為b Kbyte,根據公式:dXN=b ; N=a* (d + n) % e為大于等于零的整數; 推算出N的值。
3.根據權利要求1所述的基于相變存儲器的分頁、ECC校驗及多位預取方法,其特征在于,所述步驟2)的具體方法是: 21)將相變存儲器的每個頁分成兩個ECC校驗數據塊分別進行ECC校驗,每個字的高低字節分別作為兩個ECC校驗數據塊的一行,形成兩個8 X 256的校驗矩陣,并各生成一個22位的校驗碼,在22位校驗碼中,有6位列校驗碼和16位行校驗碼; 22)這22位校驗碼存儲時占用三個連續字節,其中三個字節的最高位恒置1,次高位標示該校驗碼的行來源:1標示該校驗碼的行取該頁每個字的高字節,O則標示取自低字節。為了便于管理這些校驗碼,設定校驗碼存儲于的頁表中; 23)每個頁所分成的兩個ECC校驗數據塊由同一個ECC校驗模塊進行校驗,并采用流水線方式依次輪流通過ECC校驗模塊。
4.根據權利要求4所述的基于相變存儲器的分頁、ECC校驗及多位預取方法,其特征在于,所述步驟23)中,當16位外部數據通過ECC校驗模塊時,每個字的高字節和低字節依次先后進入ECC校驗模塊,然后在進入相變存儲器時合并為一個字同時進入。
5.根據權利要求4所述的基于相變存儲器的分頁、ECC校驗及多位預取方法,其特征在于,所述步驟3)中,8片16位相變存儲器并行連接成一個16位存儲陣列,8片相變存儲器的數據總線并發傳輸數據,即構成了 128位的數據總線,同時將這128位數據總線分8次傳給存儲陣列的16位數據總線。
6.上述任一項權利要求所述方法所采用的硬件結構,其特征在于,包括: 分頁模塊,用于實現確定每一頁的面積,進而將相變存儲器中的每一塊劃分為若干個相同大小的連續的頁,并按照包含的地址順序對其編號;同時,在相變存儲器中動態設定一區域作為頁表區,順序存儲每一頁的屬性信息和頁號;ECC校驗模塊,用于實現ECC校驗,以頁表區儲存每一頁的ECC校驗碼和使用情況的屬性信息; 多位預取模塊,用于通過并行η片m bit位寬的相變存儲器,將η片相變存儲器的η個m bit位寬數據總線每次傳輸的數據依次排列,合并為一個m bit位寬的高速串行數據流,并通過上層接口的m bit位寬數據總線依次傳輸。
全文摘要
本發明公開了基于相變存儲器的分頁、ECC校驗及多位預取方法及其結構。本發明基于相變存儲器設計了其專用的分頁方法,使其易于管理并可應用于大容量存儲設備中;設計了與分頁方法相匹配的ECC校驗方法,以提高相變存儲器的準確性和安全性;還將多位預取技術應用于分頁后的相變存儲器,使其讀寫速率更高。具體步驟如下1)分頁步驟確定相變存儲器分頁方法中每一頁的面積,進而將相變存儲器中的每一塊劃分為若干個相同大小的連續的頁,并按照包含的地址順序對其編號;在相變存儲器中動態設定一區域作為頁表區,順序存儲每一頁的屬性信息和頁號;2)ECC校驗步驟;3)多位預取步驟。
文檔編號G06F12/02GK103164343SQ20131006174
公開日2013年6月19日 申請日期2013年2月27日 優先權日2013年2月27日
發明者賈智平, 李新, 劉鵬, 申兆巖 申請人:山東大學