存儲器控制器的制造方法
【專利摘要】本發(fā)明提供能夠盡可能高速地進行地址解析的存儲器控制器。根據(jù)本發(fā)明的一個實施方式,存儲器控制器具備第1接口、第2接口、緩存部、翻譯部、訪問部、鎖定部。上述第1接口接收鎖定請求及指定邏輯地址的訪問請求的輸入。上述第2接口連接于非易失性存儲器。上述緩存部緩存上述邏輯地址與上述非易失性存儲器的物理地址的對應信息。上述翻譯部通過參照上述緩存部,將上述訪問請求所指定的邏輯地址翻譯為上述物理地址。上述訪問部對上述翻譯后的物理地址所表示的位置進行與上述訪問請求相應的訪問。上述鎖定部禁止上述緩存部所具備的緩存行的重填。
【專利說明】存儲器控制器
[0001]相關(guān)申請
[0002]本申請享有以美國專利臨時申請61/740274號(申請日:2012年12月20日)為基礎(chǔ)申請的優(yōu)先權(quán)。本申請通過參照該基礎(chǔ)申請,包含基礎(chǔ)申請的全部內(nèi)容。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明的實施方式涉及存儲器控制器。
【背景技術(shù)】
[0004]控制NAND型的閃速存儲器(以下稱為NAND存儲器)的存儲器控制器,由內(nèi)置的控制用的存儲器控制器執(zhí)行邏輯地址與物理地址的映射。以下,將表示邏輯地址與物理地址的對應關(guān)系的數(shù)據(jù)稱為L2P (Logical To Physical,邏輯到物理)表。
[0005]L2P表存儲于分配給NAND存儲器自身的一部分的系統(tǒng)數(shù)據(jù)區(qū)域。在存儲器控制器所具備的RAM上保持L2P表。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的一個實施方式的目的在于提供能夠盡可能高速地進行地址解析的存儲器控制器。
[0007]根據(jù)本發(fā)明的一個實施方式,存儲器控制器具備第I接口、第2接口、緩存部、翻譯部、訪問部、鎖定部。上述第I接口接收鎖定請求及指定邏輯地址的訪問請求的輸入。上述第2接口連接于非易失性存儲器。上述緩存部緩存上述邏輯地址與上述非易失性存儲器的物理地址的對應信息。上述翻譯部通過參照上述緩存部,將上述訪問請求所指定的邏輯地址翻譯為上述物理地址。上述訪問部對上述翻譯后的物理地址所表示的位置進行與上述訪問請求相應的訪問。上述鎖定部禁止上述緩存部所具備的緩存行的重填。
【專利附圖】
【附圖說明】
[0008]圖1是表示第I實施方式的存儲器控制器的結(jié)構(gòu)的圖。
[0009]圖2是說明邏輯地址與物理地址的對應關(guān)系的圖。
[0010]圖3是說明緩存行的鎖定請求、解鎖請求及訪問請求的一例的圖。
[0011]圖4是說明由地址解析部進行的緩存行的操作例的圖。
[0012]圖5是說明接受訪問請求時的地址解析部的工作的流程圖。
[0013]圖6是說明第I選擇處理的流程圖。
[0014]圖7是說明第2選擇處理的流程圖。
[0015]圖8是說明替代緩存行編號而指定區(qū)域編號的請求的一例的圖。
[0016]圖9是說明第2實施方式的存儲器控制器的結(jié)構(gòu)的圖。
[0017]圖10是說明訪問模式的例子的圖。
[0018]圖11是說明每個區(qū)域的重填數(shù)的圖。[0019]圖12是說明由鎖定判定部進行的工作的流程圖。
[0020]圖13是說明由鎖定判定部進行的另外的工作的流程圖。
[0021]符號說明
[0022]100存儲器控制器,110主機接口,120地址解析部,121L2P表緩存,122行鎖定部,130用戶數(shù)據(jù)訪問部,140存儲器接口,200主機,300NAND存儲器,400存儲器控制器,410主機接口,420地址解析部,422行鎖定部,423訪問模式分析部,424鎖定判定部。
【具體實施方式】
[0023]在不具有大容量的RAM的存儲器控制器中,將L2P表細分化為適合的大小的條目,并且通過僅將必要的條目讀出到RAM上,來實現(xiàn)映射。L2P表的各個條目保存連續(xù)的特定邏輯地址范圍的映射信息。RAM中的存儲條目的區(qū)域可以采用緩存構(gòu)造。由此,在邏輯地址空間中訪問模式具有局部性的情況下,能夠削減從NAND存儲器讀出L2P表的條目(以下稱為表條目)的次數(shù)。
[0024]使命中率提高的又一個訪問模式是按照順序反復訪問幾個邏輯地址的情況。但是,這僅限于在訪問的反復模式循環(huán)一周期間所參照的表條目的數(shù)量(以下稱為反復間隔)比緩存行數(shù)少的情況。在反復間隔比緩存行數(shù)多的情況下,在反復模式循環(huán)一周并返回時,由于之前的表條目已經(jīng)從緩存被逐出,所以需要再次從NAND存儲器讀出。這是與在執(zhí)行代碼長度大的程序循環(huán)時在CPU緩存上發(fā)生的抖動(Thrashing)類似的現(xiàn)象。
[0025]作為有可能發(fā)生這樣的抖動的例子,舉出主機使用具有日記(Journal ing )功能的文件系統(tǒng)的情況。具備日記的文件系統(tǒng)在向存儲器寫入用戶數(shù)據(jù)時,將用戶數(shù)據(jù)和記述了變更內(nèi)容的變更日志(log) —起以事務為單位進行記錄。為了應對存儲器的突發(fā)的不良狀況,將變更日志記錄在與用戶數(shù)據(jù)分離的位置。用戶數(shù)據(jù)的變更和與之對應的變更日志必須成對記錄在存儲器。因此,對存儲用戶數(shù)據(jù)的區(qū)域的訪問和對存儲變更日志的區(qū)域的訪問交替地發(fā)生。
[0026]存儲變更日志的區(qū)域通常被確保為環(huán)形緩沖器。每次發(fā)生事務時,在該緩沖器的末尾增加新的變更日志。因此,若僅著眼于變更日志,則可視為發(fā)生了順序訪問。但是,由于在變更日志的記錄之間加入了用戶數(shù)據(jù)的寫入,所以不是完全的順序訪問,實現(xiàn)上述的反復訪問。在用戶數(shù)據(jù)的寫入期間所需的表條目的數(shù)量比緩存行數(shù)少的情況下,前次的變更日志的記錄時所緩存的表條目在接著寫入變更日志時還殘留在緩存上的可能性高。在該情況下,由于曾經(jīng)讀出的環(huán)形緩沖器用的表條目在之后的變更日志寫入時還可被參照,所以緩存的命中率提高。反之,在用戶數(shù)據(jù)的寫入期間所需的表條目的數(shù)量比緩存行數(shù)多的情況下,在變更日志的記錄時環(huán)形緩沖器用的表條目會從緩存上被逐出。在該情況下,每次記錄變更日志時,需要從NAND存儲器讀出環(huán)形緩沖器用的表條目。從而,會發(fā)生上述的抖動,緩存的命中率降低。
[0027]為了防止暫時存儲L2P表的緩存上的抖動的發(fā)生,本發(fā)明的實施方式的存儲器控制器具有鎖定緩存行的功能。根據(jù)本發(fā)明的實施方式,鎖定了的緩存行上的表條目不會從緩存被逐出,直到解除鎖定為止。根據(jù)該功能,在反復間隔比緩存行數(shù)多的情況下,可產(chǎn)生使緩存的命中率提高的效果。在存在變更日志用的環(huán)形緩沖器的情況下,通過鎖定環(huán)形緩沖器中的與表示當前的寫指針的邏輯地址對應的表條目,有可能能夠提高緩存的命中率。[0028]以下參照附圖,詳細說明實施方式所涉及的存儲器控制器。另外,本發(fā)明并不由這些實施方式所限定。
[0029](第I實施方式)
[0030]圖1是表示第I實施方式的存儲器控制器的結(jié)構(gòu)的圖。如圖所示,存儲器控制器100與主機200及NAND存儲器300連接。存儲器控制器100根據(jù)來自主機200的讀出請求或?qū)懭胝埱螅瑘?zhí)行主機200與NAND存儲器300之間的數(shù)據(jù)傳送。以下,也將讀出請求及寫入請求總稱為訪問請求。訪問請求包含訪問目標的邏輯地址的指定。存儲器控制器100計算與所指定的邏輯地址對應的物理地址。然后,存儲器控制器100對NAND存儲器300中的上述物理地址所表示的位置執(zhí)行所請求的訪問。
[0031]存儲器控制器100具備主機接口(第I接口)110、地址解析部(翻譯部)120、用戶數(shù)據(jù)訪問部(訪問部)130及存儲器接口(第2接口)140。
[0032]主機接口 110是用于與主機200進行通信的接口。主機接口 110從主機200除了接收訪問請求之外,還能夠接收鎖定請求及解鎖請求。存儲器接口 140是用于與NAND存儲器300進行通信的接口。
[0033]用戶數(shù)據(jù)訪問部130經(jīng)由存儲器接口 140從NAND存儲器300讀出從主機200請求讀出的數(shù)據(jù)。另外,用戶數(shù)據(jù)訪問部130經(jīng)由存儲器接口 140向NAND存儲器300寫入從主機200請求寫入的數(shù)據(jù)。用戶數(shù)據(jù)訪問部130從地址解析部120接收訪問目標的物理地址,從主機接口 110接收表示來自主機200的請求的種類的ID。
[0034]地址解析部120將主機200使用訪問請求指定的邏輯地址翻譯(地址解析)為物理地址。這里,地址解析部120為了高速地執(zhí)行地址解析,具有L2P表緩存(緩存部)121。
[0035]L2P表緩存121所具有的各個緩存行通過緩存行編號進行標識。L2P表緩存121的行大小等于表條目的大小。一個表條目所覆蓋的邏輯地址的范圍預先確定。各個表條目由包括該范圍內(nèi)的各邏輯地址和與該邏輯地址對應的物理地址的鍵-值(key-value)對的集合構(gòu)成。另外,將一個表條目所覆蓋的邏輯地址的范圍稱為區(qū)域。
[0036]圖2是說明邏輯地址與物理地址的對應關(guān)系的圖。在本圖中,一個表條目覆蓋連續(xù)的16個邏輯地址。并且,一個表條目按每個邏輯地址保存對應的物理地址。這里,例如,邏輯地址“ 100”對應于物理地址“ 1034”,邏輯地址“ 101”對應于物理地址“ 1082”。邏輯地址“ 103”與哪一物理地址都不對應,這意味著在該邏輯地址未存儲用戶數(shù)據(jù)。
[0037]地址解析部120參照L2P表緩存121計算與邏輯地址對應的物理地址,將計算出的物理地址傳送到用戶數(shù)據(jù)訪問部130。
[0038]L2P表的主體(對應信息)存儲于NAND存儲器300。地址解析部120能夠?qū)⒋鎯τ贜AND存儲器300的表條目經(jīng)由存儲器接口 140讀出到L2P表緩存121的緩存行。另外,地址解析部120將緩存于L2P表緩存121的表條目回寫到NAND存儲器300。另外,以下,將向L2P表緩存121的緩存行讀出表條目的工作稱為重填。在讀出目標的緩存行上的表條目為廢棄(dirty)的情況下,在重填工作中,優(yōu)先進行將成為廢棄的表條目逐出(回寫)到NAND存儲器300的操作。
[0039]這里,地址解析部120具備行鎖定部122。地址解析部120從主機200,經(jīng)由主機接口 110接收L2P表緩存121的鎖定請求及解鎖請求。鎖定請求是用于鎖定緩存行的請求。解鎖請求是用于解鎖緩存行的請求。行鎖定部122根據(jù)來自主機200的請求,對緩存行進行鎖定或解鎖。這里,所謂鎖定緩存行是指,除接收特定的請求(后述的鎖定標志被設定為有效的訪問請求)的情況之外,禁止從緩存行的逐出。從而,所謂鎖定緩存行等于禁止該緩存行的重填。另外,所謂解鎖緩存行是指解除逐出的禁止。若緩存行被解鎖,則可以進行該緩存行的重填。另外,行鎖定部122也可以同時鎖定多個緩存行。
[0040]圖3是說明緩存行的鎖定請求、解鎖請求及訪問請求的一例的圖。鎖定請求及解鎖請求具有緩存行編號作為參數(shù)。另外,訪問請求除了訪問目標(讀出源或?qū)懭肽繕?的邏輯地址及訪問長度(讀出長度或?qū)懭腴L度),還具有鎖定標志及緩存行編號作為參數(shù)。另外,圖3的請求僅表示出必要最小限度的字段。鎖定請求、解鎖請求、讀出請求或?qū)懭胝埱蟾鶕?jù)主機接口 110的構(gòu)成也有可能包含其他參數(shù)。
[0041]鎖定請求及解鎖請求所具備的緩存行編號指定成為鎖定或解鎖的對象的緩存行。訪問請求所具備的鎖定標志表示是否將由該命令訪問的區(qū)域用的表條目鎖定在L2P表緩存121上。另外,訪問請求所具備的緩存行編號在鎖定標志有效的情況下,指定讀出到哪個緩存行上。但是,在訪問請求中可以指定的緩存行編號限于已經(jīng)鎖定的行。
[0042]圖4是說明由地址解析部120進行的緩存行的操作例的圖。地址解析部120在接收到鎖定標志為無效(這里是指鎖定標志設定為“O”)的訪問請求的情況下,將訪問目標的區(qū)域用的L2P表條目讀出到未鎖定的緩存行的任意一個。地址解析部120在接收到鎖定標志為有效(這里是指鎖定標志設定為“I”)的訪問請求的情況下,讀出到由緩存行編號指定的緩存行。鎖定標志為有效的訪問請求不發(fā)生向未鎖定的緩存行上的讀出。另外,鎖定標志為無效的訪問請求不發(fā)生已鎖定的緩存行的改寫。
[0043]另外,主機200、存儲器控制器100及NAND存儲器300的芯片構(gòu)成沒有特別限定。存儲器控制器100可以由與主機200獨立的芯片構(gòu)成。另外,存儲器控制器100也可以通過由主機200所具備的處理器執(zhí)行預定的程序來實現(xiàn)。另外,也可以采用僅在主機200所具備的處理器上實現(xiàn)地址解析部120并且將除此以外的構(gòu)成要素包含在與主機200獨立的芯片的構(gòu)成。另外,除了 NAND存儲器300之外,也可以采用其他的非易失性的存儲器裝置。
[0044]接著,說明第I實施方式的存儲器控制器100的工作。
[0045]在地址解析部120接收到鎖定請求時,行鎖定部122鎖定由所接收的鎖定請求指定的編號的緩存行。另外,在地址解析部120接收到解鎖請求時,行鎖定部122解鎖由所接收的解鎖請求指定的編號的緩存行。
[0046]圖5是說明接收訪問請求時的地址解析部120的工作的流程圖。地址解析部120若接收到訪問請求,則判定所接收的訪問請求的鎖定標志是否有效(步驟Si)。在鎖定標志為有效的情況下(步驟SI,是),地址解析部120執(zhí)行從已鎖定的緩存行選擇表條目的處理(第I選擇處理)(步驟S2)。在鎖定標志為無效的情況下(步驟SI,否),地址解析部120執(zhí)行從未鎖定的緩存行選擇表條目的處理(第2選擇處理)(步驟S3)。在步驟S2或步驟S3的處理后,地址解析部120使用所選擇的表條目,計算訪問目標的物理地址(步驟S4),結(jié)束工作。
[0047]圖6是說明第I選擇處理的流程圖。地址解析部120判定訪問對象的區(qū)域所涉及的表條目(對象條目)是否存在于由訪問請求指定的緩存行(指定行)(步驟S11)。在對象條目不存在于指定行的情況下(步驟S11,否),地址解析部120判定存在于指定行的表條目是否為廢棄(步驟S12)。在存在于指定行的表條目為廢棄的情況下(步驟S12,是),地址解析部120將存在于指定行的表條目回寫到NAND存儲器300 (步驟S13),然后,從NAND存儲器300向指定行讀出對象條目(步驟S14)。在存在于指定行的表條目不為廢棄的情況下(步驟S12,否),地址解析部120跳過步驟S13的處理,執(zhí)行步驟S14的處理。在步驟S14的處理后,地址解析部120選擇存在于指定行的表條目(步驟S15),結(jié)束鎖定區(qū)域用表條目選擇處理。在對象條目存在于指定行的情況下(步驟S11,是),地址解析部120執(zhí)行步驟S15的處理。
[0048]圖7是說明第2選擇處理的流程圖。地址解析部120判定對象條目是否存在于L2P表緩存121的、也包含鎖定了的緩存行的某一緩存行(步驟S21)。在不存在對象條目的情況下(步驟S21,否),地址解析部120從未鎖定的緩存行中選擇重填目標的緩存行(步驟S22)。地址解析部120判定存在于重填目標的緩存行的表條目是否為廢棄(步驟S23)。在存在于重填目標的緩存行的表條目為廢棄的情況下(步驟S23,是),地址解析部120將存在于重填目標的緩存行的表條目回寫到NAND存儲器300 (步驟S24),然后,從NAND存儲器300向重填目標的緩存行讀出對象條目(步驟S25)。在存在于重填目標的緩存行的表條目不為廢棄的情況下(步驟S23,否),地址解析部120跳過步驟S24的處理,執(zhí)行步驟S25的處理。在步驟S25的處理后或?qū)ο髼l目存在于L2P表緩存121的某一緩存行的情況下(步驟S21,是),地址解析部120選擇存在于L2P表緩存121的或通過步驟S25的處理讀出的對象條目(步驟S26)。然后,地址解析部120結(jié)束鎖定區(qū)域用表條目選擇處理。
[0049]另外,在以上的例子中,說明了在鎖定請求、解鎖請求及訪問請求中,主機200明示地指定緩存行編號的情況。主機200通過使用將鎖定標志設為有效的訪問請求,對鎖定了的緩存行不解除鎖定而能夠進行所存儲的表條目的重填。由此,主機200可以對鎖定了的緩存行自由度高地且如便簽式存儲器那樣進行使用。
[0050]另外,存儲器控制器100也可以如圖8所示的例子那樣構(gòu)成為可以接收取代緩存行編號而指定了區(qū)域編號的請求。即,行鎖定部122在接收到鎖定請求的情況下,用任意的方法選擇未鎖定的一個緩存行,向所選擇的緩存行讀出并鎖定對象條目。行鎖定部122在接收到解鎖請求的情況下,將存在對象條目的緩存行解鎖。另一方面,訪問請求都不具備鎖定標志及緩存行編號。地址解析部120在訪問目標的邏輯地址所屬的區(qū)域與鎖定請求所指定的某一區(qū)域相符的情況下,參照存在于該區(qū)域用的鎖定了的緩存行的表條目。地址解析部120在訪問目標的邏輯地址所屬的區(qū)域與鎖定請求所指定的任一區(qū)域都不相符的情況下,使用未鎖定的緩存行執(zhí)行通常的緩存工作。通過采用圖8所示的請求,主機200不必識別哪個緩存行被鎖定,因此能夠減輕主機的負擔。但是,為了重填鎖定了的緩存行,主機200需要對該緩存行解鎖。
[0051]另外,若鎖定的緩存行數(shù)極度增加,則由于能夠自由使用的緩存條目會不足,所以鎖定標志為無效的命令的處理速度有可能降低。因此,也可以對可以同時鎖定的緩存行數(shù)設定上限。
[0052]如上所述,根據(jù)第I實施方式,存儲器控制器100根據(jù)來自主機200的請求,對L2P表緩存121的緩存行個別地進行鎖定或者解鎖。由此,主機200通過鎖定緩存了訪問具有周期性且訪問間隔比緩存行數(shù)大的區(qū)域的緩存行,可以防止抖動的發(fā)生。即,存儲器控制器100可以盡可能高速地進行地址解析。另外,在主機200具有日記功能的情況下,主機200通過鎖定環(huán)形緩沖器上的與當前的寫指針的位置相當?shù)谋項l目,可以防止抖動的發(fā)生。[0053](第2實施方式)
[0054]根據(jù)第1實施方式,存儲器控制器100根據(jù)來自主機200的請求,執(zhí)行緩存行的鎖定及解鎖。從而,主機200需要執(zhí)行鎖定了的緩存行內(nèi)的表條目的管理。
[0055]相對于此,在第2實施方式中,存儲器控制器判斷鎖定的對象及定時。即,存儲器控制器不需要來自主機200的請求便能夠執(zhí)行緩存行的鎖定及解鎖。根據(jù)第2實施方式,可越過主機200地執(zhí)行緩存行的鎖定及解鎖。與主機200需要明示地控制緩存行的鎖定及解鎖的第I實施方式相比,主機200的負擔減輕。
[0056]圖9是說明第2實施方式的存儲器控制器的結(jié)構(gòu)的圖。這里對于與第I實施方式同樣的構(gòu)成要素標注同一名稱及符號,并省略重復的說明。存儲器控制器400與主機200及NAND存儲器300連接。
[0057]存儲器控制器400具備主機接口 410、地址解析部420、用戶數(shù)據(jù)訪問部130及存儲器接口 140。[0058]主機接口 410是用于與主機200進行通信的接口。主機接口 410也可以是無法從主機200接收圖3或圖8所示的請求的接口。
[0059]地址解析部420具備L2P表緩存121、行鎖定部422、訪問模式分析部(訪問模式記錄部)423及鎖定判定部(鎖定部)424。
[0060]訪問模式分析部423為了判斷鎖定哪個表條目,分析并存儲從主機200對每個區(qū)域的訪問的模式(訪問模式)。具體地,例如,訪問模式分析部423逐個區(qū)域計算并存儲對來自主機200的訪問的重填數(shù)。某區(qū)域的某瞬間的重填數(shù)等于從倒數(shù)第2次訪問該區(qū)域到最后訪問為止之間在L2P表緩存121發(fā)生的重填的次數(shù)。
[0061]圖10是說明訪問模式的例子的圖。圖11是說明在緩存行數(shù)為4的情況下執(zhí)行圖10所示的訪問模式的訪問時的每區(qū)域的重填數(shù)的圖。假定在每個緩存行都為空的狀態(tài)下按區(qū)域0、1、2、0、3、3、2、1的順序執(zhí)行訪問。例如在第1次訪問區(qū)域O到第2次訪問為止之間,訪問區(qū)域I及區(qū)域2。區(qū)域I及區(qū)域2的表條目都不存在于緩存行上,分別發(fā)生對緩存行的重填工作,因此第2次訪問后的區(qū)域O的重填數(shù)為2。同樣,在區(qū)域I的第1次訪問到第2次訪問之間,訪問區(qū)域O、區(qū)域2及區(qū)域3。由于剛剛訪問區(qū)域0,所以在緩存行上存在區(qū)域O的表條目。從而,重填工作僅在對區(qū)域2及區(qū)域3的訪問時發(fā)生,第2次訪問后的區(qū)域I的重填數(shù)為2。同樣,區(qū)域2的重填數(shù)為1,區(qū)域3的重填數(shù)為O。
[0062]重填數(shù)成為測定對對應的區(qū)域的局部性的強度的指標。局部性的強度根據(jù)重填數(shù)如下判定。
[0063](1)滿足(重填數(shù))< (緩存行數(shù))的關(guān)系的區(qū)域判定為局部性“強”的區(qū)域。局部性“強”的區(qū)域在下次訪問時,該區(qū)域的表條目殘留在緩存(緩存命中)。訪問間隔比緩存行數(shù)小的區(qū)域相當于局部性“強”的區(qū)域。
[0064](2)滿足(緩存行數(shù))((重填數(shù)K (重填數(shù)閾值)的關(guān)系的區(qū)域判定為局部性“中”的區(qū)域。局部性“中”的區(qū)域即使訪問具有周期性,也由于訪問間隔比緩存行數(shù)大,所以在下次訪問時,該區(qū)域的表條目不會殘留在緩存(緩存未命中)。另外,局部性“中”的區(qū)域由于重填數(shù)比重填數(shù)閾值小,所以以比后述的局部性“弱”的區(qū)域小的訪問間隔被訪問。
[0065](3)滿足(重填數(shù)閾值)≤(重填數(shù))的關(guān)系的區(qū)域判定為局部性“弱”的區(qū)域。局部性“弱”的區(qū)域即使訪問具有周期性,也由于訪問間隔比重填數(shù)閾值大,所以在下次訪問時,該區(qū)域的表條目不會殘留在緩存(緩存未命中)。
[0066]存儲器控制器400將局部性“中”的區(qū)域所涉及的緩存行設為鎖定的對象。這是由于,局部性“強”的區(qū)域所涉及的緩存行由于即使不被鎖定也將緩存命中,所以不被設為鎖定的對象。另外,局部性“弱”的區(qū)域所涉及的緩存行由于被訪問的頻度低,所以不被設為鎖定的對象。局部性“弱”的區(qū)域所涉及的緩存行若被鎖定,則由其他區(qū)域可以使用的緩存行減少,結(jié)果,存儲器全體的緩存命中率將降低。
[0067]鎖定判定部424在發(fā)生重填時,根據(jù)所重填的表條目的區(qū)域是否滿足(2)所示的關(guān)系,判定是否鎖定該區(qū)域重填了的緩存行。判定用的重填數(shù)閾值的存儲位置沒有特別限定。判定用的重填數(shù)閾值例如預先設定。鎖定判定部424將是否鎖定緩存行的判定結(jié)果傳送至行鎖定部422。行鎖定部422根據(jù)傳送來的判定結(jié)果,鎖定緩存行。另外,以下,將緩存行的鎖定也表達為區(qū)域的鎖定。另外,將緩存行的解鎖也表達為區(qū)域的解鎖。
[0068]圖12是說明鎖定判定部424的工作的流程圖。圖12的工作在每次發(fā)生重填時,將通過重填從NAND存儲器300讀出了表條目的區(qū)域作為對象(對象區(qū)域)而執(zhí)行。
[0069]鎖定判定部424判定對象區(qū)域是否滿足局部性“中”的判定條件、即(緩存行數(shù))((重填數(shù)K (重填數(shù)閾值)的關(guān)系(步驟S31)。在對象區(qū)域滿足局部性“中”的判定條件的情況下(步驟S31,是),鎖定判定部424判定對象區(qū)域是否已經(jīng)被鎖定(步驟S32)。
[0070]在對象區(qū)域已經(jīng)被鎖定的情況下(步驟S32,是),鎖定判定部424結(jié)束與對象區(qū)域相關(guān)的工作。在對象區(qū)域未被鎖定的情況下(步驟S32,否),鎖定判定部424判定已鎖定的區(qū)域數(shù)是否在鎖定數(shù)閾值以上(步驟S33)。鎖定數(shù)閾值的存儲位置沒有特別限定。另外,鎖定數(shù)閾值例如預先設定。
[0071]在已鎖定的區(qū)域數(shù)不在鎖定數(shù)閾值以上的情況下(步驟S33,否),鎖定判定部424使行鎖定部422鎖定讀出了與對象區(qū)域?qū)谋項l目的緩存行(步驟S34)。
[0072]在已鎖定的區(qū)域數(shù)在鎖定數(shù)閾值以上的情況下(步驟S33,是),鎖定判定部424判定已鎖定的區(qū)域的重填數(shù)之中的最小值是否比對象區(qū)域的重填數(shù)小(步驟S35)。在已鎖定的區(qū)域的重填數(shù)之中的最小值不比對象區(qū)域的重填數(shù)小的情況下(步驟S35,否),鎖定判定部424結(jié)束與對象區(qū)域相關(guān)的工作。在已鎖定的區(qū)域的重填數(shù)之中的最小值比對象區(qū)域的重填數(shù)小的情況下(步驟S35,是),鎖定判定部424使行鎖定部422將已鎖定的區(qū)域之中的重填數(shù)最小的區(qū)域解鎖(步驟S36),并執(zhí)行步驟S34的處理。
[0073]在對象區(qū)域不滿足局部性“中”的判定條件的情況下(步驟S31,否),鎖定判定部424判定對象區(qū)域是否已經(jīng)被鎖定(步驟S37)。在對象區(qū)域已經(jīng)被鎖定的情況下(步驟S37,是),鎖定判定部424使行鎖定部422將對象區(qū)域解鎖(步驟S38),并結(jié)束與對象區(qū)域相關(guān)的工作。在對象區(qū)域未被鎖定的情況下(步驟S37,否),鎖定判定部424跳過步驟S38的處理,結(jié)束與對象區(qū)域相關(guān)的工作。
[0074]圖13是說明由鎖定判定部424進行的另外的工作的流程圖。圖13所示的工作與圖12所示的工作并行執(zhí)行。鎖定判定部424對已鎖定的全部區(qū)域執(zhí)行步驟S41?步驟S45的循環(huán)處理。另外,鎖定判定部424在每次發(fā)生重填時執(zhí)行圖13中說明的工作。
[0075]鎖定判定部424著眼于已鎖定的區(qū)域之中的一個,開始循環(huán)處理。鎖定判定部424判定所著眼的區(qū)域被鎖定后的經(jīng)過時間是否在時間閾值以上(步驟S42)。
[0076]另外,所謂經(jīng)過時間,是指在鎖定后發(fā)生的重填數(shù)。附帶說一下,訪問模式分析部423所存儲的重填數(shù)是最新的2次訪問之間的重填數(shù)。鎖定判定部424用于步驟S42的處理的經(jīng)過時間是進行最新的訪問后的重填數(shù)。時間閾值的存儲位置沒有特別限定。另外,時間閾值例如預先設定。另外,作為時間閾值,可以使用重填數(shù)閾值。
[0077]在鎖定后的經(jīng)過時間在時間閾值以上的情況下(步驟S42,是),鎖定判定部424將所著眼的區(qū)域解鎖(步驟S43)。在鎖定后的經(jīng)過時間不在時間閾值以上的情況下(步驟S42,否),鎖定判定部424將與所著眼的區(qū)域相關(guān)的經(jīng)過時間加I (步驟S44)。步驟S43或步驟S44的處理后,鎖定判定部424著眼于其他區(qū)域,執(zhí)行下一循環(huán)處理。
[0078]通過圖13的工作,一旦區(qū)域被鎖定后,在由于訪問模式的變動而長時間未訪問該區(qū)域的情況下,能夠?qū)⒃搮^(qū)域解鎖。即,能夠防止訪問頻度降低了的區(qū)域被長時間鎖定而占用緩存行。另一方面,在訪問頻度高的區(qū)域訪問頻度暫時地降低而被解鎖且該區(qū)域用的表條目從緩存行被逐出的情況下,也可在訪問頻度恢復而接下來訪問該區(qū)域時進行重填,通過圖12的工作再次被鎖定。
[0079]另外,在以上的說明中,說明了鎖定判定部424通過在已鎖定的區(qū)域數(shù)在鎖定數(shù)閾值以上時將已鎖定的區(qū)域解鎖而鎖定新區(qū)域的情況。在已鎖定的區(qū)域數(shù)在鎖定數(shù)閾值以上的情況下,鎖定判定部424也可以不進行對象區(qū)域的鎖定。
[0080]另外,訪問模式分析部423也可以將重填數(shù)的平均值(移動平均值)或最大值(臨近最大值)作為訪問模式進行存儲,鎖定判定部424對訪問模式分析部423所存儲的值與重填數(shù)閾值進行比較。另外,訪問模式分析部423也可以存儲之前的重填數(shù)與當前的重填數(shù)的加權(quán)平均(加權(quán)平均值)。通過使用移動平均值、臨近最大值、加權(quán)平均值,能夠減輕由訪問間隔的變動導致的重填數(shù)的急劇變化的影響。例如,訪問模式分析部423也可以使用下式更新對每個區(qū)域存儲的重填數(shù)。這里,W是滿足OSWSl的預先設定的權(quán)重系數(shù)。
[0081](更新后的重填數(shù))=(更新前的重填數(shù))*W+(當前的重填數(shù))* (1-W)
[0082]另外,說明了鎖定判定部424使用重填數(shù)作為經(jīng)過時間而確定解鎖的定時的情況。鎖定判定部424也可以具備計數(shù)器等計時單元,根據(jù)計時單元的輸出確定解鎖的定時。
[0083]另外,訪問模式分析部423也可以基于訪問之間的重填數(shù)的過去值計算訪問周期并記錄。在該情況下,鎖定判定部424也可以將各區(qū)域按訪問周期從小到大的順序分為3類,將按訪問周期從小到大分為第2類的區(qū)域作為鎖定的對象。
[0084]如上所述,根據(jù)第2實施方式,存儲器控制器400基于主機200的訪問模式,判斷鎖定的對象緩存行和鎖定的定時。由此,存儲器控制器400可以盡可能高速地進行地址解析。
[0085]另外,由于存儲器控制器400鎖定滿足(緩存行數(shù))((重填數(shù))< (重填數(shù)閾值)的關(guān)系的區(qū)域,所以在設定了與訪問模式相應的適合重填數(shù)閾值的情況下,能夠降低抖動的發(fā)生。
[0086]雖然說明了本發(fā)明的幾個實施方式,但是這些實施方式是作為例子而提示的,并非要限定發(fā)明的范圍。這些新實施方式可以通過其他各種形式實施,在不脫離發(fā)明的主旨的范圍,能夠進行各種省略、置換、變更。這些實施方式和/或其變形包含于發(fā)明的范圍和/或主旨,并且也包含于權(quán)利要求所記載的發(fā)明及其均等的范圍。
【權(quán)利要求】
1.一種存儲器控制器,其特征在于,具備: 第I接口,其接收鎖定請求及指定邏輯地址的訪問請求的輸入; 第2接口,其連接于非易失性存儲器; 緩存部,其緩存上述邏輯地址與上述非易失性存儲器的物理地址的對應信息; 翻譯部,其通過參照上述緩存部,將上述訪問請求所指定的邏輯地址翻譯為上述物理地址; 訪問部,其對上述翻譯后的物理地址所表示的位置進行與上述訪問請求相應的訪問;以及 鎖定部,其禁止上述緩存部所具備的緩存行的重填。
2.權(quán)利請求I所述的存儲器控制器,其特征在于, 上述第I接口部接收解鎖請求的輸入, 上述鎖定部根據(jù)上述解鎖請求,解除上述緩存行的重填的禁止。
3.權(quán)利請求2所述的存儲器控制器,其特征在于, 上述鎖定請求及上述解鎖請求包含緩存行的指定。
4.權(quán)利請求3所述的存儲器控制器,其特征在于, 上述訪問請求包含標志及緩存行的指定,` 上述鎖定部,在由上述訪問請求指定的緩存行的重填被禁止的情況下,禁止由上述標志為無效的訪問請求引起的重填,許可由上述標志為有效的訪問請求引起的重填。
5.權(quán)利請求2所述的存儲器控制器,其特征在于, 上述鎖定請求及上述解鎖請求包含邏輯地址的范圍的指定, 上述鎖定部, 禁止緩存有與上述鎖定請求所指定的范圍對應的條目的緩存行的重填; 解除與上述解鎖請求所指定的范圍對應的緩存行的重填的禁止。
6.權(quán)利請求I所述的存儲器控制器,其特征在于, 上述非易失性存儲器是NAND型的閃速存儲器。
7.一種存儲器控制器,其特征在于, 第I接口,其接收指定邏輯地址的訪問請求的輸入; 第2接口,其連接于非易失性存儲器; 緩存部,其緩存上述邏輯地址與上述非易失性存儲器的物理地址的對應信息; 翻譯部,其通過參照上述緩存部,將上述訪問請求所指定的邏輯地址翻譯為上述物理地址; 訪問部,其對與上述翻譯部計算出的物理地址相應的上述非易失性存儲器的位置進行與上述訪問請求相應的訪問; 訪問模式記錄部,其記錄對上述非易失性存儲器的訪問模式;以及鎖定部,其根據(jù)由上述訪問模式記錄部進行的記錄,禁止上述緩存部所具備的緩存行的重填。
8.權(quán)利請求7所述的存儲器控制器,其特征在于, 上述鎖定部根據(jù)上述訪問模式記錄部所記錄的訪問模式,解除重填的禁止。
9.權(quán)利請求8所述的存儲器控制器,其特征在于,上述鎖定部,在禁止了重填的緩存行數(shù)超過預先確定的行數(shù)閾值的情況下,根據(jù)上述訪問模式記錄部所記錄的訪問模式,從禁止了重填的緩存行之中選擇緩存行,解除上述所選擇的緩存行的重填的禁止。
10.權(quán)利請求7所述的存儲器控制器,其特征在于, 上述記錄部所記錄的訪問模式是緩存行單位的對應信息所對應的每個邏輯地址空間的訪問之間的重填數(shù)。
11.權(quán)利請求10所述的存儲器控制器,其特征在于, 上述鎖定部,禁止上述記錄部所記錄的重填數(shù)比上述緩存部所具備的緩存行數(shù)大而比預先確定的重填數(shù)閾值小的緩存行的重填。
12.權(quán)利請求11所述的存儲器控制器,其特征在于, 上述鎖定部解除禁止了重填的緩存行之中未被訪問且經(jīng)過了預定時間的緩存行的重填的禁止。
13.權(quán)利請求8所述的存儲器控制器,其特征在于, 上述記錄部所記錄的訪問模式是緩存行單位的對應信息所對應的每個邏輯地址空間的訪問之間的重填數(shù)。
14.權(quán)利請求13所述的存儲器控制器,其特征在于, 上述鎖定部, 禁止上述記錄部所記錄的重填數(shù)比上述緩存部所具備的緩存行數(shù)大且比預先確定的重填數(shù)閾值小的緩存行的重填, 解除上述記錄部所記錄的重填數(shù)比上述緩存部所具備的緩存行數(shù)小或比上述預先確定的重填數(shù)閾值大的緩存行的重填的禁止。
15.權(quán)利請求9所述的存儲器控制器,其特征在于, 上述記錄部所記錄的訪問模式是緩存行單位的對應信息所對應的每個邏輯地址空間的訪問之間的重填數(shù)。
16.權(quán)利請求15所述的存儲器控制器,其特征在于, 上述鎖定部, 禁止上述記錄部所記錄的重填數(shù)比上述緩存部所具備的緩存行數(shù)大且比預先確定的重填數(shù)閾值小的緩存行的重填, 在禁止了重填的緩存行數(shù)超過了預先確定的行數(shù)閾值的情況下,解除禁止了重填的緩存行之中上述記錄部所記錄的重填數(shù)最小的緩存行的重填的禁止。
17.權(quán)利請求7所述的存儲器控制器,其特征在于, 上述記錄部所記錄的訪問模式是緩存行單位的對應信息所對應的每個邏輯地址空間的訪問之間的重填 數(shù)的移動平均值、臨近最大值或加權(quán)平均值。
18.權(quán)利請求7所述的存儲器控制器,其特征在于, 上述非易失性存儲器是NAND型的閃速存儲器。
【文檔編號】G06F12/08GK103885892SQ201310208522
【公開日】2014年6月25日 申請日期:2013年5月30日 優(yōu)先權(quán)日:2012年12月20日
【發(fā)明者】宮本新, 矢尾浩, 中西悠, 巖井大典, 武田奈穗美, 渡邊大毅 申請人:株式會社 東芝