TWI760674B - 快閃記憶體開卡裝置所使用來寫入開機啟動資訊至記憶體裝置的方法、記憶體裝置的控制器及所使用的方法 - Google Patents

快閃記憶體開卡裝置所使用來寫入開機啟動資訊至記憶體裝置的方法、記憶體裝置的控制器及所使用的方法 Download PDF

Info

Publication number
TWI760674B
TWI760674B TW109100001A TW109100001A TWI760674B TW I760674 B TWI760674 B TW I760674B TW 109100001 A TW109100001 A TW 109100001A TW 109100001 A TW109100001 A TW 109100001A TW I760674 B TWI760674 B TW I760674B
Authority
TW
Taiwan
Prior art keywords
block
page
random
indexes
generate
Prior art date
Application number
TW109100001A
Other languages
English (en)
Other versions
TW202034310A (zh
Inventor
黃聖元
Original Assignee
慧榮科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Publication of TW202034310A publication Critical patent/TW202034310A/zh
Application granted granted Critical
Publication of TWI760674B publication Critical patent/TWI760674B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一種被一快閃記憶體開卡裝置所使用以寫入開機啟動資訊至一記憶體裝置的方法,記憶體裝置具有控制器與快閃記憶體,該方法包括:產生開機啟動資訊;基於第一亂數種子通過呼叫隨機函式來產生N個區塊索引;對每一該N個區塊索引產生M個頁索引;組合該M個頁索引與每一該N個區塊索引來產生M×N個候選的列位址;以及通過控制該控制器依序基於該M×N個候選的列位址來寫入開機啟動資訊至屬於至少一區塊的M個儲存頁,從快閃記憶體開卡裝置寫入開機啟動資訊至快閃記憶體。

Description

快閃記憶體開卡裝置所使用來寫入開機啟動資訊至記憶體裝 置的方法、記憶體裝置的控制器及所使用的方法
本發明係關於一種初始化一快閃記憶體的機制,特別指的是一快閃記憶體開卡裝置所使用的方法、被使用於記憶體裝置的控制器以及被使用於記憶體裝置的控制器所使用的方法。
一般來說,一快閃記憶體裝置包含一控制器與一快閃記憶體,其中當該控制器被供電時該控制器需要在一計時器到期之前從該快閃記憶體成功讀取出開機啟動資訊,以便使用該開機啟動資訊來從該快閃記憶體擷取出韌體,而該開機啟動資訊可能儲存於該快閃記憶體的一特定區塊中。然而,如果該快閃記憶體變成是一降級的產品且該快閃記憶體的該特定區塊是一壞塊,則該記憶體裝置的存取將會失敗。
傳統的方法可能會在初始化快閃記憶體時該將該開機啟動資訊儲存至一或多個區塊中固定的多個儲存頁,而當該控制器被供電時從該些固定的儲存頁中讀取出該開機啟動資訊,例如,傳統的方法會儲存該開機啟動資訊至一個區塊中由一個固定個數的儲存頁數(例如每64個儲存頁)所隔開的多個儲存頁,而如果在該計時器到期之前該控制器最多只會嘗試512次從該快閃記憶體讀出該開機啟動資訊的操作,則當一個區塊具有128個儲存頁時該控制器只能夠檢查該開機啟動資訊是否儲存於該快閃記憶體的256個連續的區塊中。然而,如果 一個區塊具有4096個儲存頁,則該控制器只能夠檢查該開機啟動資訊是否儲存於該快閃記憶體的8個連續的區塊中,也就是說,如果該8個連續的區塊均成為壞塊,則該控制器便無法擷取出該開機啟動資訊而得到該韌體,該控制器及記憶體裝置的操作將會失敗,如此一來,傳統方法實無法被應用於各種各樣類型的快閃記憶體產品。
因此本發明的目的之一在於提供一快閃記憶體開卡裝置所使用的方法、被使用於記憶體裝置的控制器以及被使用於記憶體裝置的控制器所使用的方法,以解決上述的問題。
根據本發明實施例,其係公開一種被一快閃記憶體開卡裝置所使用用來寫入開機啟動資訊至一記憶體裝置的方法,該記憶體裝置包括一控制器與一快閃記憶體,以及該方法包含:於該快閃記憶體開卡裝置產生該開機啟動資訊;通過設定一第一亂數種子及基於該第一亂數種子來呼叫一隨機函式以產生N個區塊索引,其中該N個區塊索引係隨機分散於從零至一最大區塊索引個數的範圍;對每一該N個區塊索引,產生M個頁索引;相應地組合該M個頁索引與每一該N個區塊索引來產生M×N個候選的列位址;以及通過從該快閃記憶體開卡裝置傳送該開機啟動資訊至該控制器並基於該M×N個候選的列位址來控制該控制器依序寫入該開機啟動資訊至屬於至少一區塊的M個儲存頁,以從該快閃記憶體開卡裝置寫入該開機啟動資訊至該快閃記憶體。
根據本發明實施例,其係公開一種被使用於一記憶體裝置中的控制器,該記憶體裝置另具有一快閃記憶體,以及該控制器包含一唯讀記憶體及一處理電路,唯讀記憶體用來記錄一特定程式碼及一第一亂數種子;處理電路耦接至該唯讀記憶體,並用來當該控制器被供電時讀取該特定程式碼與該第一亂 數種子,並用來執行該特定程式碼以:通過設定該第一亂數種子及基於該第一亂數種子來呼叫一隨機函式以產生N個區塊索引,其中該N個區塊索引係隨機分散於從零至一最大區塊索引個數的範圍;對每一該N個區塊索引,產生M個頁索引;相應地組合該M個頁索引與每一該N個區塊索引來產生M×N個候選的列位址;基於該M×N個候選的列位址,依序從屬於至少一區塊的M個儲存頁讀取開機啟動資訊;以及基於成功從該至少一區塊所讀取出的該開機啟動資訊來從該快閃記憶體取得一韌體程式以執行該韌體程式。
根據本發明實施例,其係公開一種被使用於一記憶體裝置中的一控制器所使用的方法,該記憶體裝置另具有一快閃記憶體,以及該方法包含:提供一唯讀記憶體以用來記錄一特定程式碼與一第一亂數種子;當該控制器被供電時讀取該特定程式碼與該第一亂數種子;以及執行該特定程式碼以:通過設定該第一亂數種子並基於該第一亂數種子來呼叫一隨機函式來產生N個區塊索引,其中該N個區塊索引係隨機分散於從零至一最大區塊索引個數的範圍;對每一該N個區塊索引,產生M個頁索引;相應地組合該M個頁索引與每一該N個區塊索引來產生M×N個候選的列位址;基於該M×N個候選的列位址來依序從屬於至少一區塊的M個儲存頁中讀取開機啟動資訊;以及基於成功從該至少一區塊所讀取出的該開機啟動資訊來從該快閃記憶體取得一韌體程式以執行該韌體程式。
100:記憶體裝置
105:控制器
110:快閃記憶體
115:處理電路
120:隨機存取記憶體
125:唯讀記憶體
150:開卡裝置
第1圖是本發明一實施例之使用一快閃記憶體開卡裝置寫入開機啟動資訊至一記憶體裝置之實施例的方塊示意圖。
第2圖是本案第1圖之實施例上述的多個候選列位址的範例示意圖。
第3圖是本發明一實施例使用運行於該開卡工具裝置上的該開卡程式來初始 化該快閃記憶體的流程示意圖。
第4圖是第3圖之實施例當該控制器出廠後被供電時該控制器的操作流程示意圖。
請參照第1圖,其係為本發明一實施例之使用一快閃記憶體開卡裝置150寫入開機啟動資訊(boot up information)至一記憶體裝置100之實施例的方塊示意圖。該記憶體裝置100例如是一儲存裝置,例如是固態硬碟(solid-state drive)或是SD(secure digital)記憶卡;但不限定。該記憶體裝置100包含一控制器105以及一快閃記憶體110。該控制器105包含一處理電路115、一隨機存取記憶體(random access memory,RAM)120以及一唯讀記憶體(read-only memory,ROM)125,該唯讀記憶體125記錄一開機啟動程式碼以及一或多個亂數種子(seed),該一或多個亂數種子用來呼叫一隨機函式。
該快閃記憶體開卡裝置150例如是一計算機,該計算機用於當該製造商生產該記憶體裝置100(例如固態硬碟或SD記憶卡)時作為一開卡工具裝置(initialization tool device)而被一記憶體裝置製造商所使用來載入一開卡程式(initialization program)以產生一開機啟動資訊,該該開卡程式以及該控制器105可由一控制器製造商所提供。該開卡工具裝置150係通過一介面(例如USB介面)而連接至該記憶體裝置100;但不限定。
舉例來說,在該記憶體裝置製造商決定該快閃記憶體的類型並選擇一相應的控制器之後,該記憶體裝置製造商通過載入並執行該控制器製造商所提供的該開卡程式來初始化(開卡)該快閃記憶體110。該開卡程式係產生該開機啟動資訊並通過該USB介面傳送所產生的開機啟動資訊至該控制器105的該隨機存取記憶體120。
接著,該控制器105將緩衝於該隨機存取記憶體120中的該開機啟動資訊傳送並寫入該快閃記憶體110中的一或多個適當的區塊及/或一或多個適當的儲存頁;亦即,該開卡裝置150被安排用來控制該控制器105寫入該開機啟動資訊至該快閃記憶體110。該快閃記憶體110用來儲存該開機啟動資訊的一或多個區塊/儲存頁的儲存位置,亦即是該一或多個適當的區塊及/或一或多個適當的儲存頁,其係由運行於該開卡工具裝置150的該開卡程式根據一特定規則所決定的,此使得該一或多個適當的區塊及/或一或多個適當的儲存頁在等效上可以被盡量隨機地分散/分佈於所有區塊或儲存頁的範圍。儲存該開機啟動資訊至被盡可能隨機分散的該一或多個適當的區塊及/或一或多個適當的儲存頁係用以避免由於回流過程(reflow process)的高溫易造成一個區塊變成是壞塊(bad block)或是易使一個頁的資料受到影響。
該控制器105的該唯讀記憶體125也記錄相同的特定規則,因此,在出廠之後,當該記憶體裝置100被供電時,該控制器105的該處理電路115可以基於記錄在該唯讀記憶體125中的該相同的特定規則,從該快閃記憶體110中的該一或多個適當的區塊及/或該一或多個適當的頁成功讀取出該開機啟動資訊。該處理電路115接著可以基於該開機啟動資訊從該快閃記憶體110的一特定位置讀取出或擷取得並執行一專用的韌體程式。亦即,該開卡程式用以決定該一或多個適當的區塊及/或一或多個適當的儲存頁的操作係類似於該控制器105用以找到一或多個適當的區塊及/或一或多個適當的儲存頁的操作。
應注意的是,該快閃記憶體110用於記錄該開機啟動資訊的一個區塊或一儲存頁也可以被稱為一資訊區塊或一資訊頁。
如上所述,運行於該開卡工具裝置150上的該開卡程式所採用的程序等效上係被安排用以隨機地選擇該快閃記憶體中的一或多個區塊及/或一或多個儲存頁來作為一或多個資訊區塊及/或一或多個資訊頁。
實作上,該開卡程式被安排產生一候選的或優選的(golden)列位址表,該候選的或優選的列位址表用於記錄哪些列位址是被選擇或被使用作為多個候選或優選列位址以儲存該開機啟動資訊至該些候選或優選的列位址的其中至少一個所相應的至少一個區塊。該開卡程式係用來決定該些候選列位址,使得該些候選列位址可被隨機分散於多個區塊及多個儲存頁。
應注意的是,一個列位址係由一個區塊索引以及一個頁索引所形成或組合的,在每一個區塊中全部或所有列位址的數目係由一總區塊數以及一總儲存頁數所決定的,例如,該區塊索引的範圍是從零到該總區塊數減一,而該頁索引的範圍是從零到該總儲存頁數減一。
為了涵蓋和支持不同類型以及可能具有不同的總區塊數的多個快閃記憶體(其中每個區塊可能具有不同的總儲存頁數,例如128、256、512、1024、2048或4096個儲存頁;但不限於此),該開卡程式係用來在該列位址表中產生足夠多的候選列位址,以便該開機啟動資訊可以被成功地寫入至被隨機分散於不同類型的多個快閃記憶體的所有區塊的一或多個位置上的至少一個區塊。因此,如果該快閃記憶體110是一降級的快閃記憶體,例如具有一半連續壞塊的快閃記憶體,則該開機啟動信息仍可以被成功寫入至少一個區塊中。
在一實施例,假設該快閃記憶體110包括總區塊數等於NB的值,其中NB可以等於2048,並且每個區塊中的總儲存頁數的最小值等於128;也就是,該快閃記憶體110包括2048個區塊,並且在不同的例子中每個區塊可以具有128、256、512、1024、2048或4096個儲存頁;然此並非是本案的限制。
對於2048個區塊每一個均具有128個儲存頁的設計來說,該開卡程式被安排用來根據整數N的值(N大於1)將範圍從0至128×2048(亦即218)的多個列位址均勻地(平均地)分類或分割為N個區塊群組(即區塊索引群組),每一區塊群組具有複數個連續的列位址。例如,該整數N可以等於16(但不限 定),而該開卡程式會將該多個列位址分類至16個區塊群組,每一區塊群組具有16384個(即214)分別對應於不同的儲存頁的連續的列位址。等效上該開卡程式係將2048個區塊分類為16個區塊群組,每一區塊群組具有128個連續的區塊,每一區塊具有128個連續的儲存頁。
對於該N個區塊群組(例如16個區塊群組)的每一個,該開卡程式係用來產生一區塊隨機整數作為一區塊索引,該區塊索引係與一個區塊中的128個連續的儲存頁有關;例如,對於一第一區塊群組,係產生了範圍從0至127的一區塊隨機整數,而對於一第二區塊群組,係產生了範圍從128至255的一區塊隨機整數,其他依此類推。
在得到N個區塊索引之後,對於每一個區塊群組,該開卡程式係用來根據一相應的區塊索引來選取出一個相應的區塊的128個儲存頁,並接著對於所選出的該些128個儲存頁來產生M個頁隨機整數作為M個頁索引,如此,該開卡程式產生了該N個區塊索引以及每個區塊索引的M個頁索引,接著該開卡程式被安排用來基於該N個區塊索引以及每一個區塊隨機整數所相應的M個頁索引來決定N×M個列位址作為候選的多個列位址,因此,該N×M個候選的列位址被平均並隨機地分散於多個區塊及多個儲存頁。
實作上,對於一個區塊中有128個儲存頁的設計來說在第一輪產生該N×M個候選的列位址,該開卡程式係設定一亂數種子RS1來依序產生由a11、a12、…、a1N所表示的N個區塊索引,該N個區塊索引等效上可用來表示出相應的多個區塊的選擇結果,並可由以下關係式表示之: 0
Figure 109100001-A0305-02-0010-73
a11<
Figure 109100001-A0305-02-0010-1
Figure 109100001-A0305-02-0010-2
a12<
Figure 109100001-A0305-02-0010-3
×2-1
....
Figure 109100001-A0305-02-0011-4
×(N-1)
Figure 109100001-A0305-02-0011-74
a1N<NB
其中該區塊索引a11係從0至
Figure 109100001-A0305-02-0011-5
-1的範圍所隨機選取出的值,該區塊索引a12係從
Figure 109100001-A0305-02-0011-7
至(
Figure 109100001-A0305-02-0011-8
×2)-1的範圍所隨機選取出的值,...,而該區塊索引a1N係從
Figure 109100001-A0305-02-0011-9
×(N-1)至NB的範圍所隨機選取出的值,舉例來說,NB等於2048,而
Figure 109100001-A0305-02-0011-6
-1等於127,該區塊索引a11係從0至127的範圍所隨機選取出的值,相似地,其他區塊索引的值也是基於上述關係式所決定。
此外,該開卡程式係被執行用來確保該些區塊索引所相應的該些區塊係均勻地(平均地)分散於或位於不同的平面(plane),例如,如果N等於16且該快閃記憶體110包含四個平面,則該開卡程式被用來微調該些區塊索引a11、a12、…、a1N的一部分以便令該些區塊索引a11、a12、…、a1N的所相應的N個區塊分別位於不同的4個平面,例如,N等於16,四個平面的每一個均包含有四個區塊是被該開卡時式選擇作為一或多個資訊區塊的候選。
實作上,該開卡程式被安排用來對該些區塊索引a11、a12、…、a1N進行一模數操作,例如,如果根據除數為4對於a11、a12、a13進行的模數操作所產生的餘數分別等於2、0、0,則該開卡程式可將a11的數值調整為a11減去1,將a13的數值調整為a13減去1,並且不需要調整a12的數值,如此,由於根據除數為4對於調整後的a11、a12、a13進行的模數操作所產生的餘數是不相同,例如分別等於1、0、3,因此該開卡程式就可以令調整後的區塊索引a11、a12、a13所相應的區塊位於不同的平面,應注意,此例子僅是用於說明解釋而並非是本案的限制;此外,對於該些整數進行模數操作的操作也並非是本案的限制。
對於每一個區塊索引,在決定出一特定區塊索引所相應的一個區塊之後,該開卡程式係被執行用來決定出在該區塊中的多個儲存頁的一部分是可作為儲存該開機啟動資訊之用,其中該多個儲存頁的該部分是隨機地位於該區塊中,該開卡程式係用來將該區塊中的總儲存頁等效地分類為M個頁群組(即頁 索引群組)並分別且隨機地從每一個頁群組中選擇出一個儲存頁來決定出隨機分散的M個儲存頁,其中M的數值可以等於8(但不限定)。
實作上,該開卡程式用來採用並設定一亂數種子RS2來產生由x11、x12、…、x1M所表示的M個頁索引,該M個頁索引用來表示相應的儲存頁數的選擇結果並可由以下的關係式所表示之:0
Figure 109100001-A0305-02-0012-75
x11<
Figure 109100001-A0305-02-0012-10
Figure 109100001-A0305-02-0012-84
x12<
Figure 109100001-A0305-02-0012-12
×2
....
Figure 109100001-A0305-02-0012-14
×(M-1)
Figure 109100001-A0305-02-0012-76
x1M<
Figure 109100001-A0305-02-0012-15
×M
其中該頁索引x11係從0至
Figure 109100001-A0305-02-0012-85
-1的範圍所隨機選取出的值,頁索引 x12係從
Figure 109100001-A0305-02-0012-17
至(
Figure 109100001-A0305-02-0012-18
×2)-1的範圍所隨機選取出的值,...,以及頁索引x1N係從
Figure 109100001-A0305-02-0012-19
×(M-1)至2 n 的範圍所隨機選取出的值,例如,2 n 表示該快閃記憶體110中每一個區塊的一最小總儲存頁個數,並且例如等於128(即n等於7),
Figure 109100001-A0305-02-0012-20
-1例如等於15。在一實施例中,對於不同類型的快閃記憶體的每一個區塊的總儲存頁數可能是不同的,例如可以是128、256、512、1024、2048、4096等等(但不限定),也就是說,一個區塊的最小總儲存頁個數可以等於是128,而一個區塊的最大總儲存頁個數可以等於是4096。該頁索引x1係從0至15的範圍中所隨機決定,相似地其他多個頁索引也是基於上述關係式所決定。
因此,在第一輪對於每一區塊具有128個儲存頁的設計來說,該開卡程式會產生該些區塊索引a11、a12、…、a1N以及該些頁索引x111、x112、…、x11M、x121、x122、…、x12M、…、x1N1、x1N2、…、x1NM,如此通過組合該些區塊索引及該些頁索引可產生該N×M個候選的列位址,該N×M個候選的列位址可由以下的關係式所表示之: a11×2n+
Figure 109100001-A0305-02-0013-21
a12×2n+
Figure 109100001-A0305-02-0013-22
.....
a1N×2n+
Figure 109100001-A0305-02-0013-23
應注意的是,如果亂數種子RS1沒有被重設的話,則設定相同的亂數種子RS1來多次地呼叫一隨機函式以依序產生一組多個隨機整數作為多個區塊索引的隨機整數結果會相同於基於相同亂數種子RS1在第一次所產生的多個隨機整數結果,也就是說,多次地使用該亂數種子RS1來產生一組多個隨機整數作為多個區塊索引的結果均會相同於上述a11、a12、…、a1N的結果,如此,在出廠之後,該控制器105仍可基於相同的亂數種子RS1來產生相同的a11、a12、…、a1N作為該多個區塊索引。
相似地,如果亂數種子RS2沒有被重設的話,則設定相同的亂數種子RS2來多次地呼叫一隨機函式以依序產生一組多個隨機整數作為多個頁索引的隨機整數結果會相同於基於相同亂數種子RS2在第一次所產生的多個隨機整數結果,也就是說,多次地使用該亂數種子RS2來產生一組多個隨機整數作為多個頁索引的結果均會相同於上述x111、x112、…、x11M、x121、x122、…、x12M、…、x1N1、x1N2、…、x1NM的結果,如此,在出廠之後,該控制器105仍可基於相同的亂數種子RS2來產生相同的x111、x112、…、x11M、x121、x122、…、x12M、…、x1N1、x1N2、…、x1NM作為該多個頁索引。
應注意的是,運行於該開卡工具裝置150上的該開卡程式所採用的相同或相似的規則也被記錄於該控制器105的唯讀記憶體125中,如此,在出廠之後,當該控制器105被供電時也可以產生相同的多個候選的列位址以及從該些候選的列位址中依序使用一個候選列位址從一相應的儲存頁擷取得該開機啟動資訊以便基於該開機啟動資訊來得到該韌體程式。
而在產生了該N×M個候選的列位址之後,該開卡程式係用來依序使用在該N×M個候選的列位址中相應於一區塊的M個候選的列位址來寫入該開機啟動資訊至與該M個候選列位址有關的M個儲存頁,以及接著從該M個候選列位址的儲存頁中讀出資料以檢查是否該開機啟動資訊被成功寫入該些儲存頁。例如,該開卡程式係傳送該開機啟動資訊至該控制器105以及控制該控制器105的該處理電路115來寫入該開機啟動資訊至與該些候選列位址a11×2n+
Figure 109100001-A0305-02-0014-25
有關的儲存頁。如果該區塊是一個壞塊而該開機啟動資訊沒有被成功地寫入至該些儲存頁,則該開卡程式會控制該 控制器105的該處理電路115來寫入該開機啟動資訊至與該些候選列位址a12×2n+
Figure 109100001-A0305-02-0015-27
有關的儲存頁。該開卡程式會持續控制該控制器105的該處理電路115來寫入該開機啟動資訊至多個儲存頁,直到該開機啟動資訊成成功寫入為止才結束。本例子並非是本案的限制。在一實施例,該開卡程式也可以基於上述多個候選的列位址來控制該控制器105的該處理電路115以寫入該開機啟動資訊至兩個或多個區塊的儲存頁。
如此,對於該控制器105,在從該開卡工具裝置150接收到該開機啟動資訊之後,該處理電路115被安排用來基於運行於開卡工具裝置150上的該開卡程式所決定及送出的該多個候選的列位址來暫存該開機啟動資訊於該隨機存取記憶體120並接著寫入該開機啟動資訊至一個區塊。
此外,在一實施例,該開卡程式被執行以確保所隨機選取的多個頁索引x111、x112、…、x11M、x121、x122、…、x12M、…、x1N1、x1N2、…、x1NM的值可以是多個奇數值的頁索引被多個偶數值的頁索引所分隔的奇偶相間的配置組合。該開卡程式係用來微調x111、x112、…、x11M、x121、x122、…、x12M、…、x1N1、x1N2、…、x1NM的一部分,例如,如果多個頁索引x111、x112及x113分別等於10、34及80,則該開卡程式例如被安排用來調整該整數值x111為9以及調整該整數值x113為79;然而,這並非是本案的限制。
應注意的是,上述該些隨機選取的頁索引x111、x112、…、x11M、x121、x122、…、x12M、…、x1N1、x1N2、…、x1NM係由該開卡程式對於具有多個區塊每一個區塊具有一最小儲存頁數目例如是128個儲存頁的快閃記憶體110的類型所決定的。
在其他實施例,為了涵蓋及支持具有不同大小儲存頁個數的多個區塊的不同類型的快閃記憶體,該開卡程式被安排用來產生較多的候選列位址,使得用以儲存該開機啟動資訊的選擇可以是被均勻且隨機地分散於一個區塊的所有儲存頁。這避免了在回流高溫所產生資料損壞的風險。再者,該控制器105也可以基於相同的規則來產生相同於前述的多個列位址,以便正確地從至少一儲存頁擷取得該開機啟動資訊的一份備份,以擷取得並啟動該韌體程式。
例如,在一實施例,該開卡程式被安排用來產生較多且足夠多的候選的列位址以涵蓋具有不同大小儲存頁個數(例如最大總儲存頁數是4096;但不限定)的多個區塊的不同類型的快閃記憶體。對於多個區塊索引,該開卡程式被安排用來設定該亂數種子RS1並接著呼叫隨機函式來依序產生K×N個區塊索引,K×N個區塊索引可由a11、a12、…、a1N、a21、a22、…、a2N、…、ak1、ak2、…、akN所表示,該K×N個區塊索引等效上用來表示相應的多個區塊的選擇並可由以下的關係式所表示之:0
Figure 109100001-A0305-02-0016-77
a11<
Figure 109100001-A0305-02-0016-28
Figure 109100001-A0305-02-0016-72
a12<
Figure 109100001-A0305-02-0016-29
×2-1
....
Figure 109100001-A0305-02-0016-31
×(N-1)
Figure 109100001-A0305-02-0016-78
a1N<NB
....
0
Figure 109100001-A0305-02-0016-79
a21<
Figure 109100001-A0305-02-0016-32
Figure 109100001-A0305-02-0016-33
a22<
Figure 109100001-A0305-02-0016-34
×2-1
....
Figure 109100001-A0305-02-0016-35
×(N-1)
Figure 109100001-A0305-02-0016-80
a2N<NB
....
0
Figure 109100001-A0305-02-0017-81
ak1<
Figure 109100001-A0305-02-0017-36
Figure 109100001-A0305-02-0017-37
ak2<
Figure 109100001-A0305-02-0017-38
×2-1
....
Figure 109100001-A0305-02-0017-39
×(N-1)
Figure 109100001-A0305-02-0017-82
akN<NB
其中由於4096被128所除之後的結果等於32,是25,所以k的值例如是等於5;然而,這並非是本案的限制。該k的值例如可以是在從2至一個區塊所包含的最大總儲存頁個數所相應的一個整數值的範圍,如果最大總儲存頁個數等於4096,則最大總儲存頁個數所相應的一個整數值等於5。
對於多個頁索引,該開卡程式被安排用來設定該亂數種子RS2以及對於每一個區塊索引接著相應地呼叫該隨機函式來依序產生M個頁索引,其中該k×N×M個頁索引x111、x112、…、x11M、x121、x122、…、x12M、…、x1N1、x1N2、…、x1NM、…及xk11、xk12、…、xk1M、xk21、xk22、…、xk2M、…、xkN1、xkN2、…、xkNM可由以下的關係式所表示之:
Figure 109100001-A0305-02-0017-44
×(j-1)
Figure 109100001-A0305-02-0017-83
x1ij<
Figure 109100001-A0305-02-0017-46
×j,i=1,2,...,N and j=1,2,...,M
Figure 109100001-A0305-02-0017-43
i=1,2,...,N and j=1,2,...,M
....
Figure 109100001-A0305-02-0017-41
i=1,2,...,N and j=1,2,...,M and k=3,...,K
其中如果最大總儲存頁個數等於4096,則K的值例如等於5。
在一實施例,如果快閃記憶體110中的每一個區塊具有256個儲存頁,則該開卡程式被安排用來使用該多個頁索引x111、x112、…、x11M、x121、x122、…、x12M、…、x1N1、x1N2、…、x1NM來依序分別對於每一N個區塊索引來產生M個頁索引,其中SN1j指的是例如是從1開始的一串序號,例如SN11等於1, SN12等於2,SN13等於3,其他依此類推。因此,對於128×2(k-1)個儲存頁的設計,如果N等於16且M等於8,則該開卡程式被用來通過組合相應的多個頁索引及多個區塊索引來產生16×8×k個候選的列位址,例如如果k的值等於2則產生256個候選的列位址,其中該多個候選的列位址可以由以下的關係式所表示: ak1×2n+(k-1)+
Figure 109100001-A0305-02-0018-47
ak2×2n+(k-1)+
Figure 109100001-A0305-02-0018-48
.....
akN×2n+(k-1)+
Figure 109100001-A0305-02-0018-49
其中
Figure 109100001-A0305-02-0018-50
i=1,2,...,N and j=1,2,...,M and k=1,...,K及SN(k-1)j包含有多串序號,該多串序號的值可以是相同的或可以分別是不同的。
通過這樣,上述該微調產生的多個頁索引會具有隨機且均勻地(平均地)從0至最大儲存頁個數的範圍所選出的效果,且相應地該開卡程式會控制該控制器105依序寫入該開機啟動資訊至該些候選的列位址所相應的實體儲存頁。該控制器105會持續寫入該開機啟動資訊,直到該開機啟動資訊已經成功地寫入至屬於至少一個區塊的多個候選列位址所相關的多個儲存頁時才停止寫入。
因此,在上述實施例,當初始化該記憶體裝置100時該開卡程式會被安排用來寫入該開機啟動資訊至一或多個區塊的M個儲存頁。例如,該開機啟動資訊係在當該記憶體裝置100被供電時被該處理電路115用來得到該韌體程式並例如包含有4KB的資料量,而一個區塊的一個儲存頁可以被用來儲存16KB的資料,也就是說,在這個例子中,四份該開機啟動資訊的備份會被寫入至一儲存頁。只有在該處理電路115可以從一或多個區塊的M個儲存頁中的一個儲存頁正確地得到或讀取到該開機啟動資訊時在該記憶體裝置100被供電之後,該控制器105才可以正確執行操作。
當出廠後該控制器105被供電時,該處理電路115被用來採用記錄於唯讀記憶體125中的該亂數種子RS1來呼叫該隨機函式以產生相同的區塊索引,並使用記錄於唯讀記憶體125中的該亂數種子RS2來呼叫隨機函式以產生相同的頁索引,以據此相應地組合多個區塊索引與多個頁索引來依序產生並得到與該開卡程式產生相同的候選列位址。接著該處理電路115被安排用來依序基於該多個候選列位址的其中一個來擷取得該開機啟動資訊。
再者,在一實施例,當初始化該快閃記憶體110時,運行於該開卡工具裝置150上的該開卡程式可被安排用來忽略多個候選頁索引的一部分。例如,該處理電路115可在第一輪(次)時產生M×N個候選的列位址,在第二輪時產生
Figure 109100001-A0305-02-0019-51
個候選的列位址,其中第二輪的M×N個候選的列位址中的前半部分係被 捨棄不用,在第三輪時產生
Figure 109100001-A0305-02-0020-52
個候選的列位址,其中第三輪的M×N個候選的列位址中的前半部分係被捨棄不用,其他依此類推。這種作法可以有效地改善系統效能。
第2圖是本案第1圖之實施例上述的多個候選列位址的範例示意圖,如第2圖所示,該點線CV表示該開卡時式或該控制器105當被供電時在不同次所產生的候選的或優選的列位址的不同個數變化,例如,第一輪r1係相應於對於具有128個儲存頁的一個區塊所產生的M×N個候選的列位址,第二輪r2係相應於對於具有256個儲存頁的一個區塊所另外產生的
Figure 109100001-A0305-02-0020-53
個候選的列位址,第三輪r3係相應於對於具有512個儲存頁的一個區塊所另外產生的
Figure 109100001-A0305-02-0020-55
個候選的列位址,第四輪r4係相應於對於具有1024個儲存頁的一個區塊所另外產生的
Figure 109100001-A0305-02-0020-56
個候選的列位址,其他依此類推。該點線CV等效上形成了一個指數函數曲線,用以表示當一個區塊被設計為包括有更多的儲存頁時兩個候選的列位址之間的一列位址間隔會變得愈來愈寬。
為了令讀者更清楚地明白本發明的精神,本案提供第3圖與第4圖,步驟的相應操作說明則不再重述以節省篇幅。第3圖是本發明一實施例使用運行於該開卡工具裝置150上的該開卡程式來初始化該快閃記憶體110的流程示意圖。第4圖是第3圖之實施例當該控制器105出廠後被供電時該控制器105的操作流程示意圖。倘若可達到相同的結果,並不需要一定照第3圖、第4圖所示之流程中的步驟順序來進行,且第3圖、第4圖所示之步驟不一定要連續進行,亦即其他步驟亦可插入其中;本發明的方法的流程步驟詳述如下:步驟305:開始;步驟310:使用該開卡程式來根據整數N的值將多個列位址均勻地分類或分割為N個區塊群組,每一區塊群組具有複數個連續的列位址;步驟315:使用該開卡程式來對每一該N個區塊群組來產生一區塊隨 機整數作為一區塊索引;步驟320:在得到N個區塊索引之後,對每一區塊群組,使用該開卡程式根據一相應的區塊索引來選出一相應的區塊的多個儲存頁;步驟325:對於所選出的多個儲存頁,使用該開卡程式來產生M個頁隨機整數作為M個頁索引;步驟330:使用該開卡程式,基於該N個區塊索引及相應於每一區塊隨機整數的M個頁索引來決定N×M個列位址作為多個候選的列位址;步驟335:使用該開卡程式來依序使用一組M個列位址來寫入該開機啟動資訊至該快閃記憶體110;步驟340:決定該開機啟動資訊是否被成功寫入到至少一組列位址;如果被成功寫入,則該流程進行步驟345;反之,流程進行步驟335;以及步驟345:結束。
步驟405:開始;步驟410:該控制器根據整數N的值將多個列位址均勻地分類或分割為N個區塊群組,每一區塊群組具有複數個連續的列位址;步驟415:該控制器對每一該N個區塊群組產生一區塊隨機整數作為一區塊索引;步驟420:在得到N個區塊索引之後,對每一區塊群組,該控制器根據一相應的區塊索引來選出一相應的區塊的多個儲存頁;步驟425:對於所選出的多個儲存頁,該控制器產生M個頁隨機整數作為M個頁索引;步驟430:該控制器基於該N個區塊索引及相應於每一區塊隨機整數的M個頁索引來決定N×M個列位址作為多個候選的列位址; 步驟435:該控制器依序使用一組M個列位址從該快閃記憶體110讀取該開機啟動資訊;步驟440:決定該開機啟動資訊是否被成功讀取得;如果被成功取得,則流程進行步驟445;反之,流程進行步驟435;步驟445:該控制器基於所取得的開機啟動資訊來擷取得該韌體並執行該韌體;以及步驟450:結束。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:記憶體裝置
105:控制器
110:快閃記憶體
115:處理電路
120:隨機存取記憶體
125:唯讀記憶體
150:開卡裝置

Claims (21)

  1. 一種被一快閃記憶體開卡裝置所使用來寫入開機啟動資訊至一記憶體裝置的方法,該記憶體裝置包括一控制器與一快閃記憶體,以及該方法包含:(a)於該快閃記憶體開卡裝置載入一開卡程式來產生該開機啟動資訊,將該記憶體裝置的多個列位址平均地分類為N個區塊群組;(b)通過設定一第一亂數種子及基於該第一亂數種子來呼叫一隨機函式以產生N個區塊索引,其中該N個區塊索引係分別對應於該N個區塊群組以及係隨機分散於從零至一最大區塊索引個數的範圍;(c)對每一該N個區塊索引,產生M個頁索引;(d)相應地組合該M個頁索引與每一該N個區塊索引來產生M×N個候選的列位址;以及(e)通過從該快閃記憶體開卡裝置傳送該開機啟動資訊至該控制器並基於該M×N個候選的列位址來控制該控制器依序寫入該開機啟動資訊至屬於至少一區塊的M個儲存頁,以從該快閃記憶體開卡裝置寫入該開機啟動資訊至該快閃記憶體;其中M的值及N的值均大於或等於2。
  2. 如申請專利範圍第1項所述之方法,其中該步驟(c)包含有:通過設定一第二亂數種子及基於該第二亂數種子來呼叫該隨機函式以對每一該N個區塊索引來產生該M個頁索引,其中該M個頁索引係隨機分散於從零至多個頁索引的一最小個數的範圍。
  3. 如申請專利範圍第1項所述之方法,其中該步驟(b)包含:平均地將該快閃記憶體的多個區塊索引分割為N個區塊索引群組; 設定該第一亂數種子;以及基於該第一亂數種子來呼叫該隨機函式以產生一隨機整數並使用該隨機整數來從每一該N個區塊索引群組選取出一區塊索引以便產生該N個區塊索引。
  4. 如申請專利範圍第3項所述之方法,其中該步驟(c)包含:對於一區塊索引:平均地將相應於該區塊索引的多個頁索引分割為M個頁索引群組;設定一第二亂數種子;以及基於該第二亂數種子來呼叫該隨機函式以產生M個隨機整數並使用該M個隨機整數來分別從該M個頁索引群組選取出M個頁索引以便產生該M個頁索引。
  5. 如申請專利範圍第1項所述之方法,其中該步驟(b)、(c)與(d)係被執行多次以產生多組的M×N個候選的列位址,以及該步驟(e)係被執行以依序基於該多組的M×N個候選的列位址來寫入該開機啟動資訊至屬於該至少一區塊的M個儲存頁。
  6. 如申請專利範圍第5項之方法,其中該步驟(c)包含:對於一區塊索引:將相應於該區塊索引的多個頁索引平均地分割為M個頁索引群組;設定一第二亂數種子;基於該第二亂數種子來呼叫該隨機函式以產生一第一組M個隨機整數並使用該第一組M個隨機整數來分別從該M個頁索引群組中選取出一 第一組M個頁索引以便產生該第一組M個頁索引;以及基於該第二亂數種子來呼叫該隨機函式以產生一第二組M個隨機整數並使用該第二組M個隨機整數來分別從該M個頁索引群組中選取出一第二組M個頁索引以便產生該第二組M個頁索引;其中在該第二組M個頁索引中的一頁索引的值係等於一序列號再加上在該第一組M個頁索引中的一頁索引之值的至少兩倍。
  7. 如申請專利範圍第1項所述之方法,其中該N個區塊索引分別由a11、a12、…、a1N所表示,而對於該N個區塊索引的多個頁索引係分別由x111、x112、…、x11M、x121、x122、…、x12M、…、x1N1、x1N2、…、x1NM所表示,以及該N×M個候選的列位址係分別由以下關係式所表示: a11×2n+
    Figure 109100001-A0305-02-0025-57
    a12×2n+
    Figure 109100001-A0305-02-0025-58
    ..... a1N×2n+
    Figure 109100001-A0305-02-0026-60
    其中2 n 表示在該快閃記憶體中每一區塊的一最小總儲存頁個數。
  8. 一種被使用於一記憶體裝置中的控制器,該記憶體裝置另具有一快閃記憶體,以及該控制器包含:一唯讀記憶體,用來記錄一特定程式碼及一第一亂數種子;一處理電路,耦接至該唯讀記憶體,用來當該控制器被供電時讀取該特定程式碼與該第一亂數種子,並用來執行該特定程式碼以:通過設定該第一亂數種子及基於該第一亂數種子來呼叫一隨機函式以產生N個區塊索引,其中該N個區塊索引係分別對應於N個區塊群組以及係隨機分散於從零至一最大區塊索引個數的範圍,該記憶體裝置的多個列位址係被平均地分類為該N個區塊群組;對每一該N個區塊索引,產生M個頁索引;相應地組合該M個頁索引與每一該N個區塊索引來產生M×N個候選的列位址;基於該M×N個候選的列位址,依序從屬於至少一區塊的M個儲存頁讀取開機啟動資訊;以及基於成功從該至少一區塊所讀取出的該開機啟動資訊來從該快閃記憶體取得一韌體程式以執行該韌體程式;其中M的值及N的值均大於或等於2。
  9. 如申請專利範圍第8項所述之控制器,其中該唯讀記憶體另記錄一第二亂數種子,以及該處理電路用來:對每一該N個區塊索引,通過設定該第二亂數種子及基於該第二亂數種子來呼叫該隨機函式以產生該M個頁索引,其中該M個頁索引係隨機分散於從零至多個頁索引的一最小個數的範圍。
  10. 如申請專利範圍第8項所述之控制器,其中該處理電路被安排用來:將該快閃記憶體的多個區塊索引平均地分割為N個區塊索引群組;設定該第一亂數種子;以及基於該第一亂數種子來呼叫該隨機函式以產生一隨機整數並使用該隨機整數來從每一該N個區塊索引群組中選取出一區塊索引以便產生該N個區塊索引。
  11. 如申請專利範圍第10項所述之控制器,其中該處理電路用來:對於一區塊索引:將相應於該區塊索引的多個頁索引平均地分割為M個頁索引群組;設定一第二亂數種子;以及基於該第二亂數種子來呼叫該隨機函式以產生M個隨機整數並使用該M個隨機整數來分別從該M個頁索引群組選取出M個頁索引以便產生該M個頁索引。
  12. 如申請專利範圍第8項所述之控制器,其中該處理電路用來產生多組的M×N個候選的列位址,並用來依序基於該多組的M×N個候選的列位址來從屬 於該至少一區塊的M個儲存頁中讀取該開機啟動資訊。
  13. 如申請專利範圍第12項所述之控制器,其中該處理電路用來:對於一區塊索引:將相應於該區塊索引的多個頁索引平均地分割為M個頁索引群組;設定一第二亂數種子;基於該第二亂數種子來呼叫該隨機函式以產生一第一組M個隨機整數並使用該第一組M個隨機整數來分別從該M個頁索引群組中選取出一第一組M個頁索引以便產生該第一組M個頁索引;以及基於該第二亂數種子來呼叫該隨機函式以產生一第二組M個隨機整數並使用該第二組M個隨機整數來分別從該M個頁索引群組中選取出一第二組M個頁索引以便產生該第二組M個頁索引;其中在該第二組M個頁索引中的一頁索引的值係等於一序列號再加上在該第一組M個頁索引中的一頁索引的值的至少兩倍。
  14. 如申請專利範圍第8項所述之控制器,其中該N個區塊索引係由a11、a12、…、a1N所表示,而對於該N個區塊索引的多個頁索引係由x111、x112、…、x11M、x121、x122、…、x12M、…、x1N1、x1N2、…、x1NM所表示,以及該N×M個候選的列位址係由以下關係式所表示:a11×2n+
    Figure 109100001-A0305-02-0028-61
    a12×2n+
    Figure 109100001-A0305-02-0029-62
    ..... a1N×2n+
    Figure 109100001-A0305-02-0029-63
    其中2 n 表示在該快閃記憶體中的每一區塊的一最小總儲存頁個數。
  15. 一種被使用於一記憶體裝置中的一控制器所使用的方法,該記憶體裝置另具有一快閃記憶體,以及該方法包含:提供一唯讀記憶體以用來記錄一特定程式碼與一第一亂數種子;當該控制器被供電時讀取該特定程式碼與該第一亂數種子;以及執行該特定程式碼以:通過設定該第一亂數種子並基於該第一亂數種子來呼叫一隨機函式來產生N個區塊索引,其中該N個區塊索引係分別對應於N個區塊群組以及係隨機分散於從零至一最大區塊索引個數的範圍,該記憶體裝置的多個列位址係被平均地分類為該N個區塊群組;對每一該N個區塊索引,產生M個頁索引;相應地組合該M個頁索引與每一該N個區塊索引來產生M×N個候選的列位 址;基於該M×N個候選的列位址來依序從屬於至少一區塊的M個儲存頁中讀取開機啟動資訊;以及基於成功從該至少一區塊所讀取出的該開機啟動資訊來從該快閃記憶體取得一韌體程式以執行該韌體程式;其中M的值及N的值均大於或等於2。
  16. 如申請專利範圍第15項所述之方法,其中產生該M個頁索引的步驟包含:使用該唯讀記憶體另記錄一第二亂數種子;以及通過設定該第二亂數種子並基於該第二亂數種子來呼叫該隨機函式來對每一該N個區塊索引產生該M個頁索引,其中該M個頁索引係隨機分散於從零至多個頁索引的一最小個數的範圍。
  17. 如申請專利範圍第15項所述之方法,其中產生該N個區塊索引的步驟包含:將該快閃記憶體的多個區塊索引平均地分割為N個區塊索引群組;設定該第一亂數種子;以及基於該第一亂數種子來呼叫該隨機函式以產生一隨機整數並使用該隨機整數來從每一該N個區塊索引群組中選取出一區塊索引以便產生該N個區塊索引。
  18. 如申請專利範圍第17項所述之方法,其中產生該M個頁索引的步驟包含: 對於一區塊索引:將相應於該區塊索引的多個頁索引平均地分割為M個頁索引群組;設定一第二亂數種子;以及基於該第二亂數種子來呼叫該隨機函式以產生M個隨機整數並使用該M個隨機整數來分別從該M個頁索引群組中選取出M個頁索引以便產生該M個頁索引。
  19. 如申請專利範圍第15項所述之方法,另包含:產生多組的M×N個候選的列位址;以及依序基於該多組的M×N個候選的列位址從屬於該至少一區塊的M個儲存頁讀取出該開機啟動資訊。
  20. 如申請專利範圍第19項所述之方法,另包含:對於一區塊索引:將相應於該區塊索引的多個頁索引平均地分割為M個頁索引群組;設定一第二亂數種子;基於該第二亂數種子來呼叫該隨機函式以產生一第一組M個隨機整數並使用該第一組M個隨機整數來分別從該M個頁索引群組中選取出一第一組M個頁索引以便產生該第一組M個頁索引;以及基於該第二亂數種子來呼叫該隨機函式以產生一第二組M個隨機整數並使用該第二組M個隨機整數來分別從該M個頁索引群組中選取出一第二組M個頁索引以便產生該第二組M個頁索引;其中在該第二組M個頁索引中的一頁索引的一值係等於一序列號再加上該第一組M個頁索引中的一頁索引的值的至少兩倍。
  21. 如申請專利範圍第15項所述之方法,其中該N個區塊索引係由a11、a12、…、a1N所表示,而對於該N個區塊索引的多個頁索引係由x111、x112、…、x11M、x121.x122、…、x12M、…、x1N1、x1N2、…、x1NM所表示,以及該N×M個候選的列位址係由以下關係式所表示: a11×2n+
    Figure 109100001-A0305-02-0032-64
    a12×2n+
    Figure 109100001-A0305-02-0032-65
    .....a1N×2n+
    Figure 109100001-A0305-02-0032-67
    其中2 n 表示在該快閃記憶體中的每一區塊的一最小總儲存頁個數。
TW109100001A 2019-03-07 2020-01-02 快閃記憶體開卡裝置所使用來寫入開機啟動資訊至記憶體裝置的方法、記憶體裝置的控制器及所使用的方法 TWI760674B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/294,935 2019-03-07
US16/294,935 US11288181B2 (en) 2019-03-07 2019-03-07 Flash memory initialization scheme for writing boot up information into selected pages averagely and randomly distributed over more pages and correspondingly method for reading boot up information from selected pages

Publications (2)

Publication Number Publication Date
TW202034310A TW202034310A (zh) 2020-09-16
TWI760674B true TWI760674B (zh) 2022-04-11

Family

ID=72335226

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109100001A TWI760674B (zh) 2019-03-07 2020-01-02 快閃記憶體開卡裝置所使用來寫入開機啟動資訊至記憶體裝置的方法、記憶體裝置的控制器及所使用的方法

Country Status (3)

Country Link
US (1) US11288181B2 (zh)
CN (1) CN111666038B (zh)
TW (1) TWI760674B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745459A (en) * 1993-11-12 1998-04-28 Sony Corporation Methods and apparatus for managing recording medium
TWI351643B (en) * 2007-09-21 2011-11-01 Inventec Appliances Corp A method for fast booting a mobile device
TW201214121A (en) * 2010-09-27 2012-04-01 Silicon Motion Inc Method for performing block management, and associated memory device and controller thereof

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701492A (en) * 1996-03-29 1997-12-23 Canon Kabushiki Kaisha Fail-safe flashing of EPROM
JP2914360B2 (ja) * 1997-09-30 1999-06-28 ソニー株式会社 外部記憶装置及びデータ処理方法
US7103684B2 (en) * 2003-12-02 2006-09-05 Super Talent Electronics, Inc. Single-chip USB controller reading power-on boot code from integrated flash memory for user storage
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7958374B2 (en) * 2002-03-19 2011-06-07 Shansun Technology Company Digital information protecting method and apparatus, and computer accessible recording medium
GB2455106B (en) * 2007-11-28 2012-08-01 Icera Inc Memory errors
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8918575B2 (en) * 2009-09-14 2014-12-23 Broadcom Corporation Method and system for securely programming OTP memory
US8495439B2 (en) * 2010-07-28 2013-07-23 International Business Machines Corporation Deterministic data verification in storage controller
KR101767649B1 (ko) * 2011-05-11 2017-08-14 삼성전자주식회사 시드 생성 방법과 그것을 이용한 플래시 메모리 장치 및 메모리 시스템
US20130097403A1 (en) * 2011-10-18 2013-04-18 Rambus Inc. Address Mapping in Memory Systems
US20160028544A1 (en) * 2012-11-15 2016-01-28 Elwha Llc Random number generator functions in memory
US9424134B2 (en) * 2014-03-28 2016-08-23 Intel Corporation Boot management in a non-volatile memory system
TWI569275B (zh) * 2015-07-17 2017-02-01 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
KR102466412B1 (ko) * 2016-01-14 2022-11-15 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US9910772B2 (en) * 2016-04-27 2018-03-06 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
TWI659307B (zh) * 2017-01-06 2019-05-11 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
US10289321B1 (en) * 2017-05-05 2019-05-14 Amazon Technologies, Inc. Bad block table recovery in a solid state drives
US10635400B2 (en) * 2017-12-12 2020-04-28 Western Digital Technologies, Inc. Seed generation
CN108334457B (zh) * 2018-02-12 2020-06-30 杭州宏杉科技股份有限公司 一种io处理方法及装置
CN108777698A (zh) * 2018-04-13 2018-11-09 深圳市元征科技股份有限公司 网页存储方法、系统及区块链节点设备
KR102644274B1 (ko) * 2018-11-22 2024-03-06 삼성전자주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745459A (en) * 1993-11-12 1998-04-28 Sony Corporation Methods and apparatus for managing recording medium
TWI351643B (en) * 2007-09-21 2011-11-01 Inventec Appliances Corp A method for fast booting a mobile device
TW201214121A (en) * 2010-09-27 2012-04-01 Silicon Motion Inc Method for performing block management, and associated memory device and controller thereof

Also Published As

Publication number Publication date
US20200285572A1 (en) 2020-09-10
CN111666038A (zh) 2020-09-15
US11288181B2 (en) 2022-03-29
TW202034310A (zh) 2020-09-16
CN111666038B (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
TWI515561B (zh) 使用快閃記憶體之頁結構的資料樹儲存方法、系統以及電腦產品
US8984373B2 (en) Method for accessing flash memory and associated flash memory controller
US8417879B2 (en) Method for suppressing errors, and associated memory device and controller thereof
TWI601148B (zh) 損壞資料行的篩選方法與具有損壞資料行總表的資料儲存裝置
TW201947404A (zh) 重讀頁面資料方法
TW200419451A (en) Memory card
WO2006009322A2 (en) Memory card, nonvolatile semiconductor memory, and method of controlling semiconductor memory
US9170893B2 (en) Method and system for selecting region of a nonvolatile memory
US9933958B2 (en) Data storage device and data maintenance method thereof
US9996304B2 (en) Data storage device and data maintenance method thereof
TWI760674B (zh) 快閃記憶體開卡裝置所使用來寫入開機啟動資訊至記憶體裝置的方法、記憶體裝置的控制器及所使用的方法
US20190347037A1 (en) Data storage apparatus and system information programming method therefor
TWI729954B (zh) 由快閃記憶體初始化裝置所執行以初始化快閃記憶體裝置的快閃記憶體初始化方法以及用來控制快閃記憶體裝置的快閃記憶體控制器
TWI416331B (zh) 用於快閃記憶體的資料寫入方法及其控制器與儲存裝置
CN110231914A (zh) 数据存储装置及其操作方法
US11061764B2 (en) Data storage device and data retrieval method
TWI781846B (zh) 非對稱型平面管理方法以及資料儲存裝置及其控制器
CN108877856A (zh) 储存装置、记录方法以及预载方法
TW202145231A (zh) 記憶體裝置
CN112486849B (zh) 闪存开卡程序的方法、闪存装置的闪存控制器及电子装置
US11327770B2 (en) Data storage devices, access device and data processing methods
CN109976678B (zh) 存储方法及设备
JP2019057340A (ja) メモリシステム及びメモリ制御方法
US20160034343A1 (en) Data storing method, memory control circuit unit and memory storage device
CN112395127A (zh) 存储设备的可靠性测试方法及其存储设备