KR102644274B1 - 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법 - Google Patents

메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR102644274B1
KR102644274B1 KR1020180145647A KR20180145647A KR102644274B1 KR 102644274 B1 KR102644274 B1 KR 102644274B1 KR 1020180145647 A KR1020180145647 A KR 1020180145647A KR 20180145647 A KR20180145647 A KR 20180145647A KR 102644274 B1 KR102644274 B1 KR 102644274B1
Authority
KR
South Korea
Prior art keywords
memory
address
random number
read
memory device
Prior art date
Application number
KR1020180145647A
Other languages
English (en)
Other versions
KR20200060104A (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 KR1020180145647A priority Critical patent/KR102644274B1/ko
Priority to US16/446,912 priority patent/US11055229B2/en
Priority to CN201910806585.9A priority patent/CN111209222B/zh
Publication of KR20200060104A publication Critical patent/KR20200060104A/ko
Application granted granted Critical
Publication of KR102644274B1 publication Critical patent/KR102644274B1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0059Security or protection circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • 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/08Address circuits; Decoders; Word-line control circuits
    • 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/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/20Address safety or protection circuits, i.e. arrangements for preventing unauthorized or accidental access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/7211Wear leveling

Abstract

본 개시의 기술적 사상에 따른 메모리 시스템은 복수의 메모리 셀들을 포함하는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, 메모리 컨트롤러는 메모리 장치로부터 수신한 독출 데이터에 기초하여 난수를 발생하도록 구성된 난수 발생기와, 난수로부터 키를 생성하고 제1 어드레스와 키에 대한 연산을 수행함으로써, 제1 어드레스를 제2 어드레스로 변환하도록 구성된 어드레스 변환 모듈을 포함한다.

Description

메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법{Memory controller, storage device including the same, and operating method of memory controller}
본 개시의 기술적 사상은 메모리 컨트롤러에 관한 것으로서, 더욱 상세하게는, 난수 발생기를 포함하는 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 시스템, 및 상기 메모리 컨트롤러의 동작 방법에 관한 것이다.
비휘발성 메모리 장치로서 플래시 메모리와 함께, PRAM(Phase change RAM), NFGM(Nano Floating Gate Memory), PoRAM(Polymer RAM), MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM), RRAM(Resistive RAM) 등의 저항성 메모리들이 알려져 있다. 저항성 메모리는 DRAM(Dynamic Random Access Memory)의 고속성과 함께 플래시 메모리의 비휘발성 특성을 갖는다. 이때, 저항성 메모리는 문턱 전압 변동(fluctuation)이 상대적으로 큰 특성을 가질 수 있다.
본 개시의 기술적 사상은 메모리 시스템의 내구성(endurance)을 향상시키고, 메모리 시스템에 대한 보안(security)을 강화할 수 있는 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 시스템, 및 상기 메모리 컨트롤러의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 메모리 시스템은, 복수의 메모리 셀들을 포함하는 메모리 장치, 및 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는, 상기 메모리 장치로부터 수신한 독출 데이터에 기초하여 난수를 발생하도록 구성된 난수 발생기(random number generator), 및 상기 난수로부터 키(key)를 생성하고, 제1 어드레스와 상기 키에 대한 연산을 수행함으로써, 상기 제1 어드레스를 제2 어드레스로 변환하도록 구성된 어드레스 변환 모듈을 포함한다.
또한, 본 개시의 기술적 사상에 따른 메모리 컨트롤러의 동작 방법은, 메모리 장치로부터 독출 데이터를 수신하기 위하여, 상기 메모리 장치에 대해 독출 동작을 수행하는 단계, 메모리 컨트롤러에 포함된 난수 발생기가 상기 독출 데이터에 기초하여 난수를 발생하는 단계, 및 상기 난수를 이용하여, 상기 메모리 장치에 액세스하기 위한 물리 어드레스 또는 상기 메모리 장치에 기입하기 위한 기입 데이터를 랜덤하게 생성하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따른 메모리 컨트롤러는, 메모리 장치로부터 수신한 독출 데이터에 기초하여 난수를 발생하도록 구성된 난수 발생기, 상기 난수를 이용하여, 호스트로부터 수신한 논리 어드레스를 상기 메모리 장치의 제1 물리 어드레스로 변환하거나, 상기 제1 물리 어드레스를 상기 메모리 장치의 제2 물리 어드레스로 변환하도록 구성된 어드레스 변환 모듈, 및 상기 난수를 이용하여, 상기 호스트로부터 수신한 입력 데이터를 랜덤 데이터로 변환하도록 구성된 랜더마이저를 포함한다.
본 개시의 기술적 사상에 따르면, 메모리 컨트롤러는 메모리 장치로부터 수신한 독출 데이터에 기초하여 난수를 발생하고, 난수를 이용하여 메모리 장치에 액세스하기 위한 물리 어드레스 또는 메모리 장치에 기입하기 위한 기입 데이터를 랜덤하게 생성함으로써, 메모리 장치에서 국부적인 마모(local wear-out)의 발생을 감소시킬 수 있고, 웨어 레벨링(wear-leveling)을 수행할 수 있다. 이로써, 메모리 장치를 포함하는 메모리 시스템의 내구성을 향상시킬 수 있다.
또한, 본 개시의 기술적 사상에 따르면, 메모리 컨트롤러는 메모리 장치로부터 수신한 독출 데이터를 기초로 난수를 발생하고, 난수를 이용하여 제1 어드레스를 제2 어드레스로 변환함으로써, 맵핑 정보가 쉽게 노출되지 않을 수 있고, 이로써, 메모리 시스템에서 내구성 실패(endurance failure)의 발생을 방지할 수 있다.
도 1은 본 개시의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 본 개시의 일 실시예에 따라, 독출 횟수에 따른 저항성 메모리 셀의 문턱 전압을 예시적으로 나타낸다.
도 3a는 도 1에 예시된 메모리 셀 어레이를 예시적으로 나타내고, 도 3b는 도 3a에 예시된 메모리 셀을 예시적으로 나타낸다.
도 4는 본 개시의 일 실시예에 따른 메모리 셀들의 저항 산포를 나타낸다.
도 5는 본 개시의 일 실시예에 따른 어드레스 변환 모듈을 예시적으로 나타낸다.
도 6은 본 개시의 일 실시예에 따른 메모리 컨트롤러와 메모리 장치의 동작을 나타내는 흐름도이다.
도 7a는 도 6에 예시된 실시예에 따른 독출 동작을 예시적으로 나타내고, 도 7b는 도 6에 예시된 실시예에 따른 난수 발생 동작을 예시적으로 나타낸다.
도 8은 본 개시의 일 실시예에 따른 메모리 컨트롤러와 메모리 장치의 동작을 나타내는 흐름도이다.
도 9a는 도 8에 예시된 실시예에 따른 독출 동작을 예시적으로 나타내고, 도 9b는 도 8에 예시된 실시예에 따른 난수 발생 동작을 예시적으로 나타낸다.
도 10은 본 개시의 일 실시예에 따른 메모리 컨트롤러와 메모리 장치의 동작을 나타내는 흐름도이다.
도 11은 도 10에 예시된 실시예에 따른 독출 동작을 예시적으로 나타낸다.
도 12는 본 개시의 일 실시예에 따른 메모리 컨트롤러와 메모리 장치의 동작을 나타내는 흐름도이다.
도 13은 도 12에 예시된 실시예에 따른 독출 동작을 예시적으로 나타낸다.
도 14는 본 개시의 일 실시예에 따른 메모리 컨트롤러와 메모리 장치의 동작을 나타내는 흐름도이다.
도 15a는 본 개시의 일 실시예에 따른 어드레스 변환 모듈의 일 예를 나타내고, 도 15b는 도 15a의 어드레스 변환 모듈의 동작에 따라 생성된 맵핑 테이블을 예시적으로 나타낸다.
도 16은 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작 방법을 예시적으로 나타내는 흐름도이다.
도 17a는 본 개시의 일 실시예에 따른 어드레스 변환 모듈의 다른 예를 나타내고, 도 17b는 도 17a의 어드레스 변환 모듈의 동작에 따라 생성된 맵핑 테이블을 예시적으로 나타낸다.
도 18은 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작 방법의 일 예를 나타내는 흐름도이다.
도 19는 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작 방법의 다른 예를 나타내는 흐름도이다.
도 20은 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작 방법의 다른 예를 나타내는 흐름도이다.
도 21은 도 20에 예시된 어드레스 변환 모듈의 동작에 따라 생성된 맵핑 테이블을 예시적으로 나타낸다.
도 22는 본 개시의 일 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 23은 본 개시의 일 실시예에 따른 랜더마이저를 예시적으로 나타낸다.
도 24는 본 개시의 일 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 25는 본 개시의 일 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 26은 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작 방법을 나타내는 흐름도이다.
도 27은 본 개시의 일 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 28은 본 개시의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시 예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 메모리 시스템(10)을 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(100) 및 메모리 장치(200)를 포함할 수 있다. 메모리 컨트롤러(100)는 호스트로부터의 기입/독출 요청에 응답하여 메모리 장치(200)에 데이터를 기입하도록 또는 메모리 장치(200)에 저장된 데이터를 독출하도록 메모리 장치(200)를 제어할 수 있다. 예를 들어, 메모리 컨트롤러(100)는 메모리 장치(200)에 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 제공함으로써, 메모리 장치(200)에 대한 기입 및 독출 동작을 제어할 수 있다. 또한, 메모리 컨트롤러(100)와 메모리 장치(200) 사이에서 데이터(DT)가 송수신될 수 있다.
메모리 장치(200)는 메모리 셀 어레이(210)를 포함할 수 있다. 일 실시예에서, 메모리 셀 어레이(210)는 저항성 메모리 셀들을 포함할 수 있고, 메모리 장치(200)를 "저항성 메모리 장치"라고 지칭할 수 있다. 이하에서는, 메모리 장치(200)가 저항성 메모리 장치인 실시예를 중심으로 설명하기로 한다. 그러나, 본 발명은 이에 한정되지 않으며, 본 발명의 실시예들은 플래시 메모리 장치 등과 같은 비휘발성 메모리 장치 또는 휘발성 메모리 장치를 포함하는 다양한 종류의 메모리 장치에 적용될 수도 있을 것이다.
메모리 셀 어레이(210)에 포함된 저항성 메모리 셀들은 문턱 전압 변동(fluctuation)이 상대적으로 클 수 있다. 예를 들어, 저항성 메모리 셀은 스위칭 소자 및 가변 저항 소자를 포함할 수 있고, 스위칭 소자의 노이즈 등으로 인한 스위칭 소자의 베리에이션(variation) 또는 가변 저항 소자의 베리에이션으로 인해, 문턱 전압 변동이 상대적으로 클 수 있다. 이에 대해, 도 2를 참조하여 자세하게 설명하기로 한다.
도 2는 본 개시의 일 실시예에 따라, 독출 횟수에 따른 저항성 메모리 셀의 문턱 전압을 예시적으로 나타낸다.
도 2를 참조하면, 저항성 메모리 셀이 제1 프로그램 상태로 프로그램된 경우, 저항성 메모리 셀의 문턱 전압은 변동될 수 있다. 이에 따라, 저항성 메모리 셀에 대해 독출 동작을 반복적으로 수행할 경우, 독출 횟수에 따라 독출 결과가 다를 수 있다. 또한, 복수의 저항성 메모리 셀들이 제1 프로그램 상태로 프로그램된 경우, 복수의 메모리 셀들의 문턱 전압 변동에 의해, 복수의 저항성 메모리 셀들에 대해 독출 동작을 수행할 경우, 독출 결과가 다를 수 있다.
다시 도 1을 참조하면, 메모리 컨트롤러(100)는 난수 발생기(110) 및 어드레스 변환 모듈(120)을 포함할 수 있다. 난수 발생기(110)는 메모리 장치(200)로부터 수신한 독출 데이터(Read Data)(RD)에 기초하여 난수(Random Number)(RN)를 발생할 수 있다. 상술한 바와 같이, 메모리 셀 어레이(210)에 포함된 저항성 메모리 셀의 문턱 전압 변동 특성을 이용하여, 메모리 장치(200)로부터 수신한 독출 데이터(RD)로부터 난수(RN)를 발생할 수 있다. 일 실시예에서, 난수 발생기(110)는 진성 난수 발생기(true random number generator, TRNG)일 수 있다.
어드레스 변환 모듈(120)은 난수(RN)를 이용하여, 제1 어드레스(ADDR1)를 제2 어드레스(ADDR2)로 변환할 수 있다. 일 실시예에서, 어드레스 변환 모듈(120)은 난수(RN)로부터 키(key)를 생성할 수 있고, 생성된 키와 제1 어드레스(ADDR1)에 대한 연산을 통해 제2 어드레스(ADDR2)를 생성할 수 있다. 일 실시예에서, 제1 어드레스(ADDR1)는 호스트로부터 수신한 논리 어드레스일 수 있고, 제2 어드레스(ADDR2)는 메모리 장치(200)의 물리 어드레스일 수 있다. 이때, 키는 "맵핑 키"라고 지칭할 수 있고, 논리 어드레스와 맵핑 키의 연산을 통해, 논리 어드레스를 물리 어드레스로 변환할 수 있다. 일 실시예에서, 제1 어드레스(ADDR1)는 메모리 장치(200)의 기존 물리 어드레스일 수 있고, 제2 어드레스(ADDR2)는 메모리 장치(200)의 신규 물리 어드레스일 수 있다. 이때, 키는 "리맵핑 키"라고 지칭할 수 있고, 기존 물리 어드레스와 리맵핑 키의 연산을 통해, 기존 물리 어드레스를 신규 물리 어드레스로 변환할 수 있다.
일부 실시예들에서, 메모리 컨트롤러(100)는 독출/기입 제어 모듈(130)을 더 포함할 수 있다. 독출/기입 제어 모듈(130)은 난수 발생기(110)에 독출 데이터(RD)를 제공하기 위하여, 메모리 장치(200)에 대한 독출 동작을 제어할 수 있다. 일 실시예에서, 독출/기입 제어 모듈(130)은 복수의 메모리 셀들에 대한 독출 전압을 제1 전압 레벨로 결정하고, 제1 전압 레벨을 이용하여 복수의 메모리 셀들에 대한 독출 동작을 제어할 수 있다.
또한, 독출/기입 제어 모듈(130)은 난수 발생기(110)에 독출 데이터(RD)를 제공하기 위하여, 메모리 장치(200)에 대한 기입 동작을 제어할 수 있다. 구체적으로, 독출/기입 제어 모듈(130)은 복수의 메모리 셀들에 대한 독출 동작 전에, 복수의 메모리 셀들의 문턱 전압 산포를 변형시키기 위하여, 메모리 장치(200)에 대한 기입 동작을 제어할 수 있다. 또한, 독출/기입 제어 모듈(130)은 변환된 제2 어드레스(ADDR2)에 데이터를 기입하도록, 메모리 장치(200)에 대한 기입 동작을 제어할 수 있다.
일 실시예에서, 메모리 컨트롤러(100) 및 메모리 장치(200)는 별개의 반도체 장치로 구현될 수 있다. 일 실시예에서, 메모리 컨트롤러(100) 및 메모리 장치(200)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 메모리 컨트롤러(100) 및 메모리 장치(200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들어, 메모리 컨트롤러(100) 및 메모리 장치(200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM/SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD), 유니버설 플래시 기억장치(UFS) 등을 구성할 수 있다. 다른 예를 들면, 메모리 컨트롤러(100) 및 메모리 장치(200)는 하나의 반도체 장치로 집적되어 SSD(Solid State Disk/Drive)를 구성할 수 있다.
도 3a는 도 1에 예시된 메모리 셀 어레이(210)를 예시적으로 나타낸다.
도 3a를 참조하면, 메모리 셀 어레이(210)는 복수의 워드 라인들(WL1 내지 WLn), 복수의 비트 라인들(BL1 내지 BLm) 및 복수의 메모리 셀들(MC)을 포함할 수 있다. 여기서, 워드 라인들(WL1 내지 WLn)의 개수, 비트 라인들(BL1 내지 BLm)의 개수 및 메모리 셀들(MC)의 개수는 실시예에 따라 다양하게 변경될 수 있고, n과 m은 임의의 양의 정수이다. 메모리 셀 어레이(210)는 복수의 워드 라인들(WL1 내지 WLn) 및 복수의 비트 라인들(BL1 내지 BLm)이 교차하는 영역들에 각각 배치되는 복수의 메모리 셀들(MC)을 포함할 수 있고, 이에 따라, 메모리 장치(200)를 "크로스 포인트(cross-point) 메모리 장치"라고 지칭할 수도 있다.
메모리 셀 어레이(210)는 복수의 메모리 블록들을 포함할 수 있고, 각 메모리 블록은 복수의 페이지들을 포함할 수 있다. 또한, 각 메모리 셀(MC)은 하나의 비트를 저장하는 싱글 레벨 셀(SLC, single level cell), 또는 적어도 2 비트 이상의 데이터를 저장할 수 있는 멀티 레벨 셀(MLC, multi level cell)일 수 있다. 일 실시예에서, 메모리 셀 어레이(210)는 수평 구조의 2차원 메모리 셀 어레이일 수 있다. 일 실시예에서, 메모리 셀 어레이(210)는 수직 구조의 3차원 메모리 셀 어레이일 수 있다.
메모리 셀 어레이(210)는 가변 저항 소자를 포함하는 저항성 메모리 셀들을 포함할 수 있다. 일 실시예에서, 가변 저항 소자가 상변화(phase change) 물질(GST, Ge-Sb-Te)로서 온도에 따라 저항이 변화하는 경우, 메모리 장치(200)는 PRAM일 수 있다. 일 실시예에서, 가변 저항 소자가 상부 전극, 하부 전극 및 그 사이에 있는 전이금속 산화물(complex metal oxide)로 형성된 경우에는 메모리 장치(200)는 RRAM일 수 있다. 일 실시예에서, 가변 저항 소자가 자성체의 상부 전극, 자성체의 하부 전극 및 그 사이에 있는 유전체로 형성된 경우에는 저항성 메모리 장치는 MRAM일 수 있다.
본 실시예에 따르면, 복수의 메모리 셀들(MC) 각각은 가변 저항 소자(R) 및 스위칭 소자(SW)를 포함할 수 있다. 여기서, 가변 저항 소자(R)는 가변 저항 물질이라고 지칭할 수 있고, 스위칭 소자(SW)는 선택 소자라고 지칭할 수 있다. 일 실시예에서, 가변 저항 소자(R)는 복수의 비트 라인들(BL1 내지 BLm) 중 하나와 스위칭 소자(SW)의 사이에 연결되며, 스위칭 소자(SW)는 가변 저항 소자(R)와 복수의 워드 라인들(WL1 내지 WLn) 중 하나의 사이에 연결될 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 스위칭 소자(SW)가 복수의 비트 라인들(BL1 내지 BLm) 중 하나와 가변 저항 소자(R) 사이에 연결되고, 가변 저항 소자(R)가 스위칭 소자(SW)와 복수의 워드 라인들(WL1 내지 WLn) 중 하나의 사이에 연결될 수 있다.
스위칭 소자(SW)는 복수의 워드 라인들(WL1 내지 WLn) 중 어느 하나와 가변 저항 소자(R) 사이에 연결될 수 있으며, 연결된 워드 라인과 비트 라인에 인가되는 전압에 따라 가변 저항 소자(R)로의 전류 공급을 제어할 수 있다. 도 3a에서, 스위칭 소자(SW)는 다이오드인 것으로 도시되었으나, 이는 본 발명의 일 실시예에 불과하며, 다른 실시예에서, 스위칭 소자(SW)는 스위칭 가능한 다른 소자로 변경될 수 있다.
도 3b는 도 3a에 예시된 메모리 셀(MC)을 예시적으로 나타낸다.
도 3b를 참조하면, 메모리 셀(MC)은 가변 저항 소자(R)와 스위칭 소자(SW)로 구성될 수 있다. 스위칭 소자(SW)는 트랜지스터, 다이오드 등과 같은 다양한 소자들을 이용하여 구현될 수 있다. 가변 저항 소자(R)는 게르마늄, 안티몬 및 텔루르 혼합물(GST, Ge-Sb-Te)로 이루어진 상변화막(11), 상변화막(11) 상부에 형성된 상부 전극(12), 그리고 상변화막(11) 하부에 형성된 하부 전극(13)을 포함할 수 있다.
상부 및 하부 전극들(12, 13)은 다양한 금속, 금속 산화물 또는 금속 질화물로 형성될 수 있다. 상부 및 하부 전극들(12, 13)은 알루미늄(Al), 구리(Cu), 티타늄 질화물(TiN), 티타늄 알루미늄 질화물(TixAlyNz), 이리듐(Ir), 백금(Pt), 은(Ag), 금(Au), 폴리실리콘(poly silicon), 텅스텐(W), 티타늄(Ti), 탄탈륨(Ta), 탄탈륨 질화물(TaN), 텅스텐 질화물(WN)), 니켈(Ni), 코발트(Co), 크롬(Cr), 안티몬(Sb), 철(Fe), 몰리브덴(Mo), 팔라듐(Pd). 주석(Sn). 지르코늄(Zr), 아연(Zn), 산화 이리듐(IrO2), 산화스트론튬지르코네이트(StZrO3) 등일 수 있다.
상변화막(11)은 쌍극성(bipolar) 저항 기억 재료 또는 단극성(unipolar) 저항 기억 재료로 형성될 수 있다. 쌍극성 저항 기억 재료는 전류의 극성에 의하여 셋이나 리셋 상태로 프로그램될 수 있으며, 쌍극성 저항 기억 재료에는 페로브스카이트(Perovskite) 계열의 물질들이 사용될 수 있다. 한편, 단극성 저항 기억 재료는 동일한 극성의 전류에 의해서도 셋이나 리셋 상태로 프로그램될 수 있으며, 단극성 저항 기억 재료에는, NiOx나 TiOx와 같은 전이 금속 산화물(transition metal oxide) 등이 사용될 수 있다.
GST 물질은 비교적 높은 저항율(resistivity)을 갖는 비결정 상태(amorphous state)와 비교적 낮은 저항율을 갖는 결정 상태(crystalline state) 사이에서 프로그램될 수 있다. GST 물질을 가열함으로써 GST 물질이 프로그램될 수 있다. 가열의 크기 및 시간은 GST 물질이 비결정 상태 또는 결정 상태로 남아있는지의 여부를 결정할 수 있다. 높은 저항율 및 낮은 저항율은 각각 프로그램된 값들 로직 0 또는 로직 1로 나타낼 수 있으며, GST 물질의 저항율을 측정함으로써 감지될 수 있다. 이와 반대로, 높은 저항율 및 낮은 저항율은 각각 프로그램된 값들 로직 1 또는 로직 0으로 나타낼 수 있다.
도 3b에서, 메모리 셀(MC)에 프로그램 전류(I)가 인가되면, 인가된 프로그램 전류(I)는 하부 전극(13)을 통해 흐르게 된다. 매우 짧은 시간 동안 프로그램 전류(I)가 메모리 셀(MC)에 인가되면, 인가된 프로그램 전류(I)는 하부 전극(13)의 인접한 막만이 주울열(Joule's heat)로 가열된다. 이 때, 가열 프로파일(heating profile)의 차이에 의해서 상변화막(11)의 일부가 결정 상태(또는 셋 상태)가 되거나 비결정 상태(또는 리셋 상태)가 된다.
도 4는 본 개시의 일 실시예에 따른 메모리 셀들의 저항 산포를 나타낸다.
도 4를 참조하면, 가로축은 저항을 나타내고, 세로축은 메모리 셀들(MC)의 개수를 나타낸다. 예를 들어, 메모리 셀(MC)이 1 비트로 프로그램되는 싱글 레벨 셀(SLC)인 경우, 메모리 셀(MC)은 저 저항 상태(LRS) 또는 고 저항 상태(HRS)를 가질 수 있다. 저 저항 상태(LRS) 및 고 저항 상태(HRS)는 데이터 '0' 및 데이터 '1' 중 어느 하나에 해당할 수 있다. 일 실시예에서, 저항 레벨(R)은 데이터 '0'에서 데이터 '1'의 순서로 커질 수 있다. 즉, 저 저항 상태(LRS)는 데이터 '0'에 해당하고, 고 저항 상태(HRS)는 데이터 '1'에 해당할 수 있다.
메모리 셀(MC)에 프로그램 전류를 인가하여 메모리 셀(MC)을 고 저항 상태(HRS)에서 저 저항 상태(LRS)로 스위칭하는 동작을 셋(set) 동작 또는 셋 기입 동작이라고 한다. 또한, 메모리 셀(MC)에 프로그램 전류를 인가하여 메모리 셀(MC)을 저 저항 상태(LRS)에서 고 저항 상태(HRS)로 스위칭하는 동작을 리셋(reset) 동작 또는 리셋 기입 동작이라고 한다.
도 5는 본 개시의 일 실시예에 따른 어드레스 변환 모듈(120)을 예시적으로 나타낸다.
도 1 및 도 5를 함께 참조하면, 어드레스 변환 모듈(120)은 키 생성부(121) 및 변환기(translator)(122)를 포함할 수 있다. 키 생성부(121)는 난수 발생부(110)로부터 난수(RN)를 수신하고, 수신한 난수(RN)로부터 키(K)를 생성할 수 있다. 일 실시예에서, 키(K)는 난수(RN)와 동일할 수 있다. 일부 실시예들에서, 어드레스 변환 모듈(120)은 키 생성부(121)를 포함하지 않을 수도 있다. 그러나, 본 발명은 이에 한정되지 않으며, 키(K)와 난수(RN)는 서로 다를 수도 있다. 변환기(122)는 제1 어드레스(ADDR1)와 키(K)에 대한 연산을 수행함으로써, 제1 어드레스(ADDR1)를 제2 어드레스(ADDR2)로 변환할 수 있다. 일 실시예에서, 변환기(122)는 제1 어드레스(ADDR1)와 키(K)에 대해 XOR 연산을 수행할 수 있다.
도 6은 본 개시의 일 실시예에 따른 메모리 컨트롤러(100)와 메모리 장치(200)의 동작을 나타내는 흐름도이다. 도 7a는 도 6에 예시된 실시예에 따른 독출 동작을 예시적으로 나타내고, 도 7b는 도 6에 예시된 실시예에 따른 난수 발생 동작을 예시적으로 나타낸다. 이하에서는, 도 1, 도 6 내지 도 7b를 함께 참조하여 설명하기로 한다.
메모리 컨트롤러(100)는 독출 전압을 제1 전압 레벨(Vrd)로 결정하고, 독출 커맨드 및 독출 어드레스를 생성한다(S110). 예를 들어, 독출/기입 제어 모듈(130)은 독출 전압을 제1 전압 레벨(Vrd)로 결정할 수 있다. 독출 어드레스는 메모리 셀 어레이(210)의 일부 영역에 포함된 복수의 메모리 셀들에 대응할 수 있다. 일 실시예에서, 메모리 셀 어레이(210)는 난수 발생에 필요한 독출 동작을 수행하기 위한 메모리 영역을 포함할 수 있고, 독출 어드레스는 상기 메모리 영역에 포함된 복수의 메모리 셀들에 대응할 수 있다.
메모리 컨트롤러(100)는 메모리 장치(200)에 독출 커맨드 및 독출 어드레스를 전송한다(S120). 이때, 메모리 컨트롤러(100)는 결정된 독출 전압 정보를 독출 커맨드와 함께 메모리 장치(200)에 전송할 수 있다. 메모리 장치(200)는 독출 동작을 수행하고, 독출 데이터를 생성한다(S130). 구체적으로, 메모리 장치(200)는 제1 전압 레벨(Vrd)을 이용하여 복수의 메모리 셀들에 대해 독출 동작을 수행할 수 있다. 복수의 메모리 셀들은 문턱 전압에 따른 산포(71)를 가질 수 있고, 문턱 전압이 제1 전압 레벨(Vrd)보다 높은 메모리 셀들에 대한 독출 결과는 "0"일 수 있고, 문턱 전압이 제1 전압 레벨(Vrd)보다 낮은 메모리 셀들에 대한 독출 결과는 "1"일 수 있다.
메모리 장치(200)는 메모리 컨트롤러(100)에 독출 데이터(RD)를 전송한다(S140). 예를 들어, 독출 데이터(RD)는 "000...1"일 수 있고, N 비트일 수 있다. 메모리 컨트롤러(100)는 독출 데이터(RD)에 기초하여 난수(RN)를 발생한다(S150). 예를 들어, 난수(RN)는 "000...1"일 수 있고, M 비트일 수 있다. 일 실시예에서, N과 M은 동일한 양의 정수일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, N과 M은 서로 다른 양의 정수일 수도 있다. 일 실시예에서, 난수(RN)는 독출 데이터(RD)와 동일할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 난수(RN)는 독출 데이터(RD)와 다를 수도 있다. 메모리 컨트롤러(100)는 난수(RN)를 이용하여 제1 어드레스(ADDR1)를 제2 어드레스(ADDR2)로 변환한다(S160).
도 8은 본 개시의 일 실시예에 따른 메모리 컨트롤러(100)와 메모리 장치(200)의 동작을 나타내는 흐름도이다. 도 9a는 도 8에 예시된 실시예에 따른 독출 동작을 예시적으로 나타내고, 도 9b는 도 8에 예시된 실시예에 따른 난수 발생 동작을 예시적으로 나타낸다. 이하에서는, 도 1, 도 8 내지 도 9b를 함께 참조하여 설명하기로 한다.
메모리 컨트롤러(100)는 제1 독출 커맨드 및 제1 독출 어드레스를 생성한다(S210). 예를 들어, 제1 독출 어드레스는 메모리 셀 어레이(210)에 포함된 제1 메모리 셀들에 대응할 수 있다. 메모리 컨트롤러(100)는 메모리 장치(200)에 제1 독출 커맨드 및 제1 독출 어드레스를 전송한다(S220). 메모리 장치(200)는 제1 독출 어드레스에 대해 제1 독출 동작을 수행하고, 제1 독출 데이터를 생성한다(S230).
구체적으로, 메모리 장치(200)는 제1 전압 레벨(Vrd)을 이용하여 제1 메모리 셀들에 대해 독출 동작을 수행할 수 있다. 제1 메모리 셀들은 문턱 전압에 따른 제1 산포(91)를 가질 수 있고, 문턱 전압이 제1 전압 레벨(Vrd)보다 높은 메모리 셀들에 대한 독출 결과는 "0"일 수 있고, 문턱 전압이 제1 전압 레벨(Vrd)보다 낮은 메모리 셀들에 대한 독출 결과는 "1"일 수 있다. 메모리 장치(200)는 메모리 컨트롤러(100)에 제1 독출 데이터(RD1)를 전송한다(S240). 예를 들어, 제1 독출 데이터(RD1)는 "000...1"일 수 있고, N 비트일 수 있다.
메모리 컨트롤러(100)는 제2 독출 커맨드 및 제2 독출 어드레스를 생성한다(S250). 예를 들어, 제2 독출 어드레스는 메모리 셀 어레이(210)에 포함된 제2 메모리 셀들에 대응할 수 있다. 일 실시예에서, 제1 메모리 셀들과 제2 메모리 셀들은 동일할 수 있고, 이에 따라, 제1 독출 어드레스와 제2 독출 어드레스는 동일할 수 있다. 동일 어드레스에 대해 제1 독출 동작 및 제2 독출 동작을 순차적으로 수행할 경우, 제1 독출 데이터(RD1)와 제2 독출 데이터(RD2)는 서로 다를 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 제1 독출 어드레스와 제2 독출 어드레스는 서로 다를 수 있다.
메모리 컨트롤러(100)는 메모리 장치(200)에 제2 독출 커맨드 및 제2 독출 어드레스를 전송한다(S260). 메모리 장치(200)는 제2 독출 어드레스에 대해 제2 독출 동작을 수행하고, 제2 독출 데이터를 생성한다(S270). 구체적으로, 메모리 장치(200)는 제1 전압 레벨(Vrd)을 이용하여 제2 메모리 셀들에 대해 독출 동작을 수행할 수 있다. 제2 메모리 셀들은 문턱 전압에 따른 제2 산포(92)를 가질 수 있고, 문턱 전압이 제1 전압 레벨(Vrd)보다 높은 메모리 셀들에 대한 독출 결과는 "0"일 수 있고, 문턱 전압이 제1 전압 레벨(Vrd)보다 낮은 메모리 셀들에 대한 독출 결과는 "1"일 수 있다. 메모리 장치(200)는 메모리 컨트롤러(100)에 제2 독출 데이터를 전송한다(S280). 예를 들어, 제2 독출 데이터(RD2)는 "010...1"일 수 있고, N 비트일 수 있다.
메모리 컨트롤러(100)는 제1 독출 데이터(RD1) 및 제2 독출 데이터(RD2)를 이용하여 난수(RN)를 발생한다(S290). 일 실시예에서, 메모리 컨트롤러(100)는 제1 독출 데이터(RD1)와 제2 독출 데이터(RD2)를 비교할 수 있다. 구체적으로, 메모리 컨트롤러(100)는 제1 독출 데이터(RD1)의 각 비트와 제2 독출 데이터(RD2)의 각 비트를 비교할 수 있다. 이어서, 메모리 컨트롤러(100)는 상기 비교 결과로부터 플립(flip) 비트의 발생 여부 또는 개수를 결정할 수 있다.
예를 들어, 제1 독출 데이터(RD1)의 최상위 비트는 "1"이고, 제2 독출 데이터(RD2)의 최상위 비트는 "0"일 수 있고, 이에 따라, 최상위 비트에서 플립 비트가 발생한 것으로 판단할 수 있다. 예를 들어, 제1 독출 데이터(RD1)의 차상위 비트는 "0"이고, 제2 독출 데이터(RD2)의 차상위 비트는 "1"일 수 있고, 이에 따라, 차상위 비트에서 플립 비트가 발생한 것으로 판단할 수 있다. 이어서, 메모리 컨트롤러(100)는 플립 비트의 발생 여부 또는 개수에 기초하여 난수(RN)를 발생할 수 있다. 예를 들어, 난수(RN)는 "110...0"일 수 있고, N 비트일 수 있다.
도 10은 본 개시의 일 실시예에 따른 메모리 컨트롤러(100)와 메모리 장치(200)의 동작을 나타내는 흐름도이다. 도 11은 도 10에 예시된 실시예에 따른 독출 동작을 예시적으로 나타낸다. 이하에서는, 도 1, 도 10 및 도 11을 함께 참조하여 설명하기로 한다.
메모리 컨트롤러(100)는 기입 커맨드 및 기입 어드레스를 생성한다(S300). 예를 들어, 독출/기입 제어 모듈(130)은 기입 커맨드, 기입 어드레스 및 기입 데이터를 생성할 수 있다. 기입 어드레스는 메모리 셀 어레이(210)의 일부 영역에 포함된 메모리 셀들에 대응할 수 있다. 일 실시예에서, 메모리 셀 어레이(210)는 난수 발생에 필요한 독출 동작을 수행하기 위한 메모리 영역을 포함할 수 있고, 기입 어드레스는 상기 메모리 영역에 포함된 메모리 셀들에 대응할 수 있다. 메모리 컨트롤러(100)는 메모리 장치(200)에 기입 커맨드 및 기입 어드레스를 전송한다(S310). 메모리 장치(200)는 기입 어드레스에 대해 기입 동작을 수행한다(S320). 메모리 장치(200)는 기입 동작이 완료되었음을 나타내는 응답 메시지를 메모리 컨트롤러(100)에 전송한다(S330).
메모리 컨트롤러(100)는 제1 시간이 경과되었는지 판단한다(S340). 구체적으로, 메모리 컨트롤러(100)는 기입 완료 시점으로부터 제1 시간이 경과되었는지 판단할 수 있다. 예를 들어, 기입 완료 시점은 메모리 장치(200)로부터 응답 메시지를 수신한 시점에 대응할 수 있다. 판단 결과, 제1 시간이 경과한 경우, 단계 S350을 수행하고, 그렇지 않으면 다시 단계 S340을 수행한다. 기입 동작이 완료된 복수의 메모리 셀들은 문턱 전압에 따른 제1 산포(111)를 가질 수 있고, 제1 시간이 경과하면, 상기 복수의 메모리 셀들의 문턱 전압에 따른 제1 산포(111)는 제2 산포(112)로 변경될 수 있다.
메모리 컨트롤러(100)는 독출 커맨드 및 독출 어드레스를 생성한다(S350). 예를 들어, 독출 어드레스는 상기 기입 어드레스와 동일할 수 있다. 메모리 컨트롤러(100)는 메모리 장치(200)에 독출 커맨드 및 독출 어드레스를 전송한다(S360). 메모리 장치(200)는 독출 어드레스에 대해 독출 동작을 수행하고, 독출 데이터를 생성한다(S370). 구체적으로, 메모리 장치(200)는 제1 전압 레벨(Vrd)을 이용하여 메모리 셀들에 대해 독출 동작을 수행할 수 있다. 메모리 장치(200)는 메모리 컨트롤러(100)에 독출 데이터(RD)를 전송한다(S380).
메모리 컨트롤러(100)는 독출 데이터(RD)에 기초하여 난수(RN)를 발생한다(S390). 일 실시예에서, 단계 S390은 도 6에 예시된 단계 S150과 유사하게 수행될 수 있다. 일 실시예에서, 단계 S390은 도 8에 예시된 단계 S290과 유사하게 수행될 수 있고, 이때, 단계 S380과 단계 S390 사이에 도 8의 단계 S250 내지 단계 S280에 대응하는 단계들이 수행될 수 있다.
도 12는 본 개시의 일 실시예에 따른 메모리 컨트롤러(100)와 메모리 장치(200)의 동작을 나타내는 흐름도이다. 도 13은 도 12에 예시된 실시예에 따른 독출 동작을 예시적으로 나타낸다. 이하에서는, 도 1, 도 12 및 도 13을 함께 참조하여 설명하기로 한다.
메모리 컨트롤러(100)는 기입 파라미터를 제어하고, 기입 커맨드 및 기입 어드레스를 생성한다(S410). 예를 들어, 독출/기입 제어 모듈(130)은 셋 전류 또는 리셋 전압 등과 같은 기입 파라미터를 제어할 수 있다. 기입 어드레스는 메모리 셀 어레이(210)의 일부 영역에 포함된 메모리 셀들에 대응할 수 있다. 메모리 컨트롤러(100)는 메모리 장치(200)에 기입 파라미터, 기입 커맨드 및 기입 어드레스를 전송한다(S420). 메모리 장치(200)는 기입 파라미터를 이용하여 기입 어드레스에 대해 기입 동작을 수행한다(S430). 메모리 장치(200)는 기입 동작이 완료되었음을 나타내는 응답 메시지를 메모리 컨트롤러(100)에 전송한다(S440).
사용자 데이터에 대한 노멀(normal) 기입 동작을 수행할 경우, 제1 프로그램 상태로 프로그램된 메모리 셀들은 제1 산포(131)를 가질 수 있다. 그러나, 본 실시예에 따라, 변경된 기입 파라미터를 이용하여 기입 동작을 수행할 경우, 제1 프로그램 상태로 프로그램된 메모리 셀들은 제2 산포(132)를 가질 수 있다. 제2 산포(132)를 갖는 메모리 셀들에 대한 독출 결과는, 제1 산포(131)를 갖는 메모리 셀들에 대한 독출 결과에 비해 더 랜덤할 수 있다. 이와 같이, 독출/기입 제어 모듈(130)은 난수 발생에 이용되는 독출 데이터(RD)를 더욱 랜덤하게 하기 위하여 기입 파라미터를 제어할 수 있다.
일 실시예에서, S410 내지 S440는 메모리 장치(200) 또는 메모리 시스템(10)의 제품 출시 전에 수행될 수 있다. 다시 말해, 난수(RN)를 발생하기 위해 독출하는 메모리 셀들에 대한 기입 동작은 제품 출시 전에 수행될 수 있다. 일 실시예에서, S410 내지 S440는 메모리 장치(200) 또는 메모리 시스템(10)의 제품 출시 후에 수행될 수 있다. 예를 들어, 난수(RN)를 발생하기 위해 독출하는 메모리 셀들에 대한 기입 동작은 제품의 사용 중에 수행될 수도 있다.
메모리 컨트롤러(100)는 독출 커맨드 및 독출 어드레스를 생성한다(S450). 예를 들어, 독출 어드레스는 상기 기입 어드레스와 동일할 수 있다. 메모리 컨트롤러(100)는 메모리 장치(200)에 독출 커맨드 및 독출 어드레스를 전송한다(S460). 메모리 장치(200)는 독출 어드레스에 대해 독출 동작을 수행하고, 독출 데이터를 생성한다(S470). 구체적으로, 메모리 장치(200)는 제1 전압 레벨(Vrd)을 이용하여 메모리 셀들에 대해 독출 동작을 수행할 수 있다. 메모리 장치(200)는 메모리 컨트롤러(100)에 독출 데이터(RD)를 전송한다(S480).
메모리 컨트롤러(100)는 독출 데이터(RD)에 기초하여 난수(RN)를 발생한다(S490). 일 실시예에서, 단계 S490은 도 6에 예시된 단계 S150과 유사하게 수행될 수 있다. 일 실시예에서, 단계 S490은 도 8에 예시된 단계 S290과 유사하게 수행될 수 있고, 이때, 단계 S480과 단계 S490 사이에 도 8의 단계 S250 내지 단계 S280에 대응하는 단계들이 수행될 수 있다.
도 14는 본 개시의 일 실시예에 따른 메모리 컨트롤러(100)와 메모리 장치(200)의 동작을 나타내는 흐름도이다.
도 1 및 도 14를 함께 참조하면, 메모리 컨트롤러(100)는 제1 메모리 셀들에 대하여, 제1 기입 커맨드 및 제1 기입 어드레스를 생성한다(S500). 제1 기입 어드레스는 제1 메모리 셀들에 대응할 수 있다. 메모리 컨트롤러(100)는 메모리 장치(200)에 제1 기입 커맨드 및 제1 기입 어드레스를 전송한다(S510). 메모리 장치(200)는 제1 기입 어드레스에 대해 제1 기입 동작을 수행한다(S520). 메모리 장치(200)는 기입 동작이 완료되었음을 나타내는 응답 메시지를 메모리 컨트롤러(100)에 전송한다(S525).
메모리 컨트롤러(100)는 제2 메모리 셀들에 대하여, 제2 기입 커맨드 및 제2 기입 어드레스를 생성한다(S530). 제2 기입 어드레스는 제2 메모리 셀들에 대응할 수 있다. 여기서, 제2 메모리 셀들은 제1 메모리 셀들의 주변에 배치된 메모리 셀들일 수 있다. 메모리 컨트롤러(100)는 메모리 장치(200)에 제2 기입 커맨드 및 제2 기입 어드레스를 전송한다(S540). 메모리 장치(200)는 제2 기입 어드레스에 대해 제2 기입 동작을 수행한다(S550). 제2 기입 동작의 수행에 따른 프로그램 디스터브(disturb)로 인해, 제1 메모리 셀들의 산포는 변경될 수 있다. 메모리 장치(200)는 기입 동작이 완료되었음을 나타내는 응답 메시지를 메모리 컨트롤러(100)에 전송한다(S555).
메모리 컨트롤러(100)는 제1 메모리 셀들에 대하여, 독출 커맨드 및 독출 어드레스를 생성한다(S560). 예를 들어, 독출 어드레스는 상기 제1 기입 어드레스와 동일할 수 있다. 메모리 컨트롤러(100)는 메모리 장치(200)에 독출 커맨드 및 독출 어드레스를 전송한다(S570). 메모리 장치(200)는 독출 어드레스에 대해 독출 동작을 수행하고, 독출 데이터를 생성한다(S580). 메모리 장치(200)는 메모리 컨트롤러(100)에 독출 데이터(RD)를 전송한다(S585).
일 실시예에서, S500 내지 S555는 메모리 장치(200) 또는 메모리 시스템(10)의 제품 출시 전에 수행될 수 있다. 다시 말해, 난수(RN)를 발생하기 위해 독출하는 메모리 셀들에 대한 기입 동작은 제품 출시 전에 수행될 수 있다. 일 실시예에서, S500 내지 S555는 메모리 장치(200) 또는 메모리 시스템(10)의 제품 출시 후에 수행될 수 있다. 예를 들어, 난수(RN)를 발생하기 위해 독출하는 메모리 셀들에 대한 기입 동작은 제품의 사용 중에 수행될 수도 있다.
메모리 컨트롤러(100)는 독출 데이터(RD)에 기초하여 난수(RN)를 발생한다(S590). 일 실시예에서, 단계 S590은 도 6에 예시된 단계 S150과 유사하게 수행될 수 있다. 일 실시예에서, 단계 S590은 도 8에 예시된 단계 S290과 유사하게 수행될 수 있고, 이때, 단계 S585와 단계 S590 사이에 도 8의 단계 S250 내지 단계 S280에 대응하는 단계들이 수행될 수 있다.
도 15a는 본 개시의 일 실시예에 따른 어드레스 변환 모듈의 일 예(120a)를 나타낸다.
도 15a를 참조하면, 어드레스 변환 모듈(120a)은 변환기(122)를 포함할 수 있고, 변환기(122)는 호스트로부터 수신한 논리 어드레스(LA)와 키(K)에 대해 연산을 수행함으로써, 논리 어드레스(LA)를 물리 어드레스(PA)로 변환할 수 있다. 이때, 키(K)는 "맵핑 키"라고 지칭할 수 있다. 예를 들어, 변환기(122)는 논리 어드레스(LA)와 키(K)에 대해 XOR 연산을 수행함으로써, 물리 어드레스(PA)를 생성할 수 있다.
키(K)는 메모리 장치로부터 수신한 독출 데이터를 이용하여 생성할 수 있다. 예를 들어, 키(K)는 독출 데이터에 대응할 수 있다. 또한, 키(K)는 논리 어드레스(LA)의 사이즈에 대응하는 사이즈를 가질 수 있다. 예를 들어, 논리 어드레스(LA)가 N 비트인 경우, 키(K)도 N 비트일 수 있다. 일부 실시예들에서, 어드레스 변환 모듈(120a)은 도 5에 예시된 키 생성부(121)를 더 포함할 수 있다.
도 15b는 도 15a의 어드레스 변환 모듈(120a)의 동작에 따라 생성된 맵핑 테이블(MTa)을 예시적으로 나타낸다.
도 15b를 참조하면, 맵핑 테이블(MTa)은 논리 어드레스(LA)와 물리 어드레스(PA) 사이의 맵핑 정보를 저장할 수 있다. 예를 들어, 어드레스 변환 모듈(120a)은 논리 어드레스(LA1)와 키(K)의 XOR 연산을 수행함으로써, 물리 어드레스(PAa)를 생성할 수 있다. 예를 들어, 어드레스 변환 모듈(120a)은 논리 어드레스(LA2)와 키(K)의 XOR 연산을 수행함으로써, 물리 어드레스(PAb)를 생성할 수 있다.
일 실시예에서, 물리 어드레스(PAa)와 물리 어드레스(PAb)는 서로 다른 블록들에 각각 포함될 수 있다. 일 실시예에서, 물리 어드레스(PAa)와 물리 어드레스(PAb)는 서로 다른 메모리 칩들에 각각 포함될 수도 있다. 이와 같이, 본 실시예에 따르면, 메모리 컨트롤러(100)는 메모리 장치(200)에 데이터를 기입하기 위한 물리 어드레스들을 랜덤하게 할당(assign)함으로써, 메모리 장치(200)에서 국부적인 마모(wear-out)의 발생을 감소시킬 수 있고, 웨어 레벨링(wear leveling)을 수행할 수 있다.
도 16은 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작 방법을 예시적으로 나타내는 흐름도이다.
도 1, 도 15a 내지 도 16을 함께 참조하면, 메모리 컨트롤러(100)는 독출 데이터(RD)에 기초하여 난수(RN)를 발생한다(S610). 일부 실시예들에서, 난수(RN)는 메모리 장치(200)의 페이지 별로, 블록 별로, 또는 칩 별로 서로 다르게 결정될 수 있다. 이때, 메모리 장치(200)의 페이지 별로, 블록 별로, 또는 칩 별로 서로 다르게 결정된 난수(RN)들은 맵핑 테이블(MTa)에 저장될 수 있다. 메모리 컨트롤러(100)는 호스트로부터 논리 어드레스(LA)를 수신한다(S620). 일부 실시예에서, 단계 S610은 단계 S620 이후에 수행될 수도 있다.
메모리 컨트롤러(100)는 난수(RN)를 이용하여, 논리 어드레스(LA)를 물리 어드레스(PA)로 변환한다(S630). 예를 들어, 메모리 컨트롤러(100)는 논리 어드레스(LA)와 난수(RN)에 대한 XOR 연산을 수행함으로써, 물리 어드레스(PA)를 생성할 수 있다. 이때, 메모리 컨트롤러(100)는 논리 어드레스(LA)와 물리 어드레스(PA) 사이의 맵핑 정보를 맵핑 테이블(MTa)에 저장한다. 메모리 컨트롤러(100)는 물리 어드레스(PA)에 데이터를 기입한다(S640).
상술한 실시예에 따라, 메모리 장치(200)에 액세스하기 위한 물리 어드레스(PA)를 랜덤하게 할당함으로써, 메모리 장치(200)의 내구성을 향상시킬 수 있다. 또한, 논리 어드레스(LA)를 물리 어드레스(PA)로 변환하기 위한 키(K), 즉, 맵핑 키를 랜덤하게 생성함으로써, 대수 맵핑(algebraic mapping)을 이용하는 메모리 시스템에 대한 보안을 강화할 수 있다.
도 17a는 본 개시의 일 실시예에 따른 어드레스 변환 모듈의 다른 예(120b)를 나타낸다.
도 17a를 참조하면, 어드레스 변환 모듈(120b)은 변환기(122)를 포함할 수 있고, 변환기(122)는 제1 물리 어드레스(PA1)와 키(K)에 대해 연산을 수행함으로써, 제1 물리 어드레스(PA1)를 제2 물리 어드레스(PA2)로 변환할 수 있다. 이때, 키(K)는 "리맵핑 키"라고 지칭할 수 있다. 예를 들어, 변환기(122)는 제1 물리 어드레스(PA1)와 키(K)에 대해 XOR 연산을 수행함으로써, 제2 물리 어드레스(PA2)를 생성할 수 있다. 이와 같이, 어드레스 변환 모듈(120b)은 기존 물리 어드레스(즉, 제1 물리 어드레스(PA1))를 신규 물리 어드레스(즉, 제2 물리 어드레스(PA2))로 변환하므로, "어드레스 리맵핑(remapping) 모듈" 또는 "어드레스 리맵퍼(remapper)"이라고 지칭할 수도 있다.
키(K)는 메모리 장치로부터 수신한 독출 데이터를 이용하여 생성할 수 있다. 예를 들어, 키(K)는 "01"일 수 있다. 예를 들어, 키(K)는 독출 데이터에 대응할 수 있다. 또한, 키(K)는 제1 물리 어드레스(PA1)의 사이즈에 대응하는 사이즈를 가질 수 있다. 예를 들어, 제1 물리 어드레스(PA1)가 2 비트인 경우, 키(K)도 2 비트일 수 있다. 일부 실시예들에서, 어드레스 변환 모듈(120b)은 도 5에 예시된 키 생성부(121)를 더 포함할 수 있다.
도 17b는 도 17a의 어드레스 변환 모듈(120b)의 동작에 따라 생성된 맵핑 테이블(MTb)을 예시적으로 나타낸다.
도 17b를 참조하면, 맵핑 테이블(MTb)은 논리 어드레스(LA)와 제1 물리 어드레스(PA1) 사이의 맵핑 정보를 저장할 수 있다. 도 17b에서는 제1 및 제2 물리 어드레스들(PA1, PA2)을 중심으로 설명하기 위하여, 편의상 논리 어드레스(LA)를 생략하였다. 또한, 맵핑 테이블(MTb)은 제1 물리 어드레스(PA1)에 저장되는 데이터에 대한 정보를 더 저장할 수 있다. 예를 들어, 데이터 A가 저장된 제1 물리 어드레스(PA1)는 "00"이고, 데이터 B가 저장된 제1 물리 어드레스(PA1)는 "01"이고, 데이터 C가 저장된 제1 물리 어드레스(PA1)는 "10"이고, 데이터 D가 저장된 제1 물리 어드레스(PA1)는 "11"일 수 있다.
어드레스 변환 모듈(120b)은 제1 물리 어드레스(PA1)와 키(K)에 대해 XOR 연산을 수행함으로써, 제2 물리 어드레스(PA2)를 생성할 수 있다. 예를 들어, 어드레스 변환 모듈(120b)은 제1 물리 어드레스(PA1) "00"과 키(K) "01"의 XOR 연산을 수행함으로써, 제2 물리 어드레스(PA2)를 "01"로 생성할 수 있다. 일 실시예에서, 제1 물리 어드레스(PA1)와 제2 물리 어드레스(PA2)는 동일 블록에 포함될 수 있다. 이에 따라, 동일 블록에 포함된 하나의 페이지에 마모가 집중되는 것을 방지하고, 동일 블록에 포함된 복수의 페이지들에 대해 마모도를 평준화시킬 수 있다.
그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 제1 물리 어드레스(PA1)와 제2 물리 어드레스(PA2)는 서로 다른 블록들에 각각 포함될 수 있다. 이에 따라, 동일 칩에 포함된 하나의 블록에 마모가 집중되는 것을 방지하고, 동일 칩에 포함된 복수의 블록들에 대해 마모도를 평준화시킬 수 있다. 또한, 일부 실시예에서, 제1 물리 어드레스(PA1)와 제2 물리 어드레스(PA2)는 서로 다른 메모리 칩들에 각각 포함될 수도 있다. 이에 따라, 하나의 칩에 마모가 집중되는 것을 방지하고, 다수의 칩들에 대해 마모도를 평준화시킬 수 있다. 이와 같이, 본 실시예에 따르면, 메모리 컨트롤러(100)는 메모리 장치(200)에 데이터를 기입하기 위한 물리 어드레스들을 랜덤하게 할당함으로써, 메모리 장치(200)에서 국부적인 마모의 발생을 감소시킬 수 있고, 마모도 평준화를 수행할 수 있다.
도 18은 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작 방법의 일 예를 나타내는 흐름도이다.
도 1, 도 17a 내지 도 18을 함께 참조하면, 메모리 컨트롤러(100)는 독출 데이터(RD)에 기초하여 난수(RN)를 발생한다(S710). 일부 실시예들에서, 난수(RN)는 메모리 장치(200)의 페이지 별로, 블록 별로, 또는 칩 별로 서로 다르게 결정될 수 있다. 이때, 메모리 장치(200)의 페이지 별로, 블록 별로, 또는 칩 별로 서로 다르게 결정된 난수(RN)들은 맵핑 테이블(MTb)에 저장될 수 있다. 메모리 컨트롤러(100)는 호스트로부터 논리 어드레스를 수신한다(S720). 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 단계 S710 및 S720의 순서의 변경될 수 있고, 다시 말해, 단계 S720은 단계 S710 이전에 수행될 수 있다. 메모리 컨트롤러(100)는 논리 어드레스를 제1 물리 어드레스(PA1)로 변환한다(S730). 이때, 메모리 컨트롤러(100)는 논리 어드레스(LA)와 제1 물리 어드레스(PA1) 사이의 맵핑 정보를 맵핑 테이블(MTb)에 저장할 수 있다. 일부 실시예에서, 단계 S710은 단계 S720 또는 S730 이후에 수행될 수도 있다.
메모리 컨트롤러(100)는 난수(RN)를 이용하여, 제1 물리 어드레스(PA1)를 제2 물리 어드레스(PA2)로 변환한다(S740). 예를 들어, 메모리 컨트롤러(100)는 제1 물리 어드레스(PA1)와 난수(RN)에 대한 XOR 연산을 수행함으로써, 제2 물리 어드레스(PA2)를 생성할 수 있다. 이때, 메모리 컨트롤러(100)는 논리 어드레스(LA)와 제2 물리 어드레스(PA2) 사이의 맵핑 정보를 맵핑 테이블(MTb')에 저장할 수 있다. 메모리 컨트롤러(100)는 제2 물리 어드레스(PA2)에 데이터를 기입한다.
상술한 실시예에 따라, 메모리 장치(200)에 액세스하기 위한 제2 물리 어드레스(PA2)를 랜덤하게 할당함으로써, 메모리 장치(200)의 내구성을 향상시킬 수 있다. 또한, 제1 물리 어드레스(PA1)를 제2 물리 어드레스(PA2)로 변환하기 위한 키(K), 즉, 리맵핑 키를 랜덤하게 생성함으로써, 대수 맵핑을 이용하는 메모리 시스템에 대한 보안을 더욱 강화할 수 있다.
도 19는 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작 방법의 다른 예를 나타내는 흐름도이다. 본 실시예에 따른 메모리 컨트롤러의 동작 방법은 도 18에 예시된 동작 방법의 일 구현 예에 대응할 수 있다.
도 1, 도 17a, 도 17b 및 도 19를 함께 참조하면, 메모리 컨트롤러(100)는 독출 데이터(RD)에 기초하여 난수(RN)를 발생한다(S810). 일부 실시예들에서, 난수(RN)는 메모리 장치(200)의 페이지 별로, 블록 별로, 또는 칩 별로 서로 다르게 결정될 수 있다. 이때, 메모리 장치(200)의 페이지 별로, 블록 별로, 또는 칩 별로 서로 다르게 결정된 난수(RN)들은 맵핑 테이블(MTb)에 저장될 수 있다. 메모리 컨트롤러(100)는 호스트로부터 논리 어드레스를 수신한다(S820). 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 단계 S810 및 S820의 순서의 변경될 수 있고, 다시 말해, 단계 S820은 단계 S810 이전에 수행될 수 있다. 메모리 컨트롤러(100)는 맵핑 키 테이블(MTb)을 참조하여 논리 어드레스에 대응하는 제1 물리 어드레스(PA1)를 획득한다(S930). 일부 실시예에서, 단계 S810은 단계 S820 또는 S830 이후에 수행될 수도 있다.
메모리 컨트롤러(100)는 기입 카운트가 임계 값을 초과하는지 판단한다(S840). 일 실시예에서, 메모리 컨트롤러(100)는 블록 별로 기입 카운트를 관리할 수 있다. 일 실시예에서, 메모리 컨트롤러(100)는 페이지 별로 기입 카운트를 관리할 수 있다. 일 실시예에서, 메모리 컨트롤러(100)는 칩 별로 기입 카운트를 관리할 수 있다. 판단 결과, 기입 카운트가 임계 값 이하이면, 메모리 컨트롤러(100)는 제1 물리 어드레스(PA1)에 데이터를 기입한다(S850).
한편, 판단 결과, 기입 카운트가 임계 값을 초과하는 경우, 메모리 컨트롤러(100)는 난수(RN)를 이용하여, 제1 물리 어드레스(PA1)를 제2 물리 어드레스(PA2)로 변환한다(S860). 예를 들어, 메모리 컨트롤러(100)는 제1 물리 어드레스(PA1)와 난수(RN)에 대한 XOR 연산을 수행함으로써, 제2 물리 어드레스(PA2)를 생성할 수 있다. 이때, 메모리 컨트롤러(100)는 제2 물리 어드레스(PA2)에 대한 정보를 맵핑 테이블(MTb')에 업데이트할 수 있다. 메모리 컨트롤러(100)는 제2 물리 어드레스(PA2)에 데이터를 기입한다(S870).
도 20은 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작 방법의 다른 예를 나타내는 흐름도이다. 도 21은 도 20에 예시된 어드레스 변환 모듈의 동작에 따라 생성된 맵핑 테이블을 예시적으로 나타낸다. 본 실시예에 따른 메모리 컨트롤러의 동작 방법은 도 18에 예시된 동작 방법의 일 구현 예에 대응할 수 있다. 이하에서는, 도 1, 도 17a, 도 17b, 도 20 및 도 21을 함께 참조하여 메모리 컨트롤러의 동작 방법을 설명하기로 한다.
메모리 컨트롤러(100)는 독출 데이터(RD)에 기초하여 제1 및 제2 난수들을 발생한다(S910). 일 실시예에서, 메모리 컨트롤러(100)는 메모리 장치(200)에 대해 제1 독출 동작과 제2 독출 동작을 순차적으로 수행할 수 있고, 이에 따라, 제1 독출 데이터와 제2 독출 데이터를 순차적으로 수신할 수 있다. 일 실시예에서, 메모리 컨트롤러(100)는 메모리 장치(200)에 대해 독출 동작을 수행할 수 있고, 이에 따라, 독출 데이터 중 일부를 제1 독출 데이터로 결정하고, 다른 일부를 제2 독출 데이터를 결정할 수 있다. 메모리 컨트롤러(100)는 제1 독출 데이터에 기초하여 제1 난수를 발생하고, 제2 독출 데이터에 기초하여 제2 난수를 발생할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 제2 난수를 생성하는 동작은 단계 S920 이후에 수행될 수 있고, 예를 들어, 단계 S940 이후에 수행될 수도 있다.
메모리 컨트롤러(100)는 호스트로부터 논리 어드레스를 수신한다(S920). 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 단계 S910 및 S920의 순서의 변경될 수 있고, 다시 말해, 단계 S920은 단계 S910 이전에 수행될 수 있다. 메모리 컨트롤러(100)는 맵핑 테이블(MTb)을 참조하여 논리 어드레스에 대응하는 제1 물리 어드레스(PA1)를 획득한다(S930). 메모리 컨트롤러(100)는 기입 카운트가 임계 값을 초과하는지 판단한다(S940). 판단 결과, 기입 카운트가 임계 값 이하이면, 메모리 컨트롤러(100)는 제1 난수를 이용하여, 제1 물리 어드레스(PA1)를 제2 물리 어드레스(PA2)로 변환한다(S950). 예를 들어, 제1 난수는 "01"일 수 있다. 메모리 컨트롤러(100)는 제2 물리 어드레스(PA2)에 데이터를 기입한다(S960).
한편, 판단 결과, 기입 카운트가 임계 값을 초과하는 경우, 메모리 컨트롤러(100)는 제2 난수를 이용하여, 제1 물리 어드레스(PA1)를 제3 물리 어드레스(PA3)로 변환한다(S970). 예를 들어, 제2 난수는 "11"일 수 있다. 예를 들어, 어드레스 변환 모듈(120b)은 제1 물리 어드레스(PA1) "00"과 키(K) "11"의 XOR 연산을 수행함으로써, 제3 물리 어드레스(PA3)를 "11"로 생성할 수 있다. 이에 따라, 데이터 A가 기입될 제3 물리 어드레스(PA3)는 "11"로 결정될 수 있다. 예를 들어, 어드레스 변환 모듈(120b)은 제1 물리 어드레스(PA1) "11"과 키(K) "11"의 XOR 연산을 수행함으로써, 제3 물리 어드레스(PA3)를 "00"으로 생성할 수 있다. 이에 따라, 데이터 D가 기입될 제3 물리 어드레스(PA3)는 "00"으로 결정될 수 있다. 이때, 메모리 컨트롤러(100)는 제3 물리 어드레스(PA3)에 대한 정보를 맵핑 테이블(MTb")에 업데이트할 수 있다. 메모리 컨트롤러(100)는 제3 물리 어드레스(PA3)에 데이터를 기입한다(S980).
도 22는 본 개시의 일 실시예에 따른 메모리 컨트롤러(100a)를 나타내는 블록도이다.
도 22를 참조하면, 메모리 컨트롤러(100a)는 난수 발생기(110) 및 랜더마이저(randomizer)(140)를 포함할 수 있다. 본 실시예에 따른 메모리 컨트롤러(100a)는 도 1에 예시된 메모리 컨트롤러(100)의 변형 실시예에 대응할 수 있고, 도 1 내지 도 21을 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
난수 발생기(110)는 메모리 장치(예를 들어, 도 1의 200)로부터 수신한 독출 데이터(RD)에 기초하여 난수(RN)를 발생할 수 있다. 일 실시예에서, 난수 발생기(110)는 진성 난수 발생기(TRNG)일 수 있다. 랜더마이저(140)는 난수(RN)를 이용하여, 호스트로부터 수신한 입력 데이터(Din)를 랜덤 데이터(Din)로 랜덤화할 수 있다. 일 실시예에서, 랜더마이저(140)는 난수(RN)를 씨드(seed)의 적어도 일부로 이용하여, 입력 데이터(Din)로부터 랜덤 데이터(Dr)를 생성할 수 있다. 랜더마이저(140)는 "데이터 랜더마이저"라고 지칭할 수도 있다.
구체적으로,
도 23은 본 개시의 일 실시예에 따른 랜더마이저(140)를 예시적으로 나타낸다.
도 23을 참조하면, 랜더마이저(140)는 의사 난수 발생기(Pseudo Random Number Generator)(141) 및 연산부(142)를 포함할 수 있다. 의사 난수 발생기(141)는 난수(RN)를 씨드의 적어도 일부로 이용하여, 난수(RN)로부터 의사 난수 시퀀스(Pseudo Random Number Sequence)(PRNS)를 발생할 수 있다. 예를 들어, 의사 난수 발생기(141)는 선형 피드백 쉬프트 레지스터(linear feedback shift register, LFSR)를 포함할 수 있다. 선형 피드백 쉬프트 레지스터는 시드라고 불리는 초기값을 변경하거나 또는 피드백 탭들(feedback taps)을 변경함으로써 의사 난수 시퀀스(PRNS)를 변경시킬 수 있다.
일 실시예에서, 의사 난수 발생기(141)는 난수(RN)를 씨드로 이용하여, 의사 난수 시퀀스(PRNS)를 발생할 수 있다. 예를 들어, 난수(RN)는 N 비트일 수 있고, 의사 난수 시퀀스(PRNS)도 N 비트일 수 있다. 일 실시예에서, 의사 난수 발생기(141)는 비트 라인 어드레스(즉, 칼럼 어드레스) 및 워드 라인 어드레스(즉, 로우 어드레스) 중 적어도 하나와 난수(RN)를 씨드로 이용하여, 의사 난수 시퀀스(PRNS)를 발생할 수 있다. 예를 들어, 난수(RN)는 N 비트일 수 있고, 의사 난수 시퀀스(PRNS)도 N보다 큰 M 비트일 수 있다. 일 실시예에서, 의사 난수 발생기(141)는 블록 어드레스, 워드 라인 어드레스, 비트 라인 어드레스, 칩 ID(identification), 또는 프로그램(program) 횟수와 같이 메모리 장치에 대한 액세스 동작에 필요한 정보 및 난수(RN)를 씨드로 이용하여, 의사 난수 시퀀스(PRNS)를 발생할 수 있다.
연산부(142)는 입력 데이터(Din)와 의사 난수 시퀀스(PRNS)에 대해 연산을 수행함으로써, 입력 데이터(Din)를 랜덤 데이터(Dr)로 변환할 수 있다. 예를 들어, 연산부(142)는 입력 데이터(Din)와 의사 난수 시퀀스(PRNS)에 대해 XOR 연산을 수행함으로써, 입력 데이터(Din)를 랜덤 데이터(Dr)로 변환할 수 있다.
도 24는 본 개시의 일 실시예에 따른 메모리 컨트롤러(100b)를 나타내는 블록도이다.
도 24를 참조하면, 메모리 컨트롤러(100b)는 난수 발생기(110), 어드레스 변환 모듈(120) 및 랜더마이저(140)를 포함할 수 있다. 메모리 컨트롤러(100b)는 도 1에 예시된 메모리 컨트롤러(100) 또는 도 22에 예시된 메모리 컨트롤러(100a)에 대한 변형 실시예일 수 있고, 도 1 내지 도 23을 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
난수 발생기(110)는 메모리 장치로부터 수신한 독출 데이터(RD)에 기초하여 제1 난수(RN1) 및 제2 난수(RN2)를 생성할 수 있다. 일 실시예에서, 난수 발생기(110)는 제1 난수(RN1) 및 제2 난수(RN2)를 순차적으로 생성할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 난수 발생기(110)는 제1 난수(RN1) 및 제2 난수(RN2)를 실질적으로 동시에 생성할 수도 있다. 어드레스 변환 모듈(120)은 제1 난수(RN1)를 이용하여, 제1 어드레스(ADDR1)를 제2 어드레스(ADDR2)로 변환할 수 있다. 랜더마이저(140)는 제2 난수(RN2)를 이용하여, 입력 데이터(Din)를 랜덤 데이터(Dr)로 변환할 수 있다.
도 25는 본 개시의 일 실시예에 따른 메모리 컨트롤러(100c)를 나타내는 블록도이다.
도 25를 참조하면, 메모리 컨트롤러(100c)는 프로세서(PRC), 난수 발생기(RNG)(110), 어드레스 변환 모듈(120), 랜더마이저(140), 내부 메모리(MEM), 호스트 인터페이스(IF1) 및 메모리 인터페이스(IF2)를 포함할 수 있고, 이들은 버스(B)를 통해 서로 통신할 수 있다. 프로세서(PRC)는 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 메모리 컨트롤러(100c)의 전반적인 동작을 제어할 수 있다. 일 실시예에서, 프로세서(PRC)는 멀티 코어 프로세서로 구현될 수 있고, 예를 들어, 듀얼 코어 프로세서 또는 쿼드 코어(quad) 프로세서로 구현될 수 있다.
일 실시예에서, 난수 발생기(110), 어드레스 변환 모듈(120) 및 랜더마이저(140)는 하드웨어로 각각 구현될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 난수 발생기(110), 어드레스 변환 모듈(120) 및 랜더마이저(140) 중 적어도 하나는 펌웨어 또는 소프트웨어로 구현될 수 있고, 내부 메모리(MEM)에 로딩될 수도 있다. 내부 메모리(MEM)는 프로세서(PRC)의 제어에 따라 동작하며, 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있다. 예를 들어, 내부 메모리(MEM)는 DRAM, SRAM과 같은 휘발성 메모리, 또는 PRAM, 플래시 메모리와 같은 비휘발성 메모리로 구현될 수도 있다.
내부 메모리(MEM)에는 맵핑 테이블(MT)이 로딩될 수 있다. 일 실시예에서, 맵핑 테이블(MT)은 호스트로부터 수신한 논리 어드레스와 메모리 장치의 물리 어드레스 사이의 맵핑 정보를 저장할 수 있다. 일 실시예에서, 맵핑 테이블(MT)은 메모리 장치의 기존 물리 어드레스와 신규 물리 어드레스 사이의 맵핑 정보를 저장할 수 있다. 일 실시예에서, 맵핑 테이블(MT)은 메모리 장치의 페이지들, 블록들, 또는 칩들에 각각 대응하는 기입 카운트들을 저장할 수 있다. 일 실시예에서, 맵핑 테이블(MT)은 어드레스 변환에 이용되는 키 값을 저장할 수 있다. 일 실시예에서, 맵핑 테이블(MT)은 메모리 장치의 페이지들, 블록들, 또는 칩들에 각각 대응하는 키 값들을 저장할 수 있다.
호스트 인터페이스(IF1)는 호스트와 메모리 컨트롤러(100c) 사이의 인터페이스를 제공할 수 있고, 예를 들어, USB(Universal Serial Bus), MMC, PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등에 따른 인터페이스를 제공할 수 있다.
메모리 인터페이스(IF2)는 메모리 컨트롤러(100c)와 메모리 장치(예를 들어, 도 1의 200) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 기입 데이터 및 독출 데이터가 메모리 인터페이스(IF2)를 통해 메모리 컨트롤러(100c)와 메모리 장치(200) 사이에서 송수신될 수 있다. 일 실시예에서, 메모리 인터페이스(IF2)의 개수는 메모리 시스템에 포함된 메모리 칩의 개수 또는 메모리 컨트롤러(100c)와 메모리 장치(200) 사이의 채널들의 개수에 대응할 수 있다.
도 26은 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작 방법을 나타내는 흐름도이다.
도 26을 참조하면, 메모리 컨트롤러는 메모리 장치로부터 독출 데이터를 수신하기 위하여, 메모리 장치에 대해 독출 동작을 수행한다(S1010). 메모리 컨트롤러는 독출 데이터에 기초하여 난수를 발생한다(S1030). 메모리 컨트롤러는 난수를 이용하여, 메모리 장치에 액세스하기 위한 물리 어드레스 또는 메모리 장치에 기입하기 위한 기입 데이터를 랜덤하게 생성한다(S1050).
도 27은 본 개시의 일 실시예에 따른 메모리 컨트롤러(30)를 나타내는 블록도이다.
도 27을 참조하면, 메모리 컨트롤러(30)는 어드레스 인터리버(address interleaver)(310), 블룸 필터(bloom filter)(320) 및 핫 데이터 캐쉬(hot data cache)(330)를 포함할 수 있다. 어드레스 인터리버(310)는 난수 발생기(RNG)를 포함할 수 있고, 메모리 장치로부터 수신한 독출 데이터(RD)에 기초하여 난수를 발생할 수 있다. 또한, 어드레스 인터리버(310)는 난수를 이용하여, 제1 어드레스(ADDR1)를 제2 어드레스(ADDR2)로 변환할 수 있고, 이로써, 메모리 장치에 국부적인 마모가 발생하는 것을 방지할 수 있다. 예를 들어, 어드레스 인터리버(310)는 도 1의 난수 발생기(110) 및 어드레스 변환 모듈(120)을 포함할 수 있다.
블룸 필터(320)는 어떤 집합에 특정 원소가 있는지의 여부를 판단하는 자료 구조를 이용한 자료 저장 및 판단 장치이다. 일 실시예에서, 블룸 필터(320)는 어드레스 인터리버(310)로부터 제2 어드레스(ADDR2)를 수신하고, 제2 어드레스(ADDR2)에 해시 함수(hash function)를 적용하여, 제2 어드레스(ADDR2)에 기입된 데이터가 핫 데이터 캐쉬(330)에 로딩되어 있는지 판단할 수 있다. 판단 결과, 제2 어드레스(ADDR2)에 기입된 데이터가 핫 데이터 캐쉬(330)에 로딩된 경우, 핫 데이터 캐쉬(330)로부터 데이터를 독출할 수 있다. 한편, 판단 결과, 제2 어드레스(ADDR2)에 기입된 데이터가 핫 데이터 캐쉬(330)에 로딩되지 않은 경우, 메모리 컨트롤러(30)는 메모리 장치에 액세스하여, 메모리 장치로부터 데이터를 독출할 수 있다.
도 28은 본 개시의 일 실시예에 따른 메모리 시스템(40)을 나타내는 블록도이다.
도 28을 참조하면, 메모리 시스템(40)은 메모리 모듈(400)과 메모리 컨트롤러(500)를 포함할 수 있으며, 메모리 모듈(400)은 모듈 보드에 장착되는 다수의 메모리 칩들(410, 420, 430)을 포함할 수 있다. 메모리 모듈(400)은 SIMM(single in-line memory module) 또는 DIMM(dual inline memory module) 형태로 구현될 수 있다. 또한, 메모리 모듈(400)는 다양한 종류의 DIMM에 해당할 수 있으며, 예컨대 FB-DIMM 및 LR-DIMM 등 다양한 종류의 DIMM이 메모리 모듈(400)에 적용될 수 있다. 또는, 메모리 모듈(400)는 전원이 종료되면 데이터가 손실되는 휘발성 메모리의 문제를 보완하기 위해 비휘발성 메모리(예컨대, 플래시 메모리)가 탑재된 NVDIMM(Non-volatile DIMM)에 해당할 수 있다.
또한, 다양한 종류의 모듈로서, 도 28에는 메모리 모듈(400)이 저항성 메모리로서 PRAM을 포함함에 따라 P_DIMM에 해당하는 예가 도시된다. 본 발명의 실시예들은 이외에도 다양한 종류의 모듈들에 적용이 가능하며, 일 예로서 메모리 모듈(400)은 저항성 메모리 셀들을 갖는 2D 또는 3D 형태의 크로스 포인트 메모리 칩들을 포함함에 따라 XPoint DIMM(또는, 3D XPoint DIMM)으로 지칭될 수 있다.
메모리 컨트롤러(500)는 난수 발생기(RNG)를 포함할 수 있고, 난수 발생기(RNG)는 전술한 실시예들에 따라 메모리 모듈(400)로부터 수신한 독출 데이터(RD)에 기초하여 난수를 발생할 수 있다. 메모리 컨트롤러(500)는 난수를 이용하여 메모리 모듈(400)에 액세스하기 위한 물리 어드레스 또는 메모리 모듈(400)에 기입하기 위한 기입 데이터를 랜덤하게 생성할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 복수의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함하는 메모리 장치; 및
    상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는,
    상기 메모리 장치로부터 수신한 독출 데이터에 기초하여 난수를 발생하도록 구성된 난수 발생기(random number generator); 및
    상기 난수로부터 키(key)를 생성하고, 제1 어드레스와 상기 키에 대한 연산을 수행함으로써, 상기 제1 어드레스를 제2 어드레스로 변환하도록 구성된 어드레스 변환 모듈을 포함하고,
    상기 제1 어드레스는 상기 메모리 장치의 제1 물리 어드레스에 대응하며,
    상기 제2 어드레스는 상기 메모리 장치의 제2 물리 어드레스에 대응하고,
    상기 어드레스 변환 모듈은, 상기 메모리 장치에 대한 기입 카운트가 임계 값을 초과하면, 상기 제1 물리 어드레스를 상기 제2 물리 어드레스로 변환하는 것을 특징으로 하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 어드레스 변환 모듈은 호스트로부터 수신한 논리 어드레스를 상기 메모리 장치의 물리 어드레스로 변환하는 것을 특징으로 하는 메모리 시스템.
  3. 삭제
  4. 제1항에 있어서,
    상기 메모리 장치에 대한 상기 기입 카운트는 상기 메모리 셀 어레이의 각 블록 및 각 페이지 중 하나에 대한 기입 카운트를 포함하는 것을 특징으로 하는 메모리 시스템.
  5. 제1항에 있어서, 상기 메모리 컨트롤러는,
    상기 난수를 씨드(seed)로 이용하여 의사 난수 시퀀스(pseudo random number sequence)를 생성하고, 호스트로부터 수신한 입력 데이터와 상기 의사 난수 시퀀스에 대한 연산을 수행함으로써, 상기 입력 데이터를 랜덤 데이터로 변환하도록 구성된 랜더마이저(randomizer)를 더 포함하는 것을 특징으로 하는 메모리 시스템.
  6. 제1항에 있어서, 상기 메모리 컨트롤러는,
    상기 복수의 메모리 셀들에 대한 독출 전압을 제1 전압 레벨로 결정하고, 상기 제1 전압 레벨을 이용하여 상기 복수의 메모리 셀들에 대한 독출 동작을 제어하도록 구성된 독출/기입 제어 모듈을 더 포함하고,
    상기 난수 발생기는, 상기 제1 전압 레벨을 이용하여 상기 복수의 메모리 셀들로부터 독출한 상기 독출 데이터에 기초하여 상기 난수를 발생하는 것을 특징으로 하는 메모리 시스템.
  7. 제1항에 있어서, 상기 메모리 컨트롤러는,
    상기 메모리 장치로부터 제1 독출 데이터를 수신하기 위하여 상기 메모리 장치에 대한 제1 독출 동작을 제어하고, 상기 메모리 장치로부터 제2 독출 데이터를 수신하기 위하여 상기 메모리 장치에 대한 제2 독출 동작을 제어하도록 구성된 독출/기입 제어 모듈을 더 포함하고,
    상기 난수 발생기는, 상기 제1 독출 데이터 및 상기 제2 독출 데이터를 비교함으로써, 플립(flip) 비트의 발생 여부 또는 개수를 결정하고, 상기 플립 비트의 발생 여부 또는 개수에 기초하여 상기 난수를 발생하는 것을 특징으로 하는 메모리 시스템.
  8. 제1항에 있어서, 상기 메모리 컨트롤러는,
    상기 복수의 메모리 셀들의 문턱 전압을 조절하도록 상기 복수의 메모리 셀들 또는 상기 복수의 메모리 셀들의 주변에 배치된 메모리 셀들에 대한 기입 동작을 제어하고, 상기 복수의 메모리 셀들에 대해 상기 기입 동작이 완료되면, 상기 복수의 메모리 셀들에 대한 독출 동작을 제어하도록 구성된 독출/기입 제어 모듈을 더 포함하는 것을 특징으로 하는 메모리 시스템.
  9. 제1항에 있어서,
    상기 메모리 장치는 PRAM(Phase change Random Access Memory)을 포함하는 것을 특징으로 하는 메모리 시스템.
  10. 난수 발생기를 포함하는 메모리 컨트롤러의 동작 방법으로서,
    메모리 장치로부터 독출 데이터를 수신하기 위하여, 상기 메모리 장치에 대해 독출 동작을 수행하는 단계;
    상기 난수 발생기가 상기 독출 데이터에 기초하여 난수를 발생하는 단계; 및
    상기 난수를 이용하여, 상기 메모리 장치에 액세스하기 위한 물리 어드레스 또는 상기 메모리 장치에 기입하기 위한 기입 데이터를 랜덤하게 생성하는 단계를 포함하고,
    상기 독출 동작을 수행하는 단계는,
    상기 메모리 장치에 포함된 복수의 제1 메모리 셀들에 대한 제1 독출 동작을 수행하여 상기 복수의 제1 메모리 셀들로부터 제1 독출 데이터를 수신하는 단계; 및
    상기 메모리 장치에 포함된 복수의 제2 메모리 셀들에 대한 제2 독출 동작을 수행하여 상기 복수의 제2 메모리 셀들로부터 제2 독출 데이터를 수신하는 단계를 포함하고,
    상기 난수를 발생하는 단계는,
    상기 제1 독출 데이터와 상기 제2 독출 데이터를 비교하는 단계;
    상기 비교 결과에 기초하여 플립(flip) 비트의 발생 여부 또는 개수를 결정하는 단계; 및
    상기 플립 비트의 발생 여부 또는 개수에 기초하여 상기 난수를 발생하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1020180145647A 2018-11-22 2018-11-22 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법 KR102644274B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180145647A KR102644274B1 (ko) 2018-11-22 2018-11-22 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법
US16/446,912 US11055229B2 (en) 2018-11-22 2019-06-20 Memory controller including address translation module, memory system including the memory controller, and operating method of the memory controller
CN201910806585.9A CN111209222B (zh) 2018-11-22 2019-08-28 存储器控制器及其操作方法和存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180145647A KR102644274B1 (ko) 2018-11-22 2018-11-22 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법

Publications (2)

Publication Number Publication Date
KR20200060104A KR20200060104A (ko) 2020-05-29
KR102644274B1 true KR102644274B1 (ko) 2024-03-06

Family

ID=70770155

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180145647A KR102644274B1 (ko) 2018-11-22 2018-11-22 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법

Country Status (3)

Country Link
US (1) US11055229B2 (ko)
KR (1) KR102644274B1 (ko)
CN (1) CN111209222B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11757632B2 (en) * 2018-12-19 2023-09-12 Micron Technology, Inc. Generating a random value based on a noise characteristic of a memory cell
US11288181B2 (en) * 2019-03-07 2022-03-29 Silicon Motion, Inc. Flash memory initialization scheme for writing boot up information into selected pages averagely and randomly distributed over more pages and correspondingly method for reading boot up information from selected pages
US20220277072A1 (en) * 2019-08-16 2022-09-01 Regents Of The University Of Michigan Thwarting control plane attacks with displaced and dilated address spaces
KR102467915B1 (ko) 2021-05-17 2022-11-17 한국전자통신연구원 저항 변화 메모리 기반 가우시안 추출 장치 및 방법
KR102558145B1 (ko) * 2021-05-20 2023-07-25 한국전자통신연구원 플래시 메모리를 이용한 가우시안 오류 데이터 생성 방법 및 이를 이용한 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150193204A1 (en) 2014-01-07 2015-07-09 Phison Electronics Corp. Method for generating random number, memory storage device and control circuit
US20150331810A1 (en) 2014-05-19 2015-11-19 Infineon Technologies Ag Randomized memory access
US20170357592A1 (en) 2016-06-09 2017-12-14 Vmware, Inc. Enhanced-security page sharing in a virtualized computer system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008003976A (ja) * 2006-06-26 2008-01-10 Sony Corp メモリアクセス制御装置および方法、並びに、通信装置
JP2008027327A (ja) * 2006-07-25 2008-02-07 Sony Corp メモリアクセス制御装置および方法、並びに、通信装置
US8130955B2 (en) 2007-12-21 2012-03-06 Spansion Llc Random number generation through use of memory cell activity
CN102037441A (zh) 2008-05-23 2011-04-27 艾格瑞系统有限公司 安全随机数生成器
DE112010005842T8 (de) * 2010-10-05 2014-07-17 Hewlett-Packard Development Company, L.P. Verwürfeln einer Adresse und Verschlüsseln von Schreibdaten zum Speichern in einer Speichervorrichtung
US8806171B2 (en) 2011-05-24 2014-08-12 Georgia Tech Research Corporation Systems and methods providing wear leveling using dynamic randomization for non-volatile memory
US9396118B2 (en) 2011-12-28 2016-07-19 Intel Corporation Efficient dynamic randomizing address remapping for PCM caching to improve endurance and anti-attack
KR102083271B1 (ko) * 2012-07-31 2020-03-02 삼성전자주식회사 플래시 메모리의 물리적 특성을 이용하여 난수를 생성하는 플래시 메모리 시스템 및 그것의 난수 생성 방법
US20160028544A1 (en) 2012-11-15 2016-01-28 Elwha Llc Random number generator functions in memory
KR102060996B1 (ko) 2013-01-07 2020-02-11 삼성전자주식회사 단말기의 메모리 주소 및 데이터변환 장치 및 방법
CN103971724B (zh) * 2013-02-06 2018-09-18 三星电子株式会社 存储器、存储控制器、存储系统、及其操作方法
US10176121B2 (en) * 2013-07-15 2019-01-08 Infineon Technologies Ag Apparatus and method for memory address encryption
TWI521525B (zh) * 2013-11-22 2016-02-11 群聯電子股份有限公司 時間估測方法、記憶體儲存裝置、記憶體控制電路單元
JP6587188B2 (ja) 2015-06-18 2019-10-09 パナソニックIpマネジメント株式会社 乱数処理装置、集積回路カード、および乱数処理方法
KR20170081118A (ko) * 2015-12-30 2017-07-11 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법
US20170288885A1 (en) 2016-03-31 2017-10-05 Intel Corporation System, Apparatus And Method For Providing A Physically Unclonable Function (PUF) Based On A Memory Technology

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150193204A1 (en) 2014-01-07 2015-07-09 Phison Electronics Corp. Method for generating random number, memory storage device and control circuit
US20150331810A1 (en) 2014-05-19 2015-11-19 Infineon Technologies Ag Randomized memory access
US20170357592A1 (en) 2016-06-09 2017-12-14 Vmware, Inc. Enhanced-security page sharing in a virtualized computer system

Also Published As

Publication number Publication date
CN111209222A (zh) 2020-05-29
US11055229B2 (en) 2021-07-06
KR20200060104A (ko) 2020-05-29
US20200167290A1 (en) 2020-05-28
CN111209222B (zh) 2024-01-16

Similar Documents

Publication Publication Date Title
KR102644274B1 (ko) 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법
US10741245B2 (en) Resistive memory device and resistive memory system including a plurality of layers, and method of operating the system
KR102178832B1 (ko) 저항성 메모리 장치 및 저항성 메모리 장치의 동작 방법
KR20190139082A (ko) 메모리 장치의 비트 에러율 균등화 방법
US9659645B2 (en) Resistive memory device and method of writing data
KR102298607B1 (ko) 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법
US10546637B2 (en) Method of operating resistive memory device reducing read disturbance
KR102161739B1 (ko) 저항성 메모리 장치 및 저항성 메모리 장치의 동작 방법
US9881671B2 (en) Resistive memory device, resistive memory system, and method of operating the resistive memory system
CN109841246B (zh) 具有电阻式存储器件的存储系统及其操作方法
US11537471B2 (en) Memory controller, memory system including the same, and method of operating the memory controller
KR102577160B1 (ko) 메모리 시스템
CN111354397A (zh) 重写存储器设备的方法、存储器控制器及其控制方法
US20190332322A1 (en) Memory system including resistive variable memory device and operating method thereof
US10872665B2 (en) Memory device performing data comparison write and memory system including the same
JP7061230B2 (ja) メモリ動作のための専用コマンド

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right