KR101204163B1 - 반도체 기억 장치 - Google Patents
반도체 기억 장치 Download PDFInfo
- Publication number
- KR101204163B1 KR101204163B1 KR1020110023002A KR20110023002A KR101204163B1 KR 101204163 B1 KR101204163 B1 KR 101204163B1 KR 1020110023002 A KR1020110023002 A KR 1020110023002A KR 20110023002 A KR20110023002 A KR 20110023002A KR 101204163 B1 KR101204163 B1 KR 101204163B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- block
- page
- free
- storage unit
- Prior art date
Links
Images
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
-
- 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
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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)
- Memory System (AREA)
- Read Only Memory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
일 실시예에 따른 기억 장치는, 호스트로부터의 데이터를 기억하는 제1 기억부와; 상기 제1 기억부를 관리하는 정보를 기억하는 제2 기억부와; 상기 제2 기억부를 통해 상기 호스트와 상기 제1 기억부 사이에서 데이터를 전송하는 제어부를 포함하고; 상기 제1 기억부는, 복수의 블록을 가지며, 상기 복수의 블록의 각각은 복수의 페이지를 포함한다. 상기 제2 기억부는, 상기 제1 기억부에 있어서의 상기 복수의 블록 중 기록 가능한 블록의 정보를 유지하는 프리 블록 리스트와; 상기 제1 기억부에 있어서의 상기 복수의 페이지 중 기록 가능한 페이지의 정보를 유지하는 프리 페이지 리스트를 포함한다. 상기 제어부는, 상기 제1 기억부에 상기 호스트로부터의 데이터를 전송할 때, 블록 단위의 데이터를 압축하여 압축 블록 데이터를 생성하고, 상기 압축 블록 데이터를 상기 프리 블록 리스트에 유지된 정보에 기초하여 기록 가능한 블록에 기록하며, 상기 압축 블록 데이터가 기록된 상기 블록 내에서 상기 압축 블록 데이터가 기록되어 있지 않은 프리 영역에 존재하는 페이지의 정보를 상기 프리 페이지 리스트에 유지하고, 페이지 단위의 데이터를 상기 프리 페이지 리스트에 유지된 정보에 기초하여 기록 가능한 페이지에 기록한다.
Description
본 출원은, 2010년 11월 19일 출원된 우선하는 일본 특허 출원 제2010-259167호에 기초하며, 이 출원으로부터 우선권의 이익을 주장하고, 그 전체 내용이 여기서 참조용으로 사용되었다.
본 실시형태는, 반도체 기억 장치에 관한 것이다.
최근, NAND 플래시 메모리를 사용한 SSD(Solid State Drive)라고 불리는 기억 장치가 등장하여 휴대기기, 노트북 퍼스널 컴퓨터, 엔터프라이즈 서버 등, 폭넓은 범위에서 보급되게 되었다. NAND 플래시 메모리는, 반도체 메모리로서 저비용이며 또한 대용량이라는 특징이 있다.
그러나, NAND 플래시 메모리는, 기록 전에는 소거 동작을 행할 필요가 있고, 재기록(소거) 횟수에 제한(예컨대, 1만회 정도)이 있다고 하는 문제가 있다. 또한, 기록은 페이지 단위(예컨대, 2K 바이트), 소거는 블록 단위(예컨대, 1M 바이트)로 행해야만 한다. 이들 문제에 대처하기 위해서, SSD로 대표되는 NAND 플래시 메모리를 사용한 기억 장치에 있어서, 다양한 대책이 취해지고 있다.
SSD는, 컨트롤러, 워크 메모리 및 스토리지 메모리로 구성되어 있다. 컨트롤러는, 호스트(PC 등)로부터의 커맨드를 주고받는다. 스토리지 메모리는, 예컨대 NAND 플래시 메모리로서, 호스트로부터의 데이터를 기억한다. 워크 메모리는, 예컨대 SRAM 또는 DRAM이다. 또한, 워크 메모리에는, 데이터 버퍼, 페이지 단위의 논리/물리 어드레스 변환 테이블, 블록 단위의 논리/물리 어드레스 변환 테이블, 프리 블록 리스트 등이 저장되어 있다.
SSD에 있어서, 주된 제어의 기점은 호스트로부터의 액세스 커맨드 발행이다. 우선, 컨트롤러는, 호스트 커맨드의 어드레스(논리 어드레스)를 스토리지 메모리의 어드레스(물리 어드레스)로 변환하여 데이터 액세스를 실현한다. 이것은, NAND 플래시 메모리에 있어서 동일한 어드레스에 대한 재기록에는 소거가 필요하며, 또한, 재기록 횟수에 제한이 있는 것을 우려한 것이다.
논리/물리 어드레스 변환에 있어서, 어드레스 변환의 제어를 페이지 단위(예컨대, 2K 바이트)만으로 행하면 논리/물리 어드레스 변환 테이블이 거대해져서, 워크 메모리에 완전히 들어가지 않는 경우가 있다. 그 때문에, 어느 정도 모인 데이터가 있다고 판단된 경우, 데이터를 블록 단위(예컨대, 1M 바이트)로 모아서 스토리지 메모리에 기록하고, 블록 단위의 논리/물리 어드레스 변환 테이블로 관리한다.
기록 제어 또는 폐영역 회수(garbage collection)의 과정에서 블록 내의 데이터가 전부 무효화된 블록의 집합은 리스트(프리 블록 리스트)로써 관리된다. 페이지 단위의 기록, 또는 블록 단위의 기록에 있어서, 기록 영역이 필요하게 되었을 경우, 프리 블록 리스트로부터 블록의 정보를 꺼내어 기록 영역을 확보한다.
상기 제어에 의해 재기록 횟수를 각 어드레스로 분산시킬 수 있다. 그러나, 금후, NAND 플래시 메모리의 미세화가 진행되면 재기록 횟수는 더욱 적어지는 경향이 있다. 이 때문에, 보다 효율적인 기록 제어를 해야 한다. 효율을 높이는 방법으로서, NAND 플래시 메모리에 기록하는 데이터를 압축하는 방법을 생각할 수 있다.
예컨대, 종래 기술의 일례에서는, 컨트롤러는, 호스트로부터의 데이터를 압축하여 NAND 플래시 메모리에 저장하고 있다. 이에 따라, 호스트로부터 NAND 플래시 메모리로의 데이터 전송량을 감소시키고 있다.
그러나, 단순히 데이터를 페이지 단위, 블록 단위로 압축하여 NAND 플래시 메모리에 저장하여도, 그것에 의해 빈 영역이 낭비가 된다. 또한, 압축 후의 사이즈를 기준으로 데이터를 채워 배치하면, 데이터의 위치를 미세한 단위로 관리해야만 한다. 이 때문에, 변환 테이블의 1엔트리의 사이즈가 거대해져서 워크 메모리 상에서의 관리가 어려워진다. 또한, 전술한 바와 같이, 소거가 블록 단위 만이라는 제약 때문에, 데이터가 블록의 경계를 걸치는 경우 등을 고려하지 않으면 안되어, 제어가 복잡해진다.
본 발명의 실시형태는, 기록 효율이 향상된 반도체 기억 장치를 제공한다.
일반적으로, 일 실시예에 따르면, 기억 장치는, 호스트로부터의 데이터를 기억하는 제1 기억부와; 상기 제1 기억부를 관리하는 정보를 기억하는 제2 기억부와; 상기 제2 기억부를 통해 상기 호스트와 상기 제1 기억부 사이에서 데이터를 전송하는 제어부를 포함하고, 상기 제1 기억부는 복수의 블록을 가지며, 상기 복수의 블록의 각각은 복수의 페이지를 포함한다. 상기 제2 기억부는, 상기 제1 기억부에 있어서의 상기 복수의 블록 중 기록 가능한 블록의 정보를 유지하는 프리 블록 리스트와; 상기 제1 기억부에 있어서의 상기 복수의 페이지 중 기록 가능한 페이지의 정보를 유지하는 프리 페이지 리스트를 포함한다. 상기 제어부는, 상기 제1 기억부에 상기 호스트로부터의 데이터를 전송할 때, 블록 단위의 데이터를 압축하여 압축 블록 데이터를 생성하고, 상기 압축 블록 데이터를 상기 프리 블록 리스트에 유지된 정보에 기초하여 기록 가능한 블록에 기록하며, 상기 압축 블록 데이터가 기록된 상기 블록 내에서 상기 압축 블록 데이터가 기록되어 있지 않은 프리 영역에 존재하는 페이지의 정보를 상기 프리 페이지 리스트에 유지하고, 페이지 단위의 데이터를 상기 프리 페이지 리스트에 유지된 정보에 기초하여 기록 가능한 페이지에 기록한다.
본 발명의 실시형태에 따르면, 기록 효율이 향상된 반도체 기억 장치를 제공할 수 있다.
도 1은 제1 실시형태에 따른 기억 장치의 구성예를 나타낸 블록도.
도 2는 제1 실시형태에 따른 워크 메모리의 구성예를 나타낸 블록도.
도 3은 제1 실시형태에 따른 기억 장치의 제어 동작을 나타낸 도면.
도 4는 제1 실시형태에 따른 기억 장치에 있어서의 블록 데이터 기록을 나타낸 흐름도.
도 5는 제1 실시형태에 따른 기억 장치에 있어서의 페이지 데이터 기록을 나타낸 흐름도.
도 6은 제2 실시형태에 따른 기억 장치의 제어 동작을 나타낸 도면.
도 2는 제1 실시형태에 따른 워크 메모리의 구성예를 나타낸 블록도.
도 3은 제1 실시형태에 따른 기억 장치의 제어 동작을 나타낸 도면.
도 4는 제1 실시형태에 따른 기억 장치에 있어서의 블록 데이터 기록을 나타낸 흐름도.
도 5는 제1 실시형태에 따른 기억 장치에 있어서의 페이지 데이터 기록을 나타낸 흐름도.
도 6은 제2 실시형태에 따른 기억 장치의 제어 동작을 나타낸 도면.
본 실시형태를 이하에 도면을 참조하여 설명한다. 도면에 있어서, 동일 부분에는 동일한 참조 부호를 붙인다.
<제1 실시형태>
이하에, 제1 실시형태에 따른 기억 장치에 대해서 설명한다. 제1 실시형태는, 블록 단위의 데이터(블록 데이터)를 기록할 때에 데이터를 압축하고, 이 압축 블록 데이터를 블록에 저장함으로써 빈 영역에 작은 단위(페이지 단위)의 비압축 데이터를 기록하는 예이다.
[구성예]
이하에 도 1 내지 도 3을 이용하여 제1 실시형태에 따른 기억 장치의 구성예에 대해서 설명한다.
도 1은 제1 실시형태에 따른 기억 장치(100)의 구성예를 나타내고 있다.
도 1에 도시된 바와 같이, 기억 장치(100)는 컨트롤러(제어 회로)(10), 복수의 스토리지 메모리(11) 및 워크 메모리(12)로 구성되어 있다.
컨트롤러(10)는, 호스트 인터페이스, 스토리지 메모리 인터페이스 및 워크 메모리 인터페이스를 구비하고 있다. 호스트 인터페이스는, 예컨대 직렬 ATA/병렬 ATA 인터페이스로서, 호스트와의 사이에서 커맨드의 수수(授受)를 행한다. 스토리지 메모리 인터페이스는, 스토리지 메모리(11)와의 사이에서 커맨드의 수수를 행한다. 워크 메모리 인터페이스는, 워크 메모리(12)와의 사이에서 커맨드의 수수를 행한다. 이와 같이, 컨트롤러(10)는, 워크 메모리(12)를 통해 스토리지 메모리(11)와 호스트(110) 사이에서 데이터 전송을 행한다.
스토리지 메모리(11)는, 예컨대 NAND 플래시 메모리로서, 호스트로부터의 데이터를 기억한다. 또한, 스토리지 메모리(11)는, 컨트롤러(10)로부터의 커맨드에 따라, 기억된 데이터의 판독, 소거 등의 처리를 행한다.
워크 메모리(12)는, 예컨대 SRAM(Static Random Access Memory) 또는 DRAM(Dynamic Random Access Memory)이지만, 이것에 한정되지 않고, 레지스터 파일 또는 스토리지 메모리(11) 등이어도 좋다. 혹은, 이들을 병용하여도 좋다. 워크 메모리(12)는, 스토리지 메모리(11)의 관리에 필요한 데이터를 일시적으로 저장한다.
본 실시형태에 있어서의 컨트롤러(10)는, 압축 신장기(13)를 구비하고 있다. 이 압축 신장기(13)는, 블록 단위의 데이터를 스토리지 메모리(11)에 액세스하는 경우만 처리를 행한다. 보다 구체적으로는, 압축 신장기(13)는, 호스트(110)로부터의 블록 단위의 데이터를 스토리지 메모리(11)에 기록하는 경우에 블록 단위의 데이터를 압축하여 압축 데이터를 생성하고, 스토리지 메모리(11)로부터 압축 데이터를 판독하는 경우에 압축 데이터를 신장한다.
또한, 블록 단위의 데이터의 액세스라도, 압축 후의 데이터 사이즈가 원래의 데이터보다 커지는 경우나, 해당 데이터가 랜덤 액세스될 가능성이 높다고 판단되는 경우는, 압축 신장 처리를 행하지 않을 수도 있다. 이러한 압축 신장기(13)에 의한 압축 신장 기능은, 하드웨어로 실현하여도 좋고, 소프트웨어로 실현하여도 좋다.
도 2는 본 실시형태에 따른 워크 메모리(12)의 구성예를 나타내고 있다.
도 2에 도시된 바와 같이, 워크 메모리(12)는, 데이터 버퍼(21), 페이지 변환 테이블(22), 블록 변환 테이블(23), 프리 페이지 리스트(24) 및 프리 블록 리스트(25) 등을 구비하고 있다. 이들 워크 메모리(12)의 각 구성 요소에 대해서는 이하에 도 3을 이용하여 상세히 설명한다.
도 3은 워크 메모리(12) 및 스토리지 메모리(11)의 구성예 및 제어 동작을 나타내고 있다. 여기서, 호스트(110)로부터 부여되는 어드레스를 논리 어드레스라고 칭하고, 스토리지 메모리(NAND 플래시 메모리)(11) 내에 있어서의 실제의 어드레스를 물리 어드레스라고 칭한다.
도 3에 있어서, 메모리 맵(30)은 스토리지 메모리(11)의 물리 어드레스를 나타내고 있다. 또한, 이 메모리 맵(30)에 있어서, 흰 영역은 유효 데이터가 존재하는 영역을 나타내고, 해칭 영역은 무효 데이터가 존재하는 영역을 나타내고 있다. 여기서, 유효 데이터 및 무효 데이터는, 데이터가 기록되어 있는지 여부에 한정되지 않고, 그 데이터가 논리적으로 유효한지 무효한지에 기초하고 있다. 또한, 메모리 맵(30)에 있어서, 사선 영역은 블록 단위의 데이터를 압축하여 저장함으로써 블록 내에 빈 프리 영역을 나타내고 있다.
페이지 변환 테이블(22)은, 1엔트리가 논리 페이지 어드레스 및 물리 페이지 어드레스의 세트(組)로 구성되어 있다. 페이지 변환 테이블(22)에는, 데이터가 기록된(유효 데이터가 존재하는) 페이지의 논리 어드레스 및 물리 어드레스가 유지되어 있다. 이 페이지 변환 테이블(22)은, 호스트로부터 부여되는 논리 페이지 어드레스와, 스토리지 메모리(11) 내의 물리 페이지 어드레스를 대응시킨다.
블록 변환 테이블(23)은, 1엔트리가 물리 블록 어드레스로 구성되어 있다. 블록 변환 테이블(23)에는, 데이터가 기록된(유효 데이터가 존재하는) 블록의 물리 어드레스가 유지되어 있다. 이 블록 변환 테이블(23)은, 호스트로부터 부여되는 논리 블록 어드레스와, 스토리지 메모리(11) 내의 물리 블록 어드레스를 대응시킨다.
프리 페이지 리스트(24)는, 1엔트리가 물리 페이지 어드레스로 구성되어 있다. 프리 페이지 리스트(24)에는, 블록 단위의 데이터를 압축하여 저장함으로써 블록 내에 빈 프리 영역의 선단 페이지의 물리 어드레스가 유지되어 있다. 여기서, 프리 영역의 선단 페이지 이후의 물리 어드레스는, 선단 페이지의 물리 어드레스로부터 계산 가능하다. 특히, 후단 페이지의 물리 어드레스는, 물리 블록의 경계이기 때문에, 선단 페이지의 물리 어드레스로부터 용이하게 계산 가능하다.
프리 블록 리스트(25)는, 1엔트리가 물리 블록 어드레스로 구성되어 있다. 프리 블록 리스트(25)에는, 블록 내의 데이터가 전부 무효화된 블록의 물리 어드레스가 유지되어 있다.
본 실시형태에서는, 블록 내의 데이터가 전부 무효화된 블록을 프리 블록 리스트(25)에 의해 블록 단위로 관리할 뿐만 아니라, 압축 블록 데이터를 어떤 블록에 저장함으로써 빈(무효화된) 블록 내의 일부(프리 영역)를 프리 페이지 리스트(24)에 의해 페이지 단위로 관리할 수 있다.
[블록 단위의 데이터(블록 데이터) 기록]
이하에 도 4를 이용하여 본 실시형태에 따른 기억 장치(100)에 있어서의 블록 데이터 기록에 대해서 설명한다.
도 4는 본 실시형태에 따른 기억 장치(100)에 있어서의 블록 데이터 기록의 흐름도를 나타내고 있다.
도 4에 도시된 바와 같이, 우선, 단계 S1에서, 공지의 방법과 마찬가지로, 프리 블록 리스트(25)로부터 블록 단위의 기록 영역을 확보한다. 이 때, 확보한 기록 영역에 무효 데이터가 있는 경우 등, 필요가 있으면 소거 동작을 행한다.
다음에, 단계 S2에서, 블록 데이터를 압축할지 여부를 판정한다. 이 때, 기록하는 데이터의 경향을 조사함으로써, 압축 후의 데이터 사이즈가 원래의 데이터 사이즈보다 작아지는지 여부를 판정한다. 즉, 압축 후의 데이터 사이즈가 원래의 데이터 사이즈보다 작아지는 경우는 블록 데이터를 압축하고, 커지는 경우는 블록 데이터를 압축하지 않는다.
단계 S2에서 블록 데이터를 압축하지 않는 경우, 다음에, 단계 S3에서, 블록 데이터 기록을 행한다. 즉, 통상과 같은 블록 데이터를 스토리지 메모리(11)에 기록한다. 그 후, 단계 S4에서, 블록 변환 테이블(23)에, 블록 데이터가 기록된 물리 블록 어드레스를 설정한다.
한편, 단계 S2에서 블록 데이터를 압축하는 경우, 다음에, 단계 S5에서, 블록 데이터의 압축 처리를 행한다. 즉, 블록 데이터의 데이터 사이즈를 작게 한다.
다음에, 단계 S6에서, 압축 블록 데이터 기록을 행한다. 즉, 단계 S5에서 압축된 블록 데이터를 스토리지 메모리(11)에 기록한다. 여기서, 압축 블록 데이터는, 압축되지 않는 블록 데이터 기록의 경우와 동일한 저장 위치에 저장된다. 예컨대, 압축 블록 데이터는, 프리 블록 리스트(25)로부터 확보된 블록 내의 선단 페이지로부터 기록되어 나간다. 이 때, 압축 블록 데이터는 데이터 사이즈가 작기 때문에, 프리 블록 리스트(25)로부터 확보된 블록 내의 일부(예컨대, 후반 페이지)에는 데이터가 기록되어 있지 않은 영역(프리 영역)이 존재한다.
다음에, 단계 S7에서, 프리 페이지 리스트(24)에, 압축 블록 데이터가 기록됨으로써 빈 프리 영역의 선단 페이지의 물리 어드레스를 설정한다. 그 후, 단계 S4에서, 블록 변환 테이블(23)에, 압축 블록 데이터가 기록된 물리 블록 어드레스를 설정한다.
이와 같이 하여, 블록 데이터 기록이 종료된다. 또한, 블록 데이터를 압축한 경우, 여기까지의 처리에 의해 압축 블록 데이터가 유효해져서 프리 영역에 페이지 데이터를 기록할 수 있는 상태가 된다.
[페이지 단위의 데이터(페이지 데이터) 기록]
이하에 도 5를 이용하여 본 실시형태에 따른 기억 장치(100)에 있어서의 페이지 데이터 기록에 대해서 설명한다.
도 5는 본 실시형태에 따른 기억 장치(100)에 있어서의 페이지 데이터 기록의 흐름도를 나타내고 있다.
도 5에 도시된 바와 같이, 우선, 단계 S8에서, 프리 페이지 리스트(24)로부터 기록 영역을 확보하는 것이 가능한지 여부를 판정한다.
단계 S8에서 프리 페이지 리스트(24)로부터 기록 영역을 확보할 수 없는 경우, 다음에, 단계 S9에서, 프리 블록 리스트(25)로부터 페이지 단위의 기록 영역을 확보한다. 이 때, 확보한 기록 영역에 무효 데이터가 있는 경우 등, 필요가 있으면 소거 동작을 행한다.
다음에, 단계 S10에서, 프리 블록 리스트(25)로부터 확보된 기록 영역에 페이지 데이터 기록을 행한다. 그 후, 단계 S11에서, 페이지 변환 테이블(22)에, 페이지 데이터가 기록된 물리 페이지 어드레스 및 변환 정보를 설정한다.
한편, 단계 S8에서 프리 페이지 리스트(24)로부터 기록 영역을 확보할 수 있는 경우, 단계 S12에서, 프리 페이지 리스트(24)로부터 페이지 단위의 기록 영역을 확보한다.
다음에, 단계 S10에서, 프리 페이지 리스트(24)로부터 확보된 기록 영역에 페이지 데이터 기록을 행한다. 즉, 프리 영역에 페이지 데이터가 기록된다. 이에 따라, 블록 내에서 압축 블록 데이터와 별도의 페이지 데이터가 혼재된 상태가 된다.
그 후, 단계 S11에서, 페이지 변환 테이블(22)에, 페이지 데이터가 기록된 물리 페이지 어드레스 및 변환 정보를 설정한다.
이와 같이 하여, 페이지 데이터 기록이 종료된다.
[데이터 판독]
이하에, 본 실시형태에 따른 기억 장치(100)에 있어서의 데이터 판독에 대해서 설명한다. 또한, 본 실시형태에 있어서의 데이터의 판독 방법은 특별히 한정되지 않고, 공지의 여러 가지의 판독 방법이 적용될 수 있다.
페이지 데이터 판독의 경우, 공지의 방법과 마찬가지로, 페이지 변환 테이블(22)을 사용하여 스토리지 메모리(11)로부터 대응하는(판독 대상인) 페이지 데이터를 판독한다.
한편, 블록 데이터 판독의 경우, 공지의 방법과 마찬가지로, 블록 변환 테이블(23)을 사용하여 스토리지 메모리(11)로부터 대응하는(판독 대상인) 블록 데이터를 판독한다. 이 때, 판독 대상인 블록 데이터가 압축되어 있는 경우, 압축 블록 데이터의 신장 처리를 행한 후, 데이터를 판독한다. 또한, 판독 대상인 블록 데이터가 압축되어 있지 않은 경우, 그대로 데이터를 판독한다.
또한, 스토리지 메모리(11)로부터의 데이터 판독은, 필요한 분만으로 중단하여도 좋고, 1블록 분을 판독해 버려도 좋다. 또한, 블록 데이터가 압축인지 여부를 판정하기 위해 1블록에 대해 적어도 1비트 필요하게 된다. 여기서, 스토리지 메모리(11)에 용장 비트가 있으면 그것을 이용하여도 좋고, 블록 변환 테이블(23)의 각 엔트리에 1비트 추가하여도 좋다.
전술한 바와 같은 블록 데이터 기록, 페이지 데이터 기록 및 데이터 판독은 도 1에 도시된 컨트롤러(10)에 의해 제어될 수 있다.
[효과]
상기 제1 실시형태에 따르면, 블록 데이터를 기록할 때에 데이터를 압축하고, 이 압축 블록 데이터를 스토리지 메모리(11) 내의 블록에 저장한다(기록한다). 이 압축에 의해 삭감된(작아진) 데이터분이, 블록 내에 프리 영역으로서 생긴다. 이 프리 영역을 별도의 페이지 데이터 기록에 이용함으로써, 스토리지 메모리(11)에 대한 기록의 효율을 향상시킬 수 있다.
또한, 블록 데이터의 압축에 의해 생긴 프리 영역을 낭비 없이 사용함으로써 스토리지 메모리(11) 전체의 각 블록에 있어서 재기록 횟수를 분산 또한 저감시킬 수 있다. 즉, 미세화가 진행되는 NAND 플래시 메모리와 같이 재기록 횟수에 제한이 있는 메모리를 사용하는 기억 장치(100)에 있어서, 신뢰성의 향상을 도모할 수 있다.
또한, 본 실시형태에서는, 압축 블록 데이터의 저장 위치를 압축하지 않는 경우의 저장 위치에 맞추고 있다. 이에 따라, 데이터의 관리나 기록 및 판독 동작의 제어가 용이해져서 컨트롤러(10)에 의한 오버 헤드를 억제할 수 있다.
<제2 실시형태>
이하에, 제2 실시형태에 따른 기억 장치에 대해서 설명한다. 제2 실시형태는, 제1 실시형태의 변형예로서, 다치(MLC: multi level cell) NAND 플래시 메모리와 같은 기록 순서에 제약이 있는 메모리에 적용되며, 압축 블록 데이터를 하위 페이지측부터 기록하는 예이다. 또한, 제2 실시형태에 있어서, 상기 제1 실시형태와 동일한 점에 대해서는 설명을 생략하고, 다른 점에 대해서 설명한다.
다치 NAND 플래시 메모리는, 1개의 메모리 셀에 복수 비트의 정보를 기록하는 메모리이다. 또한, 메모리에 따라서는 1개의 메모리 셀에 포함되는 복수의 비트에 대하여 별도의 어드레스가 할당되는 경우가 있고, 그 경우는 이들 어드레스에 대하여 기록 순서가 정해져 있는 경우가 있다. 그리고, 메모리에 따라서는 먼저 기록되는 어드레스에 대한 기록 동작은, 나중에 기록되는 어드레스에 대한 기록 동작보다 고속으로 행할 수 있다.
이하의 설명에 있어서, 예로서 1개의 메모리 셀에 2비트의 정보를 기록할 수 있는 경우를 나타낸다. 또한, 먼저 기록되는 어드레스 영역을 하위 페이지(lower page)라 칭하고, 나중에 기록되는 어드레스 영역을 상위 페이지(upper page)라 칭한다.
[블록 데이터 및 페이지 데이터 기록]
이하에 도 6을 이용하여 본 실시형태에 따른 기억 장치(100)에 있어서의 블록 데이터 및 페이지 데이터 기록에 대해서 설명한다.
도 6은 본 실시형태에 따른 기억 장치(100)의 제어 동작을 나타내는 것으로서, 1개의 블록(60) 내의 하위 페이지 및 상위 페이지의 어드레스의 할당과, 블록(60) 내의 데이터의 천이를 나타내고 있다. 여기서, 도 3과 마찬가지로, 흰 영역은 유효 데이터가 존재하는 영역을 나타내고, 해칭 영역은 무효 데이터가 존재하는 영역을 나타내며, 사선 영역은 압축 데이터를 저장함으로써 빈 프리 영역을 나타내고 있다.
보다 구체적으로는, 도 6의 (a)는 블록(60) 내부 전체가 무효 데이터인 상태, 도 6의 (b)는 블록(60)에 압축 블록 데이터를 기록한 상태, 도 6의 (c)는 프리 영역에 페이지 데이터를 기록한 상태를 나타내고 있다.
도 6의 (a)에 도시된 바와 같이, 본 실시 형태에서는, 블록(60) 내의 어드레스가 기록 순서의 제약에 따라 논리적으로 정렬되어 있다. 보다 구체적으로는, 하위 페이지 및 상위 페이지를 갖는 복수의 메모리 셀을 포함하는 블록(60)에 있어서, 각 메모리 셀의 하위 페이지측부터 먼저 기록된 후, 각 메모리 셀의 상위 페이지측이 기록되도록 어드레스가 할당된다.
이와 같이 블록(60) 내의 어드레스를 할당함으로써 도 6의 (b)에 도시된 바와 같이, 압축 블록 데이터를 기록할 때, 압축 블록 데이터는 각 메모리 셀의 하위 페이지측부터 기록된다. 그 후, 도 6의 (c)에 도시된 바와 같이, 압축 블록 데이터를 기록함으로써 생긴 프리 영역(예컨대, 상위 페이지측의 일부)에 별도의 페이지 데이터가 기록된다.
도 4 및 도 5에 도시된 바와 같이, 제1 실시형태에서 나타낸 제어 방식으로부터, 블록(60)에 압축 데이터가 기록되는 경우, 항상 도 6의 (a), (b), (c)의 순서로 데이터가 기록되는 것이 보증된다. 즉, 압축 블록 데이터의 기록은 별도의 페이지 데이터의 기록보다도 먼저 행해지기 때문에, 압축 블록 데이터는 하위 페이지측부터 기록된다.
[효과]
상기 제2 실시형태에 따르면, 다치 NAND 플래시 메모리를 갖는 기억 장치(100)에 있어서, 블록(60) 내의 전체 메모리 셀의 하위 페이지측부터 먼저 기록된 후, 각 상위 페이지측이 기록되도록 어드레스가 할당된다. 이에 따라, 먼저 기록되는 압축 블록 데이터는, 메모리 셀의 하위 페이지측부터 기록된다. 이 하위 페이지측의 기록은, 상위 페이지측의 기록보다도 고속으로 실행할 수 있다. 즉, 압축 블록 데이터의 기록을 고속으로 행할 수 있다.
특히, 호스트(110)로부터 큰 데이터 사이즈의 기록 커맨드가 발행된 경우, 블록 단위의 기록을 실행하는 제어를 행함으로써 이 기록을 고속으로 행할 수 있고, 버스트 라이트의 실행 성능을 향상시킬 수 있다.
또한, 통상, 데이터의 압축에는 대폭적인 시간이 필요하다. 이것에 대하여, 본 실시형태와 같이, 압축 블록 데이터의 기록을 고속화함으로써, 압축에 의한 시간 증가를 전체적으로 환원할 수 있어 시간 증가를 억제할 수 있다.
특정 실시예들을 설명하였으나, 이들 실시예들은 예시로써만 나타낸 것이고, 본 발명의 범위를 제한하고자 함이 아니다. 여기서 설명된 신규한 방법들 및 시스템들은 다양한 다른 형태들로 구현될 수도 있고, 또한 여기서 설명된 방법들 및 시스템들의 형태에서 각종 생략, 대체 및 변경이 본 발명의 사상으로부터 벗어나지 않고 행해질 수도 있다. 첨부된 청구 범위 및 이 등가물은 본 발명의 범위 및 사상 내에 있을 것인 이러한 형태 또는 변형물을 망라하고자 한다.
Claims (6)
- 호스트로부터의 데이터를 기억하는 제1 기억부와;
상기 제1 기억부를 관리하는 정보를 기억하는 제2 기억부와;
상기 제2 기억부를 통해 상기 호스트와 상기 제1 기억부 사이에서 데이터를 전송하는 제어부
를 포함하고,
상기 제1 기억부는 복수의 블록을 가지며, 상기 복수의 블록의 각각은 복수의 페이지를 포함하고,
상기 제2 기억부는,
상기 제1 기억부에 있어서의 상기 복수의 블록 중 기록 가능한 블록의 정보를 유지하는 프리 블록 리스트와;
상기 제1 기억부에 있어서의 상기 복수의 페이지 중 기록 가능한 페이지의 정보를 유지하는 프리 페이지 리스트
를 포함하며,
상기 제어부는, 상기 제1 기억부에 상기 호스트로부터의 데이터를 전송할 때,
블록 단위의 데이터를 압축하여 압축 블록 데이터를 생성하고,
상기 압축 블록 데이터를 상기 프리 블록 리스트에 유지된 정보에 기초하여 기록 가능한 블록에 기록하며,
상기 압축 블록 데이터가 기록된 상기 블록 내에서 상기 압축 블록 데이터가 기록되어 있지 않은 프리 영역에 존재하는 페이지의 정보를 상기 프리 페이지 리스트에 유지하고,
페이지 단위의 데이터를 상기 프리 페이지 리스트에 유지된 정보에 기초하여 상기 프리 영역에 존재하는 페이지에 기록하는 것인 기억 장치. - 제1항에 있어서, 상기 프리 블록 리스트에는 데이터가 전부 무효화된 블록의 물리 어드레스가 유지되고, 상기 프리 페이지 리스트에는 상기 프리 영역의 선단 페이지의 물리 어드레스가 유지되어 있는 것인 기억 장치.
- 제1항에 있어서, 상기 제1 기억부는 NAND 플래시 메모리인 것인 기억 장치.
- 제1항에 있어서, 상기 제2 기억부는 SRAM 또는 DRAM인 것인 기억 장치.
- 제1항에 있어서, 상기 제어부는, 상기 압축 블록 데이터를 기록할 때, 상기 압축 블록 데이터를 블록 내의 선단 페이지부터 기록하는 것인 기억 장치.
- 제1항에 있어서, 상기 제1 기억부는 n(2보다 큰 정수)값의 상이한 상태를 기억하는 복수의 메모리 셀을 갖는 NAND 플래시 메모리이고, 상기 제1 기억부에 있어서의 상기 복수의 블록의 각각은 복수의 하위 페이지 및 복수의 상위 페이지를 포함하고,
상기 제어부는, 상기 압축 블록 데이터를 기록할 때, 상기 압축 블록 데이터를 상기 블록 내의 하위 페이지측부터 기록하는 것인 기억 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2010-259167 | 2010-11-19 | ||
JP2010259167A JP2012113343A (ja) | 2010-11-19 | 2010-11-19 | 記憶装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120054502A KR20120054502A (ko) | 2012-05-30 |
KR101204163B1 true KR101204163B1 (ko) | 2012-11-22 |
Family
ID=46065476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110023002A KR101204163B1 (ko) | 2010-11-19 | 2011-03-15 | 반도체 기억 장치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8429339B2 (ko) |
JP (1) | JP2012113343A (ko) |
KR (1) | KR101204163B1 (ko) |
CN (1) | CN102479549A (ko) |
TW (1) | TWI430091B (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10049039B2 (en) | 2015-07-31 | 2018-08-14 | SK Hynix Inc. | Memory system and operating method thereof |
US10162544B2 (en) | 2015-11-13 | 2018-12-25 | SK Hynix Inc. | Memory system and operating method of memory system for controlling memory blocks divided into memory sub-blocks containing a plurality of memory pages |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102078853B1 (ko) | 2013-11-27 | 2020-02-18 | 삼성전자 주식회사 | 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법 |
US9875180B2 (en) | 2014-02-24 | 2018-01-23 | Sandisk Technologies Llc | Systems and methods for managing storage compression operations |
KR20160112135A (ko) | 2015-03-18 | 2016-09-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20190099570A (ko) * | 2018-02-19 | 2019-08-28 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
JP2020144534A (ja) | 2019-03-05 | 2020-09-10 | キオクシア株式会社 | メモリ装置およびキャッシュ制御方法 |
JP2020155179A (ja) * | 2019-03-20 | 2020-09-24 | キオクシア株式会社 | 半導体記憶装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100852729B1 (ko) | 2006-09-12 | 2008-08-19 | 이너비트 주식회사 | 데이타 압축 관리장치 |
KR100951099B1 (ko) | 2008-07-24 | 2010-04-07 | 인하대학교 산학협력단 | 데이터 저장 관리 방법 및 그 방법을 수행하기 위한프로그램이 기록된 기록매체 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070031647A (ko) * | 2005-09-15 | 2007-03-20 | 삼성전자주식회사 | 플래시 메모리 장치에 압축 데이터를 기록하는 방법 및상기 기록된 데이터를 읽는 방법, 그리고 상기 방법을이용하는 플래시 메모리 장치 |
JP2007094639A (ja) | 2005-09-28 | 2007-04-12 | Tdk Corp | メモリコントローラ及びフラッシュメモリシステム |
US7958331B2 (en) * | 2006-12-13 | 2011-06-07 | Seagate Technology Llc | Storage device with opportunistic address space |
US8364929B2 (en) * | 2009-10-23 | 2013-01-29 | Seagate Technology Llc | Enabling spanning for a storage device |
US8533550B2 (en) * | 2010-06-29 | 2013-09-10 | Intel Corporation | Method and system to improve the performance and/or reliability of a solid-state drive |
-
2010
- 2010-11-19 JP JP2010259167A patent/JP2012113343A/ja not_active Withdrawn
-
2011
- 2011-03-15 KR KR1020110023002A patent/KR101204163B1/ko not_active IP Right Cessation
- 2011-03-16 TW TW100109010A patent/TWI430091B/zh not_active IP Right Cessation
- 2011-03-18 CN CN2011100669657A patent/CN102479549A/zh active Pending
- 2011-03-21 US US13/052,361 patent/US8429339B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100852729B1 (ko) | 2006-09-12 | 2008-08-19 | 이너비트 주식회사 | 데이타 압축 관리장치 |
KR100951099B1 (ko) | 2008-07-24 | 2010-04-07 | 인하대학교 산학협력단 | 데이터 저장 관리 방법 및 그 방법을 수행하기 위한프로그램이 기록된 기록매체 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10049039B2 (en) | 2015-07-31 | 2018-08-14 | SK Hynix Inc. | Memory system and operating method thereof |
US10162544B2 (en) | 2015-11-13 | 2018-12-25 | SK Hynix Inc. | Memory system and operating method of memory system for controlling memory blocks divided into memory sub-blocks containing a plurality of memory pages |
Also Published As
Publication number | Publication date |
---|---|
CN102479549A (zh) | 2012-05-30 |
TW201222249A (en) | 2012-06-01 |
TWI430091B (zh) | 2014-03-11 |
KR20120054502A (ko) | 2012-05-30 |
JP2012113343A (ja) | 2012-06-14 |
US8429339B2 (en) | 2013-04-23 |
US20120131264A1 (en) | 2012-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101204163B1 (ko) | 반도체 기억 장치 | |
US8392662B2 (en) | Methods of data management in non-volatile memory devices and related non-volatile memory systems | |
US8364931B2 (en) | Memory system and mapping methods using a random write page mapping table | |
US8606987B2 (en) | Data writing method for flash memory and controller using the same | |
US20100169588A1 (en) | Optimized memory management for random and sequential data writing | |
CN107402716B (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
US9785384B2 (en) | Semiconductor storage device and method for controlling nonvolatile semiconductor memory | |
EP2665065A2 (en) | Electronic device employing flash memory | |
US8819350B2 (en) | Memory system | |
US20080025706A1 (en) | Information recording apparatus and control method thereof | |
US20230153002A1 (en) | Control method for flash memory controller and associated flash memory controller and storage device | |
US10895991B2 (en) | Solid state device with improved sustained data writing speed | |
TWI584189B (zh) | 記憶體控制器、記憶體儲存裝置與資料寫入方法 | |
TWI718710B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
TW201709063A (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN111752479B (zh) | 有效存储数据的方法和系统 | |
US20090210612A1 (en) | Memory controller, nonvolatile memory device, and nonvolatile memory system | |
US20220269440A1 (en) | Control method for flash memory controller and associated flash memory controller and storage device | |
TW202242664A (zh) | 以局部清理操作來進行垃圾回收的方法與相關控制器和儲存系統 | |
KR101070511B1 (ko) | Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법 | |
KR101191650B1 (ko) | 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법 | |
KR20110070656A (ko) | 플래시 메모리의 데이터 처리 방법 및 장치 | |
TWI724550B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
JP6254986B2 (ja) | 情報処理装置、アクセスコントローラ、および情報処理方法 | |
US20140281160A1 (en) | Non-volatile semiconductor storage apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |