用於在存儲器間傳輸數據的裝置的製作方法
2023-12-01 15:49:56 3
專利名稱:用於在存儲器間傳輸數據的裝置的製作方法
技術領域:
本發明涉及一種用於在存儲器間傳輸數據的裝置,如權利要求1中前序特徵語句中聲稱的那樣。
背景技術:
在微處理器系統中,大量數據必須經常在易失性存儲器和非易失性存儲器之間傳輸。當使用易失性存儲器中的程序時存取速度通常是較高的,並且因此當系統啟動時,為了獲得較高的運行速度,數據通常會從非易失性存儲器傳輸到易失性存儲器中。當程序正在運行時,為了最優化使用有限的易失性存儲器和/或在供電故障時確保保護數據,數據同樣在易失性存儲器和非易失性存儲器之間傳輸。
存儲器訪問高度地取決於所使用的存儲器的類型。例如向易失性異步RAM中存取相對是簡單的。其他存儲器裝置,如非易失性NAND快閃記憶體裝置,就需要相對複雜的存取協議。具有NAND結構的非易失性存儲器裝置,例如InfineonNROM,目前普遍地變得更加顯著地重要,確切地說是由於行動裝置如數位照相機、行動電話、PDA或筆記本電腦上不斷增加的存儲器需求和其非常低的價格。對那些最後提到的存儲器裝置的隨機存取是非常慢的並且需要在運行程序前將程序和數據傳送到更快的易失性存儲器(VM)。由於它們的內部結構,讀或寫相對較大的數據塊是最優化的數據傳送模式,例如此相對較大的數據塊可以是存儲頁。為了讀取訪問,在輸出讀取命令和頁地址給NAND快閃記憶體裝置之後,首先將數據傳送到裝置中的緩衝器中,並且此通常需要十分之幾微秒的傳輸時間。當NAND快閃記憶體裝置發信號表示此傳輸完成,所有頁數據(512或2048位元組)可以以每秒40MB的高數據速度傳送到易失性存儲器中。進一步,NAND快閃記憶體裝置具有比特誤差的傾向,在數據傳送到易失性存儲器前其需要比特誤差檢測和比特誤差校正。
在VM和非易失性存儲器(NVM)之間傳送的數據以最高可能速度完成以最小化系統啟動時間。進一步,當微處理器運行程序時,為了允許程序和數據的動態加載,數據傳輸時可能的。進一步,微處理器的運行中的數據傳送的影響將被最小化。理想地,微處理器在易失性存儲器中存儲數據傳輸任務的列表,並僅在這些任務被全部完成以後微處理器才能被中斷。
在存儲器之間的數據傳輸通常使用直接存儲器存取控制器(DMAC)執行。然而,DMAC局限於簡單的存取類型並且不能適應更加複雜數據傳輸協議。在後面的示例中,由微控制器來控制數據傳輸。
發明內容
本發明基於提供一種在存儲器之間儘可能快地傳送數據的裝置的目的,並且該裝置可以適應更複雜的數據傳輸協議,但在處理過程中需要儘可能少的硬體,並且具有靈活地匹配廣泛不同操作條件的能力。
根據本發明,通過如權利要求1中所聲稱的裝置來達到此目的。
根據本發明的裝置的有利的和優選的實施例是權利要求2至20的主旨。
本發明的實質是僅使用專用數據傳輸控制器而不需要額外的裝置,因此全部的硬體就最小化,並且現有的硬體可以再使用,如DMAC或傳統的存儲器控制器。進一步,由於在硬體中僅執行一種基本的傳輸協議而使得適應性變得最大化。使用一個或同樣的硬體結構,所有對不同應用的進一步適應可以由軟體來執行。與現有技術相比,其中各自附加的特定的數據傳輸控制器由專用硬體來匹配各自特定的應用需求,此增加了產品的適應性,因此對降低成本作出了相當大的貢獻。
根據本發明的裝置的有利的和優選的示範實施例將在下文中參考
,其中圖1示出了根據本發明具有直接存儲器存取控制器的裝置的第一示範實施例的結構示意圖,圖2示出了根據本發明使用直接存儲器存取控制器和傳統存儲器控制器的裝置的第二示範實施例的結構示意圖,圖3用示意圖示出了NAND快閃記憶體寫操作的數據流,圖4用示意圖示出了NAND快閃記憶體讀操作的數據流,圖5示出了快閃記憶體控制直接存儲器存取埠(FCDP)的一個示範實施例的結構示意圖,
圖6示出了NAND快閃記憶體接口的一個示範實施例,圖7用示意圖示出了FCDP保護構造的一個示範實施例,圖8用示意圖示出了具有(512+16)×8位頁大小的NAND快閃記憶體頁構造的第一示範實施例,圖9用示意圖示出了具有(2048+64)×8位頁大小的NAND快閃記憶體頁構造的第二示範實施例,圖10用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_NFECCCONFIG寄存器,而在這樣情況下相關寄存器欄位的描述可以在表4中發現,圖11用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_MECCPTR寄存器,而在這樣情況下相關寄存器欄位的描述可以在表5中發現,圖12用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_NFSECCPTR寄存器,而在這樣情況下相關寄存器欄位的描述可以在表6中發現,圖13用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_NFIECCPTR寄存器,而在這樣情況下相關寄存器欄位的描述可以在表7中發現,圖14用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_NFMECCST寄存器,而在這樣情況下相關寄存器欄位的描述可以在表8中發現,圖15用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_NFSECCST寄存器,而在這樣情況下相關寄存器欄位的描述可以在表9中發現,圖16示出了保護機構的一個示範實施例的程序運行方案,圖17用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_NFPASSWD寄存器,而在這樣情況下相關寄存器欄位的描述可以在表10中發現,圖18用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_NFPROTCMD寄存器,而在這樣情況下相關寄存器欄位的描述可以在表11中發現,圖19用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_NFADDRWIN1L寄存器,而在這樣情況下相關寄存器欄位的描述可以在表12中發現,圖20用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_NFADDRWIN1H寄存器,而在這樣情況下相關寄存器欄位的描述可以在表13中發現,圖21用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_NFADDRWIN2L寄存器,而在這樣情況下相關寄存器欄位的描述可以在表14中發現,和圖22用示意圖示出了根據圖5中所示FCDP示範實施例的FCDP_NFADDRWIN2H寄存器,而在這樣情況下相關寄存器欄位的描述可以在表15中發現。
具體實施例方式
當存儲器協議控制器(MPC)與DMAC一起使用時,那麼其可以適應複雜的存儲器傳輸協議。用於MPC的命令序列是VM中的命令列表的一部分(見圖1)。此列表包括用於MPC的命令和用於NVM的附加命令。將要傳送到NVM的數據既可以存儲在VM中的單獨的列表中,也可以作為命令列表的一部分。
從命令列表中得到的命令通過DMAC傳送到NVM。只有MPC命令由MPC解譯。用於NVM的命令傳到NVM。為了此目的,同樣地「輸出到NW」命令必須先於NVM命令。由於NVM命令沒有在硬體中執行,新的或修改後的NVM命令可以容易地由命令列表的修改來處理。
一旦MPC執行了命令,其通常為DMAC中的命令請求行中下一個命令傳送一個請求。然後DMAC從VM傳送下一個命令到MPC。持續此序列直到DMAC到達命令列表的末端。然後DMAC傳送一個中斷信號給微處理器以表明任務已經被完全執行完畢。為了將MPC設為空閒狀態,停止命令將作為最後命令輸出到MPC。因為一旦VM中建立命令列表的處理完成,微處理器就將在MPC中設置一個「運行」位,所以,通常由微處理器啟動傳輸的開始。在此之後,除非出現錯誤情況,該處理將不再需要任何微處理器的控制。
MPC命令是在VM和NVM之間預定數量的數據字的傳輸的命令。在這種情況下,在DMAC的數據請求線中,MPC發出多個請求數據傳輸的信號。然後,DMAC將在MPC和VM之間執行數據傳輸。通常,為了儘可能優化使用在兩端之間的數據總線特性,在MPC中對該數據進行緩衝。最小化DMAC負載也是一個主要目的。包(脈衝串)中的數據傳輸可能是最適宜的解決方案。如果到NVM的總線的帶寬比到DMAC的總線的帶寬窄,在傳輸開始前,MPC為從NVM中進行讀操作收集來自NVM的合適的數據包。至於向NVM進行的寫操作,在其請求下一來自DMAC的數據包之前,MPC將等待直到向NVM進行的寫操作完全結束。
MPC能夠具有多條NVM-專用控制線路,例如NAND快閃記憶體裝置中的佔用/就緒線路。MPC命令可以包括關於以那些控制線路所使用的過程的指令,例如在輸出對下一命令的請求之前等待控制線路上的電平切換。
在NAND快閃記憶體裝置具有其內部頁結構的情況下,在命令腳本中,數據傳輸可以以大的塊被處理,此大的塊覆蓋多個頁。由於NAND快閃記憶體裝置的專有特徵,一個文件可能擴展至超過多個頁,這些頁任意地分布在該裝置的地址區域中。一個完整的文件載入操作可以通過一個命令腳本來執行。此命令腳本必須通過運行在微處理器中的NAND快閃記憶體文件系統軟體來編譯。
錯誤情況由MPC通知微處理器。錯誤的原因和已被執行的最後命令的地址由微處理器從狀態寄存器中讀取。所有進一步的請求都被輸出到DMAC。微處理器將對錯誤情況進行處理,並將重啟數據傳輸。由於NVM需要錯誤檢測和錯誤校正,所以,錯誤檢測代碼將由MPC產生,如果需要,錯誤校正代碼也同樣由MPC產生。對於讀操作,MPC最好先將在讀操作期間產生的錯誤檢測代碼與非易失性存儲器裝置(NVM)中存儲的錯誤檢測代碼繼續比較。在讀錯誤的情況下,MPC執行其自身的校正或觸發對微處理器的中斷。對於寫操作,MPC產生錯誤校正代碼,並且將此代碼寫入到非易失性存儲器裝置(NVM)中的預定點。對於這一點,以下將進行更加詳細地描述。
MPC也可以為寫和讀操作執行數據壓縮和數據解壓縮。
如圖2中所說明的,如果在同一存儲總線上沒有附加其他任何協議,而需要對其他的存儲器裝置進行控制,則MPC也可以與傳統存儲器控制器一起使用。外部部件可以共用數據線、地址線和控制信號。如圖2中所說明的,專用NVM控制線可以直接連到MPC。
在下文中,將參考圖3至22具體說明圖2中所示的該裝置的一個特殊示範實施例。圖3用示意圖示出了NAND快閃記憶體的寫操作的數據流,並且圖4用示意圖示出了NAND快閃記憶體的讀操作的數據流。圖2中的存儲器協議控制器(MPC)在圖3和4中註解為「快閃記憶體控制DMA埠」。FCDP允許快閃記憶體裝置(NAND快閃記憶體和NOR快閃記憶體)和RAM之間的獨立數據塊的傳輸,這樣CPU負荷和片上總線通信量將保持在最小。圖3和4中的快閃記憶體控制器對應於圖2中的傳統存儲器控制器。
為了減小CPU負荷,在初始化配置處理之後,與DMAC相結合的FCDP在沒有進一步支持的條件下能夠傳送任何需要的數據量(也就是說在NAND快閃記憶體的情況下為頁)。
此外,FCDP產生用於向NAND快閃記憶體裝置進行寫入操作的錯誤校正代碼(ECC),以及用於從NAND快閃記憶體裝置進行讀出操作的錯誤校正代碼的檢測。對NOR快閃記憶體裝置的讀訪問通過可配置地址產生器的提供來加速。
為了減少總線數據通信量,使用內部FIFO,FCDP支持四個傳輸(32位)的脈衝串傳送。
為了使得連接快閃記憶體和產生裝置特定時間匹配成為可能,FCDP需要一個外部存儲器控制器或快閃記憶體控制器。圖5示出了FCDP的結構示意圖,在這種情況下FCDP被解釋為處於非常高的電平,也就是說再分成更加低級的塊。
圖5中的FCDP解釋為-同步操作,-具有單獨的塊(AHB塊/AHB=先進高性能總線=現代高性能總線),-符合AMBA AHB2.0規範(「AMBA」是先進RISC機器有限公司/ARM Ltd的商標並且事實上表示片上總線的標準),-具有帶有AHB萊特(lite)接口的AHB主設備,-具有用於ARM主單元DMAC的接口,-通過硬體ECC支持NAND快閃記憶體讀/寫,-支持NOR快閃記憶體讀傳輸,並且-支持脈衝串模式的讀/寫傳輸。
為了能夠獲得FCDP的支持,NAND快閃記憶體裝置必須滿足下列要求-支持「CE無關」模式,
-僅在地址或命令周期之後操作「佔用/就緒」輸出,-列地址包括兩個以上地址字節,-行地址包括四個以上地址字節,-ECC產生/檢測-主區域超過2048位元組-備用區域超過32位元組-頁大小(如果不受ECC的塊大小的限制)超過4096位元組。
AHB從接口執行下列任務-從RAM到FCDP的數據傳輸(快閃記憶體寫訪問),-從FCDP到RAM的數據傳輸(快閃記憶體讀訪問),-FCDP配置接口,-FCDP命令接口。
在很多情況下,雖然使用DMA(直接存儲器存取)處理數據傳輸,如果需要,也就是說如果可用的DMA信道是不足的,其也可以通過CPU在中斷驅動基線上執行數據傳輸。
配置接口允許對FCDP控制/狀態寄存器的訪問。寄存器接口允許被配置成通用操作模式,此模式用於相對大數量的交易,也就是說該交易對現有快閃記憶體裝置、總線結構、DMA配置、存儲器映射等是特殊的。
命令接口用作對FCDP執行的控制傳輸的目的。許多命令也需要特殊的參數。命令接口能夠通過DMA被訪問,也就是說當前一頁已經被完全作用完時,下一頁的複製就被觸發。
AHB主設備接口處理傳送到外部存儲器接口/來自外部存儲器接口的傳輸。取決於如何設置整個系統,可以將其設計成既可以使用為最優化利用帶寬的脈衝串傳輸,也可以使用為減小AHB上判斷延遲的單獨傳輸。為了允許有效地使用脈衝串傳輸,外部存儲器接口應當能夠緩衝一定量的數據。
FCDP也可以具有FIFO以允許當一側在處理其他事務時,在另一側保持傳輸,例如當總線訪問許可未授權或DMA信道未就緒時。當需要時,FIFO同樣允許在一個AHB接口上使用脈衝串傳輸並且在其他AHB接口上使用單獨傳輸。
FCDP實質上使用組合的傳輸/接收FIFO(TX/RX FIFO),此FIFO是基於上旋(topspin)外圍體系結構概念。然而,由於FCDP的特殊需要,存在幾處較小的不同和特定特徵-在FCDP_FIFO_CFG寄存器中不存在「最大接收包大小」的欄位,由於FCDP不需要處理任何未請求的傳輸,也就是說包大小僅通過命令字來限定。
-由於讀取和寫入交易的包大小由寫入FCDP_COMMAND寄存器的命令字來限定,所以既沒有「接收包大小」寄存器(RPS_STAT),也沒有「傳輸包大小」寄存器(TPS_CTRL)。
-FIFO總是利用字對齊來進行操作。
-在「接收狀態」和「發送狀態」之間的切換由寫入到FCDP_COMMAND寄存器的命令字來控制。
-FCDP總是流控制器,對於DMA傳輸,也就是序列控制器。
在此,在說明示範實施例的情況下,FIFO的大小是8×32位。
為了檢測NAND快閃記憶體裝置的位錯誤並在可能時校正它們,FCDP提供了錯誤校正代碼(ECC)產生和檢測機制。ECC算法為漢明碼,其允許單個位錯誤的校正和在一頁中超過兩位錯誤的校正。
用於快閃記憶體頁的主區域中的ECC存儲在同一頁的備用區域中。在相同的方式,備用區域由第二個ECC進行錯誤檢測,第二ECC同樣存儲在備用區域中。
一旦提供一個合適的啟動,ECC就由FCDP產生並且在寫訪問中被寫入到快閃記憶體,達到此目的不需要任何CPU的輔助。在讀訪問中,ECC由從快閃記憶體中獲得的數據產生並且與存儲在快閃記憶體中的ECC進行比較。如果發現不匹配,那麼將一個錯誤中斷傳給CPU,並且停止進一步的交易。這使得CPU可能檢測錯誤是否被校正,並且,如果可能,校正此錯誤。
主區域和備用區域ECC的產生和檢測能夠彼此相互獨立地被激活或撤銷。為了允許快閃記憶體文件系統能夠經常地更換一些信息項,備用區域中的一些位將被排除在ECC結果之外。
主區域和備用區域ECC的存儲器位置,以及一頁中無保護部分的存儲器位置是可配置的。
使用一個二維等式檢測作為ECC。在速度和區域方面此允許一個有效的硬體實現。
為了檢測NAND快閃記憶體頁中的數據還沒有被破壞,存儲在快閃記憶體中的ECC和當讀數據時產生的ECC受到一個異或邏輯操作。這將導致下列情況之一-所有位均為0無錯誤-每一奇偶校驗位Px和其反碼Px′彼此不相同(PxPx′)可校正錯誤-僅有一位不為0ECC中錯誤-其他情況(隨機數據)不可校正錯誤當一個錯誤發生時,FCDP給CPU產生一個錯誤中斷。然後,錯誤處理軟體以適當的方式處理該錯誤。
如果發生可校正錯誤,ECC直接指出頁中錯誤位的位置P8192、P4096、P2048、……、P16位錯誤P8、P4、P2、P1的16位字地址錯誤的位的位置。
外部存儲接口被用於連接快閃記憶體裝置。
為了與NAND快閃記憶體裝置相互作用,外部存儲器控制器在異步模式下工作。如圖6所示,相應於外部16位字地址A(16)和A(17)的內部位地址A(17)和A(18)上兩個地址輸出線被用於控制NAND快閃記憶體輸入信號ALE(地址鎖存使能)和CLE(命令鎖存使能)。
NAND快閃記憶體輸出信號R/B僅被FCDP處理。只有在處理執行時間相對較長的命令(讀取頁、寫入頁、刪除頁)時,其被快閃記憶體裝置設置為低電平。
通過同步或異步NOR快閃記憶體接口對裝置的讀訪問,需要具有與AHB從埠相配合的存儲器控制器。由於AHB總線上的INCR4請求能夠由來自快閃記憶體裝置的脈衝串傳輸進行處理(INCR4為通常已被接受的,根據AHB規範中特殊脈衝串請求的縮寫,其中脈衝串寬度為增量的/INCR/,也就是說已增加的),連接到同步脈衝串NOR快閃記憶體的同步脈衝串模式控制器獲得較好的傳輸速度。
NAND快閃記憶體裝置和NOR快閃記憶體裝置通常均具有防寫(WP-防寫)輸入。此輸入不通過FCDP控制但必須根據裝置規範來處理,例如通過將其連接到GPIO(通用輸入/輸出)或接通復位信號。
通過將一個命令寫入到FCDP命令寄存器,從而初始化每個FCDP處理。此通常是通過在RAM中產生一個命令序列並使DMA控制器根據請求準備將命令寫入到FCDP來完成的。第一命令請求由軟體通過設定DMA命令請求位來觸發。一旦前一個命令執行完畢,FCDP將請求其後的每一個命令。STOP命令用於阻止FCDP請求進一步的命令。
表1提供了FCDP命令的綜述。如同所看到的,一些命令需要附加的參數。雖然大部分命令以單個32位字的形式存在,但也一部分命令需要第二個32位字以允許32位地址參數的加密。
表1FCDP命令綜述
下面,表2示出了FCDP寄存器接口的綜述。
表2寄存器編程接口
FCDP產生兩種類型的DMA請求,特定的數據請求和命令請求。這為設置DMAC的連結表的創建提供了特別的簡化。
只要FCDP命令執行完畢,即產生一個DMA命令請求,並且必須將一個新的命令寫入FCDP命令寄存器。該DMA命令請求始終是一個單個的DMA請求。
在快閃記憶體讀取操作期間FIFO中有足夠的數據時,或者在快閃記憶體寫操作期間FIFO中有足夠的空間時,就產生DMA數據請求。所有的傳輸除最後一個之外均在DMA脈衝串請求中結束,最後一個同樣由FCDP命令的傳輸數量參數確定。最後的傳輸結束於DMA「最後脈衝串」請求,此請求發送給DMAC,且其必須變成連結表中的下一個條目。
如果沒有足夠多的DMA信道可用,取而代之,使用數據請求中斷、「最後數據請求」中斷和命令請求中斷也是可能的。
在下文中將對各種中斷請求進行更加詳細的描述。
-命令請求中斷(CMD)
命令請求中斷的調用向FCDP表明下一命令能夠被寫入到命令寄存器(FCDP_COMMAND)並且表明以前命令的執行已經全部完成。命令請求中斷能夠被用於代替DMA命令請求。
-數據脈衝串請求中斷(DAT)根據現在正在執行的是哪個命令,FCDP輸出數據脈衝串請求中斷以表明數據必須被寫入到寫緩衝寄存器(FCDP_WRBUF)中或者表明數據必須被從讀緩衝寄存器(FCDP_RDBUF)中讀出。脈衝串的大小可以被編程為一個字或四個字。除了最後一個脈衝串之外,為在命令所定義的時序範圍內的每個數據脈衝串輸出數據脈衝串請求。該數據脈衝串請求中斷能夠用於取代DMA數據脈衝串請求。
-「最後數據脈衝串」請求中斷(LDAT)「最後數據脈衝串」請求中斷,其意義實質上與數據脈衝串請求中斷相同。唯一的不同在於LDAT是僅為在命令所定義的時序範圍內的最後一個脈衝串輸出。LDAT能夠用於取代DMA「最後脈衝串」請求。
-主區域ECC錯誤中斷(MECC)當發現從NAND快閃記憶體頁中讀取的ECC與從此頁的主區域中讀取數據所產生的ECC不匹配時,發生主區域ECC錯誤中斷,並且在FCDP_NFECCCONFIG寄存器中激活主區域ECC檢測。直到所有的傳輸已經完成並且所有的數據已經從FCDP_RDBUF寄存器中讀取後,才內部復位主區域ECC錯誤中斷。然後,FCDP等待刷新命令以確保已經與中斷延遲無關地識別該錯誤。在接收到刷新命令後,FCDP通過請求下一個命令恢復到正常操作。
-備用區域ECC錯誤中斷(SECC)當發現從NAND快閃記憶體頁中讀取的ECC與從該頁的備用區域中讀取數據所產生的ECC不匹配時,發生備用區域ECC錯誤中斷,並且在FCDP_NFECCCONFIG寄存器中激活備用區域ECC檢測。直到所有的傳輸已經完成並且所有的數據已經從FCDP_RDBUF寄存器中讀取後,才內部上推備用區域ECC錯誤中斷。然後,FCDP等待刷新命令以確保已經與中斷延遲無關地識別該錯誤。在接收到刷新命令後,FCDP通過請求下一個命令恢復到正常操作。
-快閃記憶體狀態錯誤中斷(ST)
在執行NF_CHECK命令之後,當發現從NAND快閃記憶體裝置讀取的狀態字節與NAND快閃記憶體狀態比較寄存器(FCDP_NFCOMP)中定義的期望值不匹配時,發生快閃記憶體狀態錯誤中斷。比較是根據NAND快閃記憶體狀態掩碼寄存器(FCDP_NFMASK)來執行的。中斷服務程序能夠從NAND快閃記憶體狀態寄存器(FCDP_NFSTATUS)中讀取實際的狀態字節。在快閃記憶體狀態錯誤中斷之後,FCDP等待刷新命令以確保已經與中斷延遲無關地識別該錯誤。在接收到刷新命令後,FCDP通過請求下一個命令恢復到正常操作。
-FIFO溢出/欠載錯誤中斷(FIFO)在FIFO為空期間,當對讀緩衝寄存器(FCDP_RDBUF)進行讀訪問時,或者在FIFO為滿期間,當對寫緩衝寄存器(FCDP_WRBUF)進行寫訪問時,則發生FIFO溢出/欠載錯誤中斷。
-保護錯誤中斷(PE)保護錯誤中斷在下列情況下發生-一個已經在NAND快閃記憶體「保護命令」寄存器(FCDP_NFPROTCMD)中被指定受保護的命令,在一個在NAND快閃記憶體地址窗口寄存器(FCDP_NFADDRWIN1L、FCDP_NFADDRWIN2L)中被指定的受保護NAND快閃記憶體地址區域(頁)中輸出。在NAND快閃記憶體處理期間的保護錯誤中斷之後(也就是說不是在保護寄存器FCDP_NFPASSW、FCDP_NFPROTCMD、FCDP_NFADDRWIN1L和FCDP_NFADDRWIN1H配置期間,FCDP_MODE.RUN=「0」),FCDP等待刷新命令以確保已經與中斷延遲無關地識別該錯誤。在接收到刷新命令後,FCDP通過請求下一個命令恢復到正常操作。
-通過將校正密碼寫入到NAND快閃記憶體密碼寄存器(FCDP_NFPASSWD)中,沒有首先打開NAND快閃記憶體「保護命令」寄存器(FCDP_NFPROTCMD),NAND快閃記憶體「保護命令」寄存器就被寫入。
-通過將校正密碼寫入到NAND快閃記憶體密碼寄存器(FCDP_NFPASSWD)中,沒有首先打開NAND快閃記憶體地址窗口1寄存器(FCDP_NFADDRWIN1L),NAND快閃記憶體地址窗口1寄存器就被寫入。
-一個錯誤的密碼已經被寫入NAND快閃記憶體密碼寄存器(FCDP_NFPASSWD)。
-命令錯誤中斷(CE)當未定義命令被寫入到命令寄存器FCDP_COMMAND中時,產生命令錯誤中斷。在命令錯誤中斷之後,FCDP等待刷新命令以確保已經與中斷延遲無關地識別該錯誤。在接收到刷新命令後,FCDP通過請求下一個命令恢復到正常操作。
-命令溢出錯誤中斷(CO)當在前一命令被完全處理之前將命令寫入到命令寄存器FCDP_COMMAND時,也就是說下一命令還沒有被請求時,產生命令溢出錯誤中斷。
-AHB錯誤中斷(AE)當FCDP中的AHB主接口檢測到AHB錯誤響應時,產生AHB錯誤中斷。該AHB錯誤的原因必須通過AHB從模塊指示給該接口。一旦產生AHB錯誤中斷,命令執行將立即終止,並且FCDP等待刷新命令以確保已經與中斷延遲無關地識別該錯誤。在接收到刷新命令後,FCDP通過請求下一個命令恢復到正常操作。
NAND快閃記憶體裝置的基址在FCDP配置寄存器中被指定。AHB主接口為NAND快閃記憶體裝置僅產生三個不同的地址,這三個不同的地址取決於訪問類型-基址數據-基址+0×20000地址-基址+0×40000命令當通過NF_WR命令或NF_RD命令選擇INCR4脈衝串傳輸時,根據AHB規範產生地址。
NAND快閃記憶體頁地址和NAND快閃記憶體行地址是FCDP命令序列的一部分,並且它們與AHB地址產生無關。
對於NOR快閃記憶體裝置,FCDP為每個讀訪問產生地址和AHB傳輸類型(時序的或非時序的)開始、開始+0×04、開始+0×08、開始+0×0C、……,開始表示傳輸的序列的初始起始地址。根據AHB規範中所定義的,必須要記住的是,開始必須要對準字地址的邊界並且脈衝串一定不能超過邊界1KB。
初始起始地址和將要被執行的脈衝串的數量是FCDP命令序列的一部分。
脈衝串模式寫命令與脈衝串模式讀命令以相同的方式工作。
硬體保護機構防止無意的或未經許可的NAND快閃記憶體刪除和寫操作。
FCDP將寫命令和讀命令的地址與可用於寫的地址區域進行比較。如果地址不在所允許的地址區域內,則FCDP取消到快閃記憶體裝置的那些命令的輸出並且產生錯誤中斷。
在頁基礎上執行保護。保護解鎖寄存器的內容指定頁地址區域。涉及寫和刪除保護功能的一套NAND快閃記憶體命令必須由軟體來定義,例如塊刪除(D0h)和頁編程(10h)。如果所指定的頁地址沒有位於可容許的地址區域(地址窗口)內並且隨後的命令指定為保護命令,則產生保護命令中斷,並且關鍵命令將不被送入NAND快閃記憶體。
如圖7中所示,執行防寫的兩個電平N1、N2。只有那些在兩個電平N1、N2中均開放的地址區域能被用作寫和刪除操作。在復位之後,兩個鎖定處理覆蓋了所有地址區域。
第一電平地址窗口寄存器的設定允許地址區域的一部分用作寫和刪除操作。此第一保護電平N1保護例如用於行動電話的程序和主功能,以防止被改寫。
在類似的寄存器中指定第二保護電平N2。其可以用作單獨的驅動器,例如用於快閃記憶體文件系統。
保護命令設置寄存器和第一電平地址窗口寄存器由密碼機構保護。
為了減少動態功率損耗,FCDP提供四種不同操作模式,具體而言-睡眠FCDP_CLC寄存器中的外設時鐘已經被切斷。在此模式下,僅對寄存器的讀訪問是可能的。
-配置FCDP_CLC寄存器中的外設時鐘已經被接通,並且運行模式被去激活(FCDP_MODE.RUN=「0」)。在此模式下,除了FCDP_COMMAND之外,對所有的寄存器都是能進行寫訪問。大部分外設內核的時鐘是無效的。
-僅NOR快閃記憶體模式操作FCDP_CLC寄存器中的外設時鐘已接通、運行模式使能(FCDP_MODE.RUN=「1」)並且NAND快閃記憶體操作被切斷(FCDP_MODE.NFEN=「0」)。在此模式下,對配置寄存器的寫訪問是不可能的。除了NAND快閃記憶體命令之外的FCDP命令能被寫入到FCDP_COMMAND寄存器中。內核的NAND快閃記憶體特殊部分的時鐘被切斷。
-完全操作FCDP_CLC寄存器中的外設時鐘已接通、運行模式被激活(FCDP_MODE.RUN=「1」)並且NAND快閃記憶體操作被啟動(FCDP_MODE.NFEN=「1」)。在此模式下,對配置寄存器的寫訪問是可能的。所有FCDP命令包括NAND快閃記憶體命令能被寫入到FCDP_COMMAND寄存器。
最後,在描述的示範實施例中的接口將在下文中更詳細地說明。
AHB從接口-支持傳輸尺寸32位-支持脈衝串尺寸單個、INCR4(FIFO只讀/寫)-支持傳輸響應對、錯。
AHB主接口-支持傳輸尺寸32位(對於某些NAND快閃記憶體訪問+16位)-支持脈衝串尺寸單個、INCR4-AHB萊特接口DMAC接口-支持對數據的脈衝串請求和「最後脈衝串」請求-單個傳輸能夠以同脈衝串傳輸一樣的方式由DMAC處理-支持對命令的單個請求-需要兩個獨立的用於數據和命令的DMA信道-所有DMA請求能夠象中斷一樣隨意被處理NAND快閃記憶體接口nand_flash_busy_n_i連結到快閃記憶體裝置的Ready/Busy_N輸出。此信號完全地異步處理。
調試接口調試接口允許FCDP的某些內部信號被監控。在裝置的監控插腳上對存取有用的這些信號在表3中列出。
表3監控信號
在下文中,我們將轉為對NAND快閃記憶體ECC寄存器的更加全面的描述。
FCDP_NFECCCONFIG寄存器可以指定是否通過NF_WR命令將主區域ECC和備用區域ECC寫入NAND快閃記憶體,以及是否通過NF_RD命令對它們進行檢測。主尺寸(MAINSIZE)欄位定義了一頁的主區域的大小,該頁必須是2的冪(32位字)。
FCDP_NFMECCPTR和FCDP_NFSECCPTR寄存器表示一頁中的主區域ECC和備用區域ECC的存儲位置。
用於ECC產生/檢測的備用區域在由FCDP_NFECCCONFIG.MAINSIZE定義的主區域之後立即開始,並且結束於由FCDP_NFSECCPTR定義的位置。必須使用軟體來保證此區域不超過32位元組(見圖9)。
FCDP_NFIECCPTR寄存器定義在一頁的備用區域中的16位字,該16位字不包括在ECC產生中。在示範實施例中,其中是不需要該特徵的,FCDP_NFIECCPTR能被設定為在有效頁尺寸之外的值。
當FCDP_NFSECCPTR和FCDP_NFIECCPTR必須和一個16位邊界對準時,FCDP_NFMECCPTR必須和一個32位地址邊界對準。
必須要記住的是,備用區域ECC必須跟隨其要保護的備用區域的一部分。
圖8示出了頁配置的一個實施例。陰影部分不包括在備用區域ECC計算中。
FCDP_NFMECCST和FCDP_NFSECCST寄存器各自表示主區域ECC和備用區域ECC。一旦寫命令(NF_WR)已經被完全執行,則兩個寄存器顯示從寫入頁數據中計算出的ECC。一旦讀命令(NF_RD)已經被完全執行,則兩個寄存器顯示ECC的結果,該ECC是由具有讀ECC的讀數據通過異或連接計算得到的。
如果檢測啟動並且結果不等於零,就產生相關聯的ECC錯誤中斷。此時,軟體能夠讀取ECC狀態寄存器以確定錯誤類型並初始化進一步的測量。ECC狀態寄存器的配置可以檢測其是否是可校正的錯誤(P8192..P1XORP8192..P1′),並且允許位錯誤的位置被有效讀取。
在ECC錯誤中斷結束之後,必須將刷新命令寫入命令寄存器,確認該錯誤。
下列表4到9應該和附圖10到15被一起閱讀(表4-圖10、表5-圖11、表6-圖12、等等)。上述最後提及的多個表和多個附圖提供了NAND快閃記憶體ECC寄存器的可視化的說明。
表4
表5
表6
表7
表8
表9
參考圖16到22,在下文中將更加具體地說明保護寄存器。
圖16用圖解法示出了保護機構。當指定的NAND快閃記憶體行地址(頁/塊地址)沒有位於由NAND快閃記憶體地址窗口寄存器(FCDP_NFADDRWIN1L、FCDP_NFADDRWIN1H、FCDP_NFADDRWIN2L和FCDP_NFADDRWIN2H)指定的地址區域中時,那麼下列NAND快閃記憶體命令與存儲在FCDP_NFPROTCMD寄存器中的保護命令列表CMD0……3進行比較。如果發現匹配,則輸出保護錯誤中斷,FCDP就停止。否則,NAND快閃記憶體命令有效,並且傳送到快閃記憶體裝置(見圖7)。
在NF_ADDR命令執行期間,在內部接收NAND快閃記憶體行地址。在所有的隨後的NF_CMD命令期間,保護機構使用該行地址,直到其他NF_ADDR命令指定新的行地址。因此,為保證保護機構的正確操作,在FCDP_NFPROTCMD寄存器中應該指定第二NAND快閃記憶體命令字節(兩字節命令周期)。
存在兩種可能的方式來切斷保護機構1.僅遮蔽在FCDP_NFPROTCMD寄存器中指定的命令(也就是說對NAND快閃記憶體裝置正在使用無效的命令字節)。
2.配置地址窗口寄存器以使其包括全部NAND快閃記憶體行地址區域。
CMD1「受保護命令」寄存器和用於第一保護電平N1的地址窗口寄存器(FCDP_NFADDRWIN1L和FCDP_NFADDRWIN1H)均由FCDP_NFPASSWD密碼寄存器保護。該密碼必須由在復位之後的對該寄存器進行的第一寫訪問所定義。每個具有相同密碼的隨後的寫訪問打開受保護的寄存器用於進行一次並且僅一次寫訪問。密碼寄存器的內容是不能被讀取的。
接下來結合圖17到22閱讀表10到15(表10-圖17、表11-圖18、表12-圖19、等等),表10到15分別提供了單個保護寄存器的更加詳細的概述。
表10
表11
需要注意的是,只有當使用FCDP_NFPASSWD密碼寄存器打開FCDP_NFPROTCMD寄存器時,才能夠對FCDP_NFPROTCMD寄存器進行修改。在寫訪問之後,該寄存器再次關閉。
表12
需要注意的是,只有當使用FCDP_NFPASSWD密碼寄存器打開FCDP_NFADDRWIN1L寄存器時,才能夠對FCDP_NFADDRWIN1L寄存器進行修改。在寫訪問之後,該寄存器再次關閉。
表13
需要注意的是,只有當使用FCDP_NFPASSWD密碼寄存器打開FCDP_NFADDRWIN1H寄存器時,才能夠對FCDP_NFADDRWIN1H寄存器進行修改。在寫訪問之後,該寄存器再次關閉。
表14
需要注意的是,FCDP_NFADDRWIN2L寄存器是不受密碼保護的。
表15
需要注意的是,FCDP_NFADDRWIN2H寄存器是不受密碼保護的。
權利要求
1.一種用於在存儲器之間傳輸數據的裝置,該裝置具有至少一個存儲器控制器,其特徵在於該裝置還具有存儲器協議控制器(MPC)。
2.如權利要求1所述裝置,其特徵在於存儲器控制器或多個存儲器控制器之一是直接存儲器存取控制器(DMAC)。
3.如前述權利要求之一的裝置,其特徵在於一個或多個存儲器控制器與存儲器協議控制器(MPC)是串聯連接的。
4.如前述權利要求之一的裝置,其特徵在於多個存儲器之一為易失性存儲器(VM)。
5.如權利要求4所述裝置,其特徵在於用於存儲器協議控制器(MPC)的命令序列為易失性存儲器(VM)中的命令列表的一部分。
6.如權利要求5所述裝置,其特徵在於一個不同的存儲器為非易失性存儲器(NVM),並且易失性存儲器(VM)中的命令列表包括用於存儲器協議控制器(MPC)的命令和用於非易失性存儲器(NVM)的另外命令。
7.如權利要求6所述裝置,其特徵在於該裝置被設計成將從易失性存儲器(VM)傳輸到非易失性存儲器(NVM)的數據存儲在易失性存儲器(VM)的分離列表中,和/或是在易失性存儲器(VM)中已經提及的命令列表的一部分。
8.如權利要求6或7所述裝置,其特徵在於該裝置具有直接存儲器存取控制器(DMAC)作為存儲器控制器,並且其中其被設計成來自已經提及的命令列表的命令由直接存儲器存取控制器(DMAC)傳輸到非易失性存儲器(NVM),存儲器協議控制器(MPC)僅解譯存儲器協議控制器命令(MPC命令),並且用於非易失性存儲器(NVM)的每個命令先於一個「輸出到非易失性存儲器(NVM)」命令,使得用於非易失性存儲器(NVM)的命令被傳送到非易失性存儲器(NVM)。
9.如權利要求8所述裝置,其特徵在於該裝置被設計成一旦存儲器協議控制器(MPC)執行一個命令,其在直接存儲器存取控制器(DMAC)的命令請求線上為下一命令傳遞一個請求,然後直接存儲器存取控制器(DMAC)從易失性存儲器(VM)中將下一命令傳送到存儲器協議控制器(MPC),並且持續該序列,直到直接存儲器存取控制器(DMAC)執行到命令列表的末端。
10.如權利要求9所述裝置,其特徵在於該裝置具有微處理器,並且被設計成為了發信號通知任務已經被完全執行完畢,直接存儲器存取控制器(DMAC)執行到所提及的命令列表的末端時,傳遞一個中斷信號給微處理器。
11.如權利要求10所述裝置,其特徵在於該裝置被設計成由微處理器啟動數據傳輸的開始,因為一旦所提及的易失性存儲器(VM)中的命令列表的設立處理已經完成,則微處理器在存儲器協議控制器(MPC)中設置一個「運行」位,並且因為在此之後,不需要任何進一步的微處理器控制,就可以進行數據傳輸處理,除非發生錯誤的情況。
12.如權利要求11所述裝置,其特徵在於該裝置被設計成由存儲器協議控制器(MPC)發信號通知微處理器發生錯誤情況,錯誤的原因和所執行的最後命令的地址由微處理器從狀態寄存器中讀出,並且所有進一步的請求被輸出到直接存儲器存取控制器(DMAC)。
13.如權利要求12所述裝置,其特徵在於該裝置被設計成由存儲器協議控制器(MPC)產生錯誤檢測代碼或者錯誤檢測代碼和錯誤校正代碼(ECC)。
14.如權利要求13所述裝置,其特徵在於該裝置被設計成,對於讀操作,存儲器協議控制器(MPC)將讀操作期間產生的錯誤檢測代碼與存儲在非易失性存儲器(NVM)中的錯誤檢測代碼相比較,並且在讀錯誤的情況下,存儲器協議控制器(MPC)執行其自身的校正,或觸發對微處理器的中斷。
15.如權利要求13或14所述裝置,其特徵在於該裝置被設計成,對於寫操作,存儲器協議控制器(MPC)產生錯誤校正代碼(ECC)並且將此錯誤校正代碼(ECC)寫入到非易失性存儲器裝置(NVM)中的預定點。
16.如權利要求6-15之一的裝置,其特徵在於至少一條控制線將存儲器協議控制器(MPC)直接連接到非易失性存儲器(NVM)。
17.如前述權利要求之一的裝置,其特徵在於裝置被設計成以數據包的形式進行傳輸數據。
18.如前述權利要求之一的裝置,其特徵在於存儲器協議控制器(MPC)中具有數據緩衝器。
19.如前述權利要求之一的裝置,其特徵在於存儲器協議控制器(MPC)被設計成執行用於寫和/或讀操作的數據壓縮和數據解壓縮。
20.如前述權利要求之一的裝置,其特徵在於與存儲器協議控制器(MPC)串聯連接的兩個存儲器控制器,該存儲器協議控制器(MPC)被布置在兩個存儲器控制器之間,其中一個存儲器控制器作為直接存儲器存取控制器(DMAC),並且另一個存儲控制器作為傳統的存儲器控制器。
全文摘要
本發明涉及一種用於在存儲器之間傳輸數據的裝置,該裝置包括存儲器控制器和存儲器協議控制器(MPC)。
文檔編號G06F13/20GK1947107SQ200480041072
公開日2007年4月11日 申請日期2004年12月15日 優先權日2004年1月30日
發明者J·巴斯託夫, M·格德克, P·馬爾拉 申請人:英飛凌科技股份公司