KR102195298B1 - 비휘발성 메모리 장치의 부분 페이지 프로그램 방법 - Google Patents
비휘발성 메모리 장치의 부분 페이지 프로그램 방법 Download PDFInfo
- Publication number
- KR102195298B1 KR102195298B1 KR1020140016367A KR20140016367A KR102195298B1 KR 102195298 B1 KR102195298 B1 KR 102195298B1 KR 1020140016367 A KR1020140016367 A KR 1020140016367A KR 20140016367 A KR20140016367 A KR 20140016367A KR 102195298 B1 KR102195298 B1 KR 102195298B1
- Authority
- KR
- South Korea
- Prior art keywords
- page
- random data
- data
- memory device
- random
- 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
- 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
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/12—Programming voltage switching 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
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- 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
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
비휘발성 메모리 장치에 저장된 랜덤 데이터가 비휘발성 메모리 장치에 포함된 페이지 버퍼 회로에 로딩된다. 메모리 컨트롤러로부터 하나의 페이지의 일부에 상응하는 사이즈를 가지는 부분 페이지 데이터를 수신하여 랜덤 데이터가 로딩된 페이지 버퍼 회로에 메모리 컨트롤러부터 수신된 부분 페이지 데이터가 재로딩된다. 랜덤 데이터가 로딩되고 부분 페이지 데이터가 재로딩된 페이지 버퍼 회로에 저장된 페이지 데이터가 목표 페이지에 프로그램된다. 이에 따라, 데이터 입력 시간 및 프로그램 시간이 감소될 수 있다.
Description
본 발명은 반도체 메모리 장치에 관한 것으로서, 더욱 상세하게는 비휘발성 메모리 장치의 부분 페이지 프로그램 방법에 관한 것이다.
플래시 메모리 장치와 같은 비휘발성 메모리 장치의 메모리 셀들은 서로 다른 논리 상태들을 나타내는 문턱 전압 분포들을 가지도록 프로그램됨으로써 데이터를 저장할 수 있다. 페이지 단위로 프로그램되는 비휘발성 메모리 장치에서, 하나의 페이지의 일부에 상응하는 데이터(부분 페이지 데이터(Partial Page Data))가 프로그램되더라도, 하나의 페이지 전체에 상응하는 데이터(전체 페이지 데이터(Full Page Data))가 메모리 컨트롤러로부터 비휘발성 메모리 장치에 입력되어야 한다. 한편, 비휘발성 메모리 장치의 저장 용량이 증가함에 따라, 비휘발성 메모리 장치에 포함된 하나의 페이지의 페이지 사이즈가 증가하고 있다. 이와 같이 페이지 사이즈가 증가함에 따라, 부분 페이지 프로그램(Partial Page Program)을 위한 데이터 입력 시간이 증가되고, 프로그램 시간이 증가될 수 있다.
본 발명의 일 목적은 데이터 입력 시간 및 프로그램 시간을 감소시킬 수 있는 비휘발성 메모리 장치의 부분 페이지 프로그램 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 부분 페이지 프로그램 방법에서, 비휘발성 메모리 장치에 포함된 페이지 버퍼 회로에 상기 비휘발성 메모리 장치에 저장된 랜덤 데이터가 로딩된다. 메모리 컨트롤러로부터 하나의 페이지의 일부에 상응하는 사이즈를 가지는 부분 페이지 데이터가 수신되고, 상기 랜덤 데이터가 로딩된 상기 페이지 버퍼 회로에 상기 메모리 컨트롤러부터 수신된 상기 부분 페이지 데이터가 재로딩된다. 목표 페이지에, 상기 랜덤 데이터가 로딩되고 상기 부분 페이지 데이터가 재로딩된 상기 페이지 버퍼 회로에 저장된 페이지 데이터가 프로그램된다.
일 실시예에서, 상기 랜덤 데이터를 로딩하도록, 랜덤 데이터 블록에 포함된 복수의 랜덤 데이터 페이지들 중 하나의 랜덤 데이터 페이지로부터 상기 랜덤 데이터가 리드될 수 있다.
일 실시예에서, 상기 하나의 랜덤 데이터 페이지로부터 상기 랜덤 데이터를 리드하는 랜덤 데이터 리드 동작의 리드 시간은 사용자 데이터 페이지로부터 데이터를 리드하는 사용자 데이터 리드 동작의 리드 시간보다 짧을 수 있다.
일 실시예에서, 상기 랜덤 데이터 리드 동작의 프리차지 시간 및 센싱 시간은 상기 사용자 데이터 리드 동작의 프리차지 시간 및 센싱 시간보다 짧을 수 있다.
일 실시예에서, 상기 하나의 랜덤 데이터 페이지로부터 리드된 상기 랜덤 데이터는 상기 메모리 컨트롤러로 출력되지 않을 수 있다.
일 실시예에서, 상기 목표 페이지를 포함하는 사용자 데이터 블록은 멀티-레벨 셀(Multi-Level Cell; MLC) 블록이고, 상기 복수의 랜덤 데이터 페이지들을 포함하는 상기 랜덤 데이터 블록은 싱글 레벨 셀(Single Level Cell; SLC) 블록일 수 있다.
일 실시예에서, 상기 랜덤 데이터가 리드되는 상기 하나의 랜덤 데이터 페이지는 상기 복수의 랜덤 데이터 페이지들로부터 상기 목표 페이지의 어드레스에 따라 선택될 수 있다.
일 실시예에서, 상기 랜덤 데이터가 리드되는 상기 하나의 랜덤 데이터 페이지는 상기 복수의 랜덤 데이터 페이지들로부터 순차적으로 선택될 수 있다.
일 실시예에서, 상기 랜덤 데이터가 리드되는 상기 하나의 랜덤 데이터 페이지는 상기 복수의 랜덤 데이터 페이지들로부터 랜덤하게 선택될 수 있다.
일 실시예에서, 상기 랜덤 데이터가 리드되는 상기 하나의 랜덤 데이터 페이지는 상기 메모리 컨트롤러에 의해 지정될 수 있다.
일 실시예에서, 상기 랜덤 데이터 블록에 저장된 상기 랜덤 데이터는 주기적으로 업데이트될 수 있다.
일 실시예에서, 상기 랜덤 데이터 블록에 대한 랜덤 데이터 리드 동작의 횟수가 소정의 횟수를 초과하는 경우, 상기 랜덤 데이터 블록에 저장된 상기 랜덤 데이터가 업데이트될 수 있다.
일 실시예에서, 상기 랜덤 데이터를 로딩하도록, 상기 메모리 컨트롤러로부터 상기 목표 페이지의 어드레스가 수신되고, 상기 메모리 컨트롤러로부터 랜덤 데이터 리드 커맨드가 수신되며, 상기 랜덤 데이터 리드 커맨드에 응답하여 상기 목표 페이지의 상기 어드레스에 상응하는 랜덤 데이터 페이지로부터 상기 랜덤 데이터가 리드될 수 있다.
일 실시예에서, 상기 랜덤 데이터를 로딩하도록, 상기 메모리 컨트롤러로부터 랜덤 데이터 리드 커맨드가 수신되고, 상기 메모리 컨트롤러로부터 랜덤 데이터 페이지의 어드레스가 수신되며, 상기 메모리 컨트롤러로부터 랜덤 데이터 리드 컨펌 커맨드가 수신되고, 상기 랜덤 데이터 리드 컨펌 커맨드에 응답하여 상기 수신된 어드레스가 지시하는 상기 랜덤 데이터 페이지로부터 상기 랜덤 데이터가 리드될 수 있다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 부분 페이지 프로그램 방법에서, 메모리 컨트롤러로부터 데이터 입력 커맨드가 수신되고, 상기 메모리 컨트롤러로부터 목표 페이지의 어드레스가 수신되며, 상기 메모리 컨트롤러로부터 랜덤 데이터 리드 커맨드가 수신되고, 상기 랜덤 데이터 리드 커맨드에 응답하여 상기 목표 페이지의 상기 어드레스에 상응하는 랜덤 데이터 페이지로부터 랜덤 데이터를 리드하여 페이지 버퍼 회로에 상기 랜덤 데이터가 로딩되며, 상기 메모리 컨트롤러로부터 하나의 페이지의 일부에 상응하는 사이즈를 가지는 부분 페이지 데이터를 수신하여 상기 페이지 버퍼 회로에 상기 부분 페이지 데이터가 재로딩되고, 상기 메모리 컨트롤러로부터 페이지 프로그램 컨펌 커맨드가 수신되고, 상기 페이지 프로그램 컨펌 커맨드에 응답하여 상기 목표 페이지에 상기 페이지 버퍼 회로에 저장된 페이지 데이터가 프로그램된다.
상기와 같은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 부분 페이지 프로그램 방법은, 비휘발성 메모리 장치에 부분 페이지 데이터(Partial Page Data)가 입력되기 전에, 비휘발성 메모리 장치에 저장된 랜덤 데이터를 페이지 버퍼 회로에 로딩함으로써, 메모리 컨트롤러로부터의 풀-페이지 데이터 로딩(Full-Page Data Loading)이 없이도 목표 페이지에 랜덤 페이지 데이터를 프로그램할 수 있다.
또한, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 부분 페이지 프로그램 방법은, 부분 페이지 프로그램(Partial Page Program)이 수행될 때, 메모리 컨트롤러로부터 비휘발성 메모리 장치에 풀-페이지 데이터가 아닌 부분 페이지 데이터가 입력되므로, 부분 페이지 프로그램의 데이터 입력 시간이 감소되고, 프로그램 시간이 감소될 수 있다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 부분 페이지 프로그램 방법을 나타내는 순서도이다.
도 2는 도 1의 부분 페이지 프로그램 방법을 수행하는 비휘발성 메모리 장치 및 메모리 컨트롤러를 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 비휘발성 메모리 장치에 포함된 랜덤 데이터 블록의 일 예를 나타내는 블록도이다.
도 4은 랜덤 데이터 블록에서 리드될 랜덤 데이터 페이지가 선택되는 일 예를 설명하기 위한 도면이다.
도 5는 랜덤 데이터 블록에서 리드될 랜덤 데이터 페이지가 선택되는 다른 예들을 설명하기 위한 도면이다.
도 6은 랜덤 데이터 블록에서 리드될 랜덤 데이터 페이지가 선택되는 또 다른 예를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 부분 페이지 프로그램 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 다른 실시예에 따른 부분 페이지 프로그램 방법을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시예에 따른 비휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 10은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 11은 본 발명의 실시예들에 따른 메모리 시스템이 메모리 카드에 응용된 예를 나타내는 도면이다.
도 12는 본 발명의 실시예들에 따른 메모리 시스템이 솔리드 스테이트 드라이브에 응용된 예를 나타내는 도면이다.
도 13은 본 발명의 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 도 1의 부분 페이지 프로그램 방법을 수행하는 비휘발성 메모리 장치 및 메모리 컨트롤러를 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 비휘발성 메모리 장치에 포함된 랜덤 데이터 블록의 일 예를 나타내는 블록도이다.
도 4은 랜덤 데이터 블록에서 리드될 랜덤 데이터 페이지가 선택되는 일 예를 설명하기 위한 도면이다.
도 5는 랜덤 데이터 블록에서 리드될 랜덤 데이터 페이지가 선택되는 다른 예들을 설명하기 위한 도면이다.
도 6은 랜덤 데이터 블록에서 리드될 랜덤 데이터 페이지가 선택되는 또 다른 예를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 부분 페이지 프로그램 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 다른 실시예에 따른 부분 페이지 프로그램 방법을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시예에 따른 비휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 10은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 11은 본 발명의 실시예들에 따른 메모리 시스템이 메모리 카드에 응용된 예를 나타내는 도면이다.
도 12는 본 발명의 실시예들에 따른 메모리 시스템이 솔리드 스테이트 드라이브에 응용된 예를 나타내는 도면이다.
도 13은 본 발명의 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 부분 페이지 프로그램 방법을 나타내는 순서도이고, 도 2는 도 1의 부분 페이지 프로그램 방법을 수행하는 비휘발성 메모리 장치 및 메모리 컨트롤러를 나타내는 블록도이다.
도 1 및 도 2를 참조하면, 부분 페이지 프로그램(Partial Page Program)을 수행하기 위하여, 비휘발성 메모리 장치(200)는 비휘발성 메모리 장치(200)에 미리 저장된 랜덤 데이터를 페이지 버퍼 회로(270)에 로딩한다(S110). 상기 랜덤 데이터는 비휘발성 메모리 장치(200)에 포함된 적어도 하나의 랜덤 데이터 페이지(255)에 미리 저장될 수 있다. 여기서, 랜덤 데이터(Random Data)는, 임의의 위치에서 접근되는 데이터인 랜덤 액세스 데이터가 아닌, 어떠한 데이터(예를 들어, 사용자 데이터 또는 다른 데이터)가 랜덤화됨으로써 생성된 랜덤화된(Randomized) 데이터를 의미한다.
비휘발성 메모리 장치(200)는 복수의 메모리 블록들(220, 230, 240, 250)을 가지는 메모리 셀 어레이(210)를 포함하고, 복수의 메모리 블록들(220, 230, 240, 250) 중 적어도 하나의 메모리 블록(250)이 상기 랜덤 데이터를 저장하기 위한 랜덤 데이터 블록(250)으로 지정되고, 다른 하나 이상의 블록들(220, 230, 240)이 사용자 데이터를 저장하기 위한 사용자 데이터 블록들(220, 230, 240)으로 지정될 수 있다. 일 실시예에서, 각 사용자 데이터 블록(220, 230, 240)은 멀티-레벨 셀(Multi-Level Cell; MLC) 블록이고, 랜덤 데이터 블록(250)은 싱글 레벨 셀(Single Level Cell; SLC) 블록일 수 있다.
랜덤 데이터 블록(250)은 하나의 페이지에 상응하는 사이즈를 가지는 상기 랜덤 데이터를 저장하는 적어도 하나의 랜덤 데이터 페이지(255)를 포함할 수 있다. 비휘발성 메모리 장치(200)가 메모리 컨트롤러(300)로부터 부분 페이지 프로그램 요청을 수신하면, 비휘발성 메모리 장치(200)는 랜덤 데이터 페이지(255)로부터 상기 랜덤 데이터를 리드함으로써 페이지 버퍼 회로(270)에 하나의 페이지에 상응하는 사이즈를 가지는 상기 랜덤 데이터를 로딩할 수 있다.
일 실시예에서, 상기 랜덤 데이터는, 상기 부분 페이지 프로그램이 수행되기 전에, 메모리 컨트롤러(300)에 의해 랜덤 데이터 블록(250)에 프로그램될 수 있다. 예를 들어, 비휘발성 메모리 장치(200) 및 메모리 컨트롤러(300)가 초기화될 때, 메모리 컨트롤러(300)는 데이터 랜덤화기(350)를 이용하여 상기 랜덤 데이터를 생성할 수 있고, 비휘발성 메모리 장치(200)에서 지정된 랜덤 데이터 블록(250)에 상기 랜덤 데이터를 프로그램할 수 있다. 실시예에 따라, 메모리 컨트롤러(300)는 랜덤 데이터 블록(250)에 저장된 상기 랜덤 데이터를 주기적으로 업데이트할 수 있다. 예를 들어, 랜덤 데이터 블록(250)에 대한 랜덤 데이터 리드 동작의 횟수가 소정의 횟수를 초과하는 경우, 메모리 컨트롤러(300)는 랜덤 데이터 블록(250)에 대한 소거 동작이 수행되도록 비휘발성 메모리 장치(200)를 제어할 수 있고, 또한 (이전 랜덤 데이터와 같거나 다른) 새로운 랜덤 데이터를 생성하여 랜덤 데이터 블록(250)에 프로그램할 수 있다. 다른 실시예에서, 상기 랜덤 데이터는 비휘발성 메모리 장치(200)에 포함된 랜덤 데이터 생성기에 의해 생성되어 랜덤 데이터 블록(250)에 프로그램될 수 있다.
한편, 랜덤 데이터 페이지(255)로부터 페이지 버퍼 회로(270)로 상기 랜덤 데이터를 리드하는 랜덤 데이터 리드 동작(또는 랜덤 데이터 페이지(255)로부터 페이지 버퍼 회로(270)로의 데이터 전송(Data Transfer) 동작)의 리드 시간(또는 랜덤 데이터 페이지(255)로부터 페이지 버퍼 회로(270)로의 데이터 전송 시간(tR))은 사용자 데이터 페이지로부터 데이터를 리드하는 사용자 데이터 리드 동작(또는 사용자 데이터 페이지로부터 페이지 버퍼 회로(270)로의 데이터 전송 동작)의 리드 시간(또는 사용자 데이터 페이지로부터 페이지 버퍼 회로(270)로의 데이터 전송 시간(tR))보다 짧을 수 있다. 예를 들어, 상기 랜덤 데이터 리드 동작은 상기 사용자 데이터 리드 동작의 프리차지 시간 및 센싱 시간보다 짧은 프리차지 시간 및 센싱 시간을 가짐으로써, 상기 사용자 데이터 리드 동작보다 고속으로 수행될 수 있다. 또한, 상기 랜덤 데이터 리드 동작에 의해 랜덤 데이터 페이지(255)로부터 리드된 상기 랜덤 데이터는 메모리 컨트롤러(300)로 출력되고, 상기 랜덤 데이터에 대한 에러 정정(Error Correction)이 수행되지 않으며, 리드된 데이터의 오류를 감소시키기 위한 리드 재시도(Read Retry)가 수행되지 않을 수 있다. 즉, 상기 랜덤 데이터 리드 동작에 의해 리드된 상기 랜덤 데이터가 에러 비트를 포함하고 있더라도, 신속한 동작 완료를 위해 이에 대한 복구 또는 정정이 수행되지 않을 수 있다. 또한, 일 실시예에서, 랜덤 데이터 블록(250)이 싱글 레벨 셀 블록이고, 랜덤 데이터 페이지(255)가 싱글 레벨 셀 페이지일 수 있고, 이 경우, 상기 랜덤 데이터 리드 동작이 더욱 신속하게 수행될 수 있다.
일 실시예에서, 비휘발성 메모리 장치(200)는 메모리 컨트롤러(300)로부터 목표 페이지의 어드레스를 수신하고, 메모리 컨트롤러(300)로부터 랜덤 데이터 리드 커맨드를 수신할 수 있다. 비휘발성 메모리 장치(200)는 상기 랜덤 데이터 리드 커맨드에 응답하여 상기 목표 페이지의 상기 어드레스에 상응하는 랜덤 데이터 페이지에 대한 상기 랜덤 데이터 리드 동작을 수행할 수 있다. 다른 실시예에서, 비휘발성 메모리 장치(200)는 메모리 컨트롤러(300)로부터 랜덤 데이터 리드 커맨드를 수신하고, 메모리 컨트롤러(300)로부터 랜덤 데이터 페이지의 어드레스를 수신하며, 메모리 컨트롤러(300)로부터 랜덤 데이터 리드 컨펌 커맨드를 수신할 수 있다. 비휘발성 메모리 장치(200)는 상기 랜덤 데이터 리드 컨펌 커맨드에 응답하여 상기 수신된 어드레스가 지시하는 상기 랜덤 데이터 페이지에 대한 상기 랜덤 데이터 리드 동작을 수행할 수 있다.
비휘발성 메모리 장치(200)는 메모리 컨트롤러(300)로부터 하나의 페이지의 일부에 상응하는 사이즈를 가지는 부분 페이지 데이터(Partial Page Data)를 수신하고, 상기 랜덤 데이터가 로딩된 페이지 버퍼 회로(270)에 메모리 컨트롤러(300)로부터 수신된 상기 부분 페이지 데이터를 재로딩한다(S130). 한편, 메모리 컨트롤러(300)는 호스트로부터 상기 부분 페이지 데이터를 수신하고, 데이터 랜덤화기(350)를 이용하여 상기 수신된 부분 페이지 데이터를 랜덤화하여 비휘발성 메모리 장치(200)의 페이지 버퍼 회로(270)에 제공할 수 있다. 즉, 상기 랜덤 데이터와 같이, 페이지 버퍼 회로(270)에 재로딩되는 상기 부분 페이지 데이터 또한 랜덤화된 데이터일 수 있다. 한편, 페이지 버퍼 회로(270)의 일 부분에는 상기 부분 페이지 데이터가 저장되고, 나머지 부분에는 상기 랜덤 데이터가 저장될 수 있다. 즉, 페이지 버퍼 회로(270)에는 상기 일 부분에서의 상기 부분 페이지 데이터 및 상기 나머지 부분에서의 상기 랜덤 데이터를 포함하는 페이지 데이터가 저장될 수 있다.
비휘발성 메모리 장치(200)는 상기 랜덤 데이터가 로딩되고 상기 부분 페이지 데이터가 재로딩된 페이지 버퍼 회로(270)에 저장된 페이지 데이터를 사용자 데이터 블록(230)의 목표 페이지(235)에 프로그램한다. 한편, 페이지 버퍼 회로(270)에 저장된 상기 페이지 데이터는 일 부분에서 상기 부분 페이지 데이터를 포함하고, 나머지 부분에서 상기 랜덤 데이터를 포함할 수 있다. 이에 따라, 목표 페이지(235)에는 일 부분에서 상기 부분 페이지 데이터가 프로그램되고, 나머지 부분에서 상기 랜덤 데이터가 프로그램될 수 있다. 이와 같이, 메모리 컨트롤러(300)로부터 하나의 페이지의 일부에 상응하는 사이즈를 가지는 상기 부분 페이지 데이터만이 비휘발성 메모리 장치(200)에 입력되더라도, 목표 페이지(235)의 전체에 랜덤화된 데이터가 저장될 수 있다.
한편, 각 페이지의 적어도 일부에 일정한 데이터(예를 들어, 0 또는 1)가 저장되는 경우, 비휘발성 메모리 장치의 신뢰성이 저하될 수 있다. 예를 들어, 하나의 스트링의 대부분의 메모리 셀들이 프로그램 상태인 경우, 상기 스트링의 저항이 증가하여 소거 상태인 셀이 프로그램 상태인 것으로 리드될 수 있다. 또한, 하나의 스트링의 대부분의 메모리 셀들이 소거 상태인 경우, 리드 디스터브에 의해 소거 상태의 셀이 점점 프로그램될 수 있다. 이에 따라, 비휘발성 메모리 장치의 신뢰성을 유지하기 위하여, 각 페이지에는 랜덤화된 데이터가 저장되어야 한다. 이를 위하여, 종래의 비휘발성 메모리 장치에서는, 하나의 페이지의 일부에 상응하는 사이즈를 가지는 부분 페이지 데이터가 프로그램되더라도, 하나의 페이지 전체에 상응하는 사이즈를 가지는 전체 페이지 데이터(Full Page Data)가 메모리 컨트롤러로부터 비휘발성 메모리 장치에 입력되었다. 이에 따라, 메모리 컨트롤러로부터 비휘발성 메모리 장치로의 데이터 입력 시간(또는 로딩 시간(Loading Time))이 증가되고, 프로그램 시간이 증가되었다. 그러나, 본 발명의 실시예들에 따른 부분 페이지 프로그램 방법에서는, 비휘발성 메모리 장치(200)내에 저장된 랜덤 데이터가 페이지 버퍼 회로(270)에 미리 로딩되므로, 메모리 컨트롤러(300)로부터 부분 페이지 데이터가 로딩되더라도, 목표 페이지(235)의 전체에 랜덤화된 데이터가 프로그램될 수 있다. 이에 따라, 메모리 컨트롤러로(300)부터 비휘발성 메모리 장치(200)로의 데이터 입력 시간이 단축될 수 있다. 또한, 페이지 버퍼 회로(270)에 상기 랜덤 데이터를 로딩하기 위한 상기 랜덤 데이터 리드 동작이 고속으로 수행되므로, 전체 프로그램 시간이 단축될 수 있다.
상술한 바와 같이, 본 발명의 실시예들에 따른 비휘발성 메모리 장치(200)의 부분 페이지 프로그램 방법은, 비휘발성 메모리 장치(200)에 부분 페이지 데이터(Partial Page Data)가 입력되기 전에, 비휘발성 메모리 장치(200)에 저장된 랜덤 데이터를 페이지 버퍼 회로(270)에 로딩함으로써, 메모리 컨트롤러(300)로부터의 풀-페이지 데이터 로딩(Full-Page Data Loading)이 없이도 목표 페이지(235) 전체에 랜덤화된 데이터를 프로그램할 수 있다. 또한, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 부분 페이지 프로그램 방법은, 부분 페이지 프로그램(Partial Page Program)이 수행될 때, 메모리 컨트롤러(300)로부터 비휘발성 메모리 장치(200)에 풀-페이지 데이터가 아닌 부분 페이지 데이터가 입력되므로, 데이터 입력 시간이 감소되고, 프로그램 시간이 감소될 수 있다.
도 3은 본 발명의 실시예들에 따른 비휘발성 메모리 장치에 포함된 랜덤 데이터 블록의 일 예를 나타내는 블록도이고, 도 4은 랜덤 데이터 블록에서 리드될 랜덤 데이터 페이지가 선택되는 일 예를 설명하기 위한 도면이며, 도 5는 랜덤 데이터 블록에서 리드될 랜덤 데이터 페이지가 선택되는 다른 예들을 설명하기 위한 도면이고, 도 6은 랜덤 데이터 블록에서 리드될 랜덤 데이터 페이지가 선택되는 또 다른 예를 설명하기 위한 도면이다.
도 3을 참조하면, 비휘발성 메모리 장치는 적어도 하나의 랜덤 데이터 블록(400)을 포함할 수 있고, 랜덤 데이터 블록(400)은 복수의 랜덤 데이터 페이지들(410, 420, 430, 480, 490)을 포함할 수 있다.
부분 페이지 프로그램이 수행되기 전에, 랜덤 데이터가 랜덤 데이터 블록(400)의 랜덤 데이터 페이지들(410, 420, 430, 480, 490)에 프로그램될 수 있다. 일 실시예에서, 상기 랜덤 데이터는 메모리 컨트롤러에 의해 랜덤 데이터 블록(400)에 프로그램될 수 있다. 예를 들어, 메모리 컨트롤러는 데이터 랜덤화기를 이용하여 상기 랜덤 데이터를 생성할 수 있고, 비휘발성 메모리 장치에서 지정된 랜덤 데이터 블록(400)에 상기 랜덤 데이터를 프로그램하도록 비휘발성 메모리 장치를 제어할 수 있다. 또한 실시예에 따라, 메모리 컨트롤러는 랜덤 데이터 블록(400)에 저장된 상기 랜덤 데이터를 주기적으로 업데이트할 수 있다. 예를 들어, 랜덤 데이터 블록(400)에 대한 랜덤 데이터 리드 동작의 횟수가 소정의 횟수를 초과하는 경우, 메모리 컨트롤러는 랜덤 데이터 블록(400)에 대한 소거 동작이 수행되도록 비휘발성 메모리 장치를 제어할 수 있고, 또한 (이전 랜덤 데이터와 같거나 다른) 새로운 랜덤 데이터를 생성하여 랜덤 데이터 블록(400)에 프로그램하도록 비휘발성 메모리 장치를 제어할 수 있다. 다른 실시예에서, 상기 랜덤 데이터는 비휘발성 메모리 장치에 포함된 랜덤 데이터 생성기에 의해 생성되어 랜덤 데이터 블록(400)에 프로그램될 수 있다.
한편, 하나의 랜덤 데이터 페이지에만 랜덤 데이터가 저장되고, 부분 페이지 프로그램이 수행될 때마다 동일한 랜덤 데이터가 이용되는 경우, 각각의 사용자 데이터 페이지들에 일정한 데이터가 프로그램될 수 있다. 이 경우, 비휘발성 메모리 장치의 신뢰성이 저하될 수 있다. 이를 방지하도록, 부분 페이지 프로그램이 수행될 때, 랜덤 데이터 블록(400)에 포함된 복수의 랜덤 데이터 페이지들(410, 420, 430, 480, 490) 중 하나의 랜덤 데이터 페이지가 선택되고, 선택된 랜덤 데이터 페이지로부터 페이지 버퍼 회로로 랜덤 데이터가 리드될 수 있다.
일 실시예에서, 랜덤 데이터가 리드되는 랜덤 데이터 페이지는 복수의 랜덤 데이터 페이지들(410, 420, 430, 480, 490)로부터 부분 페이지 데이터가 프로그램될 목표 페이지의 어드레스에 따라 선택될 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 사용자 데이터 블록(500)에 포함된 각 사용자 데이터 페이지(510, 520)에 대하여 랜덤 데이터 블록(400a)의 상응하는 랜덤 데이터 페이지(410a, 420a, 430a, 440a, 450a, 460a)가 미리 지정될 수 있다.
예를 들어, 멀티 레벨 셀 블록(예를 들어, 3비트 메모리 셀 블록)인 사용자 데이터 블록(500)의 제1 사용자 데이터 페이지(510)에는 싱글 레벨 셀 블록인 랜덤 데이터 블록(400a)의 제1 내지 제3 랜덤 데이터 페이지들(410a, 420a, 430a)이 지정되고, 사용자 데이터 블록(500)의 제2 사용자 데이터 페이지(520)에는 랜덤 데이터 블록(400a)의 제4 내지 제6 랜덤 데이터 페이지들(440a, 450a, 460a)이 지정될 수 있다. 이 경우, 제1 사용자 데이터 페이지(510)의 첫 번째 페이지(예를 들어, 최하위 비트(Least Significant Bit; LSB) 페이지)에 부분 페이지 데이터가 프로그램될 때, 제1 랜덤 데이터 페이지(410a)로부터 페이지 버퍼 회로로 랜덤 데이터가 리드될 수 있고, 제1 사용자 데이터 페이지(510)의 두 번째 페이지에 부분 페이지 데이터가 프로그램될 때, 제2 랜덤 데이터 페이지(420a)로부터 페이지 버퍼 회로로 랜덤 데이터가 리드될 수 있으며, 제1 사용자 데이터 페이지(510)의 세 번째 페이지(예를 들어, 최상위 비트(Most Significant Bit; MSB) 페이지)에 부분 페이지 데이터가 프로그램될 때, 제3 랜덤 데이터 페이지(430a)로부터 페이지 버퍼 회로로 랜덤 데이터가 리드될 수 있다. 이와 같이, 인접한 사용자 데이터 페이지들에 대하여 서로 다른 랜덤 데이터 페이지들이 지정됨으로써, 인접한 사용자 데이터 페이지들에 서로 다른 랜덤 데이터들이 프로그램될 수 있다. 이에 따라, 비휘발성 메모리 장치의 신뢰성 저하가 방지될 수 있다. 한편, 도 4에는 각 사용자 데이터 페이지(510, 520)에 대하여 적어도 하나의 랜덤 데이터 페이지(410a, 420a, 430a, 440a, 450a, 460a)가 지정되는 일 예가 도시되어 있으나, 이는 예시적으로 도시된 것으로 각 사용자 데이터 페이지에 대하여 랜덤 데이터 페이지가 지정되는 방식은 이에 한정되지 않고, 실시예에 따라 다양할 수 있다.
다른 실시예에서, 랜덤 데이터가 리드되는 랜덤 데이터 페이지는 랜덤 데이터 리드 동작이 수행될 때마다 복수의 랜덤 데이터 페이지들(410, 420, 430, 480, 490)로부터 순차적으로 선택될 수 있다. 예를 들어, 도 5에 도시된 바와 같이, 랜덤 데이터 블록(400b)은 제1 내지 제6 랜덤 데이터 페이지들(410b, 420b, 430b, 440b, 450b, 460b)을 포함하고, 랜덤 데이터 리드 동작이 수행될 때마다 제1 내지 제6 랜덤 데이터 페이지들(410b, 420b, 430b, 440b, 450b, 460b)이 순차적으로 선택될 수 있다. 일 예에서, 제1 부분 페이지 프로그램이 수행될 때, 제1 랜덤 데이터 페이지(410b)에 대한 랜덤 데이터 리드 동작이 수행되고, 제2 부분 페이지 프로그램이 수행될 때, 제2 랜덤 데이터 페이지(420b)에 대한 랜덤 데이터 리드 동작이 수행되며, 제3 부분 페이지 프로그램이 수행될 때, 제3 랜덤 데이터 페이지(430b)에 대한 랜덤 데이터 리드 동작이 수행될 수 있다. 이와 같이, 부분 페이지 프로그램들에 대하여 서로 다른 랜덤 데이터 페이지들(410b, 420b, 430b, 440b, 450b, 460b)에 대한 랜덤 데이터 리드 동작들이 수행되므로, 비휘발성 메모리 장치의 신뢰성 저하가 방지될 수 있다.
또 다른 실시예에서, 랜덤 데이터가 리드되는 랜덤 데이터 페이지는 랜덤 데이터 리드 동작이 수행될 때마다 복수의 랜덤 데이터 페이지들(410, 420, 430, 480, 490)로부터 랜덤하게 선택될 수 있다. 일 예에서, 제1 부분 페이지 프로그램이 수행될 때, 제2 랜덤 데이터 페이지(420b)에 대한 랜덤 데이터 리드 동작이 수행되고, 제2 부분 페이지 프로그램이 수행될 때, 제6 랜덤 데이터 페이지(460b)에 대한 랜덤 데이터 리드 동작이 수행되며, 제3 부분 페이지 프로그램이 수행될 때, 제4 랜덤 데이터 페이지(440b)에 대한 랜덤 데이터 리드 동작이 수행될 수 있다. 이와 같이, 부분 페이지 프로그램들에 대하여 서로 다른 랜덤 데이터 페이지들(410b, 420b, 430b, 440b, 450b, 460b)에 대한 랜덤 데이터 리드 동작들이 수행되므로, 비휘발성 메모리 장치의 신뢰성 저하가 방지될 수 있다.
또 다른 실시예에서, 랜덤 데이터가 리드되는 랜덤 데이터 페이지는 복수의 랜덤 데이터 페이지들(410, 420, 430, 480, 490)로부터 메모리 컨트롤러에 의해 선택될 수 있다. 예를 들어, 도 6에 도시된 바와 같이, 랜덤 데이터 블록(400c)은 복수의 랜덤 데이터 페이지들(410c, 420c, 430c)을 포함하고, 메모리 컨트롤러(300)는 랜덤 데이터 리드 동작이 수행될 때 랜덤 데이터가 리드될 랜덤 데이터 페이지(420c)의 어드레스를 비휘발성 메모리 장치에 제공함으로써 랜덤 데이터가 리드될 랜덤 데이터 페이지(420c)를 지정할 수 있다. 이와 같이, 메모리 컨트롤러(300)가 매 랜덤 데이터 리드 동작이 수행될 때마다 랜덤 데이터가 리드될 랜덤 데이터 페이지를 지정함으로써, 비휘발성 메모리 장치의 신뢰성 저하가 방지될 수 있다.
상술한 바와 같이, 부분 페이지 프로그램이 수행될 때, 랜덤 데이터 블록(400)에 포함된 복수의 랜덤 데이터 페이지들(410, 420, 430, 480, 490) 중 하나의 랜덤 데이터 페이지가 선택되고, 선택된 랜덤 데이터 페이지로부터 페이지 버퍼 회로로 랜덤 데이터가 리드될 수 있다. 이에 따라, 하나의 사용자 데이터 블록에 포함된 각각의 사용자 데이터 페이지들에 동일한 랜덤 데이터가 프로그램되지 않음으로써, 비휘발성 메모리 장치의 신뢰성 저하가 방지될 수 있다.
도 7은 본 발명의 일 실시예에 따른 부분 페이지 프로그램 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 부분 페이지 프로그램을 수행하도록, 메모리 컨트롤러(300a)는 비휘발성 메모리 장치(200a)에 데이터 입력 커맨드를 전송할 수 있다(S610). 예를 들어, 상기 데이터 입력 커맨드는 직렬 데이터 입력 커맨드(Serial Data Input Command)(예를 들어, 80h)일 수 있다.
또한, 메모리 컨트롤러(300a)는 비휘발성 메모리 장치(200a)에 부분 페이지 데이터가 프로그램될 목표 페이지의 어드레스를 전송할 수 있다(S620). 일 실시예에서, 메모리 컨트롤러(300a)는 비휘발성 메모리 장치(200a)에 상기 목표 페이지의 로우 어드레스를 전송할 수 있다. 예를 들어, 비휘발성 메모리 장치(200a)는 상기 목표 페이지의 로우 어드레스를 3 클록 사이클 동안 수신할 수 있다. 다른 실시예에서, 메모리 컨트롤러(300a)는 비휘발성 메모리 장치(200a)에 상기 목표 페이지의 로우 어드레스, 및 상기 목표 페이지에서 상기 부분 페이지 데이터가 프로그램되기 시작하는 위치를 나타내는 컬럼 어드레스를 전송할 수 있다. 예를 들어, 비휘발성 메모리 장치(200a)는 상기 목표 페이지의 컬럼 어드레스 및 로우 어드레스를 5 클록 사이클 동안 수신할 수 있다.
메모리 컨트롤러(300a)는 비휘발성 메모리 장치(200a)에 랜덤 데이터 리드 커맨드를 전송할 수 있다(S630). 한편, 랜덤 데이터 리드 커맨드는 비휘발성 메모리 장치에 대한 표준에서 종래에 정의된 커맨드 값(예를 들어, 00h, 05h, 10h, 11h, 30h, 35h, 60h, 70h, 7Bh, 80h, 81h, 85h, 90h, D0h, E0h, F1h, F2h, FFh 등)과 다른 값을 가질 수 있다.
비휘발성 메모리 장치(200a)는 상기 랜덤 데이터 리드 커맨드에 응답하여 상기 목표 페이지의 상기 어드레스에 상응하는 랜덤 데이터 페이지로부터 랜덤 데이터를 리드함으로써 페이지 버퍼 회로에 상기 랜덤 데이터를 로딩할 수 있다(S640). 이에 따라, 페이지 버퍼 회로에는 상기 랜덤 데이터가 우선적으로 저장될 수 있다. 한편, 예를 들어, 비휘발성 메모리 장치(200a)는 복수의 랜덤 데이터 페이지들을 포함할 수 있고, 각 사용자 데이터 페이지마다 복수의 랜덤 데이터 페이지들 중 상응하는 랜덤 데이터 페이지가 지정될 수 있다. 비휘발성 메모리 장치(200a)는 상기 목표 페이지의 상기 어드레스에 기초하여 상기 복수의 랜덤 데이터 페이지들 중 상기 목표 페이지에 대하여 지정된 랜덤 데이터 페이지를 선택할 수 있다.
메모리 컨트롤러(300a)는 비휘발성 메모리 장치(200a)에서 랜덤 데이터 리드 동작이 완료되는 시점을 확인할 수 있다. 예를 들어, 메모리 컨트롤러(300a)는 비휘발성 메모리 장치(200a)의 R/B(Ready/Busy) 출력을 모니터링함으로써, 랜덤 데이터 리드 동작이 완료되는 시점을 확인할 수 있다. 다른 예에서, 메모리 컨트롤러(300a)는 비휘발성 메모리 장치(200a)에 리드 상태 레지스터 커맨드(Read Status Register Command)를 전송함으로써 랜덤 데이터 리드 동작이 완료되는 시점을 확인할 수 있다(S650). 예를 들어, 상기 리드 상태 레지스터 커맨드는 70h의 값을 가질 수 있다.
상기 랜덤 데이터 리드 동작이 완료되면, 메모리 컨트롤러(300a)는 비휘발성 메모리 장치(200a)에 부분 페이지 데이터를 전송할 수 있다(S660). 비휘발성 메모리 장치(200a)는 상기 부분 페이지 데이터를 페이지 버퍼 회로에 로딩(재로딩)할 수 있다. 이에 따라, 페이지 버퍼 회로에서 상기 부분 페이지 데이터가 재로딩된 부분에는 상기 부분 페이지 데이터가 저장되고, 나머지 부분에는 상기 랜덤 데이터가 저장될 수 있다.
상기 부분 페이지 데이터의 전송 후, 메모리 컨트롤러(300a)는 비휘발성 메모리 장치(200a)에 페이지 프로그램 컨펌 커맨드를 전송할 수 있다(S670). 예를 들어, 상기 페이지 프로그램 컨펌 커맨드는 10h의 값을 가질 수 있다.
비휘발성 메모리 장치(200a)는 상기 페이지 프로그램 컨펌 커맨드에 응답하여 상기 목표 페이지에 상기 페이지 버퍼 회로에 저장된 페이지 데이터를 프로그램할 수 있다(S680). 이에 따라, 상기 목표 페이지에는 일부에서 상기 부분 페이지 데이터 및 나머지 부분에서 상기 랜덤 데이터가 프로그램될 수 있다.
상술한 바와 같이, 본 발명의 일 실시예에 따른 부분 페이지 프로그램 방법에서, 비휘발성 메모리 장치(200a)에 부분 페이지 데이터가 입력되기 전에, 비휘발성 메모리 장치(200a)에 저장된 랜덤 데이터가 페이지 버퍼 회로에 로딩됨으로써, 메모리 컨트롤러(300a)로부터의 풀-페이지 데이터 로딩이 없이도 목표 페이지 전체에 랜덤화된 데이터가 프로그램될 수 있다. 또한, 본 발명의 일 실시예에 따른 부분 페이지 프로그램 방법에서, 부분 페이지 프로그램이 수행될 때, 메모리 컨트롤러(300a)로부터 비휘발성 메모리 장치(200a)에 풀-페이지 데이터가 아닌 부분 페이지 데이터가 입력되므로, 데이터 입력 시간이 감소되고, 프로그램 시간이 감소될 수 있다.
도 8은 본 발명의 다른 실시예에 따른 부분 페이지 프로그램 방법을 설명하기 위한 도면이다.
도 8을 참조하면, 부분 페이지 프로그램을 수행하도록, 메모리 컨트롤러(300b)는 비휘발성 메모리 장치(200b)에 랜덤 데이터 리드 커맨드를 전송할 수 있다(S710). 한편, 랜덤 데이터 리드 커맨드는 비휘발성 메모리 장치에 대한 표준에서 종래에 정의된 커맨드 값(예를 들어, 00h, 05h, 10h, 11h, 30h, 35h, 60h, 70h, 7Bh, 80h, 81h, 85h, 90h, D0h, E0h, F1h, F2h, FFh 등)과 다른 값을 가질 수 있다.
상기 랜덤 데이터 리드 커맨드를 전송한 후, 메모리 컨트롤러(300b)는 비휘발성 메모리 장치(200b)에 랜덤 데이터 페이지의 어드레스를 전송할 수 있다(S720). 예를 들어, 메모리 컨트롤러(300b)는 비휘발성 메모리 장치(200b)에 상기 랜덤 데이터 페이지의 로우 어드레스를 전송하거나, 상기 랜덤 데이터 페이지의 로우 어드레스 및 컬럼 어드레스를 전송할 수 있다.
상기 랜덤 데이터 페이지의 어드레스를 전송한 후, 메모리 컨트롤러(300b)는 비휘발성 메모리 장치(200b)에 랜덤 데이터 리드 컨펌 커맨드를 전송할 수 있다(S730). 한편, 랜덤 데이터 리드 컨펌 커맨드는 비휘발성 메모리 장치에 대한 표준에서 종래에 정의된 커맨드 값(예를 들어, 00h, 05h, 10h, 11h, 30h, 35h, 60h, 70h, 7Bh, 80h, 81h, 85h, 90h, D0h, E0h, F1h, F2h, FFh 등)과 다른 값을 가질 수 있다.
비휘발성 메모리 장치(200b)는 상기 랜덤 데이터 리드 컨펌 커맨드에 응답하여 메모리 컨트롤러(300b)로부터 수신된 어드레스가 지시하는 상기 랜덤 데이터 페이지로부터 랜덤 데이터를 리드함으로써 페이지 버퍼 회로에 상기 랜덤 데이터를 로딩할 수 있다(S740). 이에 따라, 페이지 버퍼 회로에는 상기 랜덤 데이터가 우선적으로 저장될 수 있다.
메모리 컨트롤러(300b)는, 비휘발성 메모리 장치(200b)의 R/B 출력을 모니터링하거나, 리드 상태 레지스터 커맨드를 전송함으로써(S745), 랜덤 데이터 리드 동작이 완료되는 시점을 확인할 수 있다.
상기 랜덤 데이터 리드 동작이 완료되면, 메모리 컨트롤러(300b)는 비휘발성 메모리 장치(200b)에 데이터 입력 커맨드를 전송할 수 있다(S750). 예를 들어, 상기 데이터 입력 커맨드는 랜덤 액세스 데이터 입력 커맨드(Random Access Data Input Command)(예를 들어, 85h)일 수 있다.
상기 데이터 입력 커맨드를 전송한 후, 메모리 컨트롤러(300b)는 비휘발성 메모리 장치(200b)에 부분 페이지 데이터가 프로그램될 목표 페이지의 어드레스를 전송할 수 있다(S760). 예를 들어, 메모리 컨트롤러(300b)는 비휘발성 메모리 장치(200b)에 상기 목표 페이지의 로우 어드레스를 전송하거나, 상기 목표 페이지의 로우 어드레스 및 컬럼 어드레스를 전송할 수 있다.
상기 목표 페이지의 어드레스를 전송한 후, 메모리 컨트롤러(300b)는 비휘발성 메모리 장치(200b)에 부분 페이지 데이터를 전송할 수 있다(S770). 비휘발성 메모리 장치(200b)는 상기 부분 페이지 데이터를 페이지 버퍼 회로에 로딩(재로딩)할 수 있다. 이에 따라, 페이지 버퍼 회로에서 상기 부분 페이지 데이터가 재로딩된 부분에는 상기 부분 페이지 데이터가 저장되고, 나머지 부분에는 상기 랜덤 데이터가 저장될 수 있다.
상기 부분 페이지 데이터의 전송 후, 메모리 컨트롤러(300b)는 비휘발성 메모리 장치(200b)에 페이지 프로그램 컨펌 커맨드를 전송할 수 있다(S780). 예를 들어, 상기 페이지 프로그램 컨펌 커맨드는 10h의 값을 가질 수 있다.
비휘발성 메모리 장치(200b)는 상기 페이지 프로그램 컨펌 커맨드에 응답하여 상기 목표 페이지에 상기 페이지 버퍼 회로에 저장된 페이지 데이터를 프로그램할 수 있다(S790). 이에 따라, 상기 목표 페이지에는 일부에서 상기 부분 페이지 데이터 및 나머지 부분에서 상기 랜덤 데이터가 프로그램될 수 있다.
상술한 바와 같이, 본 발명의 다른 실시예에 따른 부분 페이지 프로그램 방법에서, 비휘발성 메모리 장치(200b)에 부분 페이지 데이터가 입력되기 전에, 비휘발성 메모리 장치(200b)에 저장된 랜덤 데이터가 페이지 버퍼 회로에 로딩됨으로써, 메모리 컨트롤러(300b)로부터의 풀-페이지 데이터 로딩이 없이도 목표 페이지 전체에 랜덤화된 데이터가 프로그램될 수 있다. 또한, 본 발명의 다른 실시예에 따른 부분 페이지 프로그램 방법에서, 부분 페이지 프로그램이 수행될 때, 메모리 컨트롤러(300b)로부터 비휘발성 메모리 장치(200b)에 풀-페이지 데이터가 아닌 부분 페이지 데이터가 입력되므로, 데이터 입력 시간이 감소되고, 프로그램 시간이 감소될 수 있다.
도 9는 본 발명의 일 실시예에 따른 비휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 9를 참조하면, 메모리 시스템(800a)은 메모리 컨트롤러(810a) 및 비휘발성 메모리 장치(820a)를 포함한다.
비휘발성 메모리 장치(820a)는 복수의 메모리 블록들(825a)을 포함할 수 있다. 일 실시예에서, 복수의 메모리 블록들(825a) 중 적어도 하나의 메모리 블록은 랜덤 데이터 블록으로 지정될 수 있다. 상기 랜덤 데이터 블록에는 랜덤 데이터(랜덤화된 데이터)가 미리 저장될 수 있다. 부분 페이지 프로그램이 수행될 때, 비휘발성 메모리 장치(820a)는, 비휘발성 메모리 장치(820a)에 부분 페이지 데이터가 입력되기 전에, 상기 랜덤 데이터 블록에 저장된 상기 랜덤 데이터를 페이지 버퍼 회로에 로딩함으로써, 메모리 컨트롤러(810a)로부터의 풀-페이지 데이터 로딩이 없이도 목표 페이지 전체에 랜덤화된 데이터를 프로그램할 수 있다. 또한, 부분 페이지 프로그램이 수행될 때, 메모리 컨트롤러(810a)로부터 비휘발성 메모리 장치(820a)에 풀-페이지 데이터가 아닌 부분 페이지 데이터가 입력되므로, 데이터 입력 시간이 감소되고, 프로그램 시간이 감소될 수 있다.
메모리 컨트롤러(810a)는 비휘발성 메모리 장치(820a)를 제어한다. 메모리 컨트롤러(810a)는 외부의 호스트와 비휘발성 메모리 장치(820a) 사이의 데이터 교환을 제어할 수 있다. 메모리 컨트롤러(810a)는 중앙 처리 장치(CPU)와 같은 프로세서(811a), 버퍼 메모리(812a), 호스트 인터페이스(813a), 메모리 인터페이스(814a), ECC 블록(815a)을 포함할 수 있다. 또한, 실시예에 따라, 메모리 컨트롤러(810a)는 사용자 데이터를 랜덤화하여 비휘발성 메모리 장치(820a)에 제공하고, 비휘발성 메모리 장치(820a)로부터 독출된 사용자 데이터를 복구(de-randomize)하여 호스트로 제공하기 위한 데이터 랜덤화기(819a)를 더 포함할 수 있다.
프로세서(811a)는 상기 데이터 교환을 위한 동작을 수행할 수 있다. 일 실시예에서, 버퍼 메모리(812a)는 SRAM(Static random access memory)으로 구현될 수 있다. 다른 실시예에서, 버퍼 메모리(812a)는 DRAM(Dynamic random access memory), PRAM, FRAM, RRAM, MRAM 등으로 구현될 수 있다. 실시예에 따라서, 버퍼 메모리(812a)는 메모리 컨트롤러(810a)의 내부 또는 외부에 위치할 수 있다.
호스트 인터페이스(813a)는 상기 호스트와 연결되고, 메모리 인터페이스(814a)는 비휘발성 메모리 장치(820a)와 연결된다. 프로세서(811a)는 호스트 인터페이스(813a)를 통하여 상기 호스트와 통신할 수 있다. 예를 들어, 호스트 인터페이스(813a)는 USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트와 통신하도록 구성될 수 있다. 또한, 프로세서(811a)는 메모리 인터페이스(814a)를 통하여 비휘발성 메모리 장치(820a)와 통신할 수 있다. ECC 블록(815a)은 상기 호스트로부터 제공된 데이터를 ECC 인코딩하여 비휘발성 메모리 장치(820a)에 제공하고, 비휘발성 메모리 장치(820a)로부터 독출된 데이터를 ECC 디코딩하여 상기 호스트에 제공할 수 있다. 일 실시예에서, ECC 블록(815a)은 BCH(Bose-Chaudhuri-Hocquenghem) 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다. 다른 실시예에서, ECC 블록(815a)은 LDPC(Low Density Parity Check) 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다. 또 다른 실시예에서, ECC 블록(815a)은 터보 코드(Turbo Code), 리드-솔로몬 코드(Reed-Solomon Code), 컨벌류션 코드(Convolution Code), RSC(Recursive Systematic Code), TCM(Trellis-Coded Modulation), BCM(Block Coded Modulation) 등의 부호화된 변조(Coded Modulation), 또는 다른 에러 정정 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다. 실시예에 따라, 메모리 컨트롤러(810a)가 비휘발성 메모리 장치(820a)에 빌트-인(built-in)되어 구현되거나, 메모리 컨트롤러(810a) 및 비휘발성 메모리 장치(820a)가 각각 별도의 칩으로 구현될 수 있다.
메모리 시스템(800a)은 메모리 카드(memory card), 솔리드 스테이트 드라이브(solid state drive) 등과 같은 형태로 구현될 수 있다. 비휘발성 메모리 장치(820a), 메모리 컨트롤러(810a), 및/또는 메모리 시스템(800a)은 다양한 형태들의 패키지를 이용하여 구현될 수 있는데, 예를 들어, PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지를 이용하여 구현될 수 있다.
도 10은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 10을 참조하면, 메모리 시스템(800b)은 메모리 컨트롤러(810b), 적어도 하나의 비휘발성 메모리 장치(820b) 및 버퍼 메모리(817b)를 포함한다. 일 실시예에서, 버퍼 메모리(817b)는 DRAM(Dynamic random access memory)으로 구현될 수 있고, 메모리 컨트롤러(810b)의 외부에 위치할 수 있다. 비휘발성 메모리 장치(820b)는 메모리 셀 어레이(820b)를 포함하고, 메모리 컨트롤러(810b)는 프로세서(811b), 호스트 인터페이스(813b), 메모리 인터페이스(814b), ECC 블록(815b), 및 버퍼 메모리(817b)를 제어하는 RAM(Random Access Memory) 컨트롤러(816b)를 포함할 수 있다. 또한, 실시예에 따라, 메모리 컨트롤러(810b)는 사용자 데이터의 랜덤화 및/또는 복구를 위한 데이터 랜덤화기(819b)를 더 포함할 수 있다. 비휘발성 메모리 장치(820b)는 복수의 메모리 블록들(825b)을 포함할 수 있고, 복수의 메모리 블록들(825b) 중 적어도 하나의 메모리 블록이 랜덤 데이터 블록으로 지정될 수 있다. 도 10의 메모리 시스템(800b)은, 버퍼 메모리(817b)가 메모리 컨트롤러(810b)의 외부에 위치한 것 외에, 도 9의 메모리 시스템(800a)과 유사한 구성 및 동작을 가질 수 있다.
도 11은 본 발명의 실시예들에 따른 메모리 시스템이 메모리 카드에 응용된 예를 나타내는 도면이다.
도 11을 참조하면, 메모리 카드(900)는 복수의 접속 핀들(910), 메모리 컨트롤러(920) 및 비휘발성 메모리 장치(930)를 포함한다.
호스트와 메모리 카드(900) 사이의 신호들이 송수신되도록 복수의 접속 핀들(910)은 상기 호스트에 연결될 수 있다. 복수의 접속 핀들(910)은 클록 핀, 커맨드 핀, 데이터 핀 및/또는 리셋 핀을 포함할 수 있다.
메모리 컨트롤러(920)는, 상기 호스트로부터 데이터를 수신하고, 상기 수신된 데이터를 비휘발성 메모리 장치(930)에 저장할 수 있다.
비휘발성 메모리 장치(930)는 랜덤 데이터가 저장된 적어도 하나의 랜덤 데이터 블록을 포함할 수 있다. 부분 페이지 프로그램이 수행될 때, 비휘발성 메모리 장치(930)는, 비휘발성 메모리 장치(930)에 부분 페이지 데이터가 입력되기 전에, 상기 랜덤 데이터 블록에 저장된 상기 랜덤 데이터를 페이지 버퍼 회로에 로딩함으로써, 메모리 컨트롤러(920)로부터의 풀-페이지 데이터 로딩이 없이도 목표 페이지 전체에 랜덤화된 데이터를 프로그램할 수 있다. 또한, 부분 페이지 프로그램이 수행될 때, 메모리 컨트롤러(920)로부터 비휘발성 메모리 장치(930)에 풀-페이지 데이터가 아닌 부분 페이지 데이터가 입력되므로, 데이터 입력 시간이 감소되고, 프로그램 시간이 감소될 수 있다.
예를 들어, 메모리 카드(900)는 멀티미디어 카드(MultiMedia Card; MMC), 임베디드 멀티미디어 카드(embedded MultiMedia Card; eMMC), 하이브리드 임베디드 멀티미디어 카드(hybrid embedded MultiMedia Card; hybrid eMMC), SD(Secure Digital) 카드, 마이크로 SD 카드, 메모리 스틱(Memory Stick), ID 카드, PCMCIA(Personal Computer Memory Card International Association) 카드, 칩 카드(Chip Card), USB 카드, 스마트 카드(Smart Card), CF 카드(Compact Flash Card)등과 같은 메모리 카드일 수 있다.
실시예에 따라, 메모리 카드(900)는 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular), 스마트 폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console) 등과 같은 호스트에 장착될 수 있다.
도 12는 본 발명의 실시예들에 따른 메모리 시스템이 솔리드 스테이트 드라이브에 응용된 예를 나타내는 도면이다.
도 12를 참조하면, 솔리드 스테이트 드라이브(Solid State Drive; SSD, 1000)는 메모리 컨트롤러(1010), 버퍼 메모리(1020) 및 복수의 비휘발성 메모리 장치들(1050)을 포함한다.
메모리 컨트롤러(1010)는, 호스트(미도시)로부터 데이터를 수신하고, 상기 수신된 데이터를 복수의 비휘발성 메모리 장치들(1050)에 저장할 수 있다. 버퍼 메모리(1020)는 상기 호스트와 복수의 비휘발성 메모리 장치들(1050) 사이에서 교환되는 데이터를 일시 저장할 수 있고, 메모리 컨트롤러(1010)의 외부에 위치하는 DRAM으로 구현될 수 있다.
각 비휘발성 메모리 장치(1050)는 랜덤 데이터가 저장된 적어도 하나의 랜덤 데이터 블록을 포함할 수 있다. 부분 페이지 프로그램이 수행될 때, 비휘발성 메모리 장치(1050)는, 비휘발성 메모리 장치(1050)에 부분 페이지 데이터가 입력되기 전에, 상기 랜덤 데이터 블록에 저장된 상기 랜덤 데이터를 페이지 버퍼 회로에 로딩함으로써, 메모리 컨트롤러(1010)로부터의 풀-페이지 데이터 로딩이 없이도 목표 페이지 전체에 랜덤화된 데이터를 프로그램할 수 있다. 또한, 부분 페이지 프로그램이 수행될 때, 메모리 컨트롤러(1010)로부터 비휘발성 메모리 장치(1050)에 풀-페이지 데이터가 아닌 부분 페이지 데이터가 입력되므로, 데이터 입력 시간이 감소되고, 프로그램 시간이 감소될 수 있다.
실시예에 따라, 솔리드 스테이트 드라이브(1000)는 컴퓨터, 노트북, 핸드폰, 스마트 폰, MP3 플레이어, 피디에이, 피엠피, 디지털 TV, 디지털 카메라, 포터블 게임 콘솔 등과 같은 호스트에 장착될 수 있다.
도 13은 본 발명의 실시예들에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 13을 참조하면, 컴퓨팅 시스템(1100)은 프로세서(1110), 메모리 장치(1120), 사용자 인터페이스(1130), 버스(1150) 및 메모리 시스템(1160)을 포함한다. 실시예에 따라, 컴퓨팅 시스템(1100)은 베이스밴드 칩 셋(baseband chipset)과 같은 모뎀(1140)을 더 포함할 수 있다.
프로세서(1110)는 특정 계산들 또는 태스크들을 실행할 수 있다. 예를 들어, 프로세서(1110)는 마이크로프로세서 또는 중앙 처리 장치(CPU)일 수 있다. 프로세서(1110)는 어드레스 버스, 제어 버스 및/또는 데이터 버스와 같은 버스(1150)를 통하여 메모리 장치(1120)에 연결될 수 있다. 예를 들어, 메모리 장치(1120)는 DRAM, 모바일 DRAM, SRAM, PRAM, FRAM, RRAM 및/또는 MRAM으로 구현될 수 있다. 또한, 프로세서(1110)는 주변 구성요소 상호연결(peripheral component interconnect, PCI) 버스와 같은 확장 버스에 연결될 수 있다. 이에 따라, 프로세서(1110)는 키보드 또는 마우스와 같은 하나 이상의 입력 장치, 프린터 또는 디스플레이 장치와 같은 하나 이상의 출력 장치를 포함하는 사용자 인터페이스(1130)를 제어할 수 있다. 모뎀(1140)은 외부 장치와 무선으로 데이터를 송수신할 수 있다. 메모리 시스템(1160)의 비휘발성 메모리 장치(1180)에는 프로세서(1110)에 의해 처리된 데이터 또는 모뎀(1140)을 통하여 수신된 데이터 등이 메모리 컨트롤러(1170)를 통해 저장될 수 있다. 컴퓨팅 시스템(1100)은 동작 전압을 공급하기 위한 파워 서플라이를 더 포함할 수 있다. 또한, 컴퓨팅 시스템(1110)은, 실시예에 따라서, 응용 칩셋(application chipset), 카메라 이미지 프로세서(camera image processor, CIS) 등을 더 포함할 수 있다.
본 발명은 플래시 메모리와 같은 비휘발성 메모리 장치, 및 이를 포함하는 다양한 장치 및 시스템에 적용될 수 있다. 따라서, 본 발명은 비휘발성 메모리 장치를 구비하는 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive; SSD), 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console) 등과 같은 전자 기기에 확대 적용될 수 있을 것이다.
상기에서는 본 발명의 실시예들을 참조하여 설명하였지만, 해당 기술분야에서 통상의 지식을 가진 자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
Claims (10)
- 비휘발성 메모리 장치에 포함된 페이지 버퍼 회로에 상기 비휘발성 메모리 장치에 저장된 랜덤 데이터를 로딩하는 단계;
메모리 컨트롤러로부터 하나의 페이지의 일부에 상응하는 사이즈를 가지는 부분 페이지 데이터를 수신하여 상기 랜덤 데이터가 로딩된 상기 페이지 버퍼 회로에 상기 메모리 컨트롤러부터 수신된 상기 부분 페이지 데이터를 재로딩하는 단계; 및
목표 페이지에, 상기 랜덤 데이터가 로딩되고 상기 부분 페이지 데이터가 재로딩된 상기 페이지 버퍼 회로에 저장된 페이지 데이터를 프로그램하는 단계를 포함하고,
상기 랜덤 데이터를 로딩하는 단계는,
랜덤 데이터 블록에 포함된 복수의 랜덤 데이터 페이지들로부터 하나의 랜덤 데이터 페이지를 랜덤하게 선택하는 단계; 및
상기 복수의 랜덤 데이터 페이지들로부터 랜덤하게 선택된 상기 하나의 랜덤 데이터 페이지로부터 상기 랜덤 데이터를 리드하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 장치의 부분 페이지 프로그램 방법. - 삭제
- 제1 항에 있어서, 상기 하나의 랜덤 데이터 페이지로부터 상기 랜덤 데이터를 리드하는 랜덤 데이터 리드 동작의 리드 시간은 사용자 데이터 페이지로부터 데이터를 리드하는 사용자 데이터 리드 동작의 리드 시간보다 짧은 것을 특징으로 하는 비휘발성 메모리 장치의 부분 페이지 프로그램 방법.
- 제1 항에 있어서, 상기 목표 페이지를 포함하는 사용자 데이터 블록은 멀티-레벨 셀(Multi-Level Cell; MLC) 블록이고,
상기 복수의 랜덤 데이터 페이지들을 포함하는 상기 랜덤 데이터 블록은 싱글 레벨 셀(Single Level Cell; SLC) 블록인 것을 특징으로 하는 비휘발성 메모리 장치의 부분 페이지 프로그램 방법. - 제3 항에 있어서, 상기 랜덤 데이터 리드 동작의 프리차지 시간 및 센싱 시간은 상기 사용자 데이터 리드 동작의 프리차지 시간 및 센싱 시간보다 짧은 것을 특징으로 하는 비휘발성 메모리 장치의 부분 페이지 프로그램 방법.
- 제1 항에 있어서, 상기 하나의 랜덤 데이터 페이지로부터 리드된 상기 랜덤 데이터는 상기 메모리 컨트롤러로 출력되지 않는 것을 특징으로 하는 비휘발성 메모리 장치의 부분 페이지 프로그램 방법.
- 제1 항에 있어서, 상기 랜덤 데이터 블록에 대한 랜덤 데이터 리드 동작의 횟수가 소정의 횟수를 초과하는 경우, 상기 랜덤 데이터 블록에 저장된 상기 랜덤 데이터가 업데이트되는 것을 특징으로 하는 비휘발성 메모리 장치의 부분 페이지 프로그램 방법.
- 제1 항에 있어서, 상기 복수의 랜덤 데이터 페이지들로부터 랜덤하게 선택된 상기 하나의 랜덤 데이터 페이지는 상기 메모리 컨트롤러에 의해 지정되는 것을 특징으로 하는 비휘발성 메모리 장치의 부분 페이지 프로그램 방법.
- 제1 항에 있어서, 상기 랜덤 데이터 블록에 저장된 상기 랜덤 데이터는 주기적으로 업데이트되는 것을 특징으로 하는 비휘발성 메모리 장치의 부분 페이지 프로그램 방법.
- 메모리 컨트롤러로부터 데이터 입력 커맨드를 수신하는 단계;
상기 메모리 컨트롤러로부터 목표 페이지의 어드레스를 수신하는 단계;
상기 메모리 컨트롤러로부터 랜덤 데이터 리드 커맨드를 수신하는 단계;
상기 랜덤 데이터 리드 커맨드에 응답하여 상기 목표 페이지의 상기 어드레스에 상응하는 랜덤 데이터 페이지로부터 랜덤 데이터를 리드하여 페이지 버퍼 회로에 상기 랜덤 데이터를 로딩하는 단계;
상기 메모리 컨트롤러로부터 하나의 페이지의 일부에 상응하는 사이즈를 가지는 부분 페이지 데이터를 수신하여 상기 페이지 버퍼 회로에 상기 부분 페이지 데이터를 재로딩하는 단계;
상기 메모리 컨트롤러로부터 페이지 프로그램 컨펌 커맨드를 수신하는 단계; 및
상기 페이지 프로그램 컨펌 커맨드에 응답하여 상기 목표 페이지에 상기 페이지 버퍼 회로에 저장된 페이지 데이터를 프로그램하는 단계를 포함하고,
상기 랜덤 데이터를 로딩하는 단계는,
랜덤 데이터 블록에 포함된 복수의 랜덤 데이터 페이지들로부터 하나의 랜덤 데이터 페이지를 랜덤하게 선택하는 단계; 및
상기 복수의 랜덤 데이터 페이지들로부터 랜덤하게 선택된 상기 하나의 랜덤 데이터 페이지로부터 상기 랜덤 데이터를 리드하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 장치의 부분 페이지 프로그램 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140016367A KR102195298B1 (ko) | 2014-02-13 | 2014-02-13 | 비휘발성 메모리 장치의 부분 페이지 프로그램 방법 |
US14/585,286 US9672149B2 (en) | 2014-02-13 | 2014-12-30 | Partial page programming of nonvolatile memory device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140016367A KR102195298B1 (ko) | 2014-02-13 | 2014-02-13 | 비휘발성 메모리 장치의 부분 페이지 프로그램 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150095260A KR20150095260A (ko) | 2015-08-21 |
KR102195298B1 true KR102195298B1 (ko) | 2020-12-24 |
Family
ID=53775488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140016367A KR102195298B1 (ko) | 2014-02-13 | 2014-02-13 | 비휘발성 메모리 장치의 부분 페이지 프로그램 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9672149B2 (ko) |
KR (1) | KR102195298B1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9858994B2 (en) * | 2015-06-18 | 2018-01-02 | Samsung Electronics Co., Ltd. | Memory system with MLC memory cells and partial page compression or reduction |
KR102636039B1 (ko) | 2016-05-12 | 2024-02-14 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법 |
SG10201605746RA (en) | 2016-07-13 | 2018-02-27 | Micron Technology Inc | Data storage with data randomizer in multiple operating modes |
US10372446B2 (en) * | 2017-07-01 | 2019-08-06 | Intel Corporation | Technology to dynamically modulate memory device read granularity |
US10446200B2 (en) * | 2018-03-19 | 2019-10-15 | Micron Technology, Inc. | Memory device with configurable input/output interface |
US10510426B2 (en) * | 2018-04-27 | 2019-12-17 | Gigadevice Semiconductor (Shanghai) Inc. | Programming method, programming apparatus and storage medium for non-volatile memory |
KR102586786B1 (ko) * | 2018-09-28 | 2023-10-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US10964390B1 (en) * | 2019-12-10 | 2021-03-30 | Western Digital Technologies, Inc. | Skip coding for fractional bit-per-cell NAND memories |
US12057167B2 (en) | 2022-08-28 | 2024-08-06 | Micron Technology, Inc. | Padding in flash memory blocks |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009064251A (ja) * | 2007-09-06 | 2009-03-26 | Hitachi Ltd | 半導体記憶装置及び半導体記憶装置の制御方法 |
US20090198877A1 (en) | 2008-02-05 | 2009-08-06 | Phison Electronics Corp. | System, controller, and method for data storage |
US20100070682A1 (en) * | 2008-09-12 | 2010-03-18 | Jun Wan | Built in on-chip data scrambler for non-volatile memory |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6763424B2 (en) | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
JP2006323626A (ja) | 2005-05-19 | 2006-11-30 | D & M Holdings Inc | データ記録装置 |
KR100714873B1 (ko) | 2005-09-06 | 2007-05-07 | 삼성전자주식회사 | 비휘발성 메모리에서 데이터 갱신 방법 및 이를 위한 장치 |
KR100885783B1 (ko) | 2007-01-23 | 2009-02-26 | 주식회사 하이닉스반도체 | 플래시 메모리 장치 및 동작 방법 |
KR100866959B1 (ko) | 2007-02-13 | 2008-11-05 | 삼성전자주식회사 | 불휘발성 메모리 장치의 부분 페이지 데이터 기입 방법 |
US8832353B2 (en) | 2009-04-07 | 2014-09-09 | Sandisk Technologies Inc. | Host stop-transmission handling |
KR20120005826A (ko) * | 2010-07-09 | 2012-01-17 | 주식회사 하이닉스반도체 | 반도체 메모리 장치 및 이의 동작 방법 |
KR101727707B1 (ko) | 2010-07-26 | 2017-04-19 | 삼성전자주식회사 | 비휘발성 메모리 장치의 프로그램 방법과, 상기 방법을 수행할 수 있는 장치들 |
JP2012128816A (ja) | 2010-12-17 | 2012-07-05 | Toshiba Corp | メモリシステム |
KR101861247B1 (ko) | 2011-04-06 | 2018-05-28 | 삼성전자주식회사 | 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템 |
US9026887B2 (en) | 2012-03-15 | 2015-05-05 | Micron Technology, Inc. | Physical page, logical page, and codeword correspondence |
-
2014
- 2014-02-13 KR KR1020140016367A patent/KR102195298B1/ko active IP Right Grant
- 2014-12-30 US US14/585,286 patent/US9672149B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009064251A (ja) * | 2007-09-06 | 2009-03-26 | Hitachi Ltd | 半導体記憶装置及び半導体記憶装置の制御方法 |
US20090198877A1 (en) | 2008-02-05 | 2009-08-06 | Phison Electronics Corp. | System, controller, and method for data storage |
US20100070682A1 (en) * | 2008-09-12 | 2010-03-18 | Jun Wan | Built in on-chip data scrambler for non-volatile memory |
Also Published As
Publication number | Publication date |
---|---|
KR20150095260A (ko) | 2015-08-21 |
US20150228344A1 (en) | 2015-08-13 |
US9672149B2 (en) | 2017-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102195298B1 (ko) | 비휘발성 메모리 장치의 부분 페이지 프로그램 방법 | |
KR102025263B1 (ko) | 메모리 시스템 및 그것의 읽기 교정 방법 | |
US9063857B2 (en) | Memory system and error correction method | |
US8830743B2 (en) | Method of operating memory controller, memory controller, memory device and memory system | |
KR102089613B1 (ko) | 불 휘발성 메모리 장치 및 그것을 포함한 메모리 시스템 | |
KR102081588B1 (ko) | Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러 | |
KR102070667B1 (ko) | 비휘발성 메모리 장치의 구동 방법 | |
US10067824B2 (en) | Error processing method, memory storage device and memory controlling circuit unit | |
KR101811298B1 (ko) | 랜덤마이져로 씨드를 제공하는 씨드 컨트롤러 및 그것을 포함한 메모리 컨트롤러 | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
US9507658B2 (en) | Data reading method, memory storage device and memory controlling circuit unit | |
US20150293811A1 (en) | Decoding method, memory storage device and memory controlling circuit unit | |
US9164889B2 (en) | Memory system to select program operation method and method thereof | |
KR20140100330A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
US20200065187A1 (en) | Data access method, memory control circuit unit and memory storage device | |
KR20210008326A (ko) | 디코딩 성공 추세에 기초한 조정가능한 판독 재시도 순서 | |
CN105653199A (zh) | 数据读取方法、存储器存储装置及存储器控制电路单元 | |
KR102693836B1 (ko) | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
CN109783005B (zh) | 控制记忆装置的方法、记忆装置、及其控制器和电子装置 | |
KR102135702B1 (ko) | 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법 | |
US8966344B2 (en) | Data protecting method, memory controller and memory storage device | |
KR20170012006A (ko) | 메모리 컨트롤러와 이를 포함하는 메모리 시스템 | |
US11190217B2 (en) | Data writing method, memory controlling circuit unit and memory storage device | |
US20170300379A1 (en) | Data correcting method, memory control circuit unit, and memory storage device | |
CN110874282B (zh) | 数据存取方法、存储器控制电路单元与存储器存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |