專利名稱:一種閃存控制器及其控制方法、閃存存儲(chǔ)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及固態(tài)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種閃存控制器及其控制方法、閃存存儲(chǔ)設(shè)備。
背景技術(shù):
當(dāng)前閃存中的閃存控制器同時(shí)控制多個(gè)閃存顆粒,這些閃存顆粒共享一個(gè)數(shù)據(jù)和命令的通道,控制器通過(guò)片選信號(hào)實(shí)現(xiàn)對(duì)選定閃存顆粒的操作。為了實(shí)現(xiàn)高速傳輸?shù)哪繕?biāo),要求閃存顆粒的數(shù)據(jù)和命令通道不間斷的傳輸命令和數(shù)據(jù),閃存控制器滿負(fù)荷的在多個(gè)閃
存顆粒之間切換工作,因此,需要閃存控制能夠拿到多個(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è)命令控制器,增加硬件資源的開(kāi)銷,增加芯片的面積和功耗。同時(shí),且每個(gè)命令控制器發(fā)出命令后需等待命令完成并回收完成信息,每個(gè)命令控制器維持控制一個(gè)命令的時(shí)間過(guò)長(zhǎng),命令切換時(shí)間長(zhǎng),降低命令執(zhí)行的速度。此外,命令控制器需要把命令發(fā)送給核心控制器,也需要把該命令所操作的數(shù)據(jù)地址發(fā)送給核心控制器,如果數(shù)據(jù)來(lái)源于多個(gè)地址或者數(shù)據(jù)要分散寫到多個(gè)地址,對(duì)于一個(gè)命令,命令控制器需要提供給核心控制器多個(gè)數(shù)據(jù)的地址,而由于核心控制器緩存地址的空間有限,可能會(huì)導(dǎo)致命令控制器狀態(tài)機(jī)停在某個(gè)狀態(tài),降低命令執(zhí)行的速度。綜上可知,現(xiàn)有的閃存控制器在實(shí)際使用上顯然存在不便與缺陷,所以有必要加以改進(jìn)。
發(fā)明內(nèi)容
針對(duì)上述的缺陷,本發(fā)明的目的在于提供一種閃存控制器及其控制方法、閃存存儲(chǔ)設(shè)備,能夠提高命令執(zhí)行的速度,保證核心控制器有足夠的命令去實(shí)現(xiàn)高性能數(shù)據(jù)傳輸,保證了閃存控制器的性能,同時(shí)提高命令的產(chǎn)生和回收的效率,減少硬件資源的開(kāi)銷,降低芯片面積和功耗。為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種閃存控制器的控制方法,包括命令產(chǎn)生狀態(tài)機(jī)從閃存的多個(gè)命令接口接收命令,將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器;所述核心控制器執(zhí)行所述命令,數(shù)據(jù)地址狀態(tài)機(jī)根據(jù)所述核心控制器的執(zhí)行情況動(dòng)態(tài)的為其提供數(shù)據(jù)地址;
所述核心控制器執(zhí)行所述命令完成后,命令回收狀態(tài)機(jī)從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)所述緩沖寄存器中的地址向內(nèi)存中寫入所述命令完成狀態(tài)信息。根 據(jù)本發(fā)明的控制方法,“命令產(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è)命令接口上沒(méi)有命令或者核心控制器不能夠再接收命令。根據(jù)本發(fā)明的控制方法,“所述命令產(chǎn)生狀態(tài)機(jī)根據(jù)所述命令從內(nèi)存中獲取該命令的詳細(xì)信息打包后發(fā)送給所述核心控制器”的步驟中,所述命令的詳細(xì)信息包括所述命令的操作類型以及所述命令的操作模式,所述命令的操作類型包括讀閃存、寫閃存以及擦除閃存;所述命令的操作模式包括對(duì)閃存的一個(gè)頁(yè)全部數(shù)據(jù)操作或者部分?jǐn)?shù)據(jù)操作。根據(jù)本發(fā)明的控制方法,“命令回收狀態(tài)機(jī)從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息”的步驟中,所述命令完成狀態(tài)信息為所述核心控制器執(zhí)行所述命令的結(jié)果,包括所述命令是否執(zhí)行成功以及所述命令執(zhí)行失敗的類型。根據(jù)本發(fā)明的控制方法,“數(shù)據(jù)地址狀態(tài)機(jī)根據(jù)核心控制器的執(zhí)行情況動(dòng)態(tài)的為核心控制器提供數(shù)據(jù)地址”的步驟中,所述數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(shù)據(jù)寫入的源地址。本發(fā)明相應(yīng)提供一種閃存控制器,包括命令產(chǎn)生狀態(tài)機(jī),用于從閃存的多個(gè)命令接口接收命令,將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器;核心控制器,用于接收所述命令產(chǎn)生狀態(tài)機(jī)發(fā)來(lái)的命令并根據(jù)數(shù)據(jù)地址狀態(tài)機(jī)提供的數(shù)據(jù)地址執(zhí)行所述命令,并向命令回收狀態(tài)機(jī)返回所述命令完成狀態(tài)信息;數(shù)據(jù)地址狀態(tài)機(jī),用于根據(jù)核心控制器的執(zhí)行情況動(dòng)態(tài)的為其提供數(shù)據(jù)地址;命令回收狀態(tài)機(jī),用于所述核心控制器執(zhí)行所述命令完成后從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)所述緩沖寄存器中的地址將所述命令完成狀態(tài)信息寫入內(nèi)存。根據(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è)命令接口上沒(méi)有命令或者核心控制器不能夠再接收命令。根據(jù)本發(fā)明的閃存控制器,所述命令的詳細(xì)信息包括所述命令的操作類型以及所述命令的操作模式,所述命令的操作類型包括讀閃存、寫閃存以及擦除閃存;所述命令的操作模式包括對(duì)閃存的一個(gè)頁(yè)全部數(shù)據(jù)操作或者部分?jǐn)?shù)據(jù)操作。根據(jù)本發(fā)明的閃存控制器,所述命令完成狀態(tài)信息為所述核心控制器執(zhí)行所述命令的結(jié)果,包括所述命令是否執(zhí)行成功以及所述命令執(zhí)行失敗的類型;所述數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(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ù)寫入緩沖寄存器;核心控制器,用于接收所述命令產(chǎn)生狀態(tài)機(jī)發(fā)來(lái)的命令并根據(jù)數(shù)據(jù)地址狀態(tài)機(jī)提供的數(shù)據(jù)地址執(zhí)行所述命令,并向命令回收狀態(tài)機(jī)返回所述命令完成狀態(tài)信息;數(shù)據(jù)地址狀態(tài)機(jī),用于根據(jù)核心控制器的執(zhí)行情況動(dòng)態(tài)的為其提供數(shù)據(jù)地址;命令回收狀態(tài)機(jī),用于所述核心控制器執(zhí)行所述命令完成后從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)所述緩沖寄存器中的地址將所述命令完成狀態(tài)信息寫入內(nèi)存。本發(fā)明通過(guò)命令產(chǎn)生狀態(tài)機(jī)不斷從命令接口獲取命令并發(fā)送到核心控制器,數(shù)據(jù)地址狀態(tài)機(jī)動(dòng)態(tài)的為核心控制器提供數(shù)據(jù)地址,命令回收狀態(tài)機(jī)從核心控制器回收命令完成狀態(tài)信息并寫回該信息。本發(fā)明只需要命令產(chǎn)生狀態(tài)機(jī)、數(shù)據(jù)地址狀態(tài)機(jī)以及命令回收狀態(tài)機(jī)即可實(shí)現(xiàn)對(duì)核心控制器滿負(fù)荷運(yùn)轉(zhuǎn)的控制,同時(shí)通過(guò)分離命令產(chǎn)生和數(shù)據(jù)地址產(chǎn)生機(jī)制的方式提高命令執(zhí)行的速度,命令產(chǎn)生狀態(tài)機(jī)只負(fù)責(zé)從接口獲取命令并翻譯命令發(fā)往 核心控制器,命令產(chǎn)生狀態(tài)機(jī)只需把命令發(fā)送到核心控制器就可以回復(fù)到空閑狀態(tài),去執(zhí)行發(fā)起下一個(gè)命令的操作,把數(shù)據(jù)地址的傳輸工作交給數(shù)據(jù)地址產(chǎn)生器,使得命令產(chǎn)生器可以以最快的速度完成命令執(zhí)行的操作,不影響后續(xù)命令的執(zhí)行,增加了命令執(zhí)行的靈活度,減少了命令切換的時(shí)間。同時(shí)命令的產(chǎn)生和回收由獨(dú)立的狀態(tài)機(jī)完成,命令產(chǎn)生后不必等待該命令的回收,降低芯片面積和功耗提高了命令的產(chǎn)生和回收的效率,減少硬件資源的開(kāi)銷,相對(duì)于現(xiàn)有采用多個(gè)命令控制器控制特定的閃存顆粒,本方案只需要一個(gè)狀態(tài)機(jī)動(dòng)態(tài)的為核心控制器提供命令去控制多個(gè)閃存顆粒,減少了硬件資源的消耗,降低芯片的面積和功耗。借此,本發(fā)明能夠提高命令執(zhí)行的速度,保證核心控制器有足夠的命令去實(shí)現(xiàn)高性能數(shù)據(jù)傳輸,保證了閃存控制器的性能,同時(shí)提高命令的產(chǎn)生和回收的效率,減少硬件資源的開(kāi)銷,降低芯片面積和功耗。
圖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ì)說(shuō)明。應(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以及數(shù)據(jù)地址狀態(tài)機(jī)40,其中命令產(chǎn)生狀態(tài)機(jī)10、命令回收狀態(tài)機(jī)30以及數(shù)據(jù)地址狀態(tài)機(jī)40分別通過(guò)同步FIFO (先入先出)緩沖器50與核心控制器20連接耦合。命令產(chǎn)生狀態(tài)機(jī)10,用于從閃存的多個(gè)命令接口接收命令,將該命令并翻譯后轉(zhuǎn)發(fā)給核心控制器20 ,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器11。在閃存中,通常設(shè)置一個(gè)命令接口(該命令接口為總線接口)對(duì)應(yīng)一個(gè)閃存顆粒,一般來(lái)說(shuō)一個(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è)頁(yè)全部數(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)存中預(yù)先開(kāi)辟空間用于存儲(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è)命令接口與緩沖寄存器綁定,每個(gè)命令接口分別與一個(gè)緩沖寄存器對(duì)應(yīng)。數(shù)據(jù)地址狀態(tài)機(jī)40,用于根據(jù)核心控制器20的執(zhí)行情況動(dòng)態(tài)的為核心控制器20提供數(shù)據(jù)地址。核心控制器20和數(shù)據(jù)地址狀態(tài)機(jī)40之間通過(guò)同步FIFO緩沖器50互連,核心控制器執(zhí)行到某個(gè)命令開(kāi)始消耗數(shù)據(jù)地址,動(dòng)態(tài)數(shù)據(jù)狀態(tài)機(jī)檢測(cè)同步FIFO緩沖器50的狀態(tài),動(dòng)態(tài)的提供數(shù)據(jù)地址。該數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(shù)據(jù)寫入的源地址。核心控制器20,用于接收命令產(chǎn)生狀態(tài)機(jī)10發(fā)來(lái)的命令并根據(jù)數(shù)據(jù)地址狀態(tài)機(jī)40提供的數(shù)據(jù)地址執(zhí)行命令,并向命令回收狀態(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)度這些命令在空閑的閃存顆粒上執(zhí)行。當(dāng)核心控制器20能夠接收命令(即未處于滿負(fù)荷),且命令接口有新的命令到來(lái),命令產(chǎn)生狀態(tài)機(jī)10啟動(dòng),核心控制器20接收從命令產(chǎn)生狀態(tài)機(jī)10發(fā)來(lái)的命令,并根據(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)的緩沖寄存器的對(duì)應(yīng)關(guān)系,將相應(yīng)的緩沖寄存器中獲取該命令的命令完成狀態(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之間沒(méi)有綁定的關(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接收了來(lái)自命令狀態(tài)機(jī)10命令,并根據(jù)該命令中的閃存顆粒編號(hào)以及數(shù)據(jù)地址狀態(tài)機(jī)40提供的數(shù)據(jù)地址對(duì)相應(yīng)的閃存顆粒200進(jìn)行操作。操作結(jié)束后,命令回收狀態(tài)機(jī)30觸發(fā),從核心控制器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)生端和命令回收端(即命令控制器端),沒(méi)有不同閃存控制器的概念,命令產(chǎn)生狀態(tài)機(jī)100看到的是不同的命令接口,并循環(huán)的從這些接口中接收命令。命令的產(chǎn)生、命令的回收和閃存顆粒200之間不需要通過(guò)特定的ID( IDentity,身份標(biāo) 識(shí)號(hào)碼)來(lái)固定,命令接口和緩沖寄存器11建立了固定的關(guān)系,閃存顆粒200和命令接口的對(duì)應(yīng)關(guān)系由驅(qū)動(dòng)程序確定?,F(xiàn)有的閃存控制器中有多個(gè)命令控制器,每個(gè)命令控制器一個(gè)閃存顆粒,并且命令控制器需要長(zhǎng)時(shí)間維持對(duì)一個(gè)閃存顆粒的控制器,從命令接口獲得命令開(kāi)始,到把命令和數(shù)據(jù)發(fā)到核心控制器,到從核心控制器獲得完成狀態(tài),命令控制器都需要維持在該顆粒上,需要多個(gè)命令控制器實(shí)現(xiàn)核心控制器的滿負(fù)荷運(yùn)轉(zhuǎn)。同時(shí),在現(xiàn)有閃存控制器中,命令控制器需要把命令發(fā)送給核心控制器,也需要把該命令所操作的數(shù)據(jù)地址發(fā)送給核心控制器,如果數(shù)據(jù)來(lái)源于多個(gè)地址或者數(shù)據(jù)要分散寫到多個(gè)地址,對(duì)于一個(gè)命令,命令控制器需要提供給核心控制器多個(gè)數(shù)據(jù)的地址,如果核心控制器正在執(zhí)行某個(gè)命令,而命令控制器正在下發(fā)另外的一個(gè)命令,且該命令所操作的數(shù)據(jù)來(lái)自很多地址,因此,命令控制器在發(fā)送命令到核心控制器后,需要發(fā)送多個(gè)數(shù)據(jù)地址到核心控制器,如果數(shù)據(jù)地址的個(gè)數(shù)超過(guò)了核心控制器為每個(gè)命令保留的數(shù)據(jù)地址空間,命令控制器需要等核心控制器執(zhí)行到該命令,把數(shù)據(jù)地址消耗并釋放出空間后,才能把剩下的數(shù)據(jù)地址發(fā)送到核心控制器,導(dǎo)致命令控制器的狀態(tài)機(jī)停留,影響后續(xù)命令的繼續(xù)執(zhí)行。假如核心控制器需要8個(gè)命令去調(diào)度實(shí)現(xiàn)高性能的數(shù)據(jù)傳輸,如果出現(xiàn)上述情況,導(dǎo)致核心控制器無(wú)法拿到足夠的命令去調(diào)度,降低閃存控制器的性能。而本發(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)的控制。且命令產(chǎn)生狀態(tài)機(jī)10不提供數(shù)據(jù)地址功能,使得命令產(chǎn)生狀態(tài)機(jī)10專職于命令的產(chǎn)生,而把數(shù)據(jù)地址的提供交給了數(shù)據(jù)地址狀態(tài)機(jī)40,由數(shù)據(jù)地址狀態(tài)機(jī)40動(dòng)態(tài)完成。本發(fā)明有效的避免了命令堵住的缺點(diǎn),提高了命令執(zhí)行的速度,保證核心控制器20有足夠的命令去實(shí)現(xiàn)高性能數(shù)據(jù)傳輸,保證了閃存控制器100的性能。本發(fā)明通過(guò)命令產(chǎn)生狀態(tài)機(jī)10不斷從命令接口獲取命令并發(fā)送到核心控制器20,數(shù)據(jù)地址狀態(tài)機(jī)40動(dòng)態(tài)的為核心控制器20提供數(shù)據(jù)地址,命令回收狀態(tài)機(jī)30從核心控制器20回收命令完成狀態(tài)信息并寫回該信息。本發(fā)明只需要命令產(chǎn)生狀態(tài)機(jī)10、數(shù)據(jù)地址狀態(tài)機(jī)40以及命令回收狀態(tài)機(jī)30即可實(shí)現(xiàn)對(duì)核心控制器20滿負(fù)荷運(yùn)轉(zhuǎn)的控制,同時(shí)通過(guò)分離命令產(chǎn)生和數(shù)據(jù)地址產(chǎn)生機(jī)制的方式提高命令執(zhí)行的速度,命令產(chǎn)生狀態(tài)機(jī)10只負(fù)責(zé)從接口獲取命令并翻譯命令發(fā)往核心控制器20,命令產(chǎn)生狀態(tài)機(jī)10只需把命令發(fā)送到核心控制器20就可以回復(fù)到空閑狀態(tài),去執(zhí)行發(fā)起下一個(gè)命令的操作,把數(shù)據(jù)地址的傳輸工作交給數(shù)據(jù)地址產(chǎn)生器40,使得命令產(chǎn)生器10可以以最快的速度完成命令執(zhí)行的操作,不影響后續(xù)命令的執(zhí)行,增加了命令執(zhí)行的靈活度,減少了命令切換的時(shí)間。同時(shí)命令的產(chǎn)生和回收由獨(dú)立的狀態(tài)機(jī)完成,命令產(chǎn)生后不必等待該命令的回收,降低芯片面積和功耗提高了命令的產(chǎn)生和回收的效率,減少硬件資源的開(kāi)銷,相對(duì)于現(xiàn)有采用多個(gè)命令控制器控制特定的閃存顆粒,本方案只需要一個(gè)狀態(tài)機(jī)動(dòng)態(tài)的為核心控制器提供命令去控制多個(gè)閃存顆粒,減少了硬件資源的消耗,降低芯片的面積和功耗。借此,本發(fā)明能夠提高命令執(zhí)行的速度,保證核心控制器有足夠的命令去實(shí)現(xiàn)高性能數(shù)據(jù)傳輸,保證了閃存控制器的性能,同時(shí)提高命令的產(chǎn)生和回收的效率,減少硬件資源的開(kāi)銷,降低芯片面積和功耗。如圖3所示,本發(fā)明還提供一種閃存控制器的控制方法,該方法通過(guò)圖2中的閃存控制器完成,該控制方法的主要流程包括如下步驟
步驟S301,命令產(chǎn)生狀態(tài)機(jī)從閃存的多個(gè)命令接口接收命令,將命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器。本步驟由圖2中的命令產(chǎn)生狀態(tài)機(jī)10完成。步驟S302,核心控制器執(zhí)行命令,數(shù)據(jù)地址狀態(tài)機(jī)根據(jù)核心控制器的執(zhí)行情況動(dòng)態(tài)的為核心控制器提供數(shù)據(jù)地址。該數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(shù)據(jù)寫入的源地址。本步驟由圖2中的核心控制器20以及數(shù)據(jù)地址狀態(tài)機(jī)40完成。步驟S303,核心控制器執(zhí)行命令完成后,命令回收狀態(tài)機(jī)從核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)緩沖寄存器中的地址向內(nèi)存中寫入命令完成狀態(tài)信息。命令完成狀態(tài)信息為核心控制器執(zhí)行命令的結(jié)果,包括命令是否執(zhí)行成功以及命令執(zhí)行失敗的類型等信息。本步驟由圖2中的命令回收狀態(tài)機(jī)30完成。優(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è)頁(yè)全部數(shù)據(jù)操作或者部分?jǐn)?shù)據(jù)操作等;命令產(chǎn)生狀態(tài)機(jī)繼續(xù)對(duì)總線命令隊(duì)列進(jìn)行輪詢,直至多個(gè)命令接口上沒(méi)有命令或者核心控制器不能夠再接收命令。圖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ā)送給核心控制器。步驟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)生和命令回收分別通過(guò)兩個(gè)狀態(tài)機(jī)實(shí)現(xiàn),一旦核心控制器能夠接收命令,且命令接口有新的命令到來(lái),命令產(chǎn)生狀態(tài)機(jī)啟動(dòng)對(duì)應(yīng)的操作。本發(fā)明將命令產(chǎn)生和命令回收兩個(gè)狀態(tài)機(jī)彼此獨(dú)立,增加了命令執(zhí)行的靈活度,減少了命令切換的時(shí)間。同時(shí)通過(guò)分離命令產(chǎn)生和數(shù)據(jù)地址產(chǎn)生機(jī)制的方式提高命令執(zhí)行的速度,命令產(chǎn)生狀態(tài)機(jī)只負(fù)責(zé)從接口獲取命令并翻譯命令發(fā)往核心控制器,命令產(chǎn)生狀態(tài)機(jī)只需把命令發(fā)送到核心控制器就可以回復(fù)到空閑狀態(tài),去執(zhí)行發(fā)起下一個(gè)命令的操作,把數(shù)據(jù)地址的傳輸工作交給數(shù)據(jù)地址產(chǎn)生器,使得命令產(chǎn)生器可以以最快的速度完成命令執(zhí)行的操作,不影響后續(xù)命令的執(zhí)行,進(jìn)一步增加了命令執(zhí)行的靈活度,減少了命令切換的時(shí)間。如圖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ù)寫入緩沖寄存器;核心控制器,用于接收命令產(chǎn)生狀態(tài)機(jī)發(fā)來(lái)的命令并根據(jù)數(shù)據(jù)地址狀態(tài)機(jī)提供 的數(shù)據(jù)地址執(zhí)行命令,并向命令回收狀態(tài)機(jī)返回命令完成狀態(tài)信息;數(shù)據(jù)地址狀態(tài)機(jī),用于根據(jù)核心控制器的執(zhí)行情況動(dòng)態(tài)的為核心控制器提供數(shù)據(jù)地址;命令回收狀態(tài)機(jī),用于核心控制器執(zhí)行命令完成后從核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)緩沖寄存器中的地址將命令完成狀態(tài)信息寫入內(nèi)存。綜上所述,本發(fā)明通過(guò)命令產(chǎn)生狀態(tài)機(jī)不斷從命令接口獲取命令并發(fā)送到核心控制器,數(shù)據(jù)地址狀態(tài)機(jī)動(dòng)態(tài)的為核心控制器提供數(shù)據(jù)地址,命令回收狀態(tài)機(jī)從核心控制器回收命令完成狀態(tài)信息并寫回該信息。只需要命令產(chǎn)生狀態(tài)機(jī)、數(shù)據(jù)地址狀態(tài)機(jī)以及命令回收狀態(tài)機(jī)即可實(shí)現(xiàn)對(duì)核心控制器滿負(fù)荷運(yùn)轉(zhuǎn)的控制,同時(shí)通過(guò)分離命令產(chǎn)生和數(shù)據(jù)地址產(chǎn)生機(jī)制的方式提高命令執(zhí)行的速度,命令產(chǎn)生狀態(tài)機(jī)只負(fù)責(zé)從接口獲取命令并翻譯命令發(fā)往核心控制器,命令產(chǎn)生狀態(tài)機(jī)只需把命令發(fā)送到核心控制器就可以回復(fù)到空閑狀態(tài),去執(zhí)行發(fā)起下一個(gè)命令的操作,把數(shù)據(jù)地址的傳輸工作交給數(shù)據(jù)地址產(chǎn)生器,使得命令產(chǎn)生器可以以最快的速度完成命令執(zhí)行的操作,不影響后續(xù)命令的執(zhí)行,增加了命令執(zhí)行的靈活度,減少了命令切換的時(shí)間。同時(shí)命令的產(chǎn)生和回收由獨(dú)立的狀態(tài)機(jī)完成,命令產(chǎn)生后不必等待該命令的回收,降低芯片面積和功耗提高了命令的產(chǎn)生和回收的效率,減少硬件資源的開(kāi)銷,相對(duì)于現(xiàn)有采用多個(gè)命令控制器控制特定的閃存顆粒,本方案只需要一個(gè)狀態(tài)機(jī)動(dòng)態(tài)的為核心控制器提供命令去控制多個(gè)閃存顆粒,減少了硬件資源的消耗,降低芯片的面積和功耗。借此,本發(fā)明能夠提高命令執(zhí)行的速度,保證核心控制器有足夠的命令去實(shí)現(xiàn)高性能數(shù)據(jù)傳輸,保證了閃存控制器的性能,同時(shí)提高命令的產(chǎn)生和回收的效率,減少硬件資源的開(kāi)銷,降低芯片面積和功耗。當(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í)行所述命令,數(shù)據(jù)地址狀態(tài)機(jī)根據(jù)所述核心控制器的執(zhí)行情況動(dòng)態(tài)的為其提供數(shù)據(jù)地址; 所述核心控制器執(zhí)行所述命令完成后,命令回收狀態(tài)機(jī)從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)所述緩沖寄存器中的地址向內(nèi)存中寫入所述命令完成狀態(tài)息。
2.根據(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è)命令接口上沒(méi)有命令或者核心控制器不能夠再接收命令。
3.根據(jù)權(quán)利要求2所述的控制方法,其特征在于,“所述命令產(chǎn)生狀態(tài)機(jī)根據(jù)所述命令從內(nèi)存中獲取該命令的詳細(xì)信息打包后發(fā)送給所述核心控制器”的步驟中,所述命令的詳細(xì)信息包括所述命令的操作類型以及所述命令的操作模式,所述命令的操作類型包括讀閃存、寫閃存以及擦除閃存;所述命令的操作模式包括對(duì)閃存的一個(gè)頁(yè)全部數(shù)據(jù)操作或者部分?jǐn)?shù)據(jù)操作。
4.根據(jù)權(quán)利要求I所述的控制方法,其特征在于,“命令回收狀態(tài)機(jī)從所述核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息”的步驟中,所述命令完成狀態(tài)信息為所述核心控制器執(zhí)行所述命令的結(jié)果,包括所述命令是否執(zhí)行成功以及所述命令執(zhí)行失敗的類型。
5.根據(jù)權(quán)利要求I所述的控制方法,其特征在于,“數(shù)據(jù)地址狀態(tài)機(jī)根據(jù)核心控制器的執(zhí)行情況動(dòng)態(tài)的為核心控制器提供數(shù)據(jù)地址”的步驟中,所述數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(shù)據(jù)寫入的源地址。
6.一種閃存控制器,其特征在于,包括 命令產(chǎn)生狀態(tài)機(jī),用于從閃存的多個(gè)命令接口接收命令,將所述命令翻譯后轉(zhuǎn)發(fā)給核心控制器,并將命令完成狀態(tài)信息的地址預(yù)寫入緩沖寄存器; 核心控制器,用于接收所述命令產(chǎn)生狀態(tài)機(jī)發(fā)來(lái)的命令并根據(jù)數(shù)據(jù)地址狀態(tài)機(jī)提供的數(shù)據(jù)地址執(zhí)行所述命令,并向命令回收狀態(tài)機(jī)返回所述命令完成狀態(tài)信息; 數(shù)據(jù)地址狀態(tài)機(jī),用于根據(jù)核心控制器的執(zhí)行情況動(dòng)態(tài)的為其提供數(shù)據(jù)地址; 命令回收狀態(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ī)還用于對(duì)多個(gè)命令接口的總線命令隊(duì)列進(jìn)行輪詢,若某個(gè)總線命令隊(duì)列不為空,則命令產(chǎn)生狀態(tài)機(jī)獲取其中一個(gè)命令并從內(nèi)存中獲取該命令的詳細(xì)信息打包后發(fā)送給所述核心控制器,直至所述多個(gè)命令接口上沒(méi)有命令或者核心控制器不能夠再接收命令。
8.根據(jù)權(quán)利要求7所述的閃存控制器,其特征在于,所述命令的詳細(xì)信息包括所述命令的操作類型以及所述命令的操作模式,所述命令的操作類型包括讀閃存、寫閃存以及擦除閃存;所述命令的操作模式包括對(duì)閃存的一個(gè)頁(yè)全部數(shù)據(jù)操作或者部分?jǐn)?shù)據(jù)操作。
9.根據(jù)權(quán)利要求6所述的閃存控制器,其特征在于,所述命令完成狀態(tài)信息為所述核心控制器執(zhí)行所述命令的結(jié)果,包括所述命令是否執(zhí)行成功以及所述命令執(zhí)行失敗的類型;所述數(shù)據(jù)地址為數(shù)據(jù)讀出的目的地址或數(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ù)寫入緩沖寄存器; 核心控制器,用于接收所述命令產(chǎn)生狀態(tài)機(jī)發(fā)來(lái)的命令并根據(jù)數(shù)據(jù)地址狀態(tài)機(jī)提供的數(shù)據(jù)地址執(zhí)行所述命令,并向命令回收狀態(tài)機(jī)返回所述命令完成狀態(tài)信息; 數(shù)據(jù)地址狀態(tài)機(jī),用于根據(jù)核心控制器的執(zhí)行情況動(dòng)態(tài)的為其提供數(shù)據(jù)地址; 命令回收狀態(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í)行命令,數(shù)據(jù)地址狀態(tài)機(jī)根據(jù)核心控制器的執(zhí)行情況動(dòng)態(tài)的為其提供數(shù)據(jù)地址;核心控制器執(zhí)行命令完成后,命令回收狀態(tài)機(jī)從核心控制器查詢?cè)撁顚?duì)應(yīng)的命令完成狀態(tài)信息,并根據(jù)緩沖寄存器中的地址向內(nèi)存中寫入命令完成狀態(tài)信息。借此,本發(fā)明能夠提高命令執(zhí)行的速度,保證核心控制器有足夠的命令去實(shí)現(xiàn)高性能數(shù)據(jù)傳輸,保證了閃存控制器的性能,同時(shí)提高命令的產(chǎn)生和回收的效率。
文檔編號(hào)G06F13/16GK102768647SQ201210195868
公開(kāi)日2012年11月7日 申請(qǐng)日期2012年6月14日 優(yōu)先權(quán)日2012年6月14日
發(fā)明者莫海鋒 申請(qǐng)人:記憶科技(深圳)有限公司