TWI674503B - 用於測試固態儲存裝置之韌體的方法與系統以及電子設備 - Google Patents
用於測試固態儲存裝置之韌體的方法與系統以及電子設備 Download PDFInfo
- Publication number
- TWI674503B TWI674503B TW107137928A TW107137928A TWI674503B TW I674503 B TWI674503 B TW I674503B TW 107137928 A TW107137928 A TW 107137928A TW 107137928 A TW107137928 A TW 107137928A TW I674503 B TWI674503 B TW I674503B
- Authority
- TW
- Taiwan
- Prior art keywords
- firmware
- solid
- storage device
- state storage
- read
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/10—Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種用於測試一固態儲存裝置之韌體的方法,包含:控制一主記憶體以模仿該固態儲存裝置的多個揮發性及非揮發性記憶體;擷取一測試序列及一測試準則;從編譯該韌體所產生的多個二進制碼擷取多個讀取/寫入操作;判定該多個讀取或寫入操作是否跟一標記有關聯;當一判定的結果是否定的,則執行該多個讀取/寫入操作、否則丟棄一讀取/寫入資料的動作;監測該多個讀取/寫入操作之執行的過程是否達到該測試準則;及當監測到該多個讀取/寫入操作之執行的過程達到該測試準則產生該韌體之一測試的結果。
Description
本發明是有關於一種方法與一個系統,特別是指一種用於測試固態儲存裝置之韌體的一方法與一系統,以及一電子設備被提供以有一證明,該證明指出該電子設備所包含之一固態儲存裝置的一韌體已經通過該測試。
快閃記憶體轉譯層(Flash translation layers, FTLs)是基於反及快閃記憶體(NAND flash-based)所構成之固態硬碟(Solid-state drives, SSDs)的核心嵌入式軟體。快閃記憶體轉譯層負責搬移快閃記憶體資料、擦除過時的快閃記憶體資料,及計算來自電腦之每個讀取或寫入請求的快閃記憶體位址。
為了測試與驗證快閃記憶體轉譯層,快閃記憶體轉譯層的開發人員執行基於真實固態硬碟的壓力測試,以發現快閃記憶體轉譯層的錯誤。例如,參閱圖1,藉由執行傳統的壓力測試軟體11,一電腦12可以產生密集的讀取和寫入流量以對一固態硬碟13施壓。若在測試的期間發生資料毀損、不正常的固態硬碟斷線,或請求逾時,則由一嵌入式的中央處理單元15所執行之固態硬碟13的快閃記憶體轉譯層14會被認為是”可能是有錯誤的”。這個基於真實固態硬碟的測試方法有以下兩個基本的缺點與限制。
首先,固態硬碟,特別是固態硬碟裡的快閃記憶體,只有一非常有限的存取速度,這會造成壓力測試的速度限制。例如,對於一具有平均寫入速度為0.73每秒十億位元組(GB/s)且符合非揮發性記憶體標準 (Non-volatile memory express, NVMe)及快捷外設互聯標準(Peripheral component interconnect express,PCIe)的固態硬碟,若要對它的快閃記憶體轉譯層進行1兆位元組(TB)混合式寫入壓力測試,便需費時約23分鐘(1000/0.73/60秒≈23分鐘)。
第二,調查在基於真實固態硬碟之快閃記憶體轉譯層的測試時所發生的測試失敗(failure),對快閃記憶體轉譯層的開發人員來說是繁重的。因為這種測試失敗牽涉複雜的因子,包含主端操作系統(Host operation system, Host OS)(例如: Windows 或 Linux)的兼容性、主機板的兼容性、纜線訊號的品質、快閃記憶體的品質、電源供應器的穩定度、快閃記憶體轉譯層的韌體,及快閃記憶體轉譯層以外的韌體。
因此,本發明的目的,即在提供一種測試固態儲存裝置之韌體的方法與系統,可以減輕習知技術之多個缺點中的至少一個缺點,及一被提供一證明的電子設備,該證明指示包含在該電子設備中的一固態儲存裝置的一韌體已經通過該測試。
本發明之一種測試固態儲存裝置之韌體的方法是藉由一運算設備實現,該運算設備包含一中央處理單元(CPU)、一主記憶體,及一儲存至少一測試準則的儲存器,該方法包含:(A)該記憶體及該儲存器的其中之一提供多個二進制碼(binary codes,例如多個二進制機器指令碼),該多個二進制碼是根據該運算設備的一指令集架構且藉由編譯該固態儲存裝置之該韌體所產生的;(B)該中央處理單元控制該主記憶體模仿該固態儲存裝置的一揮發性記憶體,以提供一仿真的揮發性記憶體;(C)該中央處理單元控制該主記憶體模仿該固態儲存裝置的一非揮發性記憶體,以提供一仿真的非揮發性記憶體;(D)該中央處理單元擷取一包含一讀取請求(read request)及一寫入請求(write request)的測試序列,該讀取請求用以存取該固態儲存裝置的一邏輯位址,該寫入請求用以存取該固態儲存裝置的另一邏輯位址;(E)該中央處理單元根據該測試序列,從該多個二進制碼中擷取一讀取操作(read operation)及一寫入操作(write operation);(F)該中央處理單元判定該讀取操作是否與一標記有關聯,該標記是用以指出從對應到該邏輯位址之一實體位址所要被讀取的資料與韌體操作無關;(G) 當該中央處理單元判定該讀取操作與該標記無關時,則該中央處理單元執行該讀取操作,以從該實體位址讀取該資料,該實體位址屬於被該讀取操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一;(H) 當該中央處理單元判定該讀取操作是跟該標記有關聯時,則該中央處理單元丟棄(discard)該讀取操作所指定的一從該實體位址讀取該資料的動作;(I)該中央處理單元判定該寫入操作是否與該標記有關聯,該標記是用以指出對應到該另一邏輯位址之另一實體位址所要被寫入的資料與韌體操作無關;(J)當該中央處理單元判定該寫入操作與該標記無關時,則該中央處理單元執行該寫入操作,以將該資料寫入該另一實體位址,該另一實體位址屬於被該寫入操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一;(K)當該中央處理單元判定該寫入操作是跟該標記有關聯時,該中央處理單元丟棄該寫入操作所指定的一該資料寫入到該另一實體位址的動作;(L)該中央處理單元監測該讀取操作與該寫入操作的執行過程是否達到該測試準則;及(M)當該中央處理單元監測到該讀取操作與該寫入操作的執行過程達到該測試準則時,該中央處理單元產生該韌體測試的一結果。
因此,本發明的另一目的,即在提供一種測試固態儲存裝置之韌體的系統,包含一運算設備,該運算設備包括一主記憶體、一儲存器,及一中央處理單元。該儲存器儲存一測試準則且被配置成用以提供多個二進制碼,該多個二進制碼是藉由編譯該固態儲存裝置之該韌體所產生的,該編譯過程是根據該運算設備的一指令集架構,該中央處理單元電連接該主記憶體及該儲存器,且被配置成用以控制該主記憶體模仿該固態儲存裝置的一揮發性記憶體及一非揮發性記憶體,以提供一仿真的揮發性記憶體及一仿真的非揮發性記憶體;擷取一測試序列,該測試序列包含一用以存取該固態儲存裝置之一邏輯位址的讀取請求,及一用以存取該固態儲存裝置之另一邏輯位址的寫入請求;根據該測試序列從儲存在該儲存器的多個二進制碼擷取一讀取操作及一寫入操作;判定該讀取操作是否與一標記有關聯,該標記是用以指出從對應到該邏輯位址之一實體位址所要被讀取的資料與韌體操作無關;當該讀取操作被判定與該標記無關時,則執行該讀取操作以從該實體位址讀取該資料,該實體位址屬於被該讀取操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一;當該讀取操作被判定與該標記有關聯時,則丟棄一從該讀取操作所指定的該實體位址讀取該資料的動作;判定該寫入操作是否與該標記有關聯,該標記是用以指出對應到該另一邏輯位址之該另一實體位址所要被寫入的資料與韌體操作無關;當該寫入操作被判定與該標記無關時,則執行該寫入操作以向該另一實體位址寫入該資料,該另一實體位址屬於被該寫入操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一;當該寫入操作被判定與該標記有關聯時,則丟棄一向該寫入操作所指定的該另一實體位址寫入該資料的動作;監測該讀取操作與該寫入操作的執行過程是否達到該測試準則;及當監測到該測試準則被達到時,產生該韌體測試的一結果。
因此,本發明的第三目的,即在提供一種電子裝置包含一與韌體有關聯的固態儲存模組,該韌體已經通過一測試,該測試是透過執行用於測試一固態儲存裝置之韌體的方法;該電子裝置被提供以包括有一證明,該證明用以指出該固態儲存模組的韌體已經通過該測試。
本發明一種測試固態儲存裝置之韌體的方法的功效在於提供一個功能性的模擬方法,稱做虛擬壓力測試(Virtual stress testing,VST),專門用於測試與驗證快閃記憶體轉譯層。虛擬壓力測試能讓快閃記憶體轉譯層的開發人員在個人電腦或伺服器上編譯及執行本機固態硬碟之快閃記憶體轉譯層碼而不需要固態硬碟的硬體,此外能讓測試快閃記憶體轉譯層不受固態硬碟的速度限制。虛擬壓力測試利用個人電腦或伺服器的主記憶體來模仿固態硬碟中的多種不同類型的記憶體(例如,靜態隨機存取存記憶體(SRAM)、動態隨機存取記憶體(DRAM),及快閃記憶體(flash))。本發明介紹並揭露之資料結構可以有效率地模仿固態硬碟的大容量快閃記憶體。
在本發明被詳細描述之前,應當注意在以下的說明內容中,類似的元件是以相同的編號來表示。
參閱圖2, 本發明一測試固態儲存裝置之韌體的系統的一實施例,該系統包含一被配置成用以實現一測試固態儲存裝置之韌體的方法的運算設備2,該運算設備2包括一中央處理單元(CPU)21、一主記憶體22,及一儲存至少一測試準則的儲存器(圖未示)。在本實施例中,該運算設備2可以是一個人電腦、一筆記型電腦、一伺服器,或任何其他可實現在本發明中所提到的功能之電子裝置的其中之一。該中央處理單元21可以是一微處理器、一專用指令集處理器(Application-specific instruction set processor, ASIP)、一數位訊號處理器,以及諸如此類。該主記憶體22為可被該中央處理單元21直接存取的一主要儲存,且通常是(但非必要)被實現為一揮發性電腦記憶體,如一動態隨機存取記憶體(DRAM)、一雙倍資料率同步動態隨機存取記憶體(DDR SDRAM),以及諸如此類。該儲存器為一次要儲存器,該次要儲存器通常是(但非必要)可被該中央處理單元21經由輸入/輸出通道來間接存取的,且通常是(但非必要)被實現為一非揮發性電腦記憶體,如一硬碟,或一旋轉的光儲存裝置,如光碟(CD)及多用途數位光碟(DVD)。在本實施例中,該待測的固態儲存裝置是以一固態硬碟(SSD)為例,然而,在其他實施例中,該待測的固態儲存裝置可以是一安全數位(Secure digital, SD)記憶卡、一快閃記憶體隨身碟(USB flash drive)、一嵌入式多媒體記憶卡(Embedded multimediacard, eMMC)晶片、一通用快閃記憶體儲存(Universal flash storage, UFC)卡,以及諸如此類。該固態硬碟具有一固態硬碟控制器以執行包含一快閃記憶體轉譯層(Flash translation layer, FTL)的韌體,該固態硬碟更具有一揮發性記憶體(例如:一主靜態隨機存取記憶體(Main SRAM)及一外接晶片型的動態隨機存取記憶體),及一非揮發性記憶體((例如:一具有多個快閃元件的反及快閃記憶體、一立體(3D)點交叉記憶體(Cross-point memory)、一相變化記憶體(Phase-change memory)、一可變電阻式記憶體(Resistive memory),或一自旋轉移力矩記憶體(Spin-transfer-torque memory))。
參閱圖3,說明本發明一測試固態儲存裝置之韌體的方法的一實施例,以下稱為虛擬壓力測試(VST)。
在步驟31,該運算設備2的儲存器提供多個二進制碼,該多個二進制碼是根據該運算設備2的一指令集架構,且藉由編譯該固態儲存裝置(例如:固態硬碟)之該韌體所產生的。確切地說,為了能在該運算設備2上測試該固態硬碟的韌體,一根據一X86指令集架構的編譯器編譯該韌體的快閃記憶體轉譯層,以產生多個二進制碼,該多個二進制碼是以一動態連結共享物件為例,該動態連結共享物件的附檔名為”.so”,且該多個二進制碼是X86的二進制碼並被儲存在該運算設備2的儲存器。
在步驟32,該運算設備2的中央處理單元21控制該運算設備2的主記憶體22,以模仿(emulate)該固態硬碟的一揮發性記憶體及一非揮發性記憶體,來提供一仿真的揮發性記憶體及一仿真的非揮發性記憶體。確切地說,該虛擬壓力測試透過使用該運算設備2的主記憶體22模仿該固態硬碟的硬體,例如該揮發性記憶體(即: 靜態隨機存取記憶體或動態隨機存取記憶體)與該非揮發性記憶體(即:該快閃記憶體),以實現虛擬固態硬碟硬體23(如圖2所示)。此外,參閱圖4,透過使用該運算設備2的主記憶體22,一資料結構被提出來模仿該固態硬碟的快閃記憶體。該中央處理單元21被配置為用以建立用於模仿該固態硬碟之該非揮發性記憶體的資料結構,該資料結構在該主記憶體22內。該資料結構包含多個陣列,每一陣列包含多個子陣列。每一陣列對應到該固態硬碟之包含多個快閃記憶體元件的一記憶庫(bank)(也稱為一記憶通道或一記憶群),每一子陣列代表包含多個快閃頁(page)的一區塊(block),且每一快閃頁包含一已被擦除(erased)欄位、一邏輯頁數(Logical page number, LPN)欄位,及一資料指標欄位。該已被擦除欄位指出該快閃頁是否已被擦除,該邏輯頁數欄位是一用以紀錄該快閃頁之該邏輯頁數的標籤,以及該資料指標欄位在當該快閃頁的資料是不可忽略時被配置記憶體空間。應被注意的是,該固態硬碟的揮發性記憶體與非揮發性記憶體的多個實體位址應該被重現在該仿真的揮發性記憶體與該仿真的非揮發性記憶體,以用來確保該固態硬碟之該多個記憶體的仿真正確。
在步驟33,該中央處理單元21擷取一測試序列,該測試序列包含用以存取該固態硬碟之一邏輯位址的一讀取請求,及用以存取該固態硬碟之另一邏輯位址的一寫入請求。確切地說,與輸入/輸出相關及被該虛擬壓力測試所支援的多個應用程式介面(APIs)被提出。相關於輸入/輸出的該多個應用程式介面係用於產生一待測之快閃記憶體轉譯層的(多個)讀取請求或(多個)寫入請求。其引數(arguments)是起始邏輯區塊位址(Logical block address , LBA)與該被請求之資料的長度。此外,模仿一固態硬碟的多個輸入/輸出請求是根據多個軌跡檔案(trace files)或根據一仿隨機(pseudo-random)數字的種子所產生的一隨機序列,透過合成(synthesize)該讀取與寫入請求來辦到。例如,軌跡檔案可被利用來模仿一視訊錄影情境中,主端資料(例如:仿真的視訊資料)被寫入到該固態硬碟,而該被中央處理單元21擷取的該測試序列是基於該情境模仿中資料被讀取或寫入之一資料的順序或一資料的數量。本發明的虛擬壓力測試也提供其他通用型(generic)應用程式介面,例如讀取一仿真之動態隨機存取記憶體的字元,或擦除一仿真的快閃記憶體區塊,藉以將快閃記憶體轉譯層物件與該固態硬碟的仿真硬體介接。
在步驟34,該中央處理單元21根據該測試序列從存放在該儲存器中的該多個二進制碼擷取一讀取操作及一寫入操作。確切地說,該固態硬碟的韌體是由韌體原始碼所構成,該韌體原始碼包含以下指令及函數呼叫操作:寫入該固態硬碟的一揮發性記憶體;讀取該固態硬碟的一揮發性記憶體;寫入該固態硬碟的一非揮發性記憶體;及讀取該固態硬碟的一非揮發性記憶體。該固態硬碟的韌體被編譯以得到該多個二進制碼。在一實施例中,該中央處理單元21執行該多個二進制碼,以將該讀取請求及該寫入請求分別轉譯成該讀取操作及該寫入操作,並根據該讀取請求將被存取的該邏輯位址轉譯成一實體位址,該實體位址屬於該仿真的揮發性記憶體與該仿真的非揮發性記憶體的其中之一,以及將根據該寫入請求而被存取的該另一邏輯位址轉譯成另一實體位址,該另一實體位址屬於該仿真的揮發性記憶體與該仿真的非揮發性記憶體的其中之一。因為該讀取操作及該寫入操作是分別根據該測試序列的讀取請求及寫入請求而被擷取出,所以該讀取操作指定對應該固態硬碟之該邏輯位址的實體位址,以存取該讀取請求所請求的該邏輯位址,以及該寫入操作指定對應該固態硬碟之該邏輯位址的該另一實體位址,該另一邏輯位址是被該寫入請求所請求的。值得注意的是,該測試序列可以包含總數為數百萬(或甚至更多)個請求,且每一請求可以被轉譯成一個或多個操作。
在步驟35,該中央處理單元21判定該讀取操作是否與一標記有關聯,該標記指出一從該實體位址所被讀取之資料與韌體操作無關。本發明使用該標記的目的是為了解決當固態硬碟的韌體是直接在一電腦或一伺服器上模擬時,大量使用記憶體及冗餘記憶體存取的問題。從與韌體操作有關聯的其他資料區分出儲存在快閃記憶體中但與韌體操作無關的主端資料,例如音樂檔案、影像檔案,或視訊檔案,可顯著地減少模擬一大容量固態硬碟時的記憶體流量及用量(footprint),並加快該測試的速度。因此,該(多個)標記被預期添加在固態硬碟之韌體的快閃記憶體轉譯層中,用來註記資料區分資訊,並在當快閃記憶體的應用程式介面被調用時作為參考。在一實施例中,在該中央處理單元21是在執行該多個二進制碼,以將該讀取請求或該寫入請求轉譯為該讀取操作或該寫入操作的過程中,將該標記添加到該讀取操作或該寫入操作中。
此外,在一固態硬碟的實際操作中,韌體的快閃記憶體轉譯層經常執行隨機存取記憶體填充(fill)與隨機存取記憶體複製(copy),但其中很大一部分實際上與快閃記憶體轉譯層測試無關。舉例來說:在讀取一已擦除的快閃頁時,快閃記憶體轉譯層會將一隨機存取記憶體暫存區域填充為0xFF位元組,或者在一寫入請求觸發一讀取-修改-寫入(read-modify-write)過程時,快閃記憶體轉譯層會在多個隨機存取記憶體暫存區域間複製資料,但事實上該快閃記憶體轉譯層本身不需要這些隨機存取記憶體資料,而導致許多冗餘操作。如同處理快閃記憶體資料,在快閃記憶體轉譯層測試期間,該(多個)標記也被添加,以在該快閃記憶體轉譯層中註記每個隨機存取記憶體填充或隨機存取記憶體複製是否為可省略的。
在本實施例中,該韌體操作包含一邏輯位址與一實體位址的對應轉譯(mapping),但不以此為限。
在步驟36,當該讀取操作被判定與該標記無關時,該中央處理單元21執行該讀取操作,以從該實體位址讀取該資料,該實體位址屬於被該讀取操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一。換句話說,當該中央處理單元21判定從該實體位址被讀取之該資料是與韌體操作有關,而非屬於例如音樂檔案、影像檔案、視訊檔案,以及諸如此類之資料,則該讀取操作會完全地被執行,以從該實體位址讀取該資料。該實體位址為所述的該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一。
在步驟37,當該讀取操作被判定是跟該標記有關聯時,該中央處理單元21丟棄一從該實體位址讀取該資料的動作,該實體位址是被該讀取操作所指定的。該注意的是,該中央處理單元21在本步驟僅丟棄一讀取該資料的動作,但依然會執行如讀取”邏輯頁數”資訊及讀取”已被擦除”資訊之其他動作。
在步驟38,該中央處理單元21判定該寫入操作是否與該標記有關聯,該標記指出被寫入到該另一實體位址之資料與韌體操作無關。本步驟的詳細操作類似於步驟35,不再贅述。
在步驟39,當該寫入操作被判定與該標記無關時,該中央處理單元21執行該寫入操作,以將該資料寫入該另一實體位址,該另一實體位址屬於被該寫入操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一。換句話說,當該中央處理單元21判定該另一實體位址被寫入的該資料是與韌體操作有關,例如不屬於音樂檔案、影像檔案、視訊檔案,以及諸如此類資料,該寫入操作會完全地被執行,以向該另一實體位址寫入該資料,該另一實體位址屬於所述的該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一。
在步驟40,當該寫入操作被判定與該標記有關聯時,該中央處理單元21丟棄一寫入該資料到該另一實體位址的動作,該另一實體位址是被該寫入操作所指定的。該注意的是,該中央處理單元21在本步驟僅丟棄一寫入該資料的動作,但依然執行如設定”邏輯頁數”資訊及設定”已被擦除”資訊之其他動作。
在步驟41,該中央處理單元21監測該讀取操作與該寫入操作的執行過程是否達到該測試準則。在一實施例中,該測試準則指出一失敗的壓力測試,該失敗的壓力測試包含以下多個情況的至少其中之一: 韌體已超過一閾值的時間未曾處理請求(即:韌體當住)、一(仿真的)快閃頁未被擦除即被寫入第兩次、一區塊的多個快閃頁沒有被按照一預定義的順序寫入,或一被從一(仿真的)快閃頁讀取出的邏輯區塊位址與一藉由一讀取請求所請求的該邏輯區塊位址不同。在一實施例中,該測試準則指出一通過的壓力測試,該通過的壓力測試包含以下多個情況的至少其中之一:多個讀取與寫入請求的一總數量超過一仿真快閃記憶體之一容量的一個倍數(例如:100倍)、多個擦除操作的一總數量超過一預定的數量,或發生斷電及失電事件的總次數超過一預設的次數。
在步驟42,當該測試達到該測試準則時,該中央處理單元21產生一對該固態硬碟的韌體之測試的結果(例如:該虛擬壓力測試是通過的或失敗的)。若該固態硬碟的韌體沒有通過該測試,該結果包含該虛擬壓力測試的輸出(outcomes),該虛擬壓力測試的輸出提供關於該錯誤的所在函數及該錯誤表現出什麼樣的不正常行為之資訊的線索。工程師們能據此檢查在固態硬碟的快閃記憶體轉譯層韌體中的(多個)韌體錯誤。
關於該實施例的步驟35和38的詳細操作,該標記是以一引數被加入到該讀取操作與該寫入操作,以指出從該讀取操作指定的該實體位址所被讀取的該資料及該寫入操作指定的該另一實體位址所被寫入的該資料皆與該韌體操作無關。該中央處理單元21藉由判定該讀取操作的一引數是否被該標記標示,以判定該讀取操作與該標記是否有關聯,以及藉由判定該寫入操作的一引數是否被該標記標示,以判定該寫入操作與該標記是否有關聯。參閱下列表1,該標記被示例地加入以標示該讀取操作(參見FTL.c的虛擬碼中的第6行和第8行)。
表1
TestModeMain.c |
1: main() 2: { 3: While(1){ 4: (ReqType, ReqAddr, BufAddr1) = GetReq() ;5: HostReq(ReqType, ReqAddr, BufAddr1); 6: } 7: } |
FTL.c |
1: HostReq(ReqType, ReqAddr, BufAddr1) 2: { 3: if (ReqType == Read) { 4: FlashPageRead(FlashAddr2, BufAddr2, FTLData); 5: FlashAddr1 = Buf[BufAddr2]; 6: FlashPageRead(FlashAddr1, BufAddr1, NotFTLData); 7: } else { 8: FlashPageWrite(FlashAddr3, BufAddr1, NotFTLData); 9: Buf[BufAddr3] = FlashAddr3; 10: FlashPageWrite(FlashAddr4, BufAddr3, FTLData); 11: } 12: } |
TestModeFlash.c |
1: FlashPageRead(FlashAddr, BufAddr, Marker) 2: { 3: if(Marker == NotFTLData){ 4: … 5: }else if(Marker == FTLData){ 6: … 7: } 8: } |
在本實施例的一不同的實施態樣中,關於步驟35和38的詳細操作可以變成將該標記被包含在一被該中央處理單元21執行的函數中,例如一主函數(main function),且該標記指出從一指定的位址或一指定範圍的多個位址所被讀取或寫入的資料與該韌體操作無關。該中央處理單元21判定該讀取操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體之其中之一的該實體位址是否對應到該函數的該標記所指出的該(多個)指定的位址,以及判定該寫入操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體之其中之一的該另一實體位址是否對應到該函式的該標記所指出的該(多個)指定的位址。下列表2示例該標記被加入到該主函數以指出該(多個)指定的位址所被讀取或寫入的資料與該韌體操作無關(參見TestModeMain.c的虛擬碼中的第6行)。
表2
TestModeMain.c |
1: main() 2: { 3: While(1){ 4: (ReqType, ReqAddr, BufAddr1) = GetReq(); 6: NotFTLData[BufAddr1] = true; 7: HostReq(ReqType, ReqAddr, BufAddr1); 8: NotFTLData[BufAddr1] = false; 9: } 10: } |
FTL.c |
1: HostReq(ReqType, ReqAddr, BufAddr1) 2: { 3: if (ReqType == Read) { 4: FlashPageRead(FlashAddr2, BufAddr2); 5: FlashAddr1 = Buf[BufAddr2]; 6: FlashPageRead(FlashAddr1, BufAddr1); 7: } else { 8: FlashPageWrite(FlashAddr3, BufAddr1); 9: Buf[BufAddr3] = FlashAddr3; 10: FlashPageWrite(FlashAddr4, BufAddr3); 11: } 12: } |
TestModeFlash.c |
1: FlashPageRead(FlashAddr, BufAddr) 2: { 3: if(NotFTLData[BufAddr] == true){ 4: … 5: }else{ 6: … 7: } 8: } |
在一實施例中,除了該讀取請求與該寫入請求之外,該測試序列還包含表示固態硬碟電源開/關或突然失電的事件、固態硬碟的初始損壞的快閃記憶體區塊的地址,以及讀取/寫入(program)/擦除失敗事件。該中央處理單元21在接收到一表示該固態儲存裝置的電源開、電源關,及突然失電之其中之一事件之通知後,會停止擷取該讀取操作及該寫入操作,且銷毀儲存在該仿真的揮發性記憶體的資料。
參閱圖5,描述更多關於本發明之該測試固態儲存裝置之韌體的系統(以下稱為虛擬壓力測試系統)的實施方式。
在一實施例中,該虛擬壓力測試系統測試一固態硬碟的一韌體原始碼51,該韌體原始碼51包含一個或更多個以下指令及函數呼叫操作:寫入該固態硬碟的一揮發性記憶體位址、讀取該固態硬碟的一揮發性記憶體位址、寫入該固態硬碟的一非揮發性記憶體位址,及讀取該固態硬碟的一非揮發性記憶體位址。
在一實施例中,該韌體原始碼51更包含一個或更多個以下的標記:一標記其指定一寫入該固態硬碟之揮發性或非揮發性記憶體的動作可以安全地被該虛擬壓力測試系統丟棄、一標記其指定一讀取該固態硬碟的揮發性或非揮發性記憶體的動作可以安全地被該虛擬壓力測試系統丟棄、一標記其指定該固態硬碟的揮發性記憶體之一指定的範圍的全部讀取及寫入動作可以安全地被該虛擬壓力測試系統丟棄,及一標記其指定該固態硬碟的非揮發性記憶體之一指定的範圍的全部讀取及寫入動作可以安全地被該虛擬壓力測試系統丟棄。
在一實施例中,該韌體原始碼51可以被一X86編譯器52編譯以產生一X86二進制檔(X86 binary)。該X86編譯器52可以與一代碼混淆器(obfuscator)54合作。該X86編譯器52根據在該韌體原始碼51中的多個標記,以安全地丟棄、更改,或插入一個或更多個操作。該代碼混淆器54也可根據在該韌體原始碼51中的多個標記,以安全地丟棄、更改,或插入一個或更多個操作。該代碼混淆器54係用以防止從該X86二進制檔53反向地重建出該韌體原始碼51,及防止從該X86二進制檔53轉換成為一可被一固態硬碟執行的二進制檔。一個或多個標記可被保持在該X86二進制檔53。該韌體原始碼51可被一進階精簡指令集機器 (Advanced RISC machine, ARM)編譯器55編譯,以產生一進階精簡指令集機器二進制檔56。該進階精簡指令集機器編譯器55可移除包含在該進階精簡指令集機器二進制檔56的某些或全部的標記。
在一實施例中,該虛擬壓力測試系統57包含一X86中央處理單元571及一主記憶體572,該主記憶體572模仿該固態硬碟的一揮發性記憶體593及一非揮發性記憶體594,以提供一仿真的揮發性記憶體573及一仿真的非揮發性記憶體574。該X86中央處理單元571擷取一測試序列501及一個或多個測試準則502。該X86中央處理單元571根據該虛擬壓力測試的測試序列501從一用以儲存該X86二進制檔53的裝置58擷取多個操作。該裝置58可以是一光碟、一硬碟、一動態隨機存取記憶體,以及諸如此類。該X86中央處理單元571根據該被擷取的多個操作以對該固態硬碟的該仿真的揮發性記憶體573及該仿真的非揮發性記憶體574進行多次讀取操作或多次寫入操作。該虛擬壓力測試系統57(特別是該X86中央處理單元571)根據保持在該X86二進制檔53中的多個標記,可安全地丟棄一個或更多個讀取與寫入操作。該虛擬壓力測試系統57(特別是該X86中央處理單元571)監測該所有的準則502是否皆被達到。若該所有的準則502皆被達到,則該虛擬壓力測試系統57(特別是該X86中央處理單元571)輸出一結果,該結果指出該韌體原始碼51及該X86二進制檔53已經通過該測試。
在一實施例中,一固態硬碟59包括一儲存該進階精簡指令集機器二進制檔56的裝置591、一基於進階精簡指令集機器的控制器592、一揮發性記憶體593,及一非揮發性記憶體594。儲存該進階精簡指令集機器二進制檔56的該裝置591可以是靜態隨機存取記憶體、動態隨機存取記憶體、快閃記憶體,以及諸如此類。該基於進階精簡指令集機器的控制器592執行該進階精簡指令集機器二進制檔56的多個操作,以及相對應地對該揮發性記憶體593與該非揮發性記憶體594進行多次讀取或多次寫入。該固態硬碟59還包括一用以指出該韌體原始碼51及該X86二進制檔53已經通過該虛擬壓力測試的證明595。該證明595可以是一印在一固態硬碟產品上的標記、一貼在一固態硬碟產品上的貼紙、一被公告在網際網路的固態硬碟產品描述,以及諸如此類。在一實施例中,若一電子裝置包含一與韌體有關聯的固態儲存模組已經通過了本發明的虛擬壓力測試,則該電子裝置亦可被提供該證明595。當該電子裝置是被示例成一車用電腦、一行動裝置,或諸如此類的,該固態儲存模組可以是一固態硬碟或一安全數位記憶卡。當該電子裝置是被示例成一固態硬碟、一安全數位記憶卡、一快閃記憶體隨身碟(USB drive),或諸如此類,該固態儲存模組分別是該固態硬碟本身、該安全數位記憶卡本身、該快閃記憶體隨身碟本身。
在一實施例中,該證明595等同地表示該所有測試的準則502在給予該測試序列501的情況下皆被達到。例如,該證明595可以包含一虛擬隨機數字的種子,且該測試序列501是依據該種子而被指定的。
在一實施例中,該X86中央處理單元571是其他高效能處理器,且該X86編譯器52也隨之而變。在一實施例中,該基於進階精簡指令集機器的控制器592是基於其他嵌入式處理器,且該進階精簡指令集機器編譯器55也隨之而變。在一實施例中,該虛擬壓力測試系統57包括一碟盤及一網路介面。在一實施例中,該固態硬碟59的非揮發性記憶體594是反及快閃記憶體、可變電阻式記憶體、磁阻式記憶體、或相變化記憶體。在一實施例中,該固態硬碟59的揮發性記憶體593是多個正反器、多個暫存器檔案(register files)、靜態隨機存取記憶體、仿靜態隨機存取記憶體(pseudo SRAM)、嵌入式動態隨機存取記憶體(embedded DRAM),或動態隨機存取記憶體。
在包含相較於固態硬碟中嵌入式處理器更高速之中央處理單元的一計算設備上,對一固態儲存裝置的韌體的快閃記憶體轉譯層做壓力測試,使用單核心中央處理單元就可以讓壓力測試達到高達每秒111個十億位元組(GB/s)的速度,若使用四核心中央處理單元,速度更提升到高達375個十億位元組(GB/s),也就是說,比直接在固態硬碟硬體上測試快閃記憶體轉譯層要快上幾百倍。
藉由上述該資料結構的設計用於固態硬碟之快閃記憶體的仿真,及導入該多個標記用以指出要被讀取或被寫入一實體位址的資料是與該韌體操作無關的,也就是說,那些資料是可以在測試中被忽略的,一快閃記憶體轉譯層可以在該個人電腦或伺服器上以數十億赫茲(GHz)之頻率被執行,就像是一本機個人電腦或伺服器本身的程式般一樣快速。此外,如圖2所示,多個快閃記憶體轉譯層的物件可以同時進行測試,且該測試速度是受到個人電腦或伺服器之該記憶體系統與X86處理器的限制,而不是受到快閃記憶體或低功耗處理器的速度限制。一旦在快閃記憶體轉譯層的測試期間發生一失敗情況,工程師們可以輕易地重現該失敗情況,並使用一般的除錯方式像是革努除錯器(GNU debugger, GDB),在個人電腦或伺服器環境下分析該失敗情況。
舉例來說,虛擬壓力測試偵測出OpenSSD設計七個新的快閃記憶體轉譯層的錯誤,這是虛擬壓力測試能有效偵測錯誤的有力證據。如果沒有虛擬壓力測試,將會很難發現和調查這些錯誤。如果不使用虛擬壓力測試,工程師們將很難找出這些錯誤,因為韌體是複雜的,該多個錯誤皆與細微的邊界條件有關,且其中某些錯誤只發生在垃圾資料回收(GC)中,其需要大量的寫入請求來觸發。再者,即便上述這些錯誤也可能使真正基於固態硬碟的壓力測試失敗而被發現,但若沒有虛擬壓力測試,要在真實的固態硬碟中重現該錯誤及找尋該錯誤的來源仍然是極困難且耗時的任務。
綜上所述,根據本發明該測試固態儲存裝置之韌體的方法,能夠在不使用任何固態硬碟硬體或不受固態硬碟之速度限制下,執行多個快閃記憶體轉譯層的測試。
惟以上所述者,僅為本發明的實施例而已,當不能以此限定本發明實施的範圍,凡是依本發明申請專利範圍及專利說明書內容所作的簡單的等效變化與修飾,皆仍屬本發明專利涵蓋的範圍內。
11······· 壓力測試軟體 12······· 電腦 13······· 固態硬碟 14······· 快閃記憶體轉譯層 15······· 中央處理單元 2········ 運算設備 21······· 中央處理單元 22······· 主記憶體 23······· 虛擬固態硬碟硬體 31~42·· 流程圖步驟 502····· 準則 51······· 韌體原始碼 52······· X86編譯器 53······· X86二進制檔 54······· 代碼混淆器 55······· 進階精簡指令集機器編譯器 | 56······· 進階精簡指令集機器二進制檔 57······· 虛擬壓力測試系統 571····· X86中央處理單元 572····· 主記憶體 573····· 仿真揮發性記憶體 574····· 仿真非揮發性記憶體 58······· 儲存X86二進制檔的裝置 59······· 固態硬碟 591····· 裝置 592····· 基於進階精簡指令集機器的控制器 593····· 揮發性記憶體 594····· 非揮發性記憶體 595····· 證明 |
本發明的其他的特徵及功效,將於參照圖式的實施方式中清楚地呈現,其中: 圖1是一架構圖,說明直接在固態硬碟上由一電腦執行一真實基於固態硬碟測試的傳統作法; 圖2是一架構圖,說明一包含一運算設備的系統,該系統被配置成用以實現本發明一測試固態儲存裝置之韌體的方法; 圖3是一流程圖,說明該測試固態儲存裝置之韌體的方法的一實施例; 圖4是一架構圖,說明該實施例的一資料結構,該資料結構利用該運算設備的一主記憶體以模仿一固態硬碟的一快閃記憶體;及 圖5圖是一方塊圖,說明本發明該測試固態儲存裝置之韌體的系統的更多實施例。
Claims (26)
- 一種用於測試一固態儲存裝置之韌體的方法藉由一運算設備實現,該運算設備包含一中央處理單元、一主記憶體,及一存有至少一測試準則的儲存器,該方法包含: (A)該記憶體及該儲存器的其中之一提供多個二進制碼,該多個二進制碼是根據該運算設備的一指令集架構且藉由編譯該固態儲存裝置之該韌體所產生的; (B)該中央處理單元控制該主記憶體模仿該固態儲存裝置的一揮發性記憶體,以提供一仿真的揮發性記憶體; (C)該中央處理單元控制該主記憶體模仿該固態儲存裝置的一非揮發性記憶體,以提供一仿真的非揮發性記憶體; (D)該中央處理單元擷取一包含一讀取請求及一寫入請求的測試序列,該讀取請求用以存取該固態儲存裝置的一邏輯位址,該寫入請求用以存取該固態儲存裝置的另一邏輯位址; (E)該中央處理單元根據該測試序列,從該多個二進制碼中擷取一讀取操作及一寫入操作; (F)該中央處理單元判定該讀取操作是否與一標記有關聯,該標記是用以指出從對應到該邏輯位址之一實體位址所要被讀取的資料與韌體操作無關; (G)當該中央處理單元判定該讀取操作與該標記無關時,則該中央處理單元執行該讀取操作,以從該實體位址讀取該資料,該實體位址屬於被該讀取操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一; (H)當該中央處理單元判定該讀取操作是跟該標記有關聯時,則該中央處理單元丟棄該讀取操作所指定的一從該實體位址讀取該資料的動作; (I)該中央處理單元判定該寫入操作是否與該標記有關聯,該標記是用以指出對應到該另一邏輯位址之另一實體位址所要被寫入的資料與韌體操作無關; (J)當該中央處理單元判定該寫入操作與該標記無關時,則該中央處理單元執行該寫入操作,以將該資料寫入該另一實體位址,該另一實體位址屬於被該寫入操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一; (K)當該中央處理單元判定該寫入操作是跟該標記有關聯時,該中央處理單元丟棄該寫入操作所指定的一該資料寫入到該另一實體位址的動作; (L)該中央處理單元監測該讀取操作與該寫入操作的執行過程是否達到該測試準則;及 (M)當該中央處理單元監測到該讀取操作與該寫入操作的執行過程達到該測試準則時,該中央處理單元產生該韌體測試的一結果。
- 如請求項1所述的用於測試一固態儲存裝置之韌體的方法,其中,該標記是以一引數被添加到該讀取操作與該寫入操作,以指出該讀取操作指定的該實體位址所被讀取的該資料,及該寫入操作指定的該另一實體位址所被寫入的該資料皆與該韌體操作無關。
- 如請求項2所述的用於測試一固態儲存裝置之韌體的方法,其中,該韌體操作包括一邏輯位址與一實體位址間的對應轉譯。
- 如請求項2所述的用於測試一固態儲存裝置之韌體的方法,其中, 步驟(F)包含判定該讀取操作的一引數是否被標示該標記,以指出從該實體位址所讀取之資料與韌體操作無關;及 步驟(I)包含判定該寫入操作的一引數是否被標示該標記,以指出該另一實體位址所被寫入之資料與韌體操作無關。
- 如請求項1所述的用於測試一固態儲存裝置之韌體的方法,其中,該標記是被包含在一函數,該函數是被該中央處理單元所執行以用來實現該方法,且指出一指定的位址所被讀取或寫入的資料與該韌體操作無關。
- 如請求項5所述的用於測試一固態儲存裝置之韌體的方法,其中,該韌體操作包含一邏輯位址與一實體位址間的對應轉譯。
- 如請求項5所述的用於測試一固態儲存裝置之韌體的方法,其中, 步驟(F)包含判定該讀取操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的實體位址是否對應到該函數的該標記所指出的該指定的位址;及 步驟(I)包含判定該寫入操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的另一實體位址是否對應到該函數的該標記所指出的該指定的位址。
- 如請求項1所述的用於測試一固態儲存裝置之韌體的方法,其中,該測試準則指出一失敗的壓力測試,且包含以下至少一情況: 韌體已超過一閾值的時間未曾處理請求; 一快閃頁沒有擦除卻被寫入兩次; 一區塊的多個快閃頁沒有被按照一預定義的順序寫入;或 一被從一快閃頁讀取出的邏輯區塊位址與一讀取請求所請求的邏輯區塊位址不同。
- 如請求項1所述的用於測試一固態儲存裝置之韌體的方法,其中,該測試準則指出一通過的壓力測試,且包括以下至少一情況: 一讀取與寫入請求的總數量超過一仿真快閃記憶體之一容量的一個倍數; 一擦除操作的總數量超過一預定的數量;或 一發生斷電及失電事件的總次數超過一預設的次數。
- 如請求項1所述的用於測試一固態儲存裝置之韌體的方法,其中,步驟(C)包括: 該中央處理單元在該主記憶體中建構一資料結構,該資料結構用於模仿該固態儲存裝置的非揮發性記憶體,該資料結構包括多個子陣列,每一子陣列表示一具多個快閃頁的區塊,及每一快閃頁具有一已被擦除欄位、一邏輯頁數欄位,及一資料指標欄位,該已被擦除欄位指出該快閃頁是否被擦除,該邏輯頁數欄位為一用以紀錄該快閃頁之該邏輯頁數的標籤,該資料指標欄位在當該快閃頁的資料是不可忽略時被配置記憶體空間。
- 如請求項1所述的用於測試一固態儲存裝置之韌體的方法,其中,該多個二進制碼是藉由編譯該固態儲存裝置之該韌體的一快閃轉譯層所產生的,該編譯過程是根據一X86的指令集架構。
- 如請求項1所述的用於測試一固態儲存裝置之韌體的方法,更包括: 該中央處理單元接收到一表示該固態儲存裝置的通電、斷電,及突然失電之其中之一事件之通知後,停止擷取該讀取操作及該寫入操作,且銷毀儲存在該仿真的揮發性記憶體的資料。
- 一用於測試一固態儲存裝置的韌體的系統,該系統包含一運算設備,該運算設備包括: 一主記憶體; 一用於儲存一測試準則的儲存器且被配置成用以提供多個二進制碼,該多個二進制碼是藉由編譯該固態儲存裝置之該韌體所產生的,該編譯過程是根據該運算設備的一指令集架構;及 一中央處理單元電連接該主記憶體及該儲存器,且被配置成用以: 控制該主記憶體模仿該固態儲存裝置的一揮發性記憶體及一非揮發性記憶體,以提供一仿真的揮發性記憶體及一仿真的非揮發性記憶體, 擷取一測試序列,該測試序列包含一用以存取該固態儲存裝置之一邏輯位址的讀取請求,及一用以存取該固態儲存裝置之另一邏輯位址的寫入請求, 根據該測試序列從儲存在該儲存器的多個二進制碼擷取一讀取操作及一寫入操作, 判定該讀取操作是否與一標記有關聯,該標記是用以指出從對應到該邏輯位址之一實體位址所要被讀取的資料與韌體操作無關, 當該讀取操作被判定與該標記無關時,則執行該讀取操作以從該實體位址讀取該資料,該實體位址屬於被該讀取操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一, 當該讀取操作被判定與該標記有關聯時,則丟棄一從該讀取操作所指定的該實體位址讀取該資料的動作, 判定該寫入操作是否與該標記有關聯,該標記是用以指出對應到該另一邏輯位址之該另一實體位址所要被寫入的資料與韌體操作無關, 當該寫入操作被判定與該標記無關時,則執行該寫入操作以向該另一實體位址寫入該資料,該另一實體位址屬於被該寫入操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的其中之一, 當該寫入操作被判定與該標記有關聯時,則丟棄一向該另一實體位址寫入該資料的動作,該另一實體位址是該寫入操作所指定的, 監測該讀取操作與該寫入操作的執行過程是否達到該測試準則,及 當監測到該測試準則被達到時,產生該韌體測試的一結果。
- 如請求項13所述的用於測試一固態儲存裝置之韌體的系統,其中,該標記是以一引數被添加到該讀取操作與該寫入操作,以指出從該讀取操作指定的該實體位址所被讀取的該資料,及該寫入操作指定的該另一實體位址所被寫入的該資料皆與該韌體操作無關。
- 如請求項14所述的用於測試一固態儲存裝置之韌體的系統,其中,該韌體操作包括一邏輯位址與一實體位址間的對應轉譯。
- 如請求項14所述的用於測試一固態儲存裝置之韌體的系統,其中,該中央處理單元更被配置成用以: 判定該讀取操作的一引數是否被標示該標記,其指出從該實體位址所被讀取之資料與韌體操作無關;及 判定該寫入操作的一引數是否被標示該標記,其指出從該另一實體位址所要被寫入之資料與韌體操作無關。
- 如請求項13所述的用於測試一固態儲存裝置之韌體的系統,其中,該標記是被包含在一函數,該函數是被該中央處理單元所執行以用來實現該方法,且指出一指定的位址所被讀取或寫入的資料與該韌體操作無關。
- 如請求項17所述的用於測試一固態儲存裝置之韌體的系統,其中,該韌體操作包括一邏輯位址與一實體位址間的對應轉譯。
- 如請求項17所述的用於測試一固態儲存裝置之韌體的系統,其中,該中央處理單元更被配置成用以: 判定來自於被該讀取操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的實體位址是否對應到該指定的位址,該指定的位址被包含在該函數的標記所指出;及 判定來自於被該寫入操作所指定之該仿真的揮發性記憶體及該仿真的非揮發性記憶體的另一實體位址是否對應到該指定的位址,該指定的位址被包含在該函數的標記所指出。
- 如請求項13所述的用於測試一固態儲存裝置之韌體的系統,其中,該測試準則指出一失敗的壓力測試,且包括以下至少一情況: 韌體已超過一閾值的時間未曾處理請求; 一快閃頁未被擦除即被寫入第兩次; 一區塊的多個快閃頁沒有被按照一預定義的順序寫入;或 一被從一快閃頁讀取出的邏輯區塊位址與一藉由一讀取請求所請求的邏輯區塊位址不同。
- 如請求項13所述的用於測試一固態儲存裝置之韌體的系統,其中,該測試準則指出一通過的壓力測試,且包含以下至少一情況: 一讀取與寫入請求的總數量超過一仿真快閃記憶體之一容量的一個倍數; 一擦除操作的總數量超過一預定的數量;或 一發生斷電及失電事件的總次數超過一預設的次數。
- 如請求項13所述的用於測試一固態儲存裝置之韌體的系統,其中,該中央處理單元被更進一步地配置成用以在該主記憶體中建構一資料結構,該資料結構用於模仿該固態儲存裝置的非揮發性記憶體,該資料結構包括多個子陣列,每一子陣列表示一具多個快閃頁的區塊,及每一快閃頁具有一已被擦除欄位、一邏輯頁數欄位,及一資料指標欄位,該已被擦除欄位指出該快閃頁是否已被擦除,該邏輯頁數欄位為一用以紀錄該快閃頁之邏輯頁數的標籤,該資料指標欄位在當該快閃頁的資料是不可忽略時被配置記憶體空間。
- 如請求項13所述的用於測試一固態儲存裝置之韌體的系統,其中,該多個二進制碼是藉由編譯該固態儲存裝置之該韌體的一快閃記憶體轉譯層所產生的,該編譯過程是根據一X86的指令集架構。
- 如請求項13所述的用於測試一固態儲存裝置之韌體的系統,其中,該中央處理單元接收到一表示該固態儲存裝置的通電、斷電,及突然失電之其中之一事件之通知後,停止擷取該讀取操作及該寫入操作,且銷毀儲存在該仿真的揮發性記憶體的資料。
- 一電子裝置包含: 一與韌體有關聯的固態儲存模組,該韌體已經通過一測試,該測試是通過執行如請求項1所述的用於測試一固態儲存裝置之韌體的方法; 其中,該電子裝置被提供以包括有一證明,該證明用以指出該固態儲存模組的韌體已經通過該測試。
- 如請求項25所述的該電子裝置,其中,該證明是一印在該電子裝置的標記、一在該電子裝置上的貼紙,及一被公告在網際網路的描述的其中之一。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762580593P | 2017-11-02 | 2017-11-02 | |
US62/580593 | 2017-11-02 | ||
US16/159045 | 2018-10-12 | ||
US16/159,045 US10504605B2 (en) | 2017-11-02 | 2018-10-12 | Method and system for testing firmware of solid-state storage device, and electronic apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201933110A TW201933110A (zh) | 2019-08-16 |
TWI674503B true TWI674503B (zh) | 2019-10-11 |
Family
ID=66243255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107137928A TWI674503B (zh) | 2017-11-02 | 2018-10-26 | 用於測試固態儲存裝置之韌體的方法與系統以及電子設備 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10504605B2 (zh) |
TW (1) | TWI674503B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10585615B1 (en) | 2018-05-10 | 2020-03-10 | Seagate Technology Llc | Virtual flash system |
US10642747B1 (en) * | 2018-05-10 | 2020-05-05 | Seagate Technology Llc | Virtual flash system |
CN110399257A (zh) * | 2019-07-04 | 2019-11-01 | 上海创功通讯技术有限公司 | 存储器的检测方法、电子设备及计算机可读存储介质 |
CN110716833B (zh) * | 2019-09-29 | 2023-03-21 | 东莞记忆存储科技有限公司 | 用于测量ssd单次进入ps4状态时所造成的nand flash写入量的方法 |
US11170866B2 (en) * | 2019-10-22 | 2021-11-09 | Micron Technology, Inc. | Managing block retirement for temporary operational conditions |
CN111666184B (zh) * | 2020-06-29 | 2024-07-09 | 腾讯科技(深圳)有限公司 | 固态驱动器ssd硬盘测试方法、装置及电子设备 |
CN112395146A (zh) * | 2020-11-27 | 2021-02-23 | 深圳忆联信息系统有限公司 | Ssd固件仿真验证方法、系统、计算机设备及存储介质 |
CN112835777B (zh) * | 2021-02-23 | 2023-07-14 | 得一微电子股份有限公司 | 一种提高flash仿真准确性的方法、系统 |
CN113176859B (zh) * | 2021-05-24 | 2022-11-08 | 锐掣(杭州)科技有限公司 | 数据存储方法与装置 |
CN113345510B (zh) * | 2021-06-29 | 2022-06-10 | 珠海一微半导体股份有限公司 | 一种flash的容量识别方法及容量识别系统 |
US11967391B2 (en) * | 2021-08-06 | 2024-04-23 | SK Hynix Inc. | System and method for testing multicore SSD firmware based on preconditions generation |
CN113986721B (zh) * | 2021-10-22 | 2024-08-06 | 深圳忆联信息系统有限公司 | Ssd fnv功能恢复写性能的测试方法、装置、计算机设备及存储介质 |
CN116564398B (zh) * | 2023-05-26 | 2023-12-22 | 北京得瑞领新科技有限公司 | nor闪存的检测方法、装置及嵌入式设备 |
CN118244999B (zh) * | 2024-05-29 | 2024-09-20 | 苏州元脑智能科技有限公司 | 一种固态硬盘读方法、程序产品、设备及介质 |
CN118312110A (zh) * | 2024-06-07 | 2024-07-09 | 山东云海国创云计算装备产业创新中心有限公司 | 闪存数据处理方法、装置、计算机设备以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201504937A (zh) * | 2013-07-31 | 2015-02-01 | Ibm | 由實體儲存裝置中所選分區所構成的虛擬儲存裝置 |
TW201523280A (zh) * | 2013-11-12 | 2015-06-16 | Microsoft Corp | 構建虛擬主機板以及虛擬儲存裝置 |
TW201606652A (zh) * | 2014-06-06 | 2016-02-16 | 蘋果公司 | 使用先進先出之介面仿真器 |
TW201712538A (zh) * | 2015-09-22 | 2017-04-01 | 新唐科技股份有限公司 | 除錯系統與方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239618B2 (en) | 2010-05-27 | 2012-08-07 | Dell Products L.P. | System and method for emulating preconditioning of solid-state device |
TWI432962B (zh) * | 2011-10-06 | 2014-04-01 | Mstar Semiconductor Inc | 電子系統及其記憶體管理方法 |
KR101491626B1 (ko) | 2013-07-01 | 2015-03-05 | 성균관대학교산학협력단 | 메모리 저장 장치, 데이터베이스를 위한 트랜잭션 기능을 지원하는 방법 및 메모리 시스템 |
CN103399783A (zh) | 2013-08-07 | 2013-11-20 | 曙光信息产业(北京)有限公司 | 虚拟机的镜像文件的存储方法和装置 |
US9830099B1 (en) * | 2015-09-17 | 2017-11-28 | Amazon Technologies, Inc. | Secure erase of storage devices |
KR20170075855A (ko) | 2015-12-23 | 2017-07-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
-
2018
- 2018-10-12 US US16/159,045 patent/US10504605B2/en active Active
- 2018-10-26 TW TW107137928A patent/TWI674503B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201504937A (zh) * | 2013-07-31 | 2015-02-01 | Ibm | 由實體儲存裝置中所選分區所構成的虛擬儲存裝置 |
TW201523280A (zh) * | 2013-11-12 | 2015-06-16 | Microsoft Corp | 構建虛擬主機板以及虛擬儲存裝置 |
TW201606652A (zh) * | 2014-06-06 | 2016-02-16 | 蘋果公司 | 使用先進先出之介面仿真器 |
TW201712538A (zh) * | 2015-09-22 | 2017-04-01 | 新唐科技股份有限公司 | 除錯系統與方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201933110A (zh) | 2019-08-16 |
US20190130990A1 (en) | 2019-05-02 |
US10504605B2 (en) | 2019-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI674503B (zh) | 用於測試固態儲存裝置之韌體的方法與系統以及電子設備 | |
US9158661B2 (en) | Enhanced debugging for embedded devices | |
US10261705B2 (en) | Efficient data consistency verification for flash storage | |
US11169870B2 (en) | Managing the migration of virtual machines in the presence of uncorrectable memory errors | |
WO2019174205A1 (zh) | 一种垃圾回收的方法、装置及存储设备 | |
TWI738680B (zh) | 監視處理器之操作之系統 | |
KR102243791B1 (ko) | 메모리 기반 통신 프로토콜을 사용하여 시뮬레이션된 장치를 테스트하기 위한 시스템 및 방법 | |
KR20150037002A (ko) | Fpga 기반의 비실장형 스토리지 테스트 장치 | |
US20080229035A1 (en) | Systems and methods for implementing a stride value for accessing memory | |
US20180364304A1 (en) | Stimulus generation for component-level verification | |
US20230004320A1 (en) | Method of managing debugging log in storage device | |
US10395751B2 (en) | Automated testing system and operating method thereof | |
CN111324414B (zh) | Nvm存储介质模拟器 | |
US20180341723A1 (en) | Triggering untriggered assertions in design verification | |
CN114860628A (zh) | 模拟计算系统中的存储器追踪 | |
KR102102248B1 (ko) | 솔리드 스테이트 드라이브 에뮬레이터의 동작 테스트 방법 | |
Zhang et al. | Benchmarking for observability: The case of diagnosing storage failures | |
CN107861795B (zh) | 模拟物理tcm芯片的方法、系统、装置及可读存储介质 | |
Liu et al. | VST: A virtual stress testing framework for discovering bugs in SSD flash-translation layers | |
TWI633434B (zh) | 管理固態硬碟之方法、系統及電腦可讀取媒體 | |
KR20210034456A (ko) | 메모리 컨트롤러, 스토리지 장치 및 상기 스토리지 장치의 동작 방법 | |
US20230026712A1 (en) | Generating system memory snapshot on memory sub-system with hardware accelerated input/output path | |
TWI764581B (zh) | 記憶體檢查方法、記憶體檢查裝置及記憶體檢查系統 | |
TWI794997B (zh) | 固態硬碟裝置的除錯方法及裝置以及電腦程式產品 | |
Byers et al. | Contagious errors: Understanding and avoiding issues with imaging drives containing faulty sectors |