計(jì)算機(jī)子系統(tǒng)及在其中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法
【專利摘要】本發(fā)明涉及計(jì)算機(jī)子系統(tǒng)及在其中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,該計(jì)算機(jī)子系統(tǒng)包含閃存存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器(RAM)。按照本發(fā)明的一種方法,閃存存儲(chǔ)器包括用于存儲(chǔ)真實(shí)數(shù)據(jù)的數(shù)據(jù)塊和用于存儲(chǔ)地址映射信息的轉(zhuǎn)換塊。RAM中包括緩存空間分配表和轉(zhuǎn)換頁映射表??蓪⒕彺婵臻g分配表格式化為第一緩存空間和第二緩存空間。當(dāng)接收到一地址轉(zhuǎn)換請求時(shí),查詢緩存空間分配表,以識別與該請求相符的地址映射數(shù)據(jù)結(jié)構(gòu)是否存在。如不存在,在轉(zhuǎn)換塊中搜索相對應(yīng)的地址映射數(shù)據(jù)結(jié)構(gòu),其中用于訪問該轉(zhuǎn)換塊的物理轉(zhuǎn)換頁地址由轉(zhuǎn)換頁映射表提供。該相對應(yīng)的地址轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)也用于更新緩存空間分配表。
【專利說明】計(jì)算機(jī)子系統(tǒng)及在其中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種用于閃存存儲(chǔ)器的基于需求的地址映射方案。特別是,涉及帶緩 存的基于需求的塊地址映射方案,應(yīng)用于大規(guī)模閃存存儲(chǔ)系統(tǒng)以降低隨機(jī)存取存儲(chǔ)器RAM 的規(guī)模。
【背景技術(shù)】
[0002] NAND閃存存儲(chǔ)器廣泛地應(yīng)用于非易失、抗震動(dòng)、低耗電的儲(chǔ)存設(shè)備。類似其他儲(chǔ) 存媒介,閃存存儲(chǔ)芯片的容量正在令人矚目地提升而且大約每兩年翻一倍。NAND閃存存儲(chǔ) 器容量的不斷提升給用于閃存管理的塊設(shè)備仿真軟件的設(shè)計(jì)廠商提出了巨大的挑戰(zhàn)。尤其 是,必須在維持良好的系統(tǒng)響應(yīng)時(shí)間的前提下控制主存儲(chǔ)器(隨機(jī)存取存儲(chǔ)器)的成本。
[0003] 圖1描述了閃存儲(chǔ)存系統(tǒng)的典型架構(gòu)。在NAND閃存存儲(chǔ)系統(tǒng)中,閃存轉(zhuǎn)換層(FTL) 130是建立在存儲(chǔ)器技術(shù)設(shè)備(MTD)層140之上的塊設(shè)備仿真層,該存儲(chǔ)器技術(shù)設(shè)備層140 能在閃存存儲(chǔ)器150的閃存單元上做基礎(chǔ)的讀、寫和擦除操作。閃存轉(zhuǎn)換層130的主要作用 是在文件系統(tǒng)120中的邏輯地址和閃存存儲(chǔ)器150中對應(yīng)的物理地址之間進(jìn)行地址映射。
[0004] 通常駐存于隨機(jī)存取存儲(chǔ)器中的地址映射表用于儲(chǔ)存地址映射信息。隨著在 NAND閃存芯片中集成的物理頁和塊越來越多,隨機(jī)存取存儲(chǔ)器的需求出現(xiàn)強(qiáng)勁地增長以記 錄地址映射信息。舉例來說,對于基于大塊(2KB/頁)的32GB的Micron NAND閃存存儲(chǔ)器 MT29F32G08CBABAWP,頁閃存轉(zhuǎn)換層的映射表大小為96MB,該映射表太大以至于無法存儲(chǔ)于 隨機(jī)存取存儲(chǔ)器中,尤其是對于低端閃存硬盤。
[0005] 針對這一問題,塊地址映射方案被提出并且廣泛地用于NAND閃存儲(chǔ)存系統(tǒng)。使用 塊到塊地址映射的閃存轉(zhuǎn)換層(FTL),相比于使用細(xì)粒度頁映射的閃存轉(zhuǎn)換層,能極大地減 少地址映射表的大小。然而,隨著閃存存儲(chǔ)器容量的增加,需要容量較大的隨機(jī)存取存儲(chǔ)器 來儲(chǔ)存映射表。例如,上述的32GB Micron NAND閃存存儲(chǔ)器,塊地址映射表可占據(jù)1. 13MB 隨機(jī)存取存儲(chǔ)器空間。當(dāng)NAND閃存存儲(chǔ)器的容量增加時(shí),問題變得更嚴(yán)重。本發(fā)明為解決 上述問題,將一種基于需求的映射策略應(yīng)用于大規(guī)模NAND閃存存儲(chǔ)系統(tǒng)中。
[0006] 本發(fā)明涉及一種基于需求的閃存轉(zhuǎn)換層(demand-based flash translation layer,簡稱DFTL)?;谛枨蟮拈W存轉(zhuǎn)換層的概念由Gupta, A.,Kim, Υ·,和Urganokar, B. (2009)在"DFTL:a flash translation layer employing demand-based selective caching of page-level address mapping(DFTL :-種使用基于需求的頁地址映射選擇性 緩存的閃存轉(zhuǎn)換層)" 一文中給出,參考2009年3月7日至11日第14屆編程語言和操作 系統(tǒng)的體系結(jié)構(gòu)支持國際會(huì)議(the 14th International Conference on Architectural Support for Programming Languages and Operating Systems,簡稱 ASPL0S, 09)公報(bào)第 229-240頁,這個(gè)披露在此處引用作為參考。DFTL是第一個(gè)基于需求的頁映射方案?;?需求的閃存轉(zhuǎn)換層(DFTL)在特定的閃存頁中儲(chǔ)存地址映射表,而非按傳統(tǒng)方式將頁地址映 射表存儲(chǔ)在隨機(jī)存取存儲(chǔ)器中。在隨機(jī)存取存儲(chǔ)器中設(shè)置一緩存用于儲(chǔ)存文件系統(tǒng)經(jīng)常 使用的地址映射。在隨機(jī)存取存儲(chǔ)器中永久地設(shè)置另一總轉(zhuǎn)換目錄(global translation directory,簡稱GTD),用于作為轉(zhuǎn)換頁的入口。因此,DFTL能有效地縮減隨機(jī)存取存儲(chǔ)器 的規(guī)模。盡管如此,基于頁地址映射方案的DFTL相比于基于塊地址映射策略的DFTL,在縮 減隨機(jī)存取存儲(chǔ)器的規(guī)模方面并不突出。而且,用于DFTL的頁映射表仍然在閃存存儲(chǔ)器 中占用大量的空間。使用這種映射表,與通常需要非常小的地址映射表的塊地址映射方案 相比,不但在閃存存儲(chǔ)器中占用額外的空間而且還引入了更多用于其維護(hù)的時(shí)間和耐久開 銷。
[0007] 本領(lǐng)域需要一種在現(xiàn)有DFTL基礎(chǔ)上改進(jìn)的占用隨機(jī)存取存儲(chǔ)器空間較小的 DFTL。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明提供用于在包含閃存存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器的計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃 存轉(zhuǎn)換層(FTL)的第一方法和第二方法。其中,閃存存儲(chǔ)器劃分為復(fù)數(shù)個(gè)塊,在每個(gè)塊中包 含多個(gè)頁,且所述塊使用物理塊地址尋址。在任一塊中的每個(gè)頁通過物理頁地址尋址。閃 存存儲(chǔ)器可以是NAND閃存存儲(chǔ)器。
[0009] 本發(fā)明的第一方法包括:分配所述復(fù)數(shù)個(gè)塊中的第一數(shù)目個(gè)塊作為儲(chǔ)存真實(shí)數(shù)據(jù) (real data)的數(shù)據(jù)塊;分配所述復(fù)數(shù)個(gè)塊中除數(shù)據(jù)塊之外的第二數(shù)目個(gè)塊作為轉(zhuǎn)換塊;分 配所述隨機(jī)存取存儲(chǔ)器的第一部分作為緩存空間分配表;分配隨機(jī)存取存儲(chǔ)器的第二部分 作為轉(zhuǎn)換頁映射表;且當(dāng)接收到一地址轉(zhuǎn)換請求時(shí),通過地址轉(zhuǎn)換處理過程將被請求的虛 擬數(shù)據(jù)塊地址轉(zhuǎn)換為與其相對應(yīng)的物理塊地址。
[0010] 并且,配置整體轉(zhuǎn)換塊用于存儲(chǔ)塊映射表,該塊映射表包含復(fù)數(shù)個(gè)第一地址映射 數(shù)據(jù)結(jié)構(gòu),每個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu)包含(1)所述數(shù)據(jù)塊中的一個(gè)數(shù)據(jù)塊的邏輯塊地址 和(2)與所述數(shù)據(jù)塊中的一個(gè)數(shù)據(jù)塊的邏輯塊地址相對應(yīng)的物理塊地址。配置所述緩存空 間分配表,使其包括復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu),每個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)或標(biāo)記為 空閑(available),或包括(1)從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選定的一個(gè)數(shù)據(jù)塊的邏輯塊地址和(2)與 該從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選定的一個(gè)數(shù)據(jù)塊的邏輯塊地址相對應(yīng)的物理塊地址。配置轉(zhuǎn)換頁映 射表使其包含復(fù)數(shù)個(gè)第三地址映射數(shù)據(jù)結(jié)構(gòu),每個(gè)第三地址映射數(shù)據(jù)結(jié)構(gòu)包括(1)從復(fù)數(shù) 個(gè)數(shù)據(jù)塊中選定的一個(gè)數(shù)據(jù)塊的邏輯塊地址,和(2)用于儲(chǔ)存與該從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選定 的一個(gè)數(shù)據(jù)塊的邏輯塊地址相對應(yīng)的物理塊地址的轉(zhuǎn)換頁的物理頁地址。
[0011] 特別地,地址轉(zhuǎn)換處理過程具有如下特征。查找緩存空間分配表,以從所述復(fù)數(shù)個(gè) 第二地址映射數(shù)據(jù)結(jié)構(gòu)中識別是否存在第一識別數(shù)據(jù)結(jié)構(gòu),該第一識別數(shù)據(jù)結(jié)構(gòu)的邏輯塊 地址與被請求的虛擬數(shù)據(jù)塊地址相符(matches)。如果識別出第一識別數(shù)據(jù)結(jié)構(gòu),指定該第 一識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址為與被請求的虛擬數(shù)據(jù)塊地址相對應(yīng)的物理塊地址。如果 未識別出第一識別數(shù)據(jù)結(jié)構(gòu),查找所述轉(zhuǎn)換塊以便從復(fù)數(shù)個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu)中識別 第二識別數(shù)據(jù)結(jié)構(gòu),該第二識別數(shù)據(jù)結(jié)構(gòu)中的邏輯塊地址與被請求的虛擬塊地址相符,其 中所述轉(zhuǎn)換頁映射表提供存儲(chǔ)于其中的物理頁地址以便訪問所述轉(zhuǎn)換塊。當(dāng)識別出第二識 別數(shù)據(jù)結(jié)構(gòu),執(zhí)行下列各項(xiàng):(1)將該第二識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址指定為與所述被 請求的虛擬數(shù)據(jù)塊地址相對應(yīng)的物理塊地址;且(2)通過緩存更新處理過程使用第二識別 數(shù)據(jù)結(jié)構(gòu)更新緩存空間分配表,其中,緩存更新處理過程包括將所述第二識別數(shù)據(jù)結(jié)構(gòu)拷 貝至從復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)中選定的目標(biāo)第二地址映射數(shù)據(jù)結(jié)構(gòu)中。
[0012] 優(yōu)選地,使用順序查找法在所述緩存空間分配表中查找所述第一識別數(shù)據(jù)結(jié)構(gòu)。
[0013] 優(yōu)選地,緩存空間分配表格式化(partitioned into)為第三數(shù)目個(gè)緩存空間。如 果所述緩存空間分配表滿,選擇緩存空間之一作為第一選定緩存空間。然后選擇第一選定 緩存空間中的復(fù)數(shù)個(gè)第二個(gè)地址映射數(shù)據(jù)結(jié)構(gòu)之一作為用于拷貝入所述第二識別地址映 射數(shù)據(jù)結(jié)構(gòu)的所述目標(biāo)第二地址映射數(shù)據(jù)結(jié)構(gòu)。將所述第一選定緩存空間中除該目標(biāo)第二 地址映射數(shù)據(jù)結(jié)構(gòu)以外的其他全部第二地址映射數(shù)據(jù)結(jié)構(gòu)標(biāo)記為空閑。如果所述緩存空間 分配表未滿,選擇標(biāo)記為空閑的第二地址映射數(shù)據(jù)結(jié)構(gòu)中的一個(gè)作為所述目標(biāo)第二地址映 射數(shù)據(jù)結(jié)構(gòu)。
[0014] 用于格式化緩存空間分配表的第三數(shù)目可以是二,于是緩存空間分配表格式化為 一第一緩存空間和一第二緩存空間。假設(shè)緩存空間分配表已滿。如果已指定該第一緩存空 間用于存儲(chǔ)隨機(jī)映射項(xiàng)目,選擇該第一緩存空間作為第一選定緩存空間。否則,選擇所述第 二緩存空間作為第一選定緩存空間。考慮另一種情形,所述緩存空間分配表未滿。第二選 定緩存空間(其或者是第一緩存空間或者是第二緩存空間)是包含目標(biāo)第二地址映射數(shù)據(jù) 結(jié)構(gòu)的緩存空間。如果該第二選定緩存空間未指定用于存儲(chǔ)隨機(jī)映射項(xiàng)目而且如果該第二 選定數(shù)據(jù)結(jié)構(gòu)不是該第二選定緩存空間中的順序項(xiàng)目(sequential item),則重新指定該 第二選定緩存空間為儲(chǔ)存隨機(jī)映射項(xiàng)目的緩存空間。
[0015] 任一第一地址映射數(shù)據(jù)結(jié)構(gòu)可更進(jìn)一步包括與其中的邏輯塊地址相對應(yīng)的替補(bǔ) 物理數(shù)據(jù)塊地址(replacement physical data block address),同時(shí)將其中的該邏輯塊地 址作為虛擬數(shù)據(jù)塊地址并且將其中的物理塊地址作為主物理數(shù)據(jù)地址(primary physical data address)。同樣地,任一第二地址映射數(shù)據(jù)結(jié)構(gòu),如果沒有標(biāo)記為空閑,可以進(jìn)一步包 括與其中的邏輯塊地址相對應(yīng)的替補(bǔ)邏輯塊地址,同時(shí)將其中的該邏輯塊地址作為虛擬數(shù) 據(jù)塊地址并且將其中的物理塊地址作為主物理數(shù)據(jù)地址。因此在接收到地址轉(zhuǎn)換請求后, 能夠獲取均與被請求的虛擬數(shù)據(jù)塊地址相對應(yīng)的主物理塊地址和替補(bǔ)物理數(shù)據(jù)塊地址。
[0016] 本發(fā)明的第二方法包括:分配第一數(shù)目個(gè)塊作為儲(chǔ)存真正數(shù)據(jù)的數(shù)據(jù)塊;分配除 數(shù)據(jù)塊之外的第二數(shù)目個(gè)塊作為轉(zhuǎn)換塊;分配隨機(jī)存取存儲(chǔ)器的第一部分作為數(shù)據(jù)塊映射 表緩存(DBMTC);分配隨機(jī)存取存儲(chǔ)器的第二部分作為轉(zhuǎn)換頁映射表(TPMT);分配隨機(jī)存取 存儲(chǔ)器的第三部分作為轉(zhuǎn)換頁索引位置緩存(TPRLC);分配隨機(jī)存取存儲(chǔ)器的第四部分作 為轉(zhuǎn)換頁存取頻率緩存(TPAFC);且當(dāng)接收到地址轉(zhuǎn)換請求時(shí),通過地址轉(zhuǎn)換處理過程將被 請求的虛擬數(shù)據(jù)塊地址轉(zhuǎn)換為與其相對應(yīng)的物理塊地址。
[0017] 此外,配置整個(gè)轉(zhuǎn)換塊用于存儲(chǔ)塊映射表,使其包括復(fù)數(shù)個(gè)第一地址映射數(shù)據(jù)結(jié) 構(gòu),每個(gè)該第一地址映射數(shù)據(jù)結(jié)構(gòu)包括復(fù)數(shù)個(gè)數(shù)據(jù)塊中的一個(gè)數(shù)據(jù)塊的邏輯塊地址和與該 邏輯塊地址相對應(yīng)的物理塊地址。配置DBMTC使其包含復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu),每 個(gè)該第二地址映射數(shù)據(jù)結(jié)構(gòu)或標(biāo)記為空閑,或包括從復(fù)數(shù)個(gè)所述數(shù)據(jù)塊中選定的一個(gè)數(shù)據(jù) 塊的邏輯塊地址以及與該邏輯塊地址相對應(yīng)的物理塊地址。配置TPMT使其包含復(fù)數(shù)個(gè) 第三地址映射數(shù)據(jù)結(jié)構(gòu),每個(gè)該第三地址映射數(shù)據(jù)結(jié)構(gòu)包括從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選定的一 個(gè)數(shù)據(jù)塊的邏輯塊地址、轉(zhuǎn)換頁的物理頁地址(該轉(zhuǎn)換頁用于存儲(chǔ)與該從復(fù)數(shù)個(gè)所述數(shù)據(jù) 塊中選定的一個(gè)數(shù)據(jù)塊的邏輯塊地址相對應(yīng)的物理地址),用于根據(jù)前述轉(zhuǎn)換頁的拷貝是 否緩存于隨機(jī)存取存儲(chǔ)器來指示肯定結(jié)果或否定結(jié)果(positive result or a negative result)的位置指示器,和未命中頻率記錄(miss-frequency record)。配置TPRLC使其包 含第四地址映射數(shù)據(jù)結(jié)構(gòu),每個(gè)第四地址映射數(shù)據(jù)結(jié)構(gòu)或標(biāo)記為空閑,或包含從復(fù)數(shù)個(gè)所 述數(shù)據(jù)塊中選出的一個(gè)數(shù)據(jù)塊的邏輯塊地址以及與該邏輯塊地址相對應(yīng)的物理塊地址。配 置TPAFC使其包含第五地址映射數(shù)據(jù)結(jié)構(gòu),每個(gè)第五地址映射數(shù)據(jù)結(jié)構(gòu)或標(biāo)記為空閑,或 包含從復(fù)數(shù)個(gè)所述數(shù)據(jù)塊中選出的一個(gè)數(shù)據(jù)塊的邏輯塊地址以及與該邏輯塊地址相對應(yīng) 的物理塊地址。
[0018] 地址轉(zhuǎn)換處理過程具有如下特征。查詢DBMTC,以從復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié) 構(gòu)中識別是否存在第一識別數(shù)據(jù)結(jié)構(gòu),該第一識別數(shù)據(jù)結(jié)構(gòu)的邏輯塊地址與被請求的虛擬 數(shù)據(jù)塊地址相符。如果第一識別數(shù)據(jù)結(jié)構(gòu)存在,將第一識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址指定 為與被請求的虛擬數(shù)據(jù)塊地址相對應(yīng)物理塊地址。如果未識別出該第一識別數(shù)據(jù)結(jié)構(gòu),查 詢TPMT,以從復(fù)數(shù)個(gè)第三地址映射數(shù)據(jù)結(jié)構(gòu)中識別第二識別映射數(shù)據(jù)結(jié)構(gòu),該第二識別映 射數(shù)據(jù)結(jié)構(gòu)中的邏輯塊地址與被請求的虛擬數(shù)據(jù)塊地址相符。如果該第二識別數(shù)據(jù)結(jié)構(gòu)中 的位置指示器給出肯定結(jié)果,查找TPRLC和TPAFC,以在復(fù)數(shù)個(gè)第四地址映射數(shù)據(jù)結(jié)構(gòu)和復(fù) 數(shù)個(gè)第五地址映射數(shù)據(jù)結(jié)構(gòu)中識別第三識別數(shù)據(jù)結(jié)構(gòu),該第三識別數(shù)據(jù)結(jié)構(gòu)的邏輯塊地址 與被請求的虛擬數(shù)據(jù)塊地址相符。如果在TPAFC中識別出第三識別數(shù)據(jù)結(jié)構(gòu),將所述第二 識別數(shù)據(jù)結(jié)構(gòu)中的未命中頻率記錄加一。當(dāng)識別出第三識別數(shù)據(jù)結(jié)構(gòu)時(shí),將第三識別數(shù)據(jù) 結(jié)構(gòu)中的物理塊地址指定為與被請求的虛擬數(shù)據(jù)塊地址相對應(yīng)的物理塊地址。如果第二識 別數(shù)據(jù)結(jié)構(gòu)中的位置指示器給出否定結(jié)果,執(zhí)行下列各項(xiàng):(1)從閃存存儲(chǔ)器中將包含存 儲(chǔ)于第二識別數(shù)據(jù)結(jié)構(gòu)中的物理頁地址的轉(zhuǎn)換頁全部載入隨機(jī)存取存儲(chǔ)器中;并且(2)查 找載入的轉(zhuǎn)換頁,以在該載入的轉(zhuǎn)換頁中識別第四識別數(shù)據(jù)結(jié)構(gòu),該第四識別數(shù)據(jù)結(jié)構(gòu)中 的邏輯塊地址與被請求的虛擬數(shù)據(jù)塊地址相對應(yīng)。當(dāng)識別出第四識別數(shù)據(jù)結(jié)構(gòu),執(zhí)行下列 各項(xiàng):(1)將第四識別數(shù)據(jù)結(jié)構(gòu)的物理塊地址指定為與被請求的虛擬數(shù)據(jù)相對應(yīng)的物理塊 地址;(2)用第四識別數(shù)據(jù)結(jié)構(gòu)更新DBMTC ; (3)使用緩存更新處理過程根據(jù)整個(gè)載入的轉(zhuǎn) 換頁更新TPRLC或TPAFC ;并且(4)將第二識別數(shù)據(jù)結(jié)構(gòu)中的位置指示器更新為肯定結(jié)果。
[0019] 優(yōu)選地,使用順序查找方式在TPRLC和TPAFC中查找第三識別數(shù)據(jù)結(jié)構(gòu)。
[0020] 可選地,所述緩存更新處理過程具有下列各項(xiàng)特征。如果TPRLC和TPAFC中有任一 個(gè)未滿,在該TPRLC和TPAFC中選擇一個(gè)未滿的緩存作為目標(biāo)緩存用于存儲(chǔ)載入的轉(zhuǎn)換頁。 如果TPRLC和TPAFC均已滿,執(zhí)行下列各項(xiàng):(1)從TPRLC中選擇第一被替換轉(zhuǎn)換頁(first victim translation page),取回第五識別數(shù)據(jù)結(jié)構(gòu)中的未命中頻率記錄,該第五識別數(shù) 據(jù)結(jié)構(gòu)是從第三地址映射數(shù)據(jù)結(jié)構(gòu)中選出的、且該第五識別數(shù)據(jù)結(jié)構(gòu)中的物理頁地址與所 述第一被替換轉(zhuǎn)換頁的物理頁地址相符;(2)從TPAFC中選擇第二被替換轉(zhuǎn)換頁(second victim translation page),并且取回在從第三地址映射數(shù)據(jù)結(jié)構(gòu)中選出的第六識別數(shù)據(jù) 結(jié)構(gòu)中的未命中頻率記錄,所述第六識別數(shù)據(jù)結(jié)構(gòu)中的物理頁地址與所述第二被替換轉(zhuǎn) 換頁的物理頁地址相符;(3)根據(jù)第五識別數(shù)據(jù)結(jié)構(gòu)和第六識別數(shù)據(jù)結(jié)構(gòu)中的未命中頻 率記錄在第一被替換轉(zhuǎn)換頁和第二被替換轉(zhuǎn)換頁中選擇一目標(biāo)被替換轉(zhuǎn)換頁(targeted victim translation page);以及(4)用載入的轉(zhuǎn)換頁重寫該目標(biāo)被替換轉(zhuǎn)換頁。
[0021] 優(yōu)選地,利用最近最少使用(Least recently used,簡稱LRU)算法從TPRLC中 的轉(zhuǎn)換頁中選出該第一被替換轉(zhuǎn)換頁,并且利用最少使用(Least frequently used,簡稱 LFU)算法在TPAFC中的轉(zhuǎn)換頁中選擇該第二被替換轉(zhuǎn)換頁。
[0022] 任一第一地址映射數(shù)據(jù)結(jié)構(gòu)可進(jìn)一步包括一替補(bǔ)物理數(shù)據(jù)塊地址(r印lacement physical data address),該替補(bǔ)物理數(shù)據(jù)塊地址與其中的邏輯塊地址相對應(yīng),同時(shí)將該 邏輯塊地址作為虛擬數(shù)據(jù)塊地址并且物理塊地址作為主物理數(shù)據(jù)地址(primary physical data address)。未標(biāo)示為空閑的所述第二、第四和第五地址映射數(shù)據(jù)結(jié)構(gòu),可進(jìn)一步包括 一與邏輯塊地址相對應(yīng)的替補(bǔ)物理塊地址,同時(shí)邏輯塊地址作為虛擬數(shù)據(jù)塊地址且物理塊 地址作為主物理數(shù)據(jù)地址。從而,在接收到地址轉(zhuǎn)換請求之后,能夠獲取均與被請求的虛擬 數(shù)據(jù)塊地址相對應(yīng)的主物理塊地址和替補(bǔ)物理數(shù)據(jù)塊地址。
【專利附圖】
【附圖說明】
[0023] 下面將結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn)一步說明,附圖中:
[0024] 圖1所示為閃存存儲(chǔ)系統(tǒng)的典型架構(gòu);
[0025] 圖2是根據(jù)本發(fā)明一實(shí)施例,應(yīng)用于隨機(jī)存取存儲(chǔ)器空間非常有限的系統(tǒng)中的閃 存存儲(chǔ)的基于需求的地址映射方案的示意圖;
[0026] 圖3是根據(jù)本發(fā)明一實(shí)施例,應(yīng)用于隨機(jī)存取存儲(chǔ)器空間非常有限的系統(tǒng)中的轉(zhuǎn) 換頁映射表的示意圖;
[0027] 圖4是根據(jù)本發(fā)明一實(shí)施例,應(yīng)用于隨機(jī)存取存儲(chǔ)器空間非常有限的系統(tǒng)中的緩 存空間分配表中的映射項(xiàng)目的示意圖;
[0028] 圖5是根據(jù)本發(fā)明一實(shí)施例,應(yīng)用于隨機(jī)存取存儲(chǔ)器空間非常有限的系統(tǒng)中的基 于需求的地址映射的地址轉(zhuǎn)換處理過程的流程圖;
[0029] 圖6是根據(jù)本發(fā)明一實(shí)施例,應(yīng)用于隨機(jī)存取存儲(chǔ)器空間受限的閃存儲(chǔ)存系統(tǒng)中 的閃存存儲(chǔ)的基于需求的地址映射系統(tǒng)的示意圖;
[0030] 圖7是根據(jù)本發(fā)明一實(shí)施例,應(yīng)用于隨機(jī)存取存儲(chǔ)器空間受限的系統(tǒng)中的轉(zhuǎn)換頁 映射表的示意圖;
[0031] 圖8是根據(jù)本發(fā)明一實(shí)施例,應(yīng)用于隨機(jī)存取存儲(chǔ)器空間受限的系統(tǒng)中的數(shù)據(jù)塊 映射表中的映射項(xiàng)目的示意圖;
[0032] 圖9是根據(jù)本發(fā)明一實(shí)施例,應(yīng)用于隨機(jī)存取存儲(chǔ)器空間受限的系統(tǒng)中的轉(zhuǎn)換頁 索引位置緩存的示意圖;
[0033] 圖10是根據(jù)本發(fā)明一實(shí)施例,應(yīng)用于隨機(jī)存取存儲(chǔ)器空間受限的系統(tǒng)中的轉(zhuǎn)換 頁訪問頻率緩存的示意圖;
[0034] 圖11是根據(jù)本發(fā)明一實(shí)施例,應(yīng)用于隨機(jī)存取存儲(chǔ)器空間受限的系統(tǒng)中的從邏 輯數(shù)據(jù)塊地址到物理數(shù)據(jù)塊地址的地址轉(zhuǎn)換處理過程的流程圖。
[0035] 圖12是根據(jù)本發(fā)明一實(shí)施例,應(yīng)用于隨機(jī)存取存儲(chǔ)器空間受限的系統(tǒng)中的獲取 被請求的物理轉(zhuǎn)換頁地址寫入二級緩存的處理過程的流程圖。
【具體實(shí)施方式】
[0036] A、本發(fā)明的基本構(gòu)思
[0037] 在下面的C部分和D部分中,詳細(xì)說明用于大規(guī)模NAND閃存存儲(chǔ)系統(tǒng)的兩個(gè)地址 映射方案。這兩個(gè)地址映射方案為本發(fā)明的具體實(shí)施例。對隨機(jī)存取存儲(chǔ)器空間非常有限 (舉例來說,僅有1或2KB)的系統(tǒng),在此公開了同時(shí)考慮空間局部性和訪問頻率的基于需求 的地址映射方案。對于隨機(jī)存取存儲(chǔ)器空間受限(舉例來說,少于幾個(gè)MB)的系統(tǒng),公開了 一種帶兩級緩存結(jié)構(gòu)的基于需求的塊地址映射方案,該方案用于大規(guī)模NAND閃存存儲(chǔ)系 統(tǒng)中。
[0038] 發(fā)明的基本構(gòu)思是將塊地址映射表存儲(chǔ)于閃存的特定頁(稱為轉(zhuǎn)換頁)中,同時(shí)在 隨機(jī)存取存儲(chǔ)器中設(shè)計(jì)用于存儲(chǔ)基于需求的塊地址映射的緩存。因?yàn)檎麄€(gè)塊地址映射表存 儲(chǔ)于閃存存儲(chǔ)器中,只有需要的地址映射被載入隨機(jī)存取存儲(chǔ)器,所以能夠有效地縮減隨 機(jī)存取存儲(chǔ)器的規(guī)模。
[0039] 針對隨機(jī)存取存儲(chǔ)器空間受限的系統(tǒng),設(shè)計(jì)兩級緩存結(jié)構(gòu)同時(shí)考慮時(shí)間局部性、 空間局部性以及訪問頻率以便改善緩存的命中率。第一級緩存用于緩存少數(shù)活躍的塊映 射。第二級緩存包括兩個(gè)緩存,分別用于緩存那些符合空間局部性的轉(zhuǎn)換頁以及最經(jīng)常訪 問的轉(zhuǎn)換頁。隨機(jī)存取存儲(chǔ)器中的轉(zhuǎn)換頁映射表(TPMT)設(shè)置為第二級緩存中的兩個(gè)緩存 和閃存中轉(zhuǎn)換頁之間的橋梁。對于一個(gè)給定的邏輯塊地址,如果沒有在第一級緩存中找到 它的塊映射信息,則將該邏輯塊地址當(dāng)做TPMT的索引來查找一個(gè)包含物理轉(zhuǎn)換頁地址(通 過該物理轉(zhuǎn)換頁地址能在閃存中找到對應(yīng)的映射信息)的條目(entry)。而且,在一個(gè)實(shí)施 例中,TPMT的每個(gè)條目都有兩個(gè)標(biāo)記分別用于指示對應(yīng)物理轉(zhuǎn)換頁是否緩存于第二級緩存 中的兩個(gè)緩存之一中。僅當(dāng)對應(yīng)的轉(zhuǎn)換頁沒有緩存于第一級緩存及第二級緩存中時(shí),才從 閃存存儲(chǔ)器中讀取該對應(yīng)的轉(zhuǎn)換頁。通過這種方式,可以有效地改善系統(tǒng)反應(yīng)時(shí)間。同時(shí) 設(shè)計(jì)了緩存準(zhǔn)入?yún)f(xié)議和替換方案(kick-out schemes),以便完全地利用所有緩存空間并且 不會(huì)產(chǎn)生冗余信息和沖突。
[0040] B、考慮的系統(tǒng)架構(gòu)
[0041] 通常一個(gè)NAND閃存存儲(chǔ)器格式化為復(fù)數(shù)個(gè)塊,每個(gè)該塊分為一定數(shù)量的頁。一個(gè) 小塊結(jié)構(gòu)的NAND閃存存儲(chǔ)器的一頁能儲(chǔ)存512B數(shù)據(jù),且每個(gè)小塊有32頁;一個(gè)大塊結(jié)構(gòu) 的NAND閃存存儲(chǔ)器的一頁能儲(chǔ)存2KB數(shù)據(jù),且每個(gè)大塊有64頁。與磁記錄硬盤式儲(chǔ)存系 統(tǒng)相比,NAND閃存儲(chǔ)存系統(tǒng)有兩個(gè)特性。第一,閃存單元中的讀操作和寫操作的基本單位 為頁,而擦除操作的基本單位是塊,這種特性通常被稱為"批量擦除"。第二,擦除操作必須 在寫操作之前完成,這種特性通常被稱為"寫前擦除"(erase-beforeirite)或者"異地更 新"(out-of-place update)。這兩個(gè)固有的特性使針對閃存存儲(chǔ)器的管理策略變得更復(fù) 雜。為了向文件系統(tǒng)用戶隱藏這些固有的特性并提供透明的數(shù)據(jù)儲(chǔ)存服務(wù),業(yè)內(nèi)設(shè)計(jì)了閃 存轉(zhuǎn)換層(FTL)。
[0042] 典型地,閃存轉(zhuǎn)換層(FTL)包括三個(gè)部分,它們是地址轉(zhuǎn)換器、空間釋放器、和損耗 平均器。在FTL中,所述地址轉(zhuǎn)換器用于維持將邏輯地址轉(zhuǎn)換為物理地址的地址映射表;所 述空間釋放器用于擦除存儲(chǔ)了無效數(shù)據(jù)的過時(shí)的塊以便釋放空間;所述損耗平均器是一個(gè) 可選元件,用于平均地向所有塊分配擦除操作,以便延長閃存存儲(chǔ)器的壽命。本發(fā)明的重心 集中于FTL中的地址轉(zhuǎn)換器的管理。
[0043] 當(dāng)文件系統(tǒng)層向NAND閃存存儲(chǔ)器發(fā)送帶有邏輯地址的讀請求和寫請求時(shí),地址 轉(zhuǎn)換器通過查找地址映射表定位相對應(yīng)的物理地址。這一處理過程稱為地址轉(zhuǎn)換。這一處 理過程中的時(shí)間消耗是地址轉(zhuǎn)換開銷。根據(jù)"異地更新"(out-of-place update)特性,如 果映射到一邏輯地址的物理地址位置含有先前寫入數(shù)據(jù),輸入數(shù)據(jù)應(yīng)該被寫入到先前沒有 被寫入數(shù)據(jù)的空的物理位置。然后應(yīng)該根據(jù)新的地址映射項(xiàng)目更新映射表。
[0044] C、用于隨機(jī)存取存儲(chǔ)器空間非常有限的系統(tǒng)的基于需求的地址映射
[0045] Cl、系統(tǒng)架構(gòu)
[0046] 圖2為用于存儲(chǔ)器空間非常有限的系統(tǒng)的基于需求的地址映射的示意圖。在圖 2所示的架構(gòu)中,閃存存儲(chǔ)器220儲(chǔ)存兩種類型的物理塊:數(shù)據(jù)塊230和轉(zhuǎn)換塊240。數(shù)據(jù) 塊230用于儲(chǔ)存來自輸入輸出請求的真實(shí)數(shù)據(jù)(real data),數(shù)據(jù)塊230根據(jù)塊映射方法映 射。在地址映射中,整個(gè)塊地址映射表儲(chǔ)存于轉(zhuǎn)換塊240的復(fù)數(shù)個(gè)頁中。這些用于儲(chǔ)存塊地 址映射表的頁,稱為轉(zhuǎn)換頁。在轉(zhuǎn)換塊240中的轉(zhuǎn)換頁采用細(xì)粒度的頁映射方法實(shí)現(xiàn)。用于 為訪問轉(zhuǎn)換頁提供物理頁地址的轉(zhuǎn)換頁映射表(TPMT) 260駐留于隨機(jī)存取存儲(chǔ)器210中。 緩存空間分配表250,也駐留于隨機(jī)存取存儲(chǔ)器210中,該緩存空間分配表用于儲(chǔ)存基于需 求的塊地址映射。在圖2所示的實(shí)施例中,緩存空間分配表250格式化為緩存空間1251和 緩存空間Π 252。
[0047] C2、轉(zhuǎn)換頁映射表260
[0048] 轉(zhuǎn)換頁映射表260用于儲(chǔ)存虛擬轉(zhuǎn)換頁地址和物理轉(zhuǎn)換頁地址之間的地址映射。 圖3示出轉(zhuǎn)換頁映射表260。使用的地址映射方案采用頁地址映射策略。映射表260中的 項(xiàng)目的數(shù)目與轉(zhuǎn)換塊240中的轉(zhuǎn)換頁的數(shù)目綁定。
[0049] C3、緩存空間分配表250
[0050] 為了完全利用非常有限的隨機(jī)存取存儲(chǔ)器空間,緩存空間分配表250用于儲(chǔ)存需 要的塊的活躍的地址映射。圖4示出在緩存空間分配表250中的映射項(xiàng)目。一個(gè)映射項(xiàng)目 記錄了虛擬數(shù)據(jù)塊地址到主物理數(shù)據(jù)塊地址和替補(bǔ)物理數(shù)據(jù)塊地址的地址映射。
[0051] 將緩存空間分配表250虛擬地格式化為(virtually partitioned into)兩個(gè)空 間:緩存空間1251、和緩存空間11252。每個(gè)緩存空間或者儲(chǔ)存順序地址映射或者儲(chǔ)存隨機(jī) 地址映射。這兩個(gè)緩存空間之間的實(shí)際的空間格式化取決于具體應(yīng)用。
[0052] C4、地址轉(zhuǎn)換步驟
[0053] 圖5示出了用于隨機(jī)存取存儲(chǔ)器空間非常有限的系統(tǒng)的基于需求的地址映射的 地址轉(zhuǎn)換處理過程。給定一被請求的虛擬數(shù)據(jù)塊地址Y,首先查詢緩存空間分配表判斷被請 求的虛擬數(shù)據(jù)塊地址的條目是否存在于緩存空間分配表中。由于緩存空間分配表僅保存數(shù) 量有限的需要的地址映射項(xiàng)目,可采用順序查尋方式,因?yàn)槠洳粫?huì)引入過長的時(shí)間開銷。如 果被請求的地址映射存在于緩存空間分配表中,返回地址映射項(xiàng)目的主物理數(shù)據(jù)塊地址和 替換物理數(shù)據(jù)塊地址。否則,認(rèn)為被請求的地址映射存儲(chǔ)于閃存存儲(chǔ)器中。為找出儲(chǔ)存被請 求的地址映射項(xiàng)目在閃存存儲(chǔ)器中的位置,首先查閱轉(zhuǎn)換頁映射表,該表中包含被請求地 址映射的物理頁地址的記錄。前述新的地址映射請求是最近的存取請求??紤]到地址映射 請求的時(shí)間局部性,將這個(gè)新請求的地址映射儲(chǔ)存于緩存空間分配表是非常有價(jià)值的。于 是,檢查緩存空間分配表是否已滿。如果緩存空間分配表已滿,將在二個(gè)緩存空間中的一個(gè) 緩存空間里的復(fù)數(shù)個(gè)地址映射移出。關(guān)于這一點(diǎn),首先檢測緩存空間I是否儲(chǔ)存隨機(jī)映射 項(xiàng)目。如果是,將緩存空間I中儲(chǔ)存的地址映射項(xiàng)目移至閃存存儲(chǔ)器中,之后,將Y的地址 映射讀取至緩存空間I中。如果緩存空間I儲(chǔ)存順序映射項(xiàng)目,無論緩存空間Π 儲(chǔ)存順序 映射項(xiàng)目還是隨機(jī)映射項(xiàng)目,將緩存空間II中的映射項(xiàng)目移至閃存存儲(chǔ)器中,然后Y的地 址映射存儲(chǔ)于緩存空間II中。
[0054] 如果緩存空間分配表有空閑空間,首先挑選一個(gè)有空閑空間的緩存空間(緩存空 間I或緩存空間II)。然后將該緩存空間作為目標(biāo)緩存。如果該目標(biāo)緩存儲(chǔ)存隨機(jī)映射項(xiàng) 目,Y的地址映射可直接存入該目標(biāo)緩存。如果該目標(biāo)緩存儲(chǔ)存順序映射項(xiàng)目,從閃存存儲(chǔ) 器中取出Υ的地址映射寫入目標(biāo)緩存,且重新將該目標(biāo)緩存指定為存儲(chǔ)隨機(jī)映射項(xiàng)目的緩 存。
[0055] D、用于隨機(jī)存取存儲(chǔ)器空間受限的系統(tǒng)的基于需求的地址映射
[0056] D1、系統(tǒng)架構(gòu)
[0057] 圖6是一個(gè)隨機(jī)存取存儲(chǔ)器空間受限的系統(tǒng)的基于需求的地址映射的示意圖。如 圖6所示,閃存存儲(chǔ)器620儲(chǔ)存兩種類型的物理塊:數(shù)據(jù)塊630和轉(zhuǎn)換塊640。數(shù)據(jù)塊630 用于儲(chǔ)存來自輸入輸出請求的真實(shí)數(shù)據(jù),數(shù)據(jù)塊630根據(jù)塊映射方法映射。整個(gè)塊地址映 射表存儲(chǔ)于轉(zhuǎn)換塊640的復(fù)數(shù)個(gè)頁中,而不是按照傳統(tǒng)方法將地址映射表存儲(chǔ)于隨機(jī)存取 存儲(chǔ)器610中。用于儲(chǔ)存塊地址映射表的頁,稱為轉(zhuǎn)換頁。轉(zhuǎn)換塊640中的轉(zhuǎn)換頁采用細(xì) 粒度的頁映射方法實(shí)現(xiàn)。用于為訪問轉(zhuǎn)換頁提供物理頁地址的轉(zhuǎn)換頁映射表(ΤΡΜ?660駐 留于隨機(jī)存取存儲(chǔ)器610中。
[0058] 用于數(shù)據(jù)塊630的塊地址映射表存儲(chǔ)于轉(zhuǎn)換頁中,同時(shí)轉(zhuǎn)換頁的頁地址映射表存 儲(chǔ)于隨機(jī)存取存儲(chǔ)器610中的ΤΡΜΤ 660中??紤]到索引的局部性和工作負(fù)荷的訪問頻率, 在隨機(jī)存取存儲(chǔ)器中設(shè)計(jì)兩級緩存。數(shù)據(jù)塊映射表緩存(DBMTC) 650,作為第一級緩存,用 于緩存需要的數(shù)據(jù)塊地址映射。第二級緩存670包括兩個(gè)獨(dú)立的緩存,分別是轉(zhuǎn)換頁索引 位置緩存(TPRLC) 671和轉(zhuǎn)換頁訪問頻率緩存(TPAFC) 672。TPRLC 671用于選擇性地緩存 包含第一級緩存(即DBMTC 650)中需求的地址映射的轉(zhuǎn)換頁。TPAFC 672用于當(dāng)被請求的 映射在DBMTC 650和TPRLC 671中未能找到后,緩存被頻繁訪問的轉(zhuǎn)換頁。數(shù)據(jù)塊地址映 射表根據(jù)不同的緩存策略緩存于兩級緩存650、670中。首先在第一級緩存(DBMTC 650)中 查找被請求的地址映射。如果未命中,可通過查詢TPMT 660得到該地址映射的位置信息。
[0059] D2、數(shù)據(jù)塊630和轉(zhuǎn)換頁
[0060] 如前所述,用于儲(chǔ)存來自輸入輸出請求的真實(shí)數(shù)據(jù)的數(shù)據(jù)塊630由塊映射方法實(shí) 現(xiàn)映射,其中,一個(gè)虛擬數(shù)據(jù)塊地址(DVBA)映射到一個(gè)主物理數(shù)據(jù)塊地址(DPPBA)和一個(gè) 替補(bǔ)物理數(shù)據(jù)塊地址(DRPBA)。如前所述,用于存儲(chǔ)塊地址映射表的轉(zhuǎn)換塊640中的任一頁 稱為轉(zhuǎn)換頁。一個(gè)物理轉(zhuǎn)換頁可以儲(chǔ)存一定數(shù)量的邏輯固定的塊地址映射。舉例來說,如 果表達(dá)一個(gè)地址映射項(xiàng)目需要8字節(jié)(bytes),那么可以在一個(gè)轉(zhuǎn)換頁中儲(chǔ)存256個(gè)邏輯上 連續(xù)的映射。而且,存儲(chǔ)整個(gè)塊映射表帶來的空間開銷相比于整個(gè)閃存空間是可以忽略的。 32GB閃存存儲(chǔ)器只需要大約1. 13MB閃存空間來儲(chǔ)存所有的映射。
[0061] D3、轉(zhuǎn)換頁映射表(TPMT) 660
[0062] 圖7示出了轉(zhuǎn)換頁映射表660。轉(zhuǎn)換頁映射表660實(shí)現(xiàn)從一個(gè)虛擬轉(zhuǎn)換頁地 址(TVPA)到一個(gè)物理轉(zhuǎn)換頁地址(TPPA)的地址映射。假定以被請求的虛擬數(shù)據(jù)塊地 址(DVBA)除以每個(gè)物理轉(zhuǎn)換頁能存儲(chǔ)的映射的數(shù)目,所得的商被定義為虛擬轉(zhuǎn)換頁地址 (TVPA)。因?yàn)檗D(zhuǎn)換頁使用了頁地址映射,使用TPMT 660中的條目可以立刻尋址用于儲(chǔ)存被 請求的虛擬數(shù)據(jù)塊地址的物理轉(zhuǎn)換頁。此外,在TPMT 660中,采用"物理轉(zhuǎn)換頁地址的位 置"項(xiàng)目來記錄每個(gè)虛擬轉(zhuǎn)換頁地址的物理轉(zhuǎn)換頁的位置(即在第二級緩存670中或者在閃 存存儲(chǔ)器620中),因此,如果該物理轉(zhuǎn)換頁已經(jīng)在第二級緩存670中緩存,可避免從閃存存 儲(chǔ)器620中讀取該物理轉(zhuǎn)換頁的不必要的麻煩。作為優(yōu)選,該"位置指示器"還可指明保存 該物理轉(zhuǎn)換頁的具體的緩存(也就是TPRLC 671或者TPAFC 672)。
[0063] 在ΤΡΜΤ 660中,另外的一個(gè)項(xiàng)目"未命中頻率(miss frequency)"用于在第一級 緩存(DBMTC 650)和TPRLC 671未命中被請求的映射時(shí),記錄每個(gè)虛擬轉(zhuǎn)換頁地址的訪問 頻率。若最早的兩個(gè)緩存,即DBMTC 650和TPRLC 671,未命中被請求的映射,將"未命中頻 率"的數(shù)值加一。由此可知"未命中頻率"的累積數(shù)值表示從閃存存儲(chǔ)器620讀取相對應(yīng)轉(zhuǎn) 換頁到隨機(jī)存取存儲(chǔ)器610的次數(shù)。雖然TPMT 660處于隨機(jī)存取存儲(chǔ)器610中,不占用任 何閃存存儲(chǔ)器620中的空間,但是該TPMT660不會(huì)帶來多少空間開銷。舉例來說,32GB閃存 存儲(chǔ)器只需要1024個(gè)轉(zhuǎn)換頁,這些轉(zhuǎn)換頁僅占用4KB的隨機(jī)存取存儲(chǔ)器空間。
[0064] D4、數(shù)據(jù)塊映射表緩存(DBMTC) 650
[0065] 為了利用工作負(fù)載的時(shí)間局部性,在隨機(jī)存取存儲(chǔ)器610中設(shè)置DBMTC 650,用以 緩存少數(shù)與需求的塊有關(guān)的活躍映射。圖8示出了 DBMTC 650。在隨機(jī)存取存儲(chǔ)器610中 查詢并且更新被請求的映射,而非在轉(zhuǎn)換頁中更新,前者減少了地址轉(zhuǎn)換的開銷。如果被請 求的映射不在緩存中且緩存未滿,被請求的映射一旦從物理轉(zhuǎn)換頁中取回將直接讀入緩存 中。如果緩存已滿,需要將一個(gè)被替換映射槽(victim mapping slot)移出以便給新存入的 映射槽騰出空間。這可能導(dǎo)致額外的轉(zhuǎn)換頁拷貝操作。為了避免這種額外開銷,被替換轉(zhuǎn) 換頁(victim translation page)的選擇和轉(zhuǎn)換頁讀入操作應(yīng)按照以下方法執(zhí)行:在DBMTC 650的所有映射槽中,如果一映射同時(shí)緩存于第二級緩存670中,選擇該映射作為被替換映 射;如果一映射槽自從讀入緩存后從未更新過,可以選擇其作為被替換映射;否則,在第一 級緩存(即DBMTC 650)中不需要被替換項(xiàng)目并且不執(zhí)行讀取操作。因?yàn)榈谝患壘彺嬖陔S機(jī) 存取存儲(chǔ)器中,DBMTC 650可根據(jù)需要緩存的地址映射表的大小來靈活地設(shè)定成不同的大 小。舉例來說,DBMTC 650的大小可設(shè)定為16KB,只有映射表總量(1. 13MB)的約1%。如果 一個(gè)映射占用8字節(jié)(bytes),那么DBMTC 650之中保存了 2048個(gè)條目。當(dāng)活躍的映射組 較大,可采用4路組相聯(lián)映射法來組織緩存。
[0066] D5、轉(zhuǎn)換頁索引位置緩存(TPRLC) 671
[0067] 用于儲(chǔ)存剛剛在第一級緩存(DBMTC 650)未命中的需要的映射槽的轉(zhuǎn)換頁被選擇 性地緩存于TPRLC 671中。圖9示出了 TPRLC 671。因?yàn)檗D(zhuǎn)換頁覆蓋較寬范圍的邏輯上連 續(xù)的多個(gè)地址映射,根據(jù)工作負(fù)載的空間局部性,TPRLC 671有一定幾率命中一個(gè)第一級緩 存未命中的請求。當(dāng)?shù)谝患壘彺嫖疵斜徽埱蟮挠成?,如果根?jù)第一級緩存的成本效益分 析未選出被替換對象,則不執(zhí)行讀入操作。在這種情形下,被請求的映射仍可以緩存于隨 機(jī)存取存儲(chǔ)器610中,因?yàn)槠鋵?yīng)的轉(zhuǎn)換頁將從閃存儲(chǔ)器620讀入TPRLC 671中。作為第 二級緩存670的一部分,TPRLC 671的讀入操作將在對第一級緩存的讀入操作時(shí)觸發(fā)。當(dāng) TPRLC 671已滿,將一個(gè)被替換頁移出以便為將要讀入的轉(zhuǎn)換頁騰出空間。使用最近最少使 用(LRU)算法作為TPRLC 671的替換算法。
[0068] D6、轉(zhuǎn)換頁訪問頻率緩存(TPAFC) 672
[0069] 最傾向于被讀入隨機(jī)存儲(chǔ)器610的轉(zhuǎn)換頁將被選擇性地緩存于TPAFC 672。TPAFC 672如圖10所示。當(dāng)請求的映射在第一級緩存(DBMTC 650)和TPRLC 671中頻繁地未命中 時(shí),將轉(zhuǎn)換頁從閃存存儲(chǔ)器620讀入隨機(jī)存取存儲(chǔ)器610能夠有效地減少地址轉(zhuǎn)換開銷。作 為第二級緩存670的另一部分,指定TPAFC 672緩存包含頻繁地被請求的映射的轉(zhuǎn)換頁。通 過這種方式,在DBMTC 650和TPRLC 671中未命中的被請求映射在這個(gè)緩存中可能命中。當(dāng) 緩存已滿時(shí)使用最少使用(LFU)替換算法驅(qū)逐出被替換轉(zhuǎn)換頁。當(dāng)在閃存存儲(chǔ)器620中的 一個(gè)轉(zhuǎn)換頁相比于訪問頻率最低的已緩存轉(zhuǎn)換頁擁有較高的訪問頻率,則執(zhí)行讀入操作。
[0070] 第二級緩存670 (TPRLC 671和TPAFC 672的總和)的規(guī)??梢愿鶕?jù)隨機(jī)存取存 儲(chǔ)器規(guī)模的限制靈活地調(diào)節(jié)。舉例來說,10個(gè)轉(zhuǎn)換頁占據(jù)大約20KB隨機(jī)存取存儲(chǔ)器空間。 因?yàn)樘摂M轉(zhuǎn)換頁地址作為索引緩存于第二級緩存670中,使用順序查找足以搜索其中存儲(chǔ) 的邏輯上連續(xù)的地址映射。
[0071] D7、從邏輯地址到物理地址的轉(zhuǎn)換
[0072] 首先在兩級緩存(DBMTC 650, TPRLC 671和TPAFC 672)中搜尋被請求映射,如果 未在緩存中命中,從轉(zhuǎn)換頁之一中將其取回。圖11描述了從邏輯數(shù)據(jù)塊地址到物理數(shù)據(jù)塊 地址的地址轉(zhuǎn)換處理過程。
[0073] 如果被請求映射在第一級緩存(即DBMTC 650)中命中,可直接獲取該被請求映射。 否則,需要查詢TPMT 660找出包含該被請求映射的轉(zhuǎn)換頁的位置。如果被請求映射緩存于 第二級緩存670中,可使用順序查找法在第二級緩存670中將其找出。如果兩級緩存(即 DBMTC 650, TPRLC 671和TPAFC 672)均未命中被請求映射且均已滿,該被請求映射槽將讀 入第一級緩存(DBMTC 650),并且被請求的轉(zhuǎn)換頁也將讀入TPRLC 671或TPAFC 672中。
[0074] 圖12示出了將被請求的物理轉(zhuǎn)換頁讀入第二級緩存670的處理過程。在被請求 映射被讀入DBMTC 650后,相對應(yīng)的轉(zhuǎn)換頁也被載入第二級緩存670。如果TPRLC 671和 TPAFC 672均已滿,從TPRLC 671和TPAFC 672中分別依照最近最少使用(LRU)替換算法和 最少訪問(LFU)替換算法選出被替換轉(zhuǎn)換頁。如果被請求轉(zhuǎn)換頁的訪問頻率比TPAFC 672 中的被替換轉(zhuǎn)換頁的訪問頻率高,在被替換轉(zhuǎn)換頁移出后將被請求的轉(zhuǎn)換頁讀入TPAFC 672中。如果在閃存存儲(chǔ)器620中的被請求頁和TPAFC 672中的被替換頁有相同的訪問頻 率,基于如下的簡單的成本效益分析來執(zhí)行讀入操作。若被替換頁自讀入TPAFC 670后無 改變,將其移出,并讀入被請求的轉(zhuǎn)換頁;否則,將被請求頁讀入TPRLC 671中。當(dāng)被請求頁 的訪問頻率比TPAFC 672中的被替換頁的低,在TPRLC 671中執(zhí)行移出操作之后,將被請求 頁讀入TPRLC 671中。
[0075] H、本發(fā)明
[0076] 本發(fā)明提供用于在包含閃存存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器的計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃 存轉(zhuǎn)換層(FTL)的第一方法和第二方法。閃存存儲(chǔ)器被劃分為多個(gè)塊,每個(gè)塊包括多個(gè)頁, 且該塊可由物理塊地址尋址。該塊中的每個(gè)頁可由物理頁地址尋址。
[0077] 在閃存轉(zhuǎn)換層(FTL)的實(shí)施中,常涉及用于控制FTL相關(guān)操作的一個(gè)或多個(gè)處理 器。該一個(gè)或多個(gè)處理器可包括帶有程序和數(shù)據(jù)存儲(chǔ)器的通用處理器、用于控制及讀一 寫一擦除訪問閃存存儲(chǔ)器的閃存控制器、或用于計(jì)算機(jī)子系統(tǒng)與子系統(tǒng)的外部系統(tǒng)環(huán)境交 互的通信接口處理器。可以將該一個(gè)或者多數(shù)個(gè)處理器合并入在此考慮的計(jì)算機(jī)子系統(tǒng)。 可配置該一個(gè)或多個(gè)處理器,使其根據(jù)本發(fā)明所公開的第一方法或第二方法在計(jì)算機(jī)子系 統(tǒng)中實(shí)現(xiàn)FTL處理過程。
[0078] 本發(fā)明公開的第一和第二方法可有效地適用于NAND閃存存儲(chǔ)器。但是,本發(fā)明不 局限于用于NAND閃存存儲(chǔ)器。本發(fā)明適用于支持頁讀/寫(page-wise read/write)、并且 劃分多個(gè)塊,且每個(gè)塊進(jìn)一步劃分為多個(gè)頁的通用閃存存儲(chǔ)器。
[0079] 在此公開的第一方法,基于前述C部分中的揭露,詳細(xì)闡述如下。優(yōu)選地,該第一 方法適用于在隨機(jī)存取存儲(chǔ)器空間非常有限的情況下實(shí)施FTL。
[0080] 在第一方法中,在閃存存儲(chǔ)器中分配第一數(shù)目個(gè)塊作為儲(chǔ)存真實(shí)數(shù)據(jù)的數(shù)據(jù)塊, 并且分配除數(shù)據(jù)塊之外的第二數(shù)目個(gè)塊作為轉(zhuǎn)換塊。其中,將轉(zhuǎn)換塊整體配置為用于儲(chǔ)存 包含復(fù)數(shù)個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu)的塊映射表。每個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu)包括(1)復(fù)數(shù) 個(gè)數(shù)據(jù)塊中的一個(gè)數(shù)據(jù)塊的邏輯塊地址和(2)與該復(fù)數(shù)個(gè)數(shù)據(jù)塊中的一個(gè)數(shù)據(jù)塊的邏輯塊 地址相對應(yīng)的物理塊地址。如前所述,任一轉(zhuǎn)換塊中的一頁作為轉(zhuǎn)換頁。
[0081] 此外,分配隨機(jī)存取存儲(chǔ)器的第一部分作為緩存空間分配表,該緩存空間分配表 配置為包含復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)。每個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)或被標(biāo)記為可讀 (available),或包括(1)從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選定的一個(gè)數(shù)據(jù)塊的邏輯塊地址和(2)與該從 復(fù)數(shù)個(gè)數(shù)據(jù)塊中選定的一個(gè)數(shù)據(jù)塊的邏輯塊地址相對應(yīng)的物理塊地址。此外,分配隨機(jī)存 取存儲(chǔ)器的第二部分作為轉(zhuǎn)換頁映射表,配置該轉(zhuǎn)換頁映射表使其包含復(fù)數(shù)個(gè)第三地址映 射數(shù)據(jù)結(jié)構(gòu)。每個(gè)第三地址映射數(shù)據(jù)結(jié)構(gòu)包括(1)從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選定的一個(gè)數(shù)據(jù)塊的 邏輯塊地址,和(2)與該從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選定的一個(gè)數(shù)據(jù)塊的邏輯塊地址相對應(yīng)的物理 塊地址。
[0082] 當(dāng)接收到地址轉(zhuǎn)換請求,通過地址轉(zhuǎn)換處理過程將被請求的虛擬數(shù)據(jù)塊地址轉(zhuǎn)換 為與其相對應(yīng)的物理塊地址。
[0083] 地址轉(zhuǎn)換處理過程包括,查找緩存空間分配表,以從復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié) 構(gòu)中識別是否存在第一識別數(shù)據(jù)結(jié)構(gòu),該第一識別數(shù)據(jù)結(jié)構(gòu)的邏輯塊地址與被請求的虛擬 數(shù)據(jù)塊地址相符。優(yōu)選地,選用C4中描述的順序查找法查找緩存空間分配表。注意第一識 別數(shù)據(jù)結(jié)構(gòu)是從緩存空間分配表中的復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)之中選出的。如果識別 出第一識別數(shù)據(jù)結(jié)構(gòu),將第一識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址指定為與被請求的虛擬數(shù)據(jù)塊 地址相對應(yīng)的物理塊地址。如果未識別出第一識別數(shù)據(jù)結(jié)構(gòu),查找閃存存儲(chǔ)器中的轉(zhuǎn)換塊 以便識別第二識別數(shù)據(jù)結(jié)構(gòu),該第二識別數(shù)據(jù)結(jié)構(gòu)中的邏輯塊地址與被請求的虛擬塊地址 相符。該第二識別數(shù)據(jù)結(jié)構(gòu)是從轉(zhuǎn)換塊中的復(fù)數(shù)個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu)中選出的。轉(zhuǎn)換 塊和其中的轉(zhuǎn)換頁是根據(jù)轉(zhuǎn)換頁映射表提供的物理頁地址來訪問的。當(dāng)識別出第二識別數(shù) 據(jù)結(jié)構(gòu)時(shí),將第二識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址指定為與被請求的虛擬數(shù)據(jù)塊地址相對應(yīng) 的物理塊地址。而且通過緩存更新處理過程使用該第二識別數(shù)據(jù)結(jié)構(gòu)更新緩存空間分配 表。該緩存更新處理過程包括將第二識別數(shù)據(jù)結(jié)構(gòu)拷貝至從復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu) 中選定的目標(biāo)第二地址映射數(shù)據(jù)結(jié)構(gòu)中。
[0084] 在本發(fā)明的第一方法中,優(yōu)選地,緩存空間分配表格式化為第三數(shù)目個(gè)緩存空間。 在這種分區(qū)條件下,緩存更新處理過程進(jìn)一步包括如下操作。如果緩存空間分配表未滿,選 擇標(biāo)記為空閑的第二地址映射數(shù)據(jù)結(jié)構(gòu)中的一個(gè)作為選定的目標(biāo)第二地址映射數(shù)據(jù)結(jié)構(gòu)。 如果緩存空間分配表已滿,選定緩存空間中的一個(gè)作為第一選定緩存空間。然后選擇第一 選定緩存空間中的復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)之一作為選定的目標(biāo)第二地址映射數(shù)據(jù) 結(jié)構(gòu),用于拷貝入第二識別數(shù)據(jù)結(jié)構(gòu)。進(jìn)一步地,將第一選定緩存空間中除目標(biāo)第二地址映 射數(shù)據(jù)結(jié)構(gòu)以外的其他全部第二地址映射數(shù)據(jù)結(jié)構(gòu)標(biāo)記為空閑。
[0085] 在一具體實(shí)施中,用于格式化緩存空間分配表的第三數(shù)目是二。例如C3節(jié)中已提 及將緩存空間分配表劃分兩個(gè)緩存空間。于是緩存空間分配表格式化為一個(gè)第一緩存空間 和一個(gè)第二緩存空間。假設(shè)緩存空間分配表已滿的情形。如果已指定第一緩存空間用于存 儲(chǔ)隨機(jī)映射項(xiàng)目,選擇第一個(gè)緩存空間作為用于拷貝入第二識別數(shù)據(jù)結(jié)構(gòu)的第一選定緩存 空間。如果是另外一種情況,指定第一緩存空間存儲(chǔ)順序映射項(xiàng)目而不是隨機(jī)映射項(xiàng)目,選 擇第二緩存空間作為第一選定緩存空間。假設(shè)另一種情形,緩存空間分配表未滿。在這種 情形下,將包含選定的目標(biāo)第二地址映射數(shù)據(jù)結(jié)構(gòu)的緩存空間(或者是第一緩存空間或者 是第二緩存空間),指定為第二選定緩存空間。緩存更新處理過程還進(jìn)一步包括:如果第二 選定緩存空間沒有被指定為用于存儲(chǔ)隨機(jī)映射項(xiàng)目,而且如果第二識別數(shù)據(jù)結(jié)構(gòu)不是第二 選定緩存空間中的順序項(xiàng)目,則重新指定第二選定緩存空間作為用于儲(chǔ)存隨機(jī)映射項(xiàng)目的 緩存空間。
[0086] 在C3節(jié)中提到的實(shí)施例中,將虛擬數(shù)據(jù)塊地址映射到主物理數(shù)據(jù)塊地址和替補(bǔ) 物理數(shù)據(jù)塊地址。于是在任何一個(gè)第一和第二地址映射數(shù)據(jù)結(jié)構(gòu)中,其中的邏輯塊地址作 為虛擬數(shù)據(jù)塊地址,并且其中的物理數(shù)據(jù)塊地址作為主物理數(shù)據(jù)地址。任意一個(gè)第一地址 映射數(shù)據(jù)結(jié)構(gòu)可更進(jìn)一步包括一個(gè)與其中的邏輯塊地址相對應(yīng)的替補(bǔ)物理數(shù)據(jù)塊地址。相 似地,第二地址映射數(shù)據(jù)結(jié)構(gòu)中的任何一個(gè),如果沒有標(biāo)記為空閑,可以更進(jìn)一步包括一個(gè) 與其中的邏輯塊地址相對應(yīng)的替補(bǔ)邏輯塊地址。在這種設(shè)置下,在接收到地址轉(zhuǎn)換請求之 后,能夠獲取與被請求的虛擬數(shù)據(jù)塊地址相對應(yīng)的主物理塊地址和替補(bǔ)物理數(shù)據(jù)塊地址。 [0087] 以上述D節(jié)中公開的內(nèi)容為基礎(chǔ),在下列各項(xiàng)中詳細(xì)地闡述本發(fā)明的第二方法。 優(yōu)選地,第二方法適用于在隨機(jī)存取存儲(chǔ)器空間受限的系統(tǒng)中實(shí)現(xiàn)FTL。
[0088] 在第二方法中,分配第一數(shù)目個(gè)塊作為儲(chǔ)存真實(shí)數(shù)據(jù)的數(shù)據(jù)塊;分配除數(shù)據(jù)塊之 外的第二數(shù)目個(gè)塊作為轉(zhuǎn)換塊;配置整個(gè)轉(zhuǎn)換塊使其用于存儲(chǔ)塊映射表,該塊映射表包括 復(fù)數(shù)個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu)。每個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu)包括(1)復(fù)數(shù)個(gè)數(shù)據(jù)塊中的一 個(gè)數(shù)據(jù)塊的邏輯塊地址和(2)與所述復(fù)數(shù)個(gè)數(shù)據(jù)塊中的一個(gè)數(shù)據(jù)塊的邏輯塊地址相對應(yīng)的 物理塊地址。
[0089] 分配隨機(jī)存取存儲(chǔ)器的第一部分作為數(shù)據(jù)塊映射表緩存(DBMTC),配置該DBMTC 使其包含復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)。每個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)或標(biāo)記為空閑,或包 括從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選出的一個(gè)數(shù)據(jù)塊的邏輯塊地址及與該從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選定的一 個(gè)數(shù)據(jù)塊的邏輯地址相對應(yīng)的物理塊地址。
[0090] 分配隨機(jī)存取存儲(chǔ)器的第二部分作為轉(zhuǎn)換頁映射表(TPMT),配置該TPMT使其包 含復(fù)數(shù)個(gè)第三地址映射數(shù)據(jù)結(jié)構(gòu)。每個(gè)第三映射數(shù)據(jù)結(jié)構(gòu)包括(1)從所述復(fù)數(shù)個(gè)數(shù)據(jù)塊中 選出的一個(gè)數(shù)據(jù)塊的邏輯塊地址,(2)用于存儲(chǔ)與從所述復(fù)數(shù)個(gè)數(shù)據(jù)塊中選出的一個(gè)數(shù)據(jù) 塊的邏輯塊地址相對應(yīng)的物理地址的轉(zhuǎn)換頁的物理頁地址,(3)用于根據(jù)前述轉(zhuǎn)換頁的拷 貝是否緩存于隨機(jī)存取存儲(chǔ)器指示肯定結(jié)果或否定結(jié)果的位置指示器和(4)未命中頻率記 錄。
[0091] 分配隨機(jī)存取存儲(chǔ)器的第三部分為轉(zhuǎn)換頁索引位置緩存(TPRLC),配置該TPRLC 使其包含復(fù)數(shù)個(gè)第四地址映射數(shù)據(jù)結(jié)構(gòu)。每個(gè)第四地址映射數(shù)據(jù)結(jié)構(gòu)或標(biāo)記為空閑,或包 含(1)從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選出的一個(gè)數(shù)據(jù)塊的邏輯塊地址以及(2)與從所述復(fù)數(shù)個(gè)數(shù)據(jù)塊 中選出的一數(shù)據(jù)塊的邏輯塊地址相對應(yīng)的物理塊地址。
[0092] 分配隨機(jī)存取存儲(chǔ)器的第四部分為轉(zhuǎn)換頁存取頻率緩存(TPAFC),配置該TPAFC 使其包含復(fù)數(shù)個(gè)第五地址映射數(shù)據(jù)結(jié)構(gòu)。每個(gè)第五地址映射數(shù)據(jù)結(jié)構(gòu)或標(biāo)記為空閑,或包 含(1)從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選出的一個(gè)數(shù)據(jù)塊的邏輯塊地址以及(2)與該從復(fù)數(shù)個(gè)數(shù)據(jù)塊中 選出的一個(gè)數(shù)據(jù)塊的邏輯塊地址相對應(yīng)的物理塊地址。
[0093] 可選擇地且有利地,位置指示器可包括用于指示轉(zhuǎn)換頁的拷貝是否緩存于TPRLC 的第一標(biāo)記(first flag),和用于指示該拷貝是否緩存于TPAFC的第二標(biāo)記(second flag)。
[0094] 當(dāng)接收到地址轉(zhuǎn)換請求時(shí),通過地址轉(zhuǎn)換處理過程將被請求的虛擬數(shù)據(jù)塊地址轉(zhuǎn) 換為與其相對應(yīng)的物理塊地址。
[0095] 該地址轉(zhuǎn)換處理過程包括如下步驟,查詢DBMTC,以在復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié) 構(gòu)中識別是否存在第一識別數(shù)據(jù)結(jié)構(gòu),該第一識別數(shù)據(jù)結(jié)構(gòu)的邏輯塊地址與被請求的虛擬 數(shù)據(jù)塊地址相符。值得注意的是該第一識別數(shù)據(jù)結(jié)構(gòu)是從第二地址映射數(shù)據(jù)結(jié)構(gòu)中選出 的。如果識別出第一識別數(shù)據(jù)結(jié)構(gòu),將該第一識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址指定為與被請 求的虛擬數(shù)據(jù)塊地址相對應(yīng)的物理塊地址。如果未識別出第一識別數(shù)據(jù)結(jié)構(gòu),查詢TPMT以 識別第二識別映射數(shù)據(jù)結(jié)構(gòu),該第二識別映射數(shù)據(jù)結(jié)構(gòu)中的邏輯塊地址與被請求的虛擬數(shù) 據(jù)塊地址相符。相似地,該第二識別映射數(shù)據(jù)結(jié)構(gòu)是從復(fù)數(shù)個(gè)第三映射數(shù)據(jù)結(jié)構(gòu)中選出的。 如果第二識別數(shù)據(jù)結(jié)構(gòu)中的位置指示器給出肯定結(jié)果,該結(jié)果表示包含與地址轉(zhuǎn)換請求相 關(guān)的地址映射項(xiàng)目的轉(zhuǎn)換頁的一個(gè)拷貝存在于隨機(jī)存取存儲(chǔ)器中。查詢TPRLC和TPAFC,以 在復(fù)數(shù)個(gè)第四地址映射數(shù)據(jù)結(jié)構(gòu)和復(fù)數(shù)個(gè)第五地址映射數(shù)據(jù)結(jié)構(gòu)中識別第三識別數(shù)據(jù)結(jié) 構(gòu),該第三識別數(shù)據(jù)結(jié)構(gòu)的邏輯塊地址與被請求的虛擬數(shù)據(jù)塊地址相符。優(yōu)選地,如D7節(jié) 所述,使用順序查找法搜索TPRLC和TPAFC。如果在TPAFC中判斷存在第三識別數(shù)據(jù)結(jié)構(gòu), 在第二識別數(shù)據(jù)結(jié)構(gòu)中的未命中頻率記錄中增加一次。當(dāng)識別出第三識別數(shù)據(jù)結(jié)構(gòu),將第 三識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址指定為與被請求的虛擬數(shù)據(jù)塊地址相對應(yīng)的物理塊地址。 如果第二識別數(shù)據(jù)結(jié)構(gòu)中的位置指示器給出否定結(jié)果,從閃存存儲(chǔ)器中將包含存儲(chǔ)于第二 識別數(shù)據(jù)結(jié)構(gòu)中的物理頁地址的整個(gè)轉(zhuǎn)換頁載入隨機(jī)存取存儲(chǔ)器中。(該整個(gè)轉(zhuǎn)換頁將用 于更新TPRLC或TPAFC。)接著查詢載入的轉(zhuǎn)換頁,以在該載入的轉(zhuǎn)換頁中識別第四識別數(shù) 據(jù)結(jié)構(gòu),該第四識別數(shù)據(jù)結(jié)構(gòu)中的邏輯塊地址與被請求的虛擬數(shù)據(jù)塊地址相符。當(dāng)識別出 第四識別數(shù)據(jù)結(jié)構(gòu),將該第四識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址指定為與被請求的虛擬數(shù)據(jù)相 對應(yīng)的物理塊地址。并且使用第四識別數(shù)據(jù)結(jié)構(gòu)更新DBMTC。進(jìn)一步地通過緩存更新處理 過程使用整個(gè)載入的轉(zhuǎn)換頁更新TPRLC或TPAFC,并且使用肯定結(jié)果更新第二識別數(shù)據(jù)結(jié) 構(gòu)中的位置指示器。
[0096] 可選地,緩存更新處理過程具有下列各項(xiàng)特征。如果TPRLC和TPAFC中有任一個(gè) 未滿,在目標(biāo)緩存(TPRLC或TPAFC)中存儲(chǔ)載入的轉(zhuǎn)換頁。如果TPRLC和TPAFC均已滿,執(zhí) 行下列各項(xiàng):
[0097] ?從 TPRLC 中選擇第一被替換轉(zhuǎn)換頁(first victim translation page)。取回 第五識別數(shù)據(jù)結(jié)構(gòu)中的未命中頻率記錄,所述第五識別數(shù)據(jù)結(jié)構(gòu)是從第三地址映射數(shù)據(jù)結(jié) 構(gòu)中選出的,并且其中的物理頁地址與所述第一被替換轉(zhuǎn)換頁的物理頁地址相符。
[0098] ?從 TPAFC 中選擇第二被替換轉(zhuǎn)換頁(second victim translation page)。取回 第六識別數(shù)據(jù)結(jié)構(gòu)中的未命中頻率記錄,所述第六識別數(shù)據(jù)結(jié)構(gòu)是從第三地址映射數(shù)據(jù)結(jié) 構(gòu)中選出的,且其中的物理頁地址與所述第二被替換轉(zhuǎn)換頁的物理頁地址相符。
[0099] ?根據(jù)第五識別數(shù)據(jù)結(jié)構(gòu)和第六識別數(shù)據(jù)結(jié)構(gòu)中的未命中頻率記錄在第一被替 換轉(zhuǎn)換頁和第二被替換轉(zhuǎn)換頁中選擇一目標(biāo)被替換轉(zhuǎn)換頁;
[0100] ?將載入的轉(zhuǎn)換頁寫入該目標(biāo)被替換轉(zhuǎn)換頁。
[0101] 在D7節(jié)中給出了一個(gè)緩存更新處理過程的例子。優(yōu)選地,使用最近最少使用 (LRU)算法從TPRLC中的轉(zhuǎn)換頁中選出第一被替換轉(zhuǎn)換頁。并且優(yōu)選地,使用最少使用 (LFU)算法在TPAFC中的轉(zhuǎn)換頁中選出第二被替換轉(zhuǎn)換頁。
[0102] 在D2節(jié)中提到的一實(shí)施例中,將虛擬數(shù)據(jù)塊地址映射到主物理數(shù)據(jù)塊地址和替 補(bǔ)物理數(shù)據(jù)塊地址。由此,在任一第一、第二、第四和第五地址映射數(shù)據(jù)結(jié)構(gòu)中,其中的邏輯 塊地址作為虛擬數(shù)據(jù)塊地址,并且其中的物理塊地址作為主物理數(shù)據(jù)地址。任一第一地址 映射數(shù)據(jù)結(jié)構(gòu)可進(jìn)一步包括一替補(bǔ)物理數(shù)據(jù)塊地址,該替補(bǔ)物理數(shù)據(jù)塊地址與其中的邏輯 塊地址相對應(yīng)。相似地,未被標(biāo)示為空閑的第二、第四和第五地址映射數(shù)據(jù)結(jié)構(gòu)中的任何一 個(gè),均可進(jìn)一步包括一與其中的邏輯塊地址對應(yīng)的替補(bǔ)物理塊地址。在這種設(shè)置下,在接收 到地址轉(zhuǎn)換請求之后,能夠獲取與被請求的虛擬數(shù)據(jù)塊地址相對應(yīng)的主物理塊地址和替補(bǔ) 物理數(shù)據(jù)塊地址。
[0103] 本發(fā)明可在不脫離其中的原理和基本特征的前提下以其他具體形式實(shí)施。因此其 中的實(shí)施例是為了說明本發(fā)明,而非限制性的。本發(fā)明的保護(hù)范圍由權(quán)利要求限定,而非局 限于前述【具體實(shí)施方式】,并且所有與權(quán)利要求在含義上等同的更改,和在權(quán)利要求范圍中 的更改,也都處于本發(fā)明保護(hù)范圍內(nèi)。
【權(quán)利要求】
1. 一種在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,所述計(jì)算機(jī)子系統(tǒng)包括閃存存儲(chǔ)器 和隨機(jī)存取存儲(chǔ)器(RAM),所述閃存存儲(chǔ)器劃分為多個(gè)塊,每個(gè)塊包括多個(gè)頁,且所述塊由 物理塊地址尋址,任一塊中的每個(gè)頁由物理頁地址尋址,其特征在于,所述方法包括: 分配第一數(shù)目個(gè)塊作為儲(chǔ)存真實(shí)數(shù)據(jù)的數(shù)據(jù)塊; 分配除數(shù)據(jù)塊之外的第二數(shù)目個(gè)塊作為轉(zhuǎn)換塊,任一轉(zhuǎn)換塊中的頁稱為轉(zhuǎn)換頁,其中 轉(zhuǎn)換塊整體配置為用于存儲(chǔ)塊映射表,所述塊映射表包括復(fù)數(shù)個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu), 每個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu)包括復(fù)數(shù)個(gè)數(shù)據(jù)塊中的一個(gè)數(shù)據(jù)塊的邏輯塊地址和與該邏輯 塊地址相對應(yīng)的物理塊地址; 分配隨機(jī)存取存儲(chǔ)器的第一部分作為緩存空間分配表,所述緩存空間分配表配置為包 含復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu),每個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)或標(biāo)記為空閑(available), 或包括從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選定的一個(gè)數(shù)據(jù)塊的邏輯塊地址和與該邏輯塊地址相對應(yīng)的物 理塊地址; 分配隨機(jī)存取存儲(chǔ)器的第二部分作為轉(zhuǎn)換頁映射表,所述轉(zhuǎn)換頁映射表配置為包含復(fù) 數(shù)個(gè)第三地址映射數(shù)據(jù)結(jié)構(gòu),每個(gè)第三地址映射數(shù)據(jù)結(jié)構(gòu)包括從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選出的一 個(gè)數(shù)據(jù)塊的邏輯塊地址,和存儲(chǔ)有與該邏輯塊地址相對應(yīng)的物理塊地址的轉(zhuǎn)換頁的物理頁 地址; 當(dāng)接收到地址轉(zhuǎn)換請求時(shí),通過地址轉(zhuǎn)換處理過程將被請求的虛擬數(shù)據(jù)塊地址轉(zhuǎn)換為 與其相對應(yīng)的物理塊地址; 其中,所述地址轉(zhuǎn)換處理過程包括: 查找所述緩存空間分配表以從復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)中識別是否存在第一識 別數(shù)據(jù)結(jié)構(gòu),該第一識別數(shù)據(jù)結(jié)構(gòu)的邏輯塊地址與被請求的虛擬數(shù)據(jù)塊地址相符; 如果識別出第一識別數(shù)據(jù)結(jié)構(gòu),將該第一識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址指定為與被請 求的虛擬數(shù)據(jù)塊地址相對應(yīng)的物理塊地址; 如果未識別出第一識別數(shù)據(jù)結(jié)構(gòu),查找轉(zhuǎn)換塊以從復(fù)數(shù)個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu)中識 別第二識別數(shù)據(jù)結(jié)構(gòu),該第二識別數(shù)據(jù)結(jié)構(gòu)中的邏輯塊地址與被請求的虛擬塊地址相符, 其中所述轉(zhuǎn)換頁映射表提供存儲(chǔ)于其中的物理頁地址,用以訪問轉(zhuǎn)換塊; 當(dāng)識別出第二識別數(shù)據(jù)結(jié)構(gòu)時(shí),將該第二識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址指定為與被請 求的虛擬數(shù)據(jù)塊地址相對應(yīng)的物理塊地址;及 當(dāng)識別出第二識別數(shù)據(jù)結(jié)構(gòu)時(shí),通過緩存更新處理過程使用第二識別數(shù)據(jù)結(jié)構(gòu)更新緩 存空間分配表,其中,所述緩存更新處理過程包括將所述第二識別數(shù)據(jù)結(jié)構(gòu)拷貝至從復(fù)數(shù) 個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)中選定的目標(biāo)第二地址映射數(shù)據(jù)結(jié)構(gòu)中。
2. 根據(jù)權(quán)利要求1所述的在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,其特征在于,其 中,將所述緩存空間分配表格式化為第三數(shù)目個(gè)緩存空間,所述緩存更新處理過程進(jìn)一步 包括: 如果所述緩存空間分配表未滿,選擇標(biāo)記為空閑的第二地址映射數(shù)據(jù)結(jié)構(gòu)中的一個(gè)作 為所述選定的目標(biāo)第二地址映射數(shù)據(jù)結(jié)構(gòu);及 并且如果緩存空間分配表已滿,選擇所述緩存空間之一作為第一選定緩存空間;然后 選擇第一選定緩存空間中的復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)中的任一個(gè)作為所述選定的目 標(biāo)第二地址映射數(shù)據(jù)結(jié)構(gòu),并將第一選定緩存空間中除目標(biāo)第二地址映射數(shù)據(jù)結(jié)構(gòu)之外的 全部第二地址映射數(shù)據(jù)結(jié)構(gòu)標(biāo)記為空閑。
3. 根據(jù)權(quán)利要求2所述的在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,其特征在于, 所述第三數(shù)目是二,從而將緩存空間分配表格式化為第一緩存空間和第二緩存空間; 如果所述緩存空間分配表已滿,并且如果第一緩存空間指定為用于存儲(chǔ)隨機(jī)映射項(xiàng) 目,選擇所述第一緩存空間作為第一選定緩存空間; 如果所述緩存空間分配表已滿,并且如果第一緩存空間未指定為用于存儲(chǔ)隨機(jī)映射 項(xiàng)目,選擇所述第二緩存空間作為第一選定緩存空間;且所述緩存更新處理過程進(jìn)一步包 括: (a)對于第二選定緩存空間,其或者是第一緩存空間或者是第二緩存空間,被識別出包 含在所述緩存空間映射表未滿時(shí)選擇的所述目標(biāo)第二地址映射數(shù)據(jù)結(jié)構(gòu),如果該第二選定 緩存空間未指定為用于存儲(chǔ)隨機(jī)映射項(xiàng)目而且如果第二識別數(shù)據(jù)結(jié)構(gòu)不是第二選定緩存 空間中的順序項(xiàng)目,重新指定第二選定緩存空間作為儲(chǔ)存隨機(jī)映射項(xiàng)目的緩存空間。
4. 根據(jù)權(quán)利要求1所述的在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,其特征在于, 所述第一地址映射數(shù)據(jù)結(jié)構(gòu)中的任一個(gè)進(jìn)一步包括與邏輯塊地址相對應(yīng)的替補(bǔ)物理 數(shù)據(jù)塊地址,同時(shí)將所述邏輯塊地址作為虛擬數(shù)據(jù)塊地址并且將所述物理塊地址作為主物 理數(shù)據(jù)地址;并且, 所述第二地址映射數(shù)據(jù)結(jié)構(gòu)中的任一個(gè),如果沒有標(biāo)記為空閑,進(jìn)一步包括與所述邏 輯塊地址相對應(yīng)的替補(bǔ)物理數(shù)據(jù)塊地址,同時(shí)將所述邏輯塊地址作為虛擬數(shù)據(jù)塊地址并且 將所述物理塊地址作為主物理數(shù)據(jù)地址; 從而,在接收到地址轉(zhuǎn)換請求之后,能夠獲取與被請求的虛擬數(shù)據(jù)塊地址相對應(yīng)的主 物理塊地址和替補(bǔ)物理數(shù)據(jù)塊地址。
5. 根據(jù)權(quán)利要求1所述的在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,其特征在于,使 用順序查找法在緩存空間分配表中識別所述第一識別數(shù)據(jù)結(jié)構(gòu)。
6. 根據(jù)權(quán)利要求1所述的在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,其特征在于,所 述閃存存儲(chǔ)器是NAND閃存存儲(chǔ)器。
7. -種計(jì)算機(jī)子系統(tǒng),包括閃存存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器和一個(gè)或多個(gè)處理器,其特征 在于,所述一個(gè)或多個(gè)處理器用于執(zhí)行一處理過程,以實(shí)現(xiàn)權(quán)利要求1至4中任一項(xiàng)所述的 實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法。
8. -種在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,所述計(jì)算機(jī)子系統(tǒng)包括閃存存儲(chǔ)器 和隨機(jī)存取存儲(chǔ)器(RAM),所述閃存存儲(chǔ)器劃分為多個(gè)塊,每個(gè)塊包括多個(gè)頁,且所述塊由 物理塊地址尋址,任一塊中的每個(gè)頁由物理頁地址尋址,其特征在于,所述方法包括: 分配第一數(shù)目個(gè)塊作為儲(chǔ)存真正數(shù)據(jù)的數(shù)據(jù)塊; 分配除數(shù)據(jù)塊之外的第二數(shù)目個(gè)塊作為轉(zhuǎn)換塊,任一轉(zhuǎn)換塊中的頁稱為轉(zhuǎn)換頁,其中 轉(zhuǎn)換塊整體配置為用于存儲(chǔ)塊映射表,所述塊映射表包括復(fù)數(shù)個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu), 每個(gè)第一地址映射數(shù)據(jù)結(jié)構(gòu)包括復(fù)數(shù)個(gè)數(shù)據(jù)塊中的一個(gè)數(shù)據(jù)塊的邏輯塊地址和與該邏輯 塊地址相對應(yīng)的物理塊地址; 分配隨機(jī)存取存儲(chǔ)器的第一部分作為數(shù)據(jù)塊映射表緩存(DBMTC),所述數(shù)據(jù)塊映射表 緩存配置為包含復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu),每個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)或被標(biāo)記為空 閑,或包括從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選出的一個(gè)數(shù)據(jù)塊的邏輯塊地址及與該邏輯地址相對應(yīng)的物 理塊地址; 分配隨機(jī)存取存儲(chǔ)器的第二部分作為轉(zhuǎn)換頁映射表(TPMT),所述轉(zhuǎn)換頁映射表配置為 包含復(fù)數(shù)個(gè)第三地址映射數(shù)據(jù)結(jié)構(gòu),每個(gè)第三地址映射數(shù)據(jù)結(jié)構(gòu)包括從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選 出的一個(gè)數(shù)據(jù)塊的邏輯塊地址、用于存儲(chǔ)有與該邏輯塊地址相對應(yīng)的物理塊地址的轉(zhuǎn)換頁 的物理頁地址、用于根據(jù)前述轉(zhuǎn)換頁的拷貝是否緩存于所述隨機(jī)存取存儲(chǔ)器來指示肯定結(jié) 果或否定結(jié)果的位置指示器,和未命中頻率記錄; 分配隨機(jī)存取存儲(chǔ)器的第三部分作為轉(zhuǎn)換頁索引位置緩存(TPRLC),該轉(zhuǎn)換頁索引位 置緩存配置為包含復(fù)數(shù)個(gè)第四地址映射數(shù)據(jù)結(jié)構(gòu),每個(gè)第四地址映射數(shù)據(jù)結(jié)構(gòu)或標(biāo)記為空 閑,或包含從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選出的一個(gè)數(shù)據(jù)塊的邏輯塊地址以及與該邏輯塊地址相對應(yīng) 的物理塊地址; 分配隨機(jī)存取存儲(chǔ)器的第四部分為轉(zhuǎn)換頁存取頻率緩存(TPAFC),該轉(zhuǎn)換頁存取頻率 緩存配置為包含第五地址映射數(shù)據(jù)結(jié)構(gòu),每個(gè)第五地址映射數(shù)據(jù)結(jié)構(gòu)或標(biāo)記為空閑,或包 含從復(fù)數(shù)個(gè)數(shù)據(jù)塊中選出的一個(gè)數(shù)據(jù)塊的邏輯塊地址以及與該邏輯塊地址相對應(yīng)的物理 塊地址; 當(dāng)接收到地址轉(zhuǎn)換請求時(shí),通過地址轉(zhuǎn)換處理過程將被請求的虛擬數(shù)據(jù)塊地址轉(zhuǎn)換為 與其相對應(yīng)的物理塊地址; 其中,所述地址轉(zhuǎn)換處理過程包括: 查找數(shù)據(jù)塊映射表緩存,以從復(fù)數(shù)個(gè)第二地址映射數(shù)據(jù)結(jié)構(gòu)中識別是否存在第一識別 數(shù)據(jù)結(jié)構(gòu),該第一識別數(shù)據(jù)結(jié)構(gòu)的邏輯塊地址與被請求的虛擬數(shù)據(jù)塊地址相符; 如果識別出第一識別數(shù)據(jù)結(jié)構(gòu),將該第一識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址指定為與被請 求的虛擬數(shù)據(jù)塊地址相對應(yīng)物理塊地址; 如果未識別出第一識別數(shù)據(jù)結(jié)構(gòu),查找轉(zhuǎn)換頁映射表以從復(fù)數(shù)個(gè)第三地址映射數(shù)據(jù)結(jié) 構(gòu)中識別第二識別數(shù)據(jù)結(jié)構(gòu),該第二識別數(shù)據(jù)結(jié)構(gòu)中的邏輯塊地址與被請求的虛擬數(shù)據(jù)塊 地址相符; 如果該第二識別數(shù)據(jù)結(jié)構(gòu)中的位置指示器給出肯定結(jié)果,查找所述轉(zhuǎn)換頁索引位置緩 存(TPRLC)和所述轉(zhuǎn)換頁存取頻率緩存(TPAFC)以在復(fù)數(shù)個(gè)第四地址映射數(shù)據(jù)結(jié)構(gòu)和復(fù)數(shù) 個(gè)第五地址映射數(shù)據(jù)結(jié)構(gòu)中識別第三識別數(shù)據(jù)結(jié)構(gòu),該第三識別數(shù)據(jù)結(jié)構(gòu)的邏輯塊地址與 被請求的虛擬數(shù)據(jù)塊地址相符; 如果在TPAFC中識別出第三識別數(shù)據(jù)結(jié)構(gòu),在第二識別數(shù)據(jù)結(jié)構(gòu)中的未命中頻率記錄 中增加一次; 當(dāng)識別出第三識別數(shù)據(jù)結(jié)構(gòu)時(shí),將第三識別數(shù)據(jù)結(jié)構(gòu)中的物理塊地址指定為與被請求 的虛擬數(shù)據(jù)塊地址相對應(yīng)的物理塊地址; 如果該第二識別數(shù)據(jù)結(jié)構(gòu)中的位置指示器給出否定結(jié)果,將包含存儲(chǔ)于第二識別數(shù)據(jù) 結(jié)構(gòu)中的物理頁地址的整個(gè)轉(zhuǎn)換頁從閃存存儲(chǔ)器中載入隨機(jī)存取存儲(chǔ)器中,并且查找該載 入的轉(zhuǎn)換頁,以在載入的轉(zhuǎn)換頁中識別第四識別數(shù)據(jù)結(jié)構(gòu),該第四識別數(shù)據(jù)結(jié)構(gòu)中的邏輯 塊地址與被請求的虛擬數(shù)據(jù)塊地址相符; 當(dāng)識別出第四識別數(shù)據(jù)結(jié)構(gòu)時(shí),將該第四識別數(shù)據(jù)結(jié)構(gòu)的物理塊地址指定為與被請求 的虛擬數(shù)據(jù)塊地址相對應(yīng)的物理塊地址; 當(dāng)識別出第四識別數(shù)據(jù)結(jié)構(gòu)時(shí),使用第四識別數(shù)據(jù)結(jié)構(gòu)更新DBMTC ;并且, 當(dāng)識別出第四識別數(shù)據(jù)結(jié)構(gòu)時(shí),通過緩存更新處理過程使用載入的轉(zhuǎn)換頁更新TPRLC 或TPAFC,并用肯定結(jié)果更新第二識別數(shù)據(jù)結(jié)構(gòu)中的位置指示器。
9. 根據(jù)權(quán)利要求8所述的在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,其特征在于,所 述緩存更新處理過程包括: 如果TPRLC和TPAFC中有任一個(gè)未滿,將載入的轉(zhuǎn)換頁存儲(chǔ)到目標(biāo)緩存中,該目標(biāo)緩存 是從TPRLC和TPAFC中選出的、并且未滿的; 如果TPRLC和TPAFC均已滿,執(zhí)行以下步驟: a) 從TPRLC中選擇第一被替換轉(zhuǎn)換頁,并且取回第五識別數(shù)據(jù)結(jié)構(gòu)中的未命中頻率記 錄,所述第五識別數(shù)據(jù)結(jié)構(gòu)是從第三地址映射數(shù)據(jù)結(jié)構(gòu)中選出的,并且第五識別數(shù)據(jù)結(jié)構(gòu) 中的物理頁地址與所述第一被替換轉(zhuǎn)換頁的物理頁地址相符; b) 從TPAFC中選擇第二被替換轉(zhuǎn)換頁,并且取回第六識別數(shù)據(jù)結(jié)構(gòu)中的未命中頻率記 錄,所述第六識別數(shù)據(jù)結(jié)構(gòu)是從第三地址映射數(shù)據(jù)結(jié)構(gòu)中選出的,并且第六識別數(shù)據(jù)結(jié)構(gòu) 中的物理頁地址與所述第二被替換轉(zhuǎn)換頁的物理頁地址相符; c) 根據(jù)第五識別數(shù)據(jù)結(jié)構(gòu)和第六識別數(shù)據(jù)結(jié)構(gòu)中的未命中頻率記錄在第一被替換轉(zhuǎn) 換頁和第二被替換轉(zhuǎn)換頁中選擇一目標(biāo)被替換轉(zhuǎn)換頁; d) 將載入的轉(zhuǎn)換頁寫入所述目標(biāo)被替換轉(zhuǎn)換頁。
10. 根據(jù)權(quán)利要求9所述的在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,其特征在于,其 中: 使用最近最少使用(LRU)算法從TPRLC中的轉(zhuǎn)換頁中選出第一被替換轉(zhuǎn)換頁;并且 使用最少使用(Least frequently used,簡稱LFU)算法從TPAFC中的轉(zhuǎn)換頁中選出第 二被替換轉(zhuǎn)換頁。
11. 根據(jù)權(quán)利要求8所述的在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,其特征在于,其 中: 所述第一地址映射數(shù)據(jù)結(jié)構(gòu)中的任一個(gè)進(jìn)一步包括與邏輯塊地址相對應(yīng)的替補(bǔ)物理 數(shù)據(jù)塊地址,同時(shí)將所述邏輯塊地址作為虛擬數(shù)據(jù)塊地址并且將所述物理塊地址作為主物 理數(shù)據(jù)地址;并且, 所述第二地址映射數(shù)據(jù)結(jié)構(gòu)中的任一個(gè),如果沒有標(biāo)記為空閑,進(jìn)一步包括與所述邏 輯塊地址相對應(yīng)的替補(bǔ)物理數(shù)據(jù)塊地址,同時(shí)將所述邏輯塊地址作為虛擬數(shù)據(jù)塊地址并且 將所述物理塊地址作為主物理數(shù)據(jù)地址; 所述第四地址映射數(shù)據(jù)結(jié)構(gòu)中的任一個(gè),如果沒有標(biāo)記為空閑,進(jìn)一步包括與所述邏 輯塊地址相對應(yīng)的替補(bǔ)物理數(shù)據(jù)塊地址,同時(shí)將所述邏輯塊地址作為虛擬數(shù)據(jù)塊地址并且 將所述物理塊地址作為主物理數(shù)據(jù)地址;并且 所述第五地址映射數(shù)據(jù)結(jié)構(gòu)中的任一個(gè),如果沒有標(biāo)記為空閑,進(jìn)一步包括與所述邏 輯塊地址相對應(yīng)的替補(bǔ)物理數(shù)據(jù)塊地址,同時(shí)將所述邏輯塊地址作為虛擬數(shù)據(jù)塊地址并且 將所述物理塊地址作為主物理數(shù)據(jù)地址; 從而,在接收到地址轉(zhuǎn)換請求之后,能夠獲取與被請求的虛擬數(shù)據(jù)塊地址相對應(yīng)的主 物理塊地址和替補(bǔ)物理數(shù)據(jù)塊地址。
12. 根據(jù)權(quán)利要求8所述的在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,其特征在于,使 用順序查找法在緩存空間分配表中識別所述第一識別數(shù)據(jù)結(jié)構(gòu)。
13. 根據(jù)權(quán)利要求8所述的在計(jì)算機(jī)子系統(tǒng)中實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法,其特征在于,所 述閃存存儲(chǔ)器是NAND閃存存儲(chǔ)器。
14. 一種計(jì)算機(jī)子系統(tǒng),包括閃存存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器和一個(gè)或多個(gè)處理器,其特 征在于,所述一個(gè)或多個(gè)處理器用于執(zhí)行一處理過程,以實(shí)現(xiàn)權(quán)利要求8至11中任所述的 實(shí)現(xiàn)閃存轉(zhuǎn)換層的方法。
【文檔編號】G06F12/02GK104102591SQ201310465920
【公開日】2014年10月15日 申請日期:2013年9月30日 優(yōu)先權(quán)日:2013年4月8日
【發(fā)明者】邵子立, 秦志偉, 王毅, 陳仁海, 劉鐸 申請人:香港理工大學(xué)