KR101818445B1 - 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들 - Google Patents

메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들 Download PDF

Info

Publication number
KR101818445B1
KR101818445B1 KR1020110068089A KR20110068089A KR101818445B1 KR 101818445 B1 KR101818445 B1 KR 101818445B1 KR 1020110068089 A KR1020110068089 A KR 1020110068089A KR 20110068089 A KR20110068089 A KR 20110068089A KR 101818445 B1 KR101818445 B1 KR 101818445B1
Authority
KR
South Korea
Prior art keywords
seed
page
entry
selecting
bits
Prior art date
Application number
KR1020110068089A
Other languages
English (en)
Other versions
KR20130006195A (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
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020110068089A priority Critical patent/KR101818445B1/ko
Priority to US13/540,078 priority patent/US9152551B2/en
Priority to CN201210232132.8A priority patent/CN102866877B/zh
Priority to JP2012153392A priority patent/JP6166868B2/ja
Publication of KR20130006195A publication Critical patent/KR20130006195A/ko
Priority to US14/875,205 priority patent/US10013349B2/en
Application granted granted Critical
Publication of KR101818445B1 publication Critical patent/KR101818445B1/ko

Links

Images

Classifications

    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/22Safety or protection circuits preventing unauthorised or accidental access to memory cells
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2224/00Indexing scheme for arrangements for connecting or disconnecting semiconductor or solid-state bodies and methods related thereto as covered by H01L24/00
    • H01L2224/01Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
    • H01L2224/26Layer connectors, e.g. plate connectors, solder or adhesive layers; Manufacturing methods related thereto
    • H01L2224/31Structure, shape, material or disposition of the layer connectors after the connecting process
    • H01L2224/32Structure, shape, material or disposition of the layer connectors after the connecting process of an individual layer connector
    • H01L2224/321Disposition
    • H01L2224/32135Disposition the layer connector connecting between different semiconductor or solid-state bodies, i.e. chip-to-chip
    • H01L2224/32145Disposition the layer connector connecting between different semiconductor or solid-state bodies, i.e. chip-to-chip the bodies being stacked
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2224/00Indexing scheme for arrangements for connecting or disconnecting semiconductor or solid-state bodies and methods related thereto as covered by H01L24/00
    • H01L2224/01Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
    • H01L2224/42Wire connectors; Manufacturing methods related thereto
    • H01L2224/47Structure, shape, material or disposition of the wire connectors after the connecting process
    • H01L2224/48Structure, shape, material or disposition of the wire connectors after the connecting process of an individual wire connector
    • H01L2224/4805Shape
    • H01L2224/4809Loop shape
    • H01L2224/48091Arched
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2224/00Indexing scheme for arrangements for connecting or disconnecting semiconductor or solid-state bodies and methods related thereto as covered by H01L24/00
    • H01L2224/01Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
    • H01L2224/42Wire connectors; Manufacturing methods related thereto
    • H01L2224/47Structure, shape, material or disposition of the wire connectors after the connecting process
    • H01L2224/48Structure, shape, material or disposition of the wire connectors after the connecting process of an individual wire connector
    • H01L2224/481Disposition
    • H01L2224/48135Connecting between different semiconductor or solid-state bodies, i.e. chip-to-chip
    • H01L2224/48145Connecting between different semiconductor or solid-state bodies, i.e. chip-to-chip the bodies being stacked
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2224/00Indexing scheme for arrangements for connecting or disconnecting semiconductor or solid-state bodies and methods related thereto as covered by H01L24/00
    • H01L2224/01Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
    • H01L2224/42Wire connectors; Manufacturing methods related thereto
    • H01L2224/47Structure, shape, material or disposition of the wire connectors after the connecting process
    • H01L2224/48Structure, shape, material or disposition of the wire connectors after the connecting process of an individual wire connector
    • H01L2224/481Disposition
    • H01L2224/48151Connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive
    • H01L2224/48221Connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive the body and the item being stacked
    • H01L2224/48225Connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive the body and the item being stacked the item being non-metallic, e.g. insulating substrate with or without metallisation
    • H01L2224/48227Connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive the body and the item being stacked the item being non-metallic, e.g. insulating substrate with or without metallisation connecting the wire to a bond pad of the item
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2224/00Indexing scheme for arrangements for connecting or disconnecting semiconductor or solid-state bodies and methods related thereto as covered by H01L24/00
    • H01L2224/73Means for bonding being of different types provided for in two or more of groups H01L2224/10, H01L2224/18, H01L2224/26, H01L2224/34, H01L2224/42, H01L2224/50, H01L2224/63, H01L2224/71
    • H01L2224/732Location after the connecting process
    • H01L2224/73251Location after the connecting process on different surfaces
    • H01L2224/73265Layer and wire connectors
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/10Details of semiconductor or other solid state devices to be connected
    • H01L2924/11Device type
    • H01L2924/12Passive devices, e.g. 2 terminal devices
    • H01L2924/1204Optical Diode
    • H01L2924/12044OLED
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/15Details of package parts other than the semiconductor or other solid state devices to be connected
    • H01L2924/151Die mounting substrate
    • H01L2924/153Connection portion
    • H01L2924/1531Connection portion the connection portion being formed only on the surface of the substrate opposite to the die mounting surface
    • H01L2924/15311Connection portion the connection portion being formed only on the surface of the substrate opposite to the die mounting surface being a ball array, e.g. BGA
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/15Details of package parts other than the semiconductor or other solid state devices to be connected
    • H01L2924/181Encapsulation

Abstract

메모리 컨트롤러의 동작 방법이 개시된다. 상기 방법은 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드를 이용하여 의사 난수를 생성하는 단계와, 상기 의사 난수를 이용하여 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 출력하는 단계를 포함한다.

Description

메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들{MEMORY CONTROLLER, METHOD THEREOF, AND ELECTRONIC DEVICES HAVING THE MEMORY CONTROLLER}
본 발명의 개념에 따른 실시 예는 메모리 컨트롤러에 관한 것으로, 특히 서로 인접하는 복수의 페이지들(pages) 사이의 시드 연관성(seed correlation)을 감소시킬 수 있는 메모리 컨트롤러, 상기 메모리 컨트롤러의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들에 관한 것이다.
의사 난수들(pseudo-random numbers)은 통신 시스템 또는 데이터 저장 시스템에서 널리 사용된다. 상기 의사 난수들은 의사 난수 시퀀스(pseudo random sequence)를 발생하기 위하여 사용된다.
즉, 의사 난수는 처음에 주어지는 초기값을 이용하여 이미 결정되어 있는 메커니즘, 예컨대 의사 난수 생성기에 의해 생성되는 수(number)를 의미한다.
난수는 그 생성 방법이 결정되어 있지 않으므로 다음에 생성될 값, 즉 수(numner)를 전혀 예측할 수 없다. 그러나 의사 난수 생성기에 의해 생성되는 수는 상기 의사 난수 생성기의 초기값을 알면 계산될 수 있으므로, 진짜 난수와 구별하기 위하여 의사 난수라 부른다.
선형 피드백 쉬프트 레지스터(linear feedback shift register(LFSR))는 의사 난수 시퀀스를 발생하기 위하여 사용된다. 상기 LFSR은 시드(seed)라고 불리는 초기값을 변경하거나 또는 피드백 탭들(feedback taps)을 변경함으로써 상기 의사 난수 시퀀스를 변경시킬 수 있다.
상술한 바와 같이, 의사 난수는 초기값을 이용하여 계산될 수 있으므로 의사 난수는 계산될 수 있다. 따라서 의사 난수를 용이하게 계산할 수 없는 방법이 요구된다.
랜더마이저(randomizer)는, LFSR에 의하여 생성된 의사 난수 시퀀스를 이용하여, 데이터를 랜더마이즈된 데이터로 변환한다. 디랜더마이저(derandomizer)는, LFSR에 의하여 생성된 의사 난수 시퀀스를 이용하여, 랜더마이즈된 데이터를 디랜더마이즈된 데이터로 변환한다. 따라서, 의사 난수 시퀀스를 용이하게 계산할 수 없는 랜더마이저 또는 디랜더마이저가 요구된다.
본 발명이 이루고자 하는 기술적인 과제는 프로그램되는 데이터의 랜덤성 (randomness)을 증가시키기 위하여 서로 인접하는 복수의 페이지들 사이의 시드 연관성을 감소 또는 제거할 수 있는 메모리 컨트롤러, 상기 메모리 컨트롤러의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들을 제공하는 것이다.
본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작 방법은 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드(seed)를 이용하여 의사 난수를 생성하는 단계와, 상기 의사 난수를 이용하여 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 출력하는 단계를 포함한다.
실시 예에 따라 상기 의사 난수를 생성하는 단계는 상기 페이지의 페이지 어드레스의 적어도 일부 비트를 이용하여 상기 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 상기 시드 그룹을 선택하는 단계와, 선택된 시드 그룹에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리(entry)를 상기 시드로서 선택하고 선택된 시드를 이용하여 상기 의사 난수를 생성하는 단계를 포함한다.
상기 메모리 컨트롤러의 동작 방법은 상기 엔트리 포인터에 의하여 지정된 엔트리가 선택된 후, 상기 엔트리 포인터를 변경하는 단계를 더 포함하고, 상기 메모리 컨트롤러가 리셋될 때, 변경된 엔트리 포인터는 디폴트(default) 값으로 리셋된다.
다른 실시예에 따라 상기 의사 난수를 생성하는 단계는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트를 이용하여 상기 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 상기 시드 그룹을 선택하는 단계와, 선택된 시드 그룹에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택하고 선택된 시드를 이용하여 상기 의사 난수를 생성하는 단계를 포함한다.
상기 복수의 시드 그룹들 각각이 복수의 페이지들 각각에 대응될 때, 상기 복수의 페이지들의 수는 하나의 워드 라인에 접속된 복수의 멀티-레벨 셀들 각각에 저장되는 비트들의 수와 동일하다.
본 발명의 다른 실시예에 따른 메모리 컨트롤러의 동작 방법은 각각이 서로 다른 시드 테이블(seed table)에 저장된 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드를 이용하여 의사 난수를 생성하는 단계와, 상기 의사 난수를 이용하여 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 출력하는 단계를 포함한다.
본 발명의 또 다른 실시예에 따른 메모리 컨트롤러의 동작 방법은 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 할당된 시드 그룹에 포함된 시드를 이용하여 의사 난수를 생성하는 단계와, 상기 의사 난수를 이용하여 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 출력하는 단계를 포함하며, 상기 복수의 시드 그룹들은 동일한 시드 테이블에 저장되고, 상기 복수의 시드 그룹들 각각이 복수의 엔트리들을 포함하는 복수의 존들 각각에 대응될 때, 상기 복수의 존들 중에서 상기 시드 그룹에 상응하는 존은 상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트에 따라 선택되고, 상기 시드는 상기 선택된 존에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리이다.
본 발명의 실시예에 따른 메모리 컨트롤러는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드(seed)를 선택하는 마이크로프로세서와, 선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 출력하는 랜더마이저를 포함한다.
상기 마이크로프로세서는 선택된 시드 그룹에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한 후, 상기 엔트리 포인터를 변경하고, 상기 메모리 컨트롤러가 리셋될 때, 변경된 엔트리 포인터는 디폴트 값으로 리셋된다.
상기 메모리 컨트롤러는 상기 복수의 시드 그룹들을 저장하는 ROM(read only memory)를 더 포함한다.
실시예에 따라 상기 마이크로프로세서는 상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트를 이용하여 상기 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 상기 시드 그룹을 선택한다.
실시예에 따라 상기 복수의 시드 그룹들 각각은 서로 다른 시드 테이블에 저장된다.
다른 실시예에 따라, 상기 복수의 시드 그룹들이 동일한 시드 테이블에 저장되고, 상기 복수의 시드 그룹들 각각이 복수의 엔트리들을 포함하는 복수의 존들 각각에 대응될 때, 상기 마이크로프로세서는 상기 복수의 존들 중에서 상기 시드 그룹에 상응하는 존을 상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트에 따라 선택하고, 상기 선택된 존에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한다.
본 발명의 실시예에 따른 메모리 시스템은 복수의 페이지들을 갖는 메모리 셀 어레이를 포함하는 불휘발성 메모리 장치와, 상기 불휘발성 메모리 장치의 동작을 제어하는 메모리 컨트롤러를 포함한다.
상기 메모리 컨트롤러는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드를 선택하는 마이크로프로세서와, 선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 상기 불휘발성 메모리 장치로 출력하는 랜더마이저를 포함한다.
실시예에 따라 상기 복수의 시드 그룹들 각각이 서로 다른 시드 테이블에 저장될 때, 상기 마이크로프로세서는 상기 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 상기 시드 그룹을 상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트에 따라 선택한다.
상기 마이크로프로세서는 상기 선택된 시드 그룹에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한다.
다른 실시예에 따라, 상기 복수의 시드 그룹들이 동일한 시드 테이블에 저장되고 상기 복수의 시드 그룹들 각각이 복수의 엔트리들을 포함하는 복수의 존들 각각에 대응될 때, 상기 마이크로프로세서는 상기 복수의 존들 중에서 상기 시드 그룹에 상응하는 존을 상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트에 따라 선택하고 상기 선택된 존에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한다.
상기 메모리 시스템은 상기 불휘발성 메모리 장치와 상기 메모리 컨트롤러를 포함하는 멀티-칩 패키지(multi-chip package)이다.
본 발명의 실시예에 따른 메모리 카드는 복수의 페이지들을 갖는 메모리 셀 어레이를 포함하는 플래시 메모리 장치와, 호스트와 통신하기 위한 카드 인터페이스와, 상기 플래시 메모리 장치와 상기 카드 인터페이스 사이의 통신을 제어하는 메모리 컨트롤러를 포함한다.
상기 메모리 컨트롤러는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드를 선택하는 마이크로프로세서와, 선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 상기 플래시 메모리 장치로 출력하는 랜더마이저를 포함한다.
상기 메모리 카드는 MMC(MultimMedia Card), SD(secure Digital) 카드, 또는 USB 플래시 드라이브이다.
본 발명의 실시예에 따른 휴대용 통신 장치는 복수의 페이지들을 갖는 메모리 셀 어레이를 포함하는 플래시 메모리 장치와, 상기 플래시 메모리 장치의 동작을 제어하기 위한 메모리 컨트롤러와, 상기 메모리 컨트롤러의 제어에 따라 상기 플래시 메모리 장치로부터 출력된 데이터를 디스플레이하기 위한 디스플레이를 포함한다.
상기 메모리 컨트롤러는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드를 선택하는 마이크로프로세서와, 선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라, 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 상기 플래시 메모리 장치로 출력하는 랜더마이저를 포함한다.
본 발명의 실시예에 따른 3차원 메모리 시스템은 각각이 복수의 페이지들을 갖는 복수의 레이어들을 포함하는 3차원 불휘발성 메모리 장치와, 상기 3차원 불휘발성 메모리 장치의 동작을 제어하는 메모리 컨트롤러를 포함한다.
상기 메모리 컨트롤러는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 할당된 시드 그룹에 포함된 시드를 선택하는 마이크로프로세서와, 선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라, 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 출력하는 랜더마이저를 포함한다.
본 발명의 실시예에 따른 솔리드 스테이트 드라이브는 각각이 복수의 페이지들을 포함하는 복수의 솔리드 스테이트 메모리 장치들과, 상기 복수의 솔리드 스테이트 메모리 장치들 각각의 동작을 제어하는 메모리 컨트롤러를 포함한다.
상기 메모리 컨트롤러는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드를 선택하는 마이크로프로세서와, 선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라, 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 현재 프로그램될 상기 페이지로 출력하는 랜더마이저를 포함한다.
본 발명의 실시 예에 따른 메모리 컨트롤러 및 이의 동작 방법은, 페이지마다 서로 다른 시드 테이블에 포함된 시드 또는 페이지마다 서로 다른 존에 포함된 시드를 이용하여 생성된 의사 난수에 따라 데이터를 랜더마이즈함으로써 복수의 페이지들 사이의 시드 연관성을 방지할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 컨트롤러를 포함하는 메모리 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 메모리 시스템을 포함하는 멀티-칩 패키지의 일 실시 예를 나타낸다.
도 3은 도 1에 도시된 메모리 시스템을 포함하는 멀티-칩 패키지의 다른 실시 예를 나타낸다.
도 4는 도 1에 도시된 메모리 인터페이스의 일 실시 예에 따른 블록도를 나타낸다.
도 5는 도 1에 도시된 메모리 인터페이스의 다른 실시 예에 따른 블록도를 나타낸다.
도 6은 페이지별로 할당된 시드 테이블들의 일 실시 예를 나타낸다.
도 7은 페이지별로 할당된 시드 테이블들의 다른 실시 예를 나타낸다.
도 8은 페이지별로 할당된 존들(zones)을 포함하는 하나의 시드 테이블을 나타낸다.
도 9는 도 8에 도시된 하나의 존(zone)에 포함된 엔트리들을 나타낸다.
도 10은 도 1에 도시되고 2차원적인 구조를 갖는 불휘발성 메모리 장치의 블록도를 나타낸다.
도 11은 도 1에 도시되고 3차원적인 구조를 갖는 불휘발성 메모리 장치의 블록도를 나타낸다.
도 12a는 페이지별로 할당된 시드 테이블들을 이용하는 도 1에 도시된 메모리 시스템의 동작을 설명하기 위한 흐름도이다.
도 12b는 하나의 시드 테이블에 포함된 복수의 존들을 이용하는 도 1에 도시된 메모리 시스템의 동작을 설명하기 위한 흐름도이다.
도 13은 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 일 실시 예를 나타낸다.
도 14는 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 다른 실시 예를 나타낸다.
도 15는 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 또 다른 실시 예를 나타낸다.
도 16은 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 또 다른 실시 예를 나타낸다.
도 17은 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 또 다른 실시 예를 나타낸다.
도 18은 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 또 다른 실시 예를 나타낸다.
도 19는 도 18에 도시된 전자 장치를 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 메모리 컨트롤러(20)를 포함하는 메모리 시스템(10)의 블록도를 나타낸다. 도 1을 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(20) 및 불휘발성 메모리 장치(40)를 포함한다.
메모리 컨트롤러(20)는 호스트(HOST)의 제어에 따라 불휘발성 메모리 장치 (40)의 데이터 처리 동작, 예컨대 프로그램(program) 동작, 리드(read) 동작, 및 이레이즈(erase) 동작을 제어할 수 있다.
도 6과 도 7에 도시된 실시 예에 따라, 메모리 컨트롤러(20)는 복수의 시드 테이블들(ST1~ST4 및 ST11~ST13) 중에서 현재 프로그램될 페이지에 대한(또는 할당된) 시드 테이블을 선택하고, 선택된 시드 테이블에 포함된 하나 또는 그 이상의 엔트리들(entries) 중에서 엔트리 포인터(entry pointer)에 의하여 지정된 엔트리를 상기 페이지의 시드(seed)로서 선택하고, 선택된 시드를 이용하여 의사 난수를 생성하고, 생성된 의사 난수에 따라 상기 페이지에 프로그램될 데이터를 랜더마이즈(randomize)하고, 랜더마이즈된 데이터를 불휘발성 메모리 장치(40)로 출력할 수 있다.
여기서, 복수의 페이지들 각각은 프로그램 동작에 따른 워드 라인(word line) 방향의 플로팅 게이트 커플링(floating gate coupling), 리드 디스터번스 (read disturbance), 또는 백-패턴 디펜던시(back-pattern dependancy) 등에 따라 서로 영향을 받는다고 가정한다. 이때, 상기 리드 디스터번스는 리드 동작 동안에 선택되지 않은 복수의 워드 라인들 각각에 접속된 복수의 메모리 셀들이 프로그램되는 현상을 의미한다.
도 8과 도 9에 도시된 다른 실시 예에 따라, 메모리 컨트롤러(20)는 하나의 시드 테이블(ST21)에 포함되며, 각각이 복수의 엔트리들을 포함하고, 각각이 복수의 페이지들 각각에 할당된 복수의 존들(ZONE0~ZONE15) 중에서 어느 하나의 존을 선택하고, 선택된 존에 포함된 하나 또는 그 이상의 엔트리 중에서 엔트리 포인터 (ENTRY_PNTZ0)에 의하여 지정된 엔트리(ENTRY_Z11)를 현재 프로그램될 페이지의 시드(seed)로서 선택하고, 선택된 시드를 이용하여 의사 난수를 생성하고, 상기 의사 난수를 이용하여 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 불휘발성 메모리 장치(40)로 출력할 수 있다.
메모리 컨트롤러(20)는 마이크로프로세서(22), 버퍼(24), ROM(read only memory; 26), 호스트 인터페이스(29), 및 메모리 인터페이스(30)를 포함한다. 각 구성 요소(22, 24, 26, 29, 및 30)는 버스(28)를 통하여 서로 통신할 수 있다.
회로(circuit), 로직(logic), 코드(code), 또는 이들의 조합으로 구현될 수 있는 마이크로프로세서(22)는 각 구성 요소(24, 26, 29, 및 30)의 동작을 제어할 수 있다.
도 6과 도 7에 도시된 실시 예에 따라, 마이크로프로세서(22)는 복수의 시드 테이블들(ST1~ST4 또는 ST11~ST13), 예컨대 페이지별로 할당된 복수의 시드 테이블들(ST1~ST4 또는 ST11~ST13) 중에서 현재 프로그램될 페이지에 할당된 시드 테이블을 선택하는 동작 및/또는 선택된 시드 테이블에 포함된 하나 또는 그 이상의 엔트리들 중에서 어느 하나의 엔트리를 선택할 수 있는 엔트리 포인터를 변경하는 동작을 수행할 수 있다.
이때, 마이크로프로세서(22)는 현재 프로그램될 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트를 이용하여 복수의 시드 테이블들 중에서 어느 하나를 선택할 수 있다. 여기서 일부 비트는 1-비트 또는 그 이상의 비트를 의미한다.
도 8과 도 9에 도시된 다른 실시 예에 따라, 마이크로프로세서(22)는 하나의 시드 테이블(ST21)에 포함된 복수의 존들(ZONE0~ZONE15) 중에서 어느 하나의 존을 선택하는 동작 및/또는 선택된 존에 포함된 하나 또는 그 이상의 엔트리들 중에서 어느 하나의 엔트리를 선택할 수 있는 엔트리 포인터를 변경하는 동작을 수행할 수 있다. 실시예에 따라, 하나의 시드 테이블(ST21)은 독립적인 복수의 존들로 파티션 (partition)될 수 있다.
이때, 마이크로프로세서(22)는 현재 프로그램될 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트를 이용하여 복수의 존들 중에서 어느 하나를 선택할 수 있다.
버퍼(24)는 DRAM(dynamic random access memory), SRAM(static random access memory), 또는 듀얼-포트(dual-port) SRAM와 같은 휘발성(volatile) 메모리로 구현될 수 있다.
실시 예에 따라, 복수의 시드 테이블들은 불휘발성 메모리 장치(40)의 메모리 셀 어레이(140)에 저장되어 있거나 또는 ROM(26)에 저장되어 있을 수 있다. 이 경우, 메모리 셀 어레이(140) 또는 ROM(26)에 저장된 상기 복수의 시드 테이블들 각각은 마이크로프로세서(22)의 제어에 따라 버퍼(24)로 로딩될 수 있다. 이때, 복수의 페이지들(42-1~42-N)이 복수의 그룹들로 그룹핑될 때, 상기 복수의 시드 테이블들 각각은 상기 복수의 그룹들 각각에 대응될 수 있다.
다른 실시 예에 따라, 복수의 존들(ZONE0~ZONE15)을 포함하는 하나의 시드 테이블(ST21)은 메모리 셀 어레이(140) 또는 ROM(26)에 저장될 수 있다. 이 경우, 메모리 셀 어레이(140) 또는 ROM(26)에 저장된 상기 하나의 시드 테이블(ST21)은 마이크로프로세서(22)의 제어에 따라 버퍼(24)로 로딩될 수 있다.
예컨대, 페이지별 시드 테이블 또는 하나의 시드 테이블은 메모리 컨트롤러 (20)의 파워-업(power-up) 동작 동안에 버퍼(24)로 로딩되거나 또는 메모리 컨트롤러(20)의 동작 동안에 실시간으로 버퍼(24)로 로딩될 수 있다.
ROM(26)은 메모리 컨트롤러(20)의 동작에 필요한 프로그램 코드를 저장한다. 상술한 바와 같이, ROM(26)에는 페이지별로 할당된 시드 테이블 또는 하나의 시드 테이블이 저장될 있다.
호스트(HOST)와 메모리 컨트롤러(20)는 호스트 인터페이스(29)를 통하여 통신할 수 있다. 호스트(HOST)는 프로그램 요구(program request)와 불휘발성 메모리 장치(40)에 프로그램될 데이터를 호스트 인터페이스(29)를 통하여 메모리 컨트롤러 (20)로 전송할 수 있다. 이때, 메모리 컨트롤러(20)는 상기 프로그램 요구에 따라 상기 데이터가 저장될 불휘발성 메모리 장치(40)의 페이지의 페이지 어드레스 및/또는 상기 페이지에 상응하는 워드 라인 어드레스를 생성할 수 있다.
메모리 컨트롤러(20)와 불휘발성 메모리 장치(40)는 메모리 인터페이스(30)를 통하여 서로 통신할 수 있다.
불휘발성 메모리 장치(40)의 메모리 셀 어레이(140)는 복수의 메모리 블록들 (memory block)을 포함하고, 상기 복수의 메모리 블록들 각각은 복수의 페이지들 (42-1~42-N)을 포함하고, 복수의 페이지들(42-1~42-N) 각각은 복수의 불휘발성 메모리 셀들, 예컨대, NAND 플래시 메모리 셀들을 포함한다. 상기 NAND 플래시 메모리 셀들 각각은 1-비트 또는 그 이상의 비트들을 저장할 수 있다.
불휘발성 메모리 장치(40), 예컨대 NAND 플래시 메모리 장치에서, 프로그램 동작 또는 리드 동작은 페이지(page) 단위로 수행되고, 이레이즈 동작은 메모리 블록(memory block) 단위로 수행된다.
여기서 페이지(page)는 하나의 워드 라인에 접속된 복수의 불휘발성 메모리 셀들, 예컨대 NAND 플래시 메모리 셀들로 정의되는 메모리 영역을 의미할 수 있다.
예컨대, 상기 NAND 플래시 메모리 셀들 각각이 1-비트를 저장할 수 있는 SLC (single level cell)인 경우, 하나의 워드 라인은 하나의 페이지로 정의될 수 있다.
상기 NAND 플래시 메모리 셀들 각각이 2-비트 이상을 저장할 수 있는 MLC (multi level cell)인 경우, 하나의 워드 라인은 상기 하나의 워드 라인에 접속된 복수의 MLC들 각각에 프로그램되는 비트 수와 동일한 페이지 수를 갖는 것으로 정의될 수 있다.
예컨대, 상기 복수의 MLC들 각각이 2-비트 MLC인 경우, 상기 하나의 워드 라인은 두 개의 페이지들, 예컨대 제1페이지와 제2페이지를 포함하고, 상기 복수의 MLC들 각각이 3-비트 MLC인 경우, 상기 하나의 워드 라인은 세 개의 페이지들, 예컨대 제1페이지, 제2페이지, 및 제3페이지를 포함하다.
상기 제1페이지는 LSB(least significant bit) 페이지를 의미하고, 상기 제2페이지는 MSB(most significant bit) 페이지를 의미하고, 상기 제3페이지는 CSB (center significant bit) 페이지를 의미할 수 있다.
도 2는 도 1에 도시된 메모리 시스템을 포함하는 멀티-칩 패키지의 일 실시 예를 나타낸다.
도 2를 참조하면, 멀티-칩 패키지(11)는 회로 기판(11-1), 예컨대 PCB (printed circuit board) 위에 마운트된(mounted) 또는 적층된(stacked) 메모리 컨트롤러(20)와 메모리 컨트롤러(20) 위에 마운트된 또는 적층된 불휘발성 메모리 장치(40)를 포함한다. 메모리 컨트롤러(20)는 본딩 와이어들(11-2)과 솔더 볼들(11-3)을 통하여 외부 장치와 통신할 수 있다. 또한, 메모리 컨트롤러(20)와 불휘발성 메모리 장치(40)는 본딩 와이어들(11-4)을 통하여 통신할 수 있다.
도 2에서는 설명의 편의를 위하여, 불휘발성 메모리 장치(40)가 메모리 컨트롤러(20) 위에 형성된 예를 도시하였으나, 실시 예에 따라 두 장치들(20과 30)의 구현 위치가 서로 바뀔 수 있다.
또한, 메모리 컨트롤러(20)와 불휘발성 메모리 장치(40)는 본딩 와이어들 (11-4) 이외의 접속 수단을 통하여 서로 통신할 수 있고, 메모리 컨트롤러(20)와 솔더 볼들(11-3)은 본딩 와이어들(11-2) 이외의 접속 수단을 통하여 서로 접속될 수 있다. 상기 접속 수단은 수직 전기 소자(vertical electrical element), 예컨대 TSV(through silicon via)로 구현될 수도 있다.
도 3은 도 1에 도시된 메모리 시스템을 포함하는 멀티-칩 패키지의 다른 실시 예를 나타낸다.
도 3을 참조하면, 멀티-칩 패키지(13)는 회로 기판(13-1), 예컨대 PCB 위에 접속된 메모리 컨트롤러(20)와 불휘발성 메모리 장치(40)를 포함한다. 메모리 컨트롤러(20)와 불휘발성 메모리 장치(40)는 본딩 와이어들(13-2)을 통하여 서로 통신하고, 메모리 컨트롤러(20)와 불휘발성 메모리 장치(40) 각각은 본딩 와이어들(13-3)과 솔더 볼들(13-4)를 통하여 외부 장치와 통신할 수 있다.
실시 예에 따라, 메모리 컨트롤러(20)와 불휘발성 메모리 장치(40)는 본딩 와이어들(13-2) 이외의 접속 수단을 통하여 서로 통신할 수 있다. 상기 접속 수단은 수직 전기 소자, 예컨대 TSV(through silicon via)로 구현될 수도 있다.
예컨대, 메모리 컨트롤러(20)와 불휘발성 메모리 장치(40) 각각이 수직 전기 소자들을 통하여 회로 기판(13-1)에 접속될 때, 메모리 컨트롤러(20)와 불휘발성 메모리 장치(40)는 상기 수직 전기 소자들과 회로 기판(13-1)을 통하여 서로 통신할 수 있다.
각각의 칩(chip)으로 구현된 메모리 컨트롤러(20)와 불휘발성 메모리 장치 (40)는 PoP(Package On Package), BGAs(Ball Grid Arrays), CSPs(Chip Scale Packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-Line Package), Die in Waffle Pack, Din in Wafer Form, COB(Chip On Board), CERDIP(CERamic Dual In-Line Package), MQFP(plastic metric quad flat pack), TQFP(Thin Quad FlatPack), SOIC(small-outline integrated circuit), SSOP(shrink small outline package), TSOP(thin small outline), SIP(system in package), MCP(multi chip package), WFP(wafer-level fabricated package), 또는 WSP (wafer-level processed stack package) 등과 같은 패키지로 구현될 수 있다.
도 4는 도 1에 도시된 메모리 인터페이스의 일 실시 예에 따른 블록도를 나타낸다. 도 4를 참조하면, 도 1에 도시된 메모리 인터페이스(30)의 일 예로서 구현된 메모리 인터페이스(30A)는 데이터 변환 장치로서 사용될 수 있다.
데이터 변환 장치(30A)는 데이터 경로(data path)에 따라 랜더마이저 (randomizer)로서 또는 디랜더마이저(de-randomizer)로서 사용될 수 있다.
데이터 변환 장치(30A)는 의사 난수 생성기(pseudo random number generator; 32)와 모듈로 연산기(modulo operator; 34)를 포함한다.
의사 난수 생성기(32)는 페이지별로 할당된(assigned) 시드 테이블에 포함된 시드(SEED) 또는 페이지별로 할당된 존(zone)에 포함된 시드(SEED)를 이용하여 의사 난수(또는 의사 난수 시퀀스; RS)를 생성한다. 실시 예에 따라, 의사 난수 생성기(32)는 LFSR(linear feedback shift register)로 구현될 수 있으며, 상기 LFSR은 시드(SEED)를 이용하여 피드백 다항식(feedback polynomial)을 결정한다. 따라서 의사 난수(RS)는 상기 피드백 다항식에 따라 결정된다. 상기 LFSR은 피보나치 (Fibonacci) LFSR 또는 갈루아(Galois) LFSR로 구현될 수 있다.
의사 난수 생성기(32)에 포함된 구성 요소들에 따라, 의사 난수 생성기(32)는 선형 의사 난수(RS) 또는 비선형 의사 난수(RS)를 발생할 수 있다.
모듈로 연산기(34)는 의사 난수(RS)와 현재 프로그램될 페이지에 프로그램될 데이터(DATA1)를 모듈로 연산(modulo operation)하여 랜더마이즈된 데이터(RDATA)를 발생한다.
의사 난수(RS)를 이용하여 데이터(DATA1)를 랜더마이즈할 때, 모듈로 연산기 (34)는 의사 난수(RS)와 데이터(DATA1)를 모듈로 덧셈(modulo addition)하여 랜더마이즈된 데이터(RDATA)를 생성한다.
의사 난수(RS)를 이용하여 랜더마이즈된 데이터(RRDATA2)를 디랜더마이즈할 때, 모듈로 연산기(34)는 랜더마이즈된 데이터(RRDATA2)로부터 의사 난수(RS)를 모듈로 뺄셈(modulo subtraction)하여 데이터(DATA2)를 생성한다.
모듈로-2 덧셈 결과와 모듈로-2 뺄셈 결과는 서로 동일하므로, 의사 난수 (RS)가 이진 시퀀스(binary sequence)일 때, 모듈로 연산기(34)는 배타 논리합 게이트(exclusive OR gate)로 구현될 수 있다.
데이터 변환 장치(30A)는 에러 정정 코드(error correction code(ECC)) 블록(36)을 더 포함할 수 있다.
프로그램 동작 동안, ECC 블록(36)은 랜더마이즈된 데이터(RDATA)에 ECC 패리티 비트들을 부가하고, 상기 ECC 패리티 비트들을 포함하는 랜더마이즈된 데이터 (ERDATA)를 생성한다.
또한, 리드 동작 동안, ECC 블록(36)은 랜더마이즈된 데이터(RRDATA1)와 ECC 패리티 비트들을 수신하고, 상기 ECC 패리티 비트들을 이용하여 랜더마이즈된 데이터(RRDATA1)에 포함된 적어도 하나의 에러를 정정하고, 에러 정정된 랜더마이즈된 데이터(RRDATA2)를 모듈로 연산기(34)로 출력한다.
모듈로 연산기(34)는 에러 정정된 랜더마이즈된 데이터(RRDATA2)로부터 의사 난수(RS)를 모듈로 뺄셈하여 데이터(DATA2)를 생성한다.
도 5는 도 1에 도시된 메모리 인터페이스의 다른 실시 예에 따른 블록도를 나타낸다. 도 5를 참조하면, 도 1에 도시된 메모리 인터페이스(30)의 다른 예로서 구현된 메모리 인터페이스(30B)는 데이터 변환 장치로서 사용될 수 있다.
제1모듈로 연산기(34-1)와 제2모듈로 연산기(34-2)는 하나의 의사 난수 발생기(32)를 공유한다.
프로그램 동작 동안, 제1레벨, 예컨대 하이 레벨을 갖는 프로그램 인에이블 신호(WE)에 따라 인에이블된 제1모듈로 연산기(34-1)는 의사 난수(RS)를 이용하여 데이터(DATA1)를 랜더마이즈된 데이터(RDATA)로 랜더마이즈할 수 있다.
리드 동작 동안, 제1레벨을 갖는 리드 인에이블 신호(RE)에 따라 인에이블된 제2모듈로 연산기(34-2)는 랜더마이즈된 데이터(RRDATA2)를 의사 난수(RS)를 이용하여 데이터(DATA2)로 디랜더마이즈할 수 있다.
프로그램 인에이블 신호(WE)가 제2레벨, 예컨대 로우 레벨로부터 제1레벨로 변경되는 시점과 리드 인에이블 신호(RE)가 상기 제2레벨로부터 제1레벨로 변경되는 시점을 적절히 조절할 수 있다면, 상기 프로그램 동작과 상기 리드 동작은 서로 다른 시점에 또는 동시에 수행될 수 있다.
제1모듈로 연산기(34-1)는 모듈로 덧셈을 수행할 수 있고, 제2모듈로 연산기 (34-2)는 모듈로 뺄셈을 수행할 수 있다. 실시 예에 따라, 의사 난수(RS)가 이진 시퀀스일 때 각 모듈로 연산기(34-1과 34-3)는 배타 논리합 게이트로 구현될 수 있다. 데이터 변환 장치(30B)는 ECC 블록(36)을 더 포함할 수 있다.
도 6은 페이지별로 할당된 시드 테이블들의 일 실시 예를 나타낸다.
도 6에는 설명의 편의를 위하여, 각각이 4개의 페이지들 각각에 할당된 4개의 시드 테이블들(ST1~ST4)이 도시되고 있고, 4개의 시드 테이블들(ST1~ST4) 각각은 복수의 엔트리들(ENTRY11~ENTRY1m, ENTRY21~ENTRY2l, ENTRY31~ENTRY3k, 및 ENTRY41~ENTRY4p)을 포함한다. 이때, m, l, k, 및 p는 자연수이다.
복수의 엔트리들(ENTRY11~ENTRY1m, ENTRY21~ENTRY2l, ENTRY31~ENTRY3k, 및 ENTRY41~ENTRY4p) 각각은 도 4 또는 도 5에 도시된 의사 난수 생성기(32)에서 사용될 시드 값들(이를 '시드'라 한다)을 포함한다.
도 6에서는 설명의 편의를 위하여 각 엔트리 포인터(ENTRY_PNT1~ENTRY_PNT4)가 각 시드 테이블(ST1~ST4)의 첫 번째 엔트리(ENTRY11, ENTRY21, ENTRY31, 및 ENTRY41)를 디폴트(default)로 지정하는 것을 도시한다. 그러나, 각 엔트리 포인터 (ENTRY_PNT1~ENTRY_PNT4)는 도 1의 마이크로프로세서(22)의 제어에 따라 복수의 엔트리들 중에서 어느 하나의 엔트리를 지정할 수 있도록 설정될 수 있다.
예컨대, 호스트(HOST)로부터 제1데이터를 프로그램하라는 요청이 입력되면, 마이크로프로세서(22)는 상기 요청에 응답하여 상기 제1데이터를 제1페이지(42-1)에 프로그램하기 위하여 제1어드레스, 예컨대 제1페이지 어드레스 또는 제1페이지(42-1)에 상응하는 제1워드 라인 어드레스를 생성하고, 생성된 제1어드레스의 적어도 일부 비트를 이용하여 복수의 시드 테이블들(ST1~ST4) 중에서 제1시드 테이블 (ST1)을 선택한다.
그리고, 마이크로프로세서(22)는 제1시드 테이블(ST1)에 포함된 복수의 엔트리들(ENTRY11~ENTRY1m) 중에서 현재 엔트리 포인터(ENTRY_PNT1)가 지정하는 엔트리 (ENTRY11)을 상기 제1데이터를 프로그램하기 위한 시드로서 선택하고, 엔트리 포인터(ENTRY_PNT1)를 다음 엔트리(ENTRY12)를 지정하기 위하여 증가시킨다.
호스트(HOST)로부터 제2데이터, 제3데이터, 또는 제4데이터를 프로그램하라는 요청이 입력되면, 마이크로프로세서(22)는 상술한 바와 같은 방법으로 각각의 시드 테이블(ST2, ST3, 또는 ST4)에서 각각의 현재 엔트리 포인터(ENTRY_PNT2, ENTRY_PNT3, 또는 ENTRY_PNT4)가 지정하는 각각의 엔트리(ENTRY21, ENTRY31, 또는 ENTRY41)을 상기 제1데이터, 상기 제2데이터, 또는 상기 제3데이터를 프로그램하기 위한 각각의 시드로서 선택하고, 각각의 현재 엔트리 포인터(ENTRY_PNT2, ENTRY_PNT3, 또는 ENTRY_PNT4)를 증가시킨다.
메모리 컨트롤러(20)가 리셋될 때, 프로그램 동작에 따라 증가한 각각의 엔트리 포인터는 각각의 디폴트 값(ENTRY11, ENTRY21, ENTRY31, 및 ENTRY41)으로 리셋된다.
예컨대, 시드 테이블들(ST1~ST4)이 4개일 때, T(T는 자연수)번째 워드 라인에 접속된 복수의 메모리 셀들에 페이지 데이터를 프로그램하기 위한 시드로서 제1시드 테이블(ST1)에 포함된 복수의 엔트리들(ENTRY11~ENTRY1m) 중에서 어느 하나가 선택될 수 있고, (T+1)번째 워드 라인에 접속된 복수의 메모리 셀들에 페이지 데이터를 프로그램하기 위한 시드로서 제2시드 테이블(ST2)에 포함된 복수의 엔트리들 (ENTRY21~ENTRY2l) 중에서 어느 하나가 선택될 수 있고, (T+2)번째 워드 라인에 접속된 복수의 메모리 셀들에 페이지 데이터를 프로그램하기 위한 시드로서 제3시드 테이블(ST3)에 포함된 복수의 엔트리들 (ENTRY31~ENTRY3k) 중에서 어느 하나가 선택될 수 있고, (T+3)번째 워드 라인에 접속된 복수의 메모리 셀들에 페이지 데이터를 프로그램하기 위한 시드로서 제4시드 테이블(ST4)에 포함된 복수의 엔트리들 (ENTRY41~ENTRY4p) 중에서 어느 하나가 선택될 수 있다.
예컨대, 첫 번째 워드 라인에 접속된 복수의 메모리 셀들에 페이지 데이터를 프로그램하기 위한 시드로서 제1시드 테이블(ST1)에 포함된 복수의 엔트리들 (ENTRY11~ENTRY1m) 중에서 제1엔트리(ENTRY11)가 선택될 수 있고, 다섯 번째 워드 라인에 접속된 복수의 메모리 셀들에 페이지 데이터를 프로그램하기 위한 시드로서 제1시드 테이블(ST1)에 포함된 복수의 엔트리들 (ENTRY11~ENTRY1m) 중에서 제2엔트리(ENTRY12)가 선택될 수 있다.
도 7은 페이지별로 할당된 시드 테이블들의 다른 실시 예를 나타낸다.
도 7에 도시된 바와 같이, 하나의 워드 라인에 접속된 복수의 3-비트 MLC들 각각이 서로 영향을 주는 경우, 페이지별로 서로 다른 시드 테이블(ST11, ST12, 또는 ST13)이 사용될 수 있다. 복수의 시드 테이블들(ST11~ST13) 각각은 페이지 어드레스의 적어도 일부 비트들을 이용하여 선택될 수 있다.
예컨대 LSB 페이지에 LSB 데이터가 프로그램될 때, 마이크로프로세서(22)는 LSB 시드 테이블(ST11)에 포함된 복수의 엔트리들(ENTRYL01, ENTRYL02, ENTRYL03,...) 중에서 현재 엔트리 포인터(ENTRY_PNTL)가 지정하는 엔트리 (ENTRYL01)를 선택한 후 현재 엔트리 포인터(ENTRY_PNTL)를 증가시킨다.
CSB 페이지에 CSB 데이터가 프로그램될 때, 마이크로프로세서(22)는 CSB 시드 테이블(ST12)에 포함된 복수의 엔트리들(ENTRYC01, ENTRYC02, ENTRYC03,...) 중에서 현재 엔트리 포인터(ENTRY_PNTC)가 지정하는 엔트리(ENTRYC01)를 선택한 후 현재 엔트리 포인터(ENTRY_PNTC)를 증가시킨다.
MSB 페이지에 MSB 데이터가 프로그램될 때, 마이크로프로세서(22)는 MSB 시드 테이블(ST13)에 포함된 복수의 엔트리들(ENTRYM01, ENTRYM02, ENTRYM03,...) 중에서 현재 엔트리 포인터(ENTRY_PNTM)가 지정하는 엔트리(ENTRYM01)를 선택한 후 현재 엔트리 포인터(ENTRY_PNTM)를 증가시킨다.
각 엔트리 포인터(ENTRY_PNTL, ENTRY_PNTC, 및 ENTRY_PNTM)를 어떻게 및/또는 얼마만큼 증가시킬지는 마이크로프로세서(22)에 의하여 결정될 수 있다.
메모리 컨트롤러(20)가 리셋될 때, 프로그램 동작에 따라서 증가한 각각의 엔트리 포인터(ENTRY_PNTL, ENTRY_PNTC, 및 ENTRY_PNTM)는 각각의 디폴트 값 (ENTRYL01, ENTRYC01, 및 ENTRYC01)으로 리셋된다.
도 8은 페이지별로 할당된 존들(zones)을 포함하는 하나의 시드 테이블을 나타내고, 도 9는 도 8에 도시된 하나의 존(zone)에 포함된 엔트리들을 나타낸다.
도 8과 도 9를 참조하면, 하나의 시드 테이블(ST21)은 복수의 존들 (ZONE0~ZONE15)을 포함하고, 복수의 존들(ZONE0~ZONE15) 각각은 복수의 엔트리들을 포함한다. 도 8과 도 9에서는 설명의 편의를 위하여 16개의 존들(ZONE0~ZONE15)을 포함하는 하나의 시드 테이블(ST21)이 도시되어 있으나 이는 예시적인 것에 불과하다. 16개의 존들(ZONE0~ZONE15) 각각은 페이지 어드레스(PADD)의 하위 비트들 (PADD[3:0])에 따라 선택되고, 16개의 존들(ZONE0~ZONE15) 각각에 포함된 복수의 엔트리들 중에서 어느 하나의 엔트리는 현재 엔트리 포인터에 의하여 지정된다.
예컨대, 5개의 엔트리들(ENTRY_Z11~ENTRY_Z15)을 포함하는 제1존(ZONE0)은 페이지 어드레스의 하위 비트들(PADD[3:0]=0000)에 따라 선택되고, 엔트리 (ENTRY_Z11)는 엔트리 포인터(ENTRY_PNTZ0)에 따라 선택된다. 엔트리(ENTRY_Z11)가 선택된 후, 엔트리 포인터(ENTRY_PNTZ0)는 다음 엔트리(ENTRY_Z12)를 지정하기 위하여 증가한다.
즉, 프로그램 동작에 따라 엔트리가 선택된 후, 엔트리 포인터(ENTRY_PNTZ0)는 다음 엔트리를 지정하기 위하여 증가한다. 메모리 컨트롤러(20)가 리셋될 때마다, 엔트리 포인터 (ENTRY_PNTZ0)는 디폴트 값, 예컨대 ENTRY_Z11로 초기화된다.
상술한 바와 같이, 하나의 시드 테이블(ST21)은 불휘발성 메모리 장치(40)의 메모리 셀 어레이(140)에 저장되어 있거나 또는 메모리 컨트롤러(20)의 ROM(26)에 저장되어 있다가, 마이크로프로세서(22)의 제어에 따라 버퍼(24)에 로딩되거나 또는 마이크로프로세서(22)에 의하여 참조(reference)될 수 있다.
도 10은 도 1에 도시되고 2차원적인 구조를 갖는 불휘발성 메모리 장치의 블록도를 나타낸다.
도 1과 도 10을 참조하면, 불휘발성 메모리 장치(40), 예컨대 NAND 플래시 메모리 장치는 데이터를 저장하기 위한 메모리 셀 어레이(140), 컨트롤 로직(43), 전압 발생기(44), 로우 디코더(45), 페이지 버퍼 블록(46), 컬럼 디코더(47), Y-게이팅 회로(48), 및 입출력 블록(49)을 포함한다.
메모리 셀 어레이(140)는 복수의 NAND 메모리 셀 스트링들(strings)을 포함한다. 상기 복수의 NAND 메모리 셀 스트링들 각각은 직렬로 접속된 복수의 NAND 메모리 셀들(41)을 포함한다.
예컨대, 제1NAND 메모리 셀 스트링은 비트 라인(BL1)에 접속된 제1선택 트랜지스터(또는, 스트링 선택 트랜지스터(string selection transistor))와 공통 소스 라인(common source line(CSL))에 접속된 제2선택 트랜지스터(또는, 접지 선택 트랜지스터(ground selection transistor)) 사이에 직렬로 접속된 복수의 NAND 메모리 셀들(41)을 포함한다.
상기 제1선택 트랜지스터의 게이트는 스트링 선택 라인(string selection line(SSL))에 접속되고, 상기 복수의 NAND 메모리 셀들(41) 각각의 게이트는 복수의 워드 라인들(WL0~WL63) 각각에 접속되고, 상기 제2선택 트랜지스터의 게이트는 접지 선택 라인(ground selection line(GSL))에 접속된다.
상술한 바와 같이, 메모리 셀들 각각이 SLC일 때, 각 워드 라인(예컨대, WL0~WL3)은 각 페이지(PAGE0~PAGE3)를 정의할 수 있다.
도 10에는 64개의 워드 라인들(WL0~WL63)을 포함하는 메모리 셀 어레이(140)가 도시되어 있으나, 워드 라인들의 개수에 한정되는 것은 아니다.
도 11은 도 1에 도시되고 3차원적인 구조를 갖는 불휘발성 메모리 장치의 블록도를 나타낸다. 도 1과 도 11에 도시된 바와 같이, 각 NAND 메모리 셀 스트링 (40'-1, 40'-2, ..., 40'-t; t는 자연수)은 3차원적으로 서로 다른 평면에 배치될 수 있다.
도 11에 도시된 바와 같이, 제1NAND 메모리 셀 스트링(40'-1)은 제1레이어 (41-1)에 배치될 수 있고, 제2NAND 메모리 셀 스트링(40'-2)은 제1레이어(41-1)와 서로 다른 제2레이어(41-2)에 배치될 수 있고, 제tNAND 메모리 셀 스트링(40'-t)은 제2레이어(41-2)와 서로 다른 레이어(41-k)에 3차원적으로 배치될 수 있다.
복수의 레이어들(41-1~41-t)은 웨이퍼 적층(wafer stack), 칩(chip) 적층, 또는 셀(cell) 적층을 통하여 형성될 수 있다. 복수의 레이어들(41-1~41-t)은 TSV (through-silicon via)를 포함하는 전기 수직 소자(electrical vertical element), 펌프(bump) 또는 와이어 본딩(wire bonding)을 통하여 접속될 수 있다. 복수의 레이어들(41-1~41-t) 각각은 복수의 셀 스트링들을 포함한다.
도 11에 도시된 바와 같이, 각 NAND 메모리 셀 스트링(40'-1, 40'-2, ..., 40'-t)은 복수의 워드 라인들(WL0-WL63), CSL, 및 비트 라인(BL1)을 공유할 수 있다.
본 명세서에서 사용되는 메모리 셀 어레이(140과 140')는 도 10과 도 11에 도시된 2차원 메모리 셀 어레이(140)와 도 11에 도시된 3차원 메모리 셀 어레이 (140')를 총괄적으로 의미한다.
회로, 로직, 코드, 또는 이들의 조합으로 구현될 수 있는 컨트롤 로직(43)은 NAND 플래시 메모리 장치(140)의 데이터 처리 동작, 예컨대 프로그램 동작, 리드 동작, 및 이레이즈 동작을 제어한다. 예컨대, 컨트롤 로직(43)은 메모리 컨트롤러 (20)로부터 출력된 복수의 제어 신호들에 따라 상기 데이터 처리 동작을 수행하기 위하여 각 구성 요소(44~49)의 동작을 제어한다.
전압 발생기(44)는 프로그램 동작을 수행하기 위해 필요한 프로그램 전압을 포함하는 복수의 전압들, 리드 동작을 수행하기 위해 필요한 리드 전압을 포함하는 복수의 전압들, 또는 이레이즈 동작을 수행하기 위해 필요한 이레이즈 전압을 포함하는 복수의 전압들을 발생할 수 있다. 전압 발생기(44)는 각각의 동작에 필요한 복수의 전압들을 로우 디코더로 출력할 수 있다.
로우 디코더(45)는, 컨트롤 로직(43)으로부터 출력된 로우 어드레스에 따라, 전압 발생기(44)로부터 출력된 복수의 전압들을 복수의 워드 라인들(WL0~WL63)로 공급한다.
컬럼 디코더(47)는 컨트롤 로직(43)의 제어 하에 컬럼 어드레스를 디코딩하여 복수의 선택 신호들을 Y-게이팅 회로(48)로 출력한다.
페이지 버퍼 블록(46)은 복수의 페이지 버퍼들을 포함한다. 상기 복수의 페이지 버퍼들 각각은 복수의 비트 라인들(BL1~BLx, x는 자연수) 각각에 접속된다.
상기 복수의 페이지 버퍼들 각각은 컨트롤 로직(43)의 제어에 따라 프로그램 동작 동안에는 메모리 셀 어레이(140)에 데이터를 프로그램하기 위한 드라이버로써 동작할 수 있다. 또한, 상기 복수의 페이지 버퍼들 각각은 컨트롤 로직(43)의 제어에 따라 리드 동작 동안 또는 검증(verify) 동작 동안에는 복수의 비트 라인들 (BL1~BLx) 각각의 전압 레벨을 감지 증폭할 수 있는 감지 증폭기로써 동작할 수 있다.
Y-게이팅 회로(48)는 컬럼 디코더(47)로부터 출력된 복수의 선택 신호들에 응답하여 페이지 버퍼 블록(46)과 입출력 블록(49) 사이에서 데이터(DATA)의 전송을 제어할 수 있다.
입출력 블록(49)은 메모리 컨트롤러(20)로부터 입력된 데이터(DATA)를 Y-게이팅 회로(48)로 전송하거나 또는 Y-게이팅 회로(48)로부터 출력된 데이터(DATA)를 복수의 입출력 핀들 또는 데이터 버스를 통하여 메모리 컨트롤러(20)로 전송할 수 있다.
도 12a는 페이지별로 할당된 시드 테이블들을 이용하는 도 1에 도시된 메모리 시스템의 동작을 설명하기 위한 흐름도이고, 도 12b는 하나의 시드 테이블에 포함된 복수의 존들을 이용하는 도 1에 도시된 메모리 시스템의 동작을 설명하기 위한 흐름도이다.
도 1부터 도 12b를 참조하여, 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드를 선택하는 메모리 컨트롤러(20)의 동작을 설명하면 다음과 같다.
도 6과 도 7에 도시된 바와 같이, 상기 복수의 시드 그룹들 각각은 서로 다른 시드 테이블(ST1~ST4, 또는 ST11~ST13)에 저장될 수 있고, 도 8에 도시된 바와 같이 하나의 시드 테이블(ST21)에 저장될 수 있다.
메모리 컨트롤로(20)는 파워-업 된다(S110). 이때 이전 프로그램 동작에 따라 증가한 엔트리 포인터(ENTRY_PNT1, ENTRY_PNT2, ENTRY_PNT3, ENTRY_PNT4, ENTRY_PNTL, ENTRY_PNTC, ENTRY_PNTM, 또는 ENTRY_PNTZ0)는 디폴트 값(ENTRY11, ENTRY21, ENTRY31, ENTRY41, ENTRYL01, ENTRYC01, ENTRYM01, 또는 ENTRY_Z11)으로 초기화된다.
메모리 컨트롤러(20)는 호스트(HOST)로부터 출력된 데이터와 프로그램 요구를 수신한다.
실시 예에 따라, 복수의 시드 테이블(ST1~ST4, ST11~ST13)은 파워-업 동작 동안에 버퍼(24)에 로딩되거나 또는 프로그램 동작 동안 실시간으로 버퍼(24)에 로딩될 수 있다(S120).
다른 실시 예에 따라, 하나의 시드 테이블(ST21)은 파워-업 동작 동안에 버퍼(24)에 로딩되거나 또는 프로그램 동작 동안 실시간으로 버퍼(24)에 로딩될 수 있다(S220).
상기 프로그램 요구에 따라 상기 데이터를 불휘발성 메모리 장치(40)에 프로그램하기 위하여, 마이크로프로세서(22)는 상기 데이터가 저장될 페이지에 대한 페이지 어드레스 또는 워드 라인 어드레스를 생성한다.
실시예에 따라, 마이크로프로세서(22)는 상기 페이지 어드레스의 적어도 일부 비트 또는 상기 워드 라인 어드레스의 적어도 일부 비트를 이용하여 복수의 시드 테이블들(ST1~ST4) 중에서 어느 하나를 선택하고, 선택된 시드 테이블에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 시드(SEED)로서 선택하고, 상기 엔트리 포인터를 증가시킨다(S130).
다른 실시예에 따라, 마이크로프로세서(22)는 상기 페이지 어드레스의 적어도 일부 비트 또는 상기 워드 라인 어드레스의 적어도 일부 비트를 이용하여 하나의 시드 테이블(ST21)에 포함된 복수의 존들(ZONE0~ZONE15) 중에서 어느 하나의 존을 선택하고, 선택된 존에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 시드(SEED)로서 선택하고, 상기 엔트리 포인터를 증가시킨다 (S230).
의사 난수 생성기(32)는 마이크로프로세서(22)에 의하여 선택된 시드(SEED)를 이용하여 의사 난수(RS)를 생성한다(S140). 모듈로 연산기(34)는 의사 난수(RS)와 입력 데이터(DATA1)를 모듈로 덧셈하고 그 결과로서 랜더마이즈된 데이터 (RDATA)를 생성한다. 즉, 모듈로 연산기(34)는 의사 난수(RS)를 이용하여 입력 데이터(DATA1)를 랜더마이즈한다(S150).
ECC 블록(36)은 랜더마이즈된 데이터(RDATA)를 이용하여 패리티 비트들을 생성하고(S160), 상기 패리티 비트들을 포함하는 랜더마이즈된 데이터(ERDATA)를 불휘발성 메모리 장치(40)로 출력한다(S170).
예컨대, 마이크로프로세서(22)는 호스트(HOST)로부터 출력된 데이터 또는 스스로 생성한 메타데이터(metadata)를 불휘발성 메모리 장치(40)에 프로그램하기 위해 필요한 어드레스를 생성할 수 있다.
도 13은 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 일 실시 예를 나타낸다.
도 1, 도 2, 도 7, 및 도 13을 참조하면, 전자 장치(electronic device; 100)는 이동 전화기(cellular/mobile phone), 스마트 폰(smart phone), 태블릿 PC (tablet personal computer), PDA(personal digital assistant), 비디오 게임 콘솔(video game console), 또는 휴대용(handheld) 통신 장치로 구현될 수 있다.
전자 장치(100)는 메모리 컨트롤러(20)와 불휘발성 메모리 장치(40)를 포함한다. 메모리 컨트롤러(20)는 프로세서(110)의 제어에 따라 불휘발성 메모리 장치 (40)의 데이터 처리 동작, 예컨대 프로그램(program) 동작, 이레이즈(erase) 동작, 또는 리드(read) 동작을 제어할 수 있다.
프로그램 요구에 따라 메모리 컨트롤러(20)는 페이지별로 할당된 시드 테이블에 포함된 시드, 또는 페이지별로 할당된 존에 포함된 시드를 이용하여 의사 난수(RS)를 생성하고, 의사 난수(RS)를 이용하여 데이터(DATA1)를 랜더마이즈하고 랜더마이즈된 데이터(RDATA)를 출력한다. 따라서, 불휘발성 메모리 장치(40)는 랜더마이즈된 데이터를 현재 프로그램될 페이지에 프로그램할 수 있다.
불휘발성 메모리 장치(40)에 프로그램된 데이터는 프로세서(110) 및/또는 메모리 컨트롤러(20)의 제어에 따라 디스플레이(120)를 통하여 디스플레이될 수 있다. 디스플레이(120)는 TFT-LCD(thin film transistor-liquid crystal display), LED(light-emitting diode) 디스플레이, OLED (organic LED) 디스플레이, 또는 AMOLED(active matrix OLED) 디스플레이와 같은 평판 디스플레이(flat panel display)로 구현될 수 있다.
무선 송수신기(130)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(130)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(110)에서 처리될 수 있는 신호로 변경할 수 있다.
따라서, 프로세서(110)는 무선 송수신기(130)로부터 출력된 신호를 처리하고 처리된 신호를 메모리 컨트롤러(20) 또는 디스플레이(120)로 전송할 수 있다. 본 발명의 실시 예에 따른 메모리 컨트롤러(20)는 프로세서(110)에 의하여 처리된 신호를 불휘발성 메모리 장치 (40)에 프로그램할 수 있다.
또한, 무선 송수신기(130)는 프로세서(110)로부터 출력된 신호를 무선 신호로 변경하고, 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다.
입력 장치(140)는 프로세서(110)의 동작을 제어하기 위한 제어 신호 또는 프로세서(110)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
프로세서(110)는 메모리 컨트롤러(20)로부터 출력된 데이터, 무선 송수신기 (130)로부터 출력된 데이터, 또는 입력 장치(140)로부터 출력된 데이터가 디스플레이(120)를 통하여 디스플레이될 수 있도록 디스플레이(120)의 동작을 제어할 수 있다.
실시 예에 따라, 불휘발성 메모리 장치(40)의 동작을 제어할 수 있는 메모리 컨트롤러(20)는 프로세서(110)의 일부로서 구현될 수 있고 또한 프로세서(110)와 별도의 칩으로 구현될 수 있다.
도 14는 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 다른 실시 예를 나타낸다.
도 14에 도시된 전자 장치(200)는 PC(personal computer), 랩탑(laptop) 컴퓨터, 넷-북(net-book), e-리더(e-reader), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
전자 장치(200)는 불휘발성 메모리 장치(40)와, 불휘발성 메모리 장치(40)의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(20)를 포함한다.
프로세서(210)는 입력 장치(220)를 통하여 입력된 데이터에 따라 불휘발성 메모리 장치(10)에 저장된 데이터를 디스플레이(230)를 통하여 디스플레이할 수 있다. 예컨대, 입력 장치(220)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다. 또한, 입력 장치(220)는 다른 장치와 데이터를 인터페이싱할 수 있는 인터페이스일 수 있다.
프로세서(210)는 전자 장치(200)의 전반적인 동작을 제어할 수 있고 메모리 컨트롤러(20)의 동작을 제어할 수 있다.
실시 예에 따라 불휘발성 메모리 장치(40)의 동작을 제어할 수 있는 메모리 컨트롤러(20)는 프로세서(210)의 일부로서 구현될 수 있고 또한 프로세서(210)와 별도의 칩으로 구현될 수 있다.
도 15는 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 또 다른 실시 예를 나타낸다. 도 15에서는 설명의 편의를 위하여 전자 장치(300)와 호스트(330)를 함께 도시한다.
도 15에 도시된 전자 장치(300)는 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 상기 디지털 정보를 저장하기 위하여 사용되는 전자 플래시 메모리 데이터 저장 장치인 메모리 카드는 PC 카드, MMC(multimedia card), e-MMC(embedded MMC), SD(secure digital) 카드, 또는 USB(universal serial bus) 플래시 드라이브(flash drive)를 포함한다.
메모리 카드와 같은 전자 장치(300)는 메모리 컨트롤러(20), 불휘발성 메모리 장치(40), 카드 인터페이스(320)를 포함한다.
메모리 컨트롤러(20)는 불휘발성 메모리 장치(40)와 카드 인터페이스(320) 사이에서 데이터의 교환을 제어할 수 있다.
실시 예에 따라, 카드 인터페이스(320)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(320)는 호스트(330)의 프로토콜에 따라 호스트(330)와 메모리 컨트롤러(20) 사이에서 데이터 교환을 인터페이싱할 수 있다.
실시 예에 따라 카드 인터페이스(320)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스라 함은 호스트(330)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어, 또는 신호 전송 방식을 의미할 수 있다.
전자 장치(300)가 PC(personal computer), 랩탑 컴퓨터, 태블릿(tablet) PC, 디지털 카메라(digital camera), 디지털 오디오 플레이어(digital audio player), 이동 전화기, 비디오 게임 콘솔(video gane console), MP3플레이어, PMP(portable multimedia player), e-북, 또는 디지털 셋-탑 박스(digital set-topn box)와 같은 호스트(330)의 호스트 인터페이스(350)에 접속될 때, 호스트 인터페이스(350)는 마이크로프로세서(340)의 제어에 따라 카드 인터페이스(320)와 메모리 컨트롤러(20)를 통하여 불휘발성 메모리 장치(40)와 데이터 통신을 수행할 수 있다.
도 16은 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 또 다른 실시 예를 나타낸다.
도 16에 도시된 전자 장치(400)는 이미지 처리 장치, 예컨대 디지털 카메라, 디지털 카메라가 부착된 이동 전화기, 디지털 카메라가 부착된 스마트 폰, 또는 디지털 카메라가 부착된 태블릿 PC로 구현될 수 있다.
전자 장치(400)는 불휘발성 메모리 장치(40)와 불휘발성 메모리 장치(40)의 데이터 처리 동작, 예컨대 프로그램 동작, 이레이즈 동작, 또는 리드 동작을 제어할 수 있는 메모리 컨트롤러(20)를 포함한다.
전자 장치(400)의 이미지 센서(420)는 광학 이미지를 디지털 이미지 신호들로 변환하고, 변환된 디지털 이미지 신호들은 프로세서(410) 및/또는 메모리 컨트롤러(20)로 전송된다. 프로세서(410)의 제어에 따라, 상기 변환된 디지털 이미지 신호들은 디스플레이(430)를 통하여 디스플레이되거나 또는 메모리 컨트롤러(20)를 통하여 불휘발성 메모리 장치(40)에 저장될 수 있다.
또한, 불휘발성 메모리 장치(40)에 저장된 데이터는 프로세서(410) 및/또는 메모리 컨트롤러(20)의 제어에 따라 디스플레이(430)를 통하여 디스플레이된다.
실시 예에 따라 불휘발성 메모리 장치(40)의 동작을 제어할 수 있는 메모리 컨트롤러(20)는 프로세서(410)의 일부로서 구현될 수 있고 또한 프로세서(410)와 별개의 칩으로 구현될 수 있다.
도 17은 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 또 다른 실시 예를 나타낸다.
도 17을 참조하면, 전자 장치(500)는 불휘발성 메모리 장치(40)와 불휘발성 메모리 장치(40)의 동작을 제어할 수 있는 메모리 컨트롤러(20)를 포함한다.
전자 장치(500)는 CPU(central processing unit; 510)의 동작 메모리 (operation memory)로서 사용될 수 있는 메모리 장치(550)를 포함한다. 메모리 장치(550)는 ROM(read only memory)과 같은 불휘발성 메모리로 구현될 수 있고 SRAM (Static random access memory)과 같은 휘발성 메모리로 구현될 수 있다.
전자 장치(500)에 접속된 호스트(HOST)는 메모리 컨트롤러(20)와 호스트 인터페이스(540)를 통하여 불휘발성 메모리 장치(40)와 데이터 통신을 수행할 수 있다.
CPU(510)의 제어에 따라 ECC 블록(530)은 메모리 컨트롤러(20)를 통하여 불휘발성 메모리 장치(40)로부터 출력된 데이터에 포함된 에러 비트를 검출하고, 상기 에러 비트를 정정하고, 에러 정정된 데이터를 호스트 인터페이스(540)를 통하여 호스트(HOST)로 전송할 수 있다. 실시 예에 따라 ECC 블록(530)은 전자 장치(500)에 포함되지 않을 수도 있다.
CPU(510)는 버스(501)를 통하여 메모리 컨트롤러(20), ECC 블럭(530), 호스트 인터페이스(540), 및 메모리 장치(550) 사이에서 데이터 통신을 제어할 수 있다.
전자 장치(500)는 플래시 메모리 드라이브, USB 메모리 드라이브, IC-USB 메모리 드라이브, 또는 메모리 스틱(memory stick)으로 구현될 수 있다.
도 18은 도 1에 도시된 메모리 시스템을 포함하는 전자 장치의 또 다른 실시 예를 나타낸다.
도 18을 참조하면, 전자 장치(600)는 SSD(solid state drive)와 같은 데이터 처리 장치로 구현될 수 있다.
전자 장치(600)는 복수의 솔리드 스테이트 메모리 장치들(40), 메모리 컨트롤러(20), 휘발성 메모리 장치(630), 및 버퍼 매니저(620)를 포함한다.
메모리 컨트롤러(20)는 복수의 솔리드 스테이트 메모리 장치들(40) 각각의 데이터 처리 동작을 제어할 수 있다. 복수의 솔리드 스테이트 메모리 장치들(40) 각각은 도 1과 도 10에 도시된 불휘발성 메모리 장치, 예컨대 NAND 플래시 메모리 장치로 되고, 복수의 페이지들을 포함한다. 메모리 컨트롤러(20)는 랜더마이즈된 데이터를 복수의 솔리드 스테이트 메모리 장치들(40) 중에서 하나의 포함된 페이지에 프로그램할 수 있다.
휘발성 메모리 장치(630)는 DRAM으로 구현될 수 있고 메모리 컨트롤러(20)와 호스트(640) 사이에서 주고 받는 데이터를 일시적으로 저장한다.
버퍼 매니저(620)는 휘발성 메모리 장치(630) 및/또는 메모리 컨트롤러(20)의 데이터 버퍼링 동작을 제어할 수 있다.
도 19는 도 18에 도시된 전자 장치를 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
도 18과 도 19를 참조하면, RAID(redundant array of independent disks) 시스템으로 구현될 수 있는 데이터 처리 장치(700)는 RAID 컨트롤러(710)와 복수의 전자 장치들(600-1~600-n; n는 자연수)을 포함할 수 있다.
전자 장치들(600-1~600-n) 각각은 도 18에 도시된 전자 장치(600)이다. 복수의 전자 장치들(600-1~600-n)은 RAID 어레이를 구성할 수 있다. 데이터 처리 장치 (700)는 PC(personal computer), NAS(Network-attached storage) 또는 SSD(solid state drive)로 구현될 수 있다. 전자 장치들(600-1~600-n) 각각은 메모리 모듈 (memory module) 형태로 구현된 메모리 시스템일 수 있다.
프로그램 동작 동안, 호스트(HOST)로부터 출력된 프로그램 요구에 따라 RAID 컨트롤러(710)는 호스트(HOST)로부터 출력된 데이터를 RAID 레벨에 기초하여 복수의 전자 장치(600-1~600-n) 중에서 적어도 어느 하나의 전자 장치로 출력할 수 있다.
리드 동작 동안, RAID 컨트롤러(710)는 호스트(HOST)로부터 출력된 리드 명령에 따라 복수의 전자 장치들(600-1~600-n) 중에서 적어도 어느 하나의 전자 장치로부터 리드진 데이터를 호스트(HOST)로 전송할 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 메모리 시스템
20: 메모리 컨틀롤러
22: 마이크로프로세서
24: 버퍼
26: ROM
29: 호스트 인터페이스
30: 메모리 인터페이스
32: 의사 난수 생성기
34: 모듈로 연산기
26: 에러 정정 코드 블록
40: 불휘발성 메모리 장치
140: 메모리 셀 어레이

Claims (22)

  1. 현재 프로그램될 페이지의 어드레스의 적어도 일부 비트를 이용하여 각각이 복수의 시드들을 저장하는 복수의 시드 그룹들 중에서 상기 페이지에 대한 시드 그룹을 선택하는 단계;
    선택된 시드 그룹에 포함된 복수의 시드들 중에서 엔트리 포인터에 의하여 지정된 시드를 선택하는 단계;
    선택된 시드를 이용하여 의사 난수를 생성하는 단계;
    상기 의사 난수를 이용하여 상기 페이지에 프로그램될 데이터를 랜더마이즈하고, 랜더마이즈된 데이터를 출력하는 단계; 및
    상기 엔트리 포인터에 의하여 지정된 시드가 선택된 후, 상기 엔트리 포인터를 상기 선택된 시드 그룹에 포함된 다음 시드로 증가시키는 메모리 컨트롤러의 동작 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 메모리 컨트롤러가 리셋될 때, 증가된 엔트리 포인터는 디폴트 (default) 값으로 리셋되는 메모리 컨트롤러의 동작 방법.
  4. 제1항에 있어서,
    상기 페이지의 상기 어드레스는 상기 페이지에 대응하는 워드 라인 어드레스인 메모리 컨트롤러의 동작 방법.
  5. 제1항에 있어서,
    상기 복수의 시드 그룹들 각각이 복수의 페이지들 각각에 대응될 때,
    상기 복수의 페이지들의 수는 하나의 워드 라인에 접속된 복수의 멀티-레벨 셀들 각각에 저장되는 비트들의 수와 동일한 메모리 컨트롤러의 동작 방법.
  6. 각각이 서로 다른 시드 테이블(seed table)에 저장된 복수의 시드 그룹들 중에서 현재 프로그램될 페이지의 어드레스의 적어도 일부 비트를 이용하여 상기 페이지에 대한 시드 그룹을 선택하는 단계;
    선택된 시드 그룹에 포함된 복수의 시드들 중에서 엔트리 포인터에 의하여 지정된 시드를 선택하는 단계;
    선택된 시드를 이용하여 의사 난수를 생성하는 단계;
    상기 의사 난수를 이용하여 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 출력하는 단계; 및
    상기 엔트리 포인터에 의하여 지정된 시드가 선택된 후, 상기 엔트리 포인터를 상기 선택된 시드 그룹에 포함된 다음 시드로 증가시키는 메모리 컨트롤러의 동작 방법.
  7. 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 할당된 시드 그룹을 선택하는 단계;
    선택된 시드 그룹에 포함된 시드를 선택하고, 선택된 시드를 이용하여 의사 난수를 생성하는 단계; 및
    상기 의사 난수를 이용하여 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 출력하는 단계를 포함하며,
    상기 복수의 시드 그룹들은 동일한 시드 테이블에 저장되고, 상기 복수의 시드 그룹들 각각이 복수의 엔트리들을 포함하는 복수의 존들 각각에 대응되고, 각 엔트리는 시드를 포함할 때,
    상기 복수의 존들 중에서 상기 시드 그룹에 상응하는 존은 상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트에 따라 선택되고,
    상기 시드는 선택된 존에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리이고,
    상기 선택된 시드 그룹에 포함된 시드를 선택하는 단계는 상기 엔트리 포인터에 의하여 지정된 엔트리가 상기 시드로서 선택된 후, 상기 엔트리 포인터를 상기 선택된 존에 포함된 다음 엔트리로 증가시키는 메모리 컨트롤러의 동작 방법.
  8. 메모리 컨트롤러에 있어서,
    각각이 복수의 시드들을 저장하는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드(seed)를 선택하는 마이크로프로세서; 및
    선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 출력하는 랜더마이저를 포함하며,
    상기 마이크로프로세서는,
    선택된 시드 그룹에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한 후, 상기 엔트리 포인터를 상기 시드 그룹에 포함된 다음 엔트리로 증가시키고,
    상기 메모리 컨트롤러가 리셋될 때, 증가된 엔트리 포인터는 디폴트 값으로 리셋되고,
    상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트를 이용하여 상기 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 상기 시드 그룹을 선택하는 메모리 컨트롤러.
  9. 삭제
  10. 제8항에 있어서, 상기 복수의 시드 그룹들 각각은 서로 다른 시드 테이블에 저장되는 메모리 컨트롤러.
  11. 제8항에 있어서,
    상기 복수의 시드 그룹들이 동일한 시드 테이블에 저장되고, 상기 복수의 시드 그룹들 각각이 복수의 엔트리들을 포함하는 복수의 존들 각각에 대응될 때,
    상기 마이크로프로세서는,
    상기 복수의 존들 중에서 상기 시드 그룹에 상응하는 존을 상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트에 따라 선택하고, 선택된 존에 포함된 복수의 엔트리들 중에서 상기 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한 후, 상기 엔트리 포인터를 상기 선택된 존에 포함된 다음 엔트리로 증가시키는 메모리 컨트롤러.
  12. 복수의 페이지들을 갖는 메모리 셀 어레이를 포함하는 불휘발성 메모리 장치; 및
    상기 불휘발성 메모리 장치의 동작을 제어하는 메모리 컨트롤러를 포함하며,
    상기 메모리 컨트롤러는,
    각각이 복수의 시드들을 저장하는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드를 선택하는 마이크로프로세서; 및
    선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 상기 불휘발성 메모리 장치로 출력하는 랜더마이저를 포함하고,
    상기 마이크로프로세서는,
    상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트를 이용하여 상기 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 상기 시드 그룹을 선택하고,
    선택된 시드 그룹에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한 후, 상기 엔트리 포인터를 상기 선택된 시드 그룹에 포함된 다음 엔트리로 증가시키는 메모리 시스템.
  13. 제12항에 있어서,
    상기 복수의 시드 그룹들 각각이 서로 다른 시드 테이블에 저장되는 메모리 시스템.
  14. 삭제
  15. 제12항에 있어서,
    상기 복수의 시드 그룹들이 동일한 시드 테이블에 저장되고 상기 복수의 시드 그룹들 각각이 복수의 엔트리들을 포함하는 복수의 존들 각각에 대응될 때,
    상기 마이크로프로세서는,
    상기 복수의 존들 중에서 상기 시드 그룹에 상응하는 존을 상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트에 따라 선택하고 선택된 존에 포함된 복수의 엔트리들 중에서 상기 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한 후, 상기 엔트리 포인터를 상기 선택된 존에 포함된 다음 엔트리로 증가시키는 메모리 시스템.
  16. 복수의 페이지들을 갖는 메모리 셀 어레이를 포함하는 플래시 메모리 장치;
    호스트와 통신하기 위한 카드 인터페이스; 및
    상기 플래시 메모리 장치와 상기 카드 인터페이스 사이의 통신을 제어하는 메모리 컨트롤러를 포함하며,
    상기 메모리 컨트롤러는,
    각각이 복수의 시드들을 포함하는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드를 선택하는 마이크로프로세서; 및
    선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 상기 플래시 메모리 장치로 출력하는 랜더마이저를 포함하고,
    상기 마이크로프로세서는,
    상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트를 이용하여 상기 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 상기 시드 그룹을 선택하고,
    선택된 시드 그룹에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한 후, 상기 엔트리 포인터를 상기 선택된 시드 그룹에 포함된 다음 엔트리로 증가시키는 메모리 카드.
  17. 제16항에 있어서, 상기 메모리 카드는 MMC(MultimMedia Card), SD(secure Digital) 카드, 또는 USB 플래시 드라이브인 메모리 카드.
  18. 복수의 페이지들을 갖는 메모리 셀 어레이를 포함하는 플래시 메모리 장치;
    상기 플래시 메모리 장치의 동작을 제어하기 위한 메모리 컨트롤러; 및
    상기 메모리 컨트롤러의 제어에 따라 상기 플래시 메모리 장치로부터 출력된 데이터를 디스플레이하기 위한 디스플레이를 포함하며,
    상기 메모리 컨트롤러는,
    각각이 복수의 시드들을 저장하는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드를 선택하는 마이크로프로세서; 및
    선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라, 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 상기 플래시 메모리 장치로 출력하는 랜더마이저를 포함하고,
    상기 마이크로프로세서는,
    상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트를 이용하여 상기 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 상기 시드 그룹을 선택하고,
    선택된 시드 그룹에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한 후, 상기 엔트리 포인터를 상기 선택된 시드 그룹에 포함된 다음 엔트리로 증가시키는 휴대용 통신 장치.
  19. 각각이 복수의 페이지들을 갖는 복수의 레이어들을 포함하는 3차원 불휘발성 메모리 장치; 및
    상기 3차원 불휘발성 메모리 장치의 동작을 제어하는 메모리 컨트롤러를 포함하며,
    상기 메모리 컨트롤러는,
    각각이 복수의 시드들을 저장하는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 할당된 시드 그룹에 포함된 시드를 선택하는 마이크로프로세서; 및
    선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라, 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 출력하는 랜더마이저를 포함하고,
    상기 마이크로프로세서는,
    상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트를 이용하여 상기 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 상기 시드 그룹을 선택하고,
    선택된 시드 그룹에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한 후, 상기 엔트리 포인터를 상기 선택된 시드 그룹에 포함된 다음 엔트리로 증가시키는 3차원 메모리 시스템.
  20. 각각이 복수의 페이지들을 포함하는 복수의 솔리드 스테이트 메모리 장치들; 및
    상기 복수의 솔리드 스테이트 메모리 장치들 각각의 동작을 제어하는 메모리 컨트롤러를 포함하며,
    상기 메모리 컨트롤러는,
    각각이 복수의 시드들을 저장하는 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 시드 그룹에 포함된 시드를 선택하는 마이크로프로세서; 및
    선택된 시드를 이용하여 의사 난수를 생성하고 생성된 의사 난수에 따라, 상기 페이지에 프로그램될 데이터를 랜더마이즈하고 랜더마이즈된 데이터를 현재 프로그램될 상기 페이지로 출력하는 랜더마이저를 포함하고,
    상기 마이크로프로세서는,
    상기 페이지의 페이지 어드레스의 적어도 일부 비트 또는 상기 페이지에 상응하는 워드 라인 어드레스의 적어도 일부 비트를 이용하여 상기 복수의 시드 그룹들 중에서 현재 프로그램될 페이지에 대한 상기 시드 그룹을 선택하고,
    선택된 시드 그룹에 포함된 복수의 엔트리들 중에서 엔트리 포인터에 의하여 지정된 엔트리를 상기 시드로서 선택한 후, 상기 엔트리 포인터를 상기 선택된 시드 그룹에 포함된 다음 엔트리로 증가시키는 솔리드 스테이트 드라이브(solid state drive).
  21. 삭제
  22. 삭제
KR1020110068089A 2011-07-08 2011-07-08 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들 KR101818445B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020110068089A KR101818445B1 (ko) 2011-07-08 2011-07-08 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들
US13/540,078 US9152551B2 (en) 2011-07-08 2012-07-02 Memory controller, method thereof, and electronic devices having the memory controller
CN201210232132.8A CN102866877B (zh) 2011-07-08 2012-07-05 存储器控制器及操作方法,及含存储器控制器的电子设备
JP2012153392A JP6166868B2 (ja) 2011-07-08 2012-07-09 メモリコントローラ及びその動作方法、並びにメモリコントローラを含むメモリシステム、3次元メモリシステム、メモリカード、ソリッドステートドライブ、及び携帯用通信装置
US14/875,205 US10013349B2 (en) 2011-07-08 2015-10-05 Memory controller, method thereof, and electronic devices having the memory controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110068089A KR101818445B1 (ko) 2011-07-08 2011-07-08 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들

Publications (2)

Publication Number Publication Date
KR20130006195A KR20130006195A (ko) 2013-01-16
KR101818445B1 true KR101818445B1 (ko) 2018-01-16

Family

ID=47439366

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110068089A KR101818445B1 (ko) 2011-07-08 2011-07-08 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들

Country Status (4)

Country Link
US (2) US9152551B2 (ko)
JP (1) JP6166868B2 (ko)
KR (1) KR101818445B1 (ko)
CN (1) CN102866877B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269556B2 (en) 2019-12-18 2022-03-08 SK Hynix Inc. Semiconductor memory device and memory controller having randomizer

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101818445B1 (ko) * 2011-07-08 2018-01-16 삼성전자주식회사 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들
KR102112115B1 (ko) * 2013-04-17 2020-05-18 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 프로그램 방법
TWI533305B (zh) 2014-02-10 2016-05-11 慧榮科技股份有限公司 將資料寫入至快閃記憶體的方法及相關的記憶裝置與快閃記憶體
JP5745136B1 (ja) * 2014-05-09 2015-07-08 力晶科技股▲ふん▼有限公司 不揮発性半導体記憶装置とその書き込み方法
KR101630791B1 (ko) * 2015-03-27 2016-06-16 황순영 의사 난수로부터 진성 난수를 생성하는 방법 및 이 방법을 컴퓨터상에서 실행할 수 있는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
WO2016187801A1 (zh) * 2015-05-26 2016-12-01 崔开平 一种用于储存介质的数据管理方法及固态硬盘与控制芯片
KR102511459B1 (ko) * 2016-03-17 2023-03-17 삼성전자주식회사 비휘발성 메모리 장치 및 그 동작 방법
US10303623B2 (en) * 2016-04-08 2019-05-28 Cryptography Research, Inc. Non-volatile memory for secure storage of authentication data
CN106502590A (zh) * 2016-10-24 2017-03-15 郑州云海信息技术有限公司 一种固态硬盘ssd存储系统及方法
KR102648774B1 (ko) * 2016-11-10 2024-03-19 에스케이하이닉스 주식회사 랜더마이즈 동작을 수행하는 반도체 메모리 장치
CN108109661B (zh) * 2016-11-25 2021-01-26 翰顺联电子科技(南京)有限公司 快闪存储器及其操作方法
KR20180067756A (ko) * 2016-12-12 2018-06-21 에스케이하이닉스 주식회사 제어 장치, 그 제어 장치를 포함하는 반도체 시스템 및 그 반도체 시스템의 구동 방법
JP6494139B1 (ja) * 2018-01-11 2019-04-03 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
JP2019215945A (ja) * 2018-06-14 2019-12-19 富士通株式会社 メモリ制御装置、情報処理装置、及びメモリ制御方法
CN108958666A (zh) * 2018-07-26 2018-12-07 浪潮电子信息产业股份有限公司 一种数据处理方法及主控芯片
TWM575145U (zh) * 2018-09-04 2019-03-01 威盛電子股份有限公司 保全儲存資料的系統
US10797064B2 (en) * 2018-09-19 2020-10-06 Ememory Technology Inc. Single-poly non-volatile memory cell and operating method thereof
KR20200137542A (ko) * 2019-05-30 2020-12-09 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 저장 장치
TWI796078B (zh) * 2021-09-08 2023-03-11 瑞鼎科技股份有限公司 有機發光二極體顯示裝置及其運作方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205352A1 (en) 2003-04-08 2004-10-14 Shigeo Ohyama Scrambler circuit
WO2005050909A1 (ja) 2003-11-14 2005-06-02 Matsushita Electric Industrial Co., Ltd. データ処理装置
US20090083485A1 (en) 2007-09-25 2009-03-26 Cheng Steven S Nonvolatile memory with self recovery
US20090323942A1 (en) * 2008-06-30 2009-12-31 Eran Sharon Method for page- and block based scrambling in non-volatile memory
US20110119432A1 (en) 2009-11-19 2011-05-19 Sangyong Yoon Nonvolatile memory devices having improved read performance resulting from data randomization during write operations
US20110161678A1 (en) 2009-12-24 2011-06-30 Yasuyuki Niwa Controller for controlling nand flash memory and data storage system

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6947960B2 (en) * 2002-02-21 2005-09-20 Koninklijke Philips Electronics N.V. Randomness test utilizing auto-correlation
US7139785B2 (en) * 2003-02-11 2006-11-21 Ip-First, Llc Apparatus and method for reducing sequential bit correlation in a random number generator
JP3732188B2 (ja) * 2003-03-31 2006-01-05 Necマイクロシステム株式会社 擬似乱数発生回路
US7640438B2 (en) 2005-02-15 2009-12-29 Satyam Computer Services Ltd. System and method for protected content rendering
US20070005935A1 (en) 2005-06-30 2007-01-04 Khosravi Hormuzd M Method and apparatus for securing and validating paged memory system
JP2008003976A (ja) * 2006-06-26 2008-01-10 Sony Corp メモリアクセス制御装置および方法、並びに、通信装置
CN100504814C (zh) 2007-01-17 2009-06-24 忆正存储技术(深圳)有限公司 闪存的区块管理方法
JP4498370B2 (ja) * 2007-02-14 2010-07-07 株式会社東芝 データ書き込み方法
JP2008217857A (ja) * 2007-02-28 2008-09-18 Toshiba Corp メモリコントローラ及び半導体装置
US20080263117A1 (en) * 2007-04-23 2008-10-23 Gregory Gordon Rose Initial seed management for pseudorandom number generator
US8301912B2 (en) * 2007-12-31 2012-10-30 Sandisk Technologies Inc. System, method and memory device providing data scrambling compatible with on-chip copy operation
US8788552B2 (en) * 2008-01-25 2014-07-22 Tata Consultancy Services Ltd. Deterministic random number generator for cryptography and digital watermarking
US8059455B2 (en) * 2008-05-09 2011-11-15 Sandisk Il Ltd. Partial scrambling to reduce correlation
KR101554159B1 (ko) 2008-10-08 2015-09-21 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
US8713330B1 (en) * 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
KR101563647B1 (ko) * 2009-02-24 2015-10-28 삼성전자주식회사 메모리 시스템 및 그것의 데이터 처리 방법
TWI438778B (zh) * 2010-03-25 2014-05-21 Silicon Motion Inc 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器
US8732431B2 (en) * 2011-03-06 2014-05-20 Micron Technology, Inc. Logical address translation
US9015401B2 (en) * 2011-04-28 2015-04-21 Seagate Technology Llc Selective purge of confidential data from a non-volatile memory
KR101818445B1 (ko) * 2011-07-08 2018-01-16 삼성전자주식회사 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들
US8984373B2 (en) * 2012-02-22 2015-03-17 Silicon Motion, Inc. Method for accessing flash memory and associated flash memory controller

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205352A1 (en) 2003-04-08 2004-10-14 Shigeo Ohyama Scrambler circuit
WO2005050909A1 (ja) 2003-11-14 2005-06-02 Matsushita Electric Industrial Co., Ltd. データ処理装置
US20090083485A1 (en) 2007-09-25 2009-03-26 Cheng Steven S Nonvolatile memory with self recovery
US20090323942A1 (en) * 2008-06-30 2009-12-31 Eran Sharon Method for page- and block based scrambling in non-volatile memory
US20110119432A1 (en) 2009-11-19 2011-05-19 Sangyong Yoon Nonvolatile memory devices having improved read performance resulting from data randomization during write operations
US20110161678A1 (en) 2009-12-24 2011-06-30 Yasuyuki Niwa Controller for controlling nand flash memory and data storage system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269556B2 (en) 2019-12-18 2022-03-08 SK Hynix Inc. Semiconductor memory device and memory controller having randomizer

Also Published As

Publication number Publication date
JP6166868B2 (ja) 2017-07-19
CN102866877B (zh) 2017-05-10
JP2013020620A (ja) 2013-01-31
KR20130006195A (ko) 2013-01-16
US20130013854A1 (en) 2013-01-10
US20160034390A1 (en) 2016-02-04
US10013349B2 (en) 2018-07-03
US9152551B2 (en) 2015-10-06
CN102866877A (zh) 2013-01-09

Similar Documents

Publication Publication Date Title
KR101818445B1 (ko) 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들
US11362685B2 (en) Nonvolatile memory device and read and copy-back methods thereof
US8635509B2 (en) Method of operating memory controller and memory system including the memory controller
US9256528B2 (en) Method for operating a memory controller and a system having the memory controller
KR101893143B1 (ko) 비휘발성 메모리 장치, 그것의 프로그램 방법 및 읽기 방법, 및 그것을 포함하는 메모리 시스템
KR20120028581A (ko) 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 장치들
KR20100124087A (ko) 메모리 컨트롤러, 그것을 포함하는 메모리 시스템 그리고 그것의 동작 방법
US20120215963A1 (en) Semiconductor Memory Systems that Include Data Randomizers and Related Devices, Controllers and Methods
US8711618B2 (en) Method for programming non-volatile memory device and apparatuses performing the method
US9741440B2 (en) Memory device and read method of memory device
US8984036B2 (en) Methods for operating controllers using seed tables
KR20200042360A (ko) 에러 정정 회로, 이를 포함하는 메모리 컨트롤러 및 메모리 시스템
CN108461099B (zh) 半导体存储装置
US11113189B2 (en) Memory system to perform read reclaim and garbage collection, and method of operating the same
CN113760794A (zh) 存储装置和操作存储装置的方法
US11841805B2 (en) Memory system for storing map data in host memory and operating method of the same
US8914572B2 (en) Memory controllers and memory systems including the same
US11114172B2 (en) Memory system and method of operating the same
KR20130066720A (ko) 메모리 컨트롤러 및 이의 동작 방법

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