TWI408687B - 記憶體運作方法 - Google Patents
記憶體運作方法 Download PDFInfo
- Publication number
- TWI408687B TWI408687B TW098117403A TW98117403A TWI408687B TW I408687 B TWI408687 B TW I408687B TW 098117403 A TW098117403 A TW 098117403A TW 98117403 A TW98117403 A TW 98117403A TW I408687 B TWI408687 B TW I408687B
- Authority
- TW
- Taiwan
- Prior art keywords
- logical
- page
- logical block
- data
- offset
- Prior art date
Links
Classifications
-
- 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/04—Addressing variable-length words or parts of words
-
- 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
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Description
本發明係關於一種記憶體運作方法,特別是關於一種非揮發性記憶體(non-volatile memory)之運作方法。
以非揮發性記憶體而言,包含多個頁(pages)的區塊(block)係抹除(erasing)單位。因非揮發性記憶體裝置可包含複數個通道(channel),該複數個通道的頁的大小可能很大,或者循序寫入命令的大小或長度接近一個邏輯頁的大小。
圖1顯示一個包含p個通道之非揮發性記憶體系統10,其係由控制晶片11控制。各通道(ch 1至ch p)或可包含一或多個非揮發性記憶體。為了增加寫入效率,可同時使用複數個通道。然而,對於一些非揮發性記憶體而言,例如多層單元(Multi-Level Cell;MLC)記憶體,整個頁必須一次寫入。因此,各通道中相同位置之完整頁係同時寫入,一個邏輯頁的大小即所稱之「頁大小(pagesize)」。所有通道中相同位置之頁12係被集中成為一邏輯頁,而同一位置之區塊可被集中成為一邏輯區塊。一非揮發性記憶體裝置可使用一些對應至邏輯區塊位置(logical block address;LBA)之區塊以寫入循序資料。
如圖2所示,一主機20或可產生一寫入命令以寫入一短長度或資料並未對齊邏輯頁起始處的資料,但如此一來,資料並不能直接寫入非揮發性記憶體24。一緩衝記憶體(buffer)22(例如DRAM)係用以累積資料直到資料可被寫入非揮發性記憶體24之邏輯頁(路徑1)。若資料量大於或等於一邏輯頁且寫入位置係位於邏輯頁之起始位置,資料將直接寫入非揮發性記憶體24(路徑2)。
然而,許多循序寫入命令並非開始於邏輯頁之起始位置。如圖3所示,W128
(8)代表開始於LBA 8之64K(128區(sector))寫入命令。因寫入命令W128
(8)並非開始寫入於邏輯頁之起始處,W128
(8)必須分成兩命令W120
(8)及W8
(128)。換言之,資料由LBA 8開始寫入120個區,接著剩下的資料由LBA 128開始寫入8個區。因為W120
(8)及W8
(128)均小於64K,資料在寫入非揮發性記憶體24之前,暫時儲存於緩衝記憶體22。直到緩衝記憶體22累積到足以寫入一邏輯頁(例如128區)之資料後,一寫入命令W128
(0)傳送至非揮發性記憶體24。若主機20產生W128
(0),非揮發性記憶體24直接由W128
(0)進行寫入。
類似地,每個W128
(8)之循序寫入命令(例如W128
(8+128)、W128
(8+256)…)係先送至緩衝記憶體22後再寫入非揮發性記憶體24。例如:W128
(136)係分成W120
(136)及W8
(256)。
據此。每個命令係分成兩個命令,且資料必須暫時儲存於緩衝記憶體。當資料累積到一個邏輯頁的量時,資料才寫入非揮發性記憶體。如此一來,寫入效率將降低,且使用暫存資料之緩衝記憶體將增加功率消耗。
本發明提供一非揮發性記憶體之記憶體運作方法,當一循序寫入命令並非開始於一邏輯頁的起始位置時,可有效地將資料寫入非揮發性記憶體中。
根據本發明,一記憶體運作方法包含以下步驟:計算循序寫入命令和一非揮發性記憶體之一區塊之頁的起始處之一偏移量;以該偏移量偏移該區塊;以及除了該區塊之第一頁和最末頁外,直接根據該循序寫入命令將來自一主機之資料寫入該頁。
一實施例中,該頁係可提供最佳寫入效率之邏輯頁,且決定於計算該偏移量前。偏移量之範圍自0至該邏輯頁之頁大小。以該偏移量偏移該區塊之步驟係根據該偏移量增加對應於該頁中之邏輯區塊位置。
據此,區塊中除了第一頁和最末頁之其他頁可根據該循序寫入命令直接寫入,而可大幅增加該非揮發性記憶體之寫入效率。此外,將資料暫存於揮發性記憶體的所需時間可大幅降低,進而可降低功率消耗。
本發明之實施例將參考所附圖式敘述如下。
圖4係本發明一實施例之將資料寫入非揮發性記憶體之運作方法。來自主機40之一寫入命令W128
(8)無須經由一緩衝記憶體而由直接寫入非揮發性記憶體42代替。達成此目標之詳細技術內容敘述如下。
圖5A顯示對應於LBA之區塊中之頁,例如頁0儲存對應於LBA 0至LBA 127之資料,而頁1儲存對應於LBA 128至LBA 255之資料。然而,若寫入命令並非開始於頁的起
始位置,根據先前技術寫入命令必須分為二個命令。舉例而言,W128
(8)開始於LBA 8,故W128
(8)將分成W120
(8)及W8
(128)。W120
(8)對應於頁0之LBA 8至LBA 127,而W8
(128)對應於頁1之LBA 128至LBA 135。類似地,其他的循序寫入命令如W128
(136)和W128
(264)執行相同的工作。在循序寫入命令相應的最後一個頁N,寫入命令W128
已超過這個區塊,也就是其中有8個區超出區塊,如圖5B所示。圖5B中顯示對於循序寫入命令W128
有8區之偏移量。
當一主機傳送循序寫入命令W128
,循序寫入命令W128
的偏移量和頁0的起始處被紀錄下來,而後將寫入之區塊係偏移該偏移量。圖6中,循序寫入命令W128
之偏移量為8區。頁0係偏移至對應LBA 8至LBA(127+8),頁1係偏移至對應LBA(128+8)至LBA(255+8)。換言之,根據偏移量偏移之區塊係根據該偏移量增加對應於頁中的LBA,例如頁n係偏移至對應LBA((n-1)×128+8)至LBA((n×128)-1),其中n等於1、2、3…。首先,頁0起始處至偏移量8之資料係儲存於一緩衝記憶體,如此使得區塊可接收一64K「頁大小」之寫入命令,也就是寫入命令可直接傳送至非揮發性記憶體。區塊中頁0中由起始處至偏移量之資料可被暫存於一揮發性記憶體、該非揮發性記憶體之一區域或一電子儲存裝置。因為區塊之最後頁(頁N)只有120個區,頁N無法由一完整之寫入命令W128
寫入。因此,W128
亦必須分成W120
及W8
。W120
結合頁起始處至偏移量之資料,亦即LBA 0至LBA 7,故如此結合可寫入頁N。針對最後一個循序寫入命令,W8
係分派至下一個欲寫入之區塊。
對於讀取區塊中之資料,需要一偏移量以確認偏移區塊中對應之LBA。因此,必須紀錄偏移量的數值。舉例而言,偏移量可被儲存於一揮發性記憶體、該非揮發性記憶體的備用區域或一電子儲存裝置。
上述實施例之頁可為提供最佳之寫入效率之「邏輯頁」,且決定於計算偏移量前;區塊可為邏輯區塊。決定邏輯頁係根據一些因素如多通道、多平面、SLC/MLC或交錯。偏移量之範圍係由0至邏輯頁之「頁大小」。
根據本發明,在任一時間將資料寫入區塊時,區塊會有一偏移量。不過區塊在不同時間可有不同的偏移量。再者,非揮發性記憶體中的各區塊不需要有相同的偏移量。一些區塊或有偏移量,有一些則沒有。
本發明之技術內容及技術特點已揭示如上,然而熟悉本項技術之人士仍可能基於本發明之教示及揭示而作種種不背離本發明精神之替換及修飾。因此,本發明之保護範圍應不限於實施例所揭示者,而應包括各種不背離本發明之替換及修飾,並為以下之申請專利範圍所涵蓋。
10...非揮發性記憶體系統
11...控制晶片
12...頁
20...主機
22...緩衝記憶體
24...非揮發性記憶體
40...主機
42...非揮發性記憶體
圖1顯示一非揮發性記憶體之結構;
圖2及圖3顯示習知之將資料寫入非揮發性記憶體之運作方法;以及
圖4及圖5A、5B及6顯示本發明一實施例之記憶體運作方法。
Claims (16)
- 一種記憶體運作方法,包含:計算一循序寫入命令之起始邏輯區塊位址與一非揮發性記憶體之一邏輯區塊中一邏輯頁的起始邏輯區塊位址間的一邏輯區塊位址偏移量,其中該邏輯區塊包含一第一邏輯頁、一最末頁及位於該第一邏輯頁及該最末頁之間之至少一邏輯頁;以該邏輯區塊位址偏移量偏移該邏輯區塊;以及除了該最末頁外,直接根據該循序寫入命令將來自一主機之資料寫入該第一邏輯頁及該至少一邏輯頁。
- 根據請求項1之記憶體運作方法,其另包含在計算該邏輯區塊位址偏移量前決定該邏輯頁之步驟。
- 根據請求項1之記憶體運作方法,其中該邏輯區塊位址偏移量之範圍係由0至該邏輯頁之頁大小。
- 根據請求項1之記憶體運作方法,其中自該第一邏輯頁之起始處至該邏輯區塊位址偏移量間之一資料係暫存於一裝置。
- 根據請求項4之記憶體運作方法,其中該裝置係一揮發性記憶體、該非揮發性記憶體之一區域或一電子儲存裝置。
- 根據請求項4之記憶體運作方法,其中暫存於該裝置之資料係寫入該最末頁。
- 根據請求項4之記憶體運作方法,其中該循序寫入命令 中最後的寫入命令係分成一第一次命令及一第二次命令。
- 根據請求項7之記憶體運作方法,其中該第一次命令結合被儲存之該資料及一將被寫入至該最末頁之資料以寫入至該最末頁。
- 根據請求項7之記憶體運作方法,其中該第二次命令係寫入另一邏輯區塊。
- 根據請求項1之記憶體運作方法,其中以該邏輯區塊位址偏移量偏移該區塊之步驟係根據該邏輯區塊位址偏移量增加對應於該邏輯頁中之邏輯區塊位址。
- 根據請求項1之記憶體運作方法,其中該邏輯區塊位址偏移量係儲存於一裝置供讀取。
- 根據請求項11之記憶體運作方法,其中該裝置係一揮發性記憶體、該非揮發性記憶體之一區域或一電子儲存裝置。
- 根據請求項1之記憶體運作方法,其另包含在根據該循序寫入命令寫入資料後依該區塊位址偏移量讀取該邏輯區塊之步驟。
- 根據請求項3之記憶體運作方法,其中該邏輯頁係為該邏輯區塊之該第一邏輯頁。
- 一種記憶體運作方法,包含:計算一循序寫入命令之起始邏輯區塊位址與一非揮發性記憶體之一邏輯區塊中一邏輯頁的起始邏輯區塊位址間的一邏輯區塊位址偏移量,其中該邏輯區塊包含一第 一邏輯頁、一最末頁及位於該第一邏輯頁及該最末頁之間之至少一邏輯頁;以該邏輯區塊位址偏移量偏移該邏輯區塊;以及除了該邏輯區塊之該最末頁外,直接根據該循序寫入命令將來自一主機之資料寫入該邏輯區塊之該第一邏輯頁及該至少一邏輯頁;其中自該邏輯區塊之該邏輯頁之起始邏輯區塊位址至該邏輯區塊之該邏輯頁之該邏輯區塊位址偏移量間之一資料係暫存於一裝置;及其中暫存於該裝置之該資料係被寫入至該邏輯區塊之該最末頁。
- 一種記憶體運作方法,包含:計算一循序寫入命令之起始邏輯區塊位址與一非揮發性記憶體之一邏輯區塊中一邏輯頁的起始邏輯區塊位址間的一邏輯區塊位址偏移量,其中該邏輯區塊包含一第一邏輯頁、一最末頁及位於該第一邏輯頁及該最末頁之間之至少一邏輯頁;以該邏輯區塊位址偏移量偏移該邏輯區塊;以及除了該區塊之該最末頁外,直接根據該循序寫入命令將來自一主機之資料寫入該邏輯區塊之該第一邏輯頁及該至少一邏輯頁;其中自該邏輯區塊之該邏輯頁之起始邏輯區塊位址至該邏輯區塊之該邏輯頁之該邏輯區塊位址偏移量間之一資料係暫存於一裝置;及 其中該循序寫入命令之該最後寫入命令係被分為一第一次命令及一第二次命令;及其中該第一次命令係結合被儲存之該資料及一將被寫入至該最末頁之資料以寫入至該最末頁。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/245,093 US8566562B2 (en) | 2008-10-03 | 2008-10-03 | Method for sequentially writing data with an offset to a non-volatile memory |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201015553A TW201015553A (en) | 2010-04-16 |
TWI408687B true TWI408687B (zh) | 2013-09-11 |
Family
ID=42076700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098117403A TWI408687B (zh) | 2008-10-03 | 2009-05-26 | 記憶體運作方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8566562B2 (zh) |
TW (1) | TWI408687B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8966164B1 (en) * | 2013-09-27 | 2015-02-24 | Avalanche Technology, Inc. | Storage processor managing NVME logically addressed solid state disk array |
US10013178B2 (en) | 2016-04-30 | 2018-07-03 | Sandisk Technologies Llc | Methods, systems and computer readable media for optimizing storage device bus and resource utilization by host realignment |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040193786A1 (en) * | 2002-08-29 | 2004-09-30 | Yoshihisa Inagaki | Semiconductor memory device and method for writing data into flash memory |
US20050144367A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Data run programming |
US20060294174A1 (en) * | 2005-06-27 | 2006-12-28 | Haque Munsi A | Hardware-based CABAC decoder |
US20070124533A1 (en) * | 2000-08-25 | 2007-05-31 | Petro Estakhri | Flash memory architecture with separate storage of overhead and user data |
US20070160346A1 (en) * | 2005-12-09 | 2007-07-12 | Sony Corporation | Reading apparatus, reading method, program, and program recording medium |
US20080052728A1 (en) * | 2003-01-13 | 2008-02-28 | Steinmetz Joseph H | Method and interface for access to memory within a first electronic device by a second electronic device |
US20080104309A1 (en) * | 2006-10-30 | 2008-05-01 | Cheon Won-Moon | Flash memory device with multi-level cells and method of writing data therein |
-
2008
- 2008-10-03 US US12/245,093 patent/US8566562B2/en active Active
-
2009
- 2009-05-26 TW TW098117403A patent/TWI408687B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070124533A1 (en) * | 2000-08-25 | 2007-05-31 | Petro Estakhri | Flash memory architecture with separate storage of overhead and user data |
US20040193786A1 (en) * | 2002-08-29 | 2004-09-30 | Yoshihisa Inagaki | Semiconductor memory device and method for writing data into flash memory |
US20080052728A1 (en) * | 2003-01-13 | 2008-02-28 | Steinmetz Joseph H | Method and interface for access to memory within a first electronic device by a second electronic device |
US20050144367A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Data run programming |
US20060294174A1 (en) * | 2005-06-27 | 2006-12-28 | Haque Munsi A | Hardware-based CABAC decoder |
US20070160346A1 (en) * | 2005-12-09 | 2007-07-12 | Sony Corporation | Reading apparatus, reading method, program, and program recording medium |
US20080104309A1 (en) * | 2006-10-30 | 2008-05-01 | Cheon Won-Moon | Flash memory device with multi-level cells and method of writing data therein |
Also Published As
Publication number | Publication date |
---|---|
US20100088458A1 (en) | 2010-04-08 |
TW201015553A (en) | 2010-04-16 |
US8566562B2 (en) | 2013-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9075740B2 (en) | Memory system | |
US9405679B2 (en) | Determining a location of a memory device in a solid state device | |
JP4960882B2 (ja) | クラスタ自動位置合わせ | |
US8055873B2 (en) | Data writing method for flash memory, and controller and system using the same | |
US20090150597A1 (en) | Data writing method for flash memory and controller using the same | |
KR101434160B1 (ko) | 애드 혹 플래시 메모리 기준 셀 | |
US10338841B2 (en) | Block management for data streams | |
US8751735B2 (en) | Protection against data corruption for multi-level memory cell (MLC) flash memory | |
KR20080039270A (ko) | 비휘발성 반도체 메모리 시스템 및 그 데이터 기입 방법 | |
CN112306902A (zh) | 存储器控制器及操作其的方法 | |
KR20130125303A (ko) | 제어 장치, 기억 장치, 데이터 기입 방법 | |
US8819332B2 (en) | Nonvolatile storage device performing periodic error correction during successive page copy operations | |
JP2012113343A (ja) | 記憶装置 | |
TWI408687B (zh) | 記憶體運作方法 | |
CN107678679B (zh) | 运用于固态储存装置的超级区块的扫描方法 | |
JP7031672B2 (ja) | メモリコントローラ、メモリシステムおよび情報処理システム | |
JP4177292B2 (ja) | メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2009266125A (ja) | メモリシステム | |
JP4177301B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4068594B2 (ja) | フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリの制御方法 | |
US20120311243A1 (en) | Method for increasing reliability of data accessing for a multi-level cell type non-volatile memory |