一種優(yōu)化的閃存地址映射方法【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種優(yōu)化的閃存地址映射方法,在基于需求的頁(yè)級(jí)地址映射DFTL方法中,內(nèi)存中維護(hù)了一個(gè)全局轉(zhuǎn)換頁(yè)映射表GTD,同時(shí),在內(nèi)存中使用地址映射緩存CMT,以緩存在轉(zhuǎn)換頁(yè)中頻繁訪問(wèn)的地址映射項(xiàng),其中,緩存的數(shù)據(jù)單元為整個(gè)地址轉(zhuǎn)換頁(yè)。本發(fā)明統(tǒng)一了閃存和緩存中的地址映射信息的粒度,充分利用數(shù)據(jù)的時(shí)間局部性和空間局部性,如短時(shí)間內(nèi)頻繁訪問(wèn)局部數(shù)據(jù),只需訪問(wèn)頁(yè)級(jí)地址映射緩存而不需要訪問(wèn)閃存,同時(shí),當(dāng)某個(gè)轉(zhuǎn)換頁(yè)需要被置換出緩存時(shí),所有更新的地址映射信息能夠一并更新到閃存中,提高了映射信息的利用率。【專(zhuān)利說(shuō)明】一種優(yōu)化的閃存地址映射方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及閃存【
技術(shù)領(lǐng)域:
】,具體涉及一種優(yōu)化的閃存地址映射方法。【
背景技術(shù):
】[0002]隨著閃存技術(shù)的發(fā)展與成熟,閃存存儲(chǔ)器已廣泛應(yīng)用于各類(lèi)存儲(chǔ)系統(tǒng),如U盤(pán)、智能手機(jī)、平板電腦、數(shù)字存儲(chǔ)卡、固態(tài)硬盤(pán)等。與傳統(tǒng)磁盤(pán)存儲(chǔ)器相比,閃存具有讀寫(xiě)性能高、非易失性、低功耗、高密度和良好的抗震性等優(yōu)勢(shì)。因此,閃存已成為移動(dòng)嵌入式設(shè)備的存儲(chǔ)介質(zhì)。然而,閃存也存在一些局限,如“異地更新”和有限的塊擦寫(xiě)次數(shù)。為了解決這些不足并使閃存像傳統(tǒng)塊設(shè)備一樣工作,閃存存儲(chǔ)系統(tǒng)中出現(xiàn)了一種稱(chēng)為閃存轉(zhuǎn)換層(flashtranslat1nlayer,簡(jiǎn)稱(chēng)FTL)的嵌入式軟件,用于處理外部I/O請(qǐng)求及管理閃存。其中,地址映射作為一個(gè)重要組件,負(fù)責(zé)將來(lái)自于文件系統(tǒng)的邏輯地址轉(zhuǎn)換為閃存中的物理地址。因此,如何有效地執(zhí)行地址映射并管理映射信息,成為一個(gè)關(guān)鍵問(wèn)題。[0003]NAND是一種比硬盤(pán)驅(qū)動(dòng)器更好的存儲(chǔ)方案,這在不超過(guò)4GB的低容量應(yīng)用中表現(xiàn)得猶為明顯。隨著人們持續(xù)追求功耗更低、重量更輕和性能更佳的產(chǎn)品。閃存芯片主要由物理塊組成,每個(gè)物理塊分為一定數(shù)量的物理頁(yè):塊是擦寫(xiě)操作的基本單元,而頁(yè)是讀寫(xiě)操作的基本單元。一個(gè)頁(yè)包含了數(shù)據(jù)域和備用域,備用域又稱(chēng)為00B(outofband)。OOB—般用于存儲(chǔ)錯(cuò)誤糾正碼(ECC)和一些自定義信息。[0004]雖然NAND閃存具有諸多優(yōu)勢(shì),但也存在一些局限:首先是“異地更新”,當(dāng)數(shù)據(jù)頁(yè)被寫(xiě)入數(shù)據(jù)后無(wú)法再次更新,直到所屬的整個(gè)塊被擦除。因此,對(duì)同一邏輯地址的不同更新數(shù)據(jù)將被寫(xiě)入不同的物理頁(yè),其中,存放最新數(shù)據(jù)的頁(yè)稱(chēng)為有效頁(yè),而之前舊數(shù)據(jù)頁(yè)稱(chēng)為無(wú)效頁(yè)。因此,閃存中需要地址映射方法轉(zhuǎn)換邏輯地址到最新數(shù)據(jù)所在的物理地址;同時(shí),由于數(shù)據(jù)頁(yè)不斷消耗,需要垃圾回收機(jī)制去拷貝有效頁(yè)并擦除無(wú)效數(shù)據(jù)塊,以重新獲得空數(shù)據(jù)塊。[0005]其次是有限擦寫(xiě)次數(shù)的限制,對(duì)于單級(jí)單元(SLC)NAND閃存,每個(gè)塊的擦寫(xiě)次數(shù)大約是100000次,而對(duì)多級(jí)單元(MLC)NAND閃存,擦寫(xiě)次數(shù)大約只有10000次。如果塊實(shí)際擦寫(xiě)次數(shù)大于限制則可能成為壞塊,無(wú)法再被使用。因此,需要均勻損耗機(jī)制以平衡不同塊的熱度,并選取合適的數(shù)據(jù)塊進(jìn)行垃圾回收。[0006]為了彌補(bǔ)上述缺陷,NAND閃存中使用閃存轉(zhuǎn)換層(FTL)管理閃存。閃存轉(zhuǎn)換層位于文件系統(tǒng)和閃存驅(qū)動(dòng)層之間,對(duì)用戶(hù)完全透明,并為上層文件系統(tǒng)提供塊設(shè)備的操作接□。[0007]地址映射作為閃存轉(zhuǎn)換層的重要組件,負(fù)責(zé)將來(lái)自文件系統(tǒng)的邏輯地址轉(zhuǎn)換為閃存中的物理地址。地址映射方法主要分為3類(lèi):頁(yè)級(jí)映射、塊級(jí)映射和混合映射。[0008]在頁(yè)級(jí)地址映射中,映射信息粒度與數(shù)據(jù)讀寫(xiě)單元一致,都為數(shù)據(jù)頁(yè),因此數(shù)據(jù)請(qǐng)求可以寫(xiě)入閃存的任何數(shù)據(jù)頁(yè)中。同時(shí),頁(yè)級(jí)地址映射能夠延遲垃圾回收觸發(fā)的時(shí)間,也就是說(shuō),直到閃存存儲(chǔ)接近飽和才觸發(fā)垃圾回收,因此能夠獲得更優(yōu)的系統(tǒng)性能。然而頁(yè)級(jí)地址映射方法需要維護(hù)龐大的頁(yè)級(jí)地址映射表,在資源受限的嵌入式系統(tǒng)中難以實(shí)現(xiàn)。塊級(jí)地址映射的映射粒度為數(shù)據(jù)塊,每個(gè)數(shù)據(jù)請(qǐng)求的邏輯地址分為塊號(hào)和塊內(nèi)偏移量,每個(gè)邏輯塊被分配一個(gè)或多個(gè)物理塊,然而由于“異地更新”的限制,已存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)頁(yè)無(wú)法直接更新,因此,塊級(jí)地址映射存在更新沖突,可能觸發(fā)大量的垃圾回收,系統(tǒng)性能較低。在混合映射方法中,物理塊被分為數(shù)據(jù)塊(primaryblock)和日志塊(logblock),數(shù)據(jù)塊中使用塊級(jí)地址映射映射首次寫(xiě)入的數(shù)據(jù),而日志塊利用頁(yè)級(jí)地址映射存儲(chǔ)更新數(shù)據(jù)。雖然混合映射權(quán)衡了系統(tǒng)性能和內(nèi)存開(kāi)銷(xiāo),但是在垃圾回收機(jī)制中需要將數(shù)據(jù)塊和日志塊進(jìn)行合并,可能產(chǎn)生大量的性能開(kāi)銷(xiāo),因此,混合映射方法也沒(méi)有很好地解決性能和內(nèi)存開(kāi)銷(xiāo)的問(wèn)題。[0009]近年來(lái)提出了基于需求的頁(yè)級(jí)地址映射(DFTL),一方面利用頁(yè)級(jí)地址映射方法提供高效的地址轉(zhuǎn)換性能,另一方面,通過(guò)地址映射緩存機(jī)制解決了頁(yè)級(jí)地址映射表產(chǎn)生的大量?jī)?nèi)存開(kāi)銷(xiāo)問(wèn)題。[0010]DFTL中的物理塊被邏輯地分為兩類(lèi):數(shù)據(jù)塊(datablock)和地址轉(zhuǎn)換塊(translat1nblock)。數(shù)據(jù)塊用于存儲(chǔ)數(shù)據(jù),轉(zhuǎn)換塊用于保存頁(yè)級(jí)地址映射表。數(shù)據(jù)塊和轉(zhuǎn)換塊共享閃存的物理空間。每個(gè)地址轉(zhuǎn)換塊中的頁(yè)稱(chēng)為地址轉(zhuǎn)換頁(yè)(translat1npage),每個(gè)頁(yè)包含了一定數(shù)量的邏輯頁(yè)號(hào)到物理頁(yè)號(hào)的頁(yè)級(jí)地址映射項(xiàng)。為定位到最新的轉(zhuǎn)換頁(yè),內(nèi)存中維護(hù)了一個(gè)全局轉(zhuǎn)換頁(yè)映射表(globaltranslat1ndirectory,簡(jiǎn)稱(chēng)GTD)。同時(shí),在內(nèi)存中使用地址映射緩存(cachedmappingtable,簡(jiǎn)稱(chēng)CMT),以緩存在轉(zhuǎn)換頁(yè)中頻繁訪問(wèn)的地址映射項(xiàng)。.地址映射緩存使用LRU算法對(duì)地址映射項(xiàng)進(jìn)行置換。由于內(nèi)存中只維護(hù)GTD和CMT,內(nèi)存開(kāi)銷(xiāo)顯著降低。同時(shí),利用數(shù)據(jù)請(qǐng)求的時(shí)間局部性,保持了高效的地址映射性能。[0011]在基于需求的頁(yè)級(jí)映射方法中,對(duì)地址轉(zhuǎn)換頁(yè)的操作將產(chǎn)生額外的性能開(kāi)銷(xiāo),開(kāi)銷(xiāo)主要來(lái)源于兩個(gè)方面:首先,從閃存的地址轉(zhuǎn)換頁(yè)中提取地址映射項(xiàng)到緩存中將產(chǎn)生轉(zhuǎn)換頁(yè)的讀操作,當(dāng)緩存已滿(mǎn)需要進(jìn)行置換時(shí),置換的更新映射項(xiàng)需要先讀取對(duì)應(yīng)的轉(zhuǎn)換頁(yè),并在更新后寫(xiě)回閃存。因此,緩存未命中時(shí),最好的情況產(chǎn)生I個(gè)讀操作,最壞情況會(huì)產(chǎn)生2個(gè)讀操作和I個(gè)寫(xiě)操作。如圖1所示,假設(shè)數(shù)據(jù)請(qǐng)求的邏輯地址是28,由于緩存未命中,首先訪問(wèn)GTD獲得最新地址轉(zhuǎn)換頁(yè)的地址,然后從內(nèi)存中讀取該頁(yè)(TPl),定位到對(duì)應(yīng)的地址映射項(xiàng)(28,56),最后將其放入地址映射緩存中。當(dāng)CMT置換出地址映射項(xiàng)(112,84)時(shí),由于該映射項(xiàng)在緩存中被更新過(guò),需要首先根據(jù)GTD獲得閃存中的地址轉(zhuǎn)換頁(yè)(TP32),讀取該頁(yè)后更新對(duì)應(yīng)的地址映射項(xiàng),最后寫(xiě)回到新的轉(zhuǎn)換頁(yè)中??梢钥吹剑刂酚成渚彺鏁?huì)帶來(lái)很多地址轉(zhuǎn)換頁(yè)讀寫(xiě)操作,這些操作穿插在處理數(shù)據(jù)請(qǐng)求的過(guò)程中,影響系統(tǒng)性能。[0012]另一方面,性能開(kāi)銷(xiāo)來(lái)源于垃圾回收過(guò)程。當(dāng)數(shù)據(jù)塊被垃圾回收時(shí),所有有效頁(yè)對(duì)應(yīng)的轉(zhuǎn)換頁(yè)都需要更新、如圖2所示,在回收塊中有4個(gè)有效頁(yè)(PPN從10到13),每個(gè)頁(yè)對(duì)應(yīng)于不同的轉(zhuǎn)換頁(yè)(分別為T(mén)P97,TP100,ΤΡ101,ΤΡ103)、在拷貝有效頁(yè)后,所有對(duì)應(yīng)的地址轉(zhuǎn)換頁(yè)也需要被讀取、更新、寫(xiě)回到閃存中(寫(xiě)回后分別為ΤΡ128,ΤΡ129,ΤΡ130,ΤΡ131)。值得注意的是,實(shí)際更新的地址映射信息只有4項(xiàng),卻造成對(duì)應(yīng)4個(gè)轉(zhuǎn)換頁(yè)的更新操作。因此,當(dāng)回收塊中存在很多有效數(shù)據(jù)頁(yè)時(shí),垃圾回收將產(chǎn)生大量的轉(zhuǎn)換頁(yè)更新開(kāi)銷(xiāo)?!?br/>發(fā)明內(nèi)容】[0013]本發(fā)明要解決的技術(shù)問(wèn)題是:總的來(lái)說(shuō),基于需求的頁(yè)級(jí)地址映射方法存在兩個(gè)主要問(wèn)題,首先,地址映射緩存的映射信息利用率較低,在讀取整個(gè)轉(zhuǎn)換頁(yè)后,只緩存其中一個(gè)地址映射項(xiàng)。對(duì)于連續(xù)讀寫(xiě),某個(gè)地址轉(zhuǎn)換頁(yè)可能被重復(fù)多次請(qǐng)求產(chǎn)生大量開(kāi)銷(xiāo)。其次,在處理寫(xiě)請(qǐng)求時(shí),不同邏輯地址的數(shù)據(jù)被連續(xù)寫(xiě)入同一數(shù)據(jù)塊中,在垃圾回收時(shí)將產(chǎn)生大量的轉(zhuǎn)換頁(yè)更新。針對(duì)上述問(wèn)題,本文設(shè)計(jì)了一種優(yōu)化的地址映射方法。[0014]本發(fā)明從基于需求的頁(yè)級(jí)地址映射方法出發(fā),以解決地址映射造成的額外性能開(kāi)銷(xiāo)問(wèn)題。這部分開(kāi)銷(xiāo)主要來(lái)源于地址映射緩存以及閃存中的地址轉(zhuǎn)換頁(yè)。通過(guò)分析這兩個(gè)來(lái)源,設(shè)計(jì)了一種基于轉(zhuǎn)換頁(yè)的緩存機(jī)制、閃存數(shù)據(jù)寫(xiě)入和垃圾回收的完整優(yōu)化方法。[0015]本發(fā)明所采用的技術(shù)方案為:一種優(yōu)化的閃存地址映射方法,在基于需求的頁(yè)級(jí)地址映射(DFTL)方法中,內(nèi)存中維護(hù)了一個(gè)全局轉(zhuǎn)換頁(yè)映射表(globaltranslat1ndirectory,簡(jiǎn)稱(chēng)GTD),同時(shí),在內(nèi)存中使用地址映射緩存(cachedmappingtable,簡(jiǎn)稱(chēng)CMT),以緩存在轉(zhuǎn)換頁(yè)中頻繁訪問(wèn)的地址映射項(xiàng),緩存的數(shù)據(jù)單元為整個(gè)地址轉(zhuǎn)換頁(yè),統(tǒng)一了閃存和緩存中的地址映射信息的粒度,每個(gè)地址轉(zhuǎn)換頁(yè)包含了IMB地址空間的映射信息,如短時(shí)間內(nèi)頻繁訪問(wèn)局部數(shù)據(jù),只需訪問(wèn)頁(yè)級(jí)地址映射緩存而不需要訪問(wèn)閃存;同時(shí),當(dāng)某個(gè)轉(zhuǎn)換頁(yè)需要被置換出緩存時(shí),所有更新的地址映射信息能夠一并更新到閃存中,提高了映射信息的利用率。[0016]所述GTD也是一個(gè)頁(yè)級(jí)地址映射表,負(fù)責(zé)定位閃存中的地址轉(zhuǎn)換頁(yè),在讀取地址轉(zhuǎn)換頁(yè)后,可獲得實(shí)際的地址映射信息,且所述優(yōu)化的閃存地址映射方法利用內(nèi)存中的全局轉(zhuǎn)換頁(yè)映射表和頁(yè)級(jí)地址映射緩存具有相同映射信息粒度,融合兩者的訪問(wèn)過(guò)程,擴(kuò)展了全局轉(zhuǎn)換頁(yè)映射表GTD,增加了緩存索引(cacheindex,簡(jiǎn)稱(chēng)Cl),從GTD中直接定位緩存中的轉(zhuǎn)換頁(yè),使轉(zhuǎn)換頁(yè)映射表直接鏈接到頁(yè)級(jí)映射緩存;當(dāng)有邏輯地址請(qǐng)求時(shí),首先根據(jù)請(qǐng)求的邏輯地址定位到全局轉(zhuǎn)換頁(yè)映射表的項(xiàng),由于每一項(xiàng)的起始邏輯地址是固定的,因此,將邏輯地址除以每個(gè)轉(zhuǎn)換頁(yè)保存的地址映射項(xiàng)數(shù)目即能訪問(wèn)到轉(zhuǎn)換頁(yè)映射表中的項(xiàng),該項(xiàng)維護(hù)了轉(zhuǎn)換頁(yè)在閃存中的物理地址以及緩存索引;如果緩存索引為-1,則表明該轉(zhuǎn)換頁(yè)尚未緩存,需要訪問(wèn)閃存獲取地址映射信息;否則,根據(jù)緩存索引可直接訪問(wèn)緩存的地址映射頁(yè)以獲得請(qǐng)求的物理地址。[0017]通過(guò)本方法提出的新的地址映射訪問(wèn)方式,簡(jiǎn)化了地址映射的訪問(wèn)過(guò)程,將緩存中的連續(xù)或者哈希查找的方式變?yōu)橹苯釉L問(wèn),節(jié)約了緩存訪問(wèn)時(shí)間。[0018]所述優(yōu)化的閃存地址映射方法使用最近最少使用算法(LRU)作為頁(yè)級(jí)地址映射緩存的置換策略,其中,轉(zhuǎn)換頁(yè)的更新次數(shù)也是選擇置換的依據(jù)之一,如果某個(gè)轉(zhuǎn)換頁(yè)在緩存中從未被更新過(guò),它將被優(yōu)先置換出緩存,因?yàn)檫@樣的置換操作不會(huì)產(chǎn)生額外的轉(zhuǎn)換頁(yè)讀寫(xiě)開(kāi)銷(xiāo)。利用緩存中的置換項(xiàng)對(duì)應(yīng)的地址轉(zhuǎn)換頁(yè)的起始地址(startlogicaladdress,簡(jiǎn)稱(chēng)SLA)和全局轉(zhuǎn)換頁(yè)映射表(GTD),以定位閃存中實(shí)際存儲(chǔ)的轉(zhuǎn)換頁(yè)地址,執(zhí)行置換操作。在圖3的例子中,當(dāng)有個(gè)寫(xiě)請(qǐng)求W,49時(shí),PAMC中的第13項(xiàng)轉(zhuǎn)換頁(yè)需要被置換。可以看到,置換時(shí),所有4個(gè)修改后的映射信息能夠一次寫(xiě)入地址轉(zhuǎn)換頁(yè)。[0019]為了進(jìn)一步減少因地址映射信息更新帶來(lái)的轉(zhuǎn)換頁(yè)開(kāi)銷(xiāo),所述方法采用了基于轉(zhuǎn)換頁(yè)的數(shù)據(jù)聚集方法:數(shù)據(jù)寫(xiě)入以其邏輯地址對(duì)應(yīng)的轉(zhuǎn)換頁(yè)作為指導(dǎo),邏輯地址對(duì)應(yīng)于同一轉(zhuǎn)換頁(yè)的數(shù)據(jù)將被寫(xiě)入相同的數(shù)據(jù)塊,因此,垃圾回收時(shí),數(shù)據(jù)塊對(duì)應(yīng)的轉(zhuǎn)換頁(yè)數(shù)量最多為常量1,由此產(chǎn)生的額外地址映射信息更新的開(kāi)銷(xiāo)被降至最低。[0020]為了實(shí)現(xiàn)數(shù)據(jù)聚集方法,所述優(yōu)化的閃存地址映射方法繼續(xù)擴(kuò)展全局轉(zhuǎn)換頁(yè)映射表,在表中的每一項(xiàng)保存了可用數(shù)據(jù)頁(yè)的物理地址(availablepagenumber,簡(jiǎn)稱(chēng)APN),其中,物理地址為-1代表該項(xiàng)尚未分配數(shù)據(jù)塊,同時(shí),使用空塊池(freeblockpool,簡(jiǎn)稱(chēng)FBP)記錄閃存中所有的空數(shù)據(jù)塊,當(dāng)有數(shù)據(jù)請(qǐng)求時(shí),按需分配空數(shù)據(jù)塊給全局轉(zhuǎn)換頁(yè)映射表,在垃圾回收中,擦寫(xiě)后的空塊回收到空塊池,數(shù)據(jù)聚集技術(shù)優(yōu)化了數(shù)據(jù)塊中的數(shù)據(jù)分布,即,每個(gè)數(shù)據(jù)塊中數(shù)據(jù)的邏輯地址限定在對(duì)應(yīng)轉(zhuǎn)換頁(yè)維護(hù)的地址空間范圍內(nèi),由于地址相近的數(shù)據(jù)更容易被一起更新,該方法能夠間接減少垃圾回收時(shí)有效頁(yè)拷貝數(shù)量。[0021]在閃存初始階段,所有空數(shù)據(jù)塊屬于空塊池,全局轉(zhuǎn)換頁(yè)映射表中每項(xiàng)可用數(shù)據(jù)頁(yè)地址都為未分配狀態(tài)(-1),當(dāng)有寫(xiě)數(shù)據(jù)請(qǐng)求時(shí),根據(jù)上文提到的計(jì)算方法定位全局轉(zhuǎn)換頁(yè)映射表的項(xiàng),如果項(xiàng)內(nèi)的APN不為-1,則直接將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的數(shù)據(jù)頁(yè),隨后更新APN為所分配數(shù)據(jù)塊中的下一個(gè)可用數(shù)據(jù)頁(yè),如果數(shù)據(jù)塊已滿(mǎn),則將該地址置為-1;否則,若該轉(zhuǎn)換頁(yè)尚未分配數(shù)據(jù)塊,檢查空塊池中是否存在可用的空數(shù)據(jù)塊,若存在則按需分配并記錄第I個(gè)數(shù)據(jù)頁(yè)的物理地址作為APN,否則調(diào)用垃圾回收獲得新的空數(shù)據(jù)塊。[0022]由于物理塊根據(jù)存儲(chǔ)數(shù)據(jù)類(lèi)型被分為數(shù)據(jù)塊和地址轉(zhuǎn)換塊,相對(duì)應(yīng)地存在兩種垃圾回收:數(shù)據(jù)塊垃圾回收和轉(zhuǎn)換塊垃圾回收.在數(shù)據(jù)塊的垃圾回收中,為了保證每個(gè)數(shù)據(jù)塊在垃圾回收后只對(duì)應(yīng)一個(gè)轉(zhuǎn)換頁(yè),所述優(yōu)化的閃存地址映射方法將基于轉(zhuǎn)換頁(yè)數(shù)據(jù)聚集方法復(fù)用在垃圾回收中,在地址映射中,數(shù)據(jù)請(qǐng)求的發(fā)起者為文件系統(tǒng),而在垃圾回收中為垃圾回收器,兩者具有相似的地址映射過(guò)程,因此方法可以復(fù)用,在數(shù)據(jù)塊的垃圾回收過(guò)程中,當(dāng)垃圾回收器需要拷貝一個(gè)有效頁(yè)時(shí),首先訪問(wèn)全局轉(zhuǎn)換頁(yè)映射以獲得當(dāng)前的可用數(shù)據(jù)頁(yè)的物理地址(APN),如果可用數(shù)據(jù)頁(yè)是存在的(非-1),則直接將有效頁(yè)寫(xiě)入可用數(shù)據(jù)頁(yè);否則,如果當(dāng)前分配的數(shù)據(jù)塊已經(jīng)用完,則使用交換塊(swapblock)作為新分配的數(shù)據(jù)塊存儲(chǔ)有效頁(yè);當(dāng)垃圾回收完成時(shí),擦除后的空數(shù)據(jù)塊作為新的交換塊。[0023]為了平衡數(shù)據(jù)塊的擦寫(xiě)次數(shù)延長(zhǎng)閃存的耐久性,閃存中記錄了每個(gè)數(shù)據(jù)塊的擦寫(xiě)次數(shù),全局轉(zhuǎn)換頁(yè)映射表中能夠維護(hù)數(shù)據(jù)區(qū)域的熱度信息,記錄每個(gè)地址轉(zhuǎn)換頁(yè)對(duì)應(yīng)連續(xù)邏輯空間的訪問(wèn)頻率,對(duì)頻繁訪問(wèn)的項(xiàng)在寫(xiě)指針請(qǐng)求分配時(shí)選擇擦寫(xiě)次數(shù)少的“冷”塊,而對(duì)不頻繁訪問(wèn)的則分配擦寫(xiě)次數(shù)較多的“熱”塊;同樣,在垃圾回收中,選擇擦寫(xiě)次數(shù)較少且無(wú)效頁(yè)較多的數(shù)據(jù)塊作為回收塊進(jìn)行擦寫(xiě);在閃存空閑時(shí)間里,可對(duì)冷、熱數(shù)據(jù)塊進(jìn)行數(shù)據(jù)交換以平衡塊間擦寫(xiě)次數(shù)。[0024]本發(fā)明有益效果:本發(fā)明統(tǒng)一了閃存和緩存中的地址映射信息的粒度,充分利用數(shù)據(jù)的時(shí)間局部性和空間局部性,如短時(shí)間內(nèi)頻繁訪問(wèn)局部數(shù)據(jù),只需訪問(wèn)頁(yè)級(jí)地址映射緩存而不需要訪問(wèn)閃存,同時(shí),當(dāng)某個(gè)轉(zhuǎn)換頁(yè)需要被置換出緩存時(shí),所有更新的地址映射信息能夠一并更新到閃存中,提高了映射信息的利用率。【專(zhuān)利附圖】【附圖說(shuō)明】[0025]圖1為地址映射緩存產(chǎn)生的開(kāi)銷(xiāo);圖2為垃圾回收時(shí)產(chǎn)生的轉(zhuǎn)換頁(yè)操(數(shù)據(jù)塊回收時(shí)的有效頁(yè)拷貝);圖3為垃圾回收時(shí)產(chǎn)生的轉(zhuǎn)換頁(yè)操(數(shù)據(jù)塊回收時(shí)地址轉(zhuǎn)換頁(yè)的更新)圖4為頁(yè)級(jí)地址映射緩;圖5為基于轉(zhuǎn)換頁(yè)的數(shù)據(jù)聚集;圖6為基于轉(zhuǎn)換頁(yè)的數(shù)據(jù)塊垃圾回收;圖7為轉(zhuǎn)換塊的垃圾回收;圖8為實(shí)驗(yàn)中使用的仿真框架。【具體實(shí)施方式】[0026]下面根據(jù)說(shuō)明書(shū)附圖,結(jié)合具體實(shí)施例,對(duì)本發(fā)明進(jìn)一步說(shuō)明:一種優(yōu)化的閃存地址映射方法,在基于需求的頁(yè)級(jí)地址映射(DFTL)方法中,內(nèi)存中維護(hù)了一個(gè)全局轉(zhuǎn)換頁(yè)映射表GTD,同時(shí),在內(nèi)存中使用地址映射緩存CMT,以緩存在轉(zhuǎn)換頁(yè)中頻繁訪問(wèn)的地址映射項(xiàng),緩存的數(shù)據(jù)單元為整個(gè)地址轉(zhuǎn)換頁(yè),統(tǒng)一了閃存和緩存中的地址映射信息的粒度,每個(gè)地址轉(zhuǎn)換頁(yè)包含了IMB地址空間的映射信息,如短時(shí)間內(nèi)頻繁訪問(wèn)局部數(shù)據(jù),只需訪問(wèn)頁(yè)級(jí)地址映射緩存而不需要訪問(wèn)閃存;同時(shí),當(dāng)某個(gè)轉(zhuǎn)換頁(yè)需要被置換出緩存時(shí),所有更新的地址映射信息能夠一并更新到閃存中,提高了映射信息的利用率。[0027]所述GTD也是一個(gè)頁(yè)級(jí)地址映射表,負(fù)責(zé)定位閃存中的地址轉(zhuǎn)換頁(yè),在讀取地址轉(zhuǎn)換頁(yè)后,可獲得實(shí)際的地址映射信息,且所述優(yōu)化的閃存地址映射方法利用內(nèi)存中的全局轉(zhuǎn)換頁(yè)映射表和頁(yè)級(jí)地址映射緩存具有相同映射信息粒度,融合兩者的訪問(wèn)過(guò)程,擴(kuò)展了全局轉(zhuǎn)換頁(yè)映射表GTD,增加了緩存索引(cacheindex,簡(jiǎn)稱(chēng)Cl),從GTD中直接定位緩存中的轉(zhuǎn)換頁(yè),使轉(zhuǎn)換頁(yè)映射表直接鏈接到頁(yè)級(jí)映射緩存;當(dāng)有邏輯地址請(qǐng)求時(shí),首先根據(jù)請(qǐng)求的邏輯地址定位到全局轉(zhuǎn)換頁(yè)映射表的項(xiàng),由于每一項(xiàng)的起始邏輯地址是固定的,因此,將邏輯地址除以每個(gè)轉(zhuǎn)換頁(yè)保存的地址映射項(xiàng)數(shù)目即能訪問(wèn)到轉(zhuǎn)換頁(yè)映射表中的項(xiàng),該項(xiàng)維護(hù)了轉(zhuǎn)換頁(yè)在閃存中的物理地址以及緩存索引;如果緩存索引為-1,則表明該轉(zhuǎn)換頁(yè)尚未緩存,需要訪問(wèn)閃存獲取地址映射信息;否則,根據(jù)緩存索引可直接訪問(wèn)緩存的地址映射頁(yè)以獲得請(qǐng)求的物理地址。[0028]通過(guò)本方法提出的新的地址映射訪問(wèn)方式,簡(jiǎn)化了地址映射的訪問(wèn)過(guò)程,將緩存中的連續(xù)或者哈希查找的方式變?yōu)橹苯釉L問(wèn),節(jié)約了緩存訪問(wèn)時(shí)間。[0029]如圖4所示,為頁(yè)級(jí)地址映射緩存示例,假設(shè)每個(gè)轉(zhuǎn)換頁(yè)能夠存儲(chǔ)6個(gè)地址映射項(xiàng),請(qǐng)求讀數(shù)據(jù)的邏輯地址為36,首先,在全局轉(zhuǎn)換頁(yè)映射表中定位其映射信息項(xiàng),通過(guò)計(jì)算36/6=6定位到映射表中的第6項(xiàng),其轉(zhuǎn)換頁(yè)地址為94,緩存索引為11。由于緩存索引不為-1,可直接訪問(wèn)PAMC的第11項(xiàng)獲得實(shí)際地址映射(36,134),從而得到對(duì)應(yīng)邏輯地址36的物理地址是134。[0030]所述優(yōu)化的閃存地址映射方法使用最近最少使用算法(LRU)作為頁(yè)級(jí)地址映射緩存的置換策略,其中,轉(zhuǎn)換頁(yè)的更新次數(shù)也是選擇置換的依據(jù)之一,如果某個(gè)轉(zhuǎn)換頁(yè)在緩存中從未被更新過(guò),它將被優(yōu)先置換出緩存,因?yàn)檫@樣的置換操作不會(huì)產(chǎn)生額外的轉(zhuǎn)換頁(yè)讀寫(xiě)開(kāi)銷(xiāo)。利用緩存中的置換項(xiàng)對(duì)應(yīng)的地址轉(zhuǎn)換頁(yè)的起始地址(startlogicaladdress,簡(jiǎn)稱(chēng)SLA)和全局轉(zhuǎn)換頁(yè)映射表(GTD),以定位閃存中實(shí)際存儲(chǔ)的轉(zhuǎn)換頁(yè)地址,執(zhí)行置換操作。[0031]在圖4的例子中,當(dāng)有個(gè)寫(xiě)請(qǐng)求為(W,49)時(shí),PAMC中的第13項(xiàng)轉(zhuǎn)換頁(yè)需要被置換,可以看到,置換時(shí),所有4個(gè)修改后的映射信息能夠一次寫(xiě)入地址轉(zhuǎn)換頁(yè)。[0032]為了進(jìn)一步減少因地址映射信息更新帶來(lái)的轉(zhuǎn)換頁(yè)開(kāi)銷(xiāo),所述方法采用了基于轉(zhuǎn)換頁(yè)的數(shù)據(jù)聚集方法:數(shù)據(jù)寫(xiě)入以其邏輯地址對(duì)應(yīng)的轉(zhuǎn)換頁(yè)作為指導(dǎo),邏輯地址對(duì)應(yīng)于同一轉(zhuǎn)換頁(yè)的數(shù)據(jù)將被寫(xiě)入相同的數(shù)據(jù)塊,因此,垃圾回收時(shí),數(shù)據(jù)塊對(duì)應(yīng)的轉(zhuǎn)換頁(yè)數(shù)量最多為常量1,由此產(chǎn)生的額外地址映射信息更新的開(kāi)銷(xiāo)被降至最低。[0033]為了實(shí)現(xiàn)數(shù)據(jù)聚集方法,所述優(yōu)化的閃存地址映射方法繼續(xù)擴(kuò)展全局轉(zhuǎn)換頁(yè)映射表,在表中的每一項(xiàng)保存了可用數(shù)據(jù)頁(yè)的物理地址(availablepagenumber,簡(jiǎn)稱(chēng)APN),其中,物理地址為-1代表該項(xiàng)尚未分配數(shù)據(jù)塊,同時(shí),使用空塊池(freeblockpool,簡(jiǎn)稱(chēng)FBP)記錄閃存中所有的空數(shù)據(jù)塊,當(dāng)有數(shù)據(jù)請(qǐng)求時(shí),按需分配空數(shù)據(jù)塊給全局轉(zhuǎn)換頁(yè)映射表,在垃圾回收中,擦寫(xiě)后的空塊回收到空塊池,數(shù)據(jù)聚集技術(shù)優(yōu)化了數(shù)據(jù)塊中的數(shù)據(jù)分布,即,每個(gè)數(shù)據(jù)塊中數(shù)據(jù)的邏輯地址限定在對(duì)應(yīng)轉(zhuǎn)換頁(yè)維護(hù)的地址空間范圍內(nèi),由于地址相近的數(shù)據(jù)更容易被一起更新,該方法能夠間接減少垃圾回收時(shí)有效頁(yè)拷貝數(shù)量.在閃存初始階段,所有空數(shù)據(jù)塊屬于空塊池,全局轉(zhuǎn)換頁(yè)映射表中每項(xiàng)可用數(shù)據(jù)頁(yè)地址都為未分配狀態(tài)(-1),當(dāng)有寫(xiě)數(shù)據(jù)請(qǐng)求時(shí),根據(jù)上文提到的計(jì)算方法定位全局轉(zhuǎn)換頁(yè)映射表的項(xiàng),如果項(xiàng)內(nèi)的APN不為-1,則直接將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的數(shù)據(jù)頁(yè),隨后更新APN為所分配數(shù)據(jù)塊中的下一個(gè)可用數(shù)據(jù)頁(yè),如果數(shù)據(jù)塊已滿(mǎn),則將該地址置為-1;否則,若該轉(zhuǎn)換頁(yè)尚未分配數(shù)據(jù)塊,檢查空塊池中是否存在可用的空數(shù)據(jù)塊,若存在則按需分配并記錄第I個(gè)數(shù)據(jù)頁(yè)的物理地址作為APN,否則調(diào)用垃圾回收獲得新的空數(shù)據(jù)塊。[0034]如圖5所示,為數(shù)據(jù)聚集示例,假設(shè)每個(gè)塊中包含4個(gè)物理頁(yè),每個(gè)轉(zhuǎn)換頁(yè)能保存6個(gè)地址映射項(xiàng)。對(duì)于邏輯地址36的寫(xiě)請(qǐng)求,首先計(jì)算其全局轉(zhuǎn)換頁(yè)映射表中的項(xiàng)為36/6=6,然后得到可用數(shù)據(jù)頁(yè)的地址(APN)為22。因此,數(shù)據(jù)D能夠直接寫(xiě)入到數(shù)據(jù)塊5的數(shù)據(jù)頁(yè)22中。寫(xiě)入后,將可用數(shù)據(jù)頁(yè)地址更新為23。對(duì)于另一個(gè)邏輯地址為49的寫(xiě)請(qǐng)求,計(jì)算得到第8項(xiàng)的APN為-1,說(shuō)明該轉(zhuǎn)換頁(yè)尚未分配數(shù)據(jù)塊,因此從空塊池獲得一個(gè)空數(shù)據(jù)塊,然后將數(shù)據(jù)E寫(xiě)入空塊的第I個(gè)數(shù)據(jù)頁(yè)(數(shù)據(jù)頁(yè)32)中,最后,APN更新為下一個(gè)數(shù)據(jù)頁(yè)地址33。可以看到,對(duì)于數(shù)據(jù)塊5,根據(jù)數(shù)據(jù)聚集方法,對(duì)應(yīng)的地址映射信息全部屬于轉(zhuǎn)換頁(yè)TP48。這里,TP48已經(jīng)在緩存中,因此可直接在緩存中更新地址映射信息。新的空塊也只對(duì)應(yīng)轉(zhuǎn)換頁(yè)TP65。這樣,每個(gè)數(shù)據(jù)塊最多只對(duì)應(yīng)I個(gè)地址轉(zhuǎn)換頁(yè),從而將轉(zhuǎn)換頁(yè)的更新開(kāi)銷(xiāo)降低至最少。[0035]由于物理塊根據(jù)存儲(chǔ)數(shù)據(jù)類(lèi)型被分為數(shù)據(jù)塊和地址轉(zhuǎn)換塊,相對(duì)應(yīng)地存在兩種垃圾回收:數(shù)據(jù)塊垃圾回收和轉(zhuǎn)換塊垃圾回收.在數(shù)據(jù)塊的垃圾回收中,為了保證每個(gè)數(shù)據(jù)塊在垃圾回收后只對(duì)應(yīng)一個(gè)轉(zhuǎn)換頁(yè),所述優(yōu)化的閃存地址映射方法將基于轉(zhuǎn)換頁(yè)數(shù)據(jù)聚集方法復(fù)用在垃圾回收中,在地址映射中,數(shù)據(jù)請(qǐng)求的發(fā)起者為文件系統(tǒng),而在垃圾回收中為垃圾回收器,兩者具有相似的地址映射過(guò)程,因此方法可以復(fù)用,在數(shù)據(jù)塊的垃圾回收過(guò)程中,當(dāng)垃圾回收器需要拷貝一個(gè)有效頁(yè)時(shí),首先訪問(wèn)全局轉(zhuǎn)換頁(yè)映射以獲得當(dāng)前的可用數(shù)據(jù)頁(yè)的物理地址(APN),如果可用數(shù)據(jù)頁(yè)是存在的(非-1),則直接將有效頁(yè)寫(xiě)入可用數(shù)據(jù)頁(yè);否則,如果當(dāng)前分配的數(shù)據(jù)塊已經(jīng)用完,則使用交換塊(swapblock)作為新分配的數(shù)據(jù)塊存儲(chǔ)有效頁(yè);當(dāng)垃圾回收完成時(shí),擦除后的空數(shù)據(jù)塊作為新的交換塊。[0036]如圖6所示為數(shù)據(jù)塊垃圾回收的示例,選中的回收數(shù)據(jù)塊中有4個(gè)有效數(shù)據(jù)頁(yè)(Q,B,D,E),當(dāng)拷貝有效頁(yè)Q時(shí),方法首先定位到對(duì)應(yīng)的GTD項(xiàng),獲得APN為68,因此,Q可以直接拷貝到數(shù)據(jù)塊23的數(shù)據(jù)頁(yè)68中;拷貝后,APN從68更新到69。同理,對(duì)于數(shù)據(jù)B也可以拷貝到數(shù)據(jù)頁(yè)69中。此時(shí),數(shù)據(jù)塊23已經(jīng)寫(xiě)滿(mǎn),所以APN被置為-1。當(dāng)下一個(gè)數(shù)據(jù)拷貝請(qǐng)求D到來(lái)時(shí),分配交換塊給GTD項(xiàng),因此,D和E都寫(xiě)入交換塊中,APN也更新為交換塊中下一個(gè)可用的數(shù)據(jù)頁(yè)地址。最終,,數(shù)據(jù)塊23擦除后將成為新的交換塊,為下一次垃圾回收服務(wù)。對(duì)地址轉(zhuǎn)換塊的垃圾回收,閃存中維護(hù)一個(gè)當(dāng)前可用的地址轉(zhuǎn)換頁(yè),相當(dāng)于統(tǒng)一的寫(xiě)指針,因此,轉(zhuǎn)換頁(yè)將被按順序?qū)懭氲疆?dāng)前地址轉(zhuǎn)換塊中。當(dāng)閃存中無(wú)可分配的地址轉(zhuǎn)換塊時(shí)將觸發(fā)垃圾回收,當(dāng)垃圾回收時(shí),回收塊中的有效轉(zhuǎn)換頁(yè)將拷貝到寫(xiě)指針指向的可用地址轉(zhuǎn)換頁(yè)。同時(shí),如果地址轉(zhuǎn)換頁(yè)位于緩存,則直接從緩存寫(xiě)入當(dāng)前轉(zhuǎn)換塊,減少了對(duì)有效轉(zhuǎn)換頁(yè)的讀操作和將來(lái)緩存產(chǎn)生的轉(zhuǎn)換頁(yè)更新操作。最后,頁(yè)級(jí)地址映射緩存的置換將相近熱度的轉(zhuǎn)換頁(yè)寫(xiě)回相同的轉(zhuǎn)換塊,間接地降低垃圾回收時(shí)轉(zhuǎn)換塊中的有效頁(yè)的數(shù)目,從而降低了轉(zhuǎn)換頁(yè)的更新開(kāi)銷(xiāo)。[0037]如圖7所示為地址轉(zhuǎn)換塊的垃圾回收,選中回收的地址轉(zhuǎn)換塊包含ΤΡ0,TP2,TP4這3個(gè)地址轉(zhuǎn)換頁(yè),這3個(gè)地址轉(zhuǎn)換頁(yè)被拷貝到當(dāng)前地址轉(zhuǎn)換塊中(TPPN:146?148)??截愡^(guò)程中,如果存在緩存,則直接從緩存寫(xiě)入當(dāng)前地址轉(zhuǎn)換塊,拷貝后對(duì)應(yīng)的GTD也同時(shí)更新,以確保能夠定位到最新的地址轉(zhuǎn)換頁(yè)。[0038]為了平衡數(shù)據(jù)塊的擦寫(xiě)次數(shù)延長(zhǎng)閃存的耐久性,閃存中記錄了每個(gè)數(shù)據(jù)塊的擦寫(xiě)次數(shù),全局轉(zhuǎn)換頁(yè)映射表中能夠維護(hù)數(shù)據(jù)區(qū)域的熱度信息,記錄每個(gè)地址轉(zhuǎn)換頁(yè)對(duì)應(yīng)連續(xù)邏輯空間的訪問(wèn)頻率,對(duì)頻繁訪問(wèn)的項(xiàng)在寫(xiě)指針請(qǐng)求分配時(shí)選擇擦寫(xiě)次數(shù)少的“冷”塊,而對(duì)不頻繁訪問(wèn)的則分配擦寫(xiě)次數(shù)較多的“熱”塊;同樣,在垃圾回收中,選擇擦寫(xiě)次數(shù)較少且無(wú)效頁(yè)較多的數(shù)據(jù)塊作為回收塊進(jìn)行擦寫(xiě);在閃存空閑時(shí)間里,可對(duì)冷、熱數(shù)據(jù)塊進(jìn)行數(shù)據(jù)交換以平衡塊間擦寫(xiě)次數(shù)。[0039]在實(shí)施中,使用一系列的基準(zhǔn)數(shù)據(jù)集仿真評(píng)估本文方法的有效性.本文將提出的方法(簡(jiǎn)稱(chēng)0ΑΤ)和一種代表性的基于需求的頁(yè)級(jí)映射方法(DFTL)進(jìn)行了實(shí)驗(yàn)比較。實(shí)驗(yàn)中使用4個(gè)性能度量指標(biāo):緩存命中率、轉(zhuǎn)換頁(yè)操作數(shù)、系統(tǒng)響應(yīng)時(shí)間和塊擦除次數(shù)。[0040]如圖8所示為實(shí)驗(yàn)仿真平臺(tái)框架,其中,DiskMon為磁盤(pán)驅(qū)動(dòng)數(shù)據(jù)跟蹤器,收集訪問(wèn)磁盤(pán)的I/O數(shù)據(jù)請(qǐng)求;DiskSim是一個(gè)廣泛用于工業(yè)界的成熟磁盤(pán)仿真框架;FlashSim作為DiskSim的一個(gè)擴(kuò)展組件,用于仿真閃存芯片的管理方法和基本操作。在仿真實(shí)驗(yàn)中,本實(shí)驗(yàn)在FlashSim中實(shí)現(xiàn)了DFTL和本文的地址映射方法,配置了一個(gè)32GB的NAND閃存存儲(chǔ)系統(tǒng)。實(shí)驗(yàn)采用實(shí)際I/O數(shù)據(jù)請(qǐng)求研究不同地址映射方法對(duì)性能的影響。實(shí)驗(yàn)中,使用一系列基準(zhǔn)數(shù)據(jù)集仿真評(píng)估本文方法,證明文本方法能夠顯著減少轉(zhuǎn)換頁(yè)操作并提升了系統(tǒng)性能?!緳?quán)利要求】1.一種優(yōu)化的閃存地址映射方法,在基于需求的頁(yè)級(jí)地址映射DFTL方法中,內(nèi)存中維護(hù)了一個(gè)全局轉(zhuǎn)換頁(yè)映射表GTD,同時(shí),在內(nèi)存中使用地址映射緩存CMT,以緩存在轉(zhuǎn)換頁(yè)中頻繁訪問(wèn)的地址映射項(xiàng),其特征在于:緩存的數(shù)據(jù)單元為整個(gè)地址轉(zhuǎn)換頁(yè)。2.根據(jù)權(quán)利要求1所述一種優(yōu)化的閃存地址映射方法,其特征在于:全局轉(zhuǎn)換頁(yè)映射表GTD也是一個(gè)頁(yè)級(jí)地址映射表,負(fù)責(zé)定位閃存中的地址轉(zhuǎn)換頁(yè),在讀取地址轉(zhuǎn)換頁(yè)后,可獲得實(shí)際的地址映射信息,且所述優(yōu)化的閃存地址映射方法利用內(nèi)存中的全局轉(zhuǎn)換頁(yè)映射表和頁(yè)級(jí)地址映射緩存具有相同映射信息粒度,融合兩者的訪問(wèn)過(guò)程,擴(kuò)展了全局轉(zhuǎn)換頁(yè)映射表GTD,增加了緩存索引Cl,從全局轉(zhuǎn)換頁(yè)映射表GTD中直接定位緩存中的轉(zhuǎn)換頁(yè),使轉(zhuǎn)換頁(yè)映射表直接鏈接到頁(yè)級(jí)映射緩存;當(dāng)有邏輯地址請(qǐng)求時(shí),首先根據(jù)請(qǐng)求的邏輯地址定位到全局轉(zhuǎn)換頁(yè)映射表的項(xiàng),由于每一項(xiàng)的起始邏輯地址是固定的,因此,將邏輯地址除以每個(gè)轉(zhuǎn)換頁(yè)保存的地址映射項(xiàng)數(shù)目即能訪問(wèn)到轉(zhuǎn)換頁(yè)映射表中的項(xiàng),該項(xiàng)維護(hù)了轉(zhuǎn)換頁(yè)在閃存中的物理地址以及緩存索引;如果緩存索引為-1,則表明該轉(zhuǎn)換頁(yè)尚未緩存,需要訪問(wèn)閃存獲取地址映射信息;否則,根據(jù)緩存索引可直接訪問(wèn)緩存的地址映射頁(yè)以獲得請(qǐng)求的物理地址。3.根據(jù)權(quán)利要求1或2所述一種優(yōu)化的閃存地址映射方法,其特征在于:所述優(yōu)化的閃存地址映射方法使用最近最少使用算法LRU作為頁(yè)級(jí)地址映射緩存的置換策略,其中,轉(zhuǎn)換頁(yè)的更新次數(shù)也是選擇置換的依據(jù)之一,如果某個(gè)轉(zhuǎn)換頁(yè)在緩存中從未被更新過(guò),它將被優(yōu)先置換出緩存,利用緩存中的置換項(xiàng)對(duì)應(yīng)的地址轉(zhuǎn)換頁(yè)的起始地址SLA和全局轉(zhuǎn)換頁(yè)映射表GTD,以定位閃存中實(shí)際存儲(chǔ)的轉(zhuǎn)換頁(yè)地址,執(zhí)行置換操作。4.根據(jù)權(quán)利要求3所述的一種優(yōu)化的閃存地址映射方法,其特征在于,所述方法采用了基于轉(zhuǎn)換頁(yè)的數(shù)據(jù)聚集方法:數(shù)據(jù)寫(xiě)入以其邏輯地址對(duì)應(yīng)的轉(zhuǎn)換頁(yè)作為指導(dǎo),邏輯地址對(duì)應(yīng)于同一轉(zhuǎn)換頁(yè)的數(shù)據(jù)將被寫(xiě)入相同的數(shù)據(jù)塊。5.根據(jù)權(quán)利要求4所述的一種優(yōu)化的閃存地址映射方法,其特征在于:為了實(shí)現(xiàn)數(shù)據(jù)聚集方法,所述優(yōu)化的閃存地址映射方法繼續(xù)擴(kuò)展全局轉(zhuǎn)換頁(yè)映射表,在表中的每一項(xiàng)保存了可用數(shù)據(jù)頁(yè)的物理地址APN,其中,物理地址為-1代表該項(xiàng)尚未分配數(shù)據(jù)塊,同時(shí),使用空塊池FBP記錄閃存中所有的空數(shù)據(jù)塊,當(dāng)有數(shù)據(jù)請(qǐng)求時(shí),按需分配空數(shù)據(jù)塊給全局轉(zhuǎn)換頁(yè)映射表,在垃圾回收中,擦寫(xiě)后的空塊回收到空塊池;在閃存初始階段,所有空數(shù)據(jù)塊屬于空塊池,全局轉(zhuǎn)換頁(yè)映射表中每項(xiàng)可用數(shù)據(jù)頁(yè)地址都為未分配狀態(tài),當(dāng)有寫(xiě)數(shù)據(jù)請(qǐng)求時(shí),根據(jù)上文提到的計(jì)算方法定位全局轉(zhuǎn)換頁(yè)映射表的項(xiàng),如果項(xiàng)內(nèi)的APN不為-1,則直接將數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的數(shù)據(jù)頁(yè),隨后更新APN為所分配數(shù)據(jù)塊中的下一個(gè)可用數(shù)據(jù)頁(yè),如果數(shù)據(jù)塊已滿(mǎn),則將該地址置為-1;否則,若該轉(zhuǎn)換頁(yè)尚未分配數(shù)據(jù)塊,檢查空塊池中是否存在可用的空數(shù)據(jù)塊,若存在則按需分配并記錄第I個(gè)數(shù)據(jù)頁(yè)的物理地址作為APN,否則調(diào)用垃圾回收獲得新的空數(shù)據(jù)塊。6.根據(jù)權(quán)利要求5所述的一種優(yōu)化的閃存地址映射方法,其特征在于:所述優(yōu)化的閃存地址映射方法將基于轉(zhuǎn)換頁(yè)數(shù)據(jù)聚集方法復(fù)用在垃圾回收中,在數(shù)據(jù)塊的垃圾回收過(guò)程中,當(dāng)垃圾回收器需要拷貝一個(gè)有效頁(yè)時(shí),首先訪問(wèn)全局轉(zhuǎn)換頁(yè)映射以獲得當(dāng)前的可用數(shù)據(jù)頁(yè)的物理地址APN,如果可用數(shù)據(jù)頁(yè)是存在的,則直接將有效頁(yè)寫(xiě)入可用數(shù)據(jù)頁(yè);否則,如果當(dāng)前分配的數(shù)據(jù)塊已經(jīng)用完,則使用交換塊作為新分配的數(shù)據(jù)塊存儲(chǔ)有效頁(yè);當(dāng)垃圾回收完成時(shí),擦除后的空數(shù)據(jù)塊作為新的交換塊。7.根據(jù)權(quán)利要求6所述的一種優(yōu)化的閃存地址映射方法,其特征在于:選擇擦寫(xiě)次數(shù)較少且無(wú)效頁(yè)較多的數(shù)據(jù)塊作為回收塊進(jìn)行擦寫(xiě);在閃存空閑時(shí)間里,對(duì)冷、熱數(shù)據(jù)塊進(jìn)行數(shù)據(jù)交換以平衡塊間擦寫(xiě)次數(shù)?!疚臋n編號(hào)】G06F12/02GK104268094SQ201410488749【公開(kāi)日】2015年1月7日申請(qǐng)日期:2014年9月23日優(yōu)先權(quán)日:2014年9月23日【發(fā)明者】楊晉博,尹艷艷,張新玲申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司