KR20150016914A - 메모리 장치 관리 방법, 그 관련 메모리 장치 및 그 관련 제어기 - Google Patents

메모리 장치 관리 방법, 그 관련 메모리 장치 및 그 관련 제어기 Download PDF

Info

Publication number
KR20150016914A
KR20150016914A KR1020140100426A KR20140100426A KR20150016914A KR 20150016914 A KR20150016914 A KR 20150016914A KR 1020140100426 A KR1020140100426 A KR 1020140100426A KR 20140100426 A KR20140100426 A KR 20140100426A KR 20150016914 A KR20150016914 A KR 20150016914A
Authority
KR
South Korea
Prior art keywords
data
memory
received
controller
received data
Prior art date
Application number
KR1020140100426A
Other languages
English (en)
Other versions
KR101561546B1 (ko
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
Priority claimed from TW102144913A external-priority patent/TWI523016B/zh
Application filed by 실리콘 모션 인코포레이티드 filed Critical 실리콘 모션 인코포레이티드
Publication of KR20150016914A publication Critical patent/KR20150016914A/ko
Application granted granted Critical
Publication of KR101561546B1 publication Critical patent/KR101561546B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7202Allocation control and policies
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers

Abstract

메모리 장치 관리 방법, 그 관련 메모리 장치 및 그 관련 제어기가 제공되며, 상기 방법은: 호스트 장치로부터 상기 제어기 내의 휘발성 메모리로 수신되는 데이터를 일시적으로 저장하고 상기 휘발성 메모리 내의 데이터를 수신된 데이터로서 활용하며, 상기 수신된 데이터의 데이터량을 동적으로 모니터링하여 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록할 것인지를 판단하는 단계 - 상기 호스트 장치로부터 수신되는 적어도 하나의 기록 커맨드는 상기 호스트 장치가 데이터를 기록하는 것을 요구하는 것을 나타냄 - ; 및 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록해야 하는 것으로 판단하면, 단일 레벨 셀 메모리 블록이 되도록 구성되어 있는 임의의 다른 블록에 상기 수신된 데이터를 먼저 일시적으로 기록함으로써 상기 수신된 데이터를 특정한 블록에 간접적으로 기록하지 않고, 상기 적어도 하나의 NV 메모리 소자의 특정한 NV 메모리 소자 내의 복수 레벨 셀 메모리 블록이 되도록 구성되어 있는 특정한 블록에 상기 수신된 데이터를 직접적으로 기록하는 단계를 포함한다.

Description

메모리 장치 관리 방법, 그 관련 메모리 장치 및 그 관련 제어기{METHOD FOR MANAGING MEMORY APPARATUS, ASSOCIATED MEMORY APPARATUS THEREOF AND ASSOCIATED CONTROLLER THEREOF}
본 출원은 2013년 8월 5일에 출원된 미국 가출원 No. 61/862,094의 이점을 주장하며 상기 문헌은 본 명세서에 원용되어 병합된다.
본 발명은 플래시 메모리의 제어에 관한 것이며, 특히 메모리 장치 관리 방법, 그 관련 메모리 장치 및 그 제어기에 관한 것이다.
플래시 메모리 기술이 발전함에 따라, 다양한 포터블 메모리 장치(예를 들어, SD/MMC, CF, MS 및 XD 사양을 충족하는 메모리 카드)가 다양한 응용분야에서 폭넓게 실현되고 있다. 그러므로 이러한 포터블 메모리 장치 내의 플래시 메모리의 액세스 제어는 중요한 문제가 되었다.
예를 들어, 흔히 사용되고 있는 NAND 플래시 메모리는 2가지 타입으로 분류될 수 있는데, 단일 레벨 셀(signle level cell: SLC) 플래시 메모리 및 복수 레벨 셀(multiple level cell: MLC) 플래시 메모리이다. SLC 플래시 메모리 내의 메모리 셀에서 사용되는 각각의 트랜지스터는 논리 값 0 및 1을 나타내는 단지 2개의 전하 값만을 가진다. 또한, MLC 플래시 메모리 내의 메모리 셀로서 사용되고 있는 각각의 트랜지스터의 저장 용량은 완전히 사용되고, MLC 플래시 메모리의 트랜지스터는, 다양한 레벨의 전압을 통해 하나의 트랜지스터에 복수의 비트 정보(예를 들어, 00, 01, 11 및 10)를 기록하기 위해, 더 높은 전압에서 구동된다. 이론적으로, MLC 플래시 메모리의 기록 밀도는 SLC 플래시 메모리의 기록 밀도의 2배를 초과할 수 있다. 이것은 NAND 플래시 메모리를 개발하는 데 어려움을 겪는 관련 산업에서는 희소식이다.
SLC 플래시 메모리와 비교해 보면, MLC 플래시 메모리의 제조 비용이 더 저렴하고, MLC 플래시 메모리는 제한된 공간에서 더 많은 용량을 제공할 수 있다. 그러므로 MLC 플래시 메모리가 시중의 다양한 포터블 메모리 장치에 폭넓게 사용되고 있다. 관련 기술에 따르면, 일부 타입의 MLC 플래시 메모리의 동작이 복잡하기 때문에, 종래의 메모리 제어기에서는 MLC 플래시 메모리 내의 일부의 물리 블록을 SLC 메모리 블록으로 구성하여, 호스트 장치로부터의 기록 데이터를 수신한다. 그렇지만, 이렇게 하면 몇 가지 문제가 생긴다. MLC 플래시 메모리 내의 일부의 물리 블록은 SLC 메모리 블록으로서 구성되므로, MLC 메모리 블록으로 사용될 수 있는 MLC 플래시 메모리의 물리 블록의 양이 더 작아진다. 다른 예에 있어서, 종래의 메모리 제어기는 수신된 데이터를 먼저 SLC 메모리 블록에 일시적으로 기록한 다음, SLC 메모리 블록으로부터 MLC 메모리 블록으로 데이터를 수집하는데, 여기서 이러한 SLC 메모리 블록의 저장 공간이 쉽게 소비된다. 그러므로 메모리 제어기의 작업 부하가 많이 증가한다. 따라서, 역효과를 일으키지 않으면서 전반적인 성능을 향상시키기 위해, 플래시 메모리의 데이터 액세스의 제어를 향상시키는 새로운 방법이 요망된다.
따라서, 본 발명의 목적은 메모리 장치 관리 방법, 그 관련 메모리 장치 및 제어기를 제공하여, 전술한 문제를 해결하는 것이다.
본 발명의 다른 목적은 메모리 장치 관리 방법, 그 관련 메모리 장치 및 제어기를 제공하여, 메모리 장치의 동작 성능을 향상시키는 것이다.
본 발명의 적어도 하나의 양호한 실시예에 따라, 메모리 장치 관리 방법이 제공된다. 메모리 장치는 복수의 블록을 각각 포함하는 적어도 하나의 비휘발성(NV) 메모리 소자를 포함한다. 상기 방법은 상기 메모리 장치의 제어기에 적용되며, 상기 제어기는 적어도 하나의 NV 메모리 소자를 제어하는 데 사용된다. 상기 방법은, 호스트 장치로부터 상기 제어기 내의 휘발성 메모리로 수신되는 데이터를 일시적으로 저장하고 상기 휘발성 메모리 내의 데이터를 수신된 데이터로서 활용하며, 상기 수신된 데이터의 데이터량을 동적으로 모니터링하여 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록할 것인지를 판단하는 단계 - 상기 호스트 장치로부터 수신되는 적어도 하나의 기록 커맨드는 상기 호스트 장치가 데이터를 기록하는 것을 요구하는 것을 나타냄 - ; 및 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록해야 하는 것으로 판단하면, 단일 레벨 셀(Single Level Cell: SLC) 메모리 블록이 되도록 구성되어 있는 임의의 다른 블록에 상기 수신된 데이터를 먼저 일시적으로 기록함으로써 상기 수신된 데이터를 특정한 블록에 간접적으로 기록하지 않고, 상기 적어도 하나의 NV 메모리 소자의 특정한 NV 메모리 소자 내의 복수 레벨 셀(Multiple Level Cell: MLC) 메모리 블록이 되도록 구성되어 있는 특정한 블록에 상기 수신된 데이터를 직접적으로 기록하는 단계를 포함한다.
전술한 방법을 제공하는 것 외에, 본 발명은 적어도 하나의 비휘발성(NV) 메모리 소자 및 제어기를 포함하는 메모리 장치를 제공한다. 적어도 하나의 비휘발성(NV) 메모리 소자 각각은 복수의 블록을 포함한다. 상기 제어기는 적어도 하나의 NV 메모리 소자를 제어하는 데 사용된다. 상기 제어기는 프로세싱 유닛을 포함하며, 상기 프로세싱 유닛은, 상기 프로세싱 유닛에 매립되어 있거나 상기 프로세싱 유닛의 외부로부터 수신되는 프로그램 코드에 따라 상기 메모리 장치를 관리하도록 배치되어 있으며, 상기 제어기는 호스트 장치로부터 수신되는 데이터를 상기 제어기 내의 휘발성 메모리에 일시적으로 저장하고 상기 휘발성 메모리 내의 데이터를 수신된 데이터로서 활용하며, 상기 수신된 데이터의 데이터량을 동적으로 모니터링하여 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록할 것인지를 판단하며, 상기 호스트 장치로부터 수신되는 적어도 하나의 기록 커맨드는 상기 호스트 장치가 데이터를 기록하는 것을 요구하는 것을 나타낸다. 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록해야 하는 것으로 판단하면, 상기 제어기는, 단일 레벨 셀(Single Level Cell: SLC) 메모리 블록이 되도록 구성되어 있는 임의의 다른 블록에 상기 수신된 데이터를 먼저 일시적으로 기록함으로써 상기 수신된 데이터를 특정한 블록에 간접적으로 기록하지 않고, 상기 적어도 하나의 NV 메모리 소자의 특정한 NV 메모리 소자 내의 복수 레벨 셀(Multiple Level Cell: MLC) 메모리 블록이 되도록 구성되어 있는 특정한 블록에 상기 수신된 데이터를 직접적으로 기록한다.
상기 방법 및 메모리 장치를 제공하는 것 외에, 본 발명은 메모리 장치의 제어기도 제공한다. 상기 메모리 장치는 복수의 블록을 각각 포함하는 적어도 하나의 비휘발성(NV) 메모리 소자를 포함한다. 상기 제어기는 프로세싱 유닛을 포함하며, 상기 프로세싱 유닛은, 상기 프로세싱 유닛에 매립되어 있거나 상기 프로세싱 유닛의 외부로부터 수신되는 프로그램 코드에 따라 상기 메모리 장치를 관리하도록 배치되어 있으며, 상기 제어기는 호스트 장치로부터 수신되는 데이터를 상기 제어기 내의 휘발성 메모리에 일시적으로 저장하고 상기 휘발성 메모리 내의 데이터를 수신된 데이터로서 활용하며, 상기 수신된 데이터의 데이터량을 동적으로 모니터링하여 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록할 것인지를 판단하며, 상기 호스트 장치로부터 수신되는 적어도 하나의 기록 커맨드는 상기 호스트 장치가 데이터를 기록하는 것을 요구하는 것을 나타낸다. 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록해야 하는 것으로 판단하면, 상기 제어기는, 단일 레벨 셀(Single Level Cell: SLC) 메모리 블록이 되도록 구성되어 있는 임의의 다른 블록에 상기 수신된 데이터를 먼저 일시적으로 기록함으로써 상기 수신된 데이터를 특정한 블록에 간접적으로 기록하지 않고, 상기 적어도 하나의 NV 메모리 소자의 특정한 NV 메모리 소자 내의 복수 레벨 셀(Multiple Level Cell: MLC) 메모리 블록이 되도록 구성되어 있는 특정한 블록에 상기 수신된 데이터를 직접적으로 기록한다.
본 발명에서 제공하는 이점은, 종래기술에 비해, 본 발명의 방법, 메모리 장치 및 제어기는 SLC 메모리 블록이 점유하는 저장 공간을 감축하고 이에 따라 MLC 메모리 블록을 더 많이 제공한다는 것이다.
본 발명에서 제공하는 다른 이점은, 종래기술에 비해, 본 발명의 방법, 메모리 장치 및 제어기는 수신된 데이터를 SLC 메모리 블록에 일시적으로 기록한 다음 SLC 메모리 블록으로부터 MLC 메모리 블록으로 데이터를 수집하는 시간을 단축할 수 있고, SLC 메모리 블록을 빈번하게 삭제하는 시간을 단축할 수 있다는 것이다. 그러므로 종래기술에 비해, 본 발명은 더 우수한 성능을 제공한다.
본 발명의 이러한 목적 및 다른 목적은 다양한 도면 및 도해에 설명되어 있는 양호한 실시예에 대한 이하의 상세한 설명을 읽고난 후 당업자에게 자명하게 될 것이다.
도 1은 본 발명의 제1 실시예에 따른 메모리 장치를 도시하는 도면이다.
도 2는 NV 메모리 소자 중 하나에 대한 내용 배열도로서, 상기 NV 메모리 소자는 본 실시예에서 플래시 칩이다.
도 3은 NV 메모리 소자 중 하나의 메모리 소자의 다른 내용 배열도로서, 상기 메모리 소자는 본 실시예에서 플래시 칩이다.
도 4는 본 발명의 실시예에 따른 메모리 장치 관리 방법을 설명하는 흐름도이다.
도 5는 실시예에서 도 4에 도시된 방법에 포함되어 있는 제어 방식에 대한 도면이다.
도 6은 도 5에 도시된 제어 방식의 과정을 설명하는 흐름도이다.
도 7은 실시예에서 도 4에 도시된 방법에 포함되어 있는 다른 제어 방식에 대한 도면이다.
도 1을 참조하며, 도 1은 본 발명의 제1 실시예에 따른 메모리 장치(100)를 도시하는 도면이다. 메모리 장치(100)는 프로세싱 유닛(110), 휘발성 메모리(120), 전송 인터페이스(130), 복수의 비휘발성(NV) 메모리 소자(140_1, 140_2, ..., 140_N)(단, N은 양의 정수를 나타낸다) 및 버스(150)를 포함한다. 통상적인 조건에서, 전송 인터페이스(130)가 호스트 장치(도 1에 도시되지 않음)에 연결된 후, 호스트 장치는 전송 인터페이스(130)를 통해 메모리 장치(100)에 액세스할 수 있다. 예를 들어, 호스트 장치는 랩톱 컴퓨터 또는 데스크톱 컴퓨터와 같은 퍼스널 컴퓨터일 수 있다.
프로세싱 유닛(100)은 그 안에 매립되어 있거나 프로세싱 유닛(110)의 외부로부터 수신되는 프로그램 코드에 따라 메모리 장치(100)를 관리할 수 있다. 예를 들어, 프로그램 코드는 프로세싱 유닛(110) 내에 매립된 하드웨어 코드일 수 있거나, 구체적으로, 리드-온리 메모리 코드(ROM 코드)일 수 있다. 다른 예에서, 프로그램 코드는 프로세싱 유닛(110)의 외측으로부터 수신되는 펌웨어 코드일 수 있다. 구체적으로, 프로세싱 유닛(110)은 휘발성 메모리(120), 전송 인터페이스(130), NV 메모리 소자(140_1, 140_2, ..., 140_N) 및 버스(150)를 제어하는 데 사용된다. 본 실시예에서 프로세싱 유닛(110)은 고급 RISC 머신(Advanced reduced instruction set computer machine: ARM) 프로세서 또는 ARC(Argonaut RISC Core: ARC) 프로세서일 수 있다. 그렇지만, 이것은 단지 예시적인 목적에 지나지 않으며, 본 발명에 대한 제한이 아니다. 본 발명의 변형예에 따르면, 프로세싱 유닛(110)은 다른 유형의 프로세서일 수도 있다.
또한, 휘발성 메모리(120)는, 글로벌 페이지 어드레스 링킹 테이블, 호스트 장치에 의해 액세스되는 데이터, 및 메모리 장치(100)에 액세스하는 데 필요한 그외 정보를 저장하는 데 사용될 수 있다. 본 실시예에서, 휘발성 메모리(120)는 동적 랜덤 액세스 메모리(DRAM)일 수 있다. 그렇지만, 이것은 단지 예시적인 목적에 지나지 않으며, 본 발명에 대한 제한이 아니다. 본 발명의 변형예에 따르면, 휘발성 메모리(120)는 다른 유형의 휘발성 메모리일 수 있다. 예를 들어, 휘발성 메모리(120)는 정적 랜덤 액세스 메모리(SRAM)를 포함할 수 있다.
본 실시예에 따르면, 도 1에 도시된 전송 인터페이스(130)는 호스트 장치와 메모리 장치(100) 간에 커맨드를 전송하는 데 사용되며, 전송 인터페이스(130)는 SATA(serial advanced technology attachment) 규약, PATA(parallel advanced technology attachment) 규약 또는 USB(universal serial bus)와 같은 특정한 통신 규약을 충족한다. 예를 들어, 메모리 장치(100)는 호스트 장치에 배치되어 있는 SSD이고, 특정한 통신 규약은 SATA 또는 PATA 규약과 같이, 호스트 장치에서 내부 통신을 실행하기 위한 통상적인 통신 규약 중 하나일 수 있다. 다른 예에서, 메모리 장치(100)는 호스트 장치의 외부에 배치되어 있는 SSD이고, 특정한 통신 규약은 USB와 같이, 호스트 장치의 외부에서 수행되는 일부의 통상적인 통신 규약을 실행하는 데 사용될 수 있다. 그렇지만, 이것은 단지 예시적인 목적에 지나지 않으며, 본 발명에 대한 제한이 아니다. 본 발명의 변형예에 따르면, 메모리 장치(100)는 메모리 카드와 같은 포터블 메모리 장치일 수 있으며, 특정한 통신은 SD(secure digital) 규약 또는 CF(compact flash) 규약과 같이, 메모리 카드의 입력/출력(I/O) 인터페이스의 일부의 통상적인 통신을 수행하는 데 사용될 수 있다.
또한, NV 메모리 소자(140_1, 140_2, ..., 140_N)는 데이터를 저장하는 데 사용될 수 있으며, 여기서 NV 메모리 소자(140_1, 140_2, ..., 140_N)는 NAND 플래시 칩일 수 있다(그러나 이에 제한되지는 않는다). 버스(150)는 프로세싱 유닛(110), 휘발성 메모리(120), 전송 인터페이스(130), 및 NV 메모리 소자(140_1, 140_2, ..., 140_N)를 연결하는 데 사용되며, 이러한 소자 간의 통신을 수행하는 데 사용된다. 본 실시예에서, 도 1의 구조 내의 모든 소자는 NV 메모리 소자(140_1, 140_2, ..., 140_N)를 제외하곤, 제어기로서 통합될 수 있으며, 특히 제어기 칩과 같은 집적회로(IC)로서 통합될 수 있다. 제어기는 NV 메모리 소자(140_1, 140_2, ..., 140_N)와 같이, 메모리 장치(100) 내의 적어도 하나의 NV 메모리 소자를 제어하는 데 사용되며, 메모리 장치(100)의 제어기로 볼 수 있다.
도 2를 참조하면, 도 2는 NV 메모리 소자(140_1, 140_2, ..., 140_N) 중 NV 메모리 소자(140_N)의 내용 배치를 도시하고 있으며, 여기서 NV 메모리 소자(140_N)는 본 실시예에서 플래시 칩 CHP(n)일 수 있으며, 인덱스 n은 범위 [0, n] 내의 임의의 정수일 수 있다. 도 2에 도시된 바와 같이, 플래시 칩 DNP(n)과 같이, NV 메모리 소자(140_1, 140_2, ..., 140_N)의 각각의 NV 메모리 소자는 블록 BLK(0), BLK(1), BLK(2), ..., BLK(M)과 같은 복수의 블록을 포함할 수 있으며(단, 기호 M은 양의 정수를 나타낸다), 여기서 각각의 블록은 복수의 섹터를 각각 포함하는 복수의 페이지를 포함한다. 본 실시예에서, 하나의 섹터는 최소의 판독 단위일 수 있다. 환언하면, 하나의 판독 동작 동안, 프로세싱 유닛(110)은 하나의 섹터 또는 복수의 섹터를 판독할 수 있다. 그렇지만, 이것은 단지 예시적인 목적에 지나지 않으며, 본 발명에 대한 제한이 아니다.
도 2에 도시된 바와 같이, 플래시 칩 CHP(n)과 같은 NV 메모리 소자(140_n) 내의 블록(예를 들어, 블록 BLK(0))은 단일 레벨 셀(SLC) 메모리 블록으로서 구성되고, 블록 BLK(0)과 같은 블록은 워드-라인 WL0, WL1, WL2, ..., WL63에 각각 대응하는 페이지, Page(0), Page(1), Page(2), ..., Page(0)와 같이, 사전설정된 페이지 수를 포함하고, 여기서 Page(0)와 같은 각각의 페이지는 복수의 섹터 SEC(0), SEC(1), SEC(2), ..., SEC(3)를 포함할 수 있다. 그렇지만, 이것은 단지 예시적인 목적에 지나지 않으며, 본 발명에 대한 제한이 아니다. 도 3에 도시된 실시예와 같이 본 실시예의 변형예에 따르면, NV 메모리 소자(140_n)(예를 들어, 플래시 칩 CHP(n)) 내의 블록(예를 들어, 블록 BLK(0))이 복수 레벨 셀(MLC) 메모리 블록(예를 들어, 3중 레벨 셀(triple level cell: TLC) 메모리 블록)으로서 구성되는 상황 하에서, 블록(예를 들어, BLK(0))은 복수 세트의 페이지 {Page(0), Page(1), Page(2)}, {Page(3), Page(3), Page(3)}, {Page(6), Page(7), Page(8)}, ..., {Page(189), Page(190), Page(191)}와 같이, 사전설정된 페이지 수를 포함하고, 여기서 Page(0)와 같은 각각의 페이지는 섹터 SEC(0), SEC(1), SEC(2), 및 SEC(3)를 포함할 수 있다.
도 4를 참조하면, 도 4는 본 발명의 실시예에 따른 메모리 장치 관리 방법(200)을 도시하는 흐름도이다. 방법(200)은 도 1에 도시된 메모리 장치(100)에 적용될 수 있고, 특히 전술한 제어기(예를 들어, 프로세싱 유닛(110)을 통해 전술한 프로그램 코드를 실행하는 메모리 제어기)에 적용될 수 있으며, 전술한 프로그램 코드를 실행하는 제어기는 도 1에 도시된 NV 메모리 소자(140_1, 140_2, ..., 140_N)와 같이 전술한 적어도 하나의 NV 메모리 소자를 제어하는 데 사용된다. 방법에 대해서는 이하에 설명한다.
단계 210에서, 제어기는, 호스트 장치로부터 수신된 데이터를 제어기 내의 휘발성 메모리(120)에 일시적으로 저장하여 상기 휘발성 메모리(120) 내의 데이터를 수신된 데이터로서 활용하며, 상기 수신된 데이터의 데이터량을 동적으로 모니터링하여 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록할 것인지를 판단하며, 상기 호스트 장치로부터 수신되는 적어도 하나의 기록 커맨드는 호스트 장치가 데이터를 기록하는 것을 요구하는 것을 나타낸다. 구체적으로, 수신된 데이터의 양이 사전설정된 데이터량 임계값 PDDA_TH에 도달하면, 제어기는 수신된 데이터를 적어도 하나의 NV 메모리 소자에 즉시 기록해야 하는 것으로 판단한다.
단계 220에서, 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록해야 하는 것으로 판단하면, 상기 제어기는, SLC 메모리 블록이 되도록 구성되어 있는 임의의 다른 블록(예를 들어, 도 2에 도시된 바와 같이, 64개의 페이지 Page(0), Page(1), ..., Page(63)를 가지는 블록)에 상기 수신된 데이터를 먼저 일시적으로 기록함으로써 상기 수신된 데이터를 특정한 블록에 간접적으로 기록하지 않고, MLC 메모리 블록이 되도록 구성되어 있는 적어도 하나의 NV 메모리 소자의 특정한 NV 메모리 소자 내의 특정한 블록(예를 들어, 192개의 페이지 Page(0), Page(1), .., Page(191)를 가지는 블록)에 상기 수신된 데이터를 직접적으로 기록한다. 예를 들어, NV 메모리 소자는 도 3에 도시된 플래시 칩 CHP(n)일 수 있으며, 특정한 블록은 블록 BLK(m)과 같이 블록{BLK(0), BLK(1), BLK(2), .., BLK(m)} 중 하나의 블록일 수 있으며, 인덱스 m은 범위 [0, M] 내의 임의의 정수를 나타낼 수 있다.
본 실시예에 따르면, 특정한 블록 내의 메모리 셀이 복수의 비트를 저장하는 데 사용되는 상황 하에서, 복수의 비트를 메모리 셀에 사전설정된 횟수 PDNT_WR로 반복적으로 기록해야 하고, 이에 따라 특정한 NV 메모리 셀 내의 메모리 셀은 정확하게 프로그램된다. 이 방법에서, 복수의 비트의 각각의 비트는 추가의 판독을 위해 메모리 셀에 정확하게 저장되며, 사전설정된 횟수 PDNT_WR은 1보다 크다. 실제로, 휘발성 메모리(120)의 저장 용량은 사전설정된 데이터량 임계값 PDDA_TH와 사전설정된 횟수 PDNT_WR의 적(product)(즉, PDDA_TH*PDNT_WR)보다 크거나 같으며, 이에 따라, 수신된 데이터 중 적어도 일부를 메모리 셀의 반복된 기록 동작에 사용할 수 있다. 예를 들어, 일부의 유형의 MLC 플래시 메모리와 관련해서, 특정한 블록이 TLC 메모리 블록으로서 구성되고, 사전설정된 횟수 PDNT_WR은 3과 같을 수 있으며, 사전설정된 데이터량 임계값 PDDA_TH는 특정한 NV 메모리 셀 내의 워드-라인에 속하는 한 세트의 메모리 셀의 저장 용량과 같을 수 있다. 그렇지만, 이것은 단지 예시적인 목적에 지나지 않으며, 본 발명에 대한 제한이 아니다.
본 실시예에서, 제어기는 수신된 데이터를 특정한 블록에 수회 직접적으로 기록하여, 사용자 데이터가 오류 없음이 되도록 보장한다는 것에 주목하라. 구체적으로, 제어기의 제어 하에, 수신된 데이터가 특정한 블록에 기록되는 횟수는 사전설정된 횟수 PDNT_WR에 도달할 것이고, 이에 따라 특정한 블록 내의 특정한 워드-라인에 속하는 특정한 세트의 메모리 셀은 NV 메모리 소자에 정확하게 프로그램된다. 이 방법에서, 수신된 데이터의 각각의 비트는 추가의 판독을 위해 특정한 세트의 메모리 셀에 정확하게 저장된다.
또한, 호스트 장치가 전술한 적어도 하나의 NV 메모리 소자로부터 데이터를 판독하려고 하는 상황에서, 데이터는 단계 210에서 임의의 NV 메모리 소자에 아직 기록되지 않는다. 그러므로 수신된 데이터를 전술한 적어도 하나의 NV 메모리 소자에 즉시 기록할 것인지를 판단하기 전에, 호스트 장치로부터 수신되는 적어도 하나의 판독 커맨드가 호스트 장치가 상기 데이터 중 적어도 일부를 판독하도록 요구하는 것을 나타내면, 제어기는 상기 특정한 NV 메모리 소자로부터 상기 데이터 중 적어도 일부를 판독하는 대신 상기 휘발성 메모리(120)로부터 상기 데이터 중 적어도 일부를 판독하여 상기 호스트 장치에 응답할 수 있다.
본 실시예의 변형예에 따르면, 제어기는 복수 세트의 데이터 {Data(0), Data(1), Data(2)}, {Data(3), Data(4), Data(5)}, {Data(6), Data(7), Data(8)}, ...를 각각 수신하고, 상기 복수 세트의 데이터 {Data(0), Data(1), Data(2)}, {Data(3), Data(4), Data(5)}, {Data(6), Data(7), Data(8)}, ...를 휘발성 메모리(120)에 일시적으로 저장하며, 각각의 복수 세트의 데이터는 복수의 페이지를 포함하고, 각각의 복수 세트의 데이터의 데이터량은 사전설정된 데이터량 임계값 PDDA_TH와 같다. 구체적으로, 제어기는 복수 세트의 데이터 {Data(0), Data(1), Data(2)}, {Data(3), Data(4), Data(5)}, {Data(6), Data(7), Data(8)}를 특정한 블록에 각각 직접적으로 기록하기 위해, 복수 세트의 데이터 {Data(0), Data(1), Data(2)}, {Data(3), Data(4), Data(5)}, {Data(6), Data(7), Data(8)}를 휘발성 메모리(120)로부터 각각 판독하고, 복수 세트의 데이터 {Data(0), Data(1), Data(2)}, {Data(3), Data(4), Data(5)}, {Data(6), Data(7), Data(8)} 중 제1 세트를 특정한 블록에 수회 직접적으로 기록하며, 여기서 복수 세트의 데이터 {Data(0), Data(1), Data(2)}, {Data(3), Data(4), Data(5)}, {Data(6), Data(7), Data(8)} 중 제1 세트를 특정한 블록에 기록하는 횟수는 사전설정된 횟수 PDNT_WR에 도달하고, 이에 따라 특정한 블록 내의 특정한 워드-라인에 속하는 특정한 세트의 메모리 셀은 특정한 NV 메모리 소자에 정확하게 프로그램되며, 따라서 제1 세트의 데이터 {Data(0), Data(1), Data(2)}의 각각의 비트는 추가의 판독을 위해 특정한 세트의 메모리 셀에 정확하게 저장된다.
도 5 및 도 6을 참조하면, 도 5는 실시예에서 도 4에 도시된 방법(200)에 포함되어 있는 제어 방식을 도시하고, 도 6은 도 5에 도시된 제어 방식의 과정(300)을 설명하는 흐름도이다. 도 5에서, 복수 세트의 데이터 Data(0), Data(1), Data(2), Data(3), Data(4), Data(5), Data(6), Data(7), Data(8), ... 각각은 페이지 데이터일 수 있다. 예를 들어, 페이지 데이터의 크기는 16 킬로바이트(KB)일 수 있다. 그렇지만, 이것은 단지 예시적인 목적에 지나지 않으며, 본 발명에 대한 제한이 아니다.
단계 310에서, 제어기는 페이지 단위로 적용하여, 제1 세트의 데이터 {Data(0), Data(1), Data(2)}의 총 데이터량이 사전설정된 데이터량 임계값 PDDA_TH에 도달할 때까지, 제1 세트의 데이터 {Data(0), Data(1), Data(2)}를 수신하고, 제1 세트의 데이터 {Data(0), Data(1), Data(2)}를 휘발성 메모리(120)에 일시적으로 저장하며, 제1 세트의 데이터 {Data(0), Data(1), Data(2)}의 총 데이터량이 사전설정된 데이터량 임계값 PDDA_TH에 도달하기 전에, 제1 세트의 데이터 {Data(0), Data(1), Data(2)}는 특정한 블록에 기록되지 않는다.
단계 312에서, 제1 세트의 데이터 {Data(0), Data(1), Data(2)}의 총 데이터량이 사전설정된 데이터량 임계값 PDDA_TH에 도달하면, 제어기는 제1 세트의 데이터 {Data(0), Data(1), Data(2)}의 중 적어도 일부를 휘발성 메모리(120)로부터 판독하여 제1 세트의 데이터 {Data(0), Data(1), Data(2)}를 특정한 블록에 직접적으로 기록한다.
단계 320에서, 제어기는 페이지 단위로 적용하여, 제2 세트의 데이터 {Data(3), Data(4), Data(5)}의 총 데이터량이 사전설정된 데이터량 임계값 PDDA_TH에 도달할 때까지, 제2 세트의 데이터 {Data(3), Data(4), Data(5)}를 수신하고, 제2 세트의 데이터 {Data(3), Data(4), Data(5)}를 휘발성 메모리(120)에 일시적으로 저장하며, 제2 세트의 데이터 {Data(3), Data(4), Data(5)}의 총 데이터량이 사전설정된 데이터량 임계값 PDDA_TH에 도달하기 전에, 제2 세트의 데이터 {Data(3), Data(4), Data(5)}는 특정한 블록에 기록되지 않는다.
단계 322에서, 제2 세트의 데이터 {Data(3), Data(4), Data(5)}의 총 데이터량이 사전설정된 데이터량 임계값 PDDA_TH에 도달하면, 제어기는 제2 세트의 데이터 {Data(3), Data(4), Data(5)} 중 적어도 일부를 비휘발성 메모리(120)로부터 판독하여 제2 세트의 데이터 {Data(3), Data(4), Data(5)}를 특정한 블록에 직접적으로 기록하며, 제1 세트의 데이터 {Data(0), Data(1), Data(2)}를 2회째 특정한 블록에 직접적으로 기록한다.
단계 330에서, 제어기는 페이지 단위로 적용하여, 제3 세트의 데이터 {Data(6), Data(7), Data(8)}의 총 데이터량이 사전설정된 데이터량 임계값 PDDA_TH에 도달할 때까지, 제3 세트의 데이터 {Data(6), Data(7), Data(8)}를 수신하고, 제3 세트의 데이터 {Data(6), Data(7), Data(8)}를 휘발성 메모리(120)에 일시적으로 저장하며, 제3 세트의 데이터 {Data(6), Data(7), Data(8)}의 총 데이터량이 사전설정된 데이터량 임계값 PDDA_TH에 도달하기 전에, 제3 세트의 데이터 {Data(6), Data(7), Data(8)}는 특정한 블록에 기록되지 않는다.
단계 332에서, 제3 세트의 데이터 {Data(6), Data(7), Data(8)}의 총 데이터량이 사전설정된 데이터량 임계값 PDDA_TH에 도달하면, 제어기는 제3 세트의 데이터 {Data(6), Data(7), Data(8)} 중 적어도 일부를 비휘발성 메모리(120)로부터 판독하여 제3 세트의 데이터 {Data(6), Data(7), Data(8)}를 특정한 블록에 직접적으로 기록하고, 제2 세트의 데이터 {Data(3), Data(4), Data(5)}를 2회째 특정한 블록에 직접적으로 기록하며, 제1 세트의 데이터 {Data(0), Data(1), Data(2)}를 3회째 특정한 블록에 직접적으로 기록하며, 이에 따라 제1 세트의 데이터 {Data(0), Data(1), Data(2)}의 임의의 페이지의 각각의 비트의 데이터는 추가의 판독을 위해 특정한 블록에 정확하게 저장된다. 예를 들어, 사전설정된 횟수 PDNT_WR이 3과 같으면, 제1 세트의 데이터 {Data(0), Data(1), Data(2)}의 기록 동작이 완료된다.
마찬가지로, 복수 세트의 데이터 Data(0), Data(1), Data(2), Data(3), Data(4), Data(5), Data(6), Data(7), Data(8)를 뒤이은 복수 세트의 데이터와 관련해서, 제어기는 도 6에 도시된 과정(300)에 따라 이것들을 처리할 수 있으며, 특히 단계 330 및 단계 332를 처리할 수 있다. 예를 들어, 복수 세트의 데이터 Data(0), Data(1), Data(2), Data(3), Data(4), Data(5), Data(6), Data(7), Data(8), ... 중 제4 세트의 데이터 {Data(9), Data(10), Data(11)}의 총 데이터량이 사전설정된 데이터량 임계값 PDDA_TH에 도달하면, 제어기는 제4 세트의 데이터 {Data(9), Data(10), Data(11)} 중 적어도 일부를 휘발성 메모리(120)로부터 판독하여 제4 세트의 데이터 {Data(9), Data(10), Data(11)}를 특정한 블록에 직접적으로 기록하며, 제3 세트의 데이터 {Data(6), Data(7), Data(8)}을 2회째 특정한 블록에 직접적으로 기록하며, 제2 세트의 데이터 {Data(3), Data(4), Data(5)}를 3회째 특정한 블록에 직접적으로 기록하며, 이에 따라 제2 세트의 데이터 {Data(3), Data(4), Data(5)}의 임의의 페이지의 각각의 비트의 데이터가 추가의 판독을 위해 특정한 블록에 정확하게 저장된다. 예를 들어, 사전설정된 횟수가 PDNT_WR이 3과 같으면, 제2 세트의 데이터 {Data(3), Data(4), Data(5)}의 기록 동작은 완료된다. 그러므로 도 6에 도시된 과정(300)을 활용함으로써, 복수 세트의 데이터 Data(0), Data(1), Data(2), Data(3), Data(4), Data(5), Data(6), Data(7), Data(8), ... 내의 모든 데이터가 추가의 판독을 위해 특정한 블록에 정확하게 저장될 수 있다. 본 실시예와 이전 실시예 간의 유사한 부분은 설명을 간략하게 하기 위해 생략된다.
도 7을 참조하면, 도 7은 실시예에서 도 4에 도시된 방법(200)에 포함되어 있는 다른 제어 방식을 도시하며, 여기서 복수 세트의 데이터 Data(0), Data(1), Data(2), Data(3), Data(4), Data(5), Data(6), Data(7), Data(8), ...의 각각의 데이터는 16KB 데이터일 수 있으며, 4개의 4KB 서브데이터로 분할될 수 있다(도 7에서, "4K"는 4KB의 크기를 나타낸다. 본 실시예는 랜덤 논리 어드레스에서 데이터의 기록 동작에 적용될 수 있다. 그렇지만, 이것은 단지 예시적인 목적에 지나지 않으며, 본 발명에 대한 제한이 아니다.
본 실시예에 따르면, 제어기는 휘발성 메모리를 활용하여 랜덤 논리 어드레스에서 데이터를 수집할 수 있으며, 여기서 랜덤 기록 동작을 수행하기 위한 하나의 데이터의 크기는 4KB일 수 있다. 수집된 데이터의 크기가 16KB이면, 제어기는 그 수집된 데이터를 도 5의 실시예에서의 하나의 페이지 데이터(예를 들어, 데이터 Data(0) 또는 Data(0), Data(1), Data(2), Data(3), Data(4), Data(5), Data(6), Data(7), Data(8) 중 임의의 데이터)로서 취급하며, 전술한 방식과 동일한 방식으로 그 수집된 16KB 데이터를 처리한다. 본 실시예와 이전 실시예 간의 유사한 부분은 설명을 간략하게 하기 위해 생략된다.
당업자라면 장치 및 방법의 다양한 변형 및 대안은 본 발명의 지침을 유지하면서 이루어질 수 있다는 것을 쉽게 이해할 수 있을 것이다. 따라서, 전술한 설명은 첨부된 특허청구범위의 범위 내에서만 제한되는 것으로 파악되어야 한다.

Claims (20)

  1. 메모리 장치 관리 방법에 있어서,
    메모리 장치는 복수의 블록을 각각 포함하는 적어도 하나의 비휘발성(NV) 메모리 소자를 포함하고, 상기 방법은 상기 메모리 장치의 제어기에 적용되며, 상기 제어기는 적어도 하나의 NV 메모리 소자를 제어하는 데 사용되며, 상기 방법은,
    호스트 장치로부터 상기 제어기 내의 휘발성 메모리로 수신되는 데이터를 일시적으로 저장하고 상기 휘발성 메모리 내의 데이터를 수신된 데이터로서 활용하며, 상기 수신된 데이터의 데이터량을 동적으로 모니터링하여 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록할 것인지를 판단하는 단계 - 상기 호스트 장치로부터 수신되는 적어도 하나의 기록 커맨드는 상기 호스트 장치가 데이터를 기록하는 것을 요구하는 것을 나타냄 - ; 및
    상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록해야 하는 것으로 판단하면, 단일 레벨 셀(Single Level Cell: SLC) 메모리 블록이 되도록 구성되어 있는 임의의 다른 블록에 상기 수신된 데이터를 먼저 일시적으로 기록함으로써 상기 수신된 데이터를 특정한 블록에 간접적으로 기록하지 않고, 상기 적어도 하나의 NV 메모리 소자의 특정한 NV 메모리 소자 내의 복수 레벨 셀(Multiple Level Cell: MLC) 메모리 블록이 되도록 구성되어 있는 특정한 블록에 상기 수신된 데이터를 직접적으로 기록하는 단계
    를 포함하는 메모리 장치 관리 방법.
  2. 제1항에 있어서,
    상기 특정한 블록 내의 메모리 셀을 사용하여 복수의 비트를 저장하는 상황 하에서, 상기 복수의 비트는 상기 메모리 셀에 사전설정된 횟수로 반복적으로 기록되어야 하며, 이에 따라 상기 메모리 셀은 상기 특정한 NV 메모리 소자에 정확하게 프로그램되며, 따라서 상기 복수의 비트 각각은 추가의 판독을 위해 상기 메모리 셀에 정확하게 저장되며; 상기 사전설정된 횟수는 1보다 큰, 메모리 장치 관리 방법.
  3. 제2항에 있어서,
    상기 수신된 데이터의 데이터량을 동적으로 모니터링하는 단계는,
    상기 수신된 데이터의 데이터량이 사전설정된 데이터량 임계값에 도달하면, 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록하는 것으로 판단하는 단계
    를 포함하며,
    여기서, 상기 수신된 데이터 중 적어도 일부가 상기 메모리 셀의 반복된 기록 동작에 사용될 수 있도록 하기 위해, 상기 휘발성 메모리의 저장 용량은 상기 사전설정된 데이터량 임계값과 상기 사전설정된 횟수의 적(product)보다 크거나 같은, 메모리 장치 관리 방법.
  4. 제3항에 있어서,
    상기 사전설정된 데이터량 임계값은 상기 특정한 NV 메모리 소자 내의 워드-라인(word-line)에 속하는 한 세트의 메모리 셀의 저장 용량과 같은, 메모리 장치 관리 방법.
  5. 제4항에 있어서,
    상기 복수의 블록 중 임의의 블록은 사전설정된 수의 페이지를 포함하며;
    상기 호스트 장치로부터 복수 세트의 데이터를 각각 수신하고, 상기 복수 세트의 데이터를 상기 휘발성 메모리에 일시적으로 저장하는 단계 - 상기 각각의 복수 세트의 데이터는 복수의 페이지를 포함하고, 각각의 복수 세트의 데이터의 데이터량은 상기 사전설정된 데이터량 임계값과 같음 - ; 및
    상기 복수 세트의 데이터를 상기 휘발성 메모리로부터 판독하여 상기 복수 세트의 데이터를 상기 특정한 블록에 직접적으로 각각 기록하며, 상기 복수 세트의 데이터 중 제1 세트의 데이터를 상기 특정한 블록에 수회 직접적으로 기록하는 단계
    를 포함하며,
    여기서, 상기 제1 세트의 데이터가 상기 특정한 블록에 기록되는 횟수는 사전설정된 횟수에 도달하고, 이에 따라 상기 특정한 블록 내의 특정한 워드-라인에 속하는 상기 특정한 세트의 메모리 셀은 상기 특정한 NV 메모리 소자에 정확하게 프로그램되며, 따라서 상기 제1 세트의 데이터의 각각의 비트는 추가의 판독을 위해 상기 특정한 세트의 메모리 셀에 정확하게 저장되는, 메모리 장치 관리 방법.
  6. 제2항에 있어서,
    상기 복수의 블록 중 임의의 블록은 사전설정된 수의 페이지를 포함하고;
    제1 세트의 데이터의 총 수신된 데이터량이 사전설정된 데이터량 임계값에 도달할 때까지, 상기 호스트 장치로부터 복수의 페이지를 포함하는 제1 세트의 데이터를 페이지 단위(page-by-page manner)로 각각 수신하고, 상기 제1 세트의 데이터를 상기 휘발성 메모리에 일시적으로 저장하는 단계 - 상기 제1 세트의 데이터의 총 수신된 데이터량이 상기 사전설정된 데이터량 임계값에 도달하기 전에, 상기 제1 세트의 데이터는 상기 특정한 블록에 기록되지 않음 - ; 및
    상기 제1 세트의 데이터의 총 수신된 데이터량이 상기 사전설정된 데이터량 임계값에 도달하면, 상기 제1 세트의 데이터 중 적어도 일부를 상기 휘발성 메모리로부터 판독하여 상기 제1 세트의 데이터를 상기 특정한 블록에 직접적으로 기록하는 단계
    를 더 포함하는 메모리 장치 관리 방법.
  7. 제6항에 있어서,
    제2 세트의 데이터의 총 수신된 데이터량이 사전설정된 데이터량 임계값에 도달할 때까지, 상기 호스트 장치로부터 복수의 페이지를 포함하는 제2 세트의 데이터를 페이지 단위로 각각 수신하고, 상기 제2 세트의 데이터를 상기 휘발성 메모리에 일시적으로 저장하는 단계 - 상기 제2 세트의 데이터의 총 수신된 데이터량이 상기 사전설정된 데이터량 임계값에 도달하기 전에, 상기 제2 세트의 데이터는 상기 특정한 블록에 기록되지 않음 - ; 및
    상기 제2 세트의 데이터의 총 수신된 데이터량이 상기 사전설정된 데이터량 임계값에 도달하면, 상기 제2 세트의 데이터 중 적어도 일부를 상기 휘발성 메모리로부터 판독하여 상기 제2 세트의 데이터를 상기 특정한 블록에 직접적으로 기록하며, 상기 제1 세트의 데이터를 2회째 상기 특정한 블록에 직접적으로 기록하는 단계
    를 더 포함하는 메모리 장치 관리 방법.
  8. 제7항에 있어서,
    제3 세트의 데이터의 총 수신된 데이터량이 사전설정된 데이터량 임계값에 도달할 때까지, 상기 호스트 장치로부터 복수의 페이지를 포함하는 제2 세트의 데이터를 페이지 단위로 각각 수신하고, 상기 제3 세트의 데이터를 상기 휘발성 메모리에 일시적으로 저장하는 단계 - 상기 제3 세트의 데이터의 총 수신된 데이터량이 상기 사전설정된 데이터량 임계값에 도달하기 전에, 상기 제3 세트의 데이터는 상기 특정한 블록에 기록되지 않음 - ; 및
    상기 제3 세트의 데이터의 총 수신된 데이터량이 상기 사전설정된 데이터량 임계값에 도달하면, 상기 제3 세트의 데이터 중 적어도 일부를 상기 휘발성 메모리로부터 판독하여 상기 제3 세트의 데이터를 상기 특정한 블록에 2회째 직접적으로 기록하고, 상기 제1 세트의 데이터를 3회째 상기 특정한 블록에 직접적으로 기록하며, 이에 따라 상기 제1 세트의 데이터의 임의의 페이지의 각각의 비트의 데이터가 추가의 판독을 위해 상기 특정한 블록에 정확하게 저장되는 단계
    를 더 포함하는 메모리 장치 관리 방법.
  9. 제1항에 있어서,
    상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록할 것인지를 판단하는 단계 이전에,
    상기 호스트 장치로부터 수신되는 적어도 하나의 판독 커맨드가 상기 호스트 장치가 상기 데이터 중 적어도 일부를 판독하도록 요구하는 것을 나타내면, 상기 특정한 NV 메모리 소자로부터 상기 데이터 중 적어도 일부를 판독하는 대신 상기 휘발성 메모리로부터 상기 데이터 중 적어도 일부를 판독하여 상기 호스트 장치에 응답하는 단계
    를 더 포함하는 메모리 장치 관리 방법.
  10. 제1항에 있어서,
    상기 수신된 데이터를 상기 특정한 블록에 수회 직접적으로 기록하는 단계
    를 더 포함하며,
    여기서 상기 제어기의 제어 하에, 상기 수신된 데이터가 상기 특정한 블록에 기록되는 횟수가 사전설정된 횟수에 도달하고, 이에 따라 상기 특정한 블록 내의 특정한 워드-라인에 속하는 특정한 세트의 메모리 셀은 상기 NV 메모리 소자에 정확하게 프로그램되며, 따라서 상기 수신된 데이터 내의 각각 비트는 추가의 판독을 위해 상기 특정한 세트의 메모리 셀에 정확하게 저장되는, 메모리 장치 관리 방법.
  11. 메모리 장치에 있어서,
    복수의 블록을 각각 포함하는 적어도 하나의 비휘발성(NV) 메모리 소자; 및
    상기 적어도 하나의 비휘발성(NV) 메모리 소자를 제어하도록 배치되어 있고 프로세싱 유닛을 포함하는 제어기
    를 포함하며,
    상기 프로세싱 유닛은, 상기 프로세싱 유닛에 매립되어 있거나 상기 프로세싱 유닛의 외부로부터 수신되는 프로그램 코드에 따라 상기 메모리 장치를 관리하도록 배치되어 있으며,
    상기 제어기는 호스트 장치로부터 수신되는 데이터를 상기 제어기 내의 휘발성 메모리에 일시적으로 저장하고 상기 휘발성 메모리 내의 데이터를 수신된 데이터로서 활용하며, 상기 수신된 데이터의 데이터량을 동적으로 모니터링하여 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록할 것인지를 판단하며, 상기 호스트 장치로부터 수신되는 적어도 하나의 기록 커맨드는 상기 호스트 장치가 데이터를 기록하는 것을 요구하는 것을 나타내며; 그리고
    상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록해야 하는 것으로 판단하면, 상기 제어기는, 단일 레벨 셀(Single Level Cell: SLC) 메모리 블록이 되도록 구성되어 있는 임의의 다른 블록에 상기 수신된 데이터를 먼저 일시적으로 기록함으로써 상기 수신된 데이터를 특정한 블록에 간접적으로 기록하지 않고, 상기 적어도 하나의 NV 메모리 소자의 특정한 NV 메모리 소자 내의 복수 레벨 셀(Multiple Level Cell: MLC) 메모리 블록이 되도록 구성되어 있는 특정한 블록에 상기 수신된 데이터를 직접적으로 기록하는, 메모리 장치.
  12. 제11항에 있어서,
    상기 특정한 블록 내의 메모리 셀을 사용하여 복수의 비트를 저장하는 상황 하에서, 상기 복수의 비트는 상기 메모리 셀에 사전설정된 횟수로 반복적으로 기록되어야 하며, 이에 따라 상기 메모리 셀은 상기 특정한 NV 메모리 소자에 정확하게 프로그램되며, 따라서 상기 복수의 비트 각각은 추가의 판독을 위해 상기 메모리 셀에 정확하게 저장되며; 상기 사전설정된 횟수는 1보다 큰, 메모리 장치.
  13. 제12항에 있어서,
    상기 수신된 데이터의 데이터량이 사전설정된 데이터량 임계값에 도달하면, 상기 제어기는 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록하는 것으로 판단하며; 상기 수신된 데이터 중 적어도 일부가 상기 메모리 셀의 반복된 기록 동작에 사용될 수 있도록 하기 위해, 상기 휘발성 메모리의 저장 용량은 상기 사전설정된 데이터량 임계값과 상기 사전설정된 횟수의 적보다 작지 않은, 메모리 장치.
  14. 제13항에 있어서,
    상기 사전설정된 데이터량 임계값은 상기 특정한 NV 메모리 소자 내의 워드-라인에 속하는 한 세트의 메모리 셀의 저장 용량과 같은, 메모리 장치.
  15. 제14항에 있어서,
    상기 복수의 블록 중 임의의 블록은 사전설정된 수의 페이지를 포함하며;
    상기 제어기는, 상기 호스트 장치로부터 복수 세트의 데이터를 각각 수신하고, 상기 복수 세트의 데이터를 상기 휘발성 메모리에 일시적으로 저장하며, 상기 각각의 복수 세트의 데이터는 복수의 페이지를 포함하고, 각각의 복수 세트의 데이터의 데이터량은 상기 사전설정된 데이터량 임계값과 같으며; 그리고 상기 제어기는, 상기 복수 세트의 데이터를 상기 휘발성 메모리로부터 판독하여 상기 복수 세트의 데이터를 상기 특정한 블록에 직접적으로 각각 기록하며, 상기 복수 세트의 데이터 중 제1 세트의 데이터를 상기 특정한 블록에 수회 직접적으로 기록하며, 여기서, 상기 제1 세트의 데이터가 상기 특정한 블록에 기록되는 횟수는 사전설정된 횟수에 도달하고, 이에 따라 상기 특정한 블록 내의 특정한 워드-라인에 속하는 상기 특정한 세트의 메모리 셀은 상기 특정한 NV 메모리 소자에 정확하게 프로그램되며, 따라서 상기 제1 세트의 데이터의 각각의 비트는 추가의 판독을 위해 상기 특정한 세트의 메모리 셀에 정확하게 저장되는, 메모리 장치.
  16. 메모리 장치의 제어기에 있어서,
    상기 메모리 장치는 복수의 블록을 각각 포함하는 적어도 하나의 비휘발성(NV) 메모리 소자를 포함하고, 상기 제어기는 프로세싱 유닛을 포함하며, 상기 프로세싱 유닛은, 상기 프로세싱 유닛에 매립되어 있거나 상기 프로세싱 유닛의 외부로부터 수신되는 프로그램 코드에 따라 상기 메모리 장치를 관리하도록 배치되어 있으며, 상기 제어기는 호스트 장치로부터 수신되는 데이터를 상기 제어기 내의 휘발성 메모리에 일시적으로 저장하고 상기 휘발성 메모리 내의 데이터를 수신된 데이터로서 활용하며, 상기 수신된 데이터의 데이터량을 동적으로 모니터링하여 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록할 것인지를 판단하며, 상기 호스트 장치로부터 수신되는 적어도 하나의 기록 커맨드는 상기 호스트 장치가 데이터를 기록하는 것을 요구하는 것을 나타내며; 그리고
    상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록해야 하는 것으로 판단하면, 상기 제어기는, 단일 레벨 셀(Single Level Cell: SLC) 메모리 블록이 되도록 구성되어 있는 임의의 다른 블록에 상기 수신된 데이터를 먼저 일시적으로 기록함으로써 상기 수신된 데이터를 특정한 블록에 간접적으로 기록하지 않고, 상기 적어도 하나의 NV 메모리 소자의 특정한 NV 메모리 소자 내의 복수 레벨 셀(Multiple Level Cell: MLC) 메모리 블록이 되도록 구성되어 있는 특정한 블록에 상기 수신된 데이터를 직접적으로 기록하는, 메모리 장치의 제어기.
  17. 제16항에 있어서,
    상기 특정한 블록 내의 메모리 셀을 사용하여 복수의 비트를 저장하는 상황 하에서, 상기 복수의 비트는 상기 메모리 셀에 사전설정된 횟수로 반복적으로 기록되어야 하며, 이에 따라 상기 메모리 셀은 상기 특정한 NV 메모리 소자에 정확하게 프로그램되며, 따라서 상기 복수의 비트 각각은 추가의 판독을 위해 상기 메모리 셀에 정확하게 저장되며; 상기 사전설정된 횟수는 1보다 큰, 메모리 장치의 제어기.
  18. 제17항에 있어서,
    상기 수신된 데이터의 데이터량이 사전설정된 데이터량 임계값에 도달하면, 상기 제어기는 상기 수신된 데이터를 상기 적어도 하나의 NV 메모리 소자에 즉시 기록하는 것으로 판단하며; 상기 수신된 데이터 중 적어도 일부가 상기 메모리 셀의 반복된 기록 동작에 사용될 수 있도록 하기 위해, 상기 휘발성 메모리의 저장 용량은 상기 사전설정된 데이터량 임계값과 상기 사전설정된 횟수의 적보다 크거나 같은, 메모리 장치의 제어기.
  19. 제18항에 있어서,
    상기 사전설정된 데이터량 임계값은 상기 특정한 NV 메모리 소자 내의 워드-라인에 속하는 한 세트의 메모리 셀의 저장 용량과 같은, 메모리 장치의 제어기.
  20. 제19항에 있어서,
    상기 복수의 블록 중 임의의 블록은 사전설정된 수의 페이지를 포함하며;
    상기 제어기는, 상기 호스트 장치로부터 복수 세트의 데이터를 각각 수신하고, 상기 복수 세트의 데이터를 상기 휘발성 메모리에 일시적으로 저장하며, 상기 각각의 복수 세트의 데이터는 복수의 페이지를 포함하고, 각각의 복수 세트의 데이터의 데이터량은 상기 사전설정된 데이터량 임계값과 같으며; 그리고 상기 제어기는, 상기 복수 세트의 데이터를 상기 휘발성 메모리로부터 판독하여 상기 복수 세트의 데이터를 상기 특정한 블록에 직접적으로 각각 기록하며, 상기 복수 세트의 데이터 중 제1 세트의 데이터를 상기 특정한 블록에 수회 직접적으로 기록하며, 여기서, 상기 제1 세트의 데이터가 상기 특정한 블록에 기록되는 횟수는 사전설정된 횟수에 도달하고, 이에 따라 상기 특정한 블록 내의 특정한 워드-라인에 속하는 상기 특정한 세트의 메모리 셀은 상기 특정한 NV 메모리 소자에 정확하게 프로그램되며, 따라서 상기 제1 세트의 데이터의 각각의 비트는 추가의 판독을 위해 상기 특정한 세트의 메모리 셀에 정확하게 저장되는, 메모리 장치의 제어기.
KR1020140100426A 2013-08-05 2014-08-05 메모리 장치 관리 방법, 그 관련 메모리 장치 및 그 관련 제어기 KR101561546B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361862094P 2013-08-05 2013-08-05
US61/862,094 2013-08-05
TW102144913 2013-12-06
TW102144913A TWI523016B (zh) 2013-08-05 2013-12-06 用來管理一記憶裝置之方法以及記憶裝置與控制器

Publications (2)

Publication Number Publication Date
KR20150016914A true KR20150016914A (ko) 2015-02-13
KR101561546B1 KR101561546B1 (ko) 2015-10-19

Family

ID=52428745

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140100426A KR101561546B1 (ko) 2013-08-05 2014-08-05 메모리 장치 관리 방법, 그 관련 메모리 장치 및 그 관련 제어기

Country Status (3)

Country Link
US (1) US9514042B2 (ko)
KR (1) KR101561546B1 (ko)
CN (3) CN107391389B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391389B (zh) * 2013-08-05 2020-11-24 慧荣科技股份有限公司 用来管理一记忆装置的方法以及记忆装置与控制器
US9928169B2 (en) * 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
KR102593362B1 (ko) 2016-04-27 2023-10-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN107544922B (zh) * 2016-06-24 2020-01-21 群联电子股份有限公司 数据写入方法、存储器控制电路单元及存储器存储装置
TWI640867B (zh) * 2017-05-02 2018-11-11 慧榮科技股份有限公司 資料儲存裝置及其操作方法
KR20190074677A (ko) 2017-12-20 2019-06-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200015247A (ko) 2018-08-03 2020-02-12 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11526619B2 (en) * 2019-06-28 2022-12-13 Bank Of America Corporation System for securing and allowing access to electronic data in a data storage container
US20210255783A1 (en) * 2020-02-19 2021-08-19 Silicon Motion, Inc. Method and apparatus for performing data storage management to enhance data reliability with aid of repeated write command detection

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
SG130988A1 (en) 2005-09-29 2007-04-26 Trek 2000 Int Ltd Portable data storage device incorporating multiple flash memory units
CN101632068B (zh) 2007-12-28 2015-01-14 株式会社东芝 半导体存储装置
CN101526883B (zh) * 2008-03-03 2011-10-19 群联电子股份有限公司 数据流传送分派方法、执行此方法的系统及其控制器
CN101576853B (zh) * 2008-05-06 2011-12-21 群联电子股份有限公司 数据存取方法、使用此方法的控制器与存储系统
US8060719B2 (en) * 2008-05-28 2011-11-15 Micron Technology, Inc. Hybrid memory management
TWI385516B (zh) * 2008-08-12 2013-02-11 Phison Electronics Corp 快閃記憶體儲存系統及其資料寫入方法
KR101548175B1 (ko) 2008-11-05 2015-08-28 삼성전자주식회사 싱글 레벨 메모리 셀 블락과 멀티 레벨 메모리 셀 블락을 포함하는 불휘발성 메모리 장치의 마모 레벨링 방법
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8040744B2 (en) 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
TWI385527B (zh) * 2009-02-10 2013-02-11 Phison Electronics Corp Mlc nand型快閃記憶體儲存系統及其控制器與存取方法
TWI385518B (zh) * 2009-03-20 2013-02-11 Phison Electronics Corp 用於快閃記憶體的資料儲存方法及儲存系統
US20110041005A1 (en) 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
CN102541675B (zh) * 2010-12-23 2015-03-11 慧荣科技股份有限公司 提升错误更正能力的方法、记忆装置及其控制器
US8886990B2 (en) 2011-01-27 2014-11-11 Apple Inc. Block management schemes in hybrid SLC/MLC memory
US8537613B2 (en) 2011-03-31 2013-09-17 Sandisk Technologies Inc. Multi-layer memory system
US8949508B2 (en) 2011-07-18 2015-02-03 Apple Inc. Non-volatile temporary data handling
US9176862B2 (en) 2011-12-29 2015-11-03 Sandisk Technologies Inc. SLC-MLC wear balancing
CN107391389B (zh) * 2013-08-05 2020-11-24 慧荣科技股份有限公司 用来管理一记忆装置的方法以及记忆装置与控制器

Also Published As

Publication number Publication date
CN107423231A (zh) 2017-12-01
US9514042B2 (en) 2016-12-06
CN107423231B (zh) 2020-11-20
CN107391389B (zh) 2020-11-24
KR101561546B1 (ko) 2015-10-19
CN104346288A (zh) 2015-02-11
CN104346288B (zh) 2017-07-28
US20150039810A1 (en) 2015-02-05
CN107391389A (zh) 2017-11-24

Similar Documents

Publication Publication Date Title
KR101561546B1 (ko) 메모리 장치 관리 방법, 그 관련 메모리 장치 및 그 관련 제어기
KR101566849B1 (ko) 메모리 장치 관리 방법, 그 관련 메모리 장치 및 그 관련 제어기
US9570183B1 (en) Method and controller for managing memory device
CN106681931B (zh) 数据储存设备及其操作方法
CN106448737B (zh) 读取闪存数据的方法、装置以及固态驱动器
KR20140016440A (ko) 솔리드 스테이트 메모리를 포멧팅하기 위한 메모리 제어기, 방법, 및 솔리드 스테이트 메모리 시스템
US20220334960A1 (en) Method for managing flash memory module and associated flash memory controller and electronic device
KR20170026831A (ko) 불휘발성 메모리 장치, 그것을 포함하는 데이터 저장 장치 그리고 데이터 저장 장치의 동작 방법.
US20150058531A1 (en) Data writing method, memory control circuit unit and memory storage apparatus
US20140013030A1 (en) Memory storage device, memory controller thereof, and method for writing data thereof
CN109960466B (zh) 存储器系统及其操作方法
US9009442B2 (en) Data writing method, memory controller and memory storage apparatus
US20230266884A1 (en) Operating method for storage controller and storage system including same
KR20190091035A (ko) 메모리 시스템 및 그것의 동작 방법
US20190278703A1 (en) Memory system, operating method thereof and electronic device
KR20170109344A (ko) 데이터 저장 장치 및 그것의 동작 방법
US8713242B2 (en) Control method and allocation structure for flash memory device
TWI523016B (zh) 用來管理一記憶裝置之方法以及記憶裝置與控制器
US20230031193A1 (en) Memory system and operating method thereof
CN110322913B (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
FPAY Annual fee payment

Payment date: 20190718

Year of fee payment: 5