欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

針對NAND閃存的靈活接口的制作方法

文檔序號:12157260閱讀:272來源:國知局
針對NAND閃存的靈活接口的制作方法與工藝

本文要求分別于2015年8月14日和2016年2月19日提交的共同待審的共同轉(zhuǎn)讓的美國臨時專利申請?zhí)?2/205,142和62/297,230的權(quán)益,將其每個相應(yīng)整體通過引用并入本文。

技術(shù)領(lǐng)域

本公開內(nèi)容的主題的實施方式大體涉及存儲器接口,并且具體地涉及靈活接口,其可以是針對諸如NAND閃存的存儲器設(shè)備可重配置的。



背景技術(shù):

本文中提供的背景描述是出于大體呈現(xiàn)本公開內(nèi)容的背景的目的。本文的發(fā)明人的到在該背景部分中描述工作的程度的工作以及在提交的時間不可以稱為現(xiàn)有技術(shù)的說明書的各個方面,既不是明確地或也不是隱含地被認為是針對本公開內(nèi)容的現(xiàn)有技術(shù)。

存在針對NAND閃存的不同類型的接口。例如,存在基于從開放NAND閃存接口工作組可獲得的開放NAND閃存接口(ONFI)標(biāo)準(zhǔn)的接口,而切換模式標(biāo)準(zhǔn)是由東芝公司針對其閃存產(chǎn)品開發(fā)的。然而,在諸如ONFI和切換模式的已知標(biāo)準(zhǔn)中,命令序列是固定的。在硬件實施方式中,命令可以是硬編碼的。例如,每個命令序列可以被實施為有限狀態(tài)機。因此,其可以是復(fù)雜的以在必要或期望時改變命令序列。此外,不同的NAND閃存供應(yīng)商可以具有不同的定制命令,無論何時命令序列要被修訂都需要定制改變。

另外,一些已知的閃存接口針對每個存儲器通道使用多個處理器,伴隨隨之而來的功率消耗的后果。命令一般以它們被接收到的順序在逐個處理器的基礎(chǔ)上來執(zhí)行,而不管它們的相對重要性。



技術(shù)實現(xiàn)要素:

根據(jù)本公開內(nèi)容的主題的實施方式,一種針對一個或多個存儲器通道的存儲器通道命令接口,其針對一個或多個存儲器通道中的每個存儲器通道包括,針對存儲器命令的可編程存儲裝置;用于執(zhí)行存儲器命令的單個通道處理器;以及任務(wù)引擎,其用于將單個通道處理器的輸出通信到存儲器介質(zhì)。

在這樣的實施方式中,存儲器命令可以被組織成包括包含任務(wù)的操作的作業(yè);并且針對存儲器命令的可編程存儲裝置包括作業(yè)存儲器和操作存儲器。任務(wù)可以被存儲為操作存儲器中的操作的部分,或者針對存儲器命令的可編程存儲裝置可以包括任務(wù)存儲器,其中任務(wù)被存儲在任務(wù)存儲器中,并且(到存儲在任務(wù)存儲器中的任務(wù)的)指針被存儲為操作存儲器中的操作的部分。

在一些實施方式中,存儲器通道命令接口還包括存儲器介質(zhì)狀態(tài)存儲裝置。存儲器介質(zhì)狀態(tài)存儲裝置可以存儲針對存儲器命令的優(yōu)先級指示,優(yōu)先級指示可以基于除了存儲器命令的到達或接受的順序之外的條件,并且單個通道處理器基于優(yōu)先級指示來控制存儲器命令的執(zhí)行的順序。

根據(jù)一些實施方式,一種操作存儲器通道命令接口的方法包括:將存儲器任務(wù)編程到存儲器通道命令接口中的可編程存儲裝置中;將命令輸入到存儲器通道命令接口中;以及通過從可編程存儲裝置選擇存儲器任務(wù)中的一個來執(zhí)行命令。針對多個命令中的每個命令的優(yōu)先級指示可以基于除了命令的到達或接受的順序之外的條件,并且多個命令可以以基于優(yōu)先級指示的順序來執(zhí)行。

附圖說明

在結(jié)合附圖考慮下面的具體實施方式后,本公開內(nèi)容的另外的特征、其性質(zhì)和各個優(yōu)點將變得顯而易見,其中類似的附圖標(biāo)記在其中指代類似的部分,并且其中:

圖1示出了包括NAND閃存的系統(tǒng)的示例;

圖2示出了NAND閃存接口驅(qū)動器的已知實施方式;

圖3示出了根據(jù)本公開內(nèi)容的主題的第一實施方式的NAND閃存接口驅(qū)動器;

圖4示出了NAND閃存命令作業(yè)的結(jié)構(gòu)的示例;

圖5示出了NAND閃存命令作業(yè)內(nèi)的命令階段的第一示例;

圖6示出了NAND閃存命令作業(yè)內(nèi)的命令階段的第二示例;

圖7示出了NAND閃存命令作業(yè)內(nèi)的命令階段的第三示例;

圖8示出了讀取命令作業(yè)的示例的結(jié)構(gòu);

圖9示出了圖8的示例讀取命令作業(yè)的命令流;

圖10示出了圖8的示例讀取命令作業(yè)的處理器流;

圖11示出了圖8的示例讀取命令作業(yè)的通道I/O流;

圖12示出了針對“命令”任務(wù)的格式的示例;

圖13示出了針對“尋址”任務(wù)的格式的示例;

圖14示出了針對“等待”或“延遲”任務(wù)的格式的示例;

圖15示出了針對“數(shù)據(jù)_輸入(data_in)”任務(wù)的格式的示例;

圖16示出了針對“數(shù)據(jù)_輸出(data_out)”任務(wù)的格式的示例;

圖17示出了命令作業(yè)的格式的示例;

圖18示出了存儲在操作存儲器中的操作的示例;

圖19示出了圖18的操作的階段的結(jié)構(gòu)的示例;

圖20示出了邏輯單元狀態(tài)存儲器的操作的操作流的示例;

圖21示出了用于存儲邏輯單元狀態(tài)存儲器中的邏輯單元狀態(tài)的比特掩碼的示例;以及

圖22示出了在根據(jù)本公開內(nèi)容的主題的第二實施方式的NAND閃存接口驅(qū)動器中使用的查找表的示例。

具體實施方式

如以上所指出的,在現(xiàn)有閃存接口中,尤其是在NAND閃存接口中,命令可以被硬編碼。例如,每個命令序列可以被實施為有限狀態(tài)機。這可以使其復(fù)雜以在必要或期望時改變命令序列,并且情形被在不同的標(biāo)準(zhǔn)下和來自不同的供應(yīng)商的不同命令進一步復(fù)雜。

此外,已知的閃存接口使用針對每個存儲器通道的多個處理器,即使處理器中的許多處理器在大部分時間處于未使用。那些處理器不必要地在處于空閑時消耗功率,增加了接口的高于必要的功率消耗的總體功率消耗。

另外,命令一般以它們被接收到的順序在逐個處理器的基礎(chǔ)上來執(zhí)行,不管它們的相對重要性,即使一些命令可以具有更高程度的緊迫性或者另外具有比其他命令更高的相對重要性。

根據(jù)本公開內(nèi)容的主題的實施方式,可以提供針對NAND閃存的接口驅(qū)動器,其中命令能夠由用戶限定或改變。因為命令能夠被改變,所以能夠適應(yīng)來自不同供應(yīng)商的命令序列,并且能夠使用ONFI和切換模式標(biāo)準(zhǔn)以及其他標(biāo)準(zhǔn)。

本公開內(nèi)容的主題的實施方式還是使用一個處理器來執(zhí)行多個“作業(yè)”或命令。例如,每個通道可以存在一個處理器。這減少功率消耗??捎捎脩艟幊痰拇鎯ζ鹘Y(jié)構(gòu)存儲可以被調(diào)用的可用命令或“任務(wù)“。該存儲器結(jié)構(gòu)可以包括能夠由用戶更改的查找表。

圖1示出了包括NAND閃存的系統(tǒng)100的示例。一個或多個NAND閃存單元101經(jīng)由閃存控制器103與主機系統(tǒng)102(其可以為例如個人計算機)通信??梢员粚嵤槔缙舷到y(tǒng)的閃存控制器103可以包括一個或多個NAND物理層接口(PHY)單元113,其中的每個NAND物理層接口(PHY)單元處理與NAND閃存單元101中的一個或多個的實際物理層通信。NAND管理子系統(tǒng)123與主機系統(tǒng)102接口連接,接收來自主機系統(tǒng)102的存儲器請求并對其做出響應(yīng)。NAND閃存接口驅(qū)動器133處于NAND管理子系統(tǒng)123與NAND PHY單元113之間。除了其他功能,NAND閃存接口驅(qū)動器133將來自主機系統(tǒng)102的存儲器請求轉(zhuǎn)化成能夠被中繼到用于通信到NAND閃存單元101的NAND PHY單元113的更多的基本命令或任務(wù)。

如以上所指出的,已知的NAND閃存接口驅(qū)動器一旦被實施已經(jīng)難以改變。例如,NAND閃存接口驅(qū)動器可以被實施為與不同的命令序列相對應(yīng)的多個硬接線的有限狀態(tài)機(未示出)。在這樣的實施方式中,改變(或添加)任何命令需要要求改變(或添加)對應(yīng)的有限狀態(tài)機。為了提供超過一個存儲器通道的相同的命令的同時發(fā)布,針對每個命令序列可以存在對應(yīng)的有限狀態(tài)機的多個實例,其中的每個將必須在對應(yīng)的命令序列要被改變時被改變。

NAND閃存接口驅(qū)動器200的另一已知實施方式被示出在圖2中。NAND閃存接口驅(qū)動器200包括多個并行作業(yè)處理器201。每個作業(yè)處理器201可以是硬接線的微處理器。每個作業(yè)處理器201通常一次處理一個命令(其可以被稱為“描述符”)。當(dāng)來自主機系統(tǒng)102的每個命令到達時,其被分配以作業(yè)優(yōu)先級表203中的優(yōu)先級。一般地,在這樣的系統(tǒng)中的優(yōu)先級由到達的順序確定。

通常,任何作業(yè)處理器201能夠?qū)︶槍AND閃存單元101中的邏輯單元(LUN)中的任何一個的命令起作用。多路復(fù)用電路202將每個作業(yè)處理器201的輸出指引到正確的LUN。仲裁邏輯204確定哪個命令由哪個作業(yè)處理器201處理。作為一個示例,可以應(yīng)用以下仲裁規(guī)則:

1.以它們被接收到的順序處理命令描述符。

2.按順序處理針對相同LUN的不同命令描述符;盡管規(guī)則1,針對特定LUN的命令描述符將在針對該LUN的不同命令描述符仍然被處理的情況下被保持,并且在那種情況下針對不同LUN的命令描述符將甚至在它在稍后被接收到的情況下被處理。

3.按順序處理程序描述符,即,按順序處理程序數(shù)據(jù)(甚至在規(guī)則2的情況下,命令描述符不按順序來處理)。

4.處理讀取描述符使得讀取數(shù)據(jù)按順序被傳遞(甚至在規(guī)則2的情況下,命令描述符不按順序來處理)。

在諸如NAND閃存接口驅(qū)動器200的NAND閃存接口中,作業(yè)處理器201的利用率可以很低。例如,如果針對相同LUN的多個命令描述符被分配到作業(yè)處理器201的不同作業(yè)處理器,則在任何一個時間處這些作業(yè)處理器201中的僅僅一個是活動的。作業(yè)處理器201中的每個其他作業(yè)處理器必須等待直到所有較早的命令描述符已經(jīng)由作業(yè)處理器201中的其他作業(yè)處理器執(zhí)行。許多作業(yè)處理器201在大部分時間,尤其是在狀態(tài)輪詢期間保持不活動。

另外,針對這樣的布置可能需要復(fù)雜的仲裁邏輯。作業(yè)處理器201中的每個可能需要檢查作業(yè)處理器201中的每個其他作業(yè)處理器的狀態(tài)以確定它自己的下一動作。仲裁過程的復(fù)雜度隨著作業(yè)處理器201的數(shù)量N的平方而增大。此外,難以關(guān)閉針對這種布置的計時。

最后,命令描述符是由作業(yè)處理器201執(zhí)行還是作為狀態(tài)機(未示出)執(zhí)行,在已知系統(tǒng)中該命令被硬編碼。因此,限制了支持不同命令的靈活性。

根據(jù)本公開內(nèi)容的主題的實施方式,每個通道的一個處理器執(zhí)行可配置的NAND閃存命令。處理器可以是命令無意識的,即,沒有關(guān)于針對特定命令構(gòu)建的處理器的內(nèi)容。這提高處理器的靈活性以執(zhí)行由用戶配置的任何命令。

在圖3中示出了根據(jù)本公開內(nèi)容的主題的實施方式的NAND閃存接口(NFIF)驅(qū)動器300的一個示例。多個作業(yè)處理器201由單個每通道處理器301替代。通道處理器301可以是用于提高的靈活性的可編程微處理器。在302處輸入(例如,來自命令處理器312的)命令,而數(shù)據(jù)在讀/寫數(shù)據(jù)總線303上被輸入或被輸出。通道任務(wù)引擎304將新的處理器301的輸出與來自讀/寫數(shù)據(jù)先進/先出電路(FIFO)313的數(shù)據(jù)組合,讀/寫數(shù)據(jù)先進/先出電路(FIFO)313連接到讀/寫數(shù)據(jù)總線303,其繼而連接到錯誤校正單元(ECU)323。通道任務(wù)引擎304(例如通過NAND PHY單元113)與NAND閃存單元101通信。

在302處的命令輸入的通道處理器301的執(zhí)行根據(jù)作業(yè)存儲器305、操作存儲器306、任務(wù)存儲器307和LUN狀態(tài)308的內(nèi)容來控制。

如圖4所示,命令“作業(yè)”400包括一個或多個階段401。每個階段401包括任務(wù)組411和流控制421,流控制421控制任務(wù)組411被執(zhí)行多少次(每個任務(wù)組411能夠被執(zhí)行超過一次)。每個任務(wù)組411包括被發(fā)送到NAND閃存單元101的實際命令(CMD)、尋址(ADDR)、數(shù)據(jù)-輸入(DIN)、數(shù)據(jù)-輸出(DOUT)和等待(WAIT)任務(wù)。如在該示例中示出的,用于執(zhí)行任務(wù)組411的流控制421的執(zhí)行在通道處理器301中執(zhí)行,而任務(wù)組411中的實際任務(wù)在通道任務(wù)引擎304中被執(zhí)行。

圖5-7示出了流控制421的不同示例。針對簡單的階段500(圖5),該階段的任務(wù)組511(“階段任務(wù)”)根據(jù)相關(guān)聯(lián)的流控制421(未示出在圖5中)僅僅被執(zhí)行一次。針對某種程度更復(fù)雜的階段600(圖6),階段任務(wù)611同樣根據(jù)相關(guān)聯(lián)的流控制421僅僅被執(zhí)行一次,但是流控制421還包括在階段任務(wù)611之后的等待命令(“階段等待”)621。在循環(huán)類型階段700(圖7)中,階段任務(wù)711可以根據(jù)相關(guān)聯(lián)的流控制421的條件721被執(zhí)行多次。另外,流控制421還可以包括階段等待621。

圖8-11示出了讀取命令作業(yè)800的示例。如圖8所示,作業(yè)800包括命令字節(jié)801、五個尋址字節(jié)802-806和另一命令字節(jié)807。在等待或者休息時間tR之后,一個命令字節(jié)808和三個尋址字節(jié)809-811被發(fā)送出以檢查NAND閃存的狀態(tài)。狀態(tài)檢查可以發(fā)生超過一次直到狀態(tài)字節(jié)812指示數(shù)據(jù)已經(jīng)在NAND閃存中。當(dāng)數(shù)據(jù)準(zhǔn)備好時,命令字節(jié)813、五個尋址字節(jié)814-818和另一命令字節(jié)819被發(fā)布到NAND閃存以開始數(shù)據(jù)傳輸,并且n個數(shù)據(jù)字節(jié)820被返回。分別在圖9-11中示出了在作業(yè)水平、處理器水平和通道I/O水平處的對應(yīng)的流。

(圖9)作業(yè)流900以讀取命令和尋址901開始,跟著等待時間tR 902。在該等待時間tR 902期間,緩沖器在NAND閃存單元101中下載所請求的數(shù)據(jù)。循環(huán)903連續(xù)地檢查直到下載完成,如由從測試913得到的“是(YES)”指示的。一旦完成下載,在904處發(fā)布輸出命令(“改變列尋址增強”)并且在905處讀出數(shù)據(jù)。

在處理器水平處(圖10),在處理器流1000的第一階段1001中,讀取命令由處理器301發(fā)送到通道任務(wù)引擎304并且作業(yè)之后被掛起,直到處理器301被關(guān)注等待時間tR。第一階段1001對應(yīng)于作業(yè)流900中的901和902。

在第二階段1002(對應(yīng)于循環(huán)903)中,讀取狀態(tài)任務(wù)由處理器301發(fā)送到通道任務(wù)引擎304并且檢查所返回的任務(wù)的準(zhǔn)備就緒比特。如果準(zhǔn)備就緒比特指示“未準(zhǔn)備就緒”,則作業(yè)被掛起輪詢間隔,并且讀取狀態(tài)任務(wù)之后被重復(fù)。如果準(zhǔn)備就緒比特指示“準(zhǔn)備就緒”,則階段完成并且處理器流1000一直移動到第三階段1003。

在第三階段1003(對應(yīng)于904和905)中,改變列尋址和讀取數(shù)據(jù)任務(wù)由處理器301發(fā)送到通道任務(wù)引擎304,并且完成作業(yè)。

在通道水平處,通道I/O流1100(圖11)以(對應(yīng)于901和902,并且對應(yīng)于階段1001的)讀取命令任務(wù)1101開始,讀取命令任務(wù)1101包括命令字節(jié)、五個尋址字節(jié)和另一命令類型(參考圖8),跟著等待時間tR 1102。這跟著必要多的(對應(yīng)于循環(huán)903和階段1002的)讀取狀態(tài)任務(wù)1103,其中每個讀取狀態(tài)任務(wù)可以包括一個命令字節(jié)、三個尋址字節(jié)、一個等待字節(jié)和一個數(shù)據(jù)_輸入字節(jié)。流1100以(對應(yīng)于904和905和階段1003的)改變列尋址和讀取數(shù)據(jù)任務(wù)1104結(jié)束,其可以包括一個命令字節(jié)、五個尋址字節(jié)、一個命令字節(jié)、一個等待字節(jié)和必要多的數(shù)據(jù)_輸入字節(jié)。

如以上所指出的,根據(jù)本公開內(nèi)容的主題的實施方式,有效的任務(wù)定義能夠被匯編成任務(wù)階段和作業(yè)。圖1216示出了任務(wù)格式的示例。圖12示出了針對命令任務(wù)1200的格式,其可以被指定為任務(wù)_類型(task_type)0。圖13示出了針對尋址任務(wù)1300的格式,其可以被指定為任務(wù)_類型1。圖14示出了針對等待或延遲任務(wù)1400的格式,其可以被指定為任務(wù)_類型2。圖15示出了針對數(shù)據(jù)_輸入任務(wù)1500的格式,其可以被指定為任務(wù)_類型3。圖16示出了針對數(shù)據(jù)_輸出任務(wù)1600的格式,其可以被指定為任務(wù)_類型4。根據(jù)ONFI規(guī)范,例如,針對總計116個字節(jié),命令任務(wù)可以占有64個字節(jié)并且包括高達32個命令,尋址任務(wù)可以占有14個字節(jié),任務(wù)_類型任務(wù)可以占有18個字節(jié),數(shù)據(jù)_輸出任務(wù)可以占有16個字節(jié),并且等待任務(wù)可以占有4字節(jié)。因此,任務(wù)存儲器307可以為128字節(jié)。

在圖12-16中示出的示例中,除了等待或延遲任務(wù)1400(任務(wù)_類型2)之外的每個任務(wù)格式包括一個頭字節(jié)1201和至少一個額外字節(jié)。在每個格式中,頭字節(jié)1201的第二半1211(即4個比特)為任務(wù)類型保留。盡管僅僅需要3個比特來適應(yīng)五個任務(wù)類型,但是可以提供額外任務(wù)類型。

在任務(wù)格式1200(命令)和1300(尋址)中,頭字節(jié)1201的第一比特1221是數(shù)據(jù)_源(data_source)比特,其指示任務(wù)數(shù)據(jù)是在作業(yè)存儲器305中還是在任務(wù)存儲器307中被發(fā)現(xiàn)。下面的三個比特表示周期數(shù)量1231,其指示在任務(wù)中包括多少額外字節(jié)1202/1302(以及任務(wù)執(zhí)行需要多少時鐘周期);利用三個比特,可以提供總共八個額外字節(jié)。

在任務(wù)格式1400(等待或延遲)中,頭字節(jié)1201的第一半1401(四個比特)表示延遲任務(wù)中的時鐘周期的數(shù)量,即,如在時鐘周期中測量的延遲的長度。利用四個比特,高達16個周期的延遲是可能的。

在任務(wù)格式1500(數(shù)據(jù)_輸入)中,頭兩個比特1501表示數(shù)據(jù)路徑。在示出的示例中,存在三個選擇:數(shù)據(jù)被發(fā)送到ECU 323,或者被發(fā)送到通道處理器301以用于轉(zhuǎn)發(fā)到命令處理器312,或者被發(fā)送到通道處理器301以用于狀態(tài)檢查,但是高達四個選擇能夠利用兩個比特來供應(yīng)。類似地,下兩個比特1502表示周期數(shù)量源,即,針對能夠來自作業(yè)存儲器305的或者來自當(dāng)前任務(wù)存儲器307的當(dāng)前周期的數(shù)據(jù)的源,然而能夠利用兩個比特來供應(yīng)高達四個選擇。如所示出的,除了頭字節(jié)1201之外,任務(wù)1500被期望包括僅僅一個字節(jié)1503。

在任務(wù)格式1600(數(shù)據(jù)_輸出)中,頭兩個比特1601表示數(shù)據(jù)路徑。在示出的示例中,存在僅僅兩個選擇:數(shù)據(jù)從ECU 323或者從作業(yè)存儲器305獲得,但是高達四個選擇能夠利用兩個比特來供應(yīng)。如所示出的,除了頭字節(jié)1201之外,任務(wù)1600根據(jù)由比特1601選擇的數(shù)據(jù)路徑被期望包括一個或兩個字節(jié)1603。該一個或多個字節(jié)的內(nèi)容1613、1623取決于由比特1601選擇的數(shù)據(jù)路徑而不同。如果比特1601=‘0’,則所選擇的數(shù)據(jù)路徑包括ECU 323,并且兩個比特1602確定數(shù)據(jù)是來自作業(yè)存儲器305還是任務(wù)存儲器307。存在僅僅是具有內(nèi)容1613的一個字節(jié)1603,其確定開始索引和/或傳輸計數(shù)。如果比特1601=‘1’,則所選擇的數(shù)據(jù)路徑包括作業(yè)存儲器305,并且存在兩個字節(jié)1603,其中的一個具有內(nèi)容1613,并且其中的另一個具有內(nèi)容1623。

如以上所指出的,任務(wù)被分組到階段中,階段被分組到作業(yè)(也被稱為“操作”)中。命令處理器312將作業(yè)沉積到作業(yè)存儲器305中。作業(yè)存儲器305中的作業(yè)的示例格式1700被示出在圖17中并且為32個比特寬。第一線路1701包含命令I(lǐng)D,其可以為高達32個比特寬。第二線路1702包括尋址信息,該尋址信息包括邏輯單元(LUN)號1712、卷(VOL)號1722、設(shè)備(DEV)號1732和通道(CH)號1742,其全部被示出為4個比特寬,以及到組成作業(yè)的操作的指針1752。除了兩個保留字段1713之外,第三線路1703包括多個流控制比特(RRD、CC、ML、LC、TC和GRP)1723、命令類型1733以及另外的尋址信息,另外的尋址信息包括分配單元(AU)號1743和多平面(MP)號1753(在包含多個頁的情況下;針對包含僅僅一個頁的單平面操作,MP=0)。(一個或多個)剩余的線路1704包括針對作業(yè)的操作數(shù)。

組成作業(yè)的操作可以被存儲在操作存儲器306中,并且其在指針1752可以指向的地方。圖18示出了存儲在操作存儲器306中并由指針1752指向的一個操作1800。操作1800包括多個階段1801,以階段0(1811)開始并且以最后階段1821結(jié)束。因為階段的數(shù)量不固定,所以最后階段1821由最后階段字段(LP)中的值識別(圖19)。

圖19示出了階段1801的結(jié)構(gòu)1900的示例。在該示例中,階段1900是32個比特寬。除了其他字段,階段1900的第一線路1901包括如以上所討論的最末階段(LP)字段1911。LP字段1911中的值以信號傳達該階段1900是否為其作業(yè)中的“最后階段”,如以上所討論的。例如,‘0’能夠指示這不是最后階段,而‘1’能夠指示這是最后階段,或者反之亦然。

除了其他字段,階段1900的線路1901包括下面進一步討論的階段優(yōu)先級字段1921和階段類型字段1931。階段類型字段1931中的值可以與圖5-7中示出的三種類型的階段500、600、700相關(guān)(例如,值0、1和2)。在該連接中,階段1900的線路1902是針對階段類型=1或階段類型=2的情況(其分別指示在具有等待階段600或循環(huán)階段700的任務(wù)處)的任選的線路,并且包含階段等待周期數(shù)量。

階段1900的剩余線路包含關(guān)于階段1900的任務(wù)組1903中的任務(wù)的信息。如圖19所示,任務(wù)組1903中的線路中的每個包含指向任務(wù)存儲器307中的任務(wù)的指針。然而,在許多實施方式中,任務(wù)格式本身可以是足夠小以適合代替指針放入到任務(wù)組1903的一個線路中(其是四個字節(jié)長)。在這樣的實施方式中,任務(wù)存儲器307可以被省略。例如,如圖12-16所示,一些任務(wù)格式可以僅僅是一個字節(jié)或兩個字節(jié)長,并且同時其他任務(wù)格式可以高達八個字節(jié)長,它們能夠更短,并且高達四個字節(jié)的任何任務(wù)將適合放入到階段1900的線路中。

操作存儲器306的內(nèi)容,并且在提供的情況下,任務(wù)存儲器307能夠被編程以適應(yīng)來自不同供應(yīng)商的NAND閃存產(chǎn)品的命令和信號結(jié)構(gòu)。此外,操作存儲器306并且在提供的情況下任務(wù)存儲器307可以是用戶可編程的以適應(yīng)定制用戶任務(wù)和命令。

LUN狀態(tài)存儲器308可以被用于提供針對NAND閃存單元101中的每個LUN的以下狀態(tài)指示中的一個:

空閑(IDLE):在該LUN上沒有作業(yè)。

待處理(PENDING):作業(yè)待處理。

預(yù)激活(PRE-ACTIVE):預(yù)先提取下一階段任務(wù)組。

激活(ACTIVE):階段被選擇以使用任務(wù)引擎。

等待(WAIT):階段等待。作業(yè)在WAIT期間被掛起。如已知的,LUN狀態(tài)存儲器308還可以包括關(guān)于鏈和等待時間狀態(tài)的信息。

在圖20中用圖解法表示了LUN狀態(tài)存儲器308的操作的操作流2000。如圖20中所示,針對每個LUN的階段狀態(tài)(參加先前段落)被指示在階段狀態(tài)2001中。階段狀態(tài)2001還在2011處存儲針對考慮下的LUN的當(dāng)前階段狀態(tài)的階段指針,以及針對當(dāng)前階段狀態(tài)的優(yōu)先級水平,其優(yōu)先級水平基于除了到達或接受的順序之外的事物。優(yōu)先級水平能夠由用戶設(shè)置。另外,階段可以在其為階段或操作的鏈的不應(yīng)當(dāng)被中斷的部分的情況下具有更高優(yōu)先級。處理器301能夠使用優(yōu)先級水平來執(zhí)行在它被接收到的順序之外的階段,不像先前已知的NAND閃存接口驅(qū)動器。

操作流2000最好被理解為在測試2002的結(jié)束處開始,在測試2002中確定當(dāng)前階段是否是其作業(yè)中的最后階段。如果,在測試2002處,當(dāng)前階段是其作業(yè)中的最后階段,則流返回到2003,其中LUN狀態(tài)被指示為空閑直到新的作業(yè)被分配給考慮下的LUN。如果,在測試2002處,當(dāng)前階段不是其作業(yè)中的最后階段,則流返回到2001,其中下一階段的狀態(tài)為待處理、預(yù)激活或激活,并且最終執(zhí)行。在該階段執(zhí)行之后,流前進到測試2002以再次確定當(dāng)前階段是否是其作業(yè)中的最后階段,除非階段包括階段等待,在這種情況下流前進等待狀態(tài)2004直到等待時間流逝并且之后流前進到測試2002。

針對LUN狀態(tài)存儲器308中的各個狀態(tài)指示器的存儲格式可以采用針對每個狀態(tài)類型的比特掩碼的形式。例如,如圖21所示,每個狀態(tài)比特掩碼為32個比特寬,其中每個比特表示特定LUN的索引。如所示出的,存在針對空閑、待處理、預(yù)激活、激活和等待的單獨的比特掩碼2101-2105。每個LUN的狀態(tài)可以由針對恰當(dāng)?shù)臓顟B(tài)的比特掩碼中的該LUN的索引位置中的‘1’指示,其中‘0’出現(xiàn)在所有其他比特掩碼中的該位置中。備選地,每個LUN的狀態(tài)可以由針對恰當(dāng)?shù)臓顟B(tài)的比特掩碼中的該LUN的索引位置中的‘0’指示,其中‘1’出現(xiàn)在所有其他比特掩碼中的該位置中。

可以被存儲在LUN狀態(tài)存儲器308中的其他信息能夠包括,針對每個LUN,等待時間時間戳(如以上所討論的)、指向針對該LUN的下一階段的指針(除了以上提到的指向當(dāng)前階段的指針),指向針對該LUN的下一階段的指針、以及當(dāng)前階段對應(yīng)的作業(yè)或命令的識別。

在本公開內(nèi)容的主題的另一實施方式中,代替提供具有預(yù)定義操作和任務(wù)的操作存儲器306(以及任選的任務(wù)存儲器307),可以提供包含用戶能夠選擇以構(gòu)建各種操作和任務(wù)的序列的查找表的集合。

在基本水平處,NAND閃存接口是信號(讀使能的、寫使能的、清除的、等等)的集合。因此,NAND閃存事務(wù)是這些信號中的一個或多個的一系列切換。針對接口信號中的每個的值的匯集和針對NAND閃存命令總線上的每個信號值的保持時間可以被定義為信號幀。繼而,NAND閃存任務(wù)可以被定義為信號幀的序列,并且NAND閃存操作可以被定義為任務(wù)的序列。

因此,在這種實施方式中,操作存儲器306和任務(wù)存儲器307能夠利用圖22中示出的查找表(LUT)來替代。幀序列LUT 2201中的每個條目表示接口信號狀態(tài)和保持時間。任務(wù)序列LUT 2202中的每個條目表示能夠為任務(wù)序列的部分的命令,并且包括指向幀序列LUT 2201中的條目的指針2212,和用于指示來自一起組成由任務(wù)序列LUT 2202中的條目表示的命令的指向條目的條目的數(shù)目的計數(shù)器2222。備選地,如果組成由任務(wù)序列LUT 2202中的條目表示的命令的幀序列LUT 2201中的條目在幀序列LUT 2201中不是連續(xù)的,則任務(wù)序列LUT 2202中的每個條目能夠包括指向組成由任務(wù)序列LUT 2202中的條目表示的命令的幀序列LUT 2201中的條目的指針的集合(未示出)。

繼而,任務(wù)指針LUT 2203中的每個條目表示由任務(wù)的序列組成的存儲器操作,并且包括指向任務(wù)序列LUT 2202中的條目的指針2213和用于指示來自一起組成由任務(wù)指針LUT 2203中的條目表示的存儲器操作的指向條目的條目的數(shù)目的計數(shù)器2223。備選地,如果組成由任務(wù)指針LUT 2203中的條目表示的存儲器操作的任務(wù)序列LUT2202中的條目在任務(wù)序列LUT 2202中不是連續(xù)的,則任務(wù)指針LUT 2203中的每個條目能夠包括指向組成由任務(wù)指針LUT 2203中的條目表示的存儲器操作的任務(wù)序列LUT 2202中的條目的指針的集合(未示出)。

查找表2201、2202、2203可以是可編程的。因此,各個信號序列和命令序列能夠被更改以適應(yīng)來自不同供應(yīng)商的NAND閃存產(chǎn)品的命令和信號結(jié)構(gòu)。此外,查找表2201、2202、2203可以是用戶可編程的以適應(yīng)定制用戶任務(wù)和命令。

因此,可見,已經(jīng)提供了更靈活的NAND閃存接口的實施方式,以適應(yīng)來自不同供應(yīng)商的NAND閃存產(chǎn)品的命令和信號結(jié)構(gòu)以及定制用戶任務(wù)和命令。另外,所公開的NAND閃存接口是更有效的,因為存在較少的處理器在大部分時間處于空閑的,并且處理器能夠基于它們的優(yōu)先級而非它們被接收到的順序來執(zhí)行任務(wù)。

本發(fā)明的另外的方面涉及以下一條或多條:

第1條:一種針對一個或多個存儲器通道的存儲器通道命令接口,所述存儲器通道命令接口包括,針對所述一個或多個存儲器通道中的每個:

針對存儲器命令的可編程存儲裝置;

單個通道處理器,其用于執(zhí)行所述存儲器命令;以及

任務(wù)引擎,其用于將所述單個通道處理器的輸出通信到存儲器介質(zhì)。

第2條:根據(jù)第1條所述的存儲器通道命令接口,其中所述存儲器介質(zhì)是NAND閃存。

第3條:根據(jù)第1條所述的存儲器通道命令接口,其中:

存儲器命令被組織成包括包含任務(wù)的操作的作業(yè);并且

針對存儲器命令的所述可編程存儲裝置包括作業(yè)存儲器和操作存儲器。

第4條:根據(jù)第3條所述的存儲器通道命令接口,其中任務(wù)作為操作的部分被存儲在所述操作存儲器中。

第5條:根據(jù)第3條所述的存儲器通道命令接口,其中:

針對存儲器命令的所述可編程存儲裝置包括任務(wù)存儲器;

任務(wù)被存儲在所述任務(wù)存儲器中;并且

指向存儲在所述任務(wù)存儲器中的所述任務(wù)的指針作為操作的部分被存儲在所述操作存儲器中。

第6條:根據(jù)第1條所述的存儲器通道命令接口,其中針對所述存儲器命令的所述可編程存儲裝置包括至少一個查找表。

第7條:根據(jù)第6條所述的存儲器通道命令接口,其中:

存儲器命令被組織成包括包含任務(wù)的操作的作業(yè);并且

所述任務(wù)被存儲在所述至少一個查找表中的第一個中。

第8條:根據(jù)第7條所述的存儲器通道命令接口,其中:

作業(yè)包括所述任務(wù)的序列;

指向所述任務(wù)的序列的指針被存儲在所述至少一個查找表中的第二個中;

所述作業(yè)從所述至少一個查找表中的所述第二個查找表選擇指向任務(wù)的所述序列中的一個序列的所述指針中的一個指針;并且

所述指針中的所述一個從所述至少一個查找表中的所述第一個查找表選擇任務(wù)的所述序列中的所述一個序列。

第9條:根據(jù)第8條所述的存儲器通道命令接口,其中:

針對所述存儲器介質(zhì)的控制信號序列被存儲在所述至少一個查找表中的第三個中;

任務(wù)的所述序列中的所述一個中的每個任務(wù)從所述至少一個查找表中的所述第三個查找表選擇控制信號序列。

第10條:根據(jù)第1條所述的存儲器通道命令接口,還包括存儲器介質(zhì)狀態(tài)存儲裝置。

第11條:根據(jù)第10條所述的存儲器通道命令接口,其中:

所述存儲器介質(zhì)狀態(tài)存儲裝置存儲針對存儲器命令的優(yōu)先級指示;

所述優(yōu)先級指示基于除了所述存儲器命令的到達或接受的順序之外的條件;以及

所述單個通道處理器基于所述優(yōu)先級指示來控制存儲器命令的執(zhí)行的順序。

第12條:根據(jù)第11條所述的存儲器通道命令接口,其中:

所述存儲器介質(zhì)狀態(tài)存儲裝置存儲針對所述存儲器命令中的每一個的單獨的優(yōu)先級指示;并且

所述單個通道處理器基于所述單獨的優(yōu)先級指示來控制所述存儲器命令的所述執(zhí)行的順序。

第13條:一種操作存儲器通道命令接口的方法,所述方法包括:

將存儲器任務(wù)編程到所述存儲器通道命令接口中的可編程存儲裝置中;

將命令輸入到所述存儲器通道命令接口中;以及

通過從所述可編程存儲裝置選擇所述存儲器任務(wù)中的多個來執(zhí)行所述命令。

第14條:根據(jù)第13條所述的方法,其中:

所述輸入命令包括輸入多個命令;并且

所述方法還包括基于除了所述命令的到達或接受的順序之外的條件來將優(yōu)先級指示分配到所述多個命令中的每個命令;并且

所述執(zhí)行包括以基于所述優(yōu)先級指示的順序執(zhí)行所述多個命令。

第15條:根據(jù)第13條所述的方法,其中所述的將存儲器任務(wù)編程到所述存儲器通道命令接口中的所述可編程存儲裝置中包括接受由所述存儲器通道命令接口的用戶對存儲器任務(wù)的編程。

第16條:根據(jù)第15條所述的方法,其中接受由所述存儲器通道命令接口的用戶對存儲器任務(wù)的編程包括接受至少一個查找表的編程。

第17條:根據(jù)第13條所述的方法,其中:

所述輸入所述命令包括將所述命令分解為操作,并且將所述操作分解為所述存儲器任務(wù)中的多個存儲器任務(wù);并且

所述通過從所述可編程存儲裝置選擇所述存儲器任務(wù)中的多個存儲器任務(wù)來執(zhí)行所述命令包括執(zhí)行所述存儲器任務(wù)中的在所述輸入期間所述操作被分解而成的存儲器任務(wù)中的多個。

第18條:根據(jù)第13條所述的方法,其中:

所述的將存儲器任務(wù)編程到所述存儲器通道命令接口中的可編程存儲裝置中包括:

將所述存儲器任務(wù)中的每個分解為存儲器接口信號的相應(yīng)序列,以及

將存儲器接口信號的每個相應(yīng)序列存儲在第一查找表中;以及

所述的通過從所述可編程存儲裝置選擇所述存儲器任務(wù)中的多個存儲器任務(wù)來執(zhí)行所述命令包括查找所述第一查找表中的存儲器接口信號的所述相應(yīng)序列。

第19條:根據(jù)第18條所述的方法,其中:

所述的將存儲器任務(wù)編程到所述存儲器通道命令接口中的可編程存儲裝置中還包括:將從每個相應(yīng)存儲器任務(wù)指向所述第一查找表中的存儲器接口信號的所述相應(yīng)序列中的一個的任務(wù)指針存儲在第二查找表中;以及

所述查找所述第一查找表中的存儲器接口信號的所述相應(yīng)序列包括查找所述第二查找表中的每個相應(yīng)任務(wù)以找到指向所述第一查找表中的存儲器接口信號的所述相應(yīng)序列的所述任務(wù)指針。

第20條:根據(jù)第19條所述的方法,還包括:

將針對指向所述第二查找表中的任務(wù)指針的相應(yīng)序列的每個相應(yīng)命令的相應(yīng)命令指針存儲在第三查找表中;其中:

所述查找所述第一查找表中的存儲器接口信號的所述相應(yīng)序列還包括,在將命令輸入到所述存儲器通道命令接口中時,查找所述第三查找表中的所述命令以找到針對所述第二查找表中的任務(wù)指針的每個相應(yīng)序列的所述相應(yīng)命令指針。

將理解,前文僅僅是對本發(fā)明的原理的說明,并且本發(fā)明能夠由除了所描述的實施例之外的實施例來實踐,所描述的實施例出于說明而非限制的目的而被呈現(xiàn),并且本發(fā)明僅僅受隨附權(quán)利要求限制。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
吉首市| 镇沅| 遂昌县| 内乡县| 定兴县| 中江县| 荆州市| 古田县| 太仓市| 蒲江县| 宁陕县| 贡山| 灯塔市| 建湖县| 鸡泽县| 乐清市| 平顺县| 贵州省| 绍兴县| 桐柏县| 灵山县| 宜丰县| 苗栗市| 滕州市| 常宁市| 博野县| 略阳县| 府谷县| 兰考县| 遂平县| 天峨县| 雅安市| 凭祥市| 灯塔市| 光山县| 灌南县| 甘泉县| 张家港市| 墨玉县| 类乌齐县| 广元市|