一種固態(tài)硬盤及其混合映射方法
【專利摘要】本發(fā)明適用于固態(tài)存儲領域,提供了一種固態(tài)硬盤及其混合映射方法。該混合映射方法包括:根據(jù)閃存芯片的容量和塊大小,建立邏輯塊和物理塊的塊映射表;根據(jù)內存頁框的大小和邏輯頁框在塊內的地址偏移建立基于內存頁框的邏輯頁框的頁框映射表,頁框映射表記錄一個或多個邏輯頁框和一個物理頁的對應關系;接收讀寫操作請求,并將所述讀寫操作請求整合成頁框大小,對讀操作請求進行分裂和對齊,對寫操作請求進行分裂和部分寫。借此,本發(fā)明能使閃存芯片具有較好讀寫性能,減少寫放大,又避免了過大的映射表。
【專利說明】一種固態(tài)硬盤及其混合映射方法
【技術領域】
[0001]本發(fā)明涉及固態(tài)存儲領域,更具體地說是涉及一種固態(tài)硬盤及其混合映射方法?!颈尘凹夹g】
[0002]固態(tài)硬盤在日常生活中應用越來越普遍,固態(tài)硬盤通常包括多個閃存芯片,每個閃存芯片包括一個或多個晶粒,每個晶粒包括多個塊,每個塊中包含多個頁。塊是閃存中最小的最小擦除單位,頁是最小寫入單位。
[0003]固態(tài)硬盤按照所定義的擦除單位(即在擦除操作期間被擦除的數(shù)據(jù)塊尺寸)和所定義的寫單位(即在寫操作期間被寫的數(shù)據(jù)塊尺寸)來操作。在擦除單位和寫單位之間的塊尺寸的差異通常需要使用閃存轉換層(Flash Translation Layer)。FTL本質上是一種地址映射方案,可以使用頁映射、塊映射或混合映射來實現(xiàn)地址映射。頁映射表用于頁映射,也即頁映射表被用于在邏輯頁地址和對應的物理頁地址之間基于頁到頁執(zhí)行映射操作。塊映射表用于塊映射,也即塊映射表用于在邏輯塊地址和對應的物理塊地址之間基于塊到塊執(zhí)行映射操作。混合映射方法本質上使用頁映射和塊映射技術兩者。目前閃存芯片的頁大小越來越大,8K已經(jīng)是主流,16K不久也將會成為主流,而目前最常用的I/O請求大小一般是基于內存管理的頁框大小,為4k。若采用現(xiàn)有映射方法,不利于減小寫放大和映射表的大小,不利于提聞閃存芯片的與入速度。
【發(fā)明內容】
[0004]針對上述的缺陷,本發(fā)明的目的在于提供一種固態(tài)硬盤及其混合映射方法,能使閃存芯片具有較好讀寫性能,減少寫放大,又避免了過大的映射表。
[0005]為了實現(xiàn)上述目的,本發(fā)明提供一種固態(tài)硬盤混合映射方法,包括:
[0006]根據(jù)閃存芯片的容量和塊大小,建立邏輯塊和物理塊的塊映射表;
[0007]根據(jù)內存頁框的大小和邏輯頁框在塊內的地址偏移建立基于內存頁框的邏輯頁框的頁框映射表,所述頁框映射表記錄一個或多個邏輯頁框和一個物理頁的對應關系;
[0008]接收讀寫操作請求,并將所述讀寫操作請求整合成頁框大小,對讀操作請求進行分裂和對齊,對寫操作請求進行分裂和部分寫。
[0009]根據(jù)本發(fā)明的固態(tài)硬盤混合映射方法,對讀操作請求進行分裂和對齊的步驟包括:對所述讀操作請求進行基于頁框大小對齊的分裂操作,小于一個頁框的讀操作請求進行補齊操作,使每個讀操作請求都是基于頁框的大小。
[0010]根據(jù)本發(fā)明的固態(tài)硬盤混合映射方法,對寫操作請求進行分裂和部分寫的步驟包括:對所述寫操作請求進行基于頁框大小對齊的分裂操作,大于頁框大小的寫請求被分裂成以頁框大小的多個小的請求,分裂后小于單個頁框大小的寫請求,進行部分寫入。
[0011]根據(jù)本發(fā)明的固態(tài)硬盤混合映射方法,小于一個頁框的讀操作請求進行補齊操作的步驟之后還包括:將讀取的多余部分丟棄。
[0012]根據(jù)本發(fā)明的固態(tài)硬盤混合映射方法,分裂后小于單個頁框大小的寫請求,進行部分寫入的步驟包括:將整個頁框全部讀出,同時對該頁框的其它讀寫請求進行緩存,完成寫操作以后,再進行相關的讀寫操作。
[0013]本發(fā)明相應提供一種固態(tài)硬盤,包括閃存轉換層、閃存以及內存,所述閃存轉換層包括:
[0014]塊映射表建立模塊,用于根據(jù)閃存芯片的容量和塊大小和建立邏輯塊和物理塊的塊映射表;
[0015]頁框映射表建立模塊,用于根據(jù)內存頁框的大小和邏輯頁框在塊內的地址偏移建立基于內存頁框的邏輯頁框的頁框映射表,所述頁框映射表記錄一個或多個邏輯頁框和一個物理頁的對應關系;
[0016]處理模塊,用于接收讀寫操作請求,并將所述讀寫操作請求整合成頁框大小,對讀操作請求進行分裂和對齊,對寫操作請求進行分裂和部分寫。
[0017]根據(jù)本發(fā)明的固態(tài)硬盤,所述處理模塊還用于對所述讀操作請求進行基于頁框大小對齊的分裂操作,小于一個頁框的讀操作請求進行補齊操作,使每個讀操作請求都是基于頁框的大小。
[0018]根據(jù)本發(fā)明的固態(tài)硬盤,所述處理模塊還用于對所述寫操作請求進行基于頁框大小對齊的分裂操作,大于頁框大小的寫請求被分裂成以頁框大小的多個小的請求,分裂后小于單個頁框大小的寫請求,進行部分寫入。
[0019]根據(jù)本發(fā)明的固態(tài)硬盤,所述處理模塊還用于將讀取的多余部分丟棄。
[0020]根據(jù)本發(fā)明的固態(tài)硬盤,所述處理還模塊還用于在部分寫入時將整個頁框全部讀出,同時對該頁框的其它讀寫請求進行緩存,完成寫操作以后,再進行相關的讀寫操作。
[0021]相對于現(xiàn)有技術,本發(fā)明根據(jù)固態(tài)硬盤運行的系統(tǒng)架構得到內存管理的內存頁框大小(通常為4k),然后根據(jù)該頁框大小和閃存芯片的塊大小做混合映射。由于操作系統(tǒng)中處理的I/O請求大小一般是基于內存頁框大小,而本發(fā)明中建立基于內存頁框大小的頁框映射表,可以提聞i/o性能,進而提聞了整個系統(tǒng)的性能,因此本發(fā)明基于頁框大小進行映射能夠獲得較高的I/o性能和減少寫入放大,并且采用塊映射和基于內存頁框大小的頁框映射兩級映射機制,能夠減少在大容量固態(tài)盤下的過大映射表。從而本發(fā)明能使閃存芯片具有較好讀寫性能,減少寫放大,又避免了過大的映射表。
【專利附圖】
【附圖說明】
[0022]圖1為本發(fā)明固態(tài)硬盤的原理框圖;
[0023]圖2為本發(fā)明一種實施例的固態(tài)硬盤中映射關系的示意圖;
[0024]圖3為本發(fā)明固態(tài)硬盤混合映射方法的流程圖。
【具體實施方式】
[0025]為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0026]如圖1所示,本發(fā)明一種固態(tài)硬盤100,包括閃存轉換層10、閃存芯片20以及內存30,閃存轉換層10包括塊映射表建立模塊11、頁框映射表建立模塊12以及處理模塊13。[0027]塊映射表建立模塊11,用于根據(jù)閃存芯片20容量和的塊大小建立邏輯塊和物理塊的塊映射表。該塊映射表用于在邏輯塊地址和對應的物理塊地址之間基于塊到塊執(zhí)行映射操作。
[0028]頁框映射表建立模塊12,用于根據(jù)內存頁框的大小和邏輯頁框在塊內的地址偏移建立基于內存頁框的邏輯頁框的頁框映射表,所述頁框映射表記錄多個邏輯頁框和一個物理頁的對應關系。該頁框映射表包括了邏輯頁框的地址偏移信息。頁框映射表與塊映射表中每個塊是相關的,本質和現(xiàn)有技術中塊頁通用的塊頁兩級映射是沒有區(qū)別的,只不過現(xiàn)在的頁是基于內存頁框大小的邏輯頁。邏輯頁框與物理頁對應的,一個閃存的頁可能對應一個或者多個邏輯頁框,如該發(fā)明的圖2所示。
[0029]處理模塊13,用于接收讀寫操作請求,并將讀寫操作請求整合成頁框大小,對讀操作請求進行分裂和對齊,對寫操作請求進行分裂和部分寫。
[0030]在閃存轉換層10接收到文件系統(tǒng)發(fā)來的讀操作請求時,對讀操作請求進行基于頁框大小對齊的分裂操作,小于一個頁框的讀操作請求進行補齊操作,使下發(fā)固件的每個讀操作請求都是基于頁框的大小,并將讀取的多余部分丟棄。例如邏輯頁框大小為4k,閃存轉換層接收到3K的讀命令,且該命令基于4k邏輯頁框的首地址對齊,那么把這個讀請求補齊為4k的讀請求,下發(fā)給固件進行讀取,將數(shù)據(jù)返回給上層應用時,把多余讀取的Ik數(shù)據(jù)的內存直接釋放即可。另外,因為補齊以后產(chǎn)生的多段散列表,進行直接內存訪問的時候需要注意。例如:上層應用需要讀取3k數(shù)據(jù),補齊以后讀取的是4k數(shù)據(jù),而多分配的這Ik的內存,需要保證其是可以進行DMA (Direct Memory Access,直接內存訪問)操作的,不是所有分配的內存都可以進行DMA操作。
[0031]對齊就是數(shù)據(jù)在內存中的偏移地址必須是一個字的倍數(shù),以提高讀取數(shù)據(jù)時的性能。對于一些和PCI設備(插在這些PCI插槽上的設備,如聲卡、網(wǎng)卡、MODEM等)交互數(shù)據(jù)時,不按一定的位數(shù)對齊,DMA操作將無法進行。
[0032]在閃存轉換層接收到文件系統(tǒng)發(fā)來的寫操作請求時,對寫操作請求進行基于頁框大小對齊的分裂操作,大于頁框大小的寫請求被分裂成以頁框大小的多個小的請求,分裂后小于單個頁框大小的寫請求,進行部分寫入。部分寫入時將整個頁框全部讀出,同時對該頁框的其它讀寫請求進行緩存,完成寫操作以后,再進行相關的讀寫操作,避免對該頁框的數(shù)據(jù)I/o產(chǎn)生不一致性。例如:例如邏輯頁框大小為4k,閃存轉換層10接收到一個首地址對齊的5k的寫操作,處理模塊13先把該操作分裂成一個4k對齊的寫操作和一個Ik的寫操作,4k的寫操作可以直接下發(fā),Ik的寫操作需要先把基于這個Ik寫操作的首地址的4k數(shù)據(jù)讀到內存中,然后把Ik的數(shù)據(jù)修改這4k數(shù)據(jù)中的Ik數(shù)據(jù),再把數(shù)據(jù)寫到閃存,在這個途中,該閃存的4k數(shù)據(jù)不能被讀寫,避免數(shù)據(jù)的不一致性。對于要對這4k數(shù)據(jù)進行讀寫的請求進行緩存,等這個寫操作返回以后,再進行相關操作,可以有效減少寫放大。
[0033]相對于現(xiàn)有技術,本發(fā)明根據(jù)固態(tài)硬盤運行的系統(tǒng)架構得到內存管理的內存頁框大小(通常為4k),然后根據(jù)該頁框大小和閃存芯片的塊大小做混合映射。由于操作系統(tǒng)中處理的I/O請求大小一般是基于內存頁框大小,而本發(fā)明中建立基于內存頁框大小的頁框映射表,可以提高I/o性能,進而提高了整個系統(tǒng)的性能,對于非映射頁框大小的IO操作,可能要多一些轉換,甚至為了避免數(shù)據(jù)不一致,要做多次IO操作(例如部分寫),因此本發(fā)明基于頁框大小進行映射能夠獲得較高的I/o性能和減少寫入放大,并且采用塊映射和基于內存頁框大小的頁框映射兩級映射機制,能夠減少在大容量固態(tài)盤下的過大映射表。從而本發(fā)明能使閃存芯片具有較好讀寫性能,減少寫放大,又避免了過大的映射表。
[0034]根據(jù)本發(fā)明的一個實施例,假設在通用的X86-64系統(tǒng)中,閃存芯片的頁大小為8k,而內存頁框的大小為4k,這樣兩級映射表首先是塊,然后塊內是基于4k的映射,而不是基于閃存芯片的頁大小進行映射,其映射關系如圖2所示。若閃存轉換層10接收到一個大小5K的讀操作命令和一個大小3K的寫操作命令,5k的讀操作命令會被進行分裂,而3k的寫操作命令會使用部分寫技術,當這些命令下發(fā)到閃存轉換層10時,都會被整合成4K的命令,具體的形式會因為該I/O命令是否是對齊的,比如5K的讀操作命令,可能被整合為2個大小4K的I/O命令,也有可能是3個大小為4K的I/O命令。
[0035]如圖3所示,本發(fā)明相應提供一種固態(tài)硬盤混合映射方法,其通過如圖1所示的固態(tài)硬盤100實現(xiàn),該方法包括:
[0036]步驟S301,根據(jù)閃存芯片的塊大小、容量以及內存頁框大小,建立邏輯塊和物理塊的塊映射表。本步驟通過塊映射表建立模塊11實現(xiàn)。塊映射表用于在邏輯塊地址和對應的物理塊地址之間基于塊到塊執(zhí)行映射操作。
[0037]步驟S302,計算頁框的塊內偏移,根據(jù)頁框的塊內偏移對塊地址映射表中的頁框映射表進行修改,頁框映射表記錄一個邏輯頁框和一個物理頁的對應關系。本步驟通過頁框映射表建立模塊11實現(xiàn)。
[0038]步驟S303,接收讀寫操作請求,并將讀寫操作請求整合成頁框大小,對讀操作請求進行分裂和對齊,對寫操作請求進行分裂和部分寫。本步驟通過處理模塊13實現(xiàn)。
[0039]優(yōu)選的是,步驟S303中,對讀操作請求進行分裂和對齊的步驟包括:對讀操作請求進行基于頁框大小對齊的分裂操作,小于一個頁框的讀操作請求進行補齊操作,使下發(fā)固件的每個讀操作請求都是基于頁框的大小。并且,小于一個頁框的讀操作請求進行補齊操作的步驟之后還包括:將讀取的多余部分丟棄
[0040]優(yōu)選的是,步驟S303中,對寫操作請求進行分裂和部分寫的步驟包括:對寫操作請求進行基于頁框大小對齊的分裂操作,大于頁框大小的寫請求被分裂成以頁框大小的多個小的請求,分裂后小于單個頁框大小的寫請求,進行部分寫入。部分寫入的步驟包括:將整個頁框全部讀出,同時對該頁框的其它讀寫請求進行緩存,完成寫操作以后,再進行相關的讀寫操作。
[0041]綜上所述,相對于現(xiàn)有技術,本發(fā)明根據(jù)固態(tài)硬盤運行的系統(tǒng)架構得到內存管理的內存頁框大小(通常為4k),然后根據(jù)該頁框大小和閃存芯片的塊大小做混合映射。由于操作系統(tǒng)中處理的I/O請求大小一般是基于內存頁框大小,而本發(fā)明中建立基于內存頁框大小的頁框映射表,可以提高I/o性能,進而提高了整個系統(tǒng)的性能,因此本發(fā)明基于頁框大小進行映射能夠獲得較高的I/o性能和減少寫入放大,并且采用塊映射和基于內存頁框大小的頁框映射兩級映射機制,能夠減少在大容量固態(tài)盤下的過大映射表。從而本發(fā)明能使閃存芯片具有較好讀寫性能,減少寫放大,又避免了過大的映射表。
[0042]當然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質的情況下,熟悉本領域的技術人員當可根據(jù)本發(fā)明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的權利要求的保護范圍。
【權利要求】
1.一種固態(tài)硬盤混合映射方法,其特征在于,包括: 根據(jù)閃存芯片的容量和塊大小,建立邏輯塊和物理塊的塊映射表; 根據(jù)內存頁框的大小和邏輯頁框在塊內的地址偏移建立基于內存頁框的邏輯頁框的頁框映射表,所述頁框映射表記錄一個或多個邏輯頁框和一個物理頁的對應關系; 接收讀寫操作請求,并將所述讀寫操作請求整合成頁框大小,對讀操作請求進行分裂和對齊,對寫操作請求進行分裂和部分寫。
2.根據(jù)權利要求1所述的固態(tài)硬盤混合映射方法,其特征在于,對讀操作請求進行分裂和對齊的步驟包括: 對所述讀操作請求進行基于頁框大小對齊的分裂操作,小于一個頁框的讀操作請求進行補齊操作,使每個讀操作請求都是基于頁框的大小。
3.根據(jù)權利要求1所述的固態(tài)硬盤混合映射方法,其特征在于,對寫操作請求進行分裂和部分寫的步驟包括: 對所述寫操作請求進行基于頁框大小對齊的分裂操作,大于頁框大小的寫請求被分裂成以頁框大小的多個小的請求,分裂后小于單個頁框大小的寫請求,進行部分寫入。
4.根據(jù)權利要求2所述的固態(tài)硬盤混合映射方法,其特征在于,小于一個頁框的讀操作請求進行補齊操作的步驟之后還包括: 將讀取的多余部分丟棄。
5.根據(jù)權利要求3所述的固態(tài)硬盤混合映射方法,其特征在于,分裂后小于單個頁框大小的寫請求,進行部分寫 入的步驟包括: 將整個頁框全部讀出,同時對該頁框的其它讀寫請求進行緩存,完成寫操作以后,再進行相關的讀寫操作。
6.一種固態(tài)硬盤,包括閃存轉換層、閃存芯片以及內存,其特征在于,所述閃存轉換層包括: 塊映射表建立模塊,用于根據(jù)閃存芯片的容量和塊大小和建立邏輯塊和物理塊的塊映射表; 頁框映射表建立模塊,用于根據(jù)內存頁框的大小和邏輯頁框在塊內的地址偏移建立基于內存頁框的邏輯頁框的頁框映射表,所述頁框映射表記錄一個或多個邏輯頁框和一個物理頁的對應關系; 處理模塊,用于接收讀寫操作請求,并將所述讀寫操作請求整合成頁框大小,對讀操作請求進行分裂和對齊,對寫操作請求進行分裂和部分寫。
7.根據(jù)權利要求6所述的固態(tài)硬盤,其特征在于,所述處理模塊還用于對所述讀操作請求進行基于頁框大小對齊的分裂操作,小于一個頁框的讀操作請求進行補齊操作,使每個讀操作請求都是基于頁框的大小。
8.根據(jù)權利要求6所述的固態(tài)硬盤,其特征在于,所述處理模塊還用于對所述寫操作請求進行基于頁框大小對齊的分裂操作,大于頁框大小的寫請求被分裂成以頁框大小的多個小的請求,分裂后小于單個頁框大小的寫請求,進行部分寫入。
9.根據(jù)權利要求7所述的固態(tài)硬盤,其特征在于,所述處理模塊還用于將讀取的多余部分丟棄。
10.根據(jù)權利要求8所述的固態(tài)硬盤,其特征在于,所述處理還模塊還用于在部分寫入時將整個頁框全部讀出,同時對該頁框的其它讀寫請求進行緩存,完成寫操作以后,再進行相關的讀寫 操作。
【文檔編號】G06F12/08GK103440206SQ201310316321
【公開日】2013年12月11日 申請日期:2013年7月25日 優(yōu)先權日:2013年7月25日
【發(fā)明者】馮旭剛 申請人:記憶科技(深圳)有限公司