專利名稱:一種閃存控制器及其控制方法、閃存存儲(chǔ)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及固態(tài)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種閃存控制器及其控制方法、閃存存儲(chǔ)設(shè)備。
背景技術(shù):
當(dāng)前閃存中的閃存控制器同時(shí)控制多個(gè)閃存顆粒,這些閃存顆粒共享一個(gè)數(shù)據(jù)和命令的通道,控制器通過片選信號(hào)實(shí)現(xiàn)對(duì)選定閃存顆粒的操作。為了實(shí)現(xiàn)高速傳輸?shù)哪繕?biāo),要求閃存顆粒的數(shù)據(jù)和命令通道不間斷的傳輸命令和數(shù)據(jù),閃存控制器滿負(fù)荷的在多個(gè)閃存顆粒之間切換工作。圖I是一種現(xiàn)有閃存控制器的原理結(jié)構(gòu)圖,該閃存控制器包括一個(gè)核心控制器、 多個(gè)命令控制器以及多個(gè)閃存顆粒,核心控制器負(fù)責(zé)控制多個(gè)命令在對(duì)應(yīng)的閃存顆粒之間 的切換,核心控制器之前的多個(gè)命令控制器(接口控制器)分別對(duì)應(yīng)閃存顆粒,為閃存顆粒提供命令。該方案每個(gè)閃存顆粒需要一個(gè)命令控制器,每個(gè)命令控制器負(fù)責(zé)從命令接口獲取命令、翻譯命令并發(fā)送命令到核心控制器,然后等待核心控制器執(zhí)行命令完成后執(zhí)行對(duì)應(yīng)的收集狀態(tài)和寫回狀態(tài)的操作。核心控制器需要多個(gè)命令去調(diào)度實(shí)現(xiàn)高性能,因此,在命令接口上,需要多個(gè)命令控制器,增加硬件資源的開銷,增加芯片的面積和功耗。綜上可知,現(xiàn)有的閃存控制器在實(shí)際使用上顯然存在不便與缺陷,所以有必要加以改進(jìn)。
發(fā)明內(nèi)容
針對(duì)上述的缺陷,本發(fā)明的目的在于提供一種閃存控制器及其控制方法、閃存存儲(chǔ)設(shè)備,能夠提高命令的產(chǎn)生和回收的效率,減少硬件資源的開銷,降低芯片面積和功耗。為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種閃存控制器的控制方法,包括一種閃存控制器的控制方法,其特征在于,包括命令產(chǎn)生狀態(tài)機(jī)從閃存的多個(gè)命令接口接收命令,將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器;所述核心控制器執(zhí)行所述命令完成后,命令回收狀態(tài)機(jī)從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)所述緩沖寄存器中的地址向內(nèi)存中寫入所述命令完成狀態(tài)信息。根據(jù)本發(fā)明的控制方法,“將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器”后還包括所述命令產(chǎn)生狀態(tài)機(jī)將所述命令對(duì)應(yīng)的數(shù)據(jù)地址發(fā)送給所述核心控制器,所述數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(shù)據(jù)寫入的源地址。根據(jù)本發(fā)明的控制方法,“將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器”的步驟具體為所述命令產(chǎn)生狀態(tài)機(jī)對(duì)所述多個(gè)命令接口的總線命令隊(duì)列進(jìn)行輪詢;若某個(gè)總線命令隊(duì)列不為空,則所述命令產(chǎn)生狀態(tài)機(jī)獲取其中一個(gè)命令;所述命令產(chǎn)生狀態(tài)機(jī)根據(jù)所述命令從內(nèi)存中獲取該命令的詳細(xì)信息打包后發(fā)送給所述核心控制器;所述命令產(chǎn)生狀態(tài)機(jī)繼續(xù)對(duì)所述總線命令隊(duì)列進(jìn)行輪詢,直至所述多個(gè)命令接口上沒有命令或者核心控制器不能夠再接收命令。根據(jù)本發(fā)明的控制方法,“所述命令產(chǎn)生狀態(tài)機(jī)根據(jù)所述命令從內(nèi)存中獲取該命令的詳細(xì)信息打包后發(fā)送給所述核心控制器”的步驟中,所述命令的詳細(xì)信息包括所述命令的操作類型以及所述命令的操作模式,所述命令的操作類型包括讀閃存、寫閃存以及擦除閃存;所述命令的操作模式包括對(duì)閃存的一個(gè)頁全部數(shù)據(jù)操作或者部分?jǐn)?shù)據(jù)操作。根據(jù)本發(fā)明的控制方法,“命令回收狀態(tài)機(jī)從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息”的步驟中,所述命令完成狀態(tài)信息為所述核心控制器執(zhí)行所述命令的結(jié)果,包括所述命令是否執(zhí)行成功以及所述命令執(zhí)行失敗的類型。本發(fā)明相應(yīng)提供一種閃存控制器,包括
命令產(chǎn)生狀態(tài)機(jī),用于從閃存的多個(gè)命令接口接收命令,將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器;核心控制器,用于執(zhí)行所述命令產(chǎn)生狀態(tài)機(jī)發(fā)來的命令,并向命令回收狀態(tài)機(jī)返回所述命令完成狀態(tài)信息;命令回收狀態(tài)機(jī),用于所述核心控制器執(zhí)行所述命令完成后從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)所述緩沖寄存器中的地址將所述命令完成狀態(tài)信息寫入內(nèi)存。根據(jù)本發(fā)明的閃存控制器,所述命令產(chǎn)生狀態(tài)機(jī)還用于將所述命令發(fā)送給所述核心控制器后,將所述命令對(duì)應(yīng)的數(shù)據(jù)地址發(fā)送給所述核心控制器,所述數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(shù)據(jù)寫入的源地址;所述命令完成狀態(tài)信息包括所述命令是否執(zhí)行成功以及所述命令執(zhí)行失敗的類型。根據(jù)本發(fā)明的閃存控制器,所述命令產(chǎn)生狀態(tài)機(jī)還用于對(duì)多個(gè)命令接口的總線命令隊(duì)列進(jìn)行輪詢,若某個(gè)總線命令隊(duì)列不為空,則命令產(chǎn)生狀態(tài)機(jī)獲取其中一個(gè)命令并從內(nèi)存中獲取該命令的詳細(xì)信息打包后發(fā)送給所述核心控制器,直至所述多個(gè)命令接口上沒有命令或者核心控制器不能夠再接收命令。根據(jù)本發(fā)明的閃存控制器,所述命令的詳細(xì)信息包括所述命令的操作類型以及所述命令的操作模式,所述命令的操作類型包括讀閃存、寫閃存以及擦除閃存;所述命令的操作模式包括對(duì)閃存的一個(gè)頁全部數(shù)據(jù)操作或者部分?jǐn)?shù)據(jù)操作。本發(fā)明還提供一種閃存存儲(chǔ)設(shè)備,包括多個(gè)命令接口、與所述多個(gè)命令接口對(duì)應(yīng)的多個(gè)閃存顆粒以及與所述多個(gè)命令接口以及多個(gè)閃存顆粒分別連接的閃存控制器,所述閃存控制器包括命令產(chǎn)生狀態(tài)機(jī),用于從閃存的多個(gè)命令接口接收命令,將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器;核心控制器,用于執(zhí)行所述命令產(chǎn)生狀態(tài)機(jī)發(fā)來的命令,并向命令回收狀態(tài)機(jī)返回所述命令完成狀態(tài)信息;命令回收狀態(tài)機(jī),用于所述核心控制器執(zhí)行所述命令完成后從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)所述緩沖寄存器中的地址將所述命令完成狀態(tài)信息寫入內(nèi)存。本發(fā)明通過命令產(chǎn)生狀態(tài)機(jī)不斷從命令接口獲取命令并發(fā)送到核心控制器,命令回收狀態(tài)機(jī)從核心控制器回收命令完成狀態(tài)信息并寫回該信息,只需要一個(gè)命令產(chǎn)生狀態(tài)機(jī)和命令回收狀態(tài)機(jī)即可實(shí)現(xiàn)對(duì)核心控制器滿負(fù)荷運(yùn)轉(zhuǎn)的控制,同時(shí)命令的產(chǎn)生和回收由獨(dú)立的狀態(tài)機(jī)完成,增加了命令執(zhí)行的靈活度,減少了命令切換的時(shí)間,減少了應(yīng)急資源的消耗,降低芯片面積和功耗提高了命令的產(chǎn)生和回收的效率,減少硬件資源的開銷,相對(duì)于現(xiàn)有采用多個(gè)命令控制器控制特定的閃存顆粒,本方案只需要一個(gè)狀態(tài)機(jī)動(dòng)態(tài)的為核心控制器提供命令去控制多個(gè)閃存顆粒,減少了硬件資源的消耗,降低芯片的面積和功耗。借此,本發(fā)明能夠提高命令的產(chǎn)生和回收的效率,減少硬件資源的開銷,降低芯片面積和功耗。
圖I是現(xiàn)有閃存控制器的原理結(jié)構(gòu)圖;圖2是本發(fā)明的閃存控制器的原理結(jié)構(gòu)圖;圖3是本發(fā)明閃存控制器的控制方法的流程圖; 圖4是本發(fā)明閃存控制器中命令產(chǎn)生狀態(tài)機(jī)的運(yùn)行流程圖;圖5是本發(fā)明閃存存儲(chǔ)設(shè)備的原理結(jié)構(gòu)圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖2所示,本發(fā)明一種閃存控制器100,用于對(duì)非易失性閃存的多個(gè)閃存顆粒200進(jìn)行控制,其主要包括命令產(chǎn)生狀態(tài)機(jī)10、核心控制器20、命令回收狀態(tài)機(jī)30,其中命令產(chǎn)生狀態(tài)機(jī)10以及命令回收狀態(tài)機(jī)分別通過同步FIFO (先入先出)緩沖器40與核心控制器20連接耦合。命令產(chǎn)生狀態(tài)機(jī)10,用于從閃存的多個(gè)命令接口接收命令,將該命令翻譯后轉(zhuǎn)發(fā)給核心控制器20,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器11。在閃存中,通常設(shè)置一個(gè)命令接口(該命令接口為總線接口)對(duì)應(yīng)一個(gè)閃存顆粒,一般來說一個(gè)閃存會(huì)包括多個(gè)閃存顆粒200,從而閃存具有多個(gè)命令接口,每個(gè)命令接口可以存放多個(gè)命令組成的總線命令隊(duì)列。命令產(chǎn)生狀態(tài)機(jī)10對(duì)多個(gè)命令接口進(jìn)行輪詢,如果某個(gè)總線命令隊(duì)列不為空,則命令產(chǎn)生狀態(tài)機(jī)10啟動(dòng),從總線命令隊(duì)列中獲取一個(gè)命令,并根據(jù)該命令從內(nèi)存中獲取該命令對(duì)應(yīng)的詳細(xì)信息。該詳細(xì)信息主要包括命令的操作類型以及命令的操作模式,命令的操作類型包括讀閃存、寫閃存以及擦除閃存等;命令的操作模式包括對(duì)閃存的一個(gè)頁全部數(shù)據(jù)操作或者部分?jǐn)?shù)據(jù)操作等。命令產(chǎn)生狀態(tài)機(jī)10獲取了該命令的詳細(xì)信息后,將該詳細(xì)信息進(jìn)行打包發(fā)送給核心控制器20進(jìn)行處理,隨后命令產(chǎn)生狀態(tài)機(jī)10將從內(nèi)存中獲取該命令對(duì)應(yīng)的數(shù)據(jù)地址并發(fā)送給核心控制器20,該數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(shù)據(jù)寫入的源地址。為便于命令的回收,命令產(chǎn)生狀態(tài)機(jī)10還在內(nèi)存中預(yù)先開辟空間用于存儲(chǔ)命令完成狀態(tài)信息,同時(shí)將該命令完成狀態(tài)信息的存儲(chǔ)地址緩存到命令狀態(tài)機(jī)10內(nèi)部的緩沖寄存器11,以便于命令回收狀態(tài)機(jī)30調(diào)用。命令完成狀態(tài)信息包括命令是否執(zhí)行成功以及命令執(zhí)行失敗的類型。其中,閃存的多個(gè)命令接口與緩沖寄存器11綁定,每個(gè)命令接口分別與一個(gè)緩沖寄存器11對(duì)應(yīng)。核心控制器20,用于執(zhí)行命令產(chǎn)生狀態(tài)機(jī)10發(fā)來的命令,并向命令回收狀態(tài)機(jī)30返回該命令的命令完成狀態(tài)信息。在命令中包括了閃存顆粒200的編號(hào),核心控制器20接收一個(gè)命令則在對(duì)應(yīng)的閃存顆粒200上執(zhí)行該命令。為了讓閃存接口滿負(fù)荷工作,達(dá)到高性能數(shù)據(jù)傳輸?shù)哪康模诵目刂破?0通常能夠控制多個(gè)閃存顆粒200,即核心控制器20能夠接收多個(gè)命令,并根據(jù)閃存顆粒200的狀態(tài)調(diào)度命令的執(zhí)行;同時(shí)核心控制器20內(nèi)能夠緩存控制器命令,通常緩存的是不同閃存顆粒200不同邏輯單元的命令,以方便核心控制器20動(dòng)態(tài)調(diào)度這些命令在空閑的閃存顆粒200上執(zhí)行。當(dāng)核心控制器20能夠接收命令(即未處于滿負(fù)荷),且命令接口有新的命令到來,命令產(chǎn)生狀態(tài)機(jī)10啟動(dòng),核心控制器20接收從命令產(chǎn)生狀態(tài)機(jī)10發(fā)來的命令,并根據(jù)命令執(zhí)行相應(yīng)的操作(讀閃存、寫閃存以及擦除閃存等);當(dāng)核心控制器20完成了某個(gè)命令的執(zhí)行,則觸發(fā)命令回收狀態(tài)機(jī)30接收命令完成狀態(tài)信息。
命令回收狀態(tài)機(jī)30,用于核心控制器20執(zhí)行命令完成后從核心控制器20查詢?cè)撁畹膶?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)緩沖寄存器11中的地址將該命令完成狀態(tài)信息寫入內(nèi)存。具體的,當(dāng)核心控制器20執(zhí)行某個(gè)命令結(jié)束,命令回收狀態(tài)機(jī)30觸發(fā),并從核心控制器20中查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)該命令內(nèi)的閃存顆粒編號(hào)與命令產(chǎn)生狀態(tài)機(jī)10內(nèi)的緩沖寄存器11的對(duì)應(yīng)關(guān)系,將相應(yīng)的緩沖寄存器11中獲取該命令的命令完成狀態(tài)信息的存儲(chǔ)地址,并根據(jù)該地址將命令完成狀態(tài)信息存入內(nèi)存。根據(jù)本發(fā)明的一個(gè)實(shí)施例,核心控制器20控制4個(gè)閃存顆粒,總線上有4個(gè)slave(從設(shè)備)作為命令接口,命令產(chǎn)生狀態(tài)機(jī)10會(huì)對(duì)4個(gè)salve 口輪詢并接收命令進(jìn)行翻譯后發(fā)送給核心控制器20,4個(gè)slave 口和命令產(chǎn)生狀態(tài)機(jī)10內(nèi)部的BF (緩沖寄存器11)綁定,一個(gè)slave 口對(duì)應(yīng)一個(gè)BF。Slave 口和閃存顆粒200之間沒有綁定的關(guān)系,驅(qū)動(dòng)程序可以選擇任意一個(gè)slave去控制特定的閃存顆粒200。由于命令中包含了閃存顆粒200的編號(hào),因此命令產(chǎn)生狀態(tài)機(jī)10只要把編號(hào)緩存在BF中,使不同閃存顆粒200返回狀態(tài)的位置不同,命令回收狀態(tài)機(jī)30根據(jù)返回狀態(tài)位置和命令匹配。如果驅(qū)動(dòng)程序以固定的關(guān)系控制閃存顆粒20,即BR)對(duì)于顆粒0,BFl對(duì)于顆粒1,則不需要在BF中緩存編號(hào)。核心控制器20接收了來自命令狀態(tài)機(jī)10命令,并根據(jù)該命令中的閃存顆粒編號(hào)對(duì)相應(yīng)的閃存顆粒進(jìn)行操作。操作結(jié)束后,命令回收狀態(tài)機(jī)30觸發(fā),從核心I控制器20中查詢?cè)撁畹拿钔瓿蔂顟B(tài)信息,并根據(jù)該命令內(nèi)的閃存顆粒編號(hào)與命令產(chǎn)生狀態(tài)機(jī)10內(nèi)的緩沖寄存器11的對(duì)應(yīng)關(guān)系,從相應(yīng)的緩沖寄存器11中獲取該命令的命令完成狀態(tài)信息的存儲(chǔ)地址,并根據(jù)該地址將命令完成狀態(tài)信息存入內(nèi)存。在本發(fā)明中,在命令產(chǎn)生端和命令回收端(即命令控制器端),沒有不同閃存控制器的概念,命令產(chǎn)生狀態(tài)機(jī)10看到的是不同的命令接口,并循環(huán)的從這些接口中接收命令。命令的產(chǎn)生、命令的回收和閃存顆粒200之間不需要通過特定的ID( IDentity,身份標(biāo)識(shí)號(hào)碼)來固定,命令接口和緩沖寄存器11建立了固定的關(guān)系,閃存顆粒200和命令接口的對(duì)應(yīng)關(guān)系由驅(qū)動(dòng)程序確定?,F(xiàn)有的閃存控制器中有多個(gè)命令控制器,每個(gè)命令控制器一個(gè)閃存顆粒,并且命令控制器需要長(zhǎng)時(shí)間維持對(duì)一個(gè)閃存顆粒的控制器,從命令接口獲得命令開始,到把命令和數(shù)據(jù)發(fā)到核心控制器,到從核心控制器獲得完成狀態(tài),命令控制器都需要維持在該閃存顆粒上,需要多個(gè)命令控制器實(shí)現(xiàn)核心控制器的滿負(fù)荷運(yùn)轉(zhuǎn)。而本發(fā)明中,命令產(chǎn)生狀態(tài)機(jī)10動(dòng)態(tài)的提供命令,命令回收狀態(tài)機(jī)30動(dòng)態(tài)回收狀態(tài),只需要一個(gè)命令產(chǎn)生狀態(tài)機(jī)10和命令回收狀態(tài)機(jī)30即可實(shí)現(xiàn)對(duì)核心控制器20滿負(fù)荷運(yùn)轉(zhuǎn)的控制。本發(fā)明通過命令產(chǎn)生狀態(tài)機(jī)10不斷從命令接口獲取命令并發(fā)送到核心控制器20,命令回收狀態(tài)機(jī)30從核心控制器20回收命令完成狀態(tài)信息并寫回該信息,只需要一個(gè)命令產(chǎn)生狀態(tài)機(jī)10和命令回收狀態(tài)機(jī)30即可實(shí)現(xiàn)對(duì)核心控 制器20滿負(fù)荷運(yùn)轉(zhuǎn)的控制,同時(shí)命令的產(chǎn)生和回收由獨(dú)立的狀態(tài)機(jī)完成,增加了命令執(zhí)行的靈活度,減少了命令切換的時(shí)間,減少了應(yīng)急資源的消耗,降低芯片面積和功耗提高了命令的產(chǎn)生和回收的效率,減少硬件資源的開銷,相對(duì)于現(xiàn)有采用多個(gè)命令控制器控制特定的閃存顆粒,本方案只需要一個(gè)狀態(tài)機(jī)動(dòng)態(tài)的為核心控制器提供命令去控制多個(gè)閃存顆粒,減少了硬件資源的消耗,降低芯片的面積和功耗。借此,本發(fā)明能夠提高命令的產(chǎn)生和回收的效率,減少硬件資源的開銷,降低芯片面積和功耗。如圖3所示,本發(fā)明還提供一種閃存控制器的控制方法,該方法通過圖2中的閃存控制器完成,該控制方法的主要流程包括如下步驟步驟S301,命令產(chǎn)生狀態(tài)機(jī)從閃存的多個(gè)命令接口接收命令,將命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器。本步驟由圖2中的命令產(chǎn)生狀態(tài)機(jī)10完成。命令完成狀態(tài)信息為核心控制器執(zhí)行命令的結(jié)果,包括命令是否執(zhí)行成功以及命令執(zhí)行失敗的類型等信息。步驟S302,核心控制器執(zhí)行命令完成后,命令回收狀態(tài)機(jī)從核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)緩沖寄存器中的地址向內(nèi)存中寫入命令完成狀態(tài)信息。本步驟由圖2中的命令回收狀態(tài)機(jī)30完成。優(yōu)選的是,在步驟S301中,命令產(chǎn)生狀態(tài)機(jī)將命令翻譯后轉(zhuǎn)發(fā)給核心控制器后還包括將命令對(duì)應(yīng)的數(shù)據(jù)地址發(fā)送給核心控制器,該數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(shù)據(jù)寫入的源地址。優(yōu)選的是,在步驟S301中,命令產(chǎn)生狀態(tài)機(jī)從閃存的多個(gè)命令接口接收命令,且將命令并翻譯后轉(zhuǎn)發(fā)給核心控制器具體為命令產(chǎn)生狀態(tài)機(jī)對(duì)多個(gè)命令接口的總線命令隊(duì)列進(jìn)行輪詢;若某個(gè)總線命令隊(duì)列不為空,則命令產(chǎn)生狀態(tài)機(jī)獲取其中一個(gè)命令;命令產(chǎn)生狀態(tài)機(jī)根據(jù)命令從內(nèi)存中獲取該命令的詳細(xì)信息打包后發(fā)送給核心控制器,命令的詳細(xì)信息包括命令的操作類型以及命令的操作模式,命令的操作類型主要包括讀閃存、寫閃存以及擦除閃存等,命令的操作模式包括對(duì)閃存的一個(gè)頁全部數(shù)據(jù)操作或者部分?jǐn)?shù)據(jù)操作等;命令產(chǎn)生狀態(tài)機(jī)繼續(xù)對(duì)總線命令隊(duì)列進(jìn)行輪詢,直至多個(gè)命令接口上沒有命令或者核心控制器不能夠再接收命令。圖4是本發(fā)明閃存控制器中命令產(chǎn)生狀態(tài)機(jī)的運(yùn)行流程圖,主要流程包括如下步驟步驟S401,命令產(chǎn)生狀態(tài)機(jī)對(duì)多個(gè)命令接口的總線命令隊(duì)列進(jìn)行輪詢。步驟S402,若某個(gè)總線命令隊(duì)列不為空,則命令產(chǎn)生狀態(tài)機(jī)獲取其中一個(gè)命令。步驟S403,命令產(chǎn)生狀態(tài)機(jī)將命令進(jìn)行翻譯后發(fā)送給核心控制器,同時(shí)將該命令的數(shù)據(jù)地址發(fā)送給核心控制器。
步驟S404,判斷核心控制器是否為滿負(fù)荷狀態(tài),若是則進(jìn)入步驟S405,否則進(jìn)入步驟S406。步驟S405,命令產(chǎn)生狀態(tài)機(jī)暫停向核心控制器發(fā)送命令,并回到步驟S404。步驟S406,命令產(chǎn)生狀態(tài)機(jī)向核心控制器發(fā)送命令,并回到步驟S402。本發(fā)明的將命令產(chǎn)生和命令回收分別通過兩個(gè)狀態(tài)機(jī)實(shí)現(xiàn),一旦核心控制器能夠接收命令,且命令接口有新的命令到來,命令產(chǎn)生狀態(tài)機(jī)啟動(dòng)對(duì)應(yīng)的操作。將命令產(chǎn)生和命令回收兩個(gè)狀態(tài)機(jī)彼此獨(dú)立,增加了命令執(zhí)行的靈活度,減少了命令切換的時(shí)間,減少了應(yīng)急資源的消耗,降低芯片面積和功耗。如圖5所示,本發(fā)明還提供一種閃存存儲(chǔ)設(shè)備300,包括多個(gè)命令接口 301、與多個(gè)命令接口 301對(duì)應(yīng)的多個(gè)閃存顆粒200以及與多個(gè)命令接口 301以及多個(gè)閃存顆粒200分別連接的閃存控制器100,閃存控制器100包括
命令產(chǎn)生狀態(tài)機(jī),用于從閃存的多個(gè)命令接口接收命令,將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器;核心控制器,用于執(zhí)行所述命令產(chǎn)生狀態(tài)機(jī)發(fā)來的命令,并向命令回收狀態(tài)機(jī)返回所述命令完成狀態(tài)信息;命令回收狀態(tài)機(jī),用于所述核心控制器執(zhí)行所述命令完成后從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)所述緩沖寄存器中的地址將所述命令完成狀態(tài)信息寫入內(nèi)存。綜上所述,本發(fā)明通過命令產(chǎn)生狀態(tài)機(jī)不斷從命令接口獲取命令并發(fā)送到核心控制器,命令回收狀態(tài)機(jī)從核心控制器回收命令完成狀態(tài)信息并寫回該信息,只需要一個(gè)命令產(chǎn)生狀態(tài)機(jī)和命令回收狀態(tài)機(jī)即可實(shí)現(xiàn)對(duì)核心控制器滿負(fù)荷運(yùn)轉(zhuǎn)的控制,同時(shí)命令的產(chǎn)生和回收由獨(dú)立的狀態(tài)機(jī)完成,增加了命令執(zhí)行的靈活度,減少了命令切換的時(shí)間,減少了應(yīng)急資源的消耗,降低芯片面積和功耗提高了命令的產(chǎn)生和回收的效率,減少硬件資源的開銷,相對(duì)于現(xiàn)有采用多個(gè)命令控制器控制特定的閃存顆粒,本方案只需要一個(gè)狀態(tài)機(jī)動(dòng)態(tài)的為核心控制器提供命令去控制多個(gè)閃存顆粒,減少了硬件資源的消耗,降低芯片的面積和功耗。借此,本發(fā)明能夠提高命令的產(chǎn)生和回收的效率,減少硬件資源的開銷,降低芯片面積和功耗。當(dāng)然,本發(fā)明還可有其它多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種閃存控制器的控制方法,其特征在于,包括 命令產(chǎn)生狀態(tài)機(jī)從閃存的多個(gè)命令接ロ接收命令,將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器; 所述核心控制器執(zhí)行所述命令完成后,命令回收狀態(tài)機(jī)從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)所述緩沖寄存器中的地址向內(nèi)存中寫入所述命令完成狀態(tài)ィ目息。
2.根據(jù)權(quán)利要求I所述的控制方法,其特征在干,“將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器”后還包括 所述命令產(chǎn)生狀態(tài)機(jī)將所述命令對(duì)應(yīng)的數(shù)據(jù)地址發(fā)送給所述核心控制器,所述數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(shù)據(jù)寫入的源地址。
3.根據(jù)權(quán)利要求I所述的控制方法,其特征在干,“命令產(chǎn)生狀態(tài)機(jī)從閃存的多個(gè)命令接ロ接收命令,且將所述命令并翻譯后轉(zhuǎn)發(fā)給核心控制器”的步驟具體為 所述命令產(chǎn)生狀態(tài)機(jī)對(duì)所述多個(gè)命令接ロ的總線命令隊(duì)列進(jìn)行輪詢; 若某個(gè)總線命令隊(duì)列不為空,則所述命令產(chǎn)生狀態(tài)機(jī)獲取其中ー個(gè)命令; 所述命令產(chǎn)生狀態(tài)機(jī)根據(jù)所述命令從內(nèi)存中獲取該命令的詳細(xì)信息打包后發(fā)送給所述核心控制器; 所述命令產(chǎn)生狀態(tài)機(jī)繼續(xù)對(duì)所述總線命令隊(duì)列進(jìn)行輪詢,直至所述多個(gè)命令接口上沒有命令或者核心控制器不能夠再接收命令。
4.根據(jù)權(quán)利要求3所述的控制方法,其特征在干,“所述命令產(chǎn)生狀態(tài)機(jī)根據(jù)所述命令從內(nèi)存中獲取該命令的詳細(xì)信息打包后發(fā)送給所述核心控制器”的步驟中,所述命令的詳細(xì)信息包括所述命令的操作類型以及所述命令的操作模式,所述命令的操作類型包括讀閃存、寫閃存以及擦除閃存;所述命令的操作模式包括對(duì)閃存的ー個(gè)頁全部數(shù)據(jù)操作或者部分?jǐn)?shù)據(jù)操作。
5.根據(jù)權(quán)利要求I所述的控制方法,其特征在干,“命令回收狀態(tài)機(jī)從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息”的步驟中,所述命令完成狀態(tài)信息為所述核心控制器執(zhí)行所述命令的結(jié)果,包括所述命令是否執(zhí)行成功以及所述命令執(zhí)行失敗的類型。
6.ー種閃存控制器,其特征在于,包括 命令產(chǎn)生狀態(tài)機(jī),用于從閃存的多個(gè)命令接ロ接收命令,將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器; 核心控制器,用于執(zhí)行所述命令產(chǎn)生狀態(tài)機(jī)發(fā)來的命令,井向命令回收狀態(tài)機(jī)返回所述命令完成狀態(tài)信息; 命令回收狀態(tài)機(jī),用于所述核心控制器執(zhí)行所述命令完成后從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)所述緩沖寄存器中的地址將所述命令完成狀態(tài)信息寫入內(nèi)存。
7.根據(jù)權(quán)利要求6所述的閃存控制器,其特征在于,所述命令產(chǎn)生狀態(tài)機(jī)還用于將所述命令發(fā)送給所述核心控制器后,將所述命令對(duì)應(yīng)的數(shù)據(jù)地址發(fā)送給所述核心控制器,所述數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(shù)據(jù)寫入的源地址; 所述命令完成狀態(tài)信息包括所述命令是否執(zhí)行成功以及所述命令執(zhí)行失敗的類型。
8.根據(jù)權(quán)利要求6所述的閃存控制器,其特征在于,所述命令產(chǎn)生狀態(tài)機(jī)還用于對(duì)多個(gè)命令接ロ的總線命令隊(duì)列進(jìn)行輪詢,若某個(gè)總線命令隊(duì)列不為空,則命令產(chǎn)生狀態(tài)機(jī)獲取其中ー個(gè)命令并從內(nèi)存中獲取該命令的詳細(xì)信息打包后發(fā)送給所述核心控制器,直至所述多個(gè)命令接ロ上沒有命令或者核心控制器不能夠再接收命令。
9.根據(jù)權(quán)利要求8所述的閃存控制器,其特征在干,所述命令的詳細(xì)信息包括所述命令的操作類型以及所述命令的操作模式,所述命令的操作類型包括讀閃存、寫閃存以及擦除閃存;所述命令的操作模式包括對(duì)閃存的ー個(gè)頁全部數(shù)據(jù)操作或者部分?jǐn)?shù)據(jù)操作。
10.ー種閃存存儲(chǔ)設(shè)備,包括多個(gè)命令接ロ、與所述多個(gè)命令接ロ對(duì)應(yīng)的多個(gè)閃存顆粒以及與所述多個(gè)命令接ロ以及多個(gè)閃存顆粒分別連接的閃存控制器,其特征在于,所述閃存控制器包括 命令產(chǎn)生狀態(tài)機(jī),用于從閃存的多個(gè)命令接ロ接收命令,將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器; 核心控制器,用于執(zhí)行所述命令產(chǎn)生狀態(tài)機(jī)發(fā)來的命令,井向命令回收狀態(tài)機(jī)返回所述命令完成狀態(tài)信息; 命令回收狀態(tài)機(jī),用于所述核心控制器執(zhí)行所述命令完成后從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)所述緩沖寄存器中的地址將所述命令完成狀態(tài)信息寫入內(nèi)存。
全文摘要
本發(fā)明適用于固態(tài)存儲(chǔ)技術(shù)領(lǐng)域,提供了一種閃存控制器及其控制方法、閃存存儲(chǔ)設(shè)備,閃存控制器的控制方法包括命令產(chǎn)生狀態(tài)機(jī)從閃存的多個(gè)命令接口接收命令,將命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器;核心控制器執(zhí)行命令完成后,命令回收狀態(tài)機(jī)從核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)緩沖寄存器中的地址向內(nèi)存中寫入所述命令完成狀態(tài)信息。借此,本發(fā)明能夠提高命令產(chǎn)生和回收的效率,減少硬件資源的開銷,降低芯片面積和功耗。
文檔編號(hào)G06F12/02GK102799391SQ20121019586
公開日2012年11月28日 申請(qǐng)日期2012年6月14日 優(yōu)先權(quán)日2012年6月14日
發(fā)明者莫海鋒 申請(qǐng)人:記憶科技(深圳)有限公司