TWI444832B - 用於固態記憶體控制器之彈性定序器設計結構 - Google Patents
用於固態記憶體控制器之彈性定序器設計結構 Download PDFInfo
- Publication number
- TWI444832B TWI444832B TW097135781A TW97135781A TWI444832B TW I444832 B TWI444832 B TW I444832B TW 097135781 A TW097135781 A TW 097135781A TW 97135781 A TW97135781 A TW 97135781A TW I444832 B TWI444832 B TW I444832B
- Authority
- TW
- Taiwan
- Prior art keywords
- descriptor
- data
- firmware
- sequencer
- fifo
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
- Read Only Memory (AREA)
Description
本發明概略關於一種固態記憶體控制器,尤指用於固態記憶體控制器之定序器。
一種固態驅動器之效能及容量係根據存取固態記憶體裝置之平行性,例如快閃記憶體裝置。第一A圖例示用於控制存取到固態記憶體裝置之目前可用的系統。如所示,一快閃控制器101可透過在一側上一緩衝器103與一主機102通訊,並透過在另一側上的通道CH0-CH7與快閃記憶體裝置D0-D7通訊,其中每個通道專屬於一記憶體裝置。快閃記憶體裝置D0-D7可為NAND或 NOR快閃記憶體裝置。快閃控制器101可具有一ECC(錯誤修正碼,Error Correcting Code)區段1011、一格式化器1012、一快閃介面(I/F)控制器1013、及一定序器1014。ECC區段1011可修正在傳送通過之資料流中的錯誤,格式化器1012可轉換來自主機102之資料流的格式,以符合於快閃I/F控制器1013之需要,並轉換來自一快閃記憶體裝置之資料流的格式,以符合於主機102的需要,而快閃I/F控制器1013可為快閃控制器101與快閃記憶體裝置D0-D7之間的介面。韌體104可產生控制信號至快閃控制器101。定序器1014可接收來自韌體104之控制信號,並依此控制ECC區段1011、格式化器1012及快閃I/F控制器1013。
於快閃記憶體裝置D0的寫入作業期間,快閃控制器101可透過緩衝器103接收來自主機102的資料。在快閃控制器101中,來自主機102的資料可傳送通過ECC區段1011、格式化器1012及快閃I/F控制器1013,最後被傳送到一快閃記憶體裝置中一內部緩衝器。然後該資料可由該內部緩衝器移動至該快閃記憶體裝置。
第一B圖所示為在第一A圖中所示之系統中一寫入作業的波形。如所示,對於快閃記憶體裝置D0,資料在時間由t0到t1可由快閃控制器101傳輸到裝置D0中一內部緩衝器,並在時間由t1到t4時由該內部緩衝器移動到裝置D0。然後裝置D0可送出一確認,以代表該寫入作業已結束,所以下一個作業請求可開始處理。雖然主機102並未牽涉到該內部緩衝器與裝置D0之間的交易中,由t1到t4,主機102要到時間t4才能處理下一個作業請求。因為t1到t4的時段遠較時段t0到t1要長,其浪費許多主機時間。在一範例中,時段t0到t1與時段t1到t4之間的比例約為1:4。
於自快閃記憶體D0讀取資料的作業期間,所請求的資料可先由快閃記憶體裝置D0移動到其內部緩衝器。然後該資料可由快閃記憶體裝置D0的內部緩衝器轉移到快閃控制器101。在快閃控制器101中,該資料可傳送通過快閃I/F控制器1013、格式化器1012及ECC區段1011,最後經由緩衝器103被傳送到主機102。
第一C圖所示為在第一A圖中所示之系統中一讀取作業的波形。如所示,資料在時間t0到t3中由快閃記憶體裝置D0移動到其內部緩衝器,並可由該內部緩衝器轉移到該主機,其時間為t3到t4。再次地,主機102並未牽涉到裝置D0到其內部緩衝器之間的交易中,但主機102在t0到t3,或t4到t7期間不會做任何動作。因此,會浪費許多主機時間。
因此,其需要提供一種固態記憶體控制器,其可更為有效率地使用主機時間。
本發明可允許存取固態記憶體裝置時的最大平行化,而來自韌體的干擾降到最低。為了降低主機時間的浪費,多個快閃記憶體裝置可連接至每個通道。
一工作/描述器架構可用於藉由允許每個記憶體裝置獨立地運作來增加平行性。一工作可用於代表一讀取、寫入或抹除作業。當韌體想要指定一工作給一裝置時,其會發出一描述器,其中包含關於該目標通道、該目標裝置、作業種類等的資訊。該韌體可提供描述器,而不需要等待來自一記憶體裝置的回應,且可連續發出數個工作來形成一工作佇列。在該韌體結束程式化描述器之後,一定序器可處理該剩餘工作,所以該韌體可集中在其它工作。
該定序器可協助儘可能平行利用很多的快閃記憶體裝置,並有效地利用所有可用的頻寬。該定序器可檢查該目標通道及在該工作佇列最上方之描述器的目標裝置之可用性,並在當該描述器的目標記憶體裝置可以使用時立即發出該描述器。因為其不需要在發出一新描述器之前完成先前工作,可發出數個描述器,並只要該等目標裝置可以使用即平行地執行。該平行性可藉由適當地排序描述器而最大化。
由於該工作佇列,該韌體並不需要追蹤每個描述器之狀態。而是,該韌體可藉由設定一描述器的T-位元來將數個描述器置入到一單一軌跡中。例如,如果該韌體想要置入16個描述器到一單一軌跡中,其可設定第16個描述器之T-位元。該定序器在當完成一軌跡時可產生一中斷信號到該韌體,即當完成在該軌跡中的描述器中所定義的所有工作時。該韌體可程式化每個軌跡邊界的描述器,也亦可檢查在該軌跡邊界上已完成工作的狀態。為了增加頻寬,如果目標裝置為可用時即可平行地發出數個軌跡。
為了支援該軌跡架構,該定序器可收集每個工作之狀態在「軌跡狀態暫存器」中。一旦完成一軌跡及產生一中斷信號之後,該韌體可檢查該「軌跡狀態暫存器」以找出是否在已經失敗的軌跡中是否有任何工作。此外,該定序器可提供資訊,例如發出那些描述器、完成那一工作、那一工作在擱置中,所以該韌體可簡單地診斷並自錯誤中恢復。
第二A圖為根據本發明一具體實施例中用於控制存取到固態記憶體裝置之系統。如所示,一些快閃記憶體裝置可連接至每個通道。在一具體實施例中,這些快閃記憶體裝置D00、D01、D02及D03連接至通道CH0。一快閃控制器201可具有一定序器2014、一ECC區段2011、一格式化器(FM)2012及一快閃I/F控制器(FC)2013。定序器2014可耦合至在一側上的韌體(FW)204,並耦合至在另一側上的ECC區段2011、格式化器2012及快閃I/F控制器2013。
第二B圖所示為在第二A圖中所示之系統中寫入作業的波形。如所示,主機102在t0可開始傳送資料到快閃記憶體裝置D00之內部緩衝器。由t1到t2,當資料由快閃記憶體裝置D00之內部緩衝器移動到快閃記憶體裝置D00時,主機102可開始傳送資料到快閃記憶體裝置D01之內部緩衝器。由t2到t3,於到D00及D01之寫入作業結束之前,主機102可開始傳送資料到快閃記憶體裝置D02之內部緩衝器。由t3到t4,於到D00、D01及D02之寫入作業結束之前,主機102可開始傳送資料到快閃記憶體裝置D03之內部緩衝器。此時,主機102可開始一第二寫入作業到快閃記憶體裝置D00。因此,在一循環t0到t4期間,除了等待寫入作業到快閃記憶體裝置D00結束,主機102可執行寫入作業到快閃記憶體裝置D01、D02及D03,且主機時間的浪費可最小化。
第二C圖所示為在第二A圖中所示之系統中讀取作業的波形。快閃記憶體裝置D00至D04可接收來自主機102之讀取請求,並可在t0處開始分別移動所請求的資料到它們的內部緩衝器。對於快閃記憶體裝置D00,在t3到t4中所請求的資料可由其內部緩衝器傳送到主機102。對於快閃記憶體裝置D01,因為所請求的資料已經被移動到其內部緩衝器,由其內部緩衝器到主機102之資料傳送可開始於t4,其係立即在由快閃記憶體裝置D00之內部緩衝器到主機102之資料傳送已經結束之後。類似地,由快閃記憶體裝置D02之內部緩衝器之資料傳送可開始於t5,而由快閃記憶體裝置D03之內部緩衝器之資料傳送可開始於t6。
如第二A圖所示,彈性定序器2014可位在韌體204與ECC(RS/BCH)區段2011之間、格式化器2012與快閃I/F控制器2013之間,並處理其間的所有通訊,除了組態及狀態暫存器。
2.1作業邊界
一定序器可位在該實體領域與該邏輯領域中間,如第三圖所示。快閃裝置,如D00-D03、...、D70-D73,且它們的定址方式係基於該實體領域,而主機102的定址方式係基於該邏輯領域。因為該實體領域與該邏輯領域並未皆對準於該資料邊界,每個領域可具有其本身的作業單元,即一AU(分配單元,Allocation Unit),其用於該邏輯領域,及該實體領域的一實體頁面。
定序器2014之主要目的為對於該實體領域及該邏輯領域提供獨立的控制,所以每個領域可獨立地工作。在一具體實施例中,定序器2014可具有位在該邏輯領域中的一循環FIFO 2015及位在該實體領域中的一循環FIFO 2016。因此,該實體領域及該邏輯領域可由它們本身個別的FIFO獨立地控制。
韌體204可負責提供所有實體及邏輯資訊或參數,其用於藉由程式化該兩個FIFO來執行一特定作業。當韌體204皆填入邏輯FIFO 2015與實體FIFO 2016時,定序器2014可獨立地觸發兩個FIFO,所以邏輯方塊可開始在該AU邊界中的作業,而實體方塊可同時地開始在該實體頁面邊界中的作業。
2.1.1實體邊界
一描述器可定義一快閃裝置中一實體頁面的作業,例如D00-D03、D70-D73。該描述器可具有快閃I/F控制器2013之所有資訊,以存取一快閃裝置,例如目標通道號碼、目標裝置號碼、資料位址、作業種類等。
因為多個快閃裝置可平行利用,數個描述器可組合成一單一軌跡。一軌跡為該實體領域中平行化的基本單元。在一單一作業中的所有描述器可屬於相同種類的作業,例如PROG(程式)、READ及ERASE。一單一軌跡亦可為相同種類。PROG及READ不能夠混合在一單一軌跡內,但PROG及ERASE,或READ及ERASE可以混合在一單一軌跡內。在第二A圖中,因為有八個通道,且每個通道支援四個裝置,可以平行處理的快閃裝置之最高數目為32。因此,一單一軌跡可由最多32個描述器構成。
一快閃裝置可具有tR(結束一讀取作業的時間)/tPROG(結束一PROG作業的時間)及資料傳送時間之間的某個比例,其代表多個裝置可被初始化來補償長的tR/tPROG,並最大化效能。例如,第四圖所示為tPROG對資料傳輸時間的比例約為4:1。因此,可利用四個快閃裝置來保持資料流動,而不會延滯。
為了最佳化快閃裝置作業,多個現用軌跡可被支援,所以接下來的軌跡可被執行,而先前軌跡的一些描述器仍在擱置中,如第四圖所示。韌體204可藉由程式化MAX_ACT_TRK(允許的現用軌跡之最大數目)來改變現用軌跡的數目。
2.1.2邏輯邊界
來自主機102的使用者資料可在該AU邊界上處理,其為該ECC處理的基本單元。因為主機102使用LBA(邏輯區塊位址)處理在該邏輯領域中的資料,每個AU可具有一相對應LBA。藉由使用AUX FIFO 2015,韌體204可在寫入時附加LBA資料到一AU區塊,當利用讀取LBA擷取(AUX_D_CMP為清楚)將LBA資料與一AU區塊分離,或當利用讀取LBA比較(AUX_D_CMP被設定)時比較LBA資料與自一AU區塊分離者。除了LBA,其它輔助資料可使用AUX FIFO 2015與一AU區塊配合。
當韌體204寫入資料到一快閃裝置,韌體204可負責置入足夠的AUX資料到AUX FIFO 2015中來避免ECC延滯。在該ECC處理期間,ECC 2011可請求LBA資料,以及來自AUX FIFO 2015之AUX資料,且相對應LBA資料可附加至一AU區塊,並儲存在一快閃裝置中。
當韌體204自一快閃裝置讀取資料時,AUX FIFO 2015的行為根據AUX_D_CMP暫存器位元而不同。當AUX_D_CMP為清楚(LBA擷取),AUX FIFO 2015可填入LBA/AUX資料,其由定序器2014自一AU區塊分離。每當ECC 2011處理一AU區塊時,相對應LBA資料可被傳送到該定序器,並儲存在AUX FIFO 2015中。韌體204可藉由讀取來自AUX FIFO 2015的LBA資料決定該AUX區塊所屬的邏輯區域。另一方面,該LBA/AUX資料可自AUX FIFO 2015取得,並在當暫存器位元AUX_D_CMP被設定(LBA擷取)時被傳遞到ECC 2011。此資料可與自一AU區塊分離的LBA資訊來決定已處理一正確的AU區塊。
類似於在該實體領域中的軌跡邊界,在該邏輯領域中可有一區塊邊界。因為一區塊大小為32k位元組,一完整區塊由8個AU構成,而一個AU大小為4k位元組。其有可能韌體204可讀取整個區塊(完整讀取)或一區塊的某部份(部份讀取)。
當設定一行同位選項時,ECC 2011可在該區塊邊界處執行行編碼/解碼。
2.2定序器FIFO作業
如第三圖所示,定序器2014可位在韌體204與ECC(RS/BCH)2011、格式化器2012及快閃I/F控制器2013之間。定序器2014可處理其間的所有通訊。換言之,韌體204僅透過描述器、AUX資料與定序器2014互動然後中斷。快閃I/F控制器2013可在一定序器模式、一間接模式或一直接模式。
當快閃I/F控制器2013經組態在定序器模式中,定序器2014可支援以下的命令/作業:ERASE,PROG及READ。在間接模式與直接模式中有其它由快閃I/F控制器2013支援的命令。在該間接模式中,該韌體可發出任何命令位元組到裝置,而不使用該定序器,其提供更多的彈性來控制該等記憶體裝置。在該直接模式中,韌體204可負責程式化快閃I/F控制器2013中必要的暫存器(例如組態、觸發及檢查狀態),而定序器2014並未被牽涉。每個暫存器位元對應於每個快閃記憶體裝置控制信號,所以在直接模式中可提供最大彈性。
該定序器FIFO可具有之功能/責任:
A.提供實體描述器FIFO及邏輯AUX FIFO到韌體204(參見2.2.1節的「實體描述器FIFO」及2.2.2節的「邏輯AUX FIFO」)。
B.皆監視該實體領域及該邏輯領域中的FIFO及觸發作業,收集來自多個區塊的狀態,並依此中斷韌體204,而該韌體負責檢查硬體區塊中的狀態暫存器(參見2.2.1節的「實體描述器FIFO」及2.2.2節的「邏輯AUX FIFO」)。
C.擷取來自描述器的資訊,並傳送到相對應硬體區塊(參見2.2.3節的「描述器處理」)。
2.2.1實體描述器FIFO
實體描述器FIFO 2016可包含該實體領域中的描述器資訊,主要是快閃I/F控制器2013。兩個FIFO指標,PHY_WR_PTR及PHY_RD_PTR可被提供給韌體204,所以韌體204可寫入資料到實體描述器FIFO 2016及自其讀取資料。另一個指標PHY_EXE_PTR可提供給定序器2014來由實體描述器FIFO 2016分離描述器,並將它們傳送到快閃I/F控制器2013。一指標PHY_LTRK_PTR可指向到最後完成的軌跡之第一描述器處,並用於錯誤處理。
第五圖所示為實體描述器FIFO 2016的結構,其具有32個可使用描述器,且每個描述器有5個參數。假設每個單一軌跡具有16個描述器,此實體描述器FIFO 2016可同時支援最多兩個現用軌跡。如果一單一軌跡的大小小於16個描述器,可存在於實體描述器FIFO 2016中的軌跡數目可以增加。
韌體204與定序器2014皆可存取實體描述器FIFO 2016。為了支援運作中的描述器程式化(其中韌體204程式化新的描述器,而定序器204正在作業中),其可使用一2-埠SRAM(SR2),而一個埠可由韌體204存取,而另一個埠可由定序器2014存取。
實體描述器FIFO 2016可映射到一RAB(暫存器存取匯流排,register access bus)空間,且數個暫存器可被提供給韌體204來存取實體描述器FIFO 2016用於讀取及寫入作業。為了自實體描述器FIFO 2016讀取,韌體204可程式化PHY_RD_PTR,並自PHY_RD_DATA讀取FIFO資料。類似地,韌體204可寫入參數到PHY_WR_DATA中,藉以寫入描述器到實體描述器FIFO 2016中。如第六圖所示,每一個指標可用漸增的方式移動,並在當其到達實體描述器FIFO 2016的底部時移動到位置0,以支援該循環作業。
2.2.1.2實體描述器FIFO定義
一描述器可由5個子參數構成,因此一描述器可假設為無效,直到所有參數皆被寫入到實體描述器FIFO 2016中。韌體204與定序器2014之間的鎖定機制可由指標及計數器提供;且指標及計數器可以不增加,直到寫入最後參數。下表2-1列出在一描述器中的子參數及它們的定義。韌體204可藉由用以下順序寫入PHY_WR_DATA來寫入描述器到實體描述器FIFO 2016中。
1.FC_XF_COUNT[15:0]
2.FC_START_COL_ADDR[15:0]
3.FC_START_ROW_ADDR[15:0]
4.{FC_CH_NUM[3:0],FC_DES_TYPE[3:0],FC_START_ROW_ADDR[23:16]}
5.{FC_DEV_NUM[7:0],7'b0,TRACK}
計數器PHY_FIFO_CNT及PHY_DES_CNT在當韌體204結束寫入一個描述器時會自動增加1。當韌體204寫入一描述器之一個參數時,指標PHY_WR_PTR可增加1,並預備好下一個登錄項,且韌體204可保持寫入到PHY_WR_DATA來繼續插入後續的參數。指標PHY_WR_PTR在當韌體204結束寫入一個描述器時可增加5,因為一個描述器包含5個參數。
計數器PHY_FIFO_CNT指出在描述器FIFO 2016中有多少描述器,其中包括完成的描述器與擱置中描述器。描述器FIFO 2016最終將會填滿,除非該韌體清除完成的描述器,並釋出FIFO空間。當描述器FIFO 2016填滿時,由韌體204寫入的新描述器可被忽略,並可產生一可遮罩DES_FIFO_OVERFLOW中斷。韌體204可藉由清除描述器及釋出FIFO空間來維持描述器FIFO 2016。在完成一個軌跡並產生中斷之後,韌體204可讀取PHY_FIFO_CNT_CTRL來找出在最後軌跡中完成多少描述器,然後寫入一2補數值到PHY_FIFO_CNT_CTRL來釋出FIFO空間。計數器PHY_FIFO_CNT可減少相同數量。
計數器PHY_DES_CNT可指出在描述器FIFO 2016中等待被執行之描述器的數目。當韌體204寫入一新的描述器時其可遞增(例如增加1),並在當定序器2014執行一個描述器時遞減(例如減少1)。定序器2014在如果計數器PHY_DES_CNT不為0時可開始執行下一個描述器;當計數器PHY_DES_CNT到達0時延滯;並在當PHY_DES_CNT再次成為非零時藉由插入新的描述器來恢復作業。
當定序器2014藉由監視計數器PHY_DES_CNT而偵測到在描述器FIFO 2016中有描述器時,定序器2014可開始在PHY_EXE_PTR的位置處一個接一個分派參數,直到所有參數已經預備傳送到快閃I/F控制器2013。PHY_EXE_PTR當定序器2014分派參數時可增加1。
韌體204可藉由自PHY_RD_PTR指向的PHY_RD_DATA讀取資料來檢查描述器FIFO 2016的內容。PHY_RD_PTR在當韌體204自描述器FIFO 2016讀取一個參數值可增加1。
2.2.1.3描述器FIFO作業
第七A圖所示為根據本發明一具體實施例中在正常狀況下描述器FIFO作業的波形,而第七B圖所示為根據本發明一具體實施例中在錯誤狀況下描述器FIFO作業的波形。
一旦設定SEQ_ENABLE,定序器2014可依照被程式化的順序來執行描述器(第一個由PHY_EXE_PTR指向)。定序器2014在當FC_RDY被設定直到計數器PHY_DES_CNT到達0或現用軌跡的數目到達2(或是韌體204組態在MAX_ACT_TRK的數目)時維持傳送描述器到快閃I/F控制器2013。
為了回報狀態,TRACK_DONE及TRACK_ERR可組態成中斷。一旦在快閃I/F控制器2013中完成一軌跡及偵測到TRACK_DONE中斷,定序器2014可產生一中斷,而相對應的狀態暫存器TRK_STAT及PHY_LTRK_PTR被移動到完成的軌跡之第一個描述器。TRK_STAT可被初始化為「FFFF」,假設在該軌跡中所有的描述器預設為失敗,並由FC_DES_DONE信號所更新。
如果需要,韌體204可藉由設定PHY_RD_PTR到PHY_LTRK_PTR的位置來查詢在完成軌跡中的描述器,並自PHY_RD_DATA讀取資料。
韌體204可藉由重置SEQ_ENABLE而在任何時間停止定序器2014的作業。ECC 2011及韌體204可被除能,且信號可被傳送到快閃I/F控制器2013來中止在快閃I/F控制器2013中任何擱置中的工作。
2.2.2邏輯AUX FIFO
為了提供更多的資料結構彈性,該AU的大小可定義成與該快閃裝置的實體頁面之大小不相同。換言之,該邏輯領域並不需要對準於該實體領域,且一LBA與實體區塊位址(PBA,“Physical block address”)之間的映射並非一對一。因此,一邏輯AUX FIFO 2015會需要儲存LBA資料以及AUX資料來執行一非對準的資料傳輸。
2.2.2.1 AUX FIFO的結構
第八圖為根據本發明一具體實施例的一AUX FIFO 2015之結構。AUX_D_MODE可被設定到2或3,且一個AUX資料可包含兩個FIFO登錄項。如果AUX_D_MODE設定為1,每個AUX資料可包含一個FIFO登錄項。
因為韌體204與定序器2014皆可存取AUX FIFO 2015,AUX FIFO 2015可使用一2-埠SRAM(SR2)來支援運作中之程式化,如同在描述器FIFO 2016中,所以韌體204可經由一個埠存取,而定序器2014可同時經由另一埠存取。
有三個FIFO指標-CPU_PTR用於韌體讀取/寫入、ECC_PTR用於ECC讀取/寫入、及AUX_DBG_PTR用於偵錯。指標可被隱藏,而韌體204可以不存取那些指標,除了指標AUX_DBG_PTR之外。指標在每當該韌體存取對應於每個指標的資料時即增加1,並在當到達AUX FIFO 2015底部時移動到位置0來支援循環FIFO方案,如第六圖所示。
AUX FIFO 2015亦可映射到暫存器存取匯流排(RAB,“Register access bus”)空間,所以該韌體可藉由程式化及讀取暫存器來寫入及讀取FIFO資料。韌體204可藉由寫入資料到AUX_WDATA來寫入AUX資料到AUX FIFO 2015中,並藉由讀取AUX_RDATA來讀取AUX資料。對於偵錯,該韌體可移動到一指標AUX_DBG_PTR到一所要的位置,並藉由讀取AUX_DBG_DATA自AUX FIFO 2015讀取AUX資料。
2.2.2.2 AUX FIFO定義
AUX資料的一單一部份之定義可根據AUX_D_MODE暫存器設定而不同。當AUX_D_MODE暫存器設定為1時,一AUX資料可對應至一FIFO登錄項。另一方面,如果AUX_D_MODE暫存器被設定為2或3時,AUX資料的一部份可由兩個FIFO登錄項組成。因此,AUX資料可被假設無效,直到MSB(最高有效位元,Most signifiant bit)及LSB(最低有效位元,Least significant bit)被寫入到FIFO中。
其可有一內部計數器提供該鎖定機制,其在當AUX資料的一部份被寫入到AUX FIFO 2015中時可增加1,在當AUX資料自AUX FIFO 2015讀取時可減1。類似地,該內部計數器可偵測AUX FIFO 2015的溢位或下溢,並產生韌體204之可遮罩的AUX_FIFO_OVERFLOW及AUX_FIFO_UNDERFLOW中斷。韌體204可清除AUX FIFO 2015,並在當發生溢位或下溢時恢復FIFO內容。
暫存器AUX_WDATA及AUX_RDATA可提供存取到AUX FIFO 2015。當該韌體寫入資料到AUX FIFO 2015中時,被寫入AUX_WDATA暫存器之LBA資料可被儲存到由指標CPU_PTR指向的AUX FIFO 2015之位置中。指標CPU_PTR在當韌體204寫入一個LBA資料時可遞增(例如增加1),因此AUX FIFO 2015可預備好接受下一個LBA資料。定序器2014可藉由使用專屬於該ECC模組之指標ECC_PTR自AUX FIFO 2015取得LBA資料。另一方面,當韌體204自AUX FIFO 2015讀取資料時,自該AU分離的LBA資料可被儲存到由ECC_PTR指向的位置處AUX FIFO 2015當中。韌體204可藉由讀取AUX_RDATA來讀取LBA資料。指標CPU_PTR在當韌體自AUX_RDATA讀取資料時可遞增(如增加1)。
該韌體藉由設定指標AUX_DBG_PTR及自AUX_DBG_DATA讀取資料來檢查AUX FIFO 2015的內容。指標AUX_DBG_PTR在當AUX_DBG_DATA被讀取時可遞增(例如增加1)。
2.2.2.3 AUX FIFO作業
AUX FIFO 2015的目的為READ或PROG作業期間支援LBA資料及與ECC 2011之AUX資料交易。在一PROG作業期間,當編碼一新的AU時,ECC 2011可請求LBA資料(或AUX資料)。定序器2014可藉由自AUX FIFO 2015分派LBA資料及傳送該LBA資料到ECC 2011來接受ECC請求,。當資料對於一READ作業來處理時,ECC 2011可自每個AU分離LBA資料,並將它們傳送到定序器2014(在LBA擷取模式中),或比較它們與所提供的LBA資料(在LBA比較模式中)。在一LBA擷取模式中,定序器2014可儲存該LBA資料到AUX FIFO 2015中,所以韌體204可查詢那些資料,並決定該特定AU屬於那一個LBA區域。
如果來自AUX FIFO 2015之LBA資料與自AU資料擷取的LBA資料之間的不匹配於利用LBA比較之READ作業期間被偵測到時,EC_FAIL中斷可由定序器2014產生。韌體204可查詢ECC 2011的狀態暫存器來決定已發生那一個錯誤。
第九A圖、第九B圖、第九C圖及第九D圖為透過定序器2014與ECC 2011之間一介面傳輸的LBA資料。
韌體204可負責維護該AUX FIFO資料。在利用LBA比較的PROG作業或READ作業中,韌體204在事先預備所有需要的LBA資料,而小心地不要超過所給定的AUX FIFO空間。ECC 2011不會進行AU編碼,除非相對應LBA資料在AUX FIFO 2015中準備。
類似地,在利用LBA擷取的READ作業中,韌體204可及時地自AUX FIFO 2015讀取LBA資料,所以指標CPU_PTR繼續跟隨指標ECC_PTR。如果該韌體無法及時讀取LBA資料,AUX FIFO 2015會溢位,且可產生一AUX_FIFO_OVERFLOW中斷。
2.2.3描述器處理
因為韌體204、ECC 2011及快閃I/F控制器2013執行不同的功能,並非所有在描述器中提供的資訊皆相關於所有區塊。定序器2014可假設來擷取相關資訊,並傳送到相對應區塊。表2-2顯示由該定序器解析資訊到多種區塊。
2.3定序器之間的介面/協定
2.3.1定序器與韌體之間的介面
定序器2014與韌體204之間的介面可以最佳地藉由一組可程式化配置暫存器與在定序器暫存器中指定的狀態暫存器來描述。在2.2節中所述的定序器FIFO作業及定序器2014與韌體204之間的通訊將在2.5.1節中說明。
2.3.2定序器與FM之間的介面
定序器2014與韌體204之間的介面/協定例示於表2-3。
2.3.3定序器與ECC之間的介面
ECC可以不直接與AUX FIFO 2015通訊;而是,定序器2014可由AUX FIFO 2015讀取,並經由表2-4中所述之介面剖析AUX資料到ECC 2011。
第九A圖所示為當處理四個AU並寫入到快閃裝置時一PROG作業之時序。XO_DEC0_ENC1可在ECC2011由設定XO_EC_ENABLE致能之前被確立。XO_SEQ_LBA_DATA[31:0]及XO_LAST_AU在當確立XO_START_AU時應有效。因為AU係依序處理,XO_START_AU可以不產生,直到先前的XO_START_AU之XI_AU_RCV_DONE自ECC 2011接收為止。
第九B圖所示為利用LBA比較的READ作業之波形。該等波形係類似於PROG作業的波形,因為LBA(或AUX)資料由AUX FIFO 2015提取,並傳送到ECC 2011來比較自一AU分離的LBA資料。XO_DEC0_ENC1及XO_AUX_D_CMP皆在ECC由設定XO_EC_ENABLE被致能之前被確立。
相反地,如第九C圖所示之利用LBA擷取的READ作業可以不同於上述兩個例子。在此例中,LBA(或AUX)資料可由ECC 2011自一AU擷取,並與XI_AU_DONE一起傳遞到定序器2014。XI_EC_LBA_DATA[31:0]在當設定XI_AU_DONE時應為有效,所以定序器2014可閂鎖該資料。在利用LBA比較的READ作業中,XO_DEC0_ENC1及XO_AUX_D_CMP皆可在致能ECC 2011之前被確立。
第九D圖所示當解碼失敗及ECC 2011產生信號時的波形。因為XI_AU_DONE及XI_DEC_FAIL可為互斥,XI_AU_DONE於發生XI_DEC_FAIL時並不會產生。只要韌體204偵測到一EC_FAIL中斷時,SEQ_ENABLE應被反確立來中止/除能定序器2014、ECC 2011、格式化器2012及快閃I/F控制器2013中任何擱置中的作業。SEQ_ENABLE不會自動地關閉。韌體204可進行到2.5.3節中所述的錯誤處理。
2.3.4定序器與快閃I/F控制器之間的介面
快閃I/F控制器2013不會直接與描述器FIFO 2016通訊。而是,定序器2014可自描述器FIFO 2016讀取,並透過表2-5中所述的介面剖析所有必要的資訊到快閃I/F控制器2013。
再者,定序器2014不會直接與每個通道通訊。快閃I/F控制器2013可由一描述器擷取FC_CH_NUM,並將其導向到適當的通道。
因為定序器2014與快閃I/F控制器2013之間的FC_PARAM[15:0]的描述器匯流排為16位元寬,而一描述器為80位元長,一描述器可被分成5個子參數,並在5個fc_clk循環傳送到快閃I/F控制器2013。該參數順序的一具體實施例顯示如下。
A.第一參數[15:0]=FC_XF_CNT[15:0]
B.第二參數[15:0]=FC_START COL_ADDR[15:0]
B.第三參數[15:0]FC_START_ROW_ADDR[15:0]
D.第四參數[15:0]={FC_CH_NUM[3:0],FC_DES_TYPB[3:0],FC_START_ROW_ADDR[23:16]}
E.第五參數[5:0]=(FC_DEV_NUM[7:0],FC_DES_ID[7:0]}
所有介面信號可屬於一fc_clk領域。FC_DES_ID[7:0]不會由韌體204指定,但可使用PHY_EXE_PTR由定序器2014指定。其可用於快閃I/F控制器中來在不同描述器之間區分。
第十A圖所示為定序器2014與快閃I/F控制器2013之間的介面處的波形。如所示,一描述器可被分成5個子參數,並傳送到快閃I/F控制器2013。第十B圖所示為來自快閃I/F控制器2013之狀態回報的時序。快閃I/F控制器2013可依相同順序回報描述器狀態,其中可接收到描述器,其代表不允許非順序化的狀態報告。FC_DES_ID[7:0]信號可由快閃I/F控制器2013連同FC_DES_DONE確立,以指明完成的描述器之ID,但定序器2014不會皆需要該資訊。
第十C圖所示為該快閃I/F控制器中止請求的時序。
2.4定序器的設計架構
定序器2014可包括描述器FIFO 2016與AUX FIFO 2015之記憶體,狀態機器來控制實體與邏輯介面,並及不同時脈領域之間的介面之同步化邏輯,以及其它元件。
2.4.1時脈方案
定序器2014可填入四個不同時脈信號-rab_clk、sqcr_clk、fc_clk及ecc_clk,以提供快閃I/F控制器2013、格式化器2012及ECC 2011之同步化的交握介面信號。第十一圖所示為根據本發明一具體實施例的一定序器時脈領域。
2.4.1.1 sqcr_clk
時脈sqcr_clk可以同步於rab_clk,且不需要sqcr_clk領域與rab_clk領域之間的同步化邏輯。所有定序器暫存器可由時脈信號rab_clk或sqcr_clk來計時,所以它們可利用該RAB匯流排讀取或寫入。Sqcr_clk時脈信號可具有來自rab_clk時脈的個別時脈致能邏輯,因為它們必須被獨立地致能,該時脈sqcr_clk可在當除能時脈rab_clk時來運行,或反之亦然。
2.4.1.2 fc_clk
Fc_clk為快閃I/F控制器2013之時脈信號。此時脈信號的目的為支援定序器2014與快閃/IF控制器2013之間的同步化,大部份係用於該實體描述器交握信號。當定序器2014發出一新的描述器到快閃I/F控制器2013時,像是FC_SET_DES或FC_SEND_STATUS的介面信號可在sqcr_clk領域中產生,但同步於fc_clk領域,所以快閃I/F控制器2013可與定序器2014通訊,而不需要在快閃/IF控制器2013一側上同步化。類似地,當定序器2014自快閃I/F控制器2013接收一描述器狀態,該狀態及其它信號可在fc_clk領域中傳遞,及定序器2014可處理掉同步化問題。
某些信號,像是FC_PARAM[15:0]可在sqcr_clk領域中,即使它們係在fc_clk領域中使用,但其可由定序器2014保證那些信號在當由快閃I/F控制器2013使用時可以是穩定的。
所有的fc_clk領域信號係連接至快閃I/F控制器2013,除了FM_FC_SRESET_N之外,其係連接至格式化器2012用於該重置處理。
2.4.1.3 ecc_clk
因為實體描述器相關的信號係同步於fc_clk領域,邏輯AUX資料及其控制信號可由時脈ecc_clk同步來與ECC 2011通訊。AUX資料及交握信號可在sqcr_clk領域中產生,但在當該AUX資料傳送到ECC 2011時其被傳送到ECC 2011之前同步化於ecc_clk領域,且它們可在ecc_clk領域中接收,並在當AUX資料自ECC 2011接收時被同步化於sqcr_clk領域。
某些信號,像是XO_SEQ_LBA_DATA[31:0]可以是在sqcr_clk領域中,但其可由定序器2014保證那些信號在當由ECC 2011使用時為穩定。
除了該等ECC介面信號之外,韌體204之FM_ENABLE信號亦可同步於時脈ecc_clk。
2.4.2記憶體結構
兩個2-埠SRAM可被提供給該定序器作業,一個用於實體描述器FIFO 2015,而另一個用於邏輯AUX FIFO 2016。該韌體可使用一個埠自FIFO讀取資料,或寫入資料到FIFO,而定序器2014可使用另一個埠存取資料。AUX FIFO 2015可由ECC 2011使用,而描述器FIFO 2016可由快閃I/F控制器2013使用。
每個SRAM可具有16位元資料寬度及160個資料登錄項,造成一320位元組的SRAM記憶體大小。一循環FIFO方案可用於該等FIFO,所以資料可用循環的方式藉由一旦其到達底部時即倒回該指標到最上方進行讀取或寫入。
FIFO可協同於它們的封裝資料來控制該FIFO資料輸入/輸出作業。一FIFO封裝資料可維護一讀取/寫入指標以及資料計數,以指示要放置在該FIFO中的資料數目。但是,一FIFO封裝資料並無法保護溢位或下溢,但僅可產生溢位/下溢中斷到韌體204成為AUX_FIFO_UNDERFLOW,AUX_FIFO_OVERFLOW,及DES_FIFO_OVERFLOW而允許資料訛誤。因此韌體204可注意避免任何狀況下的資料溢位/下溢,並在當發生那些中斷時執行清除及恢復程序。
2.4.2.1 AUX FIFO
第十二圖為根據本發明一具體實施例的一AUX FIFO之架構。如所示,AUX FIFO 2015可具有三個指標-cpu_ptr、ecc_ptr及dbg_ptr,及一計數器aux_fifo_cnt。
指標cpu_ptr可由韌體204用於AUX資料讀取/寫入。當韌體204利用AUX_RDATA讀取一AUX資料,或利用AUX_WDATA寫入一AUX資料,指標cpu_ptr可自動地遞增(例如增加1),並指向到下一個登錄項位置,所以韌體204並不需要由其本身來控制指標cpu_ptr。
另一方面,指標ecc_ptr可由定序器2014使用,其可讀取AUX資料並將其提供給ECC 2011,或寫入自ECC 2011傳送的AUX資料。指標ecc_ptr在當定序器2014讀取或寫入一個AUX資料時亦遞增(例如增加1)。
指標dbg_ptr可由該韌體使用來查詢該FIFO資料的內容用於偵錯的目的。該韌體可藉由程式化AUX_DBG_PTR來任意移動指標dbg_ptr,自AUX_DBG_DATA讀取由該指標指向的資料,並繼續自動地讀取被遞增之dbg_ptr(例如增加1)。該等指標cpu_ptr及ecc_ptr可被隱藏到該韌體,且僅由一定序器邏輯控制,而指標dbg_ptr係在該韌體控制之下,並可依該韌體需要來移動。
計數器aux_fifo_cnt可指明在AUX FIFO 2015中AUX資料的數量。因為AUX資料的一部份可包含兩個FIFO資料登錄項,aux_fifo_cnt值在當2 FIFO登錄項(一AUX資料)被推入或爆出時可改變。Aux_fifo_cnt數值根據不同資料模式可以增加或減少-韌體204可在利用LBA比較的寫入模式或讀取模式中推入AUX資料進入AUX FIFO 2015中(AUX_D_CMP被設定),且定序器2014可在利用LBA擷取的讀取模式中推入AUX資料到AUX FIFO 2015中(AUX_D_CMP被清除)。
該模式由該初始條件決定韌體204是否先填入AUX FIFO 2015,或定序器2014先填入AUX FIFO 2015。當AUX FIFO 2015為空白(aux_fifo_cnt為0)且該韌體開始填入該資料到AUX FIFO 2015中,該模式固定於「韌體推入模式」。然後指標aux_fifo_cnt在當韌體204推入資料時遞增(例如增加1),並在當定序器2014爆出資料時遞減(例如減少1)。如果在「韌體推入模式」中韌體204爆出資料或定序器2014推入資料,定序器2014可失去作用。
類似地,當AUX FIFO 2015為空白,且定序器2014開始置入資料到AUX FIFO 2015中時,該模式可被設定為「韌體爆出模式」。計數器aux_fifo_cnt在當定序器2014推入AUX資料時遞增(例如增加1),並在當韌體204爆出資料時遞減(例如減少1)。該模式可在一旦計數器aux_fifo_cnt成為0時被釋放,並可根據係那一個開始推入資料而設定至下一個模式。
2.4.2.2描述器FIFO
描述器FIFO 2016可具有四個指標:wr_ptr、rd_ptr、exe_ptr及ltrk_ptr,及兩個計數器phy_fifo_cnt及phy_des_cnt。第十三圖所示為根據本發明一具體實施例的描述器FIFO指標。
韌體204可利用指標wr_ptr寫入描述器,而利用指標rd_ptr讀取描述器。每當韌體204寫入一參數(一描述器包含5個參數)到PHY_WR_DATA,指標wr_ptr可遞增(例如增加1),並預備好插入下一個參數。同時,當韌體204自PHY_RD_DATA讀取一參數,指標rd_ptr可遞增(例如增加1),並指向到要被讀取的下一個參數位置。Wr_ptr及rd_ptr皆可利用PHY_WR_PTR及PHY_RD_PTR由該韌體讀取,但僅rd_ptr可由該韌體移動。
該指標exe_ptr可由定序器204使用來提取一描述器,並將其傳送到快閃I/F控制器2013。於該描述器傳輸程序期間,定序器2014可由描述器FIFO 2016提取5個描述器參數,並構成一完整長度的描述器在暫時閂鎖器或正反器中。正如wr_ptr及rd_ptr,exe_ptr在當該定序器已經由FIFO提取一個參數時可自動地遞增(例如增加1)。指標exe_ptr亦可利用PHY_EXE_PTR為韌體所見。
指標ltrk_ptr可指向到屬於最新完成的軌跡的一第一描述器之第一參數。因此此指標在每當完成一軌跡時可被移動到下一個位置。韌體204在當偵錯時藉由移動rd_ptr到相同位置時而利用此指標做為ltrk_ptr,其可於PHY_LTRK_PTR處讀取。
計數器phy_des_cnt可指明在描述器FIFO 2016中「剩餘」描述器的數目。因為一描述器可包含5個FIFO資料登錄項,phy_des_cnt數值在當推入或爆出5個參數(一描述器)時可以改變。計數器phy_des_cnt在當韌體204寫入一個描述器時可遞增(例如增加1),並在當定序器2014提取並傳送一描述器到快閃I/F控制器2013時遞減(例如減少1)。該韌體可利用計數器PHY_DES_CNT讀取phy_des_cnt數值。
計數器phy-fifo-cnt可指明描述器FIFO 2016中所有描述器的數目,包括已完成者。當韌體204推入一個描述器到描述器FIFO 2016時自動地遞增(如增加1),但其不會遞減,除非韌體204手動地減少該計數器。一旦一軌跡在快閃I/F控制器2013中完成,並產生一TRACK_DONE中斷,該韌體可藉在該已完成軌跡中描述器的數目將計數器PHY_FIFO_CNT減少。該韌體可藉由讀取計數器PHY_FIFO_CNT_CTRL來找出最新完成的軌跡之描述器的數目,並可應用否定數目來減少PHY_FIFO_CNT相同數量。描述器FIFO溢位中斷可由phy_fifo_cnt引動,而非phy_des_cnt。
2.4.3重置/中止方案
在三種不同狀況中,定序器2014可執行一軟重置,並重置/除能ECC 2011、格式化器2012或快閃I/F控制器2013。該等模組之間的重置/中止行為及協定可根據即時的狀況,但組態暫存器及狀態暫存器數值可維持相同,所以該韌體並不需要對於新的作業重新程式化那些數值。用於重置/中止及相對應行為之三種不同狀況顯示如下。
2.4.3.1當SEQ_ENABLE暫存器位元開啟時
當該韌體寫入1到SEQ_ENABLE暫存器位元來開始該定序器作業時,定序器2014可重置其本身及其它次模組(ECC 2011、格式化器2012及快閃I/F控制器2013)來清除它們。定序器2014藉由在開始新的作業時重置每樣事物來保證在一乾淨及已知的狀態下開始一新的作業,即使其係在錯誤或未知的狀態下。只要確立SEQ_ENABLE,定序器2014僅利用組態暫存器的異常來重置其狀態機器及所有其它邏輯,例如FIFO或FIFO封裝資料。軟重置信號-XO_SEQ_SRESET_N及FM_FC_SRESET_N亦可被確立於ECC 2011及格式化器2012來重置它們的狀態,並可在重置程序期間保持在高態,且FC_DES_ABORT可被傳送到快閃I/F控制器2013來中止任何擱置中的工作,並清除該狀態。
一SEQ_BUSY暫存器位元可被設定來代表定序器2014可執行一重置作業,並維持高態,直到FC_RDY由快閃I/F控制器2013設定。該重置程序可被假設為繼續,直到快閃I/F控制器2013重置完成,因為快閃I/F控制器2013可能耗用最長的時間來重置其邏輯。一旦FC_RDY由快閃I/F控制器2013設定,同時到ECC 2011及格式化器2012之軟重置信號可被反確立,且SEQ_BUSY暫存器位元可進行。韌體204可在當SEQ_BUSY被設定時可以寫入描述器及/或AUX資料,但該作業將不會開始,直到SEQ_BUSY位元被關閉。
2.4.3.2當SEQ_ENABLE暫存器位元關閉時
韌體204在當該作業完成時(藉由接收一OP_DONE中斷)或發生一錯誤時可關閉一SEQ_ENABLE暫存器位元。該實體狀態機器及該邏輯狀態機器皆可被重置成一清除狀態,並除能ECC 2011及格式化器2012。但是,該FIFO及FIFO封裝資料狀態並未重置,且韌體204可取得資料及指標資訊來執行所需要的檢查。ECC 2011及格式化器2012可被除能但並未重置,所以它們的狀態對於該韌體可維持。相反地,FC_DES_ABORT可被傳送到快閃I/F控制器2013來中止任何擱置中工作並清除該狀態,其代表快閃I/F控制器2013將不會保留任何狀態或資訊。
類似於當SEQ_ENABLE位元被開啟時,SEQ_BUSY位元在當FC_DES_ABORT位元被設定時被開啟,而在FC_RDY位元被再次設定時被關閉。當SEQ_BUSY位元被開啟時,韌體204不會進行任何改變,除了定序器2014的組態暫存器之外。
一軌跡狀態暫存器在當SEQ_ENABLE位元被關閉時可更新,且韌體204可具有目前軌跡狀態,而定序器2014藉由讀取TRK_STAT來除能。如果韌體204想要檢查最後完成軌跡之狀態,TRK_STAT在SEQ_ENABLE被關閉之前可被讀取。
第十四圖為當SEQ_ENABLE確立及反確立控制重置/中止/致能信號到次模組時之波形。
2.4.3.3當SEQ_RESET暫存器位元被設定時
當韌體204寫入1到一SEQ_RESET位元時,所有資訊及狀態異常組態暫存器可在定序器2014、ECC 2011及格式化器2012及快閃I/F控制器2013上被清除,且它們將為初始狀態下。定序器2014可重置所有邏輯,包括FIFO、FIFO封裝資料及狀態機器,並傳送軟重置信號_XO_SEQ_SRESET_N及FM_FC_SRESET_N到ECC 2011及格式化器2012。ECC 2011及格式化器2012之軟重置信號可保持高態,直到該重置程序完成。一FC_DES_ABORT亦可傳送到快閃I/F控制器2013來中止擱置中工作。SEQ_BUSY暫存器位元於整個重置程序期間可開啟,而當FC_RDY被快閃I/F控制器2013設定時被關閉。韌體204可等待直到SEQ_BUSY於恢復任何作業之前被關閉。
一SEQ_ENABLE位元如果其先前為開啟時即被關閉,而SEQ_RESET位元亦可在下一個時脈循環自動關閉。
第十五圖為當SEQ_RESET位元被確立時,及重置/中止/致能信號到次模組如何受到影響時的波形。在此例中,快閃I/F控制器2013係在閒置狀態中,所以FC_RDY不會到低態,且該定序器重置在當SEQ_ENABLE被確立時可消耗較短的時間。
2.4.4資料流
定序器2014不會直接有關於主機102與快閃裝置之間的使用者資料流,但其可具有其本身的資料流來控制次模組,特別是如第三圖所示的ECC 2011與快閃控制器2013。其可有兩個資料路徑:一個是在該邏輯領域而另一個是在該實體領域。那兩個資料路徑可以彼此獨立,並可分別由該ECC介面信號(邏輯領域)或快閃I/F控制器介面信號(實體領域)所控制。
在該邏輯領域中,AUX資料可傳送到/從ECC 2011,以支援邏輯位址資訊或任何關於一AU的輔助資料。定序器2014自AUX FIFO 2015提取AUX資料,並在利用LBA比較(AUX_D_CMP被設定)之寫入模式或讀取模式下將它們連同XO_START_AU傳送到ECC 2011。下一個AUX資料及XO_START_AU信號於自ECC 2011接收到XI_AU_RCV_DONE之後被傳送到ECC 2011。因此XO_START_AU及XI_AU_RCV_DONE信號形成一交握介面。定序器2014可繼續傳送AUX資料,直到在AU_LOOP_CNT暫存器中程式化的所有AUX資料被傳送到ECC 2011。
在利用LBA擷取(AUX_D_CMP被設定)之讀取模式中,自AU區塊擷取的AUX資料連同XI_AU_DONE被接收。定序器2014可儲存接收的AUX資料到AUX FIFO 2015中,且韌體204藉由讀取AUX_RDATA暫存器而具有該資訊。
類似地,描述器可傳送到該實體領域中的快閃I/F控制器,並定義每個快閃裝置之作業。該快閃I/F控制器介面亦可具有一交握介面用於傳送描述器及接收狀態。定序器2014可檢查來自該快閃1/F控制器之FC_RDY信號,並利用FC_SET_DES信號傳送描述器。FC_RDY可對於定序器2014再次設定來傳送下一個描述器。依同樣方式,定序器2014可設定一FC_SEND_STATUS信號來允許快閃I/F控制器2013傳送FC_DES_DONE及FC_DES_STATUS信號。
2.4.5狀態機器
定序器狀態機器可落在兩種類別中。AUX狀態機器可處理ECC介面信號來控制該邏輯領域中的資料流,且PHY狀態機器可處理快閃I/F控制器介面信號來控制描述器傳送到快閃I/F控制器2013。在每個領域中可有兩個狀態機器,因為傳送資料與接收資料可同時發生,且需要個別狀態機器來控制傳輸(TX)/接收(RX)。所有該等介面信號可在sqcr_clk領域中產生及使用,而無關於它們的目標或來源時脈領域,因此同步化在該信號產生之後(如果該等信號被傳送到次模組)或在信號使用之前(如果該等信號由次模組傳送)而需要。
每個狀態機器之詳細資訊顯示如下。
2.4.5.1 邏輯領域狀態機器
邏輯領域介面信號可由兩個獨立的AUX狀態機器所控制。一TX狀態機器可控制AUX資料由定序器2014傳送到ECC 2011以及XO_START_AU及XI_AU_RCV_DONE信號。另一方面,一RX狀態機器可控制AUX資料由ECC 2011傳送到定序器2014及XI_AU_DONE信號。因為它們由獨立的狀態機器控制,XO_START_AU及XI_AU_DONE可同時被支援。
第十六圖為根據本發明一具體實施例中包括每個狀態機器之轉換條件及行為之詳細的狀態機器圖。如所示,該等TX轉換條件可包括:
‧c1:一第一描述器被提取及(AND)描述器種類為READ或PROG(AND)AUX_D_MODE並非0(AND)(利用AUX比較之寫入模式或(OR)讀取模式)
‧c2:一第一描述器被取出(AND)描述器種類為READ或PROG(AND)(AUX_D_MODE為0(OR)利用AUX擷取之讀取模式)
‧c3:AUX FIFO並非空的
‧c4:所需要的AUX資料自FIFO提取
‧c5:XI_AU_RCV_DONE被接收(AND)所有AUX資料被傳送
‧c6:XL_AU_RCV_DONE被接收(AND)AUX資料維持(AND)(AUX_D_MODE為0(OR)利用AUX擷取之讀取模式)
‧c7:XI_AU_RCV_DONE被接收(AND)AUX資料維持(AND)AUX_D_MODE並非0(AND)(利用AUX比較之寫入模式(OR)讀取模式)
‧c8:定序器作業完成
‧XI_DEC_FAIL:當接收到XI_DEC_FAIL時狀態機器進入AT_FAIL狀態,而無關於目前狀態TX狀態行為可包括:
‧AT_IDLE:當c1或c2符合時,致能ECC,設定XI_DEC0_ENC1,並複製AU_LOOP_CNT到TX迴圈計數。
‧AT_CHK_FIFO設定AUX資料提取的計數器
‧AT_SETUP_AU:自AUX FIFO提取AUX資料,並儲存到暫時暫存器
‧AT_STA_AU:傳送XO_START_AU
‧AT_STA_AU:當傳送XO_START_AU時減少TX迴圈計數
‧AT_WAIT_DONE:當AUX_LOOP_CNT為0時,除能ECC
如第十七圖所示,RX轉換條件可包括:
‧c1:ECC被致能(AND)XI_AU_DONE被接收(AND)AUX_LOOP_CNT並非0(AND)(AUX_D_MODE為0(OR)(利用AUX比較之寫入模式(OR)讀取模式))
‧c2:ECC被致能(AND)XI_AU_DONE被接收(AND)AUX_LOOP_CNT並非0(AND)AUX_D_MODE並非0(AND)利用AUX擷取之讀取模式
‧c3:所需要的AUX資料被推入到該FIFO中
RX狀態行為可包括:
‧AR_RECV:AUX_LOOP_CNT減1
‧AR RUSH:將AUX資料推入FIFO,並將AUX_LOOP_CNT減1
實體領域介面信號可由兩個獨立的狀態機器所控制。此外,可有另一個模組-軌跡追蹤器來追蹤軌跡狀態,多少軌跡目前動作,且一軌跡何時開始及完成。該TX狀態機器可由描述器FIFO 2016提取描述器,並將它們傳送到該快閃I/F控制器。同時,一軌跡追蹤器在當送出一描述器時藉由使用一TRACK位元來持續更新軌跡資訊。當一描述器由一快閃I/F控制器完成時,該RX狀態機器可接收FC_DES_DONE信號,且軌跡追蹤器可決定目前軌跡是否完成。該軌跡狀態在當一軌跡由該快閃I/F控制器完成時可被更新,且該韌體可存取TRK_STAT暫存器來檢查該軌跡中每個描述器的狀態。
第十八圖為根據本發明一具體實施例中包括每個狀態機器之轉換條件及行為之詳細的狀態機器圖。該等TX轉換條件可包括:
‧c1:SEQ_ENABLE被設定(AND)描述器FIFO並非空的(AND)動作軌跡的數目並未超過
‧c2:描述器提取已完成
‧c3:FC_RDY被設定
‧c4:FC_SET_DES被傳送5個fc_clk循環
該等TX狀態行為可包括:
˙PT_FETCH:一個一個提取描述器參數,並將它們儲存到暫時暫存器中,直到取出所有描述器參數
˙PT_SET_DES:傳送FC_SET_PES以及5個fc-clk循環之描述器及資訊到軌跡追蹤器,其中一描述器被傳送,以及是否該描述器係用於軌跡邊界。
第十九圖為根據本發明一具體實施例之一實體軌跡追蹤器。
第二十圖為根據本發明一具體實施例之一實體RX狀態機器。該RX狀態行為可包括:
˙ 閒置:當收到FC_DES_DONE時,減少描述器迴圈計數,並反確立FC_SEND_STATUS。
˙trk_chk:確立FC_SEND_STATUS並如果軌跡完成時更新軌跡狀態
2.5定序器應用
2.5.1 正常作業
在該正常作業中,韌體204根據第二十一圖所示的步驟例如可程式化定序器2014。
2.5.1.1致能定序器
定序器2014會需要在任何新的作業開始之前藉由確立SEQ_ENABLE暫存器位元來被致能。所有該等次模組可被重置並成為乾淨。SEQ_BUSY暫存器位元可於該清除程序期間被設定,但韌體204可程式化作業暫存器及FIFO,即使使在SEQ_BUSY被清除之前。
2.5.1.2程式化作業暫存器
某些暫存器會需要在該韌體放置描述器在描述器FIFO 2016之前被程式化。那些為DES_LOOP_CNT(新作業之描述器的總數)及AU_LOOP_CNT(新作業的AUX資料之總數)。如果該韌體在寫入描述器到描述器FIFO 2016之前無法程式化這兩個暫存器,定序器2014為不正確地工作。
2.5.1.3填滿該描述器FIFO(及視需要的AUX FIFO)
韌體204可寫入描述器到描述器FIFO 2016中,以定義每個快閃裝置的作業。該TRACK位元可對一軌跡的最後描述器來設定。假設一動作軌跡的最高數目(MAX ACT_TRK)被設定為2,兩個軌跡可存在於描述器FIFO 2016中來最大化快閃裝置的利用。
當在利用LBA比較(AUX_D_CMP被設定)之寫入模式或讀取模式下,韌體204亦可將LBA資料(或任何其它AUX資料)到AUX FIFO 2015中。韌體204可保持充份數目的AUX資料在AUX FIFO 2015中,所以所有在描述器FIFO 2016中的描述器可以使用而不會卡住。如果在AUX FIFO 2015中沒有足夠的AUX資料,定序器2014可卡住,直到韌體204供應更多的AUX資料。
其不需要FIFO應先被填滿。因此,韌體204可以先寫入資料到描述器FIFO中,或是先寫入資料到該AUX FIFO中。
2.5.1.4維護FIFO直到作業完成
一旦第一描述器被提取,並傳送到快閃I/F控制器2013,韌體204可維護描述器FIFO 2016及AUX FIFO 2015,直到完成該作業。通常韌體204可更新FIFO並取得當一軌跡完成且一TRACK_DONE中斷被偵測到時之狀態。當軌跡完成時,韌體204可以:
‧清除中斷
‧ 讀取PHY_FIFO_CNT_CTRL來找出有多少描述器在最後軌跡中完成,並寫入一負數到相同的暫存器來減少PHYY_FIFO_CNT,並避免描述器FIFO 2016之溢位
‧ 寫入下一個軌跡到描述器FIFO中
‧ 在利用LBA比較之寫入或讀取模式下(AUX_D_CMP被設定),寫入相對應數目的AUX資料到AUX FIFO 2015中,所以該AUX FIFO並不會成為空的。
‧ 在利用LBA擷取之讀取模式下(AUX_D_CMP為清楚),自AUX FIFO 2015讀取AUX資料,所以AUX FIFO並未溢位。因為該邏輯領域並未對準於該實體領域,其建議當偵測到TRACK_DONE中斷時讀取AUX FIFO 2015中任何剩餘的AUX資料。藉此,存在於AUX FIFO 2015中的AUX資料的數量可以最小化,且可避免一AUX FIFO溢位。韌體204可藉由讀取AU_LOOP_CNT來知道在AUX FIFO 2015中有多少AUX資料,並將其自先前的AU_LOOP_CNT數值減除(當偵測到先前的TRACK_DONE時之數值)。其有可能當發生第一個TRACK_DONE時並沒有AUX資料-其中並不需要讀取該AUX資料。該韌體可重覆此步驟,直到該作業完成,且發生一OP_DONE中斷。
除了TRACK_DONE中斷及OP_DONE中斷之外,有其它的中斷,像是TRACK_ERR 或EC_FAIL。在這種狀況下,如下述,可遵循用於處理一錯誤條件的指示。
2.5.1.5除能定序器
在該作業完成且偵測到OP_DONE中斷之後,韌體204可清除SEQ_ENABLE暫存器位元來除能定序器2014。因為TRK_STAT將在當定序器2014被除能時被更新,韌體204可在除能定序器2014之前讀取最後軌跡的TRK_STAT。一旦該SEQ_ENABLE暫存器位元被關閉,韌體204在執行任何進一步控制到定序器2014之前可等待直到SEQ_BUSY信號被清除。
ECC 2011、格式化器2012及快閃I/F控制器2013亦可依此被除能,但它們的狀態暫存器可被存取,直到定序器2014對於下一個作業再次致能。
2.5.2中止作業
定序器的作業可在任何時間中止,即使在一作業完成或一錯誤發生之前。韌體204可反確立SEQ_ENABLE暫存器位元來中止該定序器作業。當請求中止時,XO_EC_ENABLE及FM_ENABLE可被反確立來除能ECC 2011,且格式化器2012及FC_DES_ABORT可被傳送到快閃I/F控制器2013來中止在該快閃裝置中任何擱置中工作。SEQ_BUSY暫存器位元可被設定,顯示出定序器2014在當中止時為忙碌。韌體204在進一步處理之前可等待直到SEQ_BUSY被清除。
第二十二圖為根據本發明一具體實施例之定序器中止作業。當ECC 2011、格式化器2012及快閃I/F控制器2013可被除能或中止時,該定序器狀態暫存器及組態暫存器可保持它們的數值,且韌體204可讀取該等暫存器,以決定那些工作完成而那些被中止。不同的暫存器可根據該讀取/寫入模式來提供資訊。
當中止一PROG作業或一ERASE作業時,該韌體可檢查TRK_STAT暫存器,以驗證在該軌跡中哪些描述器成功地完成。TRK_STAT暫存器可在當定序器2014被中止時來更新,且每個位元代表在該中止的軌跡中每個描述器之狀態。如果在該中止的軌跡中一描述器之狀態為0(通過),其可視為成功地完成。但是,如果在該中止的軌跡中一描述器之狀態為1(失敗),其完成的結果可能為失敗或在完成之前中止。在任一例中,其必須視為失效。
類似地,在READ作業期間,AU_LOOP_CNT暫存器數值可指出有多少AU成功地傳送到一緩衝器管理員(BM,“Buffer manager”)。一些AU可在一ECC處理的中間,但在當定序器2014中止時並未傳成,且它們必須視為失效。
2.5.3 錯誤處理
第二十三圖為根據本發明一具體實施例之一定序器錯誤作業。
一錯誤樣式可根據是否該作業為READ或PROG作業而有所不同,因為一錯誤可來自不同的領域,即邏輯領域或實體領域。
如果是一PROG或ERASE作業,在當快閃裝置中有一失敗時,該錯誤發生在該實體領域中。該快閃I//F控制器可藉由FC_DES_STATUS以及一FC_DES_DONE信號來回報錯誤狀態,且一TRACK_ERR中斷可由定序器2014在該軌跡邊界處產生。該韌體藉由移動該指標PHY_RD_PTR到指標PHY_LTRK_PTR之位置並讀取PHY_RD_DATA來檢查失敗的軌跡之描述器。
如果是一READ作業,當ECC 2011找出該解碼對於一AU無法完成時,該錯誤可發生在該邏輯領域中。ECC 2011可立即利用XI_DEC_FAIL信號回報錯誤到定序器2014,且一EC_FAIL中斷可由定序器2014產生。
在任一例中,該韌體可立即清除SEQ_ENABLE暫存器位元(並等待直到SEQ_BUSY信號被清除),以除能所有的模組,並中止任何擱置中工作。表2-6顯示出狀態暫存器及指標暫存器的列表,其中韌體204在定序器2014被除能之後可偵錯錯誤。
2.5.4軟重置
第二十四圖為根據本發明一具體實施例之定序器重置的序列。
如果有故障或定序器2014係在該未知狀態中,韌體204可藉由確立SEQ_RESET暫存器位元來重置定序器2014來強迫定序器2014來進入一清除狀態。ECC2011與格式化器2012亦可由XO_SEQ_SRESET_N及FM_FC_SRESET_N重置,且快閃I/F控制器2013可由FC_DES_ABORT所重置。
3.作業
第二十五圖為根據本發明一具體實施例之寫入作業的流程圖。該寫入作業可用於第二A圖所示的系統,並可開始於2501。
在2502,韌體204可自主機102接收一些寫入作業的請求,並可使用一工作來代表每個作業。
在2503,韌體204可程式化每個工作之描述器,並寫入該等描述器到描述器FIFO 2016。每個描述器可具有關於一寫入作業的資訊,例如該目標快閃記憶體裝置、該目標通道、作業的種類、該資料的LBA等。韌體204可提供描述器,而不用等待來自一記憶體裝置的回應,並連續地提供數個工作來形成一工作佇列。
在一具體實施例中,韌體204藉由設定一描述器的T-位元來放置數個描述器到一單一軌跡中。例如,如果該韌體想要置入16個描述器到一單一軌跡中,其可設定第16個描述器之T-位元。為了增加頻寬,如果目標裝置為可用時即可平行地發出數個軌跡。
在韌體204結束程式化描述器之後,定序器2014可處理剩餘工作,所以韌體204可集中在其它工作。
在2504,定序器2014可檢查該目標通道的可用性,及在該工作佇列之最上方處該描述器的目標裝置,並由描述器FIFO 2016發出該描述器到快閃I/F控制器2013,只要該描述器的目標記憶體裝置成為可使用時。數個描述器可平行地提供及執行,只要該等目標裝置為可使用。
在2505,定序器2014可通知ECC 2011、格式化器2012及快閃I/F控制器2013要預備一寫入作業。
在2506,來自主機102之資料可被傳送到ECC 2011,其可插入錯誤修正碼到該資料中。
在2507,格式化器2012可格式化該資料來符合快閃I/F控制器2013之資料路徑。
在2508,快閃I/F控制器2013可執行在該工作佇列之最上方的描述器中所定義的寫入作業,經由該目標通道傳送資料到該目標快閃記憶體裝置之內部緩衝器。
在2509,定序器2014可決定由快閃I/F控制器2013到該目標快閃記憶體裝置之內部緩衝器的資料傳送是否完成。
如果完成,在2510,定序器2014可決定在該軌跡中是否有下一個描述器。如果否,該程序可進行到2520。
如果是,2504-2510即對下一個描述器執行。如果在該軌跡中有一個以上的描述器,目標通道及目標裝置首先成為可使用者即被先執行。定序器2014並不需要等待該目標快閃記憶體裝置之內部緩衝器及該目標快閃記憶體裝置之間的交易結束。2504-2510可重覆,直到在該軌跡中所有寫入作業完成。
在2520,快閃I/F控制器2013可通知定序器2014該作業的狀態,例如是否所有寫入作業皆完成,那一個作業成功,且那一個作業失敗。
在2521,定序器2014可轉送該狀態資訊到韌體204。在一具體實施例中,如果該等描述器被置入一軌跡中,定序器2014在當一軌跡完成時產生一中斷信號到韌體204,即在該軌跡中該等描述器中定義的所有工作皆完成。
在一具體實施例中,定序器2014可收集在一「軌跡狀態暫存器」中每個工作的狀態,其包含工作的狀態。一旦完成一軌跡及產生一中斷信號之後,韌體204可檢查該「軌跡狀態暫存器」以找出在該軌跡中是否有任何工作失敗。此外,定序器2014可提供資訊,例如發出那些描述器、完成那一工作、那一工作在擱置中,所以韌體204可簡單地診斷並自錯誤中恢復。
第二十六圖為根據本發明一具體實施例之讀取作業的流程圖。該作業可用於第二A圖所示的系統,並可開始於2601。
在2602,韌體204可自主機102接收一些讀取作業的請求,並可使用一工作來代表每個作業。
在2603,韌體204可程式化每個工作之描述器,並寫入該等描述器到描述器FIFO 2016中。每個描述器可具有關於一讀取作業之資訊,例如該目標快閃記憶體裝置,該目標通道、作業種類等。數個工作可被連續地提供來形成一工作佇列。
在一具體實施例中,韌體204藉由設定一描述器的T-位元來放置數個描述器到一單一軌跡中。例如,如果該韌體想要置入16個描述器到一單一軌跡中,其可設定第16個描述器之T-位元。為了增加頻寬,如果目標裝置為可用時即可平行地發出數個軌跡。
在韌體204結束程式化描述器之後,定序器2014可處理剩餘工作,所以韌體204可集中在其它工作。
在2604,韌體204可寫入該資料的LBA到AUX FIFO 2015中,如果其係在LBA比較模式中。
在2605,定序器2014可檢查該目標通道的可用性,及在該工作佇列之最上方處該描述器的目標裝置,並由描述器FIFO 2016發出該描述器到快閃I/F控制器2013,只要該描述器的目標記憶體裝置成為可使用時。數個描述器可平行地提供及執行,只要該等目標裝置為可使用。
在2606,定序器2014可通知ECC 2011、格式化器2012及快閃I/F控制器要預備一讀取作業。
在2607,快閃I/F控制器2013可傳送該等描述器到它們的目標快閃記憶體裝置,其指示該等目標記憶體裝置來開始傳送資料到它們的內部緩衝器。
在2608,快閃I/F控制器2013可由在該工作佇列之最上方處該描述器中所定義的該目標快閃記憶體裝置之內部緩衝器接收資料。
在2609,該定序器可決定根據在該工作佇列之最上方處的描述器之資料傳輸是否完成。
如果完成,在2610,定序器可決定在該軌跡中是否有下一個描述器。如果否,該程序可進行到2620。
如果在該軌跡中有其它描述器,2604-2610可對下一個描述器來執行。如果在該軌跡中有一個以上的描述器,目標通道及目標裝置首先成為可使用者即被先執行。定序器2014並不需要等待該目標快閃記憶體裝置之內部緩衝器及該目標快閃記憶體裝置之間的交易結束。2604-2610可重覆,直到在該軌跡中所有讀取作業完成。
在2620,當定序器2014正在進行由下一個描述器傳送資料到快閃I/F控制器2013,格式化器2012可格式化來自快閃I/F控制器2013之資料。
在2621,ECC 2011可解碼來自該目標裝置之資料,並執行錯誤修正。
在2622,ECC 2011可比較來自該目標裝置之該資料的LBA與在該LBA比較模式中儲存在AUX FIFO 2015中的LBA。如果它們不相同,該程序可進行到2625來回報錯誤發生到該韌體。在該LBA擷取模式中,ECC 2011可自該AU擷取LBA資料,並將其傳送回到該定序器來儲存在該AUX FIFO中。
如果來自該目標裝置之資料的LBA與儲存在AUX FIFO 2015中的LBA為相同,該資料可被傳送到緩衝器103,在2623。
在2624,快閃I/F控制器2013可通知定序器2014該作業的狀態,例如是否所有讀取作業皆完成,那一個作業成功,且那一個作業失敗。
在2625,定序器2014可轉送該狀態資訊到韌體204。在一具體實施例中,如果該等描述器被置入一軌跡中,定序器2014在當一軌跡完成時產生一中斷信號到韌體204,即在該軌跡中該等描述器中定義的所有工作皆完成。
在一具體實施例中,定序器2014可收集在一「軌跡狀態暫存器」中每個工作的狀態,其包含工作的狀態。一旦完成一軌跡及產生一中斷信號之後,韌體204可檢查該「軌跡狀態暫存器」以找出在該軌跡中是否有任何失敗的工作。此外,定序器2014可提供資訊,例如發出那些描述器、完成那一工作、那一工作在擱置中等,所以韌體204可簡單地診斷並自錯誤中恢復。
第二十七圖為根據本發明一具體實施例之抹除作業的流程圖。該作業可用於第二A圖所示的系統,並可開始於2701。
在2702,韌體204可由主機102接收對於抹除作業的一些請求。
在2703,韌體204可對於每個抹除作業請求程式化一描述器。
在2704,定序器2014可檢查該目標通道的可用性,及在該工作佇列之最上方處該描述器的目標裝置,並由描述器FIFO 2016發出該描述器到快閃I/F控制器2013,只要該描述器的目標記憶體裝置成為可使用時。數個描述器可平行地提供及執行,只要該等目標裝置為可使用。
在2705,快閃I/F控制器2013可轉送該等描述器到它們的目標快閃記憶體裝置。
在2706,該等快閃記憶體裝置可根據該描述器抹除資料。
在2707,該等快閃記憶體裝置可回報該作業的狀態到快閃I/F控制器2013。該狀態資訊可被轉送到該定序器,在2708,並轉送到該韌體,在2709。
本發明的數個特徵及態樣已經參照特定具體實施例詳細例示及說明,其係做為範例而非限制性質。對於所揭示的具體實施例之其它實施及多種修正皆在本發明之範疇及考慮當中。因此,本發明係僅視為受限於附屬申請專利範圍之範疇。
102...主機
103...緩衝器
201...快閃控制器
204...韌體
2011...ECC區段
2012...格式化器
2013...快閃I/F控制器
2014...定序器
2015...AUX FIFO
2016...描述器FIFO
CH0~CH7...通道
D00~D73...快閃記憶體裝置
本發明之具體實施例在此處參照附屬圖面來說明,類似的參考編號係用於代表功能上類似的元件。
第一A圖為用於控制存取到固態記憶體裝置之目前可使用的系統。
第一B圖所示為在第一A圖中所示之系統中一寫入作業的波形。
第一C圖所示為在第一A圖中所示之系統中一讀取作業的波形。
第二A圖為根據本發明一具體實施例中用於控制存取到固態記憶體裝置之系統。
第二B圖所示為在第二A圖中所示之系統中寫入作業的波形。
第二C圖所示為在第二A圖中所示之系統中讀取作業的波形。
第三圖為根據本發明一具體實施例的一快閃控制器之作業邊界。
第四圖為根據本發明一具體實施例的一快閃記憶體裝置之作業的波形。
第五圖為根據本發明一具體實施例之實體描述器先進先出(FIFO,“First-in-first-out”)緩衝器2016之結構。
第六圖為根據本發明一具體實施例的一實體描述器FIFO之指標。
第七A圖為根據本發明一具體實施例在一正常狀況下實體描述器FIFO作業之波形。
第七B圖為根據本發明一具體實施例在一錯誤狀況下實體描述器FIFO作業之波形。
第八圖為根據本發明一具體實施例的AUX FIFO 2015之結構。
第九A圖、第九B圖、第九C圖及第九D圖為透過定序器2014與ECC 2011之間一介面傳輸的邏輯區塊位址(LBA,“Logical block address”)資料。
第十A圖為定序器2014與快閃I/F控制器2013之間的介面處之波形。
第十B圖為根據本發明一具體實施例中來自快閃I/F控制器2013之狀態報告的時序。
第十C圖為根據本發明一具體實施例該快閃I/F控制器中止請求的時序。
第十一圖為根據本發明一具體實施例之定序器時脈領域。
第十二圖為根據本發明一具體實施例的一AUX FIFO之架構。
第十三圖為根據本發明一具體實施例的描述器FIFO指標。
第十四圖為根據本發明一具體實施例當SEQ_ENABLE確立及反確立控制重置/中止/致能信號到次模組時的波形。
第十五圖為當SEQ_RESET位元被確立及重置/中止/致能信號到次模組如何受到影響時的波形。
第十六圖為根據本發明一具體實施例中包括每個邏輯TX狀態機器之轉換條件及行為之詳細的邏輯TX狀態機器圖。
第十七圖為根據本發明一具體實施例接收一邏輯RX狀態機器之轉換條件。
第十八圖為根據本發明一具體實施例中包括每個實體TX狀態機器之轉換條件及行為之實體TX狀態機器圖。
第十九圖為根據本發明一具體實施例之一實體軌跡追蹤器。
第二十圖為根據本發明一具體實施例之一實體RX狀態機器。
第二十一圖為根據本發明一具體實施例中程式化一定序器之程序。
第二十二圖為根據本發明一具體實施例之定序器中止作業。
第二十三圖為根據本發明一具體實施例之一定序器錯誤作業。
第二十四圖為根據本發明一具體實施例之定序器重置的序列。
第二十五圖為根據本發明一具體實施例之寫入作業的流程圖。
第二十六圖為根據本發明一具體實施例之讀取作業的流程圖。
第二十七圖為根據本發明一具體實施例之抹除作業的流程圖。
102...主機
103...緩衝器
201...快閃控制器
204...韌體
2011...ECC區段
2012...格式化器
2013...快閃I/F控制器
2014...定序器
2015...AUX FIFO
2016...描述器FIFO
CH0~CH7...通道
D00~D73...快閃記憶體裝置
Claims (31)
- 一種用於控制固態記憶體裝置之存取的方法,其中該固態記憶體裝置係耦合至一控制器,且利用韌體控制該控制器,該方法包含:自一主機接收一第一作業請求及一第二作業請求;利用該韌體程式化該第一作業請求的第一描述器及該第二作業請求的第二描述器;序列化該第一描述器及該第二描述器;根據該第一描述器傳輸第一資料;決定該根據第一描述器的第一資料傳輸是否已經結束;及如果根據第一描述器的第一資料傳輸已經完成,開始根據該第二描述器傳輸第二資料。
- 如申請專利範圍第1項之方法,其中該第一描述器包括關於一目標裝置、一目標通道及一作業種類的資訊。
- 如申請專利範圍第1項之方法,進一步包含提供該第一描述器,而不需要等待來自一記憶體裝置的回應。
- 如申請專利範圍第1項之方法,其中該第一描述器及該第二描述器係連續地提供而形成一工作佇列。
- 如申請專利範圍第4項之方法,進一步包含放置該第一描述器及該第二描述器在一軌跡中,其中:。 該軌跡具有16個描述器;及第16個描述器之T-位元係被設定。
- 如申請專利範圍第1項之方法,進一步包含在發出該第一描述器之前檢查一目標裝置的可用性。
- 如申請專利範圍第1項之方法,進一步包含回報第一作業請求及第二作業請求之狀態到執行該韌體之一裝置。
- 如申請專利範圍第5項之方法,進一步包含,當在一軌跡中所有描述器皆完成時產生一中斷信號且傳輸該中斷信號到執行該韌體之一裝置。
- 如申請專利範圍第1項之方法,其中該第一作業請求為一寫入請求,而該第一資料係自該控制器傳輸到一目標裝置之內部緩衝器。
- 如申請專利範圍第9項之方法,進一步包含對於自該主機所接收的資料執行錯誤修正一同位計算。
- 如申請專利範圍第1項之方法,其中:該第一作業請求為一讀取請求,而該第一資料係自一目標裝置之內部緩衝器傳輸到該控制器;且該方法進一步包含儲存所請求之資料的一邏輯區塊位址,且比較該所儲存的一邏輯區塊位址與根據該第一描述器自該目標裝置所獲得之該第一資料的一邏輯區塊位址。
- 如申請專利範圍第11項之方法,進一步包含對於自該主機所接收的資料執行錯誤修正編碼。
- 如申請專利範圍第11項之方法,進一步包含格式化傳送至或自該主機所接收的資料來符合該主機的需求。
- 一種控制存取到複數個固態記憶體裝置的設備,該設備包含:韌體,用於程式化一第一作業請求的第一描述器 及一第二作業請求的第二描述器;一定序器,用於接收該第一描述器及該第二描述器;及一介面控制單元,係耦合至該定序器與複數個固態記憶體裝置且配置以(1)接收該第一描述器、該第二描述器及指令,並(2)根據該第一描述器傳輸第一資料,其中該介面控制單元係配置以在當該根據該第一描述器的第一資料傳輸已經結束時開始根據該第二描述器傳輸第二資料。
- 如申請專利範圍第14項之設備,其中第一描述器包括關於一目標裝置、一目標通道及該作業種類的資訊。
- 如申請專利範圍第14項之設備,其中該定序器進一步包含一描述器先進先出緩衝器,配置以自執行該韌體之一裝置接收該第一描述器及該第二描述器。
- 如申請專利範圍第14項之設備,其中該定序器進一步包含一輔助先進先出緩衝器,配置以自執行該韌體之一裝置接收關於要被傳輸的邏輯區塊位址資訊。
- 如申請專利範圍第14項之設備,進一步包含一錯誤修正單元,配置以對於自該主機所接收的資料執行錯誤修正編碼。
- 如申請專利範圍第14項之設備,進一步包含一格式化器,配置以格式化來自一主機的資料來符合該介面控制單元的需求。
- 如申請專利範圍第14項之設備,其中執行該韌體之一裝置提供該第一描述器,而不需要等待來自一記憶 體裝置的回應。
- 如申請專利範圍第14項之設備,其中執行該韌體之一裝置連續地提供該第一描述器及該第二描述器而形成一工作佇列。
- 如申請專利範圍第14項之設備,其中該定序器在發出第一描述器到該介面控制單元之前檢查一目標裝置的可用性。
- 如申請專利範圍第22項之設備,其中該定序器通知該介面控制單元對於該作業的種類預備好。
- 如申請專利範圍第14項之設備,其中該定序器回報作業的狀態到執行該韌體之一裝置。
- 如申請專利範圍第14項之設備,其中結束該資料傳輸的一時間量短於結束該第一作業的一時間量。
- 如申請專利範圍第1項之方法,其中結束該資料傳輸的一時間量短於結束該第一作業的一時間量。
- 如申請專利範圍第14項之方法,其中該介面控制單元係配置以:根據該第一描述器傳輸第一資料自該等固態記憶體裝置之一第一者;根據該第二描述器傳輸第二資料自該等固態記憶體裝置之一第二者至該控制器,及當該第一資料自該控制器傳輸至該主機,傳輸該第二資料至該控制器。
- 如申請專利範圍第14項之設備,其中:該介面控制單元,係配置以(1)自該定序器接收該第一描述器、該第二描述器及指令,並(2)根據該第一描述器傳輸第一資料自該複數個固態記憶體裝置之 一第一者至該介面控制單元;該等指令包含讀取請求以傳輸該第一資料及該第二資料;該介面控制單元係配置以在當該根據該第一描述器的第一資料傳輸已經結束時開始根據該第二描述器傳輸該第二資料自該複數個固態記憶體裝置之一第二者至該介面控制單元;該介面控制單元係配置以在完成該根據該第一描述器的第一資料傳輸之前傳送對於該第二資料之該等讀取請求之其中一者至該複數個固態記憶體裝置之該第二者;及該複數個固態記憶體裝置之該第二者係配置以在根據該第一描述器的第一資料傳輸完成之前,根據該等讀取請求之其中該者傳輸第二資料至該複數個固態記憶體裝置之該第二者的一內部緩衝器。
- 如申請專利範圍第28項之設備,其中該介面控制單元係配置以在完成根據第一描述器的第一資料傳輸之後立即傳輸該第二資料自該內部緩衝器至該介面控制單元。
- 如申請專利範圍第28項之設備,其中該定序器包括:一輔助先進先出緩衝器配置以儲存用於錯誤修正編碼之輔助資料;及一描述器先進先出緩衝器配置以儲存包含第一描述器及該第二描述器之複數個描述器,其中該介面控制單元根據該第二描述器之一實體區塊存取該複數個固態記憶體裝置,同時根據關連於該第一資料之該輔助資料的一邏輯區塊執行錯誤 修正編碼作業。
- 如申請專利範圍第28項之設備,其中該介面控制單元根據該第二描述器傳輸該第二資料自該複數個固態記憶體裝置之該第二者至該介面控制單元,同時格式化自該複數個固態記憶體裝置之該第一者所接收的第一資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US97357907P | 2007-09-19 | 2007-09-19 | |
US12/212,636 US8185713B2 (en) | 2007-09-19 | 2008-09-17 | Flexible sequencer design architecture for solid state memory controller |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200928758A TW200928758A (en) | 2009-07-01 |
TWI444832B true TWI444832B (zh) | 2014-07-11 |
Family
ID=40193998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097135781A TWI444832B (zh) | 2007-09-19 | 2008-09-18 | 用於固態記憶體控制器之彈性定序器設計結構 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8185713B2 (zh) |
KR (1) | KR101507975B1 (zh) |
TW (1) | TWI444832B (zh) |
WO (1) | WO2009039222A2 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8255615B1 (en) | 2009-01-08 | 2012-08-28 | Marvell International Ltd. | Flexible sequence design architecture for solid state memory controller |
US8271720B1 (en) | 2009-03-02 | 2012-09-18 | Marvell International Ltd. | Adaptive physical allocation in solid-state drives |
KR20100100394A (ko) * | 2009-03-06 | 2010-09-15 | 삼성전자주식회사 | 반도체 디스크 장치 그리고 그것의 데이터 기록 및 읽기 방법 |
US8402217B2 (en) | 2009-09-15 | 2013-03-19 | Marvell International Ltd. | Implementing RAID in solid state memory |
US8988800B1 (en) | 2009-09-15 | 2015-03-24 | Marvell International Ltd. | Error correction for storage devices |
WO2012087971A2 (en) * | 2010-12-20 | 2012-06-28 | Marvell World Trade Ltd. | Descriptor scheduler |
US20130339583A1 (en) * | 2012-06-19 | 2013-12-19 | Marvell World Trade Ltd. | Systems and methods for transferring data out of order in next generation solid state drive controllers |
KR101932920B1 (ko) | 2012-09-14 | 2019-03-18 | 삼성전자 주식회사 | 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법 |
US9122413B2 (en) | 2013-08-15 | 2015-09-01 | International Business Machines Corporation | Implementing hardware auto device operations initiator |
US9377968B2 (en) * | 2013-11-13 | 2016-06-28 | Sandisk Technologies Llc | Method and system for using templates to communicate with non-volatile memory |
US9431052B2 (en) | 2014-06-26 | 2016-08-30 | Marvell World Trade Ltd. | Two dimensional magnetic recording systems, devices and methods |
KR102317787B1 (ko) | 2015-02-11 | 2021-10-26 | 삼성전자주식회사 | 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스 |
KR102339779B1 (ko) | 2015-04-06 | 2021-12-15 | 삼성전자주식회사 | 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법 |
CN105912307B (zh) * | 2016-04-27 | 2018-09-07 | 浪潮(北京)电子信息产业有限公司 | 一种Flash控制器数据处理方法及装置 |
KR102609473B1 (ko) * | 2016-06-17 | 2023-12-04 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20180118329A (ko) | 2017-04-21 | 2018-10-31 | 에스케이하이닉스 주식회사 | 메모리 시스템, 데이터 처리 시스템 및 그것의 동작 방법 |
TWI645288B (zh) * | 2017-07-04 | 2018-12-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
KR102381233B1 (ko) * | 2017-08-28 | 2022-04-01 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US11061751B2 (en) * | 2018-09-06 | 2021-07-13 | Micron Technology, Inc. | Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller |
US11080210B2 (en) | 2018-09-06 | 2021-08-03 | Micron Technology, Inc. | Memory sub-system including an in package sequencer separate from a controller |
US11038856B2 (en) * | 2018-09-26 | 2021-06-15 | Marvell Asia Pte, Ltd. | Secure in-line network packet transmittal |
US11095626B2 (en) | 2018-09-26 | 2021-08-17 | Marvell Asia Pte, Ltd. | Secure in-line received network packet processing |
KR102418060B1 (ko) * | 2020-12-14 | 2022-07-07 | 현대오토에버 주식회사 | 플래시 메모리 ecc 모듈의 진단 장치 및 방법 |
CN116185891B (zh) * | 2023-04-27 | 2023-07-21 | 珠海妙存科技有限公司 | 描述符管理方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5787484A (en) | 1996-08-08 | 1998-07-28 | Micron Technology, Inc. | System and method which compares data preread from memory cells to data to be written to the cells |
US6134630A (en) * | 1997-11-14 | 2000-10-17 | 3Ware | High-performance bus architecture for disk array system |
GB0123416D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Non-volatile memory control |
GB0123410D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system for data storage and retrieval |
US7020815B2 (en) * | 2002-08-29 | 2006-03-28 | Micron Technology, Inc. | Memory technology test apparatus |
KR100725271B1 (ko) * | 2005-05-20 | 2007-06-04 | 주식회사 엠피오 | 복수개의 dma 채널을 갖는 usb-sd 저장 장치 및 그저장 방법 |
-
2008
- 2008-09-17 WO PCT/US2008/076741 patent/WO2009039222A2/en active Application Filing
- 2008-09-17 KR KR1020107008424A patent/KR101507975B1/ko active IP Right Grant
- 2008-09-17 US US12/212,636 patent/US8185713B2/en active Active
- 2008-09-18 TW TW097135781A patent/TWI444832B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20090077305A1 (en) | 2009-03-19 |
WO2009039222A3 (en) | 2009-06-04 |
US8185713B2 (en) | 2012-05-22 |
WO2009039222A2 (en) | 2009-03-26 |
KR20100072263A (ko) | 2010-06-30 |
KR101507975B1 (ko) | 2015-04-06 |
TW200928758A (en) | 2009-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI444832B (zh) | 用於固態記憶體控制器之彈性定序器設計結構 | |
US6401149B1 (en) | Methods for context switching within a disk controller | |
US6330626B1 (en) | Systems and methods for a disk controller memory architecture | |
US8504737B2 (en) | Serial line protocol for embedded devices | |
KR102466353B1 (ko) | SSD 스토리지의 NVMe 명령간 연관을 위한 시스템 및 방법 | |
CN104520932B (zh) | 闪存存储器控制器 | |
CN102567256B (zh) | 处理器系统及其多通道内存拷贝dma加速器和方法 | |
US5953352A (en) | Method of checking data integrity for a raid 1 system | |
EP1389755A2 (en) | Arrayed data storage architecture with simultaneous command of multiple storage media | |
KR102217966B1 (ko) | 스토리지 드라이브의 비휘발성 반도체 메모리에 그리고 상기 비휘발성 반도체 메모리로부터 데이터를 전달하기 위해 디스크립터들을 생성하는 장치 및 방법 | |
JP2004507023A (ja) | 順不同の書き込み動作を実行するように構成されたディスク制御装置 | |
JP2557199B2 (ja) | インターフェース・システムおよび方法 | |
US5146564A (en) | Interface between a system control unit and a service processing unit of a digital computer | |
TWI418991B (zh) | 針對智慧型儲存交換器所設計的快閃記憶體系統 | |
US9575669B2 (en) | Programmable solid state drive controller and method for scheduling commands utilizing a data structure | |
KR101857911B1 (ko) | 가상채널을 이용한 다중 채널 메모리 제어기 | |
CN104281413A (zh) | 命令队列管理方法、存储器控制器及存储器储存装置 | |
CA2370596C (en) | Systems and methods for a disk controller memory architecture | |
TWI613656B (zh) | 固態硬碟系統的優先寫入方法以及使用該方法的裝置 | |
TWI719880B (zh) | 寫入頁面群組的資料到閃存模組的裝置及方法 | |
US8180926B2 (en) | Adaptable resource spoofing for an extended computer system | |
JPWO2007088967A1 (ja) | 外部デバイス、電子機器システム及び制御方法 | |
US20070073927A1 (en) | Method and apparatus for high throughput mass storage device interface in a microprocessor for handheld systems | |
Galbraith et al. | Highly automated hardware and firmware RAID SoC design optimized for memory class storage devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |