專利名稱:提供讀取操作硬件加速的存儲(chǔ)卡的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及包含閃存模塊的存儲(chǔ)卡。更具體地,本發(fā)明涉及包含硬件加速器的存儲(chǔ)卡,該硬件加速器用來改進(jìn)該存儲(chǔ)卡所執(zhí)行的讀取操作的性能。
背景技術(shù):
存儲(chǔ)卡一般用來存儲(chǔ)與訪問數(shù)字設(shè)備中的信息,例如個(gè)人數(shù)字助理(PDA)、便攜式音頻設(shè)備、手機(jī)、以及個(gè)人計(jì)算機(jī)。典型的存儲(chǔ)卡包含非易失存儲(chǔ)器、以及提供存儲(chǔ)卡與主機(jī)系統(tǒng)之間接口的對(duì)應(yīng)存儲(chǔ)控制器。
已經(jīng)例如在美國(guó)專利公開號(hào)2004-0205301與2004-0236909、以及美國(guó)專利號(hào)6131139中公開了各種存儲(chǔ)卡。
圖1為顯示連接到主機(jī)系統(tǒng)200的存儲(chǔ)卡100的總體布局的方框圖。參考圖1,存儲(chǔ)卡100包含閃存模塊120與存儲(chǔ)控制器140。主機(jī)系統(tǒng)200通過存儲(chǔ)控制器140與閃存模塊120通信。具體地,主機(jī)系統(tǒng)200可通過存儲(chǔ)控制器140對(duì)閃存模塊120執(zhí)行讀取、編程、以及擦除操作。
閃存模塊120中的存儲(chǔ)單元被組織為塊與頁(yè)。每塊一般包含一或多頁(yè),每頁(yè)一般包含多個(gè)存儲(chǔ)單元,用來存儲(chǔ)指定數(shù)目的字節(jié)。例如,一(1)千兆字節(jié)(GB)NAND閃存模塊可以被組織為8192塊,其中每塊包含32頁(yè),每頁(yè)存儲(chǔ)512字節(jié)的數(shù)據(jù)。
在閃存模塊120中,一次一頁(yè)地讀取或編程數(shù)據(jù),并一次一塊地擦除數(shù)據(jù)。因此,每當(dāng)主機(jī)系統(tǒng)200對(duì)閃存模塊120執(zhí)行讀取或編程操作時(shí),向或從閃存模塊120傳送一頁(yè)數(shù)據(jù)。
通過增加每塊的尺寸,可以改進(jìn)閃存模塊120中讀取、編程、以及擦除操作的性能。另外,增加塊尺寸還會(huì)通過減少控制每塊所需的每字節(jié)的外圍電路量,而減少閃存模塊120的芯片尺寸。一般通過增加每塊中的頁(yè)數(shù)目或者每頁(yè)中的字節(jié)數(shù)目來增加塊尺寸。
圖2顯示具有不同塊尺寸的兩個(gè)塊“小塊”與“大塊”。小塊包含32頁(yè),每頁(yè)具有512字節(jié)(B)的頁(yè)尺寸。這些頁(yè)排列為32行,每行表示單頁(yè)。在另一方面,大塊包含64頁(yè),每頁(yè)具有2千字節(jié)(KB)的頁(yè)尺寸。大塊中的頁(yè)排列為64行,其中每行存儲(chǔ)單個(gè)2KB頁(yè)。然而,為了簡(jiǎn)化圖2,沒有顯示所有的64頁(yè)。
在大塊內(nèi),每個(gè)2KB頁(yè)可以分為四(4)個(gè)“小頁(yè)”,每個(gè)小頁(yè)512字節(jié)。通過指定大塊中的行與起始列(由箭頭指示),可以訪問大塊中的小頁(yè)。在本說明書中,術(shù)語(yǔ)“小頁(yè)”用來指示大塊中具有與小塊中的頁(yè)同樣的尺寸的部分。
圖2中的小塊與大塊的相應(yīng)尺寸只是作為例子。在實(shí)踐中,小塊與大塊中頁(yè)的尺寸與數(shù)目可以變化。然而,小塊一般具有至少一維小于大塊中的相應(yīng)維,并且小塊中的頁(yè)地址可以映射到大塊中的頁(yè)地址。在本說明書中,小塊中的地址稱為“小塊地址”,而大塊中的地址稱為“大塊地址”。
小塊地址與大塊地址都包含存儲(chǔ)塊地址與頁(yè)地址。存儲(chǔ)塊地址指示閃存模塊120中該地址所定位的塊,而頁(yè)地址指示閃存120中該地址所定位的頁(yè)。
為了說明小塊與大塊之間的邏輯映射,小塊中的頁(yè)標(biāo)記為0P至31P。在圖2中包含大箭頭,用來顯示小塊中邏輯地址與大塊中邏輯地址之間的對(duì)應(yīng)關(guān)系。例如在主機(jī)系統(tǒng)200被設(shè)計(jì)來利用小塊地址訪問數(shù)據(jù)、而閃存模塊120是用大塊地址訪問的情況下,需要這樣的邏輯映射。換言之,如果主機(jī)系統(tǒng)200向存儲(chǔ)控制器140發(fā)送小塊地址,則存儲(chǔ)控制器140必須將小塊地址轉(zhuǎn)換為大塊地址,以訪問閃存模塊120。
例如,假設(shè)主機(jī)系統(tǒng)200向存儲(chǔ)控制器140發(fā)送具有小塊中的頁(yè)1P地址的讀取命令。存儲(chǔ)控制器140必須將頁(yè)1P地址轉(zhuǎn)換為大塊中的物理地址。如圖2所示,頁(yè)1P位于小塊的第1行、第0列、和大塊的第0行、第1列。
不幸的是,地址轉(zhuǎn)換需求使閃存模塊120中的讀取操作變慢,由此使存儲(chǔ)卡的整體性能降級(jí)。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一種實(shí)施方式,存儲(chǔ)卡包含存儲(chǔ)控制器,適于從主機(jī)系統(tǒng)接收第一命令與第一外部地址。該存儲(chǔ)控制器包含第一電路,適于利用在第一電路中存儲(chǔ)的程序,而將第一外部地址轉(zhuǎn)換為第一內(nèi)部地址;以及第二電路,適于響應(yīng)于讀取信號(hào)與加速使能信號(hào)的激活,并且根據(jù)第一內(nèi)部地址與第一外部地址,而生成第二內(nèi)部地址。該存儲(chǔ)卡還包含閃存模塊,適于根據(jù)第一與第二內(nèi)部地址訪問多頁(yè)數(shù)據(jù)。在該存儲(chǔ)卡中,在閃存模塊利用第一內(nèi)部地址訪問一頁(yè)數(shù)據(jù)用于讀取操作之后,第一電路設(shè)置第二電路中的硬件加速標(biāo)志;并且每當(dāng)存儲(chǔ)控制器從主機(jī)系統(tǒng)接收讀取命令時(shí),第二電路激活讀取信號(hào)。
根據(jù)本發(fā)明的另一種實(shí)施方式,一種用于非易失性存儲(chǔ)器設(shè)備的存儲(chǔ)控制器包含內(nèi)部存儲(chǔ)器,適于存儲(chǔ)程序;微控制器單元,適于利用所述程序處理第一外部地址以產(chǎn)生第一內(nèi)部地址;硬件加速器,適于根據(jù)第一外部與第一內(nèi)部地址而處理第二外部地址,以生成第二內(nèi)部地址;主機(jī)接口,適于作為微控制器、硬件加速器與主機(jī)系統(tǒng)之間的接口;以及存儲(chǔ)器接口,適于作為微控制器、硬件加速器與非易失性存儲(chǔ)器之間的接口。
根據(jù)本發(fā)明的另一種實(shí)施方式,一種非易失性存儲(chǔ)卡包含存儲(chǔ)控制器,該存儲(chǔ)控制器包含微控制器單元,適于利用所存儲(chǔ)的程序處理第一外部地址以產(chǎn)生第一內(nèi)部地址;以及硬件加速器,適于根據(jù)第一內(nèi)部與外部地址,而處理第二外部地址。該存儲(chǔ)卡還包含主機(jī)接口,適于作為存儲(chǔ)控制器與主機(jī)系統(tǒng)之間的接口;以及存儲(chǔ)器接口,適于作為非易失性存儲(chǔ)設(shè)備與存儲(chǔ)控制器之間的接口。
以下將針對(duì)附圖中所示的幾個(gè)實(shí)施方式描述本發(fā)明。在所有附圖中,類似的附圖標(biāo)記指示類似的示范性元件、組件、或者步驟。在附圖中圖1為顯示連接到主機(jī)系統(tǒng)的存儲(chǔ)卡的總體布局的方框圖;圖2為圖示小塊閃存模塊與大塊閃存模塊中的頁(yè)的邏輯映射的圖;圖3為根據(jù)本發(fā)明實(shí)施方式的存儲(chǔ)控制器的方框圖;圖4為圖3所示硬件加速器的方框圖;圖5為圖示根據(jù)本發(fā)明實(shí)施方式的存儲(chǔ)卡的讀取/寫入操作的流程圖;圖6為圖示具有各種存儲(chǔ)控制器配置的存儲(chǔ)卡所執(zhí)行的連續(xù)讀取操作的時(shí)序的圖;圖7為圖示具有各種存儲(chǔ)控制器配置的存儲(chǔ)卡所執(zhí)行的隨機(jī)讀取操作的時(shí)序的圖;和圖8為根據(jù)本發(fā)明另一實(shí)施方式的存儲(chǔ)控制器的方框圖。
具體實(shí)施例方式
以下將參照對(duì)應(yīng)圖描述本發(fā)明的示范性實(shí)施方式。這些實(shí)施方式作為教學(xué)實(shí)例而呈現(xiàn)。本發(fā)明的實(shí)際范圍由隨后的權(quán)利要求限定。
圖3為圖示根據(jù)本發(fā)明實(shí)施方式的存儲(chǔ)控制器140的方框圖。參照?qǐng)D3,存儲(chǔ)控制器140包含主機(jī)接口控制器310、微控制器單元(MCU)320、內(nèi)部存儲(chǔ)器330、寄存器340、開關(guān)350、存儲(chǔ)器接口控制器360、硬件加速器370、以及緩沖存儲(chǔ)器380。
主機(jī)系統(tǒng)200利用小塊地址向存儲(chǔ)控制器140發(fā)送輸入命令與地址,而閃存模塊120是利用大塊地址訪問的。相應(yīng)地,存儲(chǔ)控制器140必須將主機(jī)系統(tǒng)200提供的小塊地址轉(zhuǎn)換為大塊地址,以訪問閃存模塊120。在輸入命令與閃存模塊120不兼容的情況下,存儲(chǔ)控制器140還必須將輸入命令轉(zhuǎn)換為與閃存模塊120兼容的輸出命令。
在本說明書中,術(shù)語(yǔ)“外部地址”將用來指從外部源(例如主機(jī)系統(tǒng)200)向存儲(chǔ)控制器140發(fā)送的小塊地址,而術(shù)語(yǔ)“內(nèi)部地址”將用來指從存儲(chǔ)控制器140向閃存模塊120發(fā)送的大塊地址。
外部或內(nèi)部地址一般包含存儲(chǔ)塊地址與頁(yè)地址。外部地址還可包含開始與結(jié)束頁(yè)地址,以指示連續(xù)讀取操作所要訪問的頁(yè)范圍。另外,內(nèi)部地址還可以包含開始列,用來指示閃存模塊120中大塊內(nèi)的小頁(yè)位置。
主機(jī)系統(tǒng)200一般向存儲(chǔ)控制器140發(fā)送三種輸入命令寫入命令、連續(xù)讀取命令、以及隨機(jī)讀取命令。寫入命令啟動(dòng)寫入操作,以對(duì)閃存模塊120中的小頁(yè)進(jìn)行編程;連續(xù)讀取命令啟動(dòng)連續(xù)讀取操作,以從閃存模塊120中讀取連續(xù)的小頁(yè);隨機(jī)讀取命令啟動(dòng)隨機(jī)讀取操作,以從閃存模塊中讀取單個(gè)小頁(yè)。寫入命令與隨機(jī)讀取命令都使用單個(gè)地址,并且都訪問閃存模塊120中的單頁(yè)數(shù)據(jù)。相反,連續(xù)讀取命令使用單個(gè)地址,但是其用開始與結(jié)束頁(yè)地址指定頁(yè)范圍,從而可能訪問閃存模塊120中多于一個(gè)小頁(yè)。
當(dāng)主機(jī)系統(tǒng)200向存儲(chǔ)控制器140發(fā)送讀取命令時(shí),根據(jù)該讀取命令是連續(xù)讀取命令還是隨機(jī)讀取命令,存儲(chǔ)控制器140進(jìn)入連續(xù)讀取操作模式或隨機(jī)讀取操作模式。根據(jù)存儲(chǔ)控制器140的操作模式,硬件加速器370操作不同,如下所述。
主機(jī)系統(tǒng)200通過主機(jī)接口控制器310與存儲(chǔ)控制器140通信。主機(jī)接口控制器310包含命令/地址寄存器311,其存儲(chǔ)從主機(jī)系統(tǒng)200接收的輸入命令與外部地址。命令/地址寄存器311還存儲(chǔ)中斷標(biāo)志,用來控制存儲(chǔ)控制器140的各種操作。雖然在圖3中顯示命令/地址寄存器311在主機(jī)接口控制器310中,但是命令/地址寄存器311也可以位于主機(jī)接口控制器310之外。命令/地址寄存器311可以包含多于一個(gè)寄存器。
命令/地址寄存器311中的中斷標(biāo)志用來控制存儲(chǔ)控制器140是否利用硬件加速器370來生成用于讀取操作的內(nèi)部地址。在讀取或?qū)懭氩僮髌陂g“設(shè)置”中斷標(biāo)志的情況下,MCU 320生成用于閃存模塊120的第一內(nèi)部地址與第一輸出命令。否則,在未設(shè)置中斷標(biāo)志的情況下,硬件加速器370根據(jù)外部地址生成用于閃存模塊120的第二內(nèi)部地址與第二輸出命令。
術(shù)語(yǔ)“設(shè)置”與“清除”指以下操作通過該操作,切換包含邏輯標(biāo)志的一個(gè)或多個(gè)比特,以獲得該標(biāo)志的不同狀態(tài)。例如,每當(dāng)命令/地址寄存器311收到寫入命令時(shí),都“設(shè)置”該中斷標(biāo)志。類似地,每當(dāng)命令/地址寄存器311收到要在不利用硬件加速器370轉(zhuǎn)換小塊地址的情況下執(zhí)行的讀取命令時(shí),也都“設(shè)置”該中斷標(biāo)志。當(dāng)完成寫入或讀取操作時(shí)、或者當(dāng)在連續(xù)讀取操作中讀取第一小頁(yè)時(shí),“清除”中斷標(biāo)志。
每當(dāng)設(shè)置中斷標(biāo)志時(shí),MCU 320從命令/地址寄存器311取得外部地址與輸入命令。然后,MCU 320將外部地址轉(zhuǎn)換為第一內(nèi)部地址,并且生成第二輸出命令。該轉(zhuǎn)換一般由在內(nèi)部存儲(chǔ)器330中存儲(chǔ)的程序完成。當(dāng)完成該轉(zhuǎn)換時(shí),第一內(nèi)部地址與輸出命令被傳送到開關(guān)350作為第一命令/地址數(shù)據(jù)。
在未設(shè)置中斷標(biāo)志的情況下,硬件加速器370生成第二內(nèi)部地址與輸出命令作為第二命令/地址數(shù)據(jù)。
每當(dāng)硬件加速器370生成第二內(nèi)部地址時(shí),MCU 320都不將外部地址轉(zhuǎn)換為第一內(nèi)部地址。這允許存儲(chǔ)控制器140通過避免運(yùn)行轉(zhuǎn)換程序所需的時(shí)間,而提高讀取操作的速度。
開關(guān)350從MCU 320與硬件加速器370接收相應(yīng)的第一與第二命令/地址數(shù)據(jù),并且根據(jù)MCU 320輸出的選擇信號(hào)SEL,選擇第一與第二命令/地址數(shù)據(jù)中的一個(gè)以輸出到存儲(chǔ)器接口控制器360。在設(shè)置中斷標(biāo)志的情況下,選擇信號(hào)SEL使開關(guān)350輸出第一命令/地址數(shù)據(jù);在清除中斷標(biāo)志的情況下,選擇信號(hào)SEL使開關(guān)350輸出第二命令/地址數(shù)據(jù)。
每當(dāng)MCU 320將外部地址轉(zhuǎn)換為第一內(nèi)部地址時(shí),都將第一內(nèi)部地址與外部地址傳送給硬件加速器370,其中它們被分別存儲(chǔ)為“先前內(nèi)部地址”與“先前外部地址”。硬件加速器370利用所述先前內(nèi)部與外部地址來生成連續(xù)內(nèi)部地址。
每當(dāng)MCU 320進(jìn)行地址轉(zhuǎn)換時(shí),其都修改硬件加速器370中的硬件加速標(biāo)志。當(dāng)?shù)刂忿D(zhuǎn)換用于讀取命令時(shí),MCU 320設(shè)置硬件加速標(biāo)志;當(dāng)?shù)刂忿D(zhuǎn)換用于寫入命令時(shí),MCU 320清除硬件加速標(biāo)志。在MCU 320不進(jìn)行地址轉(zhuǎn)換的情況下(即在清除中斷標(biāo)志的情況下),不修改硬件加速標(biāo)志。
存儲(chǔ)器接口控制器360接收通過開關(guān)350傳送的第一或第二命令/地址數(shù)據(jù),并將第一或第二命令/地址數(shù)據(jù)輸出到閃存模塊120。閃存模塊120通常包括NAND閃存,并因此存儲(chǔ)器接口控制器360通常使用傳統(tǒng)NAND接口定時(shí)以與閃存模塊120通信。
響應(yīng)于通過開關(guān)350接收的命令/地址數(shù)據(jù),存儲(chǔ)器接口控制器360向和從緩沖存儲(chǔ)器380和閃存模塊120傳送數(shù)據(jù)。相應(yīng)地,可替換地,緩沖存儲(chǔ)器380可以由來自MCU 320與硬件加速器370的命令/地址數(shù)據(jù)控制。
在設(shè)置硬件加速標(biāo)志的情況下,硬件加速器370根據(jù)先前內(nèi)部與外部地址生成第二內(nèi)部地址與輸出命令。例如,在當(dāng)前命令為隨機(jī)讀取命令、并且設(shè)置硬件加速標(biāo)志的情況下,硬件加速器370比較命令/地址寄存器311中的當(dāng)前外部地址與先前外部地址,并且確定當(dāng)前外部地址中的存儲(chǔ)塊地址是否與先前外部地址中的存儲(chǔ)塊地址相同。另外,硬件加速器370還比較當(dāng)前外部地址的頁(yè)地址是否在先前外部地址的開始與結(jié)束頁(yè)地址之間。
在當(dāng)前與先前外部地址的存儲(chǔ)塊地址相同、并且當(dāng)前外部地址的頁(yè)地址在先前外部地址的開始與結(jié)束頁(yè)地址之間的情況下,硬件加速器370根據(jù)當(dāng)前與先前外部地址、以及先前內(nèi)部地址,生成第二內(nèi)部地址。然后,第二內(nèi)部地址與相應(yīng)的輸出命令通過開關(guān)350而被傳送到存儲(chǔ)器接口控制器360。
在當(dāng)前與先前外部地址的存儲(chǔ)塊地址不相同、或者當(dāng)前外部地址的頁(yè)地址不在先前外部地址的開始與結(jié)束頁(yè)地址之間的情況下,硬件加速器370設(shè)置命令/地址寄存器311中的中斷標(biāo)志。以這種方式設(shè)置中斷標(biāo)志會(huì)迫使MCU320將當(dāng)前外部地址轉(zhuǎn)換為第一內(nèi)部地址。
圖4顯示根據(jù)本發(fā)明實(shí)施方式的硬件加速器370的方框圖。參照?qǐng)D4,硬件加速器370包含寄存器371、選擇器電路372、判定電路373、地址生成器374、以及狀態(tài)機(jī)375。
寄存器371存儲(chǔ)用來確定是否可以基于新地址REQ_ADD生成第二內(nèi)部地址的參考地址。參考地址與新地址REQ_ADD作比較,并且在這些地址“足夠類似”的情況下,硬件加速器370基于新地址REQ_ADD生成第二內(nèi)部地址。
在對(duì)第一外部地址進(jìn)行地址轉(zhuǎn)換之后,一般用從MCU 320接收的第一外部地址對(duì)寄存器371中的參考地址進(jìn)行初始化。第一外部地址還用來初始化在地址生成器374中存儲(chǔ)的地址。
地址生成器374響應(yīng)于來自狀態(tài)機(jī)375的控制信號(hào)而計(jì)算下一地址NEXT_ADD,并且將下一地址NEXT_ADD輸出到寄存器371。一般通過遞增在地址生成器374中存儲(chǔ)的地址的頁(yè)地址,來計(jì)算下一地址NEXT_ADD。然而,當(dāng)存儲(chǔ)控制器140處于隨機(jī)讀取操作模式下時(shí),輸入到選擇器372的當(dāng)前外部地址CUR_ADD一般被傳遞通過地址生成器374,并且作為下一地址NEXT_ADD而輸出。當(dāng)前外部地址CUR_ADD是當(dāng)前在命令/地址寄存器311中存儲(chǔ)的外部地址。
下一地址NEXT_ADD、新地址REQ_ADD、以及參考地址都以如下方式更新新地址REQ_ADD表示相對(duì)于參考地址的、更新后的地址。例如,可以在判定電路373中比較新地址REQ_ADD與參考地址之前,更新下一地址NEXT_ADD,并且可以在判定電路373中同一比較之后,用下一地址NEXT_ADD更新參考地址。
選擇器電路372接收下一地址NEXT_ADD與當(dāng)前外部地址CUR_ADD,并且根據(jù)指示連續(xù)讀取操作模式或隨機(jī)讀取操作模式的模式選擇信號(hào)MODE,而選擇和輸出下一地址NEXT_ADD或當(dāng)前外部地址CUR_ADD。在模式選擇信號(hào)MODE指示連續(xù)讀取操作模式的情況下,選擇器電路372選擇和輸出下一地址NEXT_ADD。否則,在模式信號(hào)MODE指示隨機(jī)讀取操作模式的情況下,選擇器電路372選擇和輸出當(dāng)前外部地址CUR_ADD。判定電路373與地址生成器374都接收新地址REQ_ADD。
判定電路373響應(yīng)于加速使能信號(hào)HWACC_EN與讀取信號(hào)READ而操作。在加速使能信號(hào)HWACC_EN與讀取信號(hào)READ被激活的情況下,判定電路373比較新地址REQ_ADD與存儲(chǔ)在寄存器371中的參考地址。換言之,判定電路373將當(dāng)前外部地址CUR_ADD或下一地址NEXT_ADD與先前外部地址作比較。
每當(dāng)設(shè)置硬件加速標(biāo)志時(shí),硬件加速器370都激活加速使能信號(hào)HWACC_EN。每當(dāng)來自主機(jī)系統(tǒng)200的先前命令為讀取命令時(shí),都設(shè)置硬件加速標(biāo)志。例如,每當(dāng)MCU 320對(duì)于讀取命令執(zhí)行地址轉(zhuǎn)換時(shí),其都設(shè)置硬件加速標(biāo)志,從而激活加速使能信號(hào)HWACC_EN。在另一方面,每當(dāng)來自主機(jī)系統(tǒng)200的先前命令為寫入命令時(shí),都清除硬件加速標(biāo)志以滅活。
每當(dāng)在命令/地址寄存器311中存儲(chǔ)的當(dāng)前命令為讀取命令時(shí),都激活讀取信號(hào)READ。相應(yīng)地,每當(dāng)來自主機(jī)系統(tǒng)200的先前與當(dāng)前命令為讀取命令時(shí),都激活判定電路373。
當(dāng)判定電路373被激活時(shí),其比較新地址REQ_ADD與在寄存器371中存儲(chǔ)的參考地址。判定電路373確定新地址REQ_ADD是否具有與參考地址相同的存儲(chǔ)塊地址,以及新地址REQ_ADD是否具有在參考地址的開始與結(jié)束頁(yè)地址之間的頁(yè)地址。當(dāng)參考地址具有與新地址REQ_ADD相同的存儲(chǔ)塊地址、并且新地址REQ_ADD的頁(yè)地址在參考小塊地址的開始與結(jié)束頁(yè)地址之間時(shí),判定電路373激活命中信號(hào)HIT。否則,判定電路373滅活命中信號(hào)HIT,并且生成中斷信號(hào)INT,其使命令/地址寄存器311中的中斷標(biāo)志得到設(shè)置。
響應(yīng)于命中信號(hào)HIT的激活,狀態(tài)機(jī)375生成大塊地址與輸出命令。根據(jù)從地址生成器374輸出的下一地址NEXT_ADD,而生成第二內(nèi)部地址。然后,將來自狀態(tài)機(jī)375的第二內(nèi)部地址與輸出命令通過開關(guān)350傳送給存儲(chǔ)器接口控制器360。
圖5為圖示根據(jù)本發(fā)明實(shí)施方式的存儲(chǔ)卡100的讀取/寫入操作的流程圖。以下針對(duì)連續(xù)讀取操作模式與隨機(jī)讀取操作模式,而描述存儲(chǔ)卡100的操作。在以下描述中,示范性方法步驟由括號(hào)(XXX)表示,以使其區(qū)別于如圖1至4所示的示范性元件。
參照?qǐng)D5,在主機(jī)接口控制器310的命令/地址寄存器311中存儲(chǔ)當(dāng)前外部地址CUR_ADD與輸入命令,并且主機(jī)接口控制器310確定輸入命令是否為讀取命令(S410)。
在輸入命令不是讀取命令的情況下,主機(jī)接口控制器310設(shè)置命令/地址寄存器311中的中斷標(biāo)志(S420)。否則,在輸入命令是讀取命令的情況下,主機(jī)接口控制器確定是否設(shè)置了硬件加速器370中的硬件加速標(biāo)志(S440)。在未設(shè)置硬件加速標(biāo)志的情況下,主機(jī)接口控制器310設(shè)置中斷標(biāo)志(S420)。
然而,在設(shè)置了硬件加速標(biāo)志的情況下,硬件加速器370然后確定選擇器372輸出的地址REQ_ADD是否在存儲(chǔ)于硬件加速器370中的先前定義的地址范圍內(nèi)(S450)。更具體地講,硬件加速器370確定新地址REQ_ADD是否具有與參考地址相同的存儲(chǔ)塊、以及在參考小塊地址的開始頁(yè)與結(jié)束頁(yè)之間的頁(yè)地址。在新地址REQ_ADD不在存儲(chǔ)于硬件加速器370中的地址范圍內(nèi)的情況下,主機(jī)接口控制器310設(shè)置命令/地址寄存器311中的中斷標(biāo)志。
如果在步驟S410、S440或S450之一之后設(shè)置了中斷標(biāo)志,則MCU 320將當(dāng)前外部地址CUR_ADD轉(zhuǎn)換為第一內(nèi)部地址(S430),并且根據(jù)輸入命令生成第一輸出命令。否則,在步驟S410、S440與S450之后未設(shè)置中斷標(biāo)志的情況下,硬件加速器370生成第二內(nèi)部地址與第二輸出命令(S460)。
一旦生成第一或第二內(nèi)部地址與輸出命令,存儲(chǔ)控制器140就將第一或第二內(nèi)部地址與輸出命令通過存儲(chǔ)器接口控制器360傳遞到閃存模塊120,以執(zhí)行讀取命令或者寫入命令(S470)。
每次主機(jī)系統(tǒng)200向存儲(chǔ)控制器140發(fā)送新讀取命令時(shí),都執(zhí)行步驟S410與S440。然后,如果先前讀取命令是在沒有中間命令的情況下發(fā)送到主機(jī)系統(tǒng)200的,則在步驟S440之后執(zhí)行步驟S450。然后,在可能的情況下,硬件加速器370根據(jù)步驟S460生成當(dāng)前大塊地址,從而MCU 320不需要進(jìn)行地址轉(zhuǎn)換。
在連續(xù)讀取操作模式與隨機(jī)讀取操作模式下,存儲(chǔ)控制器140類似地操作。然而,在隨機(jī)讀取操作模式下,新地址REQ_ADD是從當(dāng)前外部地址CUR_ADD獲得的;而在連續(xù)讀取操作模式下,新地址REQ_ADD是從下一地址NEXT_ADD獲得的。另外,在連續(xù)讀取操作模式下,當(dāng)由先前讀取操作讀取的數(shù)據(jù)都被傳送到主機(jī)系統(tǒng)200時(shí),判定電路373進(jìn)行操作。
圖6與7顯示了圖示使用硬件加速器370、而不是總用MCU 320將外部地址轉(zhuǎn)換為內(nèi)部地址的性能優(yōu)勢(shì)的波形時(shí)序圖。圖6顯示在連續(xù)讀取操作模式期間的存儲(chǔ)控制器140的波形時(shí)序圖,而圖7顯示在隨機(jī)讀取操作模式期間的存儲(chǔ)控制器140的波形時(shí)序圖。
參照?qǐng)D6,第一波形R/nB1圖示了在主機(jī)系統(tǒng)200與閃存模塊120都使用小塊地址的情況下的、存儲(chǔ)控制器140的時(shí)序。在這種情況下,不需要將主機(jī)系統(tǒng)200提供的外部地址轉(zhuǎn)換為內(nèi)部地址。
在第一波形R/nB1中,存儲(chǔ)控制器140在第一高到低躍遷之前接收命令/地址數(shù)據(jù)。然后,在時(shí)段“t1”中,波形R/nB1走低,此時(shí)存儲(chǔ)控制器140訪問閃存模塊120,并且將一頁(yè)數(shù)據(jù)傳送給緩沖存儲(chǔ)器380。然后,在時(shí)段“t2”中,波形R/nB1走高,此時(shí)緩沖存儲(chǔ)器380將這頁(yè)數(shù)據(jù)傳送給主機(jī)系統(tǒng)200。因?yàn)榇鎯?chǔ)控制器140處于連續(xù)讀取操作模式中,所以通過單次傳送命令/地址數(shù)據(jù),就會(huì)從閃存模塊120向主機(jī)系統(tǒng)200連續(xù)傳送幾頁(yè)數(shù)據(jù)。
第二與第三波形R/nB2與R/nB3圖示了在主機(jī)系統(tǒng)200使用小塊地址而閃存模塊120使用大塊地址的情況下的、存儲(chǔ)控制器140的時(shí)序。在第二波形R/nB2中,MCU 320將從主機(jī)系統(tǒng)200接收的每個(gè)外部地址轉(zhuǎn)換為內(nèi)部地址;在第三波形R/nB3中,硬件加速器370只要可能就生成內(nèi)部地址。
第二與第三波形R/nB2與R/nB3與波形R/nB1類似,只是每當(dāng)需要MCU320將外部地址轉(zhuǎn)換為內(nèi)部地址時(shí),會(huì)發(fā)生延遲“t3”。在第二波形R/nB2中,每次從閃存模塊120向緩沖存儲(chǔ)器380傳送頁(yè)時(shí),都會(huì)發(fā)生延遲“t3”。然而,在第三波形R/nB3中,通過利用硬件加速器370而消除了延遲“t3”。
參照?qǐng)D7,第一、第二、和第三波形R/nB1、R/nB2、和R/nB3有輕微改動(dòng),這是因?yàn)榇鎯?chǔ)控制器140處于隨機(jī)讀取操作模式中。在波形R/nB1中,存儲(chǔ)控制器140在第一高到低躍遷之前接收命令/地址數(shù)據(jù)。然后,在時(shí)段“t1”中,波形R/nB1走低,此時(shí)存儲(chǔ)控制器140訪問閃存模塊120,并且將一頁(yè)數(shù)據(jù)傳送給緩沖存儲(chǔ)器380。然后,在時(shí)段“t2”中,波形R/nB1走高,此時(shí)緩沖存儲(chǔ)器380將這頁(yè)數(shù)據(jù)傳送給主機(jī)系統(tǒng)200。
一旦將這頁(yè)數(shù)據(jù)傳送給了主機(jī)系統(tǒng)200,主機(jī)系統(tǒng)200就會(huì)在第一波形R/nB1的下一高到低躍遷之前向存儲(chǔ)控制器140傳送更多的命令/地址數(shù)據(jù)。再次地,在時(shí)段“t1”期間,從閃存模塊120向緩沖存儲(chǔ)器380傳送一頁(yè)數(shù)據(jù),如此等等。
在圖7中,第二與第三波形R/nB2與R/nB3再次與波形R/nB1類似,只是每當(dāng)需要MCU 320將外部地址轉(zhuǎn)換為內(nèi)部地址時(shí),會(huì)發(fā)生延遲“t3”。在第二波形R/nB2中,每次從閃存模塊120向緩沖存儲(chǔ)器380傳送頁(yè)時(shí),都會(huì)發(fā)生延遲“t3”。然而,在第三波形R/nB3中,通過利用硬件加速器370而消除了延遲“t3”。
通過消除對(duì)于總是利用MCU 320進(jìn)行地址轉(zhuǎn)換的需要,在連續(xù)讀取操作模式與隨機(jī)讀取操作模式下,本發(fā)明的實(shí)施方式都顯著改進(jìn)了存儲(chǔ)卡100的性能。
圖8顯示根據(jù)本發(fā)明另一實(shí)施方式的存儲(chǔ)控制器140的方框圖。圖8所示存儲(chǔ)控制器與圖3所示的相同,只是添加了中斷控制器390。
中斷控制器390被配置來當(dāng)在命令/地址寄存器311中設(shè)置中斷信號(hào)時(shí)、生成中斷信號(hào)。當(dāng)生成中斷信號(hào)時(shí),MCU 320如上所述地執(zhí)行地址轉(zhuǎn)換。
上述優(yōu)選實(shí)施方式為教學(xué)示例。本領(lǐng)域技術(shù)人員應(yīng)該理解在不脫離以下權(quán)利要求限定的本發(fā)明范圍的前提下,可以對(duì)示范性實(shí)施方式進(jìn)行形式與細(xì)節(jié)的各種修改。
權(quán)利要求
1.一種存儲(chǔ)卡,包含存儲(chǔ)控制器,適于從主機(jī)系統(tǒng)接收第一命令與第一外部地址,該存儲(chǔ)控制器包含第一電路,適于利用在第一電路中存儲(chǔ)的程序,而將第一外部地址轉(zhuǎn)換為第一內(nèi)部地址;第二電路,適于響應(yīng)于讀取信號(hào)與加速使能信號(hào)的激活,根據(jù)第一內(nèi)部地址與第一外部地址,而生成第二內(nèi)部地址;以及閃存模塊,適于根據(jù)第一與第二內(nèi)部地址而訪問多頁(yè)數(shù)據(jù);其中在閃存模塊利用第一內(nèi)部地址訪問一頁(yè)數(shù)據(jù)用于讀取操作之后,第一電路設(shè)置第二電路中的硬件加速標(biāo)志;以及,其中每當(dāng)存儲(chǔ)控制器從主機(jī)系統(tǒng)接收讀取命令時(shí),第二電路激活讀取信號(hào)。
2.如權(quán)利要求1所述的存儲(chǔ)卡,其中在接收第一命令之后,存儲(chǔ)控制器接收第二命令與第二外部地址;以及其中第一與第二命令為隨機(jī)讀取命令。
3.如權(quán)利要求2所述的存儲(chǔ)卡,其中當(dāng)收到第一命令時(shí),第一電路將第一外部地址傳送給第二電路,并且第二電路存儲(chǔ)第一外部地址。
4.如權(quán)利要求3所述的存儲(chǔ)卡,其中第一與第二外部地址中的每一個(gè)都包含存儲(chǔ)塊地址;以及開始與結(jié)束頁(yè)地址。
5.如權(quán)利要求4所述的存儲(chǔ)卡,其中當(dāng)設(shè)置了硬件加速標(biāo)志時(shí),第二電路確定第一與第二外部地址是否具有相同的存儲(chǔ)塊地址、以及第二外部地址是否具有在第一外部地址的開始與結(jié)束頁(yè)地址之間的頁(yè)地址。
6.如權(quán)利要求5所述的存儲(chǔ)卡,其中當(dāng)?shù)谝慌c第二外部地址具有相同的存儲(chǔ)塊地址、并且第二外部地址具有在第一外部地址的開始與結(jié)束頁(yè)地址之間的頁(yè)地址時(shí),第二電路生成第二內(nèi)部地址。
7.如權(quán)利要求5所述的存儲(chǔ)卡,其中當(dāng)?shù)谝慌c第二外部地址不具有相同的存儲(chǔ)塊地址、或者第二外部地址不具有在第一外部地址的開始與結(jié)束頁(yè)地址之間的頁(yè)地址時(shí),第二電路激活中斷信號(hào),以在存儲(chǔ)控制器中設(shè)置中斷標(biāo)志,從而使第一電路生成第一內(nèi)部地址。
8.如權(quán)利要求1所述的存儲(chǔ)卡,其中第一命令為連續(xù)讀取命令。
9.如權(quán)利要求8所述的存儲(chǔ)卡,其中第一電路將第一外部與內(nèi)部地址傳送給第二電路,并且第二電路存儲(chǔ)第一外部地址作為參考地址;以及其中第二電路根據(jù)第一外部地址生成下一地址。
10.如權(quán)利要求9所述的存儲(chǔ)卡,其中第一外部地址包含存儲(chǔ)塊地址;以及開始與結(jié)束頁(yè)地址。
11.如權(quán)利要求10所述的存儲(chǔ)卡,其中當(dāng)設(shè)置了硬件加速標(biāo)志時(shí),第二電路確定新地址與參考地址是否具有相同的存儲(chǔ)塊地址、以及新地址是否具有在參考地址的開始與結(jié)束頁(yè)地址之間的頁(yè)地址。
12.如權(quán)利要求11所述的存儲(chǔ)卡,其中當(dāng)確定新地址與參考地址具有相同的存儲(chǔ)塊地址、并且新地址具有在參考地址的開始與結(jié)束頁(yè)地址之間的頁(yè)地址時(shí),第二電路根據(jù)第一外部與內(nèi)部地址生成第二內(nèi)部地址。
13.如權(quán)利要求11所述的存儲(chǔ)卡,其中當(dāng)確定新地址與參考地址不具有相同的存儲(chǔ)塊地址、或者新地址不具有在參考地址的開始與結(jié)束頁(yè)地址之間的頁(yè)地址時(shí),第二電路激活中斷信號(hào)以在該存儲(chǔ)控制器中設(shè)置中斷標(biāo)志,使得第一電路生成第一內(nèi)部地址。
14.如權(quán)利要求1所述的存儲(chǔ)卡,其中在讀取操作中訪問了閃存模塊之后,第一電路將第一外部地址傳送給第二電路;以及其中第一外部地址包含存儲(chǔ)塊地址以及開始與結(jié)束頁(yè)地址。
15.如權(quán)利要求14所述的存儲(chǔ)卡,其中第二電路包含寄存器,適于存儲(chǔ)硬件加速標(biāo)志與從第一外部地址導(dǎo)出的參考地址;選擇器電路,適于響應(yīng)于模式信號(hào)而在當(dāng)前外部地址與下一地址之間進(jìn)行選擇,并且輸出所選擇的地址作為新地址;判定電路,適于當(dāng)檢測(cè)到參考地址與新地址具有相同的存儲(chǔ)塊地址、并且新地址具有在參考地址的開始頁(yè)地址與結(jié)束頁(yè)地址之間的頁(yè)地址時(shí),生成命中信號(hào);地址生成器,從選擇器電路接收新地址,并且根據(jù)新地址輸出下一地址;以及狀態(tài)機(jī),響應(yīng)于命中信號(hào),根據(jù)下一地址而生成第二內(nèi)部地址。
16.如權(quán)利要求15所述的存儲(chǔ)卡,其中當(dāng)生成第二內(nèi)部地址時(shí),狀態(tài)機(jī)向地址生成器發(fā)送控制信號(hào),以使得所述下一地址遞增預(yù)定值。
17.如權(quán)利要求16所述的存儲(chǔ)卡,其中所述下一地址存儲(chǔ)在寄存器中作為參考地址。
18.如權(quán)利要求15所述的存儲(chǔ)卡,其中當(dāng)模式信號(hào)指示隨機(jī)讀取操作模式時(shí),選擇器電路選擇當(dāng)前外部地址;而當(dāng)模式信號(hào)指示連續(xù)讀取操作模式時(shí),選擇器電路選擇下一地址。
19.如權(quán)利要求15所述的存儲(chǔ)卡,其中當(dāng)新地址具有與參考地址不同的存儲(chǔ)塊地址、或者新地址具有不在參考地址的開始與結(jié)束頁(yè)地址之間的頁(yè)地址時(shí),判定電路生成中斷信號(hào),從而使中斷標(biāo)志在存儲(chǔ)控制器中得到設(shè)置。
20.如權(quán)利要求1所述的存儲(chǔ)卡,還包含開關(guān),用來響應(yīng)于從第一電路輸出的選擇信號(hào),而將第一或第二內(nèi)部地址傳送給閃存模塊。
21.一種用于非易失性存儲(chǔ)器設(shè)備的存儲(chǔ)控制器,該存儲(chǔ)控制器包含內(nèi)部存儲(chǔ)器,適于存儲(chǔ)程序;微控制器單元,適于利用所述程序處理第一外部地址,以產(chǎn)生第一內(nèi)部地址;硬件加速器,適于根據(jù)第一外部與第一內(nèi)部地址,而處理第二外部地址,以生成第二內(nèi)部地址;主機(jī)接口,適于作為微控制器、硬件加速器與主機(jī)系統(tǒng)之間的接口;以及存儲(chǔ)器接口,適于作為微控制器、硬件加速器與非易失性存儲(chǔ)器之間的接口。
22.如權(quán)利要求21所述的存儲(chǔ)控制器,其中該硬件加速器響應(yīng)于從微控制器單元接收的硬件加速標(biāo)志而操作。
23.一種非易失性存儲(chǔ)卡,包含存儲(chǔ)控制器,包含微控制器單元,適于利用所存儲(chǔ)的程序處理第一外部地址以產(chǎn)生第一內(nèi)部地址;以及硬件加速器,適于根據(jù)第一內(nèi)部與外部地址而處理第二外部地址;主機(jī)接口,適于作為存儲(chǔ)控制器與主機(jī)系統(tǒng)之間的接口;以及存儲(chǔ)器接口,適于作為非易失性存儲(chǔ)設(shè)備與存儲(chǔ)控制器之間的接口。
24.如權(quán)利要求23所述的非易失性存儲(chǔ)卡,其中該硬件加速器響應(yīng)于從微控制器單元接收的硬件加速標(biāo)志而操作。
全文摘要
一種存儲(chǔ)卡,包含連接到非易失性存儲(chǔ)模塊的存儲(chǔ)控制器。該存儲(chǔ)控制器包含第一電路,適于利用在內(nèi)部存儲(chǔ)器中存儲(chǔ)的程序,而將第一外部地址轉(zhuǎn)換為第一內(nèi)部地址。存儲(chǔ)控制器還包含硬件加速器,適于根據(jù)第一內(nèi)部與外部地址,而生成第二內(nèi)部地址。
文檔編號(hào)G06F12/08GK1869915SQ20061008037
公開日2006年11月29日 申請(qǐng)日期2006年5月16日 優(yōu)先權(quán)日2005年5月24日
發(fā)明者金敬愛, 樸鐘烈, 李東熙 申請(qǐng)人:三星電子株式會(huì)社