本發(fā)明涉及存儲器技術(shù)領(lǐng)域,尤其涉及一種芯片處理方法及裝置。
背景技術(shù):
NOR Flash和NAND Flash是現(xiàn)在市場上兩種主要的非易失閃存技術(shù),NOR Flash的特點是芯片內(nèi)執(zhí)行,這樣應(yīng)用程序可以直接在Flash閃存內(nèi)運行,不必再把代碼讀到隨機存儲器(random access memory,RAM)中。NOR Flash的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是其很低的寫入和擦除速度大大影響到它的性能。NAND Flash的結(jié)構(gòu)能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。Flash閃存是非易失存儲器,可以對稱為塊的存儲器單元塊進行擦寫和再編程。任何Flash器件的寫入操作只能在空或已擦除的單元內(nèi)進行,所以大多數(shù)情況下,在進行寫入操作之前必須先執(zhí)行擦除。NAND Flash器件執(zhí)行擦除操作是十分簡單的,而NOR Flash則要求在進行擦除前先要將目標(biāo)塊內(nèi)所有的位都寫為“0”。
隨著微電子技術(shù)的快速發(fā)展,對集成電路芯片的速度要求也越來越高,NOR Flash芯片作為移動設(shè)備的主要存儲芯片之一,對其高速度有了新的要求。NOR Flash芯片一般采用物理集中放置,其存儲區(qū)域構(gòu)成了一個在邏輯上分成許多塊的存儲矩陣。例如,當(dāng)對其中一個塊進行擦除操作時,由于物理上這個塊和周圍的塊漏區(qū)和源區(qū)是相連的,往往會對相鄰的其他塊產(chǎn)生影響,為了避免塊存儲單元過擦除,NOR Flash芯片在進行擦除前先要將目標(biāo)塊內(nèi)所有是“1”的位都寫為“0”,整個擦除過程非常復(fù)雜,用時很長。
而擦除NOR Flash芯片時是以64~128KB的塊進行的,擦除NAND Flash芯片時是以8~32KB的塊進行的,擦除完一個塊后才能繼續(xù)擦除下一塊,寫入上述兩種芯片的操作也是逐塊進行的。若為全芯片的擦除或?qū)懭氩僮?,則非常影響芯片的速度。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例提供一種芯片處理方法及裝置,以解決現(xiàn)有技術(shù)中的芯片處理方法影響芯片的速度的問題。
第一方面,本發(fā)明實施例提供了一種芯片處理方法,包括:
將被處理區(qū)域分成多個容量相同的存儲模塊;
對每個所述存儲模塊同時開始以塊為單位進行處理操作,所述處理操作包括寫入操作和/或擦除操作。
第二方面,本發(fā)明實施例提供了一種芯片處理裝置,包括:
區(qū)域分割模塊,用于將被處理區(qū)域分成多個容量相同的存儲模塊;
模塊處理模塊,用于對每個所述存儲模塊同時開始以塊為單位進行處理操作,所述處理操作包括寫入操作和/或擦除操作。
本發(fā)明實施例提供的芯片處理方法及裝置,通過將被處理區(qū)域分為多個存儲模塊,對每個存儲模塊同時開始以塊為單位進行處理。實現(xiàn)了存儲模塊并行處理,解決現(xiàn)有技術(shù)中的芯片處理方法影響芯片的速度的問題,極大的提高了芯片處理速度。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
圖1是本發(fā)明實施例一提供的一種芯片處理方法的流程圖;
圖2是本發(fā)明實施例二提供的一種芯片處理方法的流程圖;
圖3是本發(fā)明實施例三提供的一種芯片處理方法的流程圖;
圖4a是本發(fā)明實施例四提供的傳統(tǒng)芯片擦除操作結(jié)構(gòu)示意圖;
圖4b是本發(fā)明實施例四提供的芯片擦除操作結(jié)構(gòu)示意圖;
圖4c是本發(fā)明實施例四提供的芯片擦除方法的第一種方式的驗證流程圖;
圖4d是本發(fā)明實施例四提供的芯片擦除方法的第一種方式的擦除驗證生成示意圖;
圖4e是本發(fā)明實施例四提供的芯片擦除方法的第二種方式的驗證流程圖;
圖4f是本發(fā)明實施例四提供的芯片擦除方法的第二種方式的擦除驗證生成示意圖;
圖5是本發(fā)明實施例五提供的一種芯片處理裝置的結(jié)構(gòu)圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步的詳細(xì)說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。
另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。在更加詳細(xì)地討論示例性實施例之前應(yīng)當(dāng)提到的是,一些示例性實施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項操作(或步驟)描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時實施。此外,各項操作的順序可以被重新安排。當(dāng)其操作完成時所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。
實施例一
圖1是本發(fā)明實施例一提供的一種芯片處理方法的流程圖。本實施例的方法可由芯片處理裝置來執(zhí)行,所述裝置可通過軟件和/或硬件的方式實現(xiàn),并一般可集成于終端中。如圖1所示,本實施例提供的芯片處理方法具體包括:
S110、將被處理區(qū)域分成多個容量相同的存儲模塊。
在傳統(tǒng)的芯片處理過程中,是以塊為單位逐塊進行操作的,當(dāng)某一塊處理結(jié)束后才進行下一個塊的處理操作。對于NOR Flash芯片,是以64~128KB的塊進行處理操作的。示例性的,在傳統(tǒng)的芯片擦除操作中,按照塊依次進行擦除,當(dāng)一個塊被擦除成功后才進行下一個塊的擦除操作。以容量為16MB的芯片為例,如果以64KB的塊進行擦除操作,則需要做16MB/64KB次64KB的塊的擦除,對NOR Flash芯片執(zhí)行一個寫入/擦除操作的時間為5s,這樣做非常耗時。
本發(fā)明將被處理區(qū)域分成多個容量相同的存儲模塊,多個存儲模塊同時進行處理操作,可大大的節(jié)省處理時間??蛇x的,所述被處理區(qū)域可以為整個芯片或芯片的一部分。同樣的,如果以容量為16MB的芯片為例,被處理區(qū)域可以為整個16MB的芯片,也可以為此芯片的一部分。若為整個芯片的擦除,且以64KB的塊進行擦除操作,將整個芯片分割成同等大小的M等分,即將整個芯片分成容量相同的M個存儲模塊,每個存儲模塊同時進行擦除操作,處理時間大大縮短。
所述被處理區(qū)域按存儲地址被分成多個所述容量相同的存儲模塊。為了便于將每個存儲模塊進行分割,可以以地址作為分割依據(jù),從而在多個容量相同存儲模塊并行處理時,避免并行寫入或擦除時產(chǎn)生混亂。所以當(dāng)對被處理區(qū)域進行寫入或擦除操作時,按存儲地址將被處理區(qū)域分成多個容量相同的存儲模塊。
另外,塊的容量的大小可由用戶根據(jù)被處理區(qū)域的容量自定義設(shè)置,雖然本實施例以NOR Flash芯片為例進行論述,但本方案并不限于NOR Flash芯片,還可應(yīng)用于其他非易失閃存芯片以及其他種類的芯片。
S120、對每個所述存儲模塊同時開始以塊為單位進行處理操作,所述處理操作包括寫入操作和/或擦除操作。
對芯片的處理操作包括寫入操作和/或擦除操作。這里的寫入操作可以為編程或者預(yù)編程。在對芯片進行擦除前為了避免過擦除,NOR Flash芯片在進行擦除前先要將目標(biāo)塊內(nèi)所有是“1”的位都寫為“0”,即為預(yù)編程。
每個存儲模塊同時開始以塊為單位進行處理操作包括兩種情況:第一種為對每個存儲模塊同時開始進行處理操作,然后各個存儲模塊各自獨立以塊為單位進行處理操作,不受其他存儲模塊的影響,每個存儲模塊對應(yīng)一個狀態(tài)機,執(zhí)行時間短,且不需要多次去檢測各個存儲模塊當(dāng)前塊的處理情況,功耗??;第二種為對每個存儲模塊同時開始進行處理操作,且同時結(jié)束操作,處理完所有存儲模塊的當(dāng)前塊后才能同時處理下一塊,所有的存儲模塊共用一套狀態(tài)機,設(shè)計簡單方便,并且節(jié)省資源。
如上述示例所述,M個存儲模塊同時進行擦除操作,每個模塊按照64KB的塊依次進行擦除操作,假設(shè)每個存儲模塊可以等分成K個64KB的塊,那么,整個芯片的擦除操作就需要大約K次擦除操作。若按照傳統(tǒng)的全芯片擦除方法則需要(芯片容量/64KB)次擦除操作,本發(fā)明實施例的方案大大節(jié)約了操作時間。
本發(fā)明實施例一提供的芯片處理方法,通過將被處理區(qū)域分為多個存儲模塊,對每個存儲模塊同時開始以塊為單位進行處理。實現(xiàn)了存儲模塊并行處理,解決現(xiàn)有技術(shù)中的芯片處理方法影響芯片的速度的問題,極大的提高了芯片處理速度。
實施例二
圖2是本發(fā)明實施例二提供的一種芯片處理方法的流程圖。本實施例對實施例一進行了優(yōu)化,具體的,將對每個所述存儲模塊同時開始以塊為單位進行處理操作的過程進行詳述,在本實施例中,所述芯片處理方法包括:
S210、接收用戶的處理指令,所述處理指令包括存儲模塊的容量、存儲模塊的地址和塊的大小。
在將被處理區(qū)域分割成存儲模塊之前首先要接收用戶的處理指令。所述處理指令可以為寫入指令或擦除指令。無論擦除指令還是寫入指令都至少包括存儲模塊的容量、存儲模塊的地址和塊的大小此三種信息,此三種信息確定后才能對處理區(qū)域進行分割和處理。示例性的,若被處理區(qū)域為1MB,假設(shè)該存儲區(qū)域地址為300000H~3FFFFFH,則可將此被處理區(qū)域按地址分為兩個存儲模塊,每個存儲模塊的容量為512KB,則每個存儲模塊所占用地址為分別300000H~37FFFFH和380000H~3FFFFFH。假設(shè)塊的大小為2KB,則每個存儲模塊被分為256個塊,當(dāng)塊的大小確定后,塊的存儲地址隨之確定了,例如,由上述信息可得出第一個塊的存儲地址為300000H~3007FFH。
S220、將被處理區(qū)域分成多個容量相同的存儲模塊。
值得注意的是,若被處理區(qū)域在物理儲存地址上不集中,示例性的,若用戶需要對某個文件進行刪除,該文件中各類信息存儲在不相連的被處理區(qū)域當(dāng)中,則將每個被處理區(qū)域單獨分成多個容量相同的存儲模塊進行處理。
S230、同時開始處理每個所述存儲模塊的當(dāng)前塊。
S240、判斷是否成功處理完所有的存儲模塊的當(dāng)前塊,若是則執(zhí)行S250,若否則執(zhí)行S260。
S250、同時開始處理各存儲模塊中的下一個塊,直至將所有的塊成功處理。
S260、繼續(xù)對未成功處理當(dāng)前塊的存儲模塊的當(dāng)前塊進行處理,所述當(dāng)前塊被成功處理的其他存儲模塊處于等待狀態(tài)。
步驟S240~S260為被處理區(qū)域中所有的存儲模塊同時開始執(zhí)行處理操作,并同時結(jié)束的過程。因為每個存儲模塊的容量相同,處理的塊的大小也相同,所以可同時處理每個存儲模塊的當(dāng)前塊,當(dāng)所有的存儲模塊的當(dāng)前塊處理完再對下一個塊進行處理,因為對每個存儲模塊的處理操作都是一致且同步的,所以可以使用同一套狀態(tài)機,狀態(tài)機通過響應(yīng)一系列事件而運行,當(dāng)所有存儲模塊的當(dāng)前塊處理完成后,狀態(tài)機響應(yīng)其完成事件,控制對存儲模塊下一塊的處理操作。示例性的,在寫入被處理區(qū)域時,同時對所有的存儲模塊的第一個塊執(zhí)行寫入操作,當(dāng)成功寫入完畢所有的存儲模塊的第一個塊時,在狀態(tài)機控制下同時開始對第二個塊進行寫入操作。若存在存儲模塊的當(dāng)前塊未完成寫入操作,則控制繼續(xù)對未完成當(dāng)前塊寫入操作的存儲模塊執(zhí)行寫入操作,已完成當(dāng)前塊寫入操作的存儲模塊此時處于等待狀態(tài)。
本實施例二在上述實施例的基礎(chǔ)上,將對每個所述存儲模塊同時開始以塊為單位進行處理操作的過程具體為同時開始對存儲模塊執(zhí)行處理操作,并同時結(jié)束操作,所有的存儲模塊同用一套狀態(tài)機,在節(jié)省了操作時間的同時,設(shè)計簡單,節(jié)省資源。
實施例三
圖3是本發(fā)明實施例三提供的一種芯片處理方法的流程圖。本實施例在實施例二的基礎(chǔ)上,對成功處理所有所述存儲模塊的當(dāng)前塊后,同時開始處理各存儲模塊中的下一個塊,直至將所有的塊成功處理的過程進行優(yōu)化,參考圖3,所述芯片處理方法包括:
S310、接收用戶的處理指令,所述處理指令包括存儲模塊的容量、存儲模塊的地址和塊的大小。
S320、將被處理區(qū)域分成多個容量相同的存儲模塊。
S330、同時開始處理每個所述存儲模塊的當(dāng)前塊。
S340、對于每個所述存儲模塊,當(dāng)前塊處理成功后,將所述存儲模塊對應(yīng)的分寄存器標(biāo)志位置1。
為每個存儲模塊設(shè)置對應(yīng)的分寄存器標(biāo)志位,當(dāng)對該存儲模塊的當(dāng)前塊的處理操作完成后,存儲模塊對應(yīng)的分寄存器標(biāo)志位置1。
S350、將各存儲模塊的分寄存器標(biāo)志位進行與操作,根據(jù)與操作結(jié)果對總寄存器標(biāo)志位進行置位。
另外設(shè)置一總寄存器標(biāo)志位,此總寄存器標(biāo)志位用來作為是否對下一個塊進行處理操作的執(zhí)行依據(jù)。總寄存器標(biāo)志位由各個分寄存器標(biāo)志位相與得到,當(dāng)所有的分寄存器標(biāo)志位置1時,總寄存器標(biāo)志位也會置1,當(dāng)總寄存器標(biāo)志位置1后,標(biāo)志著對所有存儲模塊的當(dāng)前塊的處理操作完成了。當(dāng)存在存儲模塊的當(dāng)前塊未被處理完時,其對應(yīng)的分寄存器標(biāo)志位為0,則繼續(xù)對該存儲模塊的當(dāng)前塊執(zhí)行處理操作,其余的分寄存器標(biāo)志位為1的存儲模塊即處在等待狀態(tài),以節(jié)省操作和內(nèi)存。
S360、當(dāng)所述總寄存器標(biāo)志位為1時,啟動各所述存儲模塊中下一個塊的處理操作,直至處理完所有的塊。
當(dāng)總寄存器標(biāo)志位置1時,則可啟動各存儲模塊中下一個塊的處理操作。值得注意的是,當(dāng)啟動了各存儲模塊中下一塊的處理操作后,總寄存器標(biāo)志位和所有的分寄存器標(biāo)志位都變?yōu)?,再為各存儲模塊的下一塊的處理操作進行置位。
本實施例三在實施例二的基礎(chǔ)上,為每個存儲模塊設(shè)置分寄存器標(biāo)志位,并設(shè)置了總寄存器標(biāo)志位,通過總寄存器標(biāo)志位和分寄存器標(biāo)志位作為各存儲模塊當(dāng)前塊是否被成功處理和是否啟動下一塊處理操作的判據(jù)。
實施例四
本實施例為在上述實施例基礎(chǔ)上的優(yōu)選示例。假設(shè)要對容量為16MB的芯片進行全芯片的擦除操作,同時假設(shè)以容量為64KB的塊為單位進行擦除。
傳統(tǒng)的擦除操作結(jié)構(gòu)示意圖如圖4a所示,需要按地址分成256個塊依次進行擦除,如圖4a分為編號為0~255的256個塊。本芯片需要256次塊的擦除操作即256次BLOCK ERASE。
本實施例將容量為16MB的芯片分為2個存儲模塊,則每個存儲模塊容量為8MB,參考圖4b,圖4b是本發(fā)明實施例四提供的芯片擦除操作結(jié)構(gòu)示意圖。每個存儲模塊包括128個塊,兩個存儲模塊同時執(zhí)行擦除操作,第一個存儲模塊包括編號為0~127的塊,即圖4b中的BLOCK0~BLOCK127,第二個存儲模塊包括編號為128~255的塊,即圖4b中的BLOCK128~BLOCK255,兩個存儲模塊同時開始進行擦除操作,可節(jié)省大約一半的時間。
本實施例中芯片處理方法可有兩種不同的處理方式。第一種方式為每個存儲模塊僅同時開始進行擦除操作,之后各自獨立執(zhí)行塊擦除操作。如圖4c和4d所示,圖4c是本發(fā)明實施例四提供的芯片擦除方法的第一種方式的驗證流程圖,圖4d是本發(fā)明實施例四提供的芯片擦除方法的第一種方式的擦除驗證生成示意圖。對兩個存儲模塊分別按照地址順序執(zhí)行塊擦除操作,可能不會同時結(jié)束,每個存儲模塊都對應(yīng)有分寄存器標(biāo)志位,圖4d中的兩個存儲模塊對應(yīng)分寄存器SA1和SA2,分寄存器SA1和SA2分別與圖4c中的擦除驗證模塊Erase verify1和Erase verify2相連。當(dāng)其中分寄存器SA1標(biāo)志位置1時,說明對應(yīng)的存儲模塊的當(dāng)前塊擦除成功,對應(yīng)的圖4c中的擦除驗證模塊Erase verify1的驗證結(jié)果為“Y”,則在當(dāng)前塊開始的地址位的基礎(chǔ)上加上64KB即為下一個塊的開始的地址位,從此地址位開始進行擦除驗證,若圖4c中的擦除驗證模塊Erase verify1的驗證結(jié)果是“N”,則表示此塊未擦除成功,需要對當(dāng)前塊執(zhí)行擦除操作。同理,分寄存器SA2與擦除驗證模塊Erase verify2相連。兩個存儲模塊之間不相互影響,不用相互兼顧兩者的處理情況,所用時間短,且功耗小。
芯片處理方法的第二種處理方式為兩個存儲模塊同時開始進行操作,并且同時結(jié)束操作。如圖4e和4f所示,圖4e是本發(fā)明實施例四提供的芯片擦除方法的第二種方式的驗證流程圖,圖4f是本發(fā)明實施例四提供的芯片擦除方法的第二種方式的擦除驗證生成示意圖。由圖4f得知分寄存器SA1和SA2通過一個與門所得的結(jié)果與圖4d中的擦除驗證模塊Erase verify相連接,當(dāng)分寄存器SA1標(biāo)志位和分寄存器SA2標(biāo)志位都置1,即兩存儲模塊的當(dāng)前塊都擦除成功后,擦除驗證模塊Erase verify確認(rèn)擦除,則開始進行下一個64KB塊的擦除驗證。若其中一個存儲模塊未被擦除,其對應(yīng)的分寄存器標(biāo)志位為0,則擦除驗證模塊Erase verify獲知擦除失敗,則擦除驗證模塊Erase verify會繼續(xù)控制終端對當(dāng)前塊進行擦除,然后返回對當(dāng)前塊進行擦除驗證。當(dāng)所有模塊的當(dāng)前塊擦除成功后才能對下一個塊進行擦除,這樣,所有的存儲模塊公用一套狀態(tài)機,如圖4d所示,只需要一個擦除驗證模塊Erase verify來確定是否需要進行擦除,結(jié)構(gòu)簡單,設(shè)計方便,并且節(jié)省內(nèi)存和操作資源。
本實施例具體描述了芯片擦除方法的具體實現(xiàn)過程,并提出了兩種芯片擦除的處理方法,具體體現(xiàn)了本實施例芯片擦除方法節(jié)省時間并易于操作的特點。
實施例五
圖5是本發(fā)明實施例五提供的一種芯片處理裝置的結(jié)構(gòu)圖,該裝置可配置于終端中。如圖5所示,所述裝置包括區(qū)域分割模塊51、模塊處理模塊52和指令接收模塊53。
其中,區(qū)域分割模塊51,用于將被處理區(qū)域分成多個容量相同的存儲模塊;
模塊處理模塊52,用于對每個所述存儲模塊同時開始以塊為單位進行處理操作,所述處理操作包括寫入操作和/或擦除操作。
本發(fā)明實施例提供的芯片處理裝置,通過將被處理區(qū)域分為多個存儲模塊,對每個存儲模塊同時開始以塊為單位進行處理。實現(xiàn)了存儲模塊并行處理,解決現(xiàn)有技術(shù)中的芯片處理方法影響芯片的速度的問題,極大的提高了芯片處理速度。
在上述實施例的基礎(chǔ)上,模塊處理模塊52可以包括:
本塊處理單元521,用于同時開始處理每個所述存儲模塊的當(dāng)前塊;
次塊啟動單元522,用于在成功處理所有所述存儲模塊的當(dāng)前塊時,同時開始處理各存儲模塊中的下一個塊,直至將所有的塊成功處理。
可選的,模塊處理模塊52還可以包括:
本塊等待單元523,用于在存在所述存儲模塊的當(dāng)前塊未成功處理時,繼續(xù)對該存儲模塊的當(dāng)前塊進行處理,所述當(dāng)前塊被成功處理的其他存儲模塊處于等待狀態(tài)。
可選的,所述被處理區(qū)域按存儲地址被分成多個所述容量相同的存儲模塊。
可選的,次塊啟動單元522可以包括:
分寄存器置位子單元,用于對于每個所述存儲模塊,當(dāng)前塊處理成功后,將所述存儲模塊對應(yīng)的分寄存器標(biāo)志位置1;
總寄存器置位子單元,用于將各存儲模塊的分寄存器標(biāo)志位進行與操作,根據(jù)與操作結(jié)果對總寄存器標(biāo)志位進行置位;
此塊啟動子單元,用于當(dāng)所述總寄存器標(biāo)志位為1時,啟動各所述存儲模塊中下一個塊的處理操作。
可選的,所述裝置還可以包括:
指令接收模塊53,用于接收用戶的處理指令,所述處理指令包括存儲模塊的容量、存儲模塊的地址和塊的大小。
可選的,所述被處理區(qū)域為整個芯片或芯片的一部分。
本實施例方案將對每個所述存儲模塊同時開始以塊為單位進行處理操作的過程具體為同時開始對存儲模塊執(zhí)行處理操作,并同時結(jié)束操作,所有的存儲模塊同用一套狀態(tài)機,在節(jié)省了操作時間的同時,設(shè)計簡單,節(jié)省資源。
上述裝置可執(zhí)行本發(fā)明任意實施例所提供的芯片處理方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。
注意,上述僅為本發(fā)明的較佳實施例及所運用技術(shù)原理。本領(lǐng)域技術(shù)人員會理解,本發(fā)明不限于這里所述的特定實施例,對本領(lǐng)域技術(shù)人員來說能夠進行各種明顯的變化、重新調(diào)整和替代而不會脫離本發(fā)明的保護范圍。因此,雖然通過以上實施例對本發(fā)明進行了較為詳細(xì)的說明,但是本發(fā)明不僅僅限于以上實施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。