KR102644274B1 - 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법 - Google Patents
메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 메모리 컨트롤러의 동작 방법 Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 377
- 238000011017 operating method Methods 0.000 title description 6
- 238000006243 chemical reaction Methods 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 11
- 238000013507 mapping Methods 0.000 description 39
- 239000000463 material Substances 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000004044 response Effects 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- PXHVJJICTQNCMI-UHFFFAOYSA-N Nickel Chemical compound [Ni] PXHVJJICTQNCMI-UHFFFAOYSA-N 0.000 description 3
- KDLHZDBZIXYQEI-UHFFFAOYSA-N Palladium Chemical compound [Pd] KDLHZDBZIXYQEI-UHFFFAOYSA-N 0.000 description 3
- 238000010438 heat treatment Methods 0.000 description 3
- BASFCYQUMIYNBI-UHFFFAOYSA-N platinum Chemical compound [Pt] BASFCYQUMIYNBI-UHFFFAOYSA-N 0.000 description 3
- 229910052787 antimony Inorganic materials 0.000 description 2
- WATWJIUSRGPENY-UHFFFAOYSA-N antimony atom Chemical compound [Sb] WATWJIUSRGPENY-UHFFFAOYSA-N 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000011651 chromium Substances 0.000 description 2
- 239000010949 copper Substances 0.000 description 2
- 239000010931 gold Substances 0.000 description 2
- 239000000696 magnetic material Substances 0.000 description 2
- 229910052751 metal Inorganic materials 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 239000010936 titanium Substances 0.000 description 2
- 229910000314 transition metal oxide Inorganic materials 0.000 description 2
- FFQALBCXGPYQGT-UHFFFAOYSA-N 2,4-difluoro-5-(trifluoromethyl)aniline Chemical compound NC1=CC(C(F)(F)F)=C(F)C=C1F FFQALBCXGPYQGT-UHFFFAOYSA-N 0.000 description 1
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- XEEYBQQBJWHFJM-UHFFFAOYSA-N Iron Chemical compound [Fe] XEEYBQQBJWHFJM-UHFFFAOYSA-N 0.000 description 1
- ZOKXTWBITQBERF-UHFFFAOYSA-N Molybdenum Chemical compound [Mo] ZOKXTWBITQBERF-UHFFFAOYSA-N 0.000 description 1
- 229910005855 NiOx Inorganic materials 0.000 description 1
- BQCADISMDOOEFD-UHFFFAOYSA-N Silver Chemical compound [Ag] BQCADISMDOOEFD-UHFFFAOYSA-N 0.000 description 1
- 229910003087 TiOx Inorganic materials 0.000 description 1
- ATJFFYVFTNAWJD-UHFFFAOYSA-N Tin Chemical compound [Sn] ATJFFYVFTNAWJD-UHFFFAOYSA-N 0.000 description 1
- RTAQQCXQSZGOHL-UHFFFAOYSA-N Titanium Chemical compound [Ti] RTAQQCXQSZGOHL-UHFFFAOYSA-N 0.000 description 1
- NRTOMJZYCJJWKI-UHFFFAOYSA-N Titanium nitride Chemical compound [Ti]#N NRTOMJZYCJJWKI-UHFFFAOYSA-N 0.000 description 1
- UQZIWOQVLUASCR-UHFFFAOYSA-N alumane;titanium Chemical compound [AlH3].[Ti] UQZIWOQVLUASCR-UHFFFAOYSA-N 0.000 description 1
- 229910052782 aluminium Inorganic materials 0.000 description 1
- XAGFODPZIPBFFR-UHFFFAOYSA-N aluminium Chemical compound [Al] XAGFODPZIPBFFR-UHFFFAOYSA-N 0.000 description 1
- IVHJCRXBQPGLOV-UHFFFAOYSA-N azanylidynetungsten Chemical compound [W]#N IVHJCRXBQPGLOV-UHFFFAOYSA-N 0.000 description 1
- 229910052804 chromium Inorganic materials 0.000 description 1
- 229910017052 cobalt Inorganic materials 0.000 description 1
- 239000010941 cobalt Substances 0.000 description 1
- GUTLYIVDDKVIGB-UHFFFAOYSA-N cobalt atom Chemical compound [Co] GUTLYIVDDKVIGB-UHFFFAOYSA-N 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- HTXDPTMKBJXEOW-UHFFFAOYSA-N dioxoiridium Chemical compound O=[Ir]=O HTXDPTMKBJXEOW-UHFFFAOYSA-N 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 229910052732 germanium Inorganic materials 0.000 description 1
- GNPVGFCGXDBREM-UHFFFAOYSA-N germanium atom Chemical compound [Ge] GNPVGFCGXDBREM-UHFFFAOYSA-N 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 229910052741 iridium Inorganic materials 0.000 description 1
- GKOZUEZYRPOHIO-UHFFFAOYSA-N iridium atom Chemical compound [Ir] GKOZUEZYRPOHIO-UHFFFAOYSA-N 0.000 description 1
- 150000002739 metals Chemical class 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052750 molybdenum Inorganic materials 0.000 description 1
- 239000011733 molybdenum Substances 0.000 description 1
- 229910052759 nickel Inorganic materials 0.000 description 1
- 150000004767 nitrides Chemical class 0.000 description 1
- 229910052763 palladium Inorganic materials 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 229910052697 platinum Inorganic materials 0.000 description 1
- 229910021420 polycrystalline silicon Inorganic materials 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 229920005591 polysilicon Polymers 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- VSZWPYCFIRKVQL-UHFFFAOYSA-N selanylidenegallium;selenium Chemical compound [Se].[Se]=[Ga].[Se]=[Ga] VSZWPYCFIRKVQL-UHFFFAOYSA-N 0.000 description 1
- 229910052709 silver Inorganic materials 0.000 description 1
- 239000004332 silver Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 229910052715 tantalum Inorganic materials 0.000 description 1
- GUVRBAGPIYLISA-UHFFFAOYSA-N tantalum atom Chemical compound [Ta] GUVRBAGPIYLISA-UHFFFAOYSA-N 0.000 description 1
- MZLGASXMSKOWSE-UHFFFAOYSA-N tantalum nitride Chemical compound [Ta]#N MZLGASXMSKOWSE-UHFFFAOYSA-N 0.000 description 1
- JBQYATWDVHIOAR-UHFFFAOYSA-N tellanylidenegermanium Chemical compound [Te]=[Ge] JBQYATWDVHIOAR-UHFFFAOYSA-N 0.000 description 1
- 229910052714 tellurium Inorganic materials 0.000 description 1
- PORWMNRCUJJQNO-UHFFFAOYSA-N tellurium atom Chemical compound [Te] PORWMNRCUJJQNO-UHFFFAOYSA-N 0.000 description 1
- HLLICFJUWSZHRJ-UHFFFAOYSA-N tioxidazole Chemical compound CCCOC1=CC=C2N=C(NC(=O)OC)SC2=C1 HLLICFJUWSZHRJ-UHFFFAOYSA-N 0.000 description 1
- 229910052719 titanium Inorganic materials 0.000 description 1
- WFKWXMTUELFFGS-UHFFFAOYSA-N tungsten Chemical compound [W] WFKWXMTUELFFGS-UHFFFAOYSA-N 0.000 description 1
- 229910052721 tungsten Inorganic materials 0.000 description 1
- 239000010937 tungsten Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital 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/0021—Auxiliary circuits
- G11C13/0023—Address circuits or decoders
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital 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/0021—Auxiliary circuits
- G11C13/004—Reading or sensing circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital 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/0021—Auxiliary circuits
- G11C13/0059—Security or protection circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital 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/0021—Auxiliary circuits
- G11C13/0069—Writing or programming circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/22—Safety or protection circuits preventing unauthorised or accidental access to memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/24—Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/20—Address safety or protection circuits, i.e. arrangements for preventing unauthorized or accidental access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Abstract
본 개시의 기술적 사상에 따른 메모리 시스템은 복수의 메모리 셀들을 포함하는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, 메모리 컨트롤러는 메모리 장치로부터 수신한 독출 데이터에 기초하여 난수를 발생하도록 구성된 난수 발생기와, 난수로부터 키를 생성하고 제1 어드레스와 키에 대한 연산을 수행함으로써, 제1 어드레스를 제2 어드레스로 변환하도록 구성된 어드레스 변환 모듈을 포함한다.
Description
본 개시의 기술적 사상은 메모리 컨트롤러에 관한 것으로서, 더욱 상세하게는, 난수 발생기를 포함하는 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 시스템, 및 상기 메모리 컨트롤러의 동작 방법에 관한 것이다.
비휘발성 메모리 장치로서 플래시 메모리와 함께, 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은 본 개시의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 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)
- 복수의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함하는 메모리 장치; 및
상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고,
상기 메모리 컨트롤러는,
상기 메모리 장치로부터 수신한 독출 데이터에 기초하여 난수를 발생하도록 구성된 난수 발생기(random number generator); 및
상기 난수로부터 키(key)를 생성하고, 제1 어드레스와 상기 키에 대한 연산을 수행함으로써, 상기 제1 어드레스를 제2 어드레스로 변환하도록 구성된 어드레스 변환 모듈을 포함하고,
상기 제1 어드레스는 상기 메모리 장치의 제1 물리 어드레스에 대응하며,
상기 제2 어드레스는 상기 메모리 장치의 제2 물리 어드레스에 대응하고,
상기 어드레스 변환 모듈은, 상기 메모리 장치에 대한 기입 카운트가 임계 값을 초과하면, 상기 제1 물리 어드레스를 상기 제2 물리 어드레스로 변환하는 것을 특징으로 하는 메모리 시스템. - 제1항에 있어서,
상기 어드레스 변환 모듈은 호스트로부터 수신한 논리 어드레스를 상기 메모리 장치의 물리 어드레스로 변환하는 것을 특징으로 하는 메모리 시스템. - 삭제
- 제1항에 있어서,
상기 메모리 장치에 대한 상기 기입 카운트는 상기 메모리 셀 어레이의 각 블록 및 각 페이지 중 하나에 대한 기입 카운트를 포함하는 것을 특징으로 하는 메모리 시스템. - 제1항에 있어서, 상기 메모리 컨트롤러는,
상기 난수를 씨드(seed)로 이용하여 의사 난수 시퀀스(pseudo random number sequence)를 생성하고, 호스트로부터 수신한 입력 데이터와 상기 의사 난수 시퀀스에 대한 연산을 수행함으로써, 상기 입력 데이터를 랜덤 데이터로 변환하도록 구성된 랜더마이저(randomizer)를 더 포함하는 것을 특징으로 하는 메모리 시스템. - 제1항에 있어서, 상기 메모리 컨트롤러는,
상기 복수의 메모리 셀들에 대한 독출 전압을 제1 전압 레벨로 결정하고, 상기 제1 전압 레벨을 이용하여 상기 복수의 메모리 셀들에 대한 독출 동작을 제어하도록 구성된 독출/기입 제어 모듈을 더 포함하고,
상기 난수 발생기는, 상기 제1 전압 레벨을 이용하여 상기 복수의 메모리 셀들로부터 독출한 상기 독출 데이터에 기초하여 상기 난수를 발생하는 것을 특징으로 하는 메모리 시스템. - 제1항에 있어서, 상기 메모리 컨트롤러는,
상기 메모리 장치로부터 제1 독출 데이터를 수신하기 위하여 상기 메모리 장치에 대한 제1 독출 동작을 제어하고, 상기 메모리 장치로부터 제2 독출 데이터를 수신하기 위하여 상기 메모리 장치에 대한 제2 독출 동작을 제어하도록 구성된 독출/기입 제어 모듈을 더 포함하고,
상기 난수 발생기는, 상기 제1 독출 데이터 및 상기 제2 독출 데이터를 비교함으로써, 플립(flip) 비트의 발생 여부 또는 개수를 결정하고, 상기 플립 비트의 발생 여부 또는 개수에 기초하여 상기 난수를 발생하는 것을 특징으로 하는 메모리 시스템. - 제1항에 있어서, 상기 메모리 컨트롤러는,
상기 복수의 메모리 셀들의 문턱 전압을 조절하도록 상기 복수의 메모리 셀들 또는 상기 복수의 메모리 셀들의 주변에 배치된 메모리 셀들에 대한 기입 동작을 제어하고, 상기 복수의 메모리 셀들에 대해 상기 기입 동작이 완료되면, 상기 복수의 메모리 셀들에 대한 독출 동작을 제어하도록 구성된 독출/기입 제어 모듈을 더 포함하는 것을 특징으로 하는 메모리 시스템. - 제1항에 있어서,
상기 메모리 장치는 PRAM(Phase change Random Access Memory)을 포함하는 것을 특징으로 하는 메모리 시스템. - 난수 발생기를 포함하는 메모리 컨트롤러의 동작 방법으로서,
메모리 장치로부터 독출 데이터를 수신하기 위하여, 상기 메모리 장치에 대해 독출 동작을 수행하는 단계;
상기 난수 발생기가 상기 독출 데이터에 기초하여 난수를 발생하는 단계; 및
상기 난수를 이용하여, 상기 메모리 장치에 액세스하기 위한 물리 어드레스 또는 상기 메모리 장치에 기입하기 위한 기입 데이터를 랜덤하게 생성하는 단계를 포함하고,
상기 독출 동작을 수행하는 단계는,
상기 메모리 장치에 포함된 복수의 제1 메모리 셀들에 대한 제1 독출 동작을 수행하여 상기 복수의 제1 메모리 셀들로부터 제1 독출 데이터를 수신하는 단계; 및
상기 메모리 장치에 포함된 복수의 제2 메모리 셀들에 대한 제2 독출 동작을 수행하여 상기 복수의 제2 메모리 셀들로부터 제2 독출 데이터를 수신하는 단계를 포함하고,
상기 난수를 발생하는 단계는,
상기 제1 독출 데이터와 상기 제2 독출 데이터를 비교하는 단계;
상기 비교 결과에 기초하여 플립(flip) 비트의 발생 여부 또는 개수를 결정하는 단계; 및
상기 플립 비트의 발생 여부 또는 개수에 기초하여 상기 난수를 발생하는 단계를 포함하는 것을 특징으로 하는 방법.
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)
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)
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)
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 |
-
2018
- 2018-11-22 KR KR1020180145647A patent/KR102644274B1/ko active IP Right Grant
-
2019
- 2019-06-20 US US16/446,912 patent/US11055229B2/en active Active
- 2019-08-28 CN CN201910806585.9A patent/CN111209222B/zh active Active
Patent Citations (3)
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 |